From c044b8354165653233d4d264c2f2e45c2404522f Mon Sep 17 00:00:00 2001 From: Thomas Durieux <5577568+tdurieux@users.noreply.github.com> Date: Fri, 13 Nov 2026 02:22:45 +0000 Subject: [PATCH] feat(ui): one consistent design across author, reviewer and admin screens The UI was uneven: the home page looked finished, but app pages used three different display typefaces, the anonymize flow changed frame between steps, and the dashboard, explorer and admin screens each had their own controls, status colours and edge-case handling. Make every screen follow one system: shared page header, grid, buttons, filters and status colours; a repository picker and step trail on anonymize; a "What reviewers will see" preview of the actual reviewer page; consistent file headers and viewers for every file type; truthful admin charts and tables. Fold the accumulated override blocks back into style.css (22% smaller, no visual change). Co-Authored-By: Claude Opus 5.5 --- public/asset-manifest.json | 4 +- public/css/all.min.css | 2 +- public/css/style.css | 10699 +++++++++------- public/partials/404.htm | 1 + public/partials/admin/conferences.htm | 26 +- public/partials/admin/errors.htm | 52 +- public/partials/admin/overview.htm | 157 +- public/partials/admin/queues.htm | 41 +- public/partials/admin/repositories.htm | 31 +- public/partials/admin/user.htm | 36 +- public/partials/admin/users.htm | 24 +- public/partials/anonymize.htm | 374 +- public/partials/anonymizePullRequest.htm | 1 + public/partials/conference.htm | 101 +- public/partials/conferences.htm | 10 +- public/partials/dashboard.htm | 101 +- public/partials/explorer.htm | 7 +- public/partials/faq.htm | 52 +- public/partials/footer.htm | 34 + public/partials/home.htm | 76 +- public/partials/pageView.htm | 96 +- public/partials/profile.htm | 12 +- public/partials/reviewConsent.htm | 2 +- public/partials/signin.htm | 7 +- public/partials/status.htm | 51 +- public/script/admin.js | 336 +- public/script/app.js | 433 +- public/script/billing.js | 4 +- public/script/components.js | 67 +- public/script/formatters.js | 69 +- public/script/main.js | 2 +- public/script/pdf-viewer.js | 9 +- public/script/template-state.js | 2 +- public/script/templates.js | 4 +- public/script/tree.js | 44 +- public/script/vendor.min.js | 88 +- scripts/dev-mock.js | 150 +- .../fixtures/explorer-gallery/demo/demo.mp4 | Bin 0 -> 13443 bytes .../fixtures/explorer-gallery/demo/demo.webm | Bin 0 -> 9325 bytes .../explorer-gallery/figures/accuracy.png | Bin 0 -> 11798 bytes scripts/fixtures/explorer-gallery/paper.pdf | Bin 0 -> 49950 bytes test/dashboard-conference-overflow.test.js | 2 +- test/vue-ui.test.js | 52 +- 43 files changed, 7880 insertions(+), 5379 deletions(-) create mode 100644 public/partials/footer.htm create mode 100644 scripts/fixtures/explorer-gallery/demo/demo.mp4 create mode 100644 scripts/fixtures/explorer-gallery/demo/demo.webm create mode 100644 scripts/fixtures/explorer-gallery/figures/accuracy.png create mode 100644 scripts/fixtures/explorer-gallery/paper.pdf diff --git a/public/asset-manifest.json b/public/asset-manifest.json index 9846f78..005e592 100644 --- a/public/asset-manifest.json +++ b/public/asset-manifest.json @@ -1,8 +1,8 @@ { "core.min.js": "core.d23af1c652.min.js", - "vendor.min.js": "vendor.d5b4d04371.min.js", + "vendor.min.js": "vendor.ad23251845.min.js", "mermaid.min.js": "mermaid.a7356d5ed1.min.js", - "all.min.css": "all.8c4e8ecba6.min.css", + "all.min.css": "all.b752450906.min.css", "markdown.min.js": "markdown.6c8dfb7b1d.min.js", "pdf.min.js": "pdf.4d9cc6ff49.min.js", "notebook.min.js": "notebook.c3144c18ae.min.js", diff --git a/public/css/all.min.css b/public/css/all.min.css index 28bf22e..8bc3950 100644 --- a/public/css/all.min.css +++ b/public/css/all.min.css @@ -6,4 +6,4 @@ */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 0%;flex:1 1 0%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal .list-group-item.active{margin-top:0}.list-group-horizontal .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm .list-group-item.active{margin-top:0}.list-group-horizontal-sm .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md .list-group-item.active{margin-top:0}.list-group-horizontal-md .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg .list-group-item.active{margin-top:0}.list-group-horizontal-lg .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl .list-group-item.active{margin-top:0}.list-group-horizontal-xl .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush .list-group-item{border-right-width:0;border-left-width:0;border-radius:0}.list-group-flush .list-group-item:first-child{border-top-width:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}/*! * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:'Font Awesome 5 Brands';font-style:normal;font-weight:400;font-display:block;src:url(../fonts/fa-brands-400.eot);src:url(../fonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-brands-400.woff2) format("woff2"),url(../fonts/fa-brands-400.woff) format("woff"),url(../fonts/fa-brands-400.ttf) format("truetype"),url(../fonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:'Font Awesome 5 Brands';font-weight:400}@font-face{font-family:'Font Awesome 5 Free';font-style:normal;font-weight:400;font-display:block;src:url(../fonts/fa-regular-400.eot);src:url(../fonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-regular-400.woff2) format("woff2"),url(../fonts/fa-regular-400.woff) format("woff"),url(../fonts/fa-regular-400.ttf) format("truetype"),url(../fonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:'Font Awesome 5 Free';font-weight:400}@font-face{font-family:'Font Awesome 5 Free';font-style:normal;font-weight:900;font-display:block;src:url(../fonts/fa-solid-900.eot);src:url(../fonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-solid-900.woff2) format("woff2"),url(../fonts/fa-solid-900.woff) format("woff"),url(../fonts/fa-solid-900.ttf) format("truetype"),url(../fonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:'Font Awesome 5 Free';font-weight:900}.nb-notebook{line-height:1.5}.nb-stderr,.nb-stdout{white-space:pre-wrap;margin:1em 0;padding:.1em .5em}.nb-stderr{background-color:#faa}.nb-cell+.nb-cell{margin-top:.5em}.nb-output table{border:1px solid #000;border-collapse:collapse}.nb-output th{font-weight:700}.nb-output td,.nb-output th{border:1px solid #000;padding:.25em;text-align:left;vertical-align:middle;border-collapse:collapse}.nb-notebook blockquote{border-left:5px solid #ccc;margin-left:0;padding-left:1em}.nb-cell{position:relative}.nb-raw-cell{white-space:pre-wrap;background-color:#f5f2f0;font-family:Consolas,Monaco,'Andale Mono',monospace;padding:1em;margin:.5em 0}.nb-output{min-height:1em;width:100%;overflow-x:scroll;border-right:1px dotted #ccc}.nb-output img{max-width:100%}.nb-input:before,.nb-output:before{position:absolute;font-family:monospace;color:#999;left:-7.5em;width:7em;text-align:right}.nb-input:before{content:"In [" attr(data-prompt-number) "]:"}.nb-output:before{content:"Out [" attr(data-prompt-number) "]:"}// Fix pandas dataframe formatting div[style="max-height:1000px;max-width:1500px;overflow:auto;"]{max-height:none!important}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,math,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.18.10"}.katex .katex-mathml{border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.katex-newline{display:block}.katex .katex-base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .katex-base,.katex .katex-strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .katex-vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .katex-thinbox{display:inline-flex;flex-direction:row;max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .katex-hdashline,.katex .katex-hline,.katex .katex-overline .overline-line,.katex .katex-rule,.katex .katex-underline .underline-line,.katex .mfrac .frac-line{min-height:1px}.katex .mspace{display:inline-block}.katex .katex-smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.katex-inner,.katex .llap>.katex-inner,.katex .rlap>.katex-inner{position:absolute}.katex .clap>.katex-fix,.katex .llap>.katex-fix,.katex .rlap>.katex-fix{display:inline-block}.katex .llap>.katex-inner{right:0}.katex .clap>.katex-inner,.katex .rlap>.katex-inner{left:0}.katex .clap>.katex-inner>span{margin-left:-50%;margin-right:50%}.katex .katex-rule{border:0 solid;display:inline-block;position:relative}.katex .katex-hline,.katex .katex-overline .overline-line,.katex .katex-underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .katex-hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.katex-root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .katex-sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .katex-sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .katex-sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .katex-sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .katex-sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .katex-sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .katex-sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .katex-sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .katex-sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .katex-sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .katex-sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .katex-sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .katex-sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .katex-sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .katex-sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .katex-sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .katex-sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .katex-sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .katex-sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .katex-sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .katex-sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .katex-sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .katex-sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .katex-sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .katex-sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .katex-sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .katex-sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .katex-sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .katex-sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .katex-sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .katex-sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .katex-sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .katex-sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .katex-sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .katex-sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .katex-sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .katex-sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .katex-sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .katex-sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .katex-sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .katex-sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .katex-sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .katex-sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .katex-sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .katex-sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .katex-sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .katex-sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .katex-sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .katex-sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .katex-sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .katex-sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .katex-sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .katex-sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .katex-sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .katex-sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .katex-sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .katex-sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .katex-sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .katex-sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .katex-sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .katex-sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .katex-sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .katex-sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .katex-sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .katex-sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .katex-sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .katex-sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .katex-sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .katex-sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .katex-sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .katex-sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .katex-sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .katex-sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .katex-sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .katex-sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .katex-sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .katex-sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .katex-sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .katex-sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .katex-sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .katex-sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .katex-sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .katex-sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .katex-sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .katex-sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .katex-sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .katex-sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .katex-sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .katex-sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .katex-sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .katex-sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .katex-sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .katex-sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .katex-sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .katex-sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .katex-sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .katex-sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .katex-sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .katex-sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .katex-sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .katex-sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .katex-sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .katex-sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .katex-sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .katex-sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .katex-sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .katex-sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .katex-sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .katex-sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .katex-sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .katex-sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .katex-sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .katex-sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .katex-sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .katex-sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .katex-sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .katex-sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .katex-sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .katex-sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .katex-sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .katex-sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .katex-accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .katex-accent .accent-body{position:relative}.katex .katex-accent .accent-body:not(.accent-full){width:0}.katex .katex-overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .katex-stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .katex-stretchy:after,.katex .katex-stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .katex-sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .reflectbox{display:inline-block;transform:scaleX(-1)}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.katex-tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.katex-tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.mermaid{text-align:center;margin:1em 0;overflow:auto}.mermaid svg{max-width:100%;height:auto}.dark-mode .mermaid{filter:invert(1) hue-rotate(180deg)}.dark-mode .mermaid svg{background:0 0}.dark-mode .mermaid .edgeLabel,.dark-mode .mermaid .nodeLabel{filter:invert(1) hue-rotate(180deg)}.mermaid .node circle,.mermaid .node ellipse,.mermaid .node polygon,.mermaid .node rect{stroke-width:2px}.mermaid .flowchart-link{stroke-width:2px}.mermaid .actor{fill:#f9f9f9;stroke:#333;stroke-width:2px}.mermaid .messageLine0,.mermaid .messageLine1{stroke:#333;stroke-width:1.5px}.mermaid .section0,.mermaid .section1,.mermaid .section2,.mermaid .section3{opacity:.8}.mermaid .pieChart .slice{opacity:.9}.markdown-body .mermaid{background:0 0;border:none;padding:10px}.mermaid .error{color:#d32f2f;font-family:monospace;font-size:12px;padding:10px;border:1px solid #d32f2f;border-radius:4px;background-color:#ffebee}@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff')}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1.5;color:#24292e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .pl-c{color:#6a737d}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#005cc5}.markdown-body .pl-e,.markdown-body .pl-en{color:#6f42c1}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292e}.markdown-body .pl-ent{color:#22863a}.markdown-body .pl-k{color:#d73a49}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#032f62}.markdown-body .pl-smw,.markdown-body .pl-v{color:#e36209}.markdown-body .pl-bu{color:#b31d28}.markdown-body .pl-ii{color:#fafbfc;background-color:#b31d28}.markdown-body .pl-c2{color:#fafbfc;background-color:#d73a49}.markdown-body .pl-c2::before{content:"^M"}.markdown-body .pl-sr .pl-cce{font-weight:700;color:#22863a}.markdown-body .pl-ml{color:#735c0f}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:#005cc5}.markdown-body .pl-mi{font-style:italic;color:#24292e}.markdown-body .pl-mb{font-weight:700;color:#24292e}.markdown-body .pl-md{color:#b31d28;background-color:#ffeef0}.markdown-body .pl-mi1{color:#22863a;background-color:#f0fff4}.markdown-body .pl-mc{color:#e36209;background-color:#ffebda}.markdown-body .pl-mi2{color:#f6f8fa;background-color:#005cc5}.markdown-body .pl-mdr{font-weight:700;color:#6f42c1}.markdown-body .pl-ba{color:#586069}.markdown-body .pl-sg{color:#959da5}.markdown-body .pl-corl{text-decoration:underline;color:#032f62}.markdown-body .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}.markdown-body a{background-color:transparent;-webkit-text-decoration-skip:objects}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit}.markdown-body strong{font-weight:bolder}.markdown-body h1{font-size:2em;margin:.67em 0}.markdown-body img{border-style:none}.markdown-body svg:not(:root){overflow:hidden}.markdown-body hr{box-sizing:content-box;height:0;overflow:visible}.markdown-body input{font:inherit;margin:0}.markdown-body input{overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#0366d6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{height:0;margin:15px 0;overflow:hidden;background:0 0;border:0;border-bottom:1px solid #dfe2e5}.markdown-body hr::before{display:table;content:""}.markdown-body hr::after{display:table;clear:both;content:""}.markdown-body table{border-spacing:0;border-collapse:collapse}.markdown-body td,.markdown-body th{padding:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:0;margin-bottom:0}.markdown-body h1{font-size:32px;font-weight:600}.markdown-body h2{font-size:24px;font-weight:600}.markdown-body h3{font-size:20px;font-weight:600}.markdown-body h4{font-size:16px;font-weight:600}.markdown-body h5{font-size:14px;font-weight:600}.markdown-body h6{font-size:12px;font-weight:600}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{padding-left:0;margin-top:0;margin-bottom:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code{font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px}.markdown-body .octicon{vertical-align:text-bottom}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .pl-3{padding-left:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body::before{display:table;content:""}.markdown-body::after{display:table;clear:both;content:""}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:0}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e1e4e8;border:0}.markdown-body blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:solid 1px #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1{padding-bottom:.3em;font-size:2em;border-bottom:1px solid #eaecef}.markdown-body h2{padding-bottom:.3em;font-size:1.5em;border-bottom:1px solid #eaecef}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#6a737d}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body code{padding:0;padding-top:.2em;padding-bottom:.2em;margin:0;font-size:85%;background-color:rgba(27,31,35,.05);border-radius:3px}.markdown-body .full-commit .btn-outline:not(:disabled):hover{color:#005cc5;border-color:#005cc5}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:solid 1px #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1}.markdown-body :checked+.radio-label{position:relative;z-index:1;border-color:#0366d6}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee}.dark-mode{--canvas-bg-color:#161412;--sidebar-bg-color:#1C1A17;--main-bg-color:#161412;--header-bg-color:#161412;--hover-bg-color:rgba(255, 255, 255, 0.05);--header-color:#FAF9F6;--color:#D6D1C5;--link-color:#7CC7BE;--link-hover-color:#A8DDD6;--border-color:#423D37;--border-soft:#2A2825;--btn-color:#FAF9F6;--input-color:#E6E1D8;--input-bg:#25231F;--primary-bg:#FAF9F6;--primary-hover-bg:#FFFFFF;--primary-color:#1A1815;--primary-active-color:#1A1815;--accent:#7CC7BE;--accent-soft:rgba(124, 199, 190, 0.12);--ink-muted:#A39D92;--ink-faint:#8A857C;--ink-soft:#B5AFA2;--status-ready:#5FB27A;--status-progress:#E0A94A;--status-error:#F08A82;--status-inactive:#8A857C;--status-error-soft:rgba(240, 138, 130, 0.08);--status-error-soft-hover:rgba(240, 138, 130, 0.14);--admin-nav-bg:#1A1918;--admin-nav-active:rgba(124, 199, 190, 0.12);--admin-stat-bg:#25231F;--paper-card:#2C2925;--paper-bg-alt:#211E1B;--highlight:#3A341E;background-color:var(--canvas-bg-color);color:var(--color)}body{--canvas-bg-color:#FAF9F6;--sidebar-bg-color:#FFFFFF;--header-bg-color:#FAF9F6;--header-color:#1A1815;--main-bg-color:#FAF9F6;--hover-bg-color:rgba(26, 24, 21, 0.05);--input-color:#1A1815;--color:#1A1815;--link-color:#1F6A64;--link-hover-color:#17544F;--border-color:#E6E1D8;--border-soft:#EDE9E1;--btn-color:#1A1815;--input-bg:#FFFFFF;--primary-bg:#1A1815;--primary-hover-bg:#000000;--primary-color:#FAF9F6;--primary-active-color:#FAF9F6;--accent:#1F6A64;--accent-soft:#E4F0EE;--ink-muted:#6F6A61;--ink-faint:#8A857C;--ink-soft:#4A4641;--paper-bg-alt:#F3F1EC;--paper-card:#FFFFFF;--highlight:#FFF3C4;--status-ready:#2F7A44;--status-progress:#946512;--status-error:#B42318;--status-inactive:#8A857C;--status-error-soft:rgba(180, 35, 24, 0.04);--status-error-soft-hover:rgba(180, 35, 24, 0.08);--radius-control:6px;--radius-button:8px;--button-height:36px;--button-font-size:14px;--button-line-height:20px;--button-padding-x:13px;--button-compact-height:32px;--radius-surface:10px;--font-serif:'Instrument Serif','Iowan Old Style',Georgia,serif;--font-sans:'Inter',ui-sans-serif,system-ui,-apple-system,sans-serif;--font-mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;background-color:var(--canvas-bg-color);color:var(--color);font-family:var(--font-sans);font-size:14px;letter-spacing:-.005em;line-height:1.5}.fadeIn{opacity:1;animation-name:fadeInOpacity;animation-iteration-count:1;animation-timing-function:ease-in;animation-duration:.6s}@keyframes fadeInOpacity{0%{opacity:0}100%{opacity:1}}.btn:active,.btn:focus{box-shadow:none}:focus:not(:focus-visible){outline:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:focus-visible,.dropdown-item:focus-visible,.form-control:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:none}input:active,input:hover{box-shadow:none!important}input:-webkit-autofill,input:-webkit-autofill:focus,input:-webkit-autofill:hover,select:-webkit-autofill,select:-webkit-autofill:focus,select:-webkit-autofill:hover,textarea:-webkit-autofill,textarea:-webkit-autofill:focus,textarea:-webkit-autofill:hover{border-color:var(--border-color);-webkit-text-fill-color:var(--color);-webkit-box-shadow:none;transition:background-color 1000s ease-in-out 0s}.custom-select,.form-control,input:-internal-autofill-selected{color:var(--input-color);background-color:var(--input-bg)!important;border-color:var(--border-color)}.form-control:focus{border-color:var(--border-color)}body,html{position:relative;height:100%;overflow-x:hidden}body{overflow-y:hidden}#app{flex:1 1 auto;min-height:0}.app-header{flex:0 0 auto}@media (min-width:992px){.app-header.is-contained .navbar{padding-left:max(40px,calc((100% - 1140px)/ 2 + 32px))!important;padding-right:max(40px,calc((100% - 1140px)/ 2 + 32px))!important}}.app-view{display:block;flex:1 1 auto;min-height:0;overflow-x:hidden!important;overflow-y:auto!important;max-width:100%}.markdown-body a,a{color:var(--link-color)}.markdown-body a:hover,a:hover{text-decoration:none;color:var(--link-hover-color)}.dropdown-menu a.dropdown-item{color:var(--color)}.dropdown-menu a.dropdown-item:hover{color:var(--color);text-decoration:none}.markdown-body .emoji{height:1.3em;margin:0;vertical-align:-.1em}.navbar.navbar-expand-lg{background:var(--header-bg-color)!important;border-bottom:1px solid var(--border-color);transition:background-color .5s ease;padding:10px max(20px,calc((100vw - 1200px)/ 2));font-family:var(--font-sans)}.navbar-toggler{border:1px solid var(--border-color)!important;color:var(--color)!important;width:44px;height:40px;padding:0!important;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-control)!important}.navbar-toggler .navbar-toggler-icon{width:22px;height:22px}.navbar-toggler .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='%231A1815' stroke-width='2' stroke-linecap='round' d='M4 8h22M4 15h22M4 22h22'/%3E%3C/svg%3E")!important}.navbar .navbar-nav{align-items:center}.navbar .nav-link{display:inline-flex;align-items:center;font-size:13px;color:var(--ink-muted)!important;padding:6px 0!important;margin:0 12px;border-bottom:1px solid transparent;letter-spacing:-.005em;line-height:1}.navbar .nav-link:hover{color:var(--color)!important}.navbar .nav-link.active{color:var(--color)!important;border-bottom-color:var(--color)}.navbar .nav-link.nav-icon{padding:0!important;margin:0 8px;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px}.navbar .nav-link .fa,.navbar .nav-link .fab{font-size:15px;line-height:1}.navbar #navbarSupportedContent{align-items:center}.navbar-brand{font-family:var(--font-serif)!important;font-size:20px!important;letter-spacing:-.01em;color:var(--color)!important;padding-right:18px;margin-right:12px;border-right:1px solid var(--border-color)}.navbar-brand em,.navbar-brand i{font-style:italic;font-weight:400}.navbar-dark .navbar-toggler{border-color:var(--border-color);color:var(--color)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='%231A1815' stroke-width='2' stroke-linecap='round' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar .btn-signin{display:inline-flex;align-items:center;height:32px;padding:0 14px!important;margin-left:6px;border:1px solid var(--border-color);background:var(--paper-card);color:var(--color)!important;border-radius:var(--radius-control);font-size:13px;font-weight:500;line-height:1}.dark-mode .navbar .btn-signin{border-color:#5a554d;background:0 0}.navbar .btn-signin:hover{background:var(--hover-bg-color);border-color:var(--ink-faint);color:var(--color)!important}.navbar .nav-support{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;order:3;gap:6px;min-height:32px;margin-left:4px;padding:0 10px;border:1px solid transparent;border-radius:var(--radius-control);color:var(--ink-muted);font-size:13px;font-weight:500;text-decoration:none}.navbar .nav-support:hover{background:var(--hover-bg-color);color:var(--color)}.navbar button.nav-link{background:0 0;border:0;cursor:pointer}.navbar .nav-link:focus-visible,.navbar .nav-support:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-control)}.navbar .nav-signin-m{display:none}@media (min-width:992px){.navbar>.nav-support{display:none!important}}.navbar .nav-support-inline{display:inline-flex!important;align-items:center;gap:6px}.navbar .nav-support-inline .ui-icon{width:15px;height:15px}@media (max-width:991px){.navbar .nav-signin-m{display:inline-flex;align-items:center;order:0;height:40px;padding:0 14px;margin-left:0;margin-right:8px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-card);color:var(--color);font-size:13px;font-weight:500;text-decoration:none}.navbar .nav-support{order:0;width:44px;min-height:44px;margin:0 8px 0 auto;padding:0}.navbar .nav-support-label{display:none}}.navbar .user-chip{display:inline-flex!important;align-items:center;gap:8px;padding:4px 12px 4px 6px!important;margin-left:6px;border:1px solid var(--border-color);border-radius:999px;background:var(--sidebar-bg-color);font-size:13px;color:var(--color)!important}.navbar .user-chip:hover{background:var(--hover-bg-color)}.navbar .user-chip img{width:22px;height:22px}.navbar .user-chip .user-chip-name{color:var(--color);font-weight:500}.navbar .user-chip::after{color:var(--ink-muted)}#navbarSupportedContent{padding-right:0}.generalMessage{display:block;text-align:center;color:var(--header-color)}.rgba-gradient{background:var(--canvas-bg-color);color:var(--color)}.paper-landing{overflow-x:clip}.paper-wrap{width:min(1076px,calc(100% - 64px));margin-left:auto;margin-right:auto;padding-left:0;padding-right:0}.paper-eyebrow{font-family:var(--font-mono);font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);font-weight:500}.paper-hero{max-width:1140px;margin:0 auto;padding:40px 32px 0;display:grid;grid-template-columns:.95fr 1.05fr;gap:48px;align-items:center}.paper-hero h1.hero-title{font-family:var(--font-serif);font-weight:400;font-size:clamp(2.6rem,5.4vw,4.4rem);line-height:1.02;letter-spacing:-.025em;margin:14px 0 0;color:var(--color);text-wrap:balance}.paper-hero h1 .accent{color:var(--accent);font-style:italic}.hero-subtitle{margin-top:18px;font-size:18px;line-height:1.55;color:var(--ink-soft);max-width:30em;text-wrap:pretty}.paper-cta-row{display:flex;flex-wrap:wrap;gap:18px;align-items:center;margin-top:26px}.btn-hero{display:inline-flex;align-items:center;font-family:var(--font-sans);border:1px solid var(--color);background:var(--color);color:var(--canvas-bg-color);padding:12px 20px;font-size:14px;font-weight:500;border-radius:var(--radius-control);letter-spacing:-.005em;transition:background .15s,border-color .15s,transform .1s}.btn-hero:hover{background:var(--primary-hover-bg);border-color:var(--primary-hover-bg);color:var(--canvas-bg-color);text-decoration:none;transform:translateY(-1px)}.btn-hero-ghost{background:0 0;border:1px solid var(--border-color);color:var(--color);padding:12px 20px;font-size:14px;font-weight:500;border-radius:var(--radius-control)}.btn-hero-ghost:hover{background:var(--hover-bg-color);border-color:var(--color);color:var(--color)}.paper-link-arrow{font-size:14px;color:var(--ink-soft);text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--border-color)}.paper-link-arrow:hover{color:var(--color);text-decoration-color:var(--color)}.paper-reassure{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:13px;color:var(--ink-muted)}.paper-reassure li{white-space:nowrap}@media (min-width:1100px){.paper-reassure{flex-wrap:nowrap}}.paper-reassure li::before{content:"\2713";color:var(--status-ready);margin-right:7px;font-size:14px;font-weight:600}.paper-frame{border-radius:var(--radius-surface);background:var(--paper-card);border:1px solid var(--border-color);box-shadow:0 24px 60px rgba(26,24,21,.1),0 2px 6px rgba(26,24,21,.04);overflow:hidden}.dark-mode .paper-frame{box-shadow:0 24px 60px rgba(0,0,0,.45)}.paper-frame-bar{display:flex;align-items:center;gap:8px;height:34px;padding:0 12px;border-bottom:1px solid var(--border-soft);background:var(--paper-bg-alt);font-family:var(--font-mono);font-size:11px;color:var(--ink-muted)}.paper-frame-bar .dots{display:flex;gap:5px}.paper-frame-bar .dots i{width:9px;height:9px;border-radius:50%;background:color-mix(in srgb,var(--ink-faint) 45%,transparent)}.paper-frame-bar .url{flex:1;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-frame img{display:block;width:100%;height:auto}.paper-hero-shot .paper-frame{width:100%}.hero-mock{display:grid;grid-template-columns:168px 1fr;min-height:360px;font-family:var(--font-sans);text-align:left}.hero-mock-tree{background:var(--paper-bg-alt);border-right:1px solid var(--border-soft);padding:12px 8px}.hero-mock-tree-title{font-size:11px;font-weight:600;color:var(--ink-muted);padding:0 8px 8px}.hero-mock-row{display:flex;align-items:center;gap:7px;height:26px;padding:0 8px;border-radius:var(--radius-control);font-size:12.5px;color:var(--ink-soft);white-space:nowrap}.hero-mock-row svg{width:14px;height:14px;flex-shrink:0;fill:none;stroke:var(--ink-muted);stroke-width:1.2;stroke-linejoin:round}.hero-mock-row.is-active{background:rgba(128,128,128,.15);color:var(--color);font-weight:500}.hero-mock-doc{min-width:0;background:var(--paper-card)}.hero-mock-doc-bar{display:flex;align-items:center;justify-content:space-between;height:40px;padding:0 18px;border-bottom:1px solid var(--border-soft);font-size:13px}.hero-mock-doc-bar span{font-size:12px;color:var(--ink-muted)}.hero-mock-doc-body{padding:18px 22px 22px;font-size:13.5px;line-height:1.6;color:var(--color)}.hero-mock-doc-body p{margin:0 0 10px}.hero-mock-h1{font-size:22px;font-weight:600;letter-spacing:-.01em;padding-bottom:8px;margin-bottom:12px;border-bottom:1px solid var(--border-soft)}.hero-mock-h2{font-size:15px;font-weight:600;margin:16px 0 8px}.hero-mock-doc-body pre{margin:0 0 12px;padding:10px 12px;background:var(--paper-bg-alt);border:1px solid var(--border-soft);border-radius:var(--radius-control);font-family:var(--font-mono);font-size:12px;line-height:1.6;color:var(--color)}.hero-mock .redact{background:var(--accent-soft);color:var(--accent);border-radius:4px;padding:1px 5px;font-family:var(--font-mono);font-size:.88em}@media (max-width:575px){.hero-mock{grid-template-columns:1fr;min-height:0}.hero-mock-tree{display:none}}.paper-proof{margin-top:48px;padding-top:18px;padding-bottom:18px;border-top:1px solid var(--border-color);display:flex;flex-wrap:wrap;gap:12px 30px;align-items:center}.paper-proof-venues{display:flex;gap:22px;align-items:center;font-family:var(--font-serif);font-size:22px;letter-spacing:-.01em;color:var(--ink-soft)}.paper-proof-venues i{font-style:normal;font-family:var(--font-sans);font-size:14px;color:var(--ink-faint)}.paper-stats{margin-top:40px;padding-top:16px;border-top:1px solid var(--border-color)}.paper-stats-meta-left{display:inline-flex;align-items:center;gap:8px}.paper-stats-meta{display:flex;justify-content:space-between;align-items:center;font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:14px}.paper-stats-meta-right{display:inline-flex;align-items:center;gap:6px}.paper-stats-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--status-ready)}.paper-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color)}.paper-stat-card{display:flex;flex-direction:column;padding:22px 26px 20px 0;margin-right:26px;border-right:1px solid var(--border-color);min-width:0}.paper-stat-card:last-child{border-right:0;margin-right:0;padding-right:0}.paper-stat-value{font-size:44px;font-weight:500;letter-spacing:-.04em;line-height:1;color:var(--color);font-variant-numeric:tabular-nums}.paper-stat-label{margin-top:6px;font-size:13px;color:var(--ink-soft)}.paper-stat-value.is-pending{color:var(--ink-faint)}.paper-stat-bars{display:block;width:100%;height:34px;margin-top:18px;overflow:visible}.paper-stat-bars rect{fill:color-mix(in srgb,var(--ink-muted) 55%,transparent)}.paper-stat-bars rect.is-latest{fill:var(--accent)}.paper-stat-delta{margin-top:10px;font-family:var(--font-mono);font-size:12px;color:var(--ink-muted)}.paper-section-head{margin-top:88px;display:grid;grid-template-columns:1fr 1.4fr;gap:40px;align-items:start}.paper-section-head>p{padding-top:34px}@media (max-width:991px){.paper-section-head>p{padding-top:0}}.paper-qa h2,.paper-section-head h2{font-family:var(--font-serif);font-weight:400;font-size:clamp(2rem,4.2vw,3.25rem);line-height:1.05;letter-spacing:-.02em;margin:10px 0 0;color:var(--color);text-wrap:balance}.paper-feature-title em,.paper-qa h2 em,.paper-section-head h2 em{font-style:italic;color:var(--accent)}.paper-section-head p{font-size:15px;color:var(--ink-soft);max-width:32em;margin:0;line-height:1.6}.paper-preview{margin-top:28px;display:grid;grid-template-columns:1fr 1fr;gap:14px}.paper-preview .pane{background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);overflow:hidden;min-width:0}.paper-preview .pane-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border-soft)}.paper-preview .pane-label{font-family:var(--font-mono);font-size:11px;color:var(--ink-muted);white-space:nowrap}.paper-preview .pane-url{font-family:var(--font-mono);font-size:11px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.paper-preview .pane-body{padding:16px 18px;font-family:var(--font-mono);font-size:13px;line-height:1.9;color:var(--ink-soft)}.paper-preview .pane-body strong{color:var(--color);font-weight:600}.paper-preview .tok{color:var(--ink-faint)}.paper-preview .term{background:color-mix(in srgb,var(--status-error) 9%,transparent);color:inherit;border-radius:4px;padding:0 4px;text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--status-error) 60%,transparent)}.dark-mode .paper-preview .term{background:color-mix(in srgb,var(--status-error) 16%,transparent)}.paper-preview .redact{background:var(--accent-soft);color:var(--accent);border-radius:4px;padding:0 5px}.paper-features{margin-top:28px;padding-top:28px;border-top:1px solid var(--border-color);display:grid;grid-template-columns:5fr 7fr;gap:48px;align-items:start}.paper-features-list{display:flex;flex-direction:column}.paper-feature{border-left:2px solid var(--border-soft);padding:16px 0 16px 20px;transition:border-color .2s}.paper-feature.is-on{border-left-color:var(--accent)}.paper-feature-tab{all:unset;display:block;position:relative;width:100%;cursor:pointer;color:inherit;border-radius:4px}.paper-feature:not(.is-on) .paper-feature-tab::after{content:"";position:absolute;right:4px;bottom:12px;width:8px;height:8px;border-right:1.5px solid var(--ink-muted);border-bottom:1.5px solid var(--ink-muted);transform:rotate(45deg)}.paper-feature:not(.is-on) .paper-feature-tab:hover::after{border-color:var(--color)}.paper-feature.is-on .paper-feature-tab::after{content:"";position:absolute;right:4px;bottom:10px;width:8px;height:8px;border-right:1.5px solid var(--color);border-bottom:1.5px solid var(--color);transform:rotate(-135deg)}.paper-feature-tab:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.paper-feature-tab .paper-eyebrow{display:block;margin-bottom:6px}.paper-feature-title{display:block;font-family:var(--font-serif);font-size:24px;line-height:1.15;letter-spacing:-.015em;color:var(--color);transition:color .2s}.paper-feature-title em{color:inherit}.paper-feature-tab:hover .paper-feature-title,.paper-feature.is-on .paper-feature-title{color:var(--color)}.paper-feature.is-on .paper-feature-title em{color:var(--accent)}.paper-feature-more{display:none}.paper-feature.is-on .paper-feature-more{display:block}.paper-feature-more .paper-feature-title-m{display:none}.paper-feature-more p{font-size:15px;color:var(--ink-soft);line-height:1.55;margin:10px 0 12px;max-width:30em}.paper-features-stage{min-width:0}.paper-feature-panel{animation:paper-feature-in .25s ease-out}@keyframes paper-feature-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.paper-feature-panel{animation:none}}.paper-crop{position:relative;height:380px;overflow:hidden;background:var(--paper-card)}.paper-crop img{position:absolute;left:0;top:0;max-width:none;height:auto;display:block}.paper-crop-anonymize img{width:213%;transform:translate(-1.5%,-18%)}.paper-crop-review img{width:213%;transform:translate(0,-6.5%)}.paper-crop-manage img{width:213%;transform:translate(-12.3%,-6.5%)}.paper-qa{margin-top:88px;display:grid;grid-template-columns:1fr 1.4fr;gap:40px;align-items:start}.paper-qa h2{margin-bottom:12px}.paper-qa .q{border-top:1px solid var(--border-color);padding:18px 0}.paper-qa .q:last-child{border-bottom:1px solid var(--border-color)}.paper-qa .q a::after{content:none;display:inline-block;width:7px;height:7px;margin-left:10px;border-right:1.5px solid var(--ink-muted);border-bottom:1.5px solid var(--ink-muted);transform:translateY(-2px) rotate(-45deg);transition:transform .15s,border-color .15s}.paper-qa .q a:hover::after{border-color:var(--accent);transform:translate(3px,-2px) rotate(-45deg)}.paper-qa .q a:hover{text-decoration:underline;text-underline-offset:3px}.paper-qa .q a{display:block;font-weight:500;font-size:15px;color:var(--color);margin-bottom:6px}.paper-qa .q a:hover{color:var(--accent);text-decoration:none}.paper-qa .q p{margin:0;font-size:14px;color:var(--ink-soft);line-height:1.6}@media (max-width:1100px){.paper-hero-shot .paper-frame{width:100%}}@media (max-width:991px){.paper-hero{grid-template-columns:1fr;gap:36px;padding-top:40px}.paper-qa,.paper-section-head{grid-template-columns:1fr;gap:16px}.paper-stats-grid{grid-template-columns:1fr 1fr}.paper-stat-card:nth-child(2n){border-right:0;margin-right:0;padding-right:0}.paper-stat-card:nth-child(-n+2){border-bottom:1px solid var(--border-color)}}@media (max-width:767px){.paper-wrap{width:calc(100% - 40px)}.paper-hero{padding-left:20px;padding-right:20px}.paper-reassure{flex-direction:column;gap:6px}.paper-hero h1.hero-title{font-size:clamp(2.4rem,11vw,3.25rem)}.hero-subtitle{font-size:16px}.paper-cta-row .btn-hero{width:100%;justify-content:center}.paper-proof{margin-top:48px}.paper-stat-card{padding:18px 16px 16px 0;margin-right:16px}.paper-stat-value{font-size:40px}.paper-qa,.paper-section-head{margin-top:72px}.paper-preview{grid-template-columns:1fr}.paper-preview .pane-body{font-size:12px;line-height:1.8}.paper-features{display:flex;flex-wrap:wrap;gap:0;padding-top:0;border-top:0;margin-top:24px}.paper-feature,.paper-features-list,.paper-features-stage{display:contents}.paper-feature-tab{order:1;flex:1 1 0;width:auto;padding:12px 0 10px;border-bottom:2px solid var(--border-color);border-radius:0;text-align:left}.paper-feature.is-on .paper-feature-tab{border-bottom-color:var(--color)}.paper-feature-tab .paper-eyebrow{margin:0;font-size:11px;letter-spacing:.08em}.paper-feature-tab .paper-feature-title{display:none}.paper-feature-panel{order:2;width:100%;margin-top:20px;animation:none}.paper-crop{height:240px}.paper-crop-anonymize img{width:230%;transform:translate(-1.5%,-8%)}.paper-crop-review img{width:240%;transform:translate(-1%,-8%)}.paper-crop-manage img{width:220%;transform:translate(-3%,-9%)}.paper-feature-more{order:3;width:100%}.paper-feature.is-on .paper-feature-more{margin-top:18px}.paper-feature-more .paper-feature-title-m{display:block;font-size:28px;line-height:1.1}.paper-feature-more p{max-width:none}.paper-footer-inner>.paper-footer-brand{grid-column:1/-1}.paper-footer-foot{flex-direction:column;gap:6px}}.dropdown-menu{background-color:var(--paper-card,var(--main-bg-color))!important;color:var(--color)!important;border:1px solid var(--border-color)!important;border-radius:8px!important;box-shadow:0 12px 28px rgba(26,24,21,.08),0 2px 6px rgba(26,24,21,.05)!important;padding:6px!important;font-family:var(--font-sans);font-size:13px;min-width:11rem}.dropdown-menu .dropdown-item{color:var(--color)!important;padding:7px 10px!important;border-radius:5px;font-size:13px}.dropdown-menu .dropdown-item:focus,.dropdown-menu .dropdown-item:hover{background:var(--hover-bg-color)!important;color:var(--color)!important}.dropdown-menu .dropdown-divider{border-top-color:var(--border-color)!important;margin:4px 2px}.dropdown-menu .dropdown-header{color:var(--ink-muted);font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.body,.file-content,.markdown-body{background-color:var(--main-bg-color)!important;color:var(--color)!important}.markdown-body table tr{background-color:var(--main-bg-color);border-top:1px solid var(--border-color)}.markdown-body table tr:nth-child(2n){background-color:var(--paper-bg-alt)}.markdown-body table td,.markdown-body table th{border:1px solid var(--border-color)}.file-content{padding:4px 7px;text-align:left;min-height:100%}.file-card{margin:16px 20px 28px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);overflow:clip}.file-card:not(.is-code) .file-card-head{position:sticky;top:0;z-index:2;border-radius:var(--radius-surface) var(--radius-surface) 0 0}.file-card.is-code{display:flex;flex-direction:column;height:calc(100% - 32px);margin-bottom:16px}.file-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:46px;padding:6px 8px 6px 16px;border-bottom:1px solid var(--border-color);background:var(--paper-card)}.dark-mode .file-card-head{background:var(--paper-card)}.file-card-meta{font-size:13px;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}.file-card-meta .sep{margin:0 8px;color:var(--ink-faint)}.file-card-head .btn{height:32px;min-height:32px;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:500;padding:0 10px}.file-card-head .btn-seg:not(.view-switch){gap:2px;padding-left:8px;margin-left:4px;border-left:1px solid var(--border-color)}.file-card-head .btn-seg:not(.view-switch)>.btn{border:0!important;border-radius:var(--radius-control)!important;margin:0!important;background:0 0!important;color:var(--ink-soft)}.file-card-head .btn-seg:not(.view-switch)>.btn:hover{background:var(--hover-bg-color)!important;color:var(--color)}.file-card-actions>.btn-seg:first-child,.file-card-head .btn-seg:not(.view-switch):has(>.btn:only-child){border-left:0;padding-left:0;margin-left:0}.file-card-head .btn.btn-icon-only{width:32px;padding:0!important;color:var(--ink-soft)}.file-card-head .btn.btn-icon-only:hover{color:var(--color);background:var(--hover-bg-color)!important}.file-card .file-card-body{flex:1 1 auto;min-height:0}.file-card-actions{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}.file-card-path{display:none;align-items:center;gap:2px;min-width:0}.file-card-path .paths{overflow:hidden}.file-card-path+.file-card-meta,.file-card-path+.view-switch{margin-left:8px}.status-bar.is-redundant{display:none}.file-card-path{display:inline-flex}@media (max-width:767px){.file-card-head{flex-wrap:wrap;row-gap:0}.file-card-head .file-card-meta{order:3;flex-basis:100%;margin:0 0 6px!important;padding:0!important;border:0!important;font-size:12px;color:var(--ink-muted)}.file-card-head .file-card-meta .meta-extra{display:inline!important}.file-card-head .btn-ghost{color:var(--ink-soft)}.file-card-head .breadcrumb-root,.file-card-head .breadcrumb-root+.breadcrumb-item::before{display:none!important}.file-card-head .breadcrumb-item{padding-left:0}.file-card-head{gap:6px;padding:6px 8px 6px 16px}.file-card-actions{gap:2px}.file-card-actions .btn-seg{margin-left:4px}}@media (min-width:992px){.file-card-path+.file-card-meta{padding-left:14px;border-left:1px solid var(--border-color)}.file-card{margin-top:20px}.file-card.is-code{height:calc(100% - 36px)}}.card-files-btn{margin-right:4px}.leftCol-zip{display:inline-flex;align-items:center;gap:8px;margin-bottom:6px;font-size:13px;font-weight:500;color:var(--ink-soft);text-decoration:none}.leftCol-zip:hover{color:var(--color);text-decoration:none}.leftCol-zip .ui-icon{width:15px;height:15px}.file-card-actions .btn-seg{margin-left:6px}.file-card-head .btn.btn-find,.file-card-head .btn.btn-goto{padding:0 10px;gap:6px;font-weight:400}@media (max-width:1180px){.file-card-head .btn-find .btn-find-label,.file-card-head .btn-goto .btn-find-label{display:none}.file-card-head .btn-find,.file-card-head .btn-goto{width:32px;padding:0!important}}@media (max-width:991px){.file-card-head .btn-find{width:32px;padding:0!important}.file-card-head .btn-find-label{display:none}}@media (max-width:767px){.file-card-head .btn-find{width:40px}}.ace_search{top:8px!important;right:12px!important;left:auto!important;background:var(--paper-card)!important;color:var(--color)!important;border:1px solid var(--border-color)!important;border-radius:var(--radius-surface)!important;box-shadow:0 8px 24px rgba(26,24,21,.14);padding:6px!important;font-family:var(--font-sans)!important;font-size:13px!important}.ace_search_field{background:var(--input-bg)!important;color:var(--input-color)!important;border:1px solid var(--border-color)!important;border-radius:var(--radius-control)!important;margin-right:4px!important;height:28px!important;padding:0 8px!important;font-family:var(--font-sans)!important}.ace_search_field:focus{border-color:var(--ink-muted)!important;outline:0;box-shadow:0 0 0 3px var(--hover-bg-color)}.ace_button,.ace_searchbtn{background:0 0!important;color:var(--ink-soft)!important;border:0!important;border-radius:var(--radius-control)!important;width:28px;height:28px!important;line-height:28px!important}.ace_button:hover,.ace_searchbtn:hover{background:var(--hover-bg-color)!important;color:var(--color)!important}.ace_button.checked{border-color:var(--accent)!important;color:var(--accent)!important}.ace_search_counter{color:var(--ink-soft)!important;font-size:13px;margin:0 8px 0 4px!important;font-variant-numeric:tabular-nums}.ace_search{display:flex;flex-wrap:nowrap;align-items:center;gap:6px;max-width:none!important;width:auto!important}.dark-mode .ace_search{background:var(--paper-card)!important}.ace_search .ace_button.checked{background:var(--accent-soft)!important;color:var(--accent)!important;border-color:var(--accent)!important}.ace_search .ace_button[action=searchInSelection],.ace_search .ace_button[action=toggleReplace],.ace_search .ace_replace_form,.ace_search .ace_searchbtn[action=findAll]{display:none!important}.ace_search_field{width:200px!important}.ace_search_form{display:flex;align-items:center;margin:0!important;float:none!important}.ace_search_options{display:flex!important;align-items:center;gap:4px;margin:0!important;float:none!important;text-align:left!important}.ace_search_options .ace_button{width:28px;height:28px!important;line-height:26px!important;padding:0!important;border-radius:var(--radius-control)!important;font-size:12px!important;text-align:center}.ace_searchbtn_close{position:static!important;margin-left:2px}.ace_editor .ace_marker-layer .ace_selected-word{background:color-mix(in srgb,#e0a94a 30%,transparent)!important;border:0!important;border-radius:2px}.ace_editor.ace-chrome .ace_marker-layer .ace_selection,.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection{background:#f2b544!important;box-shadow:0 0 0 1px #b7791f;border-radius:2px}.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection{background:#b7791f!important;box-shadow:0 0 0 1px #f2b544}.ace_editor .ace_indent-guide-active{background:0 0!important;box-shadow:inset 1px 0 0 var(--border-color)!important}.ace_searchbtn_close{filter:none!important;opacity:.6}.ace_prompt_container{background:var(--paper-card)!important;border:1px solid var(--border-color)!important;border-radius:var(--radius-surface)!important;box-shadow:0 12px 32px rgba(26,24,21,.16)!important}.btn.btn-ghost{background:0 0!important;border-color:transparent!important;color:var(--ink-muted)}.btn.btn-ghost:hover{background:var(--hover-bg-color)!important;color:var(--color)}.btn.btn-ghost.is-on{color:var(--color);background:var(--hover-bg-color)!important;box-shadow:none}.btn.btn-ghost:focus:not(:focus-visible):not(.is-on):not(:hover){background:0 0!important;box-shadow:none}.dark-mode .file-card-head .btn-seg .btn{background:0 0!important;border-color:var(--border-color)!important;color:var(--color);font-weight:500}.file-card-head .btn.btn-find,.file-card-head .btn.btn-goto{color:var(--ink-soft)}.file-card-head>.view-switch{gap:2px;padding:2px;border-radius:calc(var(--radius-control) + 2px);background:var(--hover-bg-color)}.file-card-head>.view-switch .btn{height:28px;min-height:28px;margin:0!important;border:0!important;border-radius:var(--radius-control)!important;background:0 0!important;color:var(--ink-soft);font-weight:500}.file-card-head>.view-switch .btn:hover{color:var(--color)}.file-card-head>.view-switch .btn.is-on{background:var(--paper-card)!important;color:var(--color);box-shadow:0 1px 2px rgba(26,24,21,.1),0 0 0 1px var(--border-color);cursor:default}.dark-mode .file-card-head>.view-switch .btn.is-on{background:#3d3934!important;box-shadow:none}.status-bar .btn.btn-ghost.btn-zip{color:var(--ink-soft)}.copy-path-btn{margin-left:-4px}@media (max-width:767px){.file-card-head .btn,.file-card-head .btn.btn-icon-only{height:40px;min-height:40px}.file-card-head .btn.btn-icon-only{width:40px}.copy-path-btn{display:none!important}}.file-card .ace_editor{height:100%!important}@media (max-width:767px){.file-card{margin:0;border:0;border-radius:0}.file-card.is-code{height:100%}.file-card-head{position:sticky;top:0;z-index:2;padding-left:16px}}.dir-card{margin:20px 20px 0;background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);overflow:hidden}.dir-card+.file-card{margin-top:16px}.dir-card-head{display:flex;align-items:baseline;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border-color);background:var(--paper-bg-alt)}.dark-mode .dir-card-head{background:#35312c}.dir-card-title{font-size:14px;font-weight:600;color:var(--color)}.dir-card-sub{font-size:13px;color:var(--ink-muted)}.dir-list{list-style:none;margin:0;padding:4px 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:0}.dir-row{display:flex;align-items:center;gap:10px;width:100%;height:34px;padding:0 16px;border:0;background:0 0;font:inherit;font-size:14px;color:var(--color);text-align:left;text-decoration:none;cursor:pointer}.dir-row:hover{background:var(--hover-bg-color);color:var(--color);text-decoration:none}.dir-row:hover .dir-name{text-decoration:underline;text-underline-offset:3px}.dir-row.is-current .dir-name{font-weight:600}.dir-icon{width:16px;height:16px;flex-shrink:0;fill:none;stroke:var(--ink-muted);stroke-width:1.2;stroke-linejoin:round}.dir-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dir-meta{flex-shrink:0;font-size:12px;color:var(--ink-muted);font-variant-numeric:tabular-nums}.dir-list:not(.is-expanded)>li:nth-child(n+9){display:none}.dir-more{display:block;width:100%;height:40px;border:0;border-top:1px solid var(--border-soft);background:0 0;font:inherit;font-size:13px;font-weight:500;color:var(--link-color);cursor:pointer}.dir-more:hover{background:var(--hover-bg-color)}@media (max-width:767px){.dir-card{margin:0;border:0;border-bottom:1px solid var(--border-color);border-radius:0}.dir-list{grid-template-columns:1fr}.dir-card+.file-card{margin-top:0}}.explorer-content .file-card .file-content.markdown-body{max-width:920px;margin:0;min-height:0;padding:28px 40px 48px;background:var(--paper-card)!important;font-family:var(--font-sans);font-size:15px;line-height:1.65}.explorer-content .markdown-body h1,.explorer-content .markdown-body h2{font-family:var(--font-sans);font-weight:600;letter-spacing:-.01em;border-bottom:1px solid var(--border-color);padding-bottom:.3em}.explorer-content .markdown-body h1{font-size:28px;margin-top:0}.explorer-content .markdown-body h2{font-size:21px;margin-top:32px}.explorer-content .markdown-body h3{font-size:17px;font-weight:600;margin-top:24px}.explorer-content .markdown-body h4{font-size:15px;font-weight:600}.explorer-content .markdown-body img{border-radius:var(--radius-control)}.explorer-content .markdown-body p>a:only-child>img,.explorer-content .markdown-body p>img:only-child{border:1px solid var(--border-color)}.explorer-content .markdown-body code,.explorer-content .markdown-body pre{font-family:var(--font-mono);font-size:13px}.explorer-content .markdown-body pre{background:var(--paper-bg-alt)!important;border:1px solid var(--border-soft);border-radius:var(--radius-control);padding:14px 16px;line-height:1.55}.explorer-content .markdown-body :not(pre)>code{background:var(--hover-bg-color);border-radius:4px;padding:.15em .4em;font-size:.86em}@media (max-width:767px){.explorer-content .file-card .file-content.markdown-body{padding:20px 16px 72px;font-size:15px}.explorer-content .markdown-body h1{font-size:24px}}.ace_editor.ace-chrome,.ace_editor.ace-nord-dark{background:var(--paper-card)!important;color:var(--color)!important}.ace_editor.ace-chrome .ace_gutter,.ace_editor.ace-nord-dark .ace_gutter{background:color-mix(in srgb,var(--paper-bg-alt) 55%,var(--paper-card))!important;color:var(--ink-muted)!important;border-right:1px solid var(--border-soft)}.ace_editor .ace_gutter-cell{padding-right:14px;padding-left:12px;font-size:12px}@media (max-width:767px){.ace_editor .ace_gutter-cell{padding-right:8px;padding-left:6px}}.ace_editor .ace_gutter-active-line{background:0 0!important}.ace_editor .ace_indent-guide{background:0 0!important;box-shadow:inset 1px 0 0 var(--border-soft)}.ace_editor .ace_fold-widget{opacity:0;transition:opacity .15s}.ace_editor .ace_fold-widget.ace_closed,.ace_editor .ace_gutter:hover .ace_fold-widget{opacity:.7}.ace_editor .ace_marker-layer .ace_selection{background:var(--accent-soft)!important}.ace-chrome .ace_keyword,.ace-chrome .ace_storage{color:#b4362a}.ace-chrome .ace_string{color:#2b5a3e}.ace-chrome .ace_constant.ace_language,.ace-chrome .ace_constant.ace_numeric,.ace-chrome .ace_support.ace_constant{color:#1f6a64}.ace-chrome .ace_comment{color:#7a746a;font-style:italic}.ace-chrome .ace_entity.ace_name.ace_function,.ace-chrome .ace_support.ace_function{color:#6b45b8}.ace-chrome .ace_variable.ace_parameter{color:#8a5a12;font-style:normal}.ace-chrome .ace_entity.ace_name.ace_tag,.ace-chrome .ace_meta.ace_tag{color:#116329}.ace-chrome .ace_entity.ace_other.ace_attribute-name{color:#0550ae}.ace-chrome .ace_identifier,.ace-chrome .ace_paren,.ace-chrome .ace_punctuation,.ace-chrome .ace_variable{color:var(--color)}.ace-nord-dark .ace_keyword,.ace-nord-dark .ace_storage{color:#f2897d}.ace-nord-dark .ace_string{color:#9dd3a8}.ace-nord-dark .ace_constant.ace_language,.ace-nord-dark .ace_constant.ace_numeric,.ace-nord-dark .ace_support.ace_constant{color:#7cc7be}.ace-nord-dark .ace_comment{color:#9a948a;font-style:italic}.ace-nord-dark .ace_entity.ace_name.ace_function,.ace-nord-dark .ace_support.ace_function{color:#c9a8f5}.ace-nord-dark .ace_variable.ace_parameter{color:#e0a94a;font-style:normal}.ace-nord-dark .ace_entity.ace_name.ace_tag,.ace-nord-dark .ace_meta.ace_tag{color:#7ee787}.ace-nord-dark .ace_entity.ace_other.ace_attribute-name{color:#79c0ff}.ace-nord-dark .ace_identifier,.ace-nord-dark .ace_paren,.ace-nord-dark .ace_punctuation,.ace-nord-dark .ace_variable{color:var(--color)}.badge{font-size:75%;font-weight:500;padding:3px 8px;border-radius:10px;vertical-align:middle}.warning-feedback{width:100%;margin-top:.25rem;font-size:80%;color:#dc8e35}.dropdown-item:focus,.dropdown-item:hover{background-color:var(--hover-bg-color)}.card-header .btn,.card-header .btn:focus,.card-header .btn:hover{border:none!important;background:0 0!important}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--button-height);padding:7px var(--button-padding-x);font:500 var(--button-font-size)/var(--button-line-height) var(--font-sans);vertical-align:middle;max-width:100%;transition:background-color 120ms ease,border-color 120ms ease,color 120ms ease;color:var(--btn-color);border:1px solid var(--border-color);background:var(--paper-card);border-radius:var(--radius-button);white-space:nowrap}.btn:active,.btn:hover{color:var(--btn-color);border:1px solid var(--border-color);background-color:var(--hover-bg-color);box-shadow:none!important}.btn.btn-primary{color:var(--primary-color);background-color:var(--primary-bg)}.btn.btn-primary:active,.btn.btn-primary:hover{color:var(--primary-active-color);background-color:var(--primary-hover-bg)!important}.btn::placeholder{color:var(--color);opacity:1}.white_border{border:1px solid #fff;color:#fff}.leftCol{display:flex;position:relative;flex:0 0 auto;width:100%;z-index:9;flex-direction:column}.card,.leftCol,.sidePanel{background-color:var(--sidebar-bg-color);border:1px solid var(--border-color)}@media (min-width:768px){.leftCol{flex:0 0 var(--sidebar-w,280px);width:var(--sidebar-w,280px);height:100%}}.leftCol-search{padding:10px 12px 0}.tree-search-box{display:flex;align-items:center;gap:8px;background:var(--canvas-bg-color);border:1px solid var(--border-color);border-radius:8px;padding:7px 10px;transition:border-color .15s}.tree-search-box:focus-within{border-color:var(--ink-muted)}.tree-search-icon{font-size:12px;color:var(--ink-muted);flex-shrink:0}.tree-search-input{flex:1;border:none;outline:0;background:0 0;font-family:var(--font-sans);font-size:13px;color:var(--color);min-width:0}.tree-search-input::placeholder{color:var(--ink-muted)}.tree-search-kbd{font-family:var(--font-sans);font-size:11px;color:var(--ink-muted);background:var(--paper-bg-alt);border:1px solid var(--border-color);border-radius:4px;padding:1px 6px;line-height:1.4;flex-shrink:0}.tree-search-clear{background:0 0;border:none;color:var(--ink-muted);font-size:16px;cursor:pointer;padding:0 2px;line-height:1}.tree-search-clear:hover{color:var(--color)}.leftCol-project-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px 4px;gap:8px}.project-name{font-family:var(--font-sans);font-size:13px;font-weight:600;color:var(--color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.project-file-count{font-family:var(--font-sans);font-size:12px;color:var(--ink-muted);white-space:nowrap;flex-shrink:0;margin-left:auto}.files{position:relative;display:block;overflow:auto;height:100%;padding:4px 6px}.files ul{list-style:none;margin:0;padding:0}.files li ul{padding-left:8px;margin-left:7px;border-left:1px solid var(--border-color)}.files .folder>ul{display:none}.files .folder.open>ul{display:block}.files .file,.files .folder{position:relative;color:var(--ink-soft);cursor:pointer;word-break:break-all}.files a{display:flex;align-items:center;gap:5px;min-height:26px;padding:2px 8px 2px 4px;font-family:var(--font-sans);font-size:13px;color:var(--ink-soft);border-radius:var(--radius-control);text-decoration:none;line-height:1.5;position:relative}.files a:hover{background:var(--hover-bg-color);color:var(--color);text-decoration:none}.files:focus{outline:0}.files a.tree-focused{background:var(--hover-bg-color);color:var(--color)}.files .file.active>a::before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:2px;border-radius:0 2px 2px 0;background:var(--accent)}.files .file.active>a{border-radius:0 var(--radius-control) var(--radius-control) 0;background:rgba(128,128,128,.12);color:var(--color);font-weight:500}.files .file.active>a .tree-icon-file{color:var(--color)}.files .file.active>a .tree-count{color:var(--ink-muted)}.tree-icon-file,.tree-icon-folder{display:inline-block;flex-shrink:0}.tree-icon-folder{width:14px;height:12px;color:var(--ink-muted);opacity:.75}.tree-icon-folder svg{display:block;width:100%;height:100%;fill:currentColor;fill-opacity:0;stroke:currentColor;stroke-width:1.2;stroke-linejoin:round}.files .folder.open>a .tree-icon-folder{color:var(--ink-muted);opacity:1}.files .folder.open>a .tree-icon-folder svg{fill-opacity:.12}.tree-icon-file{width:16px;font-size:14px;text-align:center;color:var(--ink-muted)}.tree-toggle{display:inline-flex;align-items:center;justify-content:center;width:12px;height:14px;flex-shrink:0;opacity:.8}.tree-toggle::after{content:"";display:block;width:6px;height:6px;border-right:1.5px solid var(--ink-muted);border-bottom:1.5px solid var(--ink-muted);transform:translateX(-1px) rotate(-45deg);transition:transform .12s ease}.files .folder.open>a .tree-toggle::after{transform:translateY(-2px) rotate(45deg)}.tree-spacer{display:inline-block;width:12px;flex-shrink:0}.tree-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files a:not(:hover):not(.tree-focused) .tree-count{opacity:0}.tree-count{transition:opacity .12s;font-family:var(--font-sans);font-size:12px;font-variant-numeric:tabular-nums;color:var(--ink-muted);flex-shrink:0;margin-left:auto;padding-left:8px;opacity:.7}.files .folder>a{color:var(--color)}.files .file::before,.files .folder::before{display:none}.files .folder>a::after{display:none}.tree-search-path{color:var(--ink-muted);font-size:11px}.tree-search-empty{padding:16px 12px;color:var(--ink-muted);font-size:13px;font-family:var(--font-sans);text-align:center}.leftCol{background:var(--paper-bg-alt,#f3f1ec);border:0;border-right:1px solid var(--border-color)}.dark-mode .leftCol{background:var(--paper-bg-alt)}.dark-mode .explorer-content .markdown-body img{filter:brightness(.8)}.dark-mode .hero-mock-tree{background:#1f1d1a}.dark-mode .hero-mock-row.is-active{background:rgba(255,255,255,.1)}.dark-mode .files .file.active>a{background:rgba(255,255,255,.1)}.status-bar{background:var(--canvas-bg-color);border-bottom:1px solid var(--border-color);padding:8px 20px;min-height:48px}.paths .breadcrumb-item,.paths .breadcrumb-item a{font-family:var(--font-sans);font-size:14px;color:var(--ink-muted);letter-spacing:0}.paths .breadcrumb-root a{color:var(--link-color)}.paths .breadcrumb-root a:hover{text-decoration:underline;text-underline-offset:3px}.paths .breadcrumb-item.active,.paths .breadcrumb-item:last-child{color:var(--color);font-family:var(--font-sans);font-size:14px;font-weight:600;letter-spacing:0}.status-files-btn{display:none!important}.leftCol-resizer{display:none}@media (min-width:992px){.leftCol-resizer{display:block;position:absolute;top:0;bottom:0;left:calc(var(--sidebar-w,280px) - 3px);width:6px;cursor:col-resize;z-index:10}.leftCol-resizer:hover,body.is-resizing .leftCol-resizer{background:color-mix(in srgb,var(--accent) 35%,transparent)}body.is-resizing{cursor:col-resize;user-select:none}}.leftCol-hide{display:none;align-items:center;justify-content:center;width:26px;height:26px;margin-right:-6px;border:0;border-radius:var(--radius-control);background:0 0;color:var(--ink-muted);cursor:pointer}.leftCol-hide:hover{background:var(--hover-bg-color);color:var(--color)}.leftCol-hide .ui-icon{width:16px;height:16px}@media (min-width:992px){.leftCol-hide{display:inline-flex}.explorer-page.files-hidden .leftCol{display:none!important}.explorer-page.files-hidden .status-files-btn{display:inline-flex!important}}@media (max-width:991px){.status-files-btn{display:inline-flex!important;flex-shrink:0}.explorer-page .sidebar-toggle{display:none!important}}@media (max-width:767px){.status-bar .btn,.status-bar .btn.btn-icon-only{min-height:40px}.status-bar .btn.btn-icon-only{width:40px}}.dark-mode .status-bar .btn{background:var(--paper-card)}.btn-seg{display:inline-flex}.btn-seg>.btn{border-radius:0;margin:0}.btn-seg>.btn+.btn{margin-left:-1px}.btn-seg>.btn:first-child{border-radius:var(--radius-control) 0 0 var(--radius-control)}.btn-seg>.btn:last-child{border-radius:0 var(--radius-control) var(--radius-control) 0}.btn-seg>.btn:focus-visible,.btn-seg>.btn:hover{position:relative;z-index:1}.status-bar .btn{height:32px;min-height:32px;display:inline-flex;align-items:center;gap:6px}.status-bar .btn.btn-icon-only{padding-left:0;padding-right:0;width:32px;justify-content:center}.status-files-btn{gap:6px}@media (max-width:991px){.status-files-btn{height:40px!important;min-height:40px!important;padding:0 12px;border-radius:var(--radius-control)}}@media (max-width:767px){.file-card.is-code.no-wrap{position:relative}.file-card.is-code.no-wrap::after{content:"";position:absolute;top:46px;right:0;bottom:0;width:44px;pointer-events:none;background:linear-gradient(to right,transparent,var(--paper-card) 85%);z-index:20}.file-card-head .btn-goto{display:none!important}}@media (max-width:575px){.status-bar .btn-zip{display:none!important}.navbar .nav-support{display:none!important}.navbar .nav-signin-m{margin-left:auto}}.ace_editor .ace_gutter-cell{cursor:pointer}.ace_editor .ace_gutter-cell:hover{color:var(--color)}.status-bar .file-meta{flex:0 0 auto;margin-right:auto;font-size:12px;color:var(--ink-muted);white-space:nowrap;font-variant-numeric:tabular-nums}@media (max-width:575px){.status-bar .file-meta{display:none}}.paths .breadcrumb-item+.breadcrumb-item::before{content:'/';color:var(--ink-faint);padding:0 6px 0 3px}.last-update{font-family:var(--font-mono);font-size:11px;color:var(--ink-muted);padding:8px 10px;border-top:1px solid var(--border-color);letter-spacing:.02em}.ace_editor{height:100%}.ace_scroller{cursor:default}.status-bar{display:flex;align-items:center;gap:12px;background-color:var(--canvas-bg-color);padding:10px 14px;margin:0;border-bottom:1px solid var(--border-color);border-radius:0;flex-shrink:0}.status-bar-actions{display:flex;align-items:center;margin-left:auto;gap:10px;flex-shrink:0}.status-bar-actions .btn{display:inline-flex;align-items:center;gap:6px;background:var(--paper-card);border:1px solid var(--border-color);color:var(--color);border-radius:6px;padding:4px 10px;font-size:13px;min-height:30px}.status-bar-actions .btn:hover{background:var(--hover-bg-color);color:var(--color)}.status-bar-actions .btn.btn-active{border-color:currentColor;font-weight:600}.paths{flex:0 1 auto;min-width:0;padding:0;margin:0;background-color:initial;border:none;border-radius:0;align-items:center;overflow-x:auto;white-space:nowrap;flex-wrap:nowrap}.paths::-webkit-scrollbar{display:none}.paths a{color:var(--color)}.paths .breadcrumb-item{padding-left:3px}.paths .breadcrumb-item::before{padding-right:3px}.content{height:100%;overflow:scroll;padding-top:42px;background-color:var(--main-bg-color);text-align:center}.image-content{max-width:100%;max-height:100%;text-align:center;padding:4px}.pdf-viewer{display:flex;flex-direction:column;height:100%;min-height:0;background-color:var(--main-bg-color)}.pdf-toolbar{display:flex;align-items:center;gap:4px;flex:0 0 auto;padding:4px 8px;border-bottom:1px solid var(--border-color,rgba(0,0,0,.12))}.pdf-toolbar-group{display:inline-flex;align-items:center;gap:4px}.pdf-toolbar-right{margin-left:auto}.pdf-toolbar-btn{border:0;background:0 0;color:inherit;padding:4px 8px;border-radius:4px;font-size:13px;line-height:1.2;cursor:pointer}.pdf-toolbar-btn:hover:not(:disabled){background-color:rgba(128,128,128,.18)}.pdf-toolbar-btn:disabled{opacity:.4;cursor:default}.pdf-toolbar-zoom{min-width:52px;font-variant-numeric:tabular-nums}.pdf-toolbar-page{width:3.5em;text-align:right;padding:2px 4px;font-size:13px;color:inherit;background:0 0;border:1px solid var(--border-color,rgba(0,0,0,.2));border-radius:4px}.pdf-toolbar-count{font-size:13px;opacity:.75;font-variant-numeric:tabular-nums}.pdf-pages{flex:1 1 auto;min-height:0;overflow:auto;padding:8px 0}.pdf-viewer-page{margin:0 auto 12px}.pdf-viewer-page canvas{display:block;box-shadow:0 1px 4px rgba(0,0,0,.25)}.pdf-viewer-error{padding:24px;text-align:center;font-weight:700}.html-doc{display:block;height:100%}.html-doc-frame{display:block;width:100%;height:100%;border:0;background-color:#fff}.file-error{font-weight:700;font-size:50px;text-align:center}pdfviewer{display:block;padding:15px}pdfpageviewer{display:block;width:100%;margin-bottom:10px}notebook{display:block;text-align:left;padding:15px}@media (min-width:768px){notebook{padding-left:100px}}.nb-output td,.nb-output th{border:1px solid var(--border-color)!important}.paper-faq{max-width:1140px;margin:0 auto;padding:48px 32px 80px;font-family:var(--font-sans)}.paper-faq-hero{padding-bottom:40px;border-bottom:1px solid var(--border-color);margin-bottom:36px}.paper-faq-eyebrow{font-family:var(--font-mono);font-size:11px;color:var(--ink-muted);letter-spacing:.14em;text-transform:uppercase;margin-bottom:32px}.paper-faq-title{font-family:var(--font-serif);font-weight:400;font-size:clamp(2.6rem,5.5vw,4.6rem);line-height:1.03;letter-spacing:-.02em;color:var(--color);margin:0 0 22px;max-width:14em}.paper-faq-title em{font-style:italic;color:var(--color)}.paper-faq-lede{color:var(--ink-soft);font-size:18px;line-height:1.55;max-width:38em;margin:0}.paper-faq-lede a{color:var(--link-color);border-bottom:1px solid currentColor}.paper-faq-lede a:hover{color:var(--accent);border-bottom-color:var(--accent)}.paper-faq-body{display:grid;grid-template-columns:220px 1fr;gap:60px;align-items:start}.paper-faq-toc{position:sticky;top:32px;font-size:14px}.paper-faq-toc-head{font-family:var(--font-mono);font-size:11px;color:var(--ink-muted);letter-spacing:.14em;text-transform:uppercase;padding-bottom:10px;margin-bottom:6px;border-bottom:1px solid var(--border-color)}.paper-faq-toc nav{display:flex;flex-direction:column}.paper-faq-toc nav a{color:var(--ink-soft);padding:8px 0 8px 14px;border-left:2px solid transparent;text-decoration:none;margin-left:0}.paper-faq-toc nav a.active,.paper-faq-toc nav a:hover{color:var(--color);border-left-color:var(--color)}.faq-section{min-width:0}.faq-section>div{width:100%}.faq-section h4.faq-cat{font-family:var(--font-serif);font-weight:400;font-size:clamp(1.7rem,2.6vw,2.2rem);letter-spacing:-.015em;color:var(--color);margin:0 0 6px;padding-bottom:14px;border-bottom:1px solid var(--border-color)}.faq-section h4.faq-cat i{display:none}.faq-section .panel-group{margin-bottom:56px}.faq-section .panel-default .panel-title a{display:block;position:relative;padding:22px 0 22px 42px;font-family:var(--font-serif);font-weight:400;font-size:20px;line-height:1.35;letter-spacing:-.005em;color:var(--color);text-decoration:none;cursor:pointer}.faq-section .panel-default .panel-title a:hover{color:var(--accent)}.faq-section .panel-heading{background:0 0;padding:0!important;border:none}.faq-section .panel-default{background:0 0;border:none;border-bottom:1px solid var(--border-soft);border-radius:0;margin-bottom:0!important;box-shadow:none}.faq-section .panel-default .panel-title{margin-bottom:0}.faq-section .panel-default .panel-title a:after{content:"−";position:absolute;left:0;right:auto;top:22px;transform:none;font-family:var(--font-mono);font-size:18px;line-height:1.35;color:var(--ink-muted);float:none;margin:0;font-weight:400}.faq-section .panel-default .panel-title a.collapsed:after{content:"+"}.faq-section .panel-default .panel-body{padding:0 0 22px 42px!important;color:var(--ink-soft);font-size:15px;line-height:1.65;border-top:none;max-width:68ch}.table{color:var(--color)}.dropdown-divider,.table td,.table th,hr{border-color:var(--border-color)}.table.repositories td{word-break:break-word}loc{display:block;position:relative;width:100%;height:5px}loc .lang{float:left;height:100%}.rounded-circle.fa{display:inline-block;font-size:75px;height:140px;width:140px;border:4px solid;line-height:140px;text-align:center}.featurette-divider{margin:4.5rem 0;border-color:var(--border-color)}.featurette-heading{font-family:var(--font-serif);font-weight:400;font-size:2rem;line-height:1.15;letter-spacing:-.02em;margin-bottom:14px;color:var(--color)}.dark-mode .shadow{box-shadow:none}.dark-mode .overflow-auto::-webkit-scrollbar{width:10px}.dark-mode .overflow-auto::-webkit-scrollbar-track{-webkit-box-shadow:none;background:inherit;border-radius:0}.dark-mode .overflow-auto::-webkit-scrollbar-thumb{border-radius:10px;border:1px solid var(--border-color);background-color:var(--hover-bg-color)}.dark-mode .rgba-gradient{background:linear-gradient(135deg,#2a2d4a,#151728)}.section-number{padding-right:10px;font-weight:700;font-style:italic}.org-subscript-child{font-size:85%}.highlighted-line{position:absolute;background:rgba(100,200,100,.5);z-index:20}code,pre{font-family:"Fira Code","Courier New",Courier,monospace;line-height:1.1;color:var(--color)}.diff-file,.diff-index,.diff-lines{background:rgba(172,172,172,.5)}.diff-add{background:rgba(100,200,100,.5)}.diff-remove{background:rgba(200,100,100,.5)}.dashboard-title{font-size:1.375rem;font-weight:600;letter-spacing:-.01em}.quota-row{display:flex;gap:16px;margin-bottom:16px;padding:0}.quota-item{flex:1;min-width:0}.quota-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}.quota-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.3px;opacity:.7}.quota-value{font-size:.8125rem;font-weight:500;font-variant-numeric:tabular-nums}.quota-progress{height:6px;border-radius:3px;background:var(--hover-bg-color)}.quota-progress .progress-bar{border-radius:3px}.filter-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;font-size:.8125rem;font-weight:500;background:var(--primary-bg);color:var(--primary-color);border-radius:12px;line-height:1.4}.filter-chip-close{display:inline-flex;align-items:center;justify-content:center;background:0 0;border:none;color:inherit;opacity:.7;cursor:pointer;padding:0;min-width:24px;min-height:24px;margin:-6px -6px -6px 0;font-size:1rem;line-height:1;border-radius:999px}.filter-chip-close:hover{opacity:1}.repo-list{list-style:none;padding:0;margin:0}.repo-list-item{display:flex;align-items:flex-start;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--border-color);gap:12px}.repo-list-item:first-child{border-top:1px solid var(--border-color)}.repo-list-item.repo-inactive{opacity:.6}.repo-list-item-content{flex:1;min-width:0}.repo-list-item-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}.repo-name{font-family:var(--font-mono);font-size:14px;font-weight:500;color:var(--color);word-break:break-word}.repo-name:hover{color:var(--accent)}.repo-source{font-size:.875rem;opacity:.8;display:flex;flex-wrap:wrap;align-items:center;gap:6px}.repo-date{opacity:.7}.repo-meta{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;font-size:.8125rem;opacity:.7}.repo-meta span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.repo-list-item-actions{flex-shrink:0;padding-top:2px;margin-left:14px}.repo-list-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:48px 20px;opacity:.5;font-size:.9375rem;list-style:none;border-bottom:1px solid var(--border-color);border-top:1px solid var(--border-color)}.repo-list-empty i{font-size:1.75rem}.type-badge{display:inline-flex;align-items:center;gap:3px;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.3px;padding:2px 8px;border-radius:4px;white-space:nowrap}.type-badge{font-family:var(--font-mono);letter-spacing:.06em;padding:2px 8px;border-radius:999px;border:1px solid var(--border-color);background:var(--paper-bg-alt,transparent)}.type-badge.type-pr,.type-badge.type-repo{background:var(--paper-bg-alt);color:var(--ink-muted);border-color:var(--border-color)}.dark-mode .type-badge.type-pr,.dark-mode .type-badge.type-repo{background:rgba(255,255,255,.06);color:var(--ink-muted);border-color:var(--border-color)}.type-badge.type-coauthor{background:rgba(99,102,241,.12);color:#4f46e5;border-color:rgba(99,102,241,.35);margin-left:6px}.dark-mode .type-badge.type-coauthor{background:rgba(129,140,248,.18);color:#7cc7be;border-color:rgba(165,180,252,.45)}.btn-group .btn:not(.btn-primary){background:var(--hover-bg-color)}.anonymize-page{display:flex;flex-direction:column;min-height:0}.anonymize-landing{flex:1 1 0;min-height:min-content;display:flex;align-items:center;justify-content:center;padding:20px}.anonymize-landing-inner{width:100%;max-width:600px}.anonymize-landing-inner h2{font-weight:700}.anonymize-workspace{display:flex;flex-direction:column;flex:1 1 0;min-height:0;background:var(--canvas-bg-color)}.anonymize-topbar{background:var(--paper-card);border-bottom:1px solid var(--border-color);padding:18px 28px;flex:0 0 auto}.anonymize-topbar-inner{max-width:1400px;margin:0 auto}.anonymize-topbar-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.anonymize-topbar-title{margin:4px 0 0;font-size:clamp(1.8rem,3vw,2.4rem)}.anonymize-split{flex:1 1 auto;display:flex;min-height:0}.anonymize-form-col{flex:0 0 auto;width:100%;min-width:0;background:var(--canvas-bg-color);border-right:1px solid var(--border-color);overflow-y:auto}.anonymize-form-col .paper-settings-main{max-width:720px;padding:28px 32px 40px;margin:0}.anonymize-form-col .paper-settings-section:first-child{padding-top:0}.anonymize-form-col .anonymize-submit-bar{position:sticky;bottom:0;background:var(--canvas-bg-color);padding:14px 0 0;border-top:1px solid var(--border-color);margin-top:20px}.anonymize-form-col .anonymize-submit-bar .btn{width:100%;padding:12px 16px;font-size:15px}.anonymize-preview-col{flex:1 1 auto;min-width:0;overflow:auto;background:var(--paper-bg-alt);padding:28px 32px}.anonymize-preview-head{display:flex;align-items:baseline;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--border-color);margin-bottom:20px}.anonymize-preview-head .paper-eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted)}.anonymize-preview-sub{color:var(--ink-soft);font-size:13px}.anonymize-preview-body{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:28px 32px}.form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid-3{display:grid;grid-template-columns:2fr 1fr 1fr;gap:16px}@media (max-width:700px){.form-grid-2,.form-grid-3{grid-template-columns:1fr}}.paper-optional{font-family:var(--font-sans);font-weight:400;color:var(--ink-muted);text-transform:none;letter-spacing:0;font-size:11px;margin-left:6px}.paper-plan-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.paper-plan-card{position:relative;display:block;padding:18px 20px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease;margin:0}.paper-plan-card input[type=radio]{position:absolute;opacity:0;pointer-events:none}.paper-plan-card.selected{border-color:var(--color);box-shadow:0 0 0 2px var(--color) inset}.paper-plan-head{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted)}.paper-plan-price{font-family:var(--font-serif);font-size:2rem;color:var(--color);margin:6px 0 4px}.paper-plan-price .paper-plan-per{font-family:var(--font-sans);font-size:12px;color:var(--ink-soft)}.paper-plan-desc{font-size:13px;color:var(--ink-soft)}.paper-plan-desc ul{padding-left:18px;margin:0}.conference-package{padding:20px 22px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;margin:0 0 12px}.conference-package-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin:0 0 14px}.conference-package-head h3{font-size:1.05rem;font-weight:600;margin:0 0 2px}.conference-package-head p{margin:0;font-size:13px;color:var(--ink-soft)}.conference-package-price{display:flex;flex-direction:column;align-items:flex-end;flex:none}.conference-package-price strong{font-size:1.6rem;font-weight:600;line-height:1.1;color:var(--color);font-variant-numeric:tabular-nums}.conference-package-price small{font-size:12px;color:var(--ink-muted)}.conference-package .billing-offer-list{list-style:none;margin:0 0 14px;padding:0;font-size:13px;line-height:1.5}.conference-package .billing-offer-list li{position:relative;padding-left:22px;margin:0 0 6px}.conference-package .billing-offer-list li::before{content:"";position:absolute;left:3px;top:6px;width:10px;height:5px;border-left:1.5px solid var(--ink-muted);border-bottom:1.5px solid var(--ink-muted);transform:rotate(-45deg)}.conference-package h3{font-size:.95rem;font-weight:600;margin:0 0 10px}.conference-tiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:0 0 12px}.conference-tier{position:relative;display:flex;flex-direction:column;gap:4px;margin:0;padding:16px 18px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.conference-tier:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--border-color))}.conference-tier.is-selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;background:var(--accent-soft)}.conference-tier:focus-within{outline:2px solid var(--accent);outline-offset:2px}.paper-page .conference-tier input[type=radio]{position:absolute;opacity:0;pointer-events:none}.conference-tier-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.conference-tier-head strong{font-size:15px;font-weight:600;color:var(--color)}.conference-tier-pill{font-size:11px;font-weight:500;padding:1px 8px;border-radius:999px;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);white-space:nowrap}.conference-tier-who{font-size:13px;color:var(--ink-soft)}.conference-tier-price{margin-top:8px;font-size:12px;color:var(--ink-muted)}.conference-tier-price strong{font-size:1.5rem;font-weight:600;color:var(--color);font-variant-numeric:tabular-nums;margin-right:2px}.conference-tier-size{font-size:13px;color:var(--color)}.conference-tier-per{font-size:12px;color:var(--ink-muted)}.conference-package-note{margin:0;padding-top:12px;border-top:1px solid var(--border-color);font-size:12px;color:var(--ink-muted)}.paper-settings-copy{color:var(--ink-soft);font-size:13px;margin:0 0 14px}.anonymize-section-title{font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.3px;margin:18px 0 8px 0;padding-bottom:6px;border-bottom:1px solid var(--border-color);opacity:.7}.anonymize-section-title i{margin-right:4px}.anonymize-submit-bar{padding:12px 0 4px 0}.anonymize-submit-bar .btn{font-size:1rem;padding:10px 20px;font-weight:600}.anonymize-page .form-check{padding-top:4px;padding-bottom:4px}.anonymize-page .form-check-label{font-weight:500}.anonymize-preview-col{min-height:0;min-width:0}.pr-diff pre{overflow-x:auto;max-width:100%}@media (min-width:768px){.anonymize-form-col{height:100%;width:520px;flex:0 0 520px}.anonymize-preview-col{height:100%;flex:1}}@media (max-width:767px){.anonymize-workspace{flex:0 0 auto;min-height:0}.anonymize-topbar{padding:14px 16px}.anonymize-topbar-title{font-size:1.5rem;margin-top:2px}.anonymize-split{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}.anonymize-form-col{width:100%!important;flex:0 0 auto!important;height:auto!important;border-right:none;border-bottom:1px solid var(--border-color);overflow:visible}.anonymize-form-col .paper-settings-main{padding:18px 16px 24px;max-width:none}.anonymize-form-col .anonymize-submit-bar{position:sticky;bottom:0;margin:20px -16px 0;padding:12px 16px;background:var(--canvas-bg-color);border-top:1px solid var(--border-color);z-index:10}.anonymize-form-col .anonymize-submit-bar .btn{width:100%;padding:12px 16px;font-size:15px}.anonymize-preview-col{width:100%;flex:0 0 auto;height:auto!important;max-height:none;padding:18px 16px 24px;overflow:visible}.anonymize-preview-body{padding:16px;border-radius:8px}.anonymize-preview-body .pr-diff pre,.anonymize-preview-body pre{overflow-x:auto;max-width:100%}.anonymize-landing-inner{padding:16px}}@media (min-width:1280px){.anonymize-form-col{width:620px;flex:0 0 620px}}@media (max-width:767px){.btn{min-height:38px;padding:6px 14px;font-size:14px}.btn-sm{min-height:34px;padding:5px 10px}.navbar .nav-link{padding:8px 12px}.navbar .nav-link .fa,.navbar .nav-link .fab{font-size:24px;line-height:32px}.container.page{padding-left:15px;padding-right:15px;max-width:100%}h1{font-size:1.5rem}h2{font-size:1.375rem}h3{font-size:1.125rem}.repo-list-item{flex-direction:column}.repo-list-item-actions{align-self:flex-start}.quota-row{flex-direction:column;gap:10px;padding:10px 12px}.dropdown-menu{position:absolute;right:0;left:auto}.form-group{margin-bottom:12px}.form-control{font-size:16px}.status-bar{gap:6px;padding:8px 10px}.status-bar .btn{font-size:12px;padding:4px 10px;min-height:32px}.status-bar .paths{font-size:12px;overflow-x:auto;flex-wrap:nowrap;white-space:nowrap;-webkit-overflow-scrolling:touch}.status-bar .paths::-webkit-scrollbar{display:none}.status-bar-actions{flex-shrink:0;gap:4px}#home .display-4{font-size:1.75rem}#home h4.subtext-header{font-size:1rem}.progress:not(.quota-progress){min-width:120px!important}.badge{font-size:70%}.col-2.input-group{width:100%!important;max-width:100%;flex:0 0 100%}.color-text-secondary span{display:inline-block;margin-bottom:2px}.anonymize-landing{align-items:flex-start;padding-top:60px}.anonymize-page .container-fluid>.row{height:auto!important;min-height:100%}.anonymize-form-col{width:100%!important;flex:0 0 100%!important;border-right:none;border-top:1px solid var(--border-color)}.anonymize-preview-col{height:auto!important;max-height:none}.anonymize-section-title{font-size:.8125rem;margin:12px 0 8px 0}.anonymize-submit-bar{position:sticky;bottom:0;background:var(--sidebar-bg-color);padding:10px 0;margin:0 -12px;padding-left:12px;padding-right:12px;border-top:1px solid var(--border-color);z-index:10}.anonymize-submit-bar .btn{font-size:1rem;padding:12px 20px}.anonymize-page .form-check{padding-top:6px;padding-bottom:6px;min-height:36px}.anonymize-page .form-check-label{font-size:.9375rem}.anonymize-page .card-body{padding:12px}.pr-title{font-size:1.125rem}.pr-diff pre{font-size:.75rem}.pr-comment .mb-1 h5{font-size:1rem}.nav-tabs .nav-link{padding:8px 12px;font-size:.875rem}}@media (min-width:768px) and (max-width:991px){.container.page{max-width:100%;padding-left:15px;padding-right:15px}.leftCol{flex:0 0 250px;width:250px}}.explorer-page{display:flex;height:100%;width:100%;background:var(--canvas-bg-color);position:relative}.explorer-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;overflow:hidden;background:var(--canvas-bg-color)}.explorer-content{flex:1 1 auto;min-height:0;width:100%;overflow:auto}.leftCol-close,.leftCol-head{display:none}.leftCol-body{flex:1 1 auto;min-height:0;overflow:auto}.leftCol-foot{padding:8px 12px;border-top:1px solid var(--border-color);background:var(--paper-bg-alt)}.leftCol-foot .last-update{display:block;border-top:none;padding:0;font-family:var(--font-sans);font-size:13px;font-weight:400;letter-spacing:0;line-height:1.5;color:var(--ink-muted)}.leftCol-foot{padding:10px 14px}.leftCol-backdrop{display:none}.paper-inline-warning{display:flex;align-items:flex-start;gap:8px;margin:8px;padding:10px 12px;background:rgba(138,107,30,.08);border:1px solid rgba(138,107,30,.35);border-radius:8px;color:var(--color);font-size:13px;line-height:1.4}.paper-inline-warning i{color:var(--status-progress);margin-top:2px;flex-shrink:0}.dark-mode .paper-inline-warning i{color:var(--status-progress)}@media (min-width:768px){.leftCol-body{padding:8px 4px}}.sidebar-toggle{display:none;align-items:center;gap:8px;position:fixed;bottom:18px;right:18px;z-index:1100;padding:10px 14px;background:var(--color);color:var(--canvas-bg-color);border:1px solid var(--color);border-radius:999px;font-family:var(--font-sans);font-size:13px;font-weight:500;box-shadow:0 6px 20px rgba(0,0,0,.15);cursor:pointer;outline:0}.sidebar-toggle:hover{background:var(--primary-hover-bg)}.sidebar-toggle:focus{outline:0}.sidebar-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (max-width:991px){.sidebar-toggle{display:inline-flex}.leftCol{position:fixed;top:0;left:0;bottom:0;width:min(86vw,340px);max-width:340px;z-index:1200;border:none;border-right:1px solid var(--border-color);transform:translateX(0);transition:transform .22s ease;box-shadow:4px 0 24px rgba(0,0,0,.18);background:var(--sidebar-bg-color)}.leftCol.collapsed{transform:translateX(-105%);box-shadow:none;pointer-events:none}.leftCol-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border-color);background:var(--paper-bg-alt)}.leftCol-eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted)}.leftCol-close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:0 0;border:1px solid var(--border-color);border-radius:8px;color:var(--ink-muted);cursor:pointer}.leftCol-close:hover{color:var(--color);border-color:var(--color)}.leftCol-foot{display:block}.leftCol-body{padding:4px 0}.leftCol-backdrop{display:block;position:fixed;inset:0;background:rgba(0,0,0,.32);z-index:1150;backdrop-filter:blur(2px)}.dark-mode .leftCol-backdrop{background:rgba(0,0,0,.5)}}.admin-nav{display:flex;gap:4px;padding:4px;margin:8px 0 20px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;flex-wrap:wrap}.admin-nav a{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:7px;color:var(--ink-muted);text-decoration:none;font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;transition:background-color .15s,color .15s;white-space:nowrap}.admin-nav a:hover{background:var(--paper-bg-alt);color:var(--color)}.admin-nav a.active{background:var(--color);color:var(--paper-card)}.admin-nav a i{font-size:12px;width:14px;text-align:center}@media (max-width:767px){.admin-nav{flex-direction:column}.admin-nav a{justify-content:flex-start}}.admin-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-bottom:16px}.admin-stat-card{background:var(--paper-card);border:1px solid var(--border-color);border-radius:8px;padding:10px 12px}.admin-stat-card .stat-value{font-family:var(--font-serif);font-size:1.375rem;font-weight:400;line-height:1.1;color:var(--color)}.admin-stat-card .stat-label{font-family:var(--font-mono);font-size:10px;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em;margin-top:4px}.admin-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:16px 0 12px}.admin-toolbar .form-control{max-width:320px}@media (max-width:767px){.admin-toolbar .form-control{max-width:100%;width:100%}}.pagination-compact{display:inline-flex;align-items:center;gap:6px;flex-wrap:nowrap;font-family:var(--font-mono);font-size:12px;color:var(--ink-muted)}.pagination-compact input{width:60px;text-align:center;flex-shrink:0}.pagination-compact .btn{padding:4px 10px;min-height:34px;background:var(--paper-card);border:1px solid var(--border-color);color:var(--color);flex-shrink:0}.pagination-compact>span{white-space:nowrap}.admin-list-item{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-bottom:1px solid var(--border-color)}.admin-list-item:last-child{border-bottom:none}.admin-list-item .item-main{flex:1;min-width:0}.admin-list-item .item-title{font-size:1rem;font-weight:600;margin-bottom:4px;word-break:break-word}.admin-list-item .item-meta{font-size:.875rem;opacity:.8}.admin-list-item .item-meta span{margin-right:12px;display:inline-block;margin-bottom:2px}.admin-list-item .item-actions{flex-shrink:0}@media (max-width:767px){.admin-list-item{flex-direction:column;gap:8px}.admin-list-item .item-actions{align-self:flex-start}}.status-badge{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:.3px;vertical-align:middle}.status-badge{font-family:var(--font-sans);font-weight:500;letter-spacing:.02em;border:1px solid transparent;text-transform:none;font-size:12px;padding:1px 9px 2px;border-radius:999px}.status-badge.status-ready{background:#e8f3ec;color:#2f7a44;border-color:#cfe6d6}.status-badge.status-error{background:#fbe7e7;color:#b42318;border-color:#f3c7c7}.status-badge.status-download,.status-badge.status-preparing{background:#e4f0ee;color:#1f6a64;border-color:#d4d8fa}.status-badge.status-expired,.status-badge.status-expiring,.status-badge.status-removed,.status-badge.status-removing{background:var(--paper-bg-alt);color:var(--ink-muted);border-color:var(--border-color)}.status-badge.status-active{background:#e8f3ec;color:#2f7a44;border-color:#cfe6d6}.queue-job-card{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:16px 18px;margin-bottom:10px}.queue-job-card .job-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;flex-wrap:wrap;gap:8px}.queue-job-card .job-id{font-family:var(--font-mono);font-size:.9375rem;color:var(--color);word-break:break-all;display:flex;align-items:center;gap:10px}.queue-job-card .job-timestamps{font-family:var(--font-mono);font-size:12px;color:var(--ink-muted);display:flex;flex-wrap:wrap;gap:14px}.queue-job-card .job-actions{display:flex;gap:8px;margin-top:10px}.queue-job-card .job-actions .btn{font-size:12px;padding:4px 12px;background:var(--paper-card);border:1px solid var(--border-color);color:var(--color)}.admin-section-header{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:24px 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border-color)}.admin-section-header h2{margin:0;font-family:var(--font-mono);font-size:11px;font-weight:500;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em}.admin-section-header h2 i{margin-right:6px;color:var(--ink-muted)}.admin-section-header .section-count{background:var(--paper-bg-alt);color:var(--ink-muted);border:1px solid var(--border-color);font-family:var(--font-mono);font-size:11px;padding:1px 10px;border-radius:999px}.user-detail-card{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:22px;margin-bottom:24px}.user-detail-card .user-header{display:flex;align-items:center;gap:16px;margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--border-color);flex-wrap:wrap}.user-detail-card .user-header img{border-radius:50%}.user-detail-card .user-header h2{margin:0;font-family:var(--font-serif);font-weight:400;font-size:1.5rem;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.user-detail-grid{display:grid;grid-template-columns:160px 1fr;gap:10px 20px;font-size:.9375rem}.user-detail-grid .detail-label{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted);white-space:nowrap;padding-top:2px}.user-detail-grid .detail-value{word-break:break-all;color:var(--color)}@media (max-width:767px){.user-detail-grid{grid-template-columns:1fr}.user-detail-grid .detail-label{margin-top:8px;border-top:1px solid var(--border-color);padding-top:8px}.user-detail-grid .detail-label:first-child{border-top:none;margin-top:0;padding-top:0}}.paper-empty{min-height:calc(100vh - 60px);display:flex;align-items:center;justify-content:center;padding:40px 24px}.paper-empty-inner{max-width:560px;text-align:left}.paper-empty-title{font-family:var(--font-serif);font-weight:400;font-size:clamp(2.4rem,6vw,4.4rem);line-height:1.02;letter-spacing:-.025em;margin:18px 0 20px;color:var(--color)}.paper-empty-title em{color:var(--accent);font-style:italic}.paper-empty-lede{font-size:18px;line-height:1.55;color:var(--ink-soft);text-wrap:pretty}.paper-empty-cta{display:flex;gap:10px;margin-top:28px;flex-wrap:wrap}.paper-page{max-width:1100px;margin:0 auto;padding:32px 32px 80px}@media (max-width:991px){.paper-page,.paper-page.container,.paper-page.container-fluid{padding:20px 18px 60px!important}.paper-page .row{margin-left:0;margin-right:0}.paper-page .row>.w-100,.paper-page .row>[class*=col]{padding-left:0;padding-right:0}.navbar.navbar-expand-lg{padding:10px 18px!important}.navbar .navbar-collapse{margin:10px -18px 0;padding:12px 18px 16px;border-top:1px solid var(--border-color);background:var(--header-bg-color)}.navbar .navbar-nav{align-items:stretch!important;gap:2px}.navbar .navbar-nav .nav-item,.navbar .navbar-nav .nav-link{width:100%}.navbar .nav-link{display:flex!important;align-items:center;justify-content:flex-start;margin:0!important;padding:12px 4px!important;border-bottom:1px solid var(--border-color)!important;border-radius:0;font-size:14px;line-height:1.2;gap:0;min-height:44px;box-sizing:border-box}.navbar .nav-link:not(.btn-signin):not(.user-chip){color:var(--color)!important}.navbar .nav-link .fa,.navbar .nav-link .fab,.navbar .nav-link .fas,.navbar .nav-link i{display:inline-flex!important;align-items:center;justify-content:center;width:28px;flex-shrink:0;font-size:16px;line-height:1;margin:0 10px 0 0!important}.navbar .navbar-nav .nav-item:last-child .nav-link,.navbar .navbar-nav>.nav-link:last-child{border-bottom-color:transparent!important}.navbar .nav-link.active{color:var(--color)!important;border-bottom-color:var(--border-color)!important}.navbar .nav-item>.nav-link:not(.btn-signin):not(.user-chip)::before{content:'';display:inline-block;width:28px;margin-right:10px;flex-shrink:0}.navbar .nav-link.nav-icon::before,.navbar .nav-link:has(>i)::before{display:none!important}.navbar .nav-link.nav-icon{width:100%!important;height:auto!important;justify-content:flex-start!important;padding:12px 4px!important}.navbar .nav-link.nav-icon::after{content:attr(title);font-family:var(--font-sans);font-size:14px;color:var(--color)}.navbar .btn-signin{display:inline-flex!important;width:auto!important;align-self:flex-start;justify-content:center;height:40px;padding:0 18px!important;margin:14px 0 0!important;border-radius:8px;border-bottom:none!important}.navbar .btn-signin i{margin:0 8px 0 0!important;width:auto!important}.navbar .user-chip-wrap{width:100%}.navbar .user-chip{display:flex!important;width:100%;margin:0!important;padding:10px 4px!important;background:0 0!important;border:none!important;border-bottom:1px solid var(--border-color)!important;border-radius:0!important;justify-content:flex-start;gap:0;min-height:44px}.navbar .user-chip::before{display:none!important}.navbar .user-chip img{width:28px!important;height:28px!important;margin-right:10px!important;flex-shrink:0}.navbar .user-chip .user-chip-name{font-size:14px;font-weight:500;color:var(--color)!important}.navbar .user-chip.dropdown-toggle::after{margin-left:auto;color:var(--ink-muted)}.navbar .user-chip-wrap .dropdown-menu{position:static!important;float:none;width:100%;margin:0!important;padding:0!important;background:0 0!important;border:none!important;box-shadow:none!important;transform:none!important}.navbar .user-chip-wrap .dropdown-menu .dropdown-item{padding:10px 4px 10px 42px!important;font-size:14px;color:var(--ink-muted)!important;background:0 0!important;border-bottom:1px solid var(--border-color);text-align:left!important}.navbar .user-chip-wrap .dropdown-menu .dropdown-item:last-child{border-bottom:none}.navbar .user-chip-wrap .dropdown-divider{display:none}.navbar-brand{border-right:none!important;padding-right:0!important;margin-right:0!important}.dark-mode .navbar .navbar-collapse{background:var(--header-bg-color);border-top-color:var(--border-color)}.dark-mode .navbar .nav-link{border-bottom-color:var(--border-color)!important}.dark-mode .navbar-toggler .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' d='M4 8h22M4 15h22M4 22h22'/%3E%3C/svg%3E")!important}}.status-pill{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;background:var(--paper-bg-alt);border:1px solid var(--border-color);color:var(--ink-soft);font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase}.paper-progress{position:relative;height:auto;background:0 0;margin:18px 0 8px}.paper-progress::before{content:"";display:block;height:8px;background:var(--paper-bg-alt);border-radius:999px}.paper-progress .paper-progress-bar{position:absolute;top:0;left:0;height:8px;background:var(--color);border-radius:999px;transition:width .4s ease;min-width:4px}.paper-progress .paper-progress-label{display:flex;justify-content:space-between;align-items:center;margin-top:10px;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.paper-progress .paper-progress-pct{color:var(--color)}.paper-progress.paper-progress-ready .paper-progress-bar{background:var(--color)}.paper-error-card{margin-top:18px;padding:20px 22px;background:var(--paper-bg-alt);border:1px solid var(--border-color);border-left:3px solid var(--status-error);border-radius:10px;color:var(--color)}.dark-mode .paper-error-card{border-left-color:var(--status-error)}.paper-ratelimit-card{margin-top:18px;padding:20px 22px;background:var(--paper-bg-alt);border:1px solid var(--border-color);border-left:3px solid var(--status-progress);border-radius:10px;color:var(--color)}.dark-mode .paper-ratelimit-card{border-left-color:var(--status-progress)}.paper-ratelimit-head{display:flex;align-items:flex-start;gap:14px}.paper-ratelimit-head>i{font-size:18px;color:var(--status-progress);margin-top:4px;flex-shrink:0}.dark-mode .paper-ratelimit-head>i{color:var(--status-progress)}.paper-ratelimit-card strong{color:var(--color)}.paper-ratelimit-card{text-align:left;border-left-color:var(--status-progress)}.dark-mode .paper-ratelimit-card{border-left-color:var(--status-progress)}.paper-ratelimit-head>.ui-icon{width:18px;height:18px;margin-top:3px;flex-shrink:0;color:var(--status-progress)}.paper-ratelimit-card .paper-error-title{font-family:var(--font-sans);font-size:17px;font-weight:600}.paper-ratelimit-card .paper-error-msg{font-family:var(--font-sans);white-space:normal;margin-left:32px}.paper-ratelimit-card .paper-error-eyebrow{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none}.status-pill-ratelimit{border-color:var(--status-progress);color:var(--status-progress)}.dark-mode .status-pill-ratelimit{border-color:var(--status-progress);color:var(--status-progress)}.status-ratelimit{background:var(--status-progress)}.dark-mode .status-ratelimit{background:var(--status-progress)}.paper-error-head{display:flex;align-items:flex-start;gap:14px}.paper-error-head>i{font-size:18px;color:var(--status-error);margin-top:4px;flex-shrink:0}.dark-mode .paper-error-head>i{color:var(--status-error)}.paper-error-eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted)}.paper-error-title{font-family:var(--font-serif);font-size:1.375rem;line-height:1.2;margin-top:2px;color:var(--color)}.paper-error-msg{margin:12px 0 0;font-size:14px;line-height:1.55;color:var(--ink-soft);font-family:var(--font-mono);word-break:break-word;white-space:pre-wrap}.paper-error-hints{margin:14px 0 0;padding-left:18px;color:var(--ink-soft);font-size:14px;line-height:1.6}.paper-error-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.paper-detail-grid{display:grid;grid-template-columns:160px 1fr;gap:10px 20px;margin-top:18px;font-size:.9375rem}.paper-detail-grid .detail-label{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted);white-space:nowrap;padding-top:2px}.paper-detail-grid .detail-value{word-break:break-all;color:var(--color)}.paper-detail-grid .detail-value a{color:var(--color);border-bottom:1px solid var(--border-color)}.paper-detail-grid .detail-value a:hover{border-bottom-color:var(--color)}@media (max-width:700px){.paper-detail-grid{grid-template-columns:1fr;gap:4px 0}.paper-detail-grid .detail-label{padding-top:8px}}.paper-support-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin:18px 0 28px}.paper-support-card{display:flex;flex-direction:column;gap:10px;padding:20px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;color:var(--color);text-decoration:none;transition:border-color .15s ease,transform .15s ease}.paper-support-card:hover{border-color:var(--color);text-decoration:none;color:var(--color)}.paper-support-card .paper-support-eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted);display:flex;align-items:center;gap:8px}.paper-support-card p{margin:0;font-size:14px;line-height:1.55;color:var(--ink-soft)}.paper-support-card .paper-support-cta{margin-top:auto;font-size:13px;font-weight:500;color:var(--color);display:inline-flex;align-items:center;gap:6px}.paper-support-card:hover .paper-support-cta i{transform:translateX(2px)}.paper-support-card .paper-support-cta i{transition:transform .15s ease}.pr-page{min-height:100%;background:var(--canvas-bg-color)}.pr-page-inner{padding-top:24px;padding-bottom:60px}.pr-header{margin:6px 0 18px}.pr-title{margin:4px 0 10px;font-size:clamp(1.6rem,3vw,2.4rem);line-height:1.15;word-break:break-word}.pr-header-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-family:var(--font-mono);font-size:12px;color:var(--ink-muted)}.pr-header-meta .pr-meta-item{display:inline-flex;align-items:center;gap:6px}.pr-header-meta .pr-meta-item i{color:var(--ink-muted)}.pr-body-card{margin:18px 0 24px;padding:20px 22px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px}.pr-body-card .paper-section-eyebrow{margin-bottom:12px}.paper-tabs{display:flex;flex-wrap:wrap;gap:0;border-bottom:1px solid var(--border-color);margin:18px 0 0}.paper-tabs .paper-tab{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;background:0 0;border:0;border-bottom:2px solid transparent;font-family:var(--font-sans);font-size:14px;font-weight:500;color:var(--ink-muted);cursor:pointer;transition:color .15s ease,border-color .15s ease;margin-bottom:-1px}.paper-tabs .paper-tab:hover{color:var(--color)}.paper-tabs .paper-tab.active{color:var(--color);border-bottom-color:var(--color)}.paper-tabs .paper-tab i{color:inherit;opacity:.85}.paper-tabs .paper-tab:active,.paper-tabs .paper-tab:focus,.paper-tabs .paper-tab:focus-visible{outline:0;box-shadow:none}.paper-tabs .paper-tab:focus-visible{color:var(--color);background:var(--hover-bg-color);border-radius:6px 6px 0 0}.pr-diff{margin:16px 0 28px;display:flex;flex-direction:column;gap:16px}.diff-file-block{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;overflow:hidden}.diff-file-header{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--paper-bg-alt);border-bottom:1px solid var(--border-color);font-family:var(--font-mono);font-size:13px;color:var(--color)}.diff-file-icon{color:var(--ink-muted);flex-shrink:0}.diff-file-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-break:break-all}.diff-file-status{flex-shrink:0;padding:2px 8px;border-radius:999px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--border-color);color:var(--ink-muted);background:var(--paper-card)}.diff-file-status-added{color:#2f6b3e;border-color:rgba(47,107,62,.35);background:rgba(47,107,62,.08)}.diff-file-status-deleted{color:var(--status-error);border-color:rgba(161,58,46,.35);background:rgba(161,58,46,.08)}.diff-file-status-renamed{color:var(--status-progress);border-color:rgba(138,107,30,.35);background:rgba(138,107,30,.08)}.dark-mode .diff-file-status-added{color:#a7e2a7;border-color:rgba(167,226,167,.35);background:rgba(167,226,167,.08)}.dark-mode .diff-file-status-deleted{color:var(--status-error);border-color:rgba(255,139,123,.35);background:rgba(255,139,123,.08)}.dark-mode .diff-file-status-renamed{color:var(--status-progress);border-color:rgba(255,211,122,.35);background:rgba(255,211,122,.08)}.diff-file-table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:13px;line-height:1.55;table-layout:fixed}.diff-file-table tr.diff-row{vertical-align:top}.diff-file-table .diff-gutter{width:48px;padding:0 10px;text-align:right;color:var(--ink-muted);background:var(--paper-bg-alt);border-right:1px solid var(--border-color);user-select:none;font-variant-numeric:tabular-nums;vertical-align:top;white-space:nowrap}.diff-file-table .diff-gutter-new{border-right:1px solid var(--border-color)}.diff-file-table .diff-sign{width:18px;padding:0 6px;text-align:center;color:var(--ink-muted);background:var(--paper-bg-alt);user-select:none;vertical-align:top}.diff-file-table .diff-code{padding:1px 12px;white-space:pre-wrap;word-break:break-word;color:var(--color)}.diff-row-hunk td{background:var(--paper-bg-alt)!important;color:var(--ink-muted);border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);font-size:12px;letter-spacing:.02em;padding-top:6px;padding-bottom:6px}.diff-row-hunk .diff-code{color:var(--ink-muted)}.diff-row-add .diff-code{background:rgba(47,107,62,.1);color:#1f4a2a}.diff-row-add .diff-gutter,.diff-row-add .diff-sign{background:rgba(47,107,62,.06);color:#2f6b3e}.diff-row-remove .diff-code{background:rgba(161,58,46,.1);color:#6e1f1a}.diff-row-remove .diff-gutter,.diff-row-remove .diff-sign{background:rgba(161,58,46,.06);color:var(--status-error)}.dark-mode .diff-row-add .diff-code{background:rgba(167,226,167,.1);color:#c9f0c9}.dark-mode .diff-row-add .diff-gutter,.dark-mode .diff-row-add .diff-sign{background:rgba(167,226,167,.06);color:#a7e2a7}.dark-mode .diff-row-remove .diff-code{background:rgba(255,139,123,.1);color:#ffc9c0}.dark-mode .diff-row-remove .diff-gutter,.dark-mode .diff-row-remove .diff-sign{background:rgba(255,139,123,.06);color:var(--status-error)}@media (max-width:700px){.diff-file-table{font-size:12px}.diff-file-table .diff-gutter{width:36px;padding:0 6px}.diff-file-table .diff-sign{width:14px;padding:0 4px}.diff-file-table .diff-code{padding:1px 8px}}.pr-comments{list-style:none;margin:16px 0 28px;padding:0;display:flex;flex-direction:column;gap:12px}.pr-comment{padding:16px 18px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px}.pr-comment-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid var(--border-color)}.pr-comment-author{font-weight:600;color:var(--color);font-size:14px;display:inline-flex;align-items:center;gap:6px}.pr-comment-author i{color:var(--ink-muted);font-size:12px}.pr-comment-date{font-family:var(--font-mono);font-size:12px;color:var(--ink-muted);letter-spacing:.02em}.pr-comment-body{color:var(--color);font-size:14px;line-height:1.6}.pr-comment-body :last-child{margin-bottom:0}@media (max-width:700px){.pr-page-inner{padding-top:14px;padding-bottom:40px}.pr-body-card{padding:14px 14px;border-radius:8px}.pr-comment{padding:12px 14px}.paper-tabs .paper-tab{padding:10px 12px;font-size:13px}.pr-diff pre{font-size:12px;padding:12px}}.toast{background-color:var(--paper-card)!important;color:var(--color)!important;border:1px solid var(--border-color)!important;border-radius:10px!important;box-shadow:0 8px 24px rgba(0,0,0,.08);backdrop-filter:none;min-width:280px;max-width:calc(100vw - 24px)}.toast .toast-header{background:0 0!important;color:var(--color)!important;border-bottom:1px solid var(--border-color)!important;font-family:var(--font-sans);padding:10px 12px}.toast .toast-header strong{font-weight:600;color:var(--color);letter-spacing:.01em}.toast .toast-header .close{color:var(--ink-muted)!important;text-shadow:none;opacity:.9;font-size:1.25rem}.toast .toast-header .close:hover{color:var(--color)!important;opacity:1}.toast .toast-body{color:var(--color)!important;padding:12px;font-size:14px;line-height:1.45}.dark-mode .toast{box-shadow:0 8px 24px rgba(0,0,0,.5)}.paper-crumbs{font-family:var(--font-sans);font-size:12px;color:var(--ink-muted);letter-spacing:0}.paper-crumbs .here,.paper-crumbs a{color:var(--color);text-decoration:none}.paper-page-title{font-family:var(--font-sans);font-weight:600;font-size:32px;line-height:1.2;letter-spacing:-.035em;margin:8px 0 6px;color:var(--color)}.paper-page-title em{color:inherit;font-style:normal}.paper-page-lede{color:var(--ink-soft);font-size:16px;max-width:640px;line-height:1.55}.paper-meta-rule{display:flex;flex-wrap:wrap;gap:16px 24px;align-items:center;margin:22px 0 18px;padding:12px 0;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);font-family:var(--font-mono);font-size:12px;color:var(--ink-muted);letter-spacing:.02em}.paper-meta-rule b{color:var(--color);font-weight:500}.paper-card{background:var(--paper-card,#fff);border:1px solid var(--border-color);border-radius:10px;padding:20px 22px}.dark-mode .paper-card{background:var(--admin-stat-bg)}.paper-section-eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted);font-weight:500;margin-bottom:10px;display:block}.paper-section-title{font-family:var(--font-serif);font-weight:400;font-size:22px;letter-spacing:-.01em;margin:0 0 8px}.paper-kbd{display:inline-block;font-family:var(--font-mono);font-size:11px;padding:1px 6px;border:1px solid var(--border-color);border-bottom-width:2px;border-radius:3px;background:var(--paper-card,#fff);color:var(--color)}.paper-pill{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11px;padding:2px 8px;border:1px solid var(--border-color);border-radius:999px;color:var(--ink-soft);background:var(--paper-card,#fff);letter-spacing:.04em}.paper-pill.accent{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.paper-pill.good{border-color:#2f6b3e;color:#2f6b3e}.paper-pill.warn{border-color:var(--status-progress);color:var(--status-progress)}.paper-pill.bad{border-color:var(--status-error);color:var(--status-error)}.paper-row{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:start;padding:18px 0;border-bottom:1px solid var(--border-color)}.paper-row:first-child{border-top:1px solid var(--border-color)}.paper-row .row-title{font-family:var(--font-serif);font-size:20px;letter-spacing:-.01em;line-height:1.2}.paper-row .row-title a{color:var(--color)}.paper-row .row-meta{font-family:var(--font-mono);font-size:11px;color:var(--ink-muted);letter-spacing:.03em;margin-top:6px;display:flex;flex-wrap:wrap;gap:14px}.paper-row .row-actions{display:flex;gap:6px;flex-shrink:0}.paper-form-step{display:grid;grid-template-columns:48px 1fr;gap:20px;padding:22px 0;border-bottom:1px solid var(--border-color)}.paper-form-step:first-child{border-top:1px solid var(--border-color)}.paper-form-step .step-num{font-family:var(--font-mono);font-size:12px;color:var(--ink-muted);padding-top:4px;letter-spacing:.02em}.paper-form-step .step-title{font-family:var(--font-serif);font-size:22px;letter-spacing:-.01em;line-height:1.2;margin-bottom:4px}.paper-form-step .step-sub{color:var(--ink-soft);font-size:14px;margin-bottom:14px;text-wrap:pretty}.paper-field-label{font-family:var(--font-sans);font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--color);margin-bottom:6px;display:block}.paper-switch-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;gap:16px}.paper-switch-row+.paper-switch-row{border-top:1px dashed var(--border-soft)}.paper-switch-row .sw-label{font-weight:500}.paper-switch-row .sw-sub{display:block;font-size:13px;color:var(--ink-muted);margin-top:2px}.paper-page .custom-select,.paper-page .form-control{border-radius:6px;border-color:var(--border-color);font-size:14px;padding:8px 12px;height:auto;background:var(--input-bg);color:var(--input-color)}.paper-page .custom-select:focus,.paper-page .form-control:focus{color:var(--input-color);background:var(--input-bg);border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.custom-select:focus,.form-control:focus,input:focus,select:focus,textarea:focus{color:var(--input-color)!important;background-color:var(--input-bg)!important}.form-control::selection,input::selection,textarea::selection{background:var(--accent-soft);color:var(--input-color)}.dark-mode .form-control::selection,.dark-mode input::selection,.dark-mode textarea::selection{background:rgba(124,199,190,.3);color:var(--input-color)}.btn.btn-ink{background:var(--color);color:var(--canvas-bg-color);border:1px solid var(--color);font-weight:500;border-radius:6px;padding:8px 14px}.btn.btn-ink:hover{background:var(--primary-hover-bg);color:var(--canvas-bg-color);border-color:var(--primary-hover-bg)}.btn.btn-accent{background:var(--accent);color:#fff;border:1px solid var(--accent);font-weight:500;border-radius:6px}.btn.btn-accent:hover{background:#17544f;border-color:#17544f;color:#fff}.paper-page .dashboard-filter-row{display:flex;align-items:center;gap:10px;padding:14px 0;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);margin:18px 0 0;flex-wrap:wrap}.paper-page .dashboard-filter-row .form-control{height:38px;background:var(--paper-card)}.paper-page .dashboard-filter-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.paper-page .dashboard-filter-row .btn-group .btn,.paper-page .dashboard-filter-row .dropdown-toggle{background:var(--paper-card);border:1px solid var(--border-color);color:var(--color);height:38px;padding:0 14px;font-size:14px;font-weight:500;border-radius:var(--radius-control,6px);display:inline-flex;align-items:center;gap:6px;line-height:1}.paper-page .dashboard-filter-row .dropdown-toggle .filter-btn-label{color:var(--ink-muted);font-weight:500}.paper-page .dashboard-filter-row .dropdown-toggle .filter-btn-label::after{content:"·";margin-left:6px;color:var(--ink-faint)}.paper-page .dashboard-filter-row .dropdown-toggle .filter-btn-value{font-weight:500}.paper-page .dashboard-filter-row .dropdown-toggle .fas{font-size:11px;color:var(--ink-muted)}.paper-page .dashboard-filter-row .btn-group .btn:hover,.paper-page .dashboard-filter-row .dropdown-toggle:hover{background:var(--hover-bg-color);border-color:var(--border-color);color:var(--color)}.paper-page .dashboard-filter-row .btn-group{gap:0}.paper-page .dashboard-filter-row .btn-group .btn{border-radius:0;border-right-width:0}.paper-page .dashboard-filter-row .btn-group .btn:first-child{border-top-left-radius:6px;border-bottom-left-radius:6px}.paper-page .dashboard-filter-row .btn-group .btn:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px;border-right-width:1px}.paper-page .dashboard-filter-row .btn-group .btn.btn-primary{background:var(--color);color:var(--canvas-bg-color);border-color:var(--color)}.paper-page .dashboard-filter-row .search-wrap{flex:1 1 280px;min-width:220px}.paper-page .quota-row{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin:24px 0 0;padding:0;background:0 0;border:none;border-radius:0}.paper-page .quota-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted);opacity:1}.paper-page .quota-value{font-family:var(--font-mono);font-size:13px;font-variant-numeric:tabular-nums;color:var(--color)}.paper-page .quota-value .quota-unlimited-tag{font-family:var(--font-sans);font-size:12px;color:var(--ink-muted);margin-left:4px}.paper-page .quota-track{height:6px;background:var(--paper-bg-alt);border:1px solid var(--border-color);border-radius:999px;overflow:hidden;width:100%;min-width:0}.paper-page .quota-track .quota-fill{height:100%;min-width:2px;border-radius:999px;background:var(--color);transition:width .3s ease}.paper-page .quota-track.quota-warn .quota-fill{background:var(--status-progress)}.paper-page .quota-track.quota-danger .quota-fill{background:var(--status-error)}.paper-page .quota-track.quota-unlimited{background:repeating-linear-gradient(-45deg,var(--paper-bg-alt) 0 4px,var(--border-soft,var(--border-color)) 4px 6px)}.paper-page .repo-list{margin-top:8px}.paper-page .repo-list-item{padding:20px 0;gap:16px;border-bottom:1px solid var(--border-soft,var(--border-color))}.paper-page .repo-list-item:first-child{border-top:none}.paper-page .repo-list-item-header{gap:10px;margin-bottom:6px}.paper-page .repo-name{font-family:var(--font-mono);font-size:15px;color:var(--color)}.paper-page .repo-source{font-size:13px;color:var(--ink-soft);opacity:1;gap:10px}.paper-page .repo-source a{color:var(--ink-soft);border-bottom:1px dotted var(--border-color)}.paper-page .repo-source a:hover{color:var(--color)}.paper-page .repo-meta{font-family:var(--font-mono);font-size:12px;color:var(--ink-muted);opacity:1;gap:16px;margin-top:10px}.paper-page .type-badge{font-family:var(--font-mono);font-size:11px;padding:3px 8px;letter-spacing:.1em}.paper-page .repo-list-item-actions .dropdown-toggle{background:var(--paper-card);border:1px solid var(--border-color);color:var(--color);border-radius:6px;font-size:13px;padding:6px 12px;height:auto}.paper-settings{max-width:1180px;margin:0 auto;padding:48px 32px 80px}.paper-settings .paper-page-title{max-width:14em}.paper-settings-body{display:grid;grid-template-columns:220px 1fr;gap:60px;margin-top:32px;border-top:1px solid var(--border-color);padding-top:28px}.paper-settings-toc{position:sticky;top:32px;align-self:start}.paper-settings-toc-head{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted);margin-bottom:12px}.paper-settings-toc nav{display:flex;flex-direction:column;gap:2px}.paper-settings-toc nav a{padding:8px 0 8px 14px;border-left:2px solid transparent;color:var(--ink-soft);font-size:14px;text-decoration:none}.paper-settings-toc nav a.active,.paper-settings-toc nav a:hover{color:var(--color);border-left-color:var(--color)}.paper-settings-main{min-width:0;max-width:720px}.paper-settings-section{padding:28px 0;border-bottom:1px solid var(--border-soft,var(--border-color))}.paper-settings-section:first-child{padding-top:0}.paper-settings-section:last-of-type{border-bottom:none}.paper-settings-section .form-group{margin-bottom:18px}.paper-settings-section .form-check{padding:10px 0 10px 28px;border-bottom:1px solid var(--border-soft,var(--border-color))}.paper-settings-section .form-check:last-child{border-bottom:none}.paper-settings-section .form-check-label{font-family:var(--font-sans);font-size:14px;font-weight:500;color:var(--color);cursor:pointer}.paper-settings-section .form-check-input{cursor:pointer;width:16px;height:16px;margin-top:3px;margin-left:-28px;accent-color:var(--color)}.paper-settings-section .form-text{color:var(--ink-soft);font-size:13px;margin-top:4px;max-width:48em}.paper-settings-section .paper-section-copy{margin:-4px 0 14px}.paper-settings-footer{padding-top:24px;display:flex;flex-direction:column;gap:14px}.paper-settings-footer .btn-ink{align-self:flex-start}.paper-settings-actions{display:flex;align-items:center;flex-wrap:wrap;gap:14px}.paper-settings-hint{font-size:13px;color:var(--ink-muted)}.paper-inline-alert{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:var(--radius-control,6px);border:1px solid var(--border-color);background:var(--paper-bg-alt);font-size:13px;color:var(--color)}.paper-inline-alert i{margin-top:2px;color:var(--ink-muted)}.paper-inline-alert-error{border-color:var(--status-error);background:var(--status-error-soft)}.paper-inline-alert-error i{color:var(--status-error)}.paper-account-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--border-color);border-radius:var(--radius-surface,10px);background:var(--paper-card);margin-bottom:20px}.paper-account-card img{flex-shrink:0}.paper-account-identity{flex:1 1 auto;min-width:0}.paper-account-name{font-family:var(--font-mono);font-size:14px;font-weight:500;color:var(--color)}.paper-account-meta{font-size:13px;color:var(--ink-muted);margin-top:2px}.paper-danger-zone{padding:16px;border:1px solid var(--status-error);border-radius:var(--radius-surface,10px);background:var(--status-error-soft)}.paper-danger-head{font-weight:600;font-size:14px;color:var(--status-error);margin-bottom:6px}.paper-danger-copy{font-size:13px;color:var(--ink-soft);max-width:52em;margin-bottom:12px}.paper-danger-zone .paper-inline-alert{margin-bottom:12px}.btn.btn-outline-danger{background:0 0;color:var(--status-error);border:1px solid var(--status-error);font-weight:500;border-radius:var(--radius-control,6px);padding:8px 14px}.btn.btn-outline-danger:hover{background:var(--status-error);color:#fff;border-color:var(--status-error)}.navbar .user-menu{min-width:260px}.navbar .user-menu .dropdown-item{display:flex;align-items:flex-start;gap:10px;padding:8px 10px!important}.navbar .user-menu .dropdown-item i{width:16px;margin-top:3px;font-size:13px;color:var(--ink-muted);text-align:center}.navbar .user-menu .dropdown-item span{display:flex;flex-direction:column;line-height:1.3}.navbar .user-menu .dropdown-item small{font-size:12px;color:var(--ink-muted)}.navbar .user-menu .dropdown-header{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);padding:8px 10px 6px}.paper-field-label{font-family:var(--font-sans);font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--color);margin-bottom:6px;display:block}@media (max-width:900px){.paper-settings-body{grid-template-columns:1fr;gap:24px}.paper-settings-toc{position:static}.paper-settings-toc nav{flex-direction:row;flex-wrap:wrap;gap:8px}.paper-settings-toc nav a{border-left:none;border-bottom:2px solid transparent;padding:4px 0}.paper-settings-toc nav a.active,.paper-settings-toc nav a:hover{border-bottom-color:var(--color);border-left:none}}.paper-table{display:block;margin-top:20px;background:0 0;border:none;border-top:1px solid var(--border-color);border-radius:0;overflow:visible}.paper-table .paper-table-head,.paper-table .paper-table-row{display:grid;grid-template-columns:minmax(280px,2.4fr) minmax(140px,1fr) 140px 90px 140px 52px;align-items:center;gap:18px;padding:12px 4px}.paper-table.paper-table-conferences .paper-table-head,.paper-table.paper-table-conferences .paper-table-row{grid-template-columns:minmax(280px,2.4fr) 140px 90px 220px 52px}.paper-table.paper-table-repos .paper-table-head,.paper-table.paper-table-repos .paper-table-row{grid-template-columns:minmax(280px,2.4fr) minmax(140px,1fr) 90px 140px 52px}.paper-table.paper-table-repos.has-bulk .paper-table-head,.paper-table.paper-table-repos.has-bulk .paper-table-row{grid-template-columns:28px minmax(280px,2.4fr) minmax(140px,1fr) 90px 140px 52px;gap:12px}.paper-table .admin-users-row{grid-template-columns:28px minmax(280px,2.4fr) 90px 120px 100px 52px!important;gap:12px!important}.paper-table.paper-table-dashboard .paper-table-head,.paper-table.paper-table-dashboard .paper-table-row{grid-template-columns:minmax(320px,3fr) 190px 90px 170px 52px;gap:20px;padding:8px 4px}.paper-table.paper-table-dashboard .cell-anon .anon-text{gap:2px}.paper-table.paper-table-dashboard .cell-anon .repo-name{padding:0}.paper-table .paper-table-head{background:0 0;border-bottom:1px solid var(--border-color);font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-muted);padding-top:8px;padding-bottom:8px}.paper-table .paper-table-head .sortable{cursor:pointer;user-select:none;display:inline-flex;align-items:center;gap:6px;background:0 0;border:none;padding:2px 0;margin:0;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;border-radius:4px}.paper-table .paper-table-head .sortable:hover{color:var(--color)}.paper-table .paper-table-head .sortable.active{color:var(--color)}.paper-table .paper-table-head .sortable i{font-size:10px}.paper-table .paper-table-head .num,.paper-table .paper-table-row .num{text-align:right}.paper-table .paper-table-head .num .sortable{flex-direction:row-reverse}.paper-table .paper-table-row{border-top:1px solid var(--border-soft,var(--border-color));font-size:14px;transition:background-color .12s ease}.paper-table .paper-table-row:hover{background:var(--hover-bg-color)}.paper-table .paper-table-row.row-clickable{cursor:pointer}.paper-table .paper-table-row.repo-inactive>:not(.cell-actions){opacity:.55}.paper-table .paper-table-row.repo-error{background:var(--status-error-soft);border-left:2px solid var(--status-error);padding-left:6px}.paper-table .paper-table-row.repo-error:hover{background:var(--status-error-soft-hover)}.cell-status .status-sub.status-sub-error,.paper-table .cell-status .status-sub-error{color:var(--status-error)}.paper-table .cell-status .status-sub-warn{color:var(--status-progress)}.paper-table .cell-anon{display:flex;align-items:center;gap:12px;min-width:0}.paper-table .cell-anon .type-badge{flex-shrink:0;min-width:52px;justify-content:center}.paper-table .cell-anon .anon-text{min-width:0;display:flex;flex-direction:column;gap:3px}.paper-table .cell-anon .anon-title{display:flex;align-items:center;gap:8px;min-width:0}.paper-table .cell-anon .anon-title .type-badge{margin-left:0}.paper-table .cell-anon .repo-name{font-family:var(--font-mono);font-size:14px;color:var(--color);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;max-width:100%;padding:2px 0}.paper-table .cell-anon .repo-name-static{color:var(--ink-muted);font-style:italic}.paper-table .cell-anon .anon-sub{font-family:var(--font-sans);font-size:13px;color:var(--ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:10px;min-width:0}.paper-table .cell-anon .anon-sub .anon-source{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-table .cell-anon .anon-sub .conf-tag{flex:0 1 auto;min-width:72px;max-width:50%}.paper-table .cell-anon .anon-sub a{color:var(--ink-muted);border-bottom:1px dotted var(--border-color);padding:4px 0;margin:-4px 0}.paper-table .cell-anon .anon-sub a:hover{color:var(--color)}.paper-table .cell-anon .anon-sub .commit-hash{font-family:var(--font-mono);font-size:12px}.paper-table .cell-conf{font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-table .cell-conf span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-table .cell-status{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;font-size:14px;color:var(--color);min-width:0}.paper-table .cell-status .status-line{display:inline-flex;align-items:center;gap:8px}.paper-table .cell-status .status-sub{flex-basis:100%;font-family:var(--font-sans);font-size:13px;line-height:1.3;color:var(--ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-table .cell-views{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--color)}.paper-table .cell-expires{font-family:var(--font-sans);font-size:13px;color:var(--ink-soft)}.paper-table .cell-expires .expires-never{color:var(--ink-muted)}.paper-table .cell-expires .expires-past{color:var(--ink-muted)}.paper-table .empty-dash{color:var(--ink-faint)}.paper-table .cell-actions{display:flex;justify-content:flex-end}.status-dot{width:8px;height:8px;border-radius:999px;display:inline-block;flex-shrink:0;background:var(--status-inactive)}.status-dot.status-ready{background:var(--status-ready)}.status-dot.status-error{background:var(--status-error)}.status-dot.status-preparing,.status-dot.status-progress{background:var(--status-progress)}.status-dot.status-expired,.status-dot.status-removed{background:var(--status-inactive)}.dashboard-page{padding-bottom:96px}.dashboard-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:12px;font-size:13px;color:var(--ink-muted)}.dashboard-meta .dashboard-count{font-variant-numeric:tabular-nums}.btn-link-inline{background:0 0;border:none;padding:2px 4px;margin:-2px 0;font:inherit;color:var(--link-color);cursor:pointer;border-radius:4px}.btn-link-inline:hover{color:var(--link-hover-color);text-decoration:underline}.btn.btn-outline-ink{background:0 0;color:var(--color);border:1px solid var(--border-color);font-weight:500;border-radius:var(--radius-control,6px);padding:8px 14px}.btn.btn-outline-ink:hover{background:var(--hover-bg-color);color:var(--color);border-color:var(--ink-faint)}.paper-page .dropdown-menu .dropdown-item-danger,.paper-page .dropdown-menu .dropdown-item-danger i{color:var(--status-error)}.paper-page .dropdown-menu .dropdown-item-danger:focus,.paper-page .dropdown-menu .dropdown-item-danger:hover{background:var(--status-error-soft-hover);color:var(--status-error)}.paper-page .dropdown-menu button.dropdown-item{width:100%;text-align:left;background:0 0;border:none}.paper-page .dropdown-menu .dropdown-divider{border-top-color:var(--border-soft,var(--border-color));margin:4px 0}.paper-table .paper-table-skeleton{pointer-events:none}.skeleton{display:block;background:var(--paper-bg-alt);border-radius:4px;position:relative;overflow:hidden}.skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,var(--hover-bg-color),transparent);animation:skeleton-shimmer 1.4s infinite}.skeleton-line{height:12px}.skeleton-line+.skeleton-line{margin-top:8px}.skeleton-line-sm{height:10px}.skeleton-badge{width:52px;height:22px;border-radius:999px;flex-shrink:0}@keyframes skeleton-shimmer{to{transform:translateX(100%)}}@media (prefers-reduced-motion:reduce){.skeleton::after{animation:none}}.paper-table .paper-table-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:56px 20px;color:var(--ink-muted);text-align:center;border-top:1px solid var(--border-soft,var(--border-color))}.paper-table .paper-table-empty>i{font-size:1.5rem;color:var(--ink-faint)}.paper-table .paper-table-empty-actions{display:flex;gap:8px;margin-top:8px}.bulk-bar{display:flex;align-items:center;gap:8px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:8px;padding:8px 12px;margin:8px 0}.paper-page.admin-page .paper-page-title{font-size:1.5rem;margin:4px 0}.paper-page.admin-page .paper-page-lede{display:none}.paper-page.admin-page .paper-crumbs{margin-bottom:4px}.paper-page.admin-page .admin-nav{margin:6px 0 12px}.admin-filter-toolbar{display:flex;flex-direction:column;gap:6px;margin:8px 0 12px;position:sticky;top:0;z-index:4;background:var(--canvas-bg-color);padding:6px 0;border-bottom:1px solid var(--border-soft,var(--border-color));box-shadow:0 1px 0 var(--canvas-bg-color)}@media (max-width:900px){.admin-filter-toolbar{position:static;box-shadow:none}}.admin-filter-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.admin-filter-row .search-wrap{flex:1;min-width:220px}.admin-filter-row .search-wrap .form-control{height:34px}.admin-filter-inline{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--ink-muted)}.admin-filter-inline>label{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin:0;white-space:nowrap}.admin-filter-inline .form-control-sm{height:28px;padding:2px 8px;font-size:12px}.admin-filter-inline input[type=search].form-control-sm,.admin-filter-inline input[type=text].form-control-sm{width:130px}.admin-filter-inline input[type=date].form-control-sm{width:130px}.admin-filter-inline select.form-control-sm{width:auto;min-width:88px}.admin-filter-inline .arrow{color:var(--ink-muted);font-size:11px}.admin-filter-spacer{flex:1}.admin-active-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px;color:var(--ink-muted)}.admin-active-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 4px 2px 10px;border:1px solid var(--border-color);border-radius:999px;background:var(--hover-bg-color);font-size:12px;color:var(--color)}.admin-active-chip .key{color:var(--ink-muted);font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em}.admin-active-chip button{background:0 0;border:none;cursor:pointer;padding:0 4px;color:var(--ink-muted);font-size:12px;border-radius:50%}.admin-active-chip button:hover{color:#b42318}.admin-search-hint{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-family:var(--font-mono);font-size:11px;color:var(--ink-muted);pointer-events:none;border:1px solid var(--border-color);border-radius:4px;padding:1px 5px;background:var(--paper-card)}.admin-filter-row .search-wrap{position:relative}.admin-filter-row .search-wrap .form-control{padding-right:40px}.paper-table-row.row-selected{background:rgba(47,122,68,.06)}.queue-state-pills{display:inline-flex;gap:6px;margin-left:8px;flex-wrap:wrap}.queue-state-pills .pill{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--border-color);background:var(--paper-card);color:var(--ink-muted)}.queue-state-pills .pill-active{color:var(--status-progress);border-color:rgba(196,138,46,.4)}.queue-state-pills .pill-failed{color:#b42318;border-color:rgba(180,35,24,.4)}.queue-state-pills .pill-completed{color:#2f7a44;border-color:rgba(47,122,68,.3)}.queue-state-pills .pill-waiting{color:var(--ink-soft)}.queue-state-pills .pill-delayed{color:var(--ink-muted)}.admin-summary{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0 12px;font-size:13px}.admin-summary .summary-total{font-family:var(--font-serif);font-size:1rem;color:var(--color);margin-right:8px}.admin-summary .summary-meta{color:var(--ink-muted);font-size:12px;margin-right:8px}.admin-summary .summary-pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;border:1px solid var(--border-color);background:var(--paper-card);color:var(--ink-muted);cursor:pointer;font-size:12px;user-select:none;transition:background-color .1s,border-color .1s}.admin-summary .summary-pill:hover{background:var(--hover-bg-color)}.admin-summary .summary-pill .count{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--color)}.admin-summary .summary-pill.active{background:var(--primary-bg);color:var(--primary-color);border-color:var(--primary-bg)}.admin-summary .summary-pill.active .count{color:inherit}.admin-summary .summary-pill.error .count{color:#b42318}.admin-summary .summary-pill.warn .count{color:var(--status-progress)}.admin-summary .summary-pill.ok .count{color:#2f7a44}.dark-mode .admin-summary .summary-pill.error .count{color:#f08a82}.dark-mode .admin-summary .summary-pill.warn .count{color:var(--status-progress)}.dark-mode .admin-summary .summary-pill.ok .count{color:#7dc894}.dark-mode .queue-state-pills .pill-active{color:var(--status-progress);border-color:rgba(232,185,112,.4)}.dark-mode .queue-state-pills .pill-failed{color:#f08a82;border-color:rgba(240,138,130,.4)}.dark-mode .queue-state-pills .pill-completed{color:#7dc894;border-color:rgba(125,200,148,.3)}.job-progress{flex:1;height:6px;background:var(--border-soft,var(--border-color));border-radius:999px;overflow:hidden;margin-left:12px;max-width:200px}.job-progress-bar{height:100%;background:#2f7a44;transition:width .3s}.paper-table-empty{padding:48px 4px;text-align:center;color:var(--ink-muted);display:flex;flex-direction:column;align-items:center;gap:8px;border-top:1px solid var(--border-soft,var(--border-color))}.paper-table-empty>i{font-size:1.5rem}.q-header{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:4px}.q-header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.q-range-btns{display:inline-flex;border:1px solid var(--border-color);border-radius:8px;overflow:hidden}.q-range-btns .btn{border:none;border-radius:0;padding:5px 14px;font-family:var(--font-mono);font-size:11px;color:var(--ink-muted);background:var(--paper-card)}.q-range-btns .btn+.btn{border-left:1px solid var(--border-color)}.q-range-btns .btn.active{background:var(--color);color:var(--paper-card)}.q-cards{display:flex;gap:10px;margin:16px 0;flex-wrap:wrap}.q-card{flex:1;min-width:140px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:14px 16px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.q-card:hover{border-color:var(--ink-muted)}.q-card.selected{border-color:var(--color);box-shadow:0 0 0 1px var(--color)}.q-card-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.q-dot{width:8px;height:8px;border-radius:50%;background:#2f7a44;flex-shrink:0}.q-dot-red{background:#b42318}.dark-mode .q-dot{background:#7dc894}.dark-mode .q-dot-red{background:#f08a82}.q-card-name{font-family:var(--font-mono);font-size:12px;font-weight:500;color:var(--ink-muted);letter-spacing:.04em}.q-card-count{font-family:var(--font-serif);font-size:2rem;font-weight:400;line-height:1.1;color:var(--color);margin-bottom:6px}.q-card-sub{font-family:var(--font-mono);font-size:11px;color:var(--ink-muted);letter-spacing:.04em}.q-card-bar{height:4px;background:var(--border-color);border-radius:2px;overflow:hidden;margin-top:6px}.q-card-bar-fill{height:100%;background:#1f6a64;border-radius:2px;transition:width .3s}.dark-mode .q-card-bar-fill{background:#7cc7be}.q-detail{display:grid;grid-template-columns:1fr 320px;gap:16px;margin-bottom:20px}.q-throughput{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:16px 20px}.q-chart-wrap{position:relative}.q-throughput canvas{width:100%;display:block}.q-chart-tooltip{position:absolute;pointer-events:none;background:var(--paper-card);border:1px solid var(--border-color);border-radius:6px;padding:6px 10px;font-family:var(--font-mono);font-size:11px;line-height:1.6;white-space:nowrap;box-shadow:0 2px 8px rgba(0,0,0,.15);z-index:10}.q-chart-tooltip .q-tip-time{color:var(--ink-muted);margin-bottom:2px}.q-chart-tooltip .q-tip-completed{color:#1f6a64}.q-chart-tooltip .q-tip-failed{color:#b42318}.dark-mode .q-chart-tooltip .q-tip-completed{color:#7cc7be}.dark-mode .q-chart-tooltip .q-tip-failed{color:#f08a82}.q-chart-crosshair{position:absolute;top:0;width:1px;height:100%;background:var(--ink-muted);opacity:.3;pointer-events:none;z-index:9}.q-stats-panel{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:16px 20px;display:flex;flex-direction:column}.q-section-label{font-family:var(--font-mono);font-size:11px;font-weight:500;color:var(--ink-muted);text-transform:lowercase;letter-spacing:.04em;margin-bottom:14px}.q-section-right{float:right;text-transform:uppercase;font-size:10px;letter-spacing:.08em}.q-legend-completed{color:#1f6a64}.q-legend-failed{color:#b42318;margin-left:8px}.q-legend-exec{color:var(--status-progress);margin-left:8px;letter-spacing:2px}.dark-mode .q-legend-completed{color:#7cc7be}.dark-mode .q-legend-failed{color:#f08a82}.dark-mode .q-legend-exec{color:var(--status-progress)}.q-chart-tooltip .q-tip-exec{color:var(--status-progress)}.dark-mode .q-chart-tooltip .q-tip-exec{color:var(--status-progress)}.q-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 20px;flex:1}.q-stat-label{font-family:var(--font-mono);font-size:10px;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:2px}.q-stat-value{font-family:var(--font-serif);font-size:1.25rem;font-weight:400;color:var(--color);line-height:1.2}.q-stats-actions{display:flex;gap:8px;margin-top:16px;padding-top:14px;border-top:1px solid var(--border-color)}.q-stats-actions .btn{font-family:var(--font-mono);font-size:11px;padding:6px 14px;border-radius:8px;background:var(--paper-card);border:1px solid var(--border-color);color:var(--color)}.q-jobs{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:16px 20px}.q-jobs-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:12px}.q-state-filters{display:inline-flex;gap:6px;flex-wrap:wrap}.q-state-toggle{cursor:pointer;display:inline-flex;align-items:center}.q-state-toggle input{display:none}.q-state-chip{font-family:var(--font-mono);font-size:11px;padding:3px 10px;border-radius:10px;border:1px solid var(--border-color);background:var(--paper-card);color:var(--ink-muted);transition:opacity .15s,background .15s;text-transform:capitalize}.q-state-toggle input:checked+.q-state-chip{opacity:1}.q-state-toggle input:not(:checked)+.q-state-chip{opacity:.4;text-decoration:line-through}.q-state-badge,.q-state-chip{font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.q-state-badge{display:inline-block;padding:2px 8px;border-radius:8px}.q-state-active{background:#dbeafe;color:#1d4ed8}.q-state-waiting{background:#fef3c7;color:#92400e}.q-state-delayed{background:#e0e7ff;color:#4338ca}.q-state-failed{background:#fee2e2;color:#b91c1c}.q-state-completed{background:#dcfce7;color:#166534}.dark-mode .q-state-active{background:rgba(59,130,246,.2);color:#93bbfd}.dark-mode .q-state-waiting{background:rgba(251,191,36,.15);color:#fbbf24}.dark-mode .q-state-delayed{background:rgba(99,102,241,.2);color:#7cc7be}.dark-mode .q-state-failed{background:rgba(239,68,68,.2);color:#fca5a5}.dark-mode .q-state-completed{background:rgba(34,197,94,.15);color:#86efac}.q-cell-state{width:120px}.q-delay-hint{display:block;font-size:10px;color:var(--ink-muted);margin-top:2px;font-family:var(--font-mono)}.q-search-row{display:flex;align-items:center;gap:10px;margin-bottom:12px}.q-search-row .form-control{max-width:320px;height:34px}.q-auto-refresh{font-family:var(--font-mono);font-size:11px;color:var(--ink-muted);display:inline-flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap}.q-table{width:100%;border-collapse:collapse}.q-table thead th{font-family:var(--font-mono);font-size:10px;font-weight:500;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em;padding:8px 10px;border-bottom:1px solid var(--border-color);text-align:left;white-space:nowrap}.q-table tbody tr{border-bottom:1px solid var(--border-color);transition:background .1s}.q-table tbody tr:hover{background:var(--paper-bg-alt)}.q-table tbody tr:last-child{border-bottom:none}.q-table tbody td{padding:10px 10px;font-size:.875rem;vertical-align:middle}.q-cell-id{font-family:var(--font-mono);font-size:12px;white-space:nowrap}.q-cell-id{display:flex;align-items:center;gap:8px}.q-chevron{font-size:10px;color:var(--ink-muted);transition:transform .15s;flex-shrink:0}.q-chevron-open{transform:rotate(90deg)}.q-cell-id a{color:var(--color)}.q-cell-payload{font-family:var(--font-mono);font-size:12px;color:var(--color)}.q-payload-detail{color:var(--ink-muted)}.q-cell-num{font-family:var(--font-mono);font-size:12px;text-align:center;white-space:nowrap}.q-cell-progress{min-width:120px}.q-progress-wrap{display:flex;align-items:center;gap:8px}.q-progress-bar{flex:1;height:6px;border-radius:3px;overflow:hidden;background-image:linear-gradient(to right,#1f6a64 var(--pct,0),var(--border-color) var(--pct,0))}.dark-mode .q-progress-bar{background-image:linear-gradient(to right,#7cc7be var(--pct,0),var(--border-color) var(--pct,0))}.q-progress-label{font-family:var(--font-mono);font-size:11px;color:var(--ink-muted);white-space:nowrap;min-width:32px;text-align:right}.q-cell-actions{text-align:right;white-space:nowrap}.q-cell-actions .btn{padding:3px 8px;font-size:11px;background:0 0;border:1px solid var(--border-color);color:var(--ink-muted)}.q-cell-actions .btn:hover{color:var(--color)}.q-row-failed{background:rgba(180,35,24,.04)}.dark-mode .q-row-failed{background:rgba(240,138,130,.06)}.q-error-detail{padding:4px 10px 12px;font-size:12px}.q-error-reason{color:#b42318;font-size:.8125rem;margin-bottom:4px}.dark-mode .q-error-reason{color:#f08a82}.q-toast-error{background:#fbe7e7;color:#b42318;border:1px solid #f3c7c7;border-radius:8px;padding:10px 16px;margin-bottom:12px;font-family:var(--font-mono);font-size:12px;cursor:pointer;display:flex;align-items:center;gap:8px}.dark-mode .q-toast-error{background:rgba(240,138,130,.1);color:#f08a82;border-color:rgba(240,138,130,.25)}.q-error-stack{font-size:.75rem;max-height:120px;overflow:auto;margin:4px 0 0;background:var(--paper-bg-alt);border:1px solid var(--border-color);border-radius:6px;padding:8px 10px}.q-row-expanded>td{border-bottom-color:transparent}.q-detail-row>td{padding:0 10px 14px!important;border-bottom:1px solid var(--border-color)}.q-job-detail{background:var(--paper-bg-alt);border:1px solid var(--border-color);border-radius:8px;padding:14px 16px}.q-job-detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px 20px;margin-bottom:10px}.q-job-detail-item{display:flex;flex-direction:column;gap:2px}.q-job-detail-label{font-family:var(--font-mono);font-size:10px;font-weight:500;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em}.q-job-detail-value{font-family:var(--font-mono);font-size:12px;color:var(--color);word-break:break-all}.q-job-detail-value a{color:var(--color)}.q-job-detail-error{margin:8px 0}.q-job-detail-actions{display:flex;gap:8px;margin-top:12px;padding-top:10px;border-top:1px solid var(--border-color)}.q-job-detail-actions .btn{font-family:var(--font-mono);font-size:11px;padding:5px 12px;border-radius:6px;background:var(--paper-card);border:1px solid var(--border-color);color:var(--color)}@media (max-width:900px){.q-detail{grid-template-columns:1fr}.q-cards{flex-direction:column}.q-card{min-width:100%}.q-jobs-header{flex-direction:column;align-items:flex-start}.q-tabs{flex-wrap:wrap}.q-search-row{flex-wrap:wrap}.q-search-row .form-control{max-width:100%;flex:1}.q-table{font-size:12px}.q-header{flex-direction:column}.q-job-detail-grid{grid-template-columns:1fr 1fr}}@media (max-width:900px){.paper-table .paper-table-head{display:none}.paper-table .admin-users-row,.paper-table .paper-table-row,.paper-table.paper-table-conferences .paper-table-row,.paper-table.paper-table-repos .paper-table-row{display:flex!important;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:14px 0;grid-template-columns:none!important}.paper-table .cell-anon{flex:1 1 calc(100% - 52px);min-width:0;order:1}.paper-table .cell-actions{flex:0 0 auto;order:2;align-self:center}.paper-table .cell-conf,.paper-table .cell-expires,.paper-table .cell-status,.paper-table .cell-views{order:3;font-size:13px;color:var(--ink-muted);display:inline-flex;align-items:center;gap:6px;text-align:left}.paper-table .cell-status{flex-wrap:nowrap;gap:6px;min-width:0}.paper-table .cell-status .status-sub{flex-basis:auto;font-size:13px;line-height:inherit}.paper-table .cell-status .status-sub::before{content:"·";margin-right:6px;color:var(--ink-faint)}.paper-table .cell-conf{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-table .cell-views.num{text-align:left}.paper-table .paper-table-skeleton .cell-expires,.paper-table .paper-table-skeleton .cell-status,.paper-table .paper-table-skeleton .cell-views{flex:1 1 30%}.paper-table .cell-views::before{content:'\f06e';font-family:'Font Awesome 5 Free';font-weight:900;font-size:10px;color:var(--ink-muted)}.paper-table .cell-expires::before{content:'\f017';font-family:'Font Awesome 5 Free';font-weight:400;font-size:10px;color:var(--ink-muted)}.paper-table .cell-conf::before{content:'\f51c';font-family:'Font Awesome 5 Free';font-weight:900;font-size:10px;color:var(--ink-muted)}.paper-table-dashboard .cell-conf::before{content:none}.paper-table .cell-conf:has(.empty-dash),.paper-table .cell-expires:has(.empty-dash){display:none}.paper-table .cell-expires::before,.paper-table .cell-views::before{color:var(--ink-faint)}}.paper-page .dropdown-menu{background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface,10px);box-shadow:0 12px 28px rgba(26,24,21,.08);padding:6px;min-width:220px;font-family:var(--font-sans);font-size:14px;color:var(--color);margin-top:6px}.paper-page .dropdown-menu .dropdown-header{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted);padding:8px 10px 6px;font-weight:500}.paper-page .dropdown-menu .dropdown-item{border-radius:6px;padding:8px 10px;color:var(--color);font-size:14px;display:flex;align-items:center;gap:8px}.paper-page .dropdown-menu .dropdown-item:focus,.paper-page .dropdown-menu .dropdown-item:hover{background:var(--hover-bg-color);color:var(--color)}.paper-page .dropdown-menu .dropdown-item i{width:16px;font-size:13px;color:var(--ink-muted)}.paper-page .dropdown-menu .form-check.dropdown-item{padding:8px 10px 8px 36px!important;position:relative}.paper-page .dropdown-menu .form-check.dropdown-item .form-check-input{position:absolute;left:12px;top:50%;transform:translateY(-50%);margin:0;width:16px;height:16px;accent-color:var(--color);cursor:pointer}.paper-page .dropdown-menu .form-check.dropdown-item .form-check-label{font-family:var(--font-sans);font-size:14px;color:var(--color);font-weight:400;margin:0;cursor:pointer}.btn.btn-icon-dots{width:32px;height:32px;padding:0;border:1px solid transparent;background:0 0;color:var(--ink-muted);border-radius:6px;display:inline-flex;align-items:center;justify-content:center;line-height:1}.btn.btn-icon-dots:focus,.btn.btn-icon-dots:hover,.btn.btn-icon-dots[aria-expanded=true]{background:var(--hover-bg-color);border-color:var(--border-color);color:var(--color)}.btn.btn-icon-dots::after{display:none}.btn.btn-icon-dots i{font-size:15px}.paper-page .repo-list-empty{border-top:none;padding:56px 20px;color:var(--ink-muted)}.paper-page .filter-chip{background:var(--paper-bg-alt);color:var(--color);border:1px solid var(--border-color);font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:4px 10px;border-radius:999px}@media (max-width:768px){.paper-page .paper-page-title{font-size:clamp(1.4rem,6vw,1.9rem);margin:4px 0 2px}.paper-page .paper-page-lede{font-size:13px;line-height:1.4;margin-bottom:0}.paper-page .btn-ink{padding:6px 12px;font-size:13px}.paper-page .quota-row{grid-template-columns:1fr;gap:12px;padding:0;margin:16px 0 0}.paper-page .dashboard-filter-row{padding:10px 0;margin-top:12px;gap:8px}.paper-page .quota-header{flex-direction:row;align-items:baseline;gap:8px}.paper-page .quota-value{white-space:nowrap}.paper-page .dashboard-filter-controls{width:100%}.paper-page .dashboard-filter-controls .btn-group{flex:1 1 100%;display:flex}.paper-page .dashboard-filter-controls .btn-group .btn{flex:1;justify-content:center}.paper-page .dashboard-filter-controls .dropdown{flex:1 1 0;min-width:0}.paper-page .dashboard-filter-controls .dropdown .dropdown-toggle{width:100%;justify-content:space-between}.paper-page .dashboard-filter-controls .dropdown .filter-btn-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media (max-width:480px){.paper-page .paper-page-lede{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}}.empty-state{text-align:center;padding:40px 20px;opacity:.6}.empty-state i{font-size:2rem;margin-bottom:10px;display:block}.paper-page .progress{height:10px;background:var(--paper-bg-alt);border:1px solid var(--border-color);border-radius:999px;overflow:hidden;margin-bottom:20px}.paper-page .progress .progress-bar{background:var(--color);color:var(--canvas-bg-color);font-family:var(--font-mono);font-size:10px;line-height:10px}.paper-page .progress .progress-bar.bg-success{background:var(--status-ready)!important}.paper-page .progress .progress-bar.bg-warning{background:var(--status-progress)!important;color:#fff}.paper-page .progress .progress-bar.bg-danger{background:var(--status-error)!important}.paper-page .progress .progress-bar.bg-dark{background:var(--ink-faint)!important}.paper-page .form>h5,.paper-page form>h5,.paper-page>h5{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);margin:24px 0 8px}.paper-page .accordion .card{background:var(--paper-card,var(--sidebar-bg-color));border:1px solid var(--border-color);border-radius:8px!important;margin-bottom:8px;overflow:hidden}.paper-page .accordion .card+.card{border-top:1px solid var(--border-color)}.paper-page .accordion .card-header{background:0 0;border:none;padding:0}.paper-page .accordion .card-header .btn{color:var(--color)!important;font-family:var(--font-sans);font-weight:500;font-size:14px;padding:14px 18px!important;background:0 0!important;border:none!important;position:relative}.paper-page .accordion .card-header .btn::after{content:"+";position:absolute;right:18px;font-family:var(--font-serif);font-size:20px;color:var(--ink-muted)}.paper-page .accordion .card-header .btn:not(.collapsed)::after{content:"–"}.paper-page .accordion .card-body{padding:6px 18px 18px!important;border-top:1px solid var(--border-soft)}.paper-page .accordion .form-check-label{color:var(--color);font-weight:500;font-size:14px}.paper-page .accordion .form-text{color:var(--ink-muted);font-size:12px;margin-top:2px}.faq-section .panel-body code{font-family:var(--font-mono);font-size:13px;padding:1px 6px;background:var(--paper-bg-alt);border:1px solid var(--border-color);border-radius:3px;color:var(--color)}.faq-section .panel-body a{color:var(--accent)}@media (max-width:820px){.paper-faq-body{grid-template-columns:1fr;gap:24px}.paper-faq-toc{position:static}}.paper-footer{margin-top:80px;padding:56px max(20px,calc((100% - 1076px)/ 2)) 28px;border-top:1px solid var(--border-color);background:var(--canvas-bg-color);font-family:var(--font-sans)}.paper-footer-inner{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:40px}.paper-footer-brand .paper-footer-mark{font-family:var(--font-serif);font-size:22px;letter-spacing:-.01em;color:var(--color)}.paper-footer-brand .paper-footer-mark em{font-style:italic;font-weight:400}.paper-footer-tag{margin-top:10px;color:var(--ink-soft);font-size:14px;line-height:1.55;max-width:340px}.paper-footer-head{font-family:var(--font-mono);font-size:12px;color:var(--ink-soft);letter-spacing:.1em;text-transform:uppercase;margin-bottom:14px}.paper-footer-col a{display:block;color:var(--color);font-size:14px;padding:4px 0;text-decoration:none}.paper-footer-col a:hover{color:var(--accent)}.paper-footer-rule{height:1px;background:var(--border-color);margin:40px 0 16px}.paper-footer-foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font-size:13px;color:var(--ink-muted);font-family:var(--font-sans);letter-spacing:0}.paper-footer-foot .paper-footer-meta{font-family:var(--font-serif);font-style:italic;font-size:14px;letter-spacing:0;color:var(--ink-soft)}@media (max-width:768px){.paper-footer-inner{grid-template-columns:1fr 1fr}}.file.folder.truncated .truncated-warning{color:var(--status-progress);margin-left:4px;font-size:.85em;flex-shrink:0}.file.folder.truncated>a{color:var(--status-progress)}body{--bucket-error-bg:#FCEDED;--bucket-error-fg:#8A1F1F;--bucket-error-bd:#F0C4C4;--bucket-error-dot:#B53737;--bucket-warn-bg:#FFF3DF;--bucket-warn-fg:#7A4D00;--bucket-warn-bd:#F0D8A0;--bucket-warn-dot:#B07A2F;--bucket-info-bg:#EAF2EC;--bucket-info-fg:#2C5D3A;--bucket-info-bd:#C5DCCD;--bucket-info-dot:#5B8D6B;--card-shadow:0 1px 2px rgba(26, 24, 21, 0.04),0 4px 14px rgba(26, 24, 21, 0.05);--card-shadow-hover:0 1px 2px rgba(26, 24, 21, 0.06),0 8px 24px rgba(26, 24, 21, 0.08)}.dark-mode{--bucket-error-bg:rgba(255, 139, 123, 0.10);--bucket-error-fg:var(--status-error);--bucket-error-bd:rgba(255, 139, 123, 0.28);--bucket-error-dot:var(--status-error);--bucket-warn-bg:rgba(255, 211, 122, 0.10);--bucket-warn-fg:var(--status-progress);--bucket-warn-bd:rgba(255, 211, 122, 0.28);--bucket-warn-dot:var(--status-progress);--bucket-info-bg:rgba(152, 200, 168, 0.10);--bucket-info-fg:#98C8A8;--bucket-info-bd:rgba(152, 200, 168, 0.28);--bucket-info-dot:#98C8A8;--card-shadow:0 1px 2px rgba(0, 0, 0, 0.35),0 6px 18px rgba(0, 0, 0, 0.30);--card-shadow-hover:0 2px 4px rgba(0, 0, 0, 0.45),0 12px 28px rgba(0, 0, 0, 0.40)}.errors-page .errors-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:4px 0 8px}.errors-page .errors-actions{display:flex;gap:6px}.errors-page .kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin:14px 0 18px}.errors-page .kpi-card{background:var(--paper-card);border:1px solid var(--border-color);border-radius:12px;padding:18px 20px;display:flex;flex-direction:column;gap:4px;box-shadow:var(--card-shadow);transition:box-shadow 160ms ease,transform 160ms ease}.errors-page .kpi-card:hover{box-shadow:var(--card-shadow-hover)}.errors-page .kpi-label{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted)}.errors-page .kpi-value{font-family:var(--font-serif);font-size:2.6rem;font-weight:400;line-height:1;margin-top:2px;color:var(--color)}.errors-page .kpi-card.kpi-error .kpi-value{color:var(--bucket-error-fg)}.errors-page .kpi-card.kpi-warn .kpi-value{color:var(--bucket-warn-fg)}.errors-page .kpi-card.kpi-info .kpi-value{color:var(--bucket-info-fg)}.errors-page .kpi-sub{font-size:.75rem;color:var(--ink-muted);font-style:italic}.errors-page .kpi-sub.up{color:var(--bucket-error-fg);font-style:normal}.errors-page .kpi-sub.down{color:var(--bucket-info-fg);font-style:normal}.errors-page .dropped-warn{color:var(--bucket-error-fg);font-weight:600;font-style:normal}.errors-page .volume-chart{background:var(--paper-card);border:1px solid var(--border-color);border-radius:12px;padding:18px 22px;margin-bottom:18px;box-shadow:var(--card-shadow)}.errors-page .volume-head{display:flex;justify-content:space-between;align-items:center;font-family:var(--font-mono);font-size:.6875rem;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px}.errors-page .volume-legend{display:flex;gap:14px;align-items:center;text-transform:none;letter-spacing:0;font-family:var(--font-sans)}.errors-page .volume-legend .dot{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:middle}.errors-page .dot.dot-error{background:var(--bucket-error-dot)}.errors-page .dot.dot-warn{background:var(--bucket-warn-dot)}.errors-page .dot.dot-info{background:var(--bucket-info-dot)}.errors-page .volume-bars{display:flex;align-items:flex-end;gap:4px;height:80px}.errors-page .volume-bar{display:flex;flex-direction:column-reverse;flex:1 1 0;min-width:6px;height:100%}.errors-page .volume-bar .seg{display:block;width:100%}.errors-page .seg.seg-error{background:var(--bucket-error-dot)}.errors-page .seg.seg-warn{background:var(--bucket-warn-dot)}.errors-page .seg.seg-info{background:var(--bucket-info-dot);opacity:.7}.errors-page .errors-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}.errors-page .seg-tabs{display:inline-flex;border:1px solid var(--border-color);border-radius:8px;overflow:hidden;background:var(--paper-card)}.errors-page .seg-tabs button{background:0 0;border:none;padding:6px 14px;font-size:.875rem;cursor:pointer;color:var(--color);font-family:var(--font-sans)}.errors-page .seg-tabs button+button{border-left:1px solid var(--border-color)}.errors-page .seg-tabs button.active{background:var(--primary-bg);color:var(--primary-color)}.errors-page .errors-toolbar .search-wrap{position:relative;flex:1 1 320px;min-width:220px}.errors-page .errors-toolbar .search-wrap input{width:100%;padding:6px 10px 6px 32px;border:1px solid var(--border-color);border-radius:8px;font-family:var(--font-mono);font-size:.8125rem;background:var(--input-bg);color:var(--input-color)}.errors-page .errors-toolbar .search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--ink-muted);font-size:.875rem}.errors-page .errors-toolbar .filter-count{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:.75rem;color:var(--ink-muted)}.errors-page .errors-toolbar .select-wrap{display:inline-flex;align-items:center;gap:6px}.errors-page .errors-toolbar .select-wrap label{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted);margin:0}.errors-page .errors-toolbar .select-wrap select{background:var(--input-bg);color:var(--input-color);border:1px solid var(--border-color);border-radius:8px}.errors-page .errors-toolbar .autoref{display:inline-flex;gap:6px;align-items:center;font-size:.8125rem;color:var(--color);cursor:pointer;margin:0}.errors-page .btn-icon{width:32px;padding:4px 0}.errors-page .errors-list{background:var(--paper-card);border:1px solid var(--border-color);border-radius:12px;overflow:hidden;box-shadow:var(--card-shadow)}.errors-page .errors-list-head,.errors-page .errors-row-main{display:grid;grid-template-columns:110px 100px 100px 1fr 60px 70px;gap:16px;padding:18px 20px;align-items:start}.errors-page .errors-list-head{padding:12px 20px;align-items:center}.errors-page .errors-list-head{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted);border-bottom:1px solid var(--border-color);background:var(--paper-bg-alt)}.errors-page .errors-row{border-bottom:1px solid var(--border-soft)}.errors-page .errors-row:last-child{border-bottom:none}.errors-page .errors-row.open{background:var(--paper-bg-alt)}.errors-page .errors-row-main{cursor:pointer}.errors-page .errors-row-main:hover{background:var(--hover-bg-color)}.errors-page .col-when .when-rel{font-size:.9375rem;color:var(--color);font-variant-numeric:tabular-nums}.errors-page .col-when .when-abs{font-family:var(--font-mono);font-size:.75rem;color:var(--ink-muted);font-variant-numeric:tabular-nums;margin-top:2px}.errors-page .col-sev{display:flex;align-items:center;gap:8px}.errors-page .sev-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.errors-page .sev-dot.sev-error{background:var(--bucket-error-dot)}.errors-page .sev-dot.sev-warn{background:var(--bucket-warn-dot)}.errors-page .sev-dot.sev-info{background:var(--bucket-info-dot)}.errors-page .sev-label{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.08em;color:var(--color)}.errors-page .pill-module{display:inline-block;font-family:var(--font-mono);font-size:.75rem;background:var(--paper-bg-alt);color:var(--ink-soft);border:1px solid var(--border-color);padding:3px 10px;border-radius:6px}.errors-page .col-msg .msg-code{font-family:var(--font-mono);font-size:1rem;color:var(--color);font-weight:600}.errors-page .col-msg .msg-context{color:var(--ink-muted);font-style:italic;font-size:.875rem;margin-left:10px}.errors-page .col-msg .msg-detail{color:var(--ink-soft);font-family:var(--font-mono);font-size:.8125rem;margin-left:10px}.errors-page .col-msg .msg-url{color:var(--ink-muted);font-family:var(--font-mono);font-size:.8125rem;margin-top:6px;word-break:break-all}.errors-page .count-pill{display:inline-block;padding:2px 8px;border-radius:4px;background:var(--primary-bg);color:var(--primary-color);font-family:var(--font-mono);font-size:.75rem;font-variant-numeric:tabular-nums}.errors-page .count-pill.count-pill-muted{background:0 0;color:var(--ink-muted);border:1px solid var(--border-color)}.errors-page .status-pill{display:inline-block;padding:2px 10px;border-radius:4px;font-family:var(--font-mono);font-size:.8125rem;font-variant-numeric:tabular-nums;border:1px solid transparent}.errors-page .status-pill.status-error{background:var(--bucket-error-bg);color:var(--bucket-error-fg);border-color:var(--bucket-error-bd)}.errors-page .status-pill.status-warn{background:var(--bucket-warn-bg);color:var(--bucket-warn-fg);border-color:var(--bucket-warn-bd)}.errors-page .status-pill.status-info{background:var(--bucket-info-bg);color:var(--bucket-info-fg);border-color:var(--bucket-info-bd)}.errors-page .errors-row-detail{padding:0 16px 16px}.errors-page .detail-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border-color);margin-bottom:12px}.errors-page .detail-tabs button{background:0 0;border:0;border-bottom:2px solid transparent;padding:8px 12px;font-size:.875rem;cursor:pointer;color:var(--ink-muted);font-family:var(--font-sans)}.errors-page .detail-tabs button.active{color:var(--color);border-bottom-color:var(--color)}.errors-page .detail-body{display:grid;grid-template-columns:1fr 260px;gap:20px}.errors-page .detail-main pre{background:var(--paper-card);border:1px solid var(--border-color);border-radius:12px;padding:18px 22px;font-family:var(--font-mono);font-size:.875rem;line-height:1.7;color:var(--color);max-height:26em;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;box-shadow:var(--card-shadow)}.errors-page .related-list{background:var(--paper-card);border:1px solid var(--border-color);border-radius:12px;max-height:22em;overflow:auto;box-shadow:var(--card-shadow)}.errors-page .stack-pre{line-height:1.45;white-space:pre;overflow-x:auto}.errors-page .related-row{display:flex;gap:10px;padding:6px 12px;align-items:center;border-bottom:1px solid var(--border-soft);font-size:.8125rem}.errors-page .related-row:last-child{border-bottom:none}.errors-page .detail-actions{display:flex;gap:6px;align-items:center;margin-top:10px}.errors-page .copy-hint{font-size:.75rem;color:var(--bucket-info-fg)}.errors-page .detail-aside{background:var(--paper-card);border:1px solid var(--border-color);border-radius:12px;padding:18px;box-shadow:var(--card-shadow)}.errors-page .aside-block+.aside-block{margin-top:16px}.errors-page .aside-label{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted);margin-bottom:4px}.errors-page .aside-value{font-family:var(--font-serif);font-size:1rem;color:var(--color);word-break:break-word;line-height:1.3}.errors-page .aside-value.mono{font-family:var(--font-mono);font-size:.8125rem}.errors-page .aside-sub{color:var(--ink-muted);font-style:italic;font-size:.8125rem;font-family:var(--font-sans)}.errors-page .errors-pager{display:flex;justify-content:space-between;align-items:center;padding:10px 0;color:var(--ink-muted);font-size:.875rem}@media (max-width:720px){.errors-page .errors-list-head,.errors-page .errors-row-main{grid-template-columns:80px 80px 1fr 60px}.errors-page .errors-list-head .col-mod,.errors-page .errors-list-head .col-sev,.errors-page .errors-row-main .col-mod,.errors-page .errors-row-main .col-sev{display:none}.errors-page .detail-body{grid-template-columns:1fr}}.overview-page .ov-header{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:2px}.overview-page .ov-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-left:6px;vertical-align:middle}.overview-page .ov-dot-ok{background:#2f7a44}.overview-page .ov-dot-warn{background:var(--status-progress)}.overview-page .ov-dot-idle{background:var(--ink-muted)}.dark-mode .overview-page .ov-dot-ok{background:#7dc894}.dark-mode .overview-page .ov-dot-warn{background:var(--status-progress)}.overview-page .ov-kpi-row{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin:16px 0 22px}.overview-page .ov-kpi-card{background:var(--paper-card,#fff);border:1px solid var(--border-color);border-radius:12px;padding:18px 22px;display:flex;flex-direction:column;gap:4px;box-shadow:var(--card-shadow);transition:box-shadow 160ms ease}.overview-page .ov-kpi-card:hover{box-shadow:var(--card-shadow-hover)}.overview-page .ov-kpi-label{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted)}.overview-page .ov-kpi-value{font-family:var(--font-serif);font-size:2.6rem;font-weight:400;line-height:1;margin-top:2px;color:var(--color)}.overview-page .ov-kpi-value.ov-val-warn{color:#b42318}.dark-mode .overview-page .ov-kpi-value.ov-val-warn{color:#f08a82}.overview-page .ov-kpi-sub{font-size:.75rem;color:var(--ink-muted);margin-top:2px}.overview-page .ov-daily-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:-4px 0 22px}.overview-page .ov-daily-card{background:var(--primary-bg);border:1px solid var(--border-color);border-radius:12px;padding:16px 20px;box-shadow:var(--card-shadow)}.overview-page .ov-daily-label{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted)}.overview-page .ov-daily-value{font-family:var(--font-serif);font-size:2.5rem;font-weight:400;line-height:1;color:var(--accent,#1f6a64);margin-top:6px}.overview-page .ov-daily-sub{font-size:.75rem;color:var(--ink-muted);margin-top:5px}.dark-mode .overview-page .ov-daily-card{background:var(--paper-card)}.dark-mode .overview-page .ov-daily-value{color:#7cc7be}.overview-page .ov-chart-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:18px}.overview-page .ov-chart-card{background:var(--paper-card,#fff);border:1px solid var(--border-color);border-radius:12px;padding:18px 22px 14px;box-shadow:var(--card-shadow)}.overview-page .ov-chart-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.overview-page .ov-chart-title{font-family:var(--font-serif);font-size:1rem}.overview-page .ov-chart-legend{font-family:var(--font-mono);font-size:.6875rem;color:var(--ink-muted);display:flex;align-items:center;gap:5px}.overview-page .ov-dot-legend{display:inline-block;width:8px;height:8px;border-radius:50%}.overview-page .ov-dot-accent{background:var(--accent,#1f6a64)}.overview-page .ov-dot-ok-fill{background:#2f7a44}.overview-page .ov-dot-user-fill{background:#8b5e2e}.overview-page .ov-dot-new-user-fill{background:var(--status-progress)}.dark-mode .overview-page .ov-dot-ok-fill{background:#7dc894}.dark-mode .overview-page .ov-dot-user-fill{background:var(--status-progress)}.dark-mode .overview-page .ov-dot-new-user-fill{background:var(--status-progress)}.overview-page .ov-spark-bars{display:flex;align-items:flex-end;gap:3px;height:140px}.overview-page .ov-spark-col{flex:1;display:flex;align-items:flex-end;height:100%;position:relative}.overview-page .ov-spark-fill{width:100%;background:var(--accent,#1f6a64);border-radius:2px 2px 0 0;transition:height .3s ease;opacity:.55}.overview-page .ov-spark-fill-alt{background:#2f7a44}.overview-page .ov-spark-fill-user{background:#8b5e2e}.overview-page .ov-spark-fill-new-user{background:var(--status-progress)}.dark-mode .overview-page .ov-spark-fill-alt{background:#7dc894}.dark-mode .overview-page .ov-spark-fill-user{background:var(--status-progress)}.dark-mode .overview-page .ov-spark-fill-new-user{background:var(--status-progress)}.overview-page .ov-spark-col:hover .ov-spark-fill{opacity:1}.overview-page .ov-spark-col.has-tip::after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 10px);transform:translateX(-50%) translateY(4px);z-index:10;padding:6px 8px;border-radius:6px;background:var(--color);color:var(--canvas-bg-color);font-family:var(--font-mono);font-size:.6875rem;line-height:1;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity 120ms ease,transform 120ms ease}.overview-page .ov-spark-col.has-tip::before{content:"";position:absolute;left:50%;bottom:calc(100% + 4px);transform:translateX(-50%) translateY(4px);z-index:10;border:5px solid transparent;border-top-color:var(--color);opacity:0;pointer-events:none;transition:opacity 120ms ease,transform 120ms ease}.overview-page .ov-spark-col.has-tip:hover::after,.overview-page .ov-spark-col.has-tip:hover::before{opacity:1;transform:translateX(-50%) translateY(0)}.overview-page .ov-spark-x{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:.6875rem;color:var(--ink-muted);margin-top:6px}.overview-page .ov-triple-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin-bottom:18px}.overview-page .ov-panel-card{background:var(--paper-card,#fff);border:1px solid var(--border-color);border-radius:12px;padding:18px 20px;box-shadow:var(--card-shadow)}.overview-page .ov-panel-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px}.overview-page .ov-panel-title{font-family:var(--font-serif);font-size:1rem}.overview-page .ov-panel-meta{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted)}.overview-page .ov-panel-foot{margin-top:12px;padding-top:10px;border-top:1px solid var(--border-color);font-size:.8125rem}.overview-page .ov-panel-foot a{color:var(--link-color);text-decoration:none}.overview-page .ov-panel-foot a:hover{text-decoration:underline}.overview-page .ov-performance{min-width:0;margin:22px 0}.overview-page .ov-performance-head{align-items:center;flex-wrap:wrap;gap:12px 20px}.overview-page .ov-performance-head h2{margin:0 0 4px}.overview-page .ov-performance-note{margin:0 0 12px;font-size:12px;line-height:1.5;color:var(--ink-muted)}.overview-page .ov-performance-head .ov-performance-note{margin:0}.overview-page .ov-performance-window{display:flex;align-items:center;gap:8px;flex-shrink:0}.overview-page .ov-performance-window label{margin:0;font-size:12px;color:var(--ink-muted)}.overview-page .ov-performance-window select{width:auto}.overview-page .ov-performance-tabs{margin:0 0 16px;gap:4px}.overview-page .ov-performance-tabs .paper-tab{white-space:nowrap}.overview-page .ov-metrics-scroll{max-width:100%;overflow-x:auto;border:1px solid var(--border-color);border-radius:var(--radius-control,8px)}.overview-page .ov-metrics-table{width:100%;border-collapse:collapse;color:var(--color);font-size:13px;line-height:1.5;font-variant-numeric:tabular-nums}.overview-page .ov-metrics-table td,.overview-page .ov-metrics-table th{padding:10px 12px;border-bottom:1px solid var(--border-color);vertical-align:middle;white-space:nowrap}.overview-page .ov-metrics-table thead th{background:var(--paper-bg-alt);color:var(--ink-muted);font-size:12px;font-weight:500}.overview-page .ov-metrics-table .num{text-align:right}.overview-page .ov-metrics-table tr:last-child>*{border-bottom:0}.overview-page .ov-metrics-table thead tr:last-child>*{border-bottom:1px solid var(--border-color)}.overview-page .ov-metrics-table tbody tr:hover{background:var(--hover-bg-color)}.overview-page .ov-metrics-table .ov-metric-name{min-width:190px;max-width:280px;text-align:left;white-space:normal;overflow-wrap:anywhere;font-weight:500}.overview-page .ov-metrics-table small{display:block;margin-top:3px;font-size:11px;font-weight:400;color:var(--ink-muted)}.overview-page .ov-metrics-table small .ui-icon{width:12px;height:12px}.overview-page .ov-metric-warning-row{background:rgba(196,138,46,.07)}.overview-page .ov-metric-warn,.overview-page .ov-metrics-table small.ov-metric-warn{color:#946519}.dark-mode .overview-page .ov-metric-warn,.dark-mode .overview-page .ov-metrics-table small.ov-metric-warn{color:var(--status-progress)}.overview-page .ov-performance-message{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 12px;margin:0 0 16px;border:1px solid var(--border-color);border-radius:var(--radius-control,8px);font-size:13px;line-height:1.5}.overview-page .ov-performance-message span{flex:1;min-width:160px}.overview-page .ov-performance-warning{background:rgba(196,138,46,.07)}.overview-page .ov-performance-empty{margin:0;padding:24px 12px;text-align:center;font-size:13px;color:var(--ink-muted)}.overview-page .ov-performance-help{margin-top:16px;font-size:12px;line-height:1.6;color:var(--ink-muted)}.overview-page .ov-performance-help summary{width:fit-content;cursor:pointer}.overview-page .ov-performance-help p{margin:8px 0 0;max-width:80ch}@media (max-width:575px){.overview-page .ov-performance{padding:16px 12px}.overview-page .ov-performance-window{width:100%}.overview-page .ov-performance-window select{flex:1;min-width:0}.overview-page .ov-performance-tabs .paper-tab{flex:1;padding:10px 8px}}.overview-page .ov-stacked-bar{display:flex;height:18px;border-radius:6px;overflow:hidden;margin-bottom:14px}.overview-page .ov-bar-seg{min-width:2px;transition:width .4s ease}.overview-page .ov-bar-ready{background:#2f7a44}.overview-page .ov-bar-preparing{background:var(--status-progress)}.overview-page .ov-bar-error{background:#b42318}.overview-page .ov-bar-expired{background:#8a857c}.overview-page .ov-bar-removed{background:#b5afa2}.dark-mode .overview-page .ov-bar-ready{background:#7dc894}.dark-mode .overview-page .ov-bar-preparing{background:var(--status-progress)}.dark-mode .overview-page .ov-bar-error{background:#f08a82}.dark-mode .overview-page .ov-bar-expired{background:#6b665e}.dark-mode .overview-page .ov-bar-removed{background:#4a453e}.overview-page .ov-bar-legend{display:flex;flex-direction:column;gap:6px}.overview-page .ov-legend-item{display:flex;align-items:center;gap:8px;font-size:.8125rem;text-decoration:none;color:inherit}.overview-page .ov-legend-item:hover{text-decoration:none;color:inherit}.overview-page .ov-swatch{display:inline-block;width:12px;height:12px;border-radius:3px;flex-shrink:0}.overview-page .ov-legend-n{margin-left:auto;font-family:var(--font-mono);font-size:.8125rem;font-weight:600}.overview-page .ov-error-bars{display:flex;flex-direction:column;gap:12px}.overview-page .ov-ebar-row{display:flex;align-items:center;gap:10px}.overview-page .ov-ebar-label{width:30px;flex-shrink:0;font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;color:var(--ink-muted)}.overview-page .ov-ebar-track{flex:1;height:10px;background:var(--hover-bg-color);border-radius:5px;overflow:hidden}.overview-page .ov-ebar-fill{height:100%;border-radius:5px;transition:width .4s ease}.overview-page .ov-ebar-error{background:#b42318}.overview-page .ov-ebar-warn{background:var(--status-progress)}.overview-page .ov-ebar-info{background:var(--accent,#1f6a64)}.dark-mode .overview-page .ov-ebar-error{background:#f08a82}.dark-mode .overview-page .ov-ebar-warn{background:var(--status-progress)}.overview-page .ov-ebar-n{width:36px;text-align:right;font-family:var(--font-mono);font-size:.8125rem;font-weight:600;flex-shrink:0}.overview-page .ov-routes-table{display:flex;flex-direction:column}.overview-page .ov-route-row{display:grid;grid-template-columns:1fr 60px 60px 60px;padding:8px 0;border-bottom:1px solid var(--border-soft,var(--border-color));text-decoration:none;color:inherit;font-size:.875rem;align-items:center}.overview-page .ov-route-row:last-child{border-bottom:none}.overview-page .ov-route-row:hover{background:var(--hover-bg-color);text-decoration:none;color:inherit}.overview-page .ov-route-head{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);border-bottom:1px solid var(--border-color)}.overview-page .ov-route-head:hover{background:0 0}.overview-page .ov-route-name{font-family:var(--font-mono);font-size:.8125rem}.overview-page .ov-route-n{text-align:right;font-family:var(--font-mono);font-size:.8125rem}.overview-page .ov-route-lat{color:var(--ink-muted)}.overview-page .ov-n-bad{color:#b42318;font-weight:600}.dark-mode .overview-page .ov-n-bad{color:#f08a82}.overview-page .ov-services-card{background:var(--paper-card,#fff);border:1px solid var(--border-color);border-radius:12px;padding:18px 22px;box-shadow:var(--card-shadow);margin-bottom:18px}.overview-page .ov-services-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:16px}.overview-page .ov-services-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}.overview-page .ov-svc{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border:1px solid var(--border-soft,var(--border-color));border-radius:10px}.overview-page .ov-svc-dot{width:10px;height:10px;border-radius:50%;margin-top:3px;flex-shrink:0}.overview-page .ov-svc-info{display:flex;flex-direction:column;gap:1px;flex:1}.overview-page .ov-svc-name{font-family:var(--font-mono);font-size:.875rem;font-weight:600}.overview-page .ov-svc-meta{font-size:.75rem;color:var(--ink-muted)}.overview-page .ov-svc-detail{font-size:.75rem;color:var(--ink-muted);white-space:nowrap}@media (max-width:900px){.overview-page .ov-kpi-row{grid-template-columns:repeat(3,1fr)}.overview-page .ov-daily-row{grid-template-columns:repeat(3,1fr)}.overview-page .ov-triple-row{grid-template-columns:1fr}}@media (max-width:720px){.overview-page .ov-kpi-row{grid-template-columns:repeat(2,1fr)}.overview-page .ov-daily-row{grid-template-columns:1fr}.overview-page .ov-chart-row{grid-template-columns:1fr}.overview-page .ov-header{flex-direction:column;gap:8px}}@media (max-width:480px){.overview-page .ov-kpi-row{grid-template-columns:1fr 1fr}.overview-page .ov-services-grid{grid-template-columns:1fr 1fr}}.dashboard-heading-actions{display:flex;flex-direction:column;align-items:flex-end;gap:8px;padding-bottom:12px}.dashboard-heading-actions .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px}.dashboard-connections-link{display:inline-flex;align-items:center;gap:7px;min-height:32px;color:var(--ink-muted);font-size:12px;line-height:1.5}.dashboard-connections-link:hover{color:var(--accent);text-decoration:none}.dashboard-connections-link:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:2px}@media (max-width:767px){.dashboard-heading-actions{align-items:flex-start;padding-bottom:0;gap:4px}.dashboard-connections-link{min-height:44px}}.paper-settings-connection-link{display:flex;align-items:center;gap:12px;padding:18px 0;color:var(--color);font-size:14px}.paper-settings-connection-link>i{color:var(--ink-muted);font-size:18px}.paper-settings-connection-link>span:first-of-type{flex:1}.paper-settings-connection-link small{display:block;margin-top:4px;color:var(--ink-muted);font-size:12px}.paper-settings-connection-link:hover{color:var(--accent);text-decoration:none}.paper-settings-connection-link:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.connections-heading{margin-bottom:36px}.connections-heading .paper-page-title{font-size:clamp(38px,4.5vw,56px);margin-bottom:12px}.connections-heading .paper-page-lede{font-size:15px}.connections-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:56px;align-items:start;border-top:1px solid var(--border-color);padding-top:28px}.connections-grid>section{min-width:0}.connection-title,.connection-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.connection-top{margin-bottom:24px;min-height:28px}.connection-top>i{color:var(--ink-muted);font-size:24px}.connection-top>.fa-key{font-size:18px}.connection-title{margin-bottom:10px}.connections-page h2{font-family:inherit;font-size:22px;font-weight:600;letter-spacing:-.5px;margin:0}.connections-page p{font-size:14px;line-height:1.65;color:var(--ink-muted)}.connection-badge{background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:600;border-radius:5px;padding:4px 8px;white-space:nowrap}.connection-badge-muted{background:var(--paper-bg-alt);color:var(--ink-muted)}.connection-status{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-muted)}.connection-status::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}.connection-status.is-connected{color:var(--status-ready)}.connection-actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin:22px 0 16px}.connections-page .btn{font-size:13px;padding:9px 13px;white-space:normal}.connection-revoke p,.connections-page .connection-help{font-size:12px}.connection-link{display:inline-flex;align-items:center;gap:8px;border:0;padding:0;background:0 0;color:var(--accent);font-size:13px;line-height:1.6;font-weight:500;text-align:left;cursor:pointer}.connection-link:hover{color:var(--link-hover-color);text-decoration:underline}.connection-link:disabled{color:var(--ink-muted);opacity:.65;cursor:not-allowed;text-decoration:none}.connection-link:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.connection-installations{list-style:none;padding:0;margin:18px 0;border-top:1px solid var(--border-soft)}.connection-installations li{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 0;font-size:12px;border-bottom:1px solid var(--border-soft)}.connection-revoke{border-top:1px solid var(--border-soft);padding-top:18px;margin-top:24px}.connection-danger{color:var(--status-error)}.connection-resources{margin-top:36px;padding-top:28px;border-top:1px solid var(--border-color)}.connection-count{color:var(--ink-muted);font-size:12px}.connection-empty{display:flex;align-items:center;gap:18px;padding:20px 0;margin:22px 0}.connection-empty>i{font-size:22px;color:var(--ink-muted)}.connection-empty h3{font-size:14px;font-weight:600;margin:0 0 5px}.connection-empty p{font-size:12px;margin:0}.connection-empty>a{margin-left:auto;flex-shrink:0}.connection-resource{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:20px 0;border-bottom:1px solid var(--border-color)}.connection-resource-name{flex:1;min-width:180px;overflow-wrap:anywhere;font-size:14px}.connection-resource-name small{display:block;color:var(--ink-muted);font-size:11px;margin-top:5px}.connection-resource-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.connection-resource-actions .connection-help{flex-basis:100%}.connections-page .connection-footnote{display:flex;align-items:baseline;gap:10px;margin-top:22px;font-size:12px}@media (max-width:767px){.connections-grid{grid-template-columns:1fr;gap:28px}.connections-grid>section+section{border-top:1px solid var(--border-color);padding-top:28px}.connection-empty{flex-wrap:wrap}.connection-empty>div{flex:1;min-width:180px}.connection-empty>a{margin-left:40px}.connection-resource-actions{flex-basis:100%}}.paper-table-empty-actions .btn{display:inline-flex;align-items:center;justify-content:center;gap:6px}.paper-table-empty-actions .btn>i{font-size:1em;line-height:1;color:inherit;margin-right:0!important}.auth-back{display:inline-flex;align-items:center;gap:10px;font-size:13px;color:var(--ink-muted);margin-bottom:48px}.auth-layout{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start}.auth-intro,.auth-options{padding-top:28px}.auth-title-mobile{display:none}.auth-intro .paper-page-title{font-size:clamp(48px,5vw,76px);line-height:1.06;margin:18px 0 24px}.auth-intro .paper-page-lede{max-width:330px}.auth-options{display:grid;gap:28px}.auth-options h2{font-family:inherit;font-size:22px;font-weight:600;margin:0 0 10px}.auth-options p{font-size:14px;line-height:1.65;color:var(--ink-muted)}.auth-options .auth-existing{font-size:12px;border-left:2px solid var(--accent);padding-left:14px;margin:0}.auth-permissions{padding:6px 0 12px;list-style:none;font-size:13px;line-height:1.6}.auth-permissions li{display:flex;gap:10px;margin:12px 0}.auth-permissions i{color:var(--status-ready);margin-top:4px}.auth-continue{display:flex!important;align-items:center;justify-content:space-between;min-height:48px;padding:12px 16px!important}.auth-options small{display:block;font-size:12px;text-align:center;color:var(--ink-muted);margin-top:12px}.auth-legacy{border-top:1px solid var(--border-color);padding-top:24px}.auth-legacy h2{font-size:16px;margin:0}.auth-legacy p{font-size:13px}.source-url-label-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;margin-bottom:8px}.source-url-label-row>.paper-field-label{font-family:var(--font-sans);font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--color);margin-bottom:6px;display:block}.repo-access{margin:0}.repo-access-details{margin:12px 0 24px}.source-url-label-row .repo-access-switch{padding:2px}.source-url-label-row .repo-access-switch button{padding:6px 10px;font-size:12px;line-height:20px}.repo-access-main{display:flex;align-items:center;gap:10px;padding:0 0 8px;flex-wrap:wrap}.repo-access-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.repo-access-switch{display:inline-flex;gap:3px;padding:3px;border:1px solid var(--border-color);border-radius:7px;flex-wrap:wrap}.repo-access-switch button{border:0;border-radius:4px;background:0 0;color:var(--ink-muted);padding:7px 10px;font:inherit;font-size:12px;cursor:pointer}.repo-access-switch button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);opacity:1;cursor:default;font-weight:600}.repo-access-switch button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.repo-access-details .btn{font-size:12px;padding:8px 12px}.repo-access-note{display:flex;gap:6px 16px;flex-wrap:wrap;padding:0;color:var(--ink-muted);font-size:11px;line-height:1.6}@media (max-width:767px){.auth-page{max-width:480px}.auth-back,.auth-intro .paper-eyebrow,.auth-title-desktop{display:none}.auth-title-mobile{display:inline}.auth-layout{grid-template-columns:1fr;gap:24px}.auth-intro,.auth-options{padding-top:0}.auth-intro .paper-page-title{font-size:40px;line-height:1.15;margin:6px 0 12px}.auth-intro .paper-page-lede{max-width:none;font-size:14px;margin:0}.auth-options{gap:24px}.auth-options .connection-top{margin-bottom:16px}.auth-options h2{font-size:18px}.auth-options p{font-size:13px;margin-bottom:12px}.auth-permissions{padding:0;margin:14px 0 20px;font-size:12px}.auth-permissions li{margin:8px 0}.auth-continue{font-size:14px}.auth-legacy{padding-top:20px}.auth-legacy h2{font-size:15px}.auth-legacy .connection-link{min-height:44px}.repo-access-controls{width:100%;gap:12px}}.text-muted{color:var(--ink-muted)!important}.anonymize-review-note,.draft-status{font-size:13px;color:var(--ink-muted)}.anonymize-review-note{padding:12px 0;margin:0}.anonymize-preview-status{padding:20px 32px;color:var(--ink-muted)}.anonymize-preview-status p{margin:0 0 12px}@media (max-width:575px){.dashboard-page .paper-page-lede{margin-bottom:8px}.dashboard-page .dashboard-heading-actions{gap:4px}.dashboard-page .dashboard-connections-link{min-height:32px}.dashboard-page .dashboard-filter-row{margin-top:12px}.anonymize-preview-status{padding:16px}}.paper-page .paper-page-title{font-size:32px}.paper-page.admin-page .paper-page-title{font-size:28px}.paper-page .paper-page-lede{font-size:14px;line-height:1.5}.paper-settings{padding-top:32px}.paper-settings-body{grid-template-columns:180px minmax(0,1fr);gap:40px;margin-top:24px;padding-top:24px;border-top:0}.paper-settings-main .paper-settings-section{background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);padding:20px;margin-bottom:16px}.anonymize-page .paper-section-eyebrow,.paper-settings .paper-section-eyebrow{font-family:var(--font-sans);font-size:16px;font-weight:600;color:var(--color);text-transform:none;letter-spacing:-.01em;margin-bottom:12px}.paper-settings .paper-settings-toc-head{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none}.paper-settings-section .paper-section-copy{margin-top:0}.paper-settings .quota-row{gap:24px}.paper-settings .quota-header{flex-direction:column;align-items:flex-start;gap:4px}.paper-settings .quota-value{white-space:nowrap}.paper-settings .paper-settings-footer{padding:0 0 20px}.paper-settings .form-control{font-size:14px;border-color:var(--border-color);border-radius:var(--radius-control)}.paper-settings .form-check{padding-top:8px;padding-bottom:8px}.anonymize-page .btn-ink,.explorer-page .btn-ink,.paper-page .btn-ink{background:var(--accent);color:#fff;border-color:var(--accent)}.dark-mode .anonymize-page .btn-ink,.dark-mode .explorer-page .btn-ink,.dark-mode .paper-page .btn-ink{color:#1a1815}.anonymize-page .btn-ink:hover,.explorer-page .btn-ink:hover,.paper-page .btn-ink:hover{background:var(--accent);border-color:var(--accent);color:#fff;filter:brightness(.94)}.dark-mode .anonymize-page .btn-ink:hover,.dark-mode .explorer-page .btn-ink:hover,.dark-mode .paper-page .btn-ink:hover{color:#1a1815}.anonymize-page .btn-ink:active,.explorer-page .btn-ink:active,.paper-page .btn-ink:active{filter:brightness(.9)}input[type=date],select{color-scheme:light}.dark-mode input[type=date],.dark-mode select{color-scheme:dark}.draft-status{display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;padding:10px 0}.draft-discard{padding:0;border:0;color:var(--accent);font:inherit;font-size:13px;text-decoration:underline;background:0 0;cursor:pointer}.conference-feedback{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px;margin-top:16px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);width:100%}.paper-table{background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);margin-top:12px}.dashboard-page .paper-table-dashboard{width:100%}.paper-account-email{margin:20px 0}.paper-account-email .form-control{max-width:420px}.paper-settings .paper-account-email .btn[type=submit]{min-height:36px;padding:7px 18px;white-space:nowrap}.paper-table .paper-table-head{font-family:var(--font-sans);text-transform:none;letter-spacing:0;font-size:12px;background:var(--paper-bg-alt);border-radius:var(--radius-surface) var(--radius-surface) 0 0}.paper-table .paper-table-head,.paper-table .paper-table-row{padding-left:16px;padding-right:16px}.dashboard-page{--dashboard-space-xs:4px;--dashboard-space-sm:8px;--dashboard-space-md:12px;--dashboard-space-lg:16px;--dashboard-space-xl:24px;padding-top:var(--dashboard-space-xl)}.project-icon-definitions{position:absolute;width:0;height:0;overflow:hidden}.project-type-svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.project-empty-icon{width:28px;height:28px;color:var(--ink-faint)}.project-type-icon{display:inline-flex;color:var(--ink-muted);flex-shrink:0}.dashboard-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--dashboard-space-lg)}.dashboard-heading .paper-page-title{font-size:28px;margin-bottom:var(--dashboard-space-xs)}.dashboard-heading .paper-page-lede{display:none}.dashboard-heading .btn{min-height:40px;display:inline-flex;gap:var(--dashboard-space-sm);align-items:center}.dashboard-new-mobile{display:none}.dashboard-quota{position:relative;margin:0;padding:0;border:0;background:0 0}.dashboard-quota>summary{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:5px 10px;border:1px solid var(--border-color);border-radius:6px;background:var(--paper-card);color:var(--color);font-family:var(--font-sans);font-size:12px;cursor:pointer;list-style:none;white-space:nowrap}.dashboard-quota>summary::-webkit-details-marker{display:none}.dashboard-quota>summary:hover,.dashboard-quota[open]>summary{background:var(--paper-bg-alt);border-color:var(--ink-faint)}.quota-summary-label{font-weight:600}.quota-summary-value{color:var(--ink-muted);font-variant-numeric:tabular-nums}.quota-summary-ring{width:18px;height:18px;flex-shrink:0;fill:none;stroke-width:2.5}.quota-ring-track{stroke:var(--border-color)}.quota-ring-fill{stroke:var(--accent);transform:rotate(-90deg);transform-origin:50% 50%}.quota-summary-ring.quota-warn .quota-ring-fill{stroke:var(--status-progress)}.quota-summary-ring.quota-danger .quota-ring-fill{stroke:var(--status-error)}.quota-ring-unlimited{stroke:var(--accent);stroke-width:1.7}.quota-summary-chevron{width:14px;height:14px;margin-left:2px;color:var(--ink-muted);transition:transform .15s ease}.dashboard-quota[open] .quota-summary-chevron{transform:rotate(180deg)}.dashboard-quota .quota-panel{position:absolute;z-index:25;top:calc(100% + 8px);left:0;width:344px;max-width:calc(100vw - 36px);padding:16px;border:1px solid var(--border-color);border-radius:12px;background:var(--paper-card);box-shadow:0 12px 36px rgba(26,24,21,.16)}.quota-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.quota-panel-heading h2{font:600 15px var(--font-sans);margin:0}.quota-panel-heading .project-close{margin:-8px -8px -8px 0}.paper-page .quota-usage{display:grid;grid-template-columns:1fr;gap:16px;margin:0;padding:0}.quota-usage .quota-item+.quota-item{padding-top:16px;border-top:1px solid var(--border-soft,var(--border-color))}.quota-usage .quota-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.quota-usage .quota-label{display:inline-flex;align-items:center;gap:8px;font:500 12px var(--font-sans);letter-spacing:0;text-transform:none;color:var(--ink-muted)}.quota-usage .quota-label .project-type-svg{width:16px;height:16px}.quota-usage .quota-value{display:flex;align-items:baseline;gap:4px;font:12px var(--font-sans);font-variant-numeric:tabular-nums;color:var(--ink-muted);margin-bottom:8px}.quota-usage .quota-value strong{font-size:20px;line-height:1.2;font-weight:600;color:var(--color)}.quota-percent,.quota-usage .quota-unlimited-tag{margin-left:auto;padding:2px 6px;border-radius:4px;background:var(--paper-bg-alt);font:11px var(--font-sans);color:var(--ink-muted);white-space:nowrap}.quota-warn>.quota-header .quota-percent{color:var(--status-progress)}.quota-danger>.quota-header .quota-percent{color:var(--status-error)}.quota-usage .quota-track{height:5px;border:0;background:var(--paper-bg-alt)}.quota-usage .quota-track .quota-fill{min-width:0;background:var(--accent)}.quota-remaining{margin:6px 0 0;color:var(--ink-muted);font-size:11px}.quota-remaining.quota-limit{color:var(--status-error)}.quota-loading{font-size:12px;color:var(--ink-muted);margin:12px 0 0}.dashboard-page .dashboard-filter-row{display:flex;align-items:center;gap:var(--dashboard-space-md);padding:0;margin:var(--dashboard-space-lg) 0 0;border:0;background:0 0}.dashboard-page .dashboard-filter-row .search-wrap{flex:1 1 240px;min-width:0}.dashboard-page .dashboard-filter-row .form-control{height:40px;padding:8px 12px;font-size:13px;background:var(--paper-card)}.dashboard-page .dashboard-filter-controls{display:flex;flex-wrap:nowrap;align-items:center;gap:var(--dashboard-space-sm)}.dashboard-extra-filters{display:flex;gap:var(--dashboard-space-sm)}.dashboard-filters-toggle{display:none}.dashboard-page .dashboard-filter-row .btn-group .btn{border:0;background:0 0;border-radius:6px;height:36px;padding:6px 10px}.dashboard-page .dashboard-filter-row .btn-group .btn.btn-primary{background:var(--accent-soft);color:var(--accent)}.dashboard-page .dashboard-filter-row .btn-group .btn.btn-primary:active,.dashboard-page .dashboard-filter-row .btn-group .btn.btn-primary:hover{background:var(--accent-soft)!important;color:var(--accent)}.dashboard-page .dashboard-filter-row .dropdown-toggle{height:36px;padding:6px 10px}.dashboard-type-filter .project-type-svg{display:none}.sort-direction{width:14px;height:14px}.sort-direction.ascending{transform:rotate(180deg)}.dashboard-page .dashboard-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--dashboard-space-sm) var(--dashboard-space-md);margin:var(--dashboard-space-md) 0 0;padding:0}.dashboard-view-tabs{display:flex;align-items:center;gap:var(--dashboard-space-lg)}.dashboard-view-short{display:none}.dashboard-view-tabs button{min-height:36px;border:0;border-bottom:2px solid transparent;border-radius:0;background:0 0;font:inherit;font-size:13px;color:var(--ink-muted);padding:4px 0}.dashboard-view-tabs button[aria-pressed=true]{color:var(--color);border-bottom-color:var(--color);font-weight:600}.attention-count{padding:1px 5px;margin-left:4px;border-radius:4px;background:var(--paper-bg-alt);font-size:11px;font-variant-numeric:tabular-nums}.attention-count.has-attention{color:var(--status-error)}.dashboard-count{margin-left:auto;font-size:12px;color:var(--ink-muted)}.dashboard-active-filters{display:flex;align-items:center;flex-wrap:wrap;gap:var(--dashboard-space-sm);width:100%}.dashboard-page .filter-chip{display:inline-flex;font-family:var(--font-sans);font-size:11px;text-transform:none;letter-spacing:0;border-radius:6px}.dashboard-page .filter-chip .project-type-svg{width:12px;height:12px;margin-left:4px}.dashboard-page .filter-chip-close{min-width:24px;min-height:24px;display:inline-flex;align-items:center;justify-content:center;margin:-2px -4px -2px 2px}.dashboard-page .btn-link-inline{color:var(--ink-muted);font-size:12px}.dashboard-page .paper-table-dashboard{margin-top:var(--dashboard-space-md);border-left:0;border-right:0;border-radius:0}.dashboard-page .paper-table-dashboard .paper-table-head,.dashboard-page .paper-table-dashboard .paper-table-row{grid-template-columns:minmax(280px,3fr) 180px 72px 148px 64px;gap:var(--dashboard-space-lg);padding:8px 12px}.dashboard-page .paper-table-dashboard .paper-table-head{border-radius:0}.dashboard-page .paper-table .cell-anon{gap:var(--dashboard-space-sm)}.dashboard-page .paper-table .anon-text{flex:1}.dashboard-page .paper-table .repo-name{font-family:var(--font-sans);font-size:14px;font-weight:600}.dashboard-page .paper-table .anon-sub{display:flex;align-items:center;gap:var(--dashboard-space-sm);min-width:0}.anonymous-id{font-size:12px;font-family:var(--font-mono);color:var(--ink-muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-page .paper-table .type-badge{font-family:var(--font-sans);letter-spacing:0;font-size:11px;text-transform:none;border-radius:6px}.dashboard-page .paper-table .status-sub{font-size:12px}.dashboard-page .paper-table .cell-conf{font-family:var(--font-sans);letter-spacing:0;text-transform:none}.dashboard-page .conf-tag .project-type-svg{width:14px;height:14px}.dashboard-row-meta{display:contents}.dashboard-page .cell-actions{gap:0;align-items:center}.copy-link-inline,.dashboard-page .btn-icon-dots,.project-close{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:6px;background:0 0;color:var(--ink-muted);padding:0;width:32px;height:32px;min-width:32px;cursor:pointer}.copy-link-inline:focus-visible,.copy-link-inline:hover,.dashboard-page .btn-icon-dots:hover,.project-close:hover{background:var(--accent-soft);color:var(--accent)}.copy-link-inline:disabled{opacity:.5;cursor:wait}.mobile-meta-icon{display:none}.project-attention-action{display:inline-block;color:var(--accent);border:0;background:0 0;padding:0;font:inherit;font-size:12px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.project-attention-action{text-align:left}.dashboard-page .cell-status .project-attention-action{flex-basis:100%}.project-details-row{width:100%;border-bottom:1px solid var(--border-color)}.project-details{padding:var(--dashboard-space-xl);background:var(--paper-bg-alt)}.project-details-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--dashboard-space-sm)}.project-details-heading h2{font:600 16px var(--font-sans);margin:0}.project-details-list{display:grid;grid-template-columns:1fr 1fr;gap:var(--dashboard-space-md) var(--dashboard-space-xl);margin:12px 0}.project-details-list dt{font-size:12px;color:var(--ink-muted);font-weight:500;margin-bottom:4px}.project-details-list dd{margin:0;font-size:13px;overflow-wrap:anywhere}.project-details-list code{color:var(--color);font-size:12px}.project-name-form{margin-top:var(--dashboard-space-lg);padding-top:var(--dashboard-space-lg);border-top:1px solid var(--border-color)}.project-name-form label{display:block;font-size:13px;font-weight:500;margin-bottom:4px}.project-name-form p,.project-progress-help{font-size:12px;color:var(--ink-muted);margin-bottom:8px}.project-name-controls{display:flex;gap:var(--dashboard-space-sm);max-width:560px}.project-name-controls .form-control{min-width:0;font-size:14px}.project-name-controls .btn{flex-shrink:0;min-height:40px}.project-name-form .project-name-error{color:var(--status-error)}.project-details-button{min-height:44px;padding:0 8px;border:0;border-radius:6px;background:0 0;font:inherit;font-size:12px;color:var(--ink-muted);cursor:pointer}.anonymize-page .anonymize-topbar-title{font-family:var(--font-sans);font-size:28px;font-weight:600}.anonymize-topbar{padding:16px 24px}.anonymize-form-col{background:var(--paper-bg-alt)}.anonymize-form-col .paper-settings-main{padding:20px 24px}.anonymize-form-col .paper-settings-section{padding:18px}.anonymize-form-col .paper-settings-section:first-child{padding-top:18px}.anonymize-form-col .anonymize-submit-bar{background:var(--paper-bg-alt);padding:12px 0}.anonymize-preview-head .paper-eyebrow{font-family:var(--font-sans);font-size:14px;font-weight:600;color:var(--color);text-transform:none;letter-spacing:0}.anonymize-preview-col{background:var(--canvas-bg-color);padding:24px}.anonymize-preview-head{flex-wrap:wrap;gap:6px 12px;margin-bottom:16px}.anonymize-preview-body{padding:24px}.anonymize-mobile-tabs,.anonymize-preview-empty,.mobile-preview-jump{display:none}.anonymize-page .repo-access-note{font-size:12px}@media (max-width:900px){.paper-settings-body{grid-template-columns:1fr;gap:18px}.paper-settings-toc{padding:0}.paper-settings-toc-head{display:none}.paper-table .paper-table-row{padding-left:14px;padding-right:14px}}@media (max-width:767px){.anonymize-page .paper-page-title,.paper-page .paper-page-title{font-size:24px}.paper-settings{padding:20px 16px 40px}.paper-settings-main .paper-settings-section{padding:16px}.anonymize-topbar{padding:12px 16px}.anonymize-topbar .paper-crumbs{display:none}.anonymize-mobile-tabs{display:flex;gap:4px;padding:8px 16px;border-bottom:1px solid var(--border-color);background:var(--paper-card)}.anonymize-mobile-tabs button{flex:1;font:inherit;font-size:13px;padding:10px;border:0;border-radius:6px;background:0 0;color:var(--ink-muted)}.anonymize-mobile-tabs button[aria-selected=true]{background:var(--accent-soft);color:var(--accent);font-weight:600}.anonymize-page:not(.mobile-preview-active) .anonymize-preview-col{display:none}.mobile-preview-active .anonymize-form-col{display:none}.mobile-preview-active .anonymize-preview-empty{display:block;padding:24px 16px;color:var(--ink-muted)}.anonymize-form-col .paper-settings-main{padding:16px}.anonymize-form-col .anonymize-submit-bar{background:var(--paper-bg-alt)}.mobile-preview-jump{display:block;width:100%;min-height:44px}.anonymize-preview-col{padding:16px}.anonymize-preview-body{padding:16px}}@media (max-width:575px){.paper-settings .quota-header{flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:4px 8px}}@media (max-width:1100px) and (min-width:901px){.dashboard-page .dashboard-filter-row{flex-wrap:wrap}.dashboard-page .dashboard-filter-row .search-wrap{flex-basis:100%}.dashboard-page .dashboard-filter-controls{width:100%;justify-content:space-between}}@media (max-width:900px){.dashboard-page .paper-table.paper-table-dashboard .paper-table-row{gap:4px 8px;padding:8px 12px}.dashboard-page .paper-table .cell-anon{flex:1 1 calc(100% - 96px);min-width:0}.dashboard-page .paper-table .cell-actions{flex:0 0 88px}.dashboard-row-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;order:3;width:100%}.dashboard-page .dashboard-row-meta .cell-status{flex:1 1 80px;flex-wrap:wrap;gap:2px 8px}.dashboard-page .dashboard-row-meta .cell-expires,.dashboard-page .dashboard-row-meta .cell-views{flex-shrink:0;font-size:12px}.dashboard-page .cell-expires::before,.dashboard-page .cell-views::before{content:none}.dashboard-page .mobile-meta-icon{display:inline-block;width:14px;height:14px}.dashboard-page .dashboard-row-meta .status-sub-date{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dashboard-page .dashboard-row-meta .status-sub-error,.dashboard-page .dashboard-row-meta .status-sub-warn{flex-basis:100%;white-space:normal;overflow-wrap:anywhere}.dashboard-page .dashboard-row-meta .status-sub::before{content:none}.dashboard-page .project-attention-action{min-height:44px;display:inline-flex;align-items:center}.dashboard-page .paper-table .anon-sub .commit-hash,.dashboard-page .paper-table .anon-sub .conf-tag{display:none}}@media (max-width:767px){.container.dashboard-page{padding-top:12px}.dashboard-heading .paper-page-title{font-size:24px}.dashboard-heading-actions .btn-ink{min-height:44px}.dashboard-new-label{display:none}.dashboard-new-mobile{display:inline}.dashboard-quota>summary{min-height:44px;gap:6px;padding:10px;font-size:12px;line-height:20px}.dashboard-quota .quota-panel{max-height:calc(100dvh - 184px);overflow-y:auto;overscroll-behavior:contain}.dashboard-page .dashboard-filter-row{flex-wrap:wrap;gap:8px;margin-top:12px}.dashboard-page .dashboard-filter-row .search-wrap{flex:1 1 0}.dashboard-page .dashboard-filter-row .form-control{height:44px}.dashboard-page .dashboard-filters-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:8px;min-height:44px;background:0 0;border:0}.dashboard-page .dashboard-filter-controls{display:none;width:100%}.dashboard-page .dashboard-filter-controls.expanded{display:flex;flex-wrap:wrap;gap:8px}.dashboard-page .dashboard-filter-controls .btn-group{width:100%;display:flex}.dashboard-page .dashboard-filter-controls .btn-group .btn{flex:1;min-height:44px}.dashboard-extra-filters{display:flex;width:100%}.dashboard-page .dashboard-extra-filters .dropdown{flex:1;min-width:0}.dashboard-page .dashboard-extra-filters .dropdown-toggle{width:100%;height:44px}.dashboard-type-filter .type-filter-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dashboard-type-filter .project-type-svg{display:inline-block}.dashboard-page .dashboard-meta{margin-top:8px;gap:4px 8px}.dashboard-view-tabs{gap:16px}.dashboard-view-tabs button{min-width:44px;min-height:44px;font-size:12px}.dashboard-count{font-size:11px}.dashboard-count{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.dashboard-view-long{display:none}.dashboard-view-short{display:inline}.dashboard-active-filters{display:contents}.dashboard-page .filter-chip{font-size:11px;padding:0 8px;min-height:44px;gap:4px}.dashboard-page .filter-chip-close{min-width:44px;min-height:44px;margin:0}.dashboard-page .btn-link-inline{min-height:44px;font-size:12px}.dashboard-page .paper-table-dashboard{width:calc(100% + 36px);margin:8px -18px 0;border-left:0;border-right:0;border-radius:0}.dashboard-page .paper-table .repo-name{font-size:13px}.project-details{padding:16px 12px}.project-details-list{grid-template-columns:1fr;gap:12px}.project-name-controls{flex-wrap:wrap}.project-name-controls .form-control{flex-basis:100%}.project-name-controls .btn{min-height:44px}}@media (max-width:360px){.dashboard-attention-prefix{display:none}.dashboard-attention-prefix+span{text-transform:capitalize}}.ui-icon-definitions{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}.ui-icon{display:inline-block;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;vertical-align:-3px}.ui-icon.sort-direction{width:14px;height:14px}.pr-title-row{display:flex;align-items:flex-start;gap:16px}.pr-title-row .pr-title{flex:1;min-width:0}.pr-title-row>.btn{flex-shrink:0}.ui-icon.record-type-icon{color:var(--ink-muted)}.btn .ui-icon,.dropdown-item .ui-icon{width:16px;height:16px}.btn-icon-dots .ui-icon{width:18px;height:18px}.anonymize-page .paper-page-title,.paper-page .paper-page-title{font-size:28px}.paper-faq,.paper-page{padding-top:24px}.paper-page .paper-page-lede{margin-bottom:16px;overflow-wrap:anywhere}.paper-page-title{overflow-wrap:anywhere}.anonymize-page .form-control,.paper-page .form-control{min-height:40px;font-family:var(--font-sans);font-size:14px;border-radius:var(--radius-control)}.anonymize-page textarea.form-control,.paper-page textarea.form-control{height:auto}.anonymize-page .btn,.paper-page .btn,.status-bar-actions .btn{min-height:var(--button-height);padding:7px var(--button-padding-x);font:500 var(--button-font-size)/var(--button-line-height) var(--font-sans);border-radius:var(--radius-button);gap:6px}.anonymize-page .btn.btn-sm,.paper-page .btn.btn-sm,.status-bar-actions .btn{min-height:var(--button-compact-height);padding:5px 10px;font-size:13px;border-radius:6px}.anonymize-page .btn-ink,.paper-page .btn-ink{min-height:40px;padding:9px 15px}.btn-hero>i,.btn>.project-type-svg,.btn>.ui-icon,.btn>i{width:16px;height:16px;margin:0!important;flex-shrink:0}.btn.dropdown-toggle::after{margin-left:0}.btn.disabled,.btn:disabled{cursor:not-allowed}.btn.disabled:hover,.btn:disabled:hover{filter:none}.paper-page .btn.btn-link{background:0 0;border-color:transparent}.auth-continue.btn{min-height:44px;padding:11px 16px!important}.anonymize-page .btn.btn-icon,.paper-page .btn.btn-icon{width:32px;height:32px;min-width:32px;min-height:32px;padding:0}.paper-page .btn.btn-icon-dots{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-width:32px;min-height:32px;padding:0;border:0;background:0 0;color:var(--ink-muted)}.paper-page .btn-icon-dots:hover{background:var(--accent-soft);color:var(--accent)}.paper-page .btn-group .btn-primary:active,.paper-page .btn-group .btn-primary:hover{background:var(--accent-soft)!important;color:var(--accent)}.paper-page .paper-section-eyebrow{font-family:var(--font-sans);font-size:16px;font-weight:600;color:var(--color);text-transform:none;letter-spacing:0;margin-bottom:12px}.paper-page .paper-field-label{font-family:var(--font-sans);font-size:13px;letter-spacing:0}.paper-tabs .paper-tab{min-height:44px}.paper-pill,.status-pill{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none;border-radius:6px}.paper-meta-rule{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none;gap:12px 24px}.paper-meta-rule b:not(.commit-hash){font-family:var(--font-sans);font-weight:500}.connections-grid{gap:16px}.connections-grid>section{background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);padding:20px}.connections-heading{margin-bottom:24px}.claim-page .claim-form,.status-page>.paper-settings-section{padding:20px;margin-top:24px;border:1px solid var(--border-color);border-radius:var(--radius-surface);background:var(--paper-card)}.claim-page .claim-form{max-width:640px}.status-page .anonymize-submit-bar{background:0 0;gap:8px;flex-wrap:wrap}.anonymize-landing{padding-top:32px}.paper-settings .quota-usage{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.paper-settings .quota-usage .quota-item+.quota-item{padding-top:0;border-top:0;padding-left:16px;border-left:1px solid var(--border-color)}.paper-settings .quota-usage .quota-header{flex-direction:row;align-items:center;flex-wrap:wrap}.paper-settings .quota-usage .quota-value{white-space:normal;flex-wrap:wrap}.paper-faq-hero{padding-bottom:24px;margin-bottom:24px}.paper-faq-toc-head{font-family:var(--font-sans);font-size:12px;text-transform:none;letter-spacing:0;margin-bottom:8px}.paper-faq-eyebrow{font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:14px}.paper-faq-title{font-family:var(--font-serif);font-weight:400;font-size:clamp(2.4rem,4.6vw,3.6rem);line-height:1.05;letter-spacing:-.02em;max-width:13em;margin-bottom:16px;text-wrap:balance}.paper-faq-title em{font-style:italic;color:var(--accent)}.paper-faq-lede{font-size:14px}.paper-faq-body{grid-template-columns:180px minmax(0,1fr);gap:40px}.faq-section h4.faq-cat{font:400 30px/1.15 var(--font-serif);letter-spacing:-.015em;padding-bottom:12px}.faq-section h4.faq-cat .ui-icon{display:none}.faq-section .panel-group{margin-bottom:32px}.faq-section .panel-default .panel-title a{font:500 15px/1.5 var(--font-sans);padding:16px 0 16px 28px;min-height:44px}.faq-section .panel-default .panel-body{padding-left:28px!important}.faq-section .panel-default .panel-title a:after{content:"";top:22px;width:8px;height:8px;border-right:1.5px solid var(--ink-soft);border-bottom:1.5px solid var(--ink-soft);transform:translateX(4px) rotate(45deg);transition:transform .15s ease}.faq-section .panel-default .panel-title a.collapsed:after{content:"";transform:translateX(2px) rotate(-45deg)}.faq-section .panel-default .panel-title a:hover:after{border-color:var(--color)}.paper-faq-toc nav a.active{color:var(--color);font-weight:500}.paper-empty-title{font:600 32px/1.2 var(--font-sans);letter-spacing:-.025em}.paper-empty-title em{font-style:normal}.btn-hero{justify-content:center;gap:8px;min-height:48px;padding:13px 20px;font-size:15px;line-height:20px;background:var(--accent);border-color:var(--accent);color:#fff;border-radius:var(--radius-button)}.dark-mode .btn-hero{background:#1f6a64;border-color:#1f6a64;color:#fff}.btn-hero:hover{background:var(--accent);color:#fff;filter:brightness(.94)}.dark-mode .btn-hero:hover{background:#24786f;border-color:#24786f;color:#fff;filter:none}.paper-table:not(.paper-table-dashboard){border-left:0;border-right:0;border-radius:0}.paper-table:not(.paper-table-dashboard) .paper-table-head{border-radius:0}.paper-table .cell-anon{gap:8px}.paper-table .cell-anon .anon-text{flex:1}.paper-table-conferences .cell-anon .repo-name{font-family:var(--font-sans);font-weight:600}.paper-table .anon-sub>a,.paper-table .anon-sub>span{min-width:0;overflow:hidden;text-overflow:ellipsis}.paper-table .anon-sub .ui-icon{width:14px;height:14px}.paper-page .filter-chip{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none;border-radius:6px}.paper-page .filter-chip-close .ui-icon{width:12px;height:12px}.admin-nav{gap:4px;border:0;border-bottom:1px solid var(--border-color);border-radius:0;padding:0 0 8px;background:0 0}.admin-nav a{font-family:var(--font-sans);font-size:13px;letter-spacing:0;text-transform:none;border-radius:6px;min-height:40px;padding:8px 12px}.admin-nav a.active{background:var(--accent-soft);color:var(--accent)}.admin-nav .ui-icon{width:16px;height:16px}.admin-filter-toolbar{background:0 0;border:0;padding:0}.admin-filter-inline>label,.admin-filter-inline>span{font-family:var(--font-sans);text-transform:none;letter-spacing:0}.admin-summary .summary-total{font-family:var(--font-sans);font-size:18px;font-weight:600}.admin-summary .summary-pill{font:500 13px/20px var(--font-sans);min-height:32px;padding:5px 10px;border-radius:6px}.admin-summary .summary-pill.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.admin-summary .summary-pill .count{font-family:var(--font-sans)}.admin-active-chip{font-family:var(--font-sans);font-size:12px}.admin-active-chip button .ui-icon{width:12px;height:12px}.user-detail-card .user-header h2{font:600 20px/1.4 var(--font-sans)}.errors-page .errors-toolbar .select-wrap label,.errors-page .volume-head,.overview-page .ov-panel-meta,.paper-detail-grid .detail-label,.paper-progress .paper-progress-label,.status-page .paper-error-eyebrow,.user-detail-grid .detail-label{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none}.overview-page .ov-chart-title,.overview-page .ov-panel-title,.paper-error-title{font:600 16px/1.4 var(--font-sans)}.paper-error-head>.ui-icon,.paper-ratelimit-head>.ui-icon{margin-top:3px;color:var(--status-error)}.paper-ratelimit-head>.ui-icon{color:var(--status-progress)}.errors-page .seg-tabs{border-radius:var(--radius-control)}.errors-page .seg-tabs button{min-height:36px;padding:7px 12px;font:500 14px/20px var(--font-sans)}.errors-page .seg-tabs button.active{background:var(--accent-soft);color:var(--accent)}.errors-page .errors-list,.errors-page .kpi-card:hover,.errors-page .volume-chart,.overview-page .ov-chart-card,.overview-page .ov-panel-card{box-shadow:none}.errors-page .kpi-value,.overview-page .ov-daily-value,.overview-page .ov-kpi-value,.q-card-count,.user-hero-name{font-family:var(--font-sans);font-size:28px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.errors-page .kpi-label,.overview-page .ov-daily-label,.overview-page .ov-kpi-label,.q-card-name,.q-section-label,.user-hero-details .detail-label{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none}.overview-page .ov-daily-card{background:var(--paper-card);box-shadow:none;border-radius:var(--radius-surface)}.dark-mode .overview-page .ov-daily-value,.overview-page .ov-daily-value{color:var(--accent)}.errors-page .kpi-card,.overview-page .ov-kpi-card{box-shadow:none;border-radius:var(--radius-surface)}.q-card{border-radius:var(--radius-surface)}.q-card.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.q-range-btns{border-radius:var(--radius-control)}.q-job-detail-actions .btn,.q-range-btns .btn{font-family:var(--font-sans);font-size:13px}.q-range-btns .btn.active{background:var(--accent-soft);color:var(--accent)}@media (max-width:900px){.paper-settings .quota-usage{grid-template-columns:1fr;gap:16px}.paper-settings .quota-usage .quota-item+.quota-item{padding-left:0;border-left:0;border-top:1px solid var(--border-color);padding-top:16px}.paper-table:not(.paper-table-dashboard) .paper-table-row{gap:4px 8px!important;padding:8px 12px}.paper-table:not(.paper-table-dashboard) .cell-anon{flex:1 1 calc(100% - 52px);order:1}.paper-table:not(.paper-table-dashboard) .cell-actions{order:2;flex:0 0 44px}.paper-table .admin-users-row>[role=cell]:first-child,.paper-table.paper-table-repos.has-bulk .paper-table-row>[role=cell]:first-child{flex:0 0 24px;order:0}.paper-table .admin-users-row .cell-anon,.paper-table.paper-table-repos.has-bulk .cell-anon{flex-basis:calc(100% - 84px)}.paper-table:not(.paper-table-dashboard) .cell-anon .anon-sub{font-size:12px;gap:6px}.paper-table:not(.paper-table-dashboard) .cell-status .status-sub{font-size:12px}.paper-table .cell-expires::before,.paper-table .cell-views::before{content:none}.paper-table .cell-expires .mobile-meta-icon,.paper-table .cell-views .mobile-meta-icon{display:inline-block;width:14px;height:14px}.paper-faq-body{grid-template-columns:1fr;gap:24px}}@media (max-width:767px){.paper-faq,.paper-page{padding-top:20px}.paper-settings .paper-account-email .btn[type=submit]{min-height:40px;padding:9px 18px}.anonymize-page .paper-page-title,.paper-page .paper-page-title,.paper-page.admin-page .paper-page-title{font-size:24px}.paper-faq-title{font-size:40px}.anonymize-page .form-control,.paper-page .form-control{min-height:44px}.anonymize-page .btn,.connection-link,.draft-discard,.paper-faq-toc a,.paper-page .btn,.paper-settings-toc nav a{min-height:44px}.anonymize-page .btn,.paper-page .btn,.status-bar-actions .btn{min-height:44px;padding:11px 14px;font-size:14px;line-height:20px;white-space:normal}.anonymize-page .btn.btn-sm,.paper-page .btn.btn-sm{min-height:44px;padding:11px 12px;font-size:14px}.anonymize-page .btn.btn-icon,.copy-link-inline,.paper-page .btn.btn-icon,.paper-page .btn.btn-icon-dots,.project-close{width:44px;height:44px;min-width:44px;min-height:44px;padding:0}.dashboard-page .dashboard-filter-row .btn-group .btn,.dashboard-page .dashboard-filter-row .dropdown-toggle{height:auto;min-height:44px;font-size:14px;padding:11px 10px}.dashboard-heading-actions .btn-ink{padding:11px 16px}.dashboard-page .dashboard-filters-toggle{padding:11px 10px}.errors-page .btn-icon,.pr-title-row .btn,.status-bar-actions .btn{min-width:44px;min-height:44px;padding:0}.status-bar-actions .btn{width:44px;height:44px}.errors-page .seg-tabs button,.paper-tab{min-height:44px}.errors-page .seg-tabs button{padding:11px 12px}.status-bar-actions{flex-wrap:wrap;max-width:100%}.leftCol-close,.tree-search-clear{min-width:44px;min-height:44px}.anonymize-landing{padding:20px 18px}.anonymize-landing .repo-access-switch button,.source-url-label-row .repo-access-switch button{min-height:44px;padding:11px 10px;font-size:13px}.paper-settings-body{margin-top:16px;padding-top:0;gap:16px}.paper-settings-toc nav{gap:0 12px}.paper-settings-toc nav a{display:inline-flex;align-items:center}.paper-faq{padding-left:18px;padding-right:18px}.paper-faq-toc nav{display:flex;flex-direction:row;flex-wrap:wrap;gap:0 16px}.paper-faq-toc a{display:inline-flex;align-items:center;padding:8px 0;border-left:0;border-bottom:2px solid transparent;margin-left:0}.paper-faq-toc nav a.active,.paper-faq-toc nav a:hover{border-bottom-color:var(--accent);color:var(--accent)}.claim-page .claim-form,.status-page>.paper-settings-section{padding:16px;margin-top:16px}.admin-nav{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;gap:4px;max-width:100%;margin:8px 0 16px}.admin-nav a{flex-shrink:0;min-height:44px}.admin-summary .summary-pill{min-height:44px;padding:11px 12px;font-size:14px}.admin-active-chip button{min-width:44px;min-height:44px}.admin-filter-row{gap:8px}.admin-filter-row .admin-filter-inline{gap:8px;flex-wrap:wrap}.errors-page .kpi-grid{grid-template-columns:1fr 1fr;gap:12px}.q-cards{flex-direction:row}.q-card{min-width:130px}.q-header-actions{flex-wrap:wrap;gap:8px}}.paper-page.container:not(.auth-page){max-width:1180px}.paper-page>.row{margin-left:0;margin-right:0}.paper-page>.row>.w-100,.paper-page>.row>[class*=col]{padding-left:0;padding-right:0}.anonymize-landing{align-items:flex-start}.status-page .paper-support-grid{margin-bottom:0}.explorer-content .ace_editor{font-family:var(--font-mono);line-height:1.6}.dark-mode .explorer-content .ace-nord-dark,.dark-mode .explorer-content .ace-nord-dark .ace_gutter{background:var(--main-bg-color)}.explorer-content .file-content.markdown-body{max-width:960px;padding:32px 40px 96px}.leftCol-project-header .project-name{white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.file-error{font-size:inherit;font-weight:inherit;text-align:left}.file-error-card{width:100%;max-width:520px;margin-top:0}.file-error-msg{margin:12px 0 0;font-size:14px;line-height:1.55;color:var(--ink-soft)}.file-error-actions{display:flex;gap:8px;margin-top:16px}.file-error .paper-empty-title{font-size:20px;text-align:center}@media (min-width:992px){.leftCol-foot{padding-bottom:72px}}.explorer-content .ace-chrome,.explorer-content .ace-chrome .ace_gutter{background:var(--main-bg-color)}@media (max-width:991px){.explorer-content .file-content.markdown-body{padding:20px 16px 96px}.anonymize-landing{padding:20px 18px}.anonymize-landing-inner{padding:0}.paper-faq-toc nav,.paper-settings-toc nav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.paper-faq-toc nav a,.paper-settings-toc nav a{flex-shrink:0;white-space:nowrap}.paper-faq-body,.paper-settings-body{grid-template-columns:minmax(0,1fr)}.paper-faq-toc,.paper-settings-toc{position:static}.paper-faq-toc nav,.paper-settings-toc nav{display:flex;flex-direction:row;gap:0 16px}.paper-faq-toc nav a,.paper-settings-toc nav a{display:inline-flex;align-items:center;padding:8px 0;margin-left:0;border-left:0;border-bottom:2px solid transparent}.paper-faq-toc nav a.active,.paper-faq-toc nav a:hover,.paper-settings-toc nav a.active,.paper-settings-toc nav a:hover{border-bottom-color:var(--accent)}.paper-page .dashboard-filter-controls .dropdown .dropdown-toggle{justify-content:flex-start;gap:6px}.paper-page .dashboard-filter-controls .dropdown .dropdown-toggle::after{margin-left:auto}}@media (max-width:480px){.paper-page .paper-page-lede{display:block;-webkit-line-clamp:unset;overflow:visible}}.navbar .btn-signin,.navbar .btn-signin:hover{background:var(--accent);border-color:var(--accent);color:#fff!important}.dark-mode .navbar .btn-signin,.dark-mode .navbar .btn-signin:hover{background:#237a71;border-color:#237a71;color:#fff!important}.navbar .btn-signin:hover{filter:brightness(.94)}.paper-progress .paper-progress-bar,.paper-progress.paper-progress-ready .paper-progress-bar{background:var(--accent)}.paper-progress .paper-progress-label{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none}.paper-error-eyebrow,.paper-support-card .paper-support-eyebrow{font-family:var(--font-sans);font-size:12px;font-weight:500;letter-spacing:0;text-transform:none}.leftCol-foot .last-update{font-family:var(--font-sans);font-size:11px;letter-spacing:0}.paper-proof-venues span{font-family:var(--font-sans);font-size:18px;font-weight:600;letter-spacing:.02em;color:var(--ink-soft)}.markdown-body mark.redaction{background:var(--accent-soft);color:var(--accent);border-radius:3px;padding:0 2px}.ace_marker-layer .ace_redaction{position:absolute;background:var(--accent-soft);border-radius:3px}.leftCol-project-header{flex-wrap:wrap;row-gap:2px}.project-expiry{flex:1 0 100%;display:flex;align-items:center;gap:4px;font-size:12px;color:var(--ink-muted)}.project-expiry .ui-icon{width:12px;height:12px}.status-bar-actions .btn-icon-only{width:32px;padding:0;justify-content:center}.share-link-row{display:flex;gap:8px;margin-top:4px}.share-link-input{flex:1;min-width:0;font-family:var(--font-mono);font-size:14px;background:var(--paper-bg-alt)}.share-link-row .btn{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;min-width:112px;justify-content:center}.share-link-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.share-link-actions .btn{display:inline-flex;align-items:center;gap:6px}.status-page .paper-support-grid{gap:0 32px}.status-page .paper-support-card{padding:16px 0 0;border:0;border-top:1px solid var(--border-color);border-radius:0;background:0 0}.status-page .paper-support-card:hover{border-color:var(--color)}@media (min-width:992px){.paper-table .cell-expires{white-space:nowrap}}.paper-settings .paper-settings-main .paper-settings-section{background:0 0;border:0;border-bottom:1px solid var(--border-color);border-radius:0;padding:0 0 28px;margin-bottom:28px}.paper-settings .paper-settings-main .paper-settings-section:last-of-type{border-bottom:0}@media (max-width:991px){.paper-settings .paper-settings-main .paper-settings-section{padding:0 0 20px;margin-bottom:20px}.share-link-row{flex-direction:column}.share-link-actions{flex-direction:column}.share-link-actions .btn{justify-content:center}.status-page .paper-support-grid{row-gap:20px}}.paper-page .q-range-btns{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-card);overflow:visible}.paper-page .q-range-btns .btn,.paper-page .q-range-btns .btn+.btn{min-height:0;height:28px;padding:0 10px;border:0;border-radius:4px;background:0 0;color:var(--ink-muted);font:500 13px/1 var(--font-sans)}.paper-page .q-range-btns .btn:hover{background:var(--hover-bg-color);color:var(--color)}.paper-page .q-range-btns .btn.active{background:var(--accent-soft);color:var(--accent)}.q-header-actions>.btn{height:34px;min-height:34px}.paper-page .btn.btn-danger-soft{background:0 0;border-color:var(--status-error);color:var(--status-error)}.paper-page .btn.btn-danger-soft:hover{background:var(--status-error-soft-hover);border-color:var(--status-error);color:var(--status-error)}.q-auto-refresh,.q-section-label,.q-state-chip{font-family:var(--font-sans);letter-spacing:0;text-transform:none}.q-state-chip{font-size:12px;text-transform:capitalize}.overview-page .ov-ebar-fill{display:block}.paper-table .paper-table-row.repo-error{border-left:0;box-shadow:inset 2px 0 0 var(--status-error);padding-left:16px}.admin-page .q-table th,.admin-page .type-badge,.admin-page .user-detail-section h2,.admin-page section>h2,.admin-page th,.admin-page>h2,.errors-page .col-count,.errors-page .col-mod,.errors-page .col-msg,.errors-page .col-sev,.errors-page .col-status,.errors-page .col-when,.overview-page .ov-chart-legend,.overview-page .ov-ebar-label,.overview-page .ov-route-n,.overview-page .ov-route-name,.q-card-sub,.q-delay-hint,.q-legend-completed,.q-legend-exec,.q-legend-failed,.q-section-right,.q-stat-label,.user-detail-grid .detail-label{font-family:var(--font-sans);letter-spacing:0;text-transform:none}.admin-page th,.errors-page [class^=col-]{font-size:12px;font-weight:500;color:var(--ink-muted)}.q-card-sub,.q-stat-label,.user-detail-grid .detail-label{font-size:12px}.q-stat-value{font-family:var(--font-sans);font-size:20px;font-weight:600;font-variant-numeric:tabular-nums}.q-state-badge{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:capitalize}.admin-page .type-badge{font-size:12px;text-transform:none}.errors-page .col-sev span,.errors-page .sev-label{text-transform:capitalize}.dark-mode .overview-page .ov-daily-value,.overview-page .ov-daily-value{color:var(--color)}.dark-mode .overview-page .ov-spark-fill-alt,.dark-mode .overview-page .ov-spark-fill-new-user,.dark-mode .overview-page .ov-spark-fill-user,.overview-page .ov-spark-fill-alt,.overview-page .ov-spark-fill-new-user,.overview-page .ov-spark-fill-user{background:var(--accent)}.dark-mode .overview-page .ov-dot-new-user-fill,.dark-mode .overview-page .ov-dot-ok-fill,.dark-mode .overview-page .ov-dot-user-fill,.overview-page .ov-dot-new-user-fill,.overview-page .ov-dot-ok-fill,.overview-page .ov-dot-user-fill{background:var(--accent)}.errors-page .seg-tabs{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-card)}.errors-page .seg-tabs button,.errors-page .seg-tabs button+button{min-height:0;height:30px;padding:0 10px;border:0;border-radius:4px;background:0 0;color:var(--ink-muted);font:500 13px/1 var(--font-sans)}.errors-page .seg-tabs button:hover{background:var(--hover-bg-color);color:var(--color)}.errors-page .seg-tabs button.active{background:var(--accent-soft);color:var(--accent)}.user-detail-card .user-header .status-dot-wrap{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:400;color:var(--ink-soft)}.user-detail-card .user-actions{display:flex;flex-wrap:wrap;gap:8px}.admin-page .paper-table .cell-anon .anon-sub{flex-wrap:wrap;row-gap:2px}.admin-page .paper-table .anon-sub>a,.admin-page .paper-table .anon-sub>span{flex:0 1 auto;max-width:100%;white-space:nowrap}.admin-page .paper-table .cell-views .mobile-meta-icon{margin-right:4px}.q-jobs{overflow-x:auto}.q-job-detail-label{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none}.admin-section-header h2{font-family:var(--font-sans);font-size:16px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--color)}.errors-page .sev-label{font-family:var(--font-sans);font-size:13px;letter-spacing:0}.email-prompt{width:min(560px,calc(100vw - 32px));padding:28px;border:1px solid var(--paper-border,#e5e1d9);border-radius:12px;background:var(--paper-bg,#faf9f6);color:inherit;box-shadow:0 16px 64px #0003}.email-prompt::backdrop{background:#0006}.email-prompt h2{margin:0 0 12px;font-size:24px}.email-prompt p{margin-bottom:20px}.email-prompt-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:24px}body.dark-mode .email-prompt{background:#242320;color:#faf9f6}.file-error .viewer-error{width:100%;max-width:65ch;padding:2rem 1rem;overflow-wrap:anywhere;font-size:1rem;font-weight:400;text-align:left}.viewer-error .paper-empty-title{margin-bottom:1rem}.viewer-error p{line-height:1.6}.viewer-error .paper-error-actions{display:flex;flex-wrap:wrap;gap:.75rem}.markdown-body .markdown-alert{margin:1rem 0;padding:.5rem 1rem;border-left:4px solid var(--alert-color,#0969da)}.markdown-body .markdown-alert-note{--alert-color:#0969da}.markdown-body .markdown-alert-tip{--alert-color:#1a7f37}.markdown-body .markdown-alert-important{--alert-color:#8250df}.markdown-body .markdown-alert-warning{--alert-color:#9a6700}.markdown-body .markdown-alert-caution{--alert-color:#cf222e}.markdown-body .markdown-alert-title{color:var(--alert-color);font-weight:600;display:flex;align-items:center;gap:.5rem}.markdown-body .markdown-alert-title svg{fill:currentColor;flex-shrink:0}.markdown-body .markdown-alert>:last-child{margin-bottom:0}body.dark-mode .markdown-alert-note{--alert-color:#79c0ff}body.dark-mode .markdown-alert-tip{--alert-color:#7ee787}body.dark-mode .markdown-alert-important{--alert-color:#d2a8ff}body.dark-mode .markdown-alert-warning{--alert-color:#e3b341}body.dark-mode .markdown-alert-caution{--alert-color:#ff7b72}.markdown-body .emoji{display:inline;vertical-align:text-bottom}.markdown-body .footnotes{margin-top:2rem;border-top:1px solid var(--border-color,#d0d7de);padding-top:1rem;font-size:.875em}.markdown-body .katex-display{overflow-x:auto;overflow-y:hidden;padding:.25rem 0}.markdown-body .markdown-diagram{margin:1rem 0;border:1px solid var(--border-color,#d0d7de);padding:.75rem}.markdown-body .markdown-diagram svg{display:block;width:100%;max-height:360px}.markdown-body .markdown-diagram path{fill:#7cc7be;fill-opacity:.5;stroke:var(--link-color,#1f6a64);stroke-width:1;vector-effect:non-scaling-stroke}.markdown-body .diagram-controls{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.markdown-body .diagram-controls button{min-width:44px;min-height:44px;padding:.25rem .75rem;border:1px solid var(--border-color,#d0d7de);background:var(--main-bg-color,#fff);color:inherit;border-radius:4px}.markdown-body .diagram-controls button:hover{background:var(--hover-bg-color,#f6f8fa)}.markdown-body .diagram-controls button:focus-visible{outline:2px solid var(--link-color,#0969da);outline-offset:2px}.markdown-body .hljs-keyword,.markdown-body .hljs-selector-tag{color:#cf222e}.markdown-body .hljs-attr,.markdown-body .hljs-string{color:#0a3069}.markdown-body .hljs-literal,.markdown-body .hljs-number,.markdown-body .hljs-title{color:#8250df}.markdown-body .hljs-comment{color:#57606a}body.dark-mode .markdown-body .hljs-keyword{color:#ff7b72}body.dark-mode .markdown-body .hljs-attr,body.dark-mode .markdown-body .hljs-string{color:#a5d6ff}body.dark-mode .markdown-body .hljs-literal,body.dark-mode .markdown-body .hljs-number,body.dark-mode .markdown-body .hljs-title{color:#d2a8ff}body.dark-mode .markdown-body .hljs-comment{color:#b1bac4}body.dark-mode .markdown-body .gh-light-mode-only,body:not(.dark-mode) .markdown-body .gh-dark-mode-only{display:none}.billing-plan{padding:1.5rem 0;border-bottom:1px solid var(--paper-border,#d8d4cd)}.billing-plan h3{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;justify-content:space-between}.billing-price{font-variant-numeric:tabular-nums;font-weight:400}.billing-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}#settings-billing p{max-width:72ch}.repository-hosting{border-top:1px solid var(--border-color);margin-top:24px}.repository-hosting h2{font-size:1.5rem}.hosting-choices{border:0;padding:0;margin:20px 0;min-width:0}.hosting-choices legend{font-size:1rem;font-weight:600}.hosting-choice{display:flex;align-items:flex-start;gap:12px;padding:16px;border:1px solid var(--border-color);background:var(--paper-card);cursor:pointer}.hosting-choice+.hosting-choice{border-top:0}.hosting-choice input{margin-top:5px;accent-color:var(--accent)}.hosting-choice small,.hosting-choice strong{display:block}.hosting-choice small{margin-top:6px;color:var(--ink-muted)}.hosting-actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin:20px 0}.repository-pass{margin:20px 0}.repository-pass summary{cursor:pointer;color:var(--link-color)}.repository-pass p{margin-top:12px}.task-review-active.anonymize-page{height:auto!important;min-height:100%;overflow:visible}.task-review-active .anonymize-workspace{flex:0 0 auto;overflow:visible}.repository-task{width:100%;max-width:1020px;margin:0 auto;padding:32px 24px 42px;color:var(--color);font-size:15px;line-height:1.55}.repository-task .paper-crumbs{margin-bottom:24px}.repository-task h1{font:normal 40px/1.15 'Iowan Old Style',Georgia,serif;margin:8px 0 10px}.repository-task h2{font:normal 27px/1.25 'Iowan Old Style',Georgia,serif;margin:0 0 12px}.repository-task h3{font:600 17px/1.5 var(--font-sans);margin:0 0 10px}.repository-task p{margin:0 0 16px}.task-lede,.task-muted{color:var(--ink-muted)}.task-trail{list-style:none;display:flex;flex-wrap:wrap;gap:24px;margin:30px 0;padding:18px 0;border-bottom:1px solid var(--border-color);color:var(--ink-muted);font-size:13px}.task-trail [aria-current]{color:var(--color);font-weight:600}.task-trail button{color:inherit;padding:0;border:0;background:0 0;font:inherit;cursor:pointer}.task-columns{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(245px,1fr);gap:34px;align-items:start}.task-section-title{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.task-text-button{border:0;padding:7px 0;background:0 0;color:var(--link-color);cursor:pointer;font:inherit;text-align:left}.task-text-button:focus-visible,.task-trail button:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.task-summary{background:var(--paper-bg-alt);padding:24px;border-radius:5px}.task-summary dt{margin-top:18px;font-size:12px;font-weight:400;color:var(--ink-muted)}.task-summary dd{margin:3px 0;overflow-wrap:anywhere}.task-redactions,.task-summary h3{overflow-wrap:anywhere}.task-summary dl{margin-bottom:0}.task-summary-foot{border-top:1px solid var(--border-color);margin-top:28px;padding-top:24px}.task-summary-foot p{color:var(--ink-muted);margin:0}.task-hosting{border-top:1px solid var(--border-color);margin-top:22px;padding-top:20px}.repository-task .hosting-choices{margin:18px 0}.repository-task .hosting-choice{padding:18px;gap:13px;font-weight:400;margin:0}.repository-task .hosting-choice:first-of-type{border-radius:6px 6px 0 0}.repository-task .hosting-choice:last-of-type{border-radius:0 0 6px 6px}.repository-task .hosting-choice small{margin-top:0;font-size:13px;line-height:1.55}.task-terms{font-size:13px;color:var(--ink-soft)}.task-actions{display:flex;flex-wrap:wrap;align-items:center;gap:18px;margin:24px 0 16px}.repository-task .btn{padding:10px 16px;border-radius:5px;font-size:15px}.task-status{background:var(--accent-soft);padding:16px 20px;margin:20px 0}.task-status p:last-child{margin:0}@media(max-width:650px){.repository-task{padding:24px 18px}.repository-task h1{font-size:32px}.task-columns{display:block}.task-summary{margin-top:28px}.task-trail{gap:15px;font-size:12px}}.repository-task{scroll-margin-top:70px}.task-columns{align-items:stretch}.repository-task .btn-ink{background:var(--color);border-color:var(--color);color:var(--canvas-bg-color);box-shadow:none}.repository-task .btn-ink:hover{background:var(--ink-soft);border-color:var(--ink-soft)}.task-field{margin-bottom:24px}.task-field>label{display:block;font-weight:600;margin-bottom:8px}.task-field input,.task-field select,.task-field textarea{width:100%;padding:12px;border:1px solid var(--border-color);border-radius:4px;background:var(--paper-card);color:var(--color);font:inherit}.task-field textarea{resize:vertical}.task-field small{display:block;margin-top:8px;font-size:13px;color:var(--ink-muted)}.task-field :is(input,select,textarea):focus-visible{outline:3px solid var(--accent);outline-offset:3px}.task-paybox{background:var(--paper-card);border:1px solid var(--border-color);border-radius:5px;padding:22px;margin-top:20px}.task-ready{border-left:3px solid var(--success,#2f7a44);padding:16px 20px;background:var(--paper-bg-alt);margin-bottom:22px}.repository-task.status-page .paper-progress{margin-top:24px}.task-date-options summary{cursor:pointer;color:var(--link-color);font-size:13px}.task-date-options[open] summary{margin-bottom:12px}.task-result{padding:18px;background:var(--paper-bg-alt);overflow-wrap:anywhere}.task-result .detail-label{font-size:12px;color:var(--ink-muted);margin-bottom:6px}.task-configure-columns{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.task-live-preview{min-width:0;border:1px solid var(--border-color);border-radius:5px;background:var(--paper-card)}.task-preview-head{padding:20px 24px;border-bottom:1px solid var(--border-color)}.task-preview-head h2{font-size:23px;margin-bottom:6px}.task-preview-head p{margin:0;font-size:13px}.task-preview-content,.task-preview-message{padding:24px}.task-preview-content{overflow:auto;max-height:650px;overflow-wrap:anywhere}.repository-task .task-preview-content h1{font:600 28px/1.3 var(--font-sans)}.repository-task .task-preview-content h2{font:600 22px/1.3 var(--font-sans)}@media(max-width:650px){.task-live-preview{margin-top:28px}.task-preview-content{max-height:none}}.anonymize-page .anonymize-topbar{padding:14px 22px;background:var(--canvas-bg-color)}.anonymize-page .anonymize-topbar-inner{max-width:none}.anonymize-page .anonymize-topbar-head{justify-content:space-between}.anonymize-page .anonymize-topbar-title{font:600 19px/1.25 var(--font-sans);margin:0}.anonymize-page .anonymize-split{display:grid;grid-template-columns:minmax(320px,42%) minmax(0,1fr);overflow:hidden}.anonymize-page .anonymize-form-col{width:auto;min-height:0;overflow:hidden!important;background:var(--paper-card)}.anonymize-page .anonymize-form-col .paper-settings-main{display:flex;flex-direction:column;height:100%;min-height:0;max-width:none;padding:0}.anonymize-fields{flex:1;min-height:0;overflow:auto;position:relative;scrollbar-width:thin}.anonymize-page .paper-settings-main .paper-settings-section{border:0;border-top:1px solid var(--border-color);border-radius:0;padding:18px 20px 20px;margin:0;box-shadow:none}.anonymize-page .paper-settings-main .paper-settings-section:first-child{border-top:0;padding-top:18px}.anonymize-page .paper-section-eyebrow{font:600 15px/1.4 var(--font-sans);margin:0 0 16px;letter-spacing:0}.anonymize-page .paper-field-label{font:500 13px/1.5 var(--font-sans);margin-bottom:8px}.anonymize-page .form-group{margin-bottom:16px}.anonymize-page .form-group:last-child{margin-bottom:0}.anonymize-page .form-control{font-size:14px;min-height:40px;padding:9px 10px;border-radius:4px}.anonymize-page textarea.form-control{line-height:1.6}.anonymize-page .form-grid-2{gap:12px}.anonymize-page .form-check{padding-top:10px;padding-bottom:10px;font-size:14px}.anonymize-page .form-check-label{font-size:14px;line-height:1.5}.anonymize-page .form-text{font-size:12px;line-height:1.6}.anonymize-page .repo-access-details{margin:12px 0 16px}.anonymize-page .repo-access-note{font-size:11px}.anonymize-page .anonymize-submit-bar{flex:none;position:static;margin:0;padding:16px 20px;background:var(--paper-card);border-top:1px solid var(--border-color)}.anonymize-page .anonymize-submit-bar .btn{width:100%;font-size:14px;padding:10px 12px;min-height:43px}.checkout-return-note{font-size:11px;line-height:1.5;color:var(--ink-muted);margin:8px 0 0;text-align:center}.anonymize-fields>.alert,.anonymize-fields>.anonymize-review-note,.anonymize-fields>.draft-status{margin:12px 20px}.anonymize-page .anonymize-preview-col{min-height:0;padding:20px;position:relative;background:var(--canvas-bg-color)}.anonymize-page .anonymize-preview-head{border:0;padding:0;min-height:32px;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between}.anonymize-preview-head button,.anonymize-preview-head strong{font-size:13px}.anonymize-page .anonymize-preview-body{padding:24px;border-radius:6px;min-height:480px;overflow-wrap:anywhere;font:14px/1.7 var(--font-sans)}.anonymize-page .anonymize-preview-body h1{font-size:27px;line-height:1.2;margin:0 0 20px;padding-bottom:14px}.anonymize-page .anonymize-preview-body h2{font-size:18px;margin:28px 0 12px}.anonymize-page .anonymize-preview-body pre{font-size:12px;padding:15px}.anonymize-page.preview-expanded .anonymize-split{grid-template-columns:1fr}.anonymize-page.preview-expanded .anonymize-form-col{display:none}.hosting-usage{font-size:12px;color:var(--ink-muted);margin:0 0 4px}.expiration-choices{border:0;padding:0;margin:0 0 16px;min-width:0}.expiration-choice{display:flex;align-items:flex-start;gap:10px;padding:12px 0;margin:0;cursor:pointer;font-size:14px;font-weight:500;line-height:1.5}.expiration-choice input{width:16px;height:16px;margin:4px 0 0;flex:none;accent-color:var(--accent)}.expiration-choice small{display:block;font-size:12px;font-weight:400;color:var(--ink-muted);margin-top:2px}.dated-options{padding:2px 0 14px 26px}.hosting-date,.hosting-property{display:grid;grid-template-columns:48px minmax(0,1fr);gap:8px;align-items:center;margin-bottom:10px}.hosting-property{margin-bottom:0}.hosting-date .paper-field-label,.hosting-property label{font-size:12px;font-weight:400;margin:0}.hosting-date .invalid-feedback{grid-column:1/-1}.anonymize-page .conference-field{border-bottom:1px solid var(--border-color);padding:0 0 16px;margin:0 0 14px}.anonymize-page .conference-hosting{margin:8px 0 0;padding:8px 12px;border-radius:8px;font-size:13px;line-height:1.45;color:var(--ink-soft);background:color-mix(in srgb,var(--ink-muted) 8%,transparent)}.anonymize-page .conference-hosting.is-covered{color:var(--color);background:var(--accent-soft)}.anonymize-page .conference-hosting a{font-weight:600}.subscription-choice{padding:16px;background:var(--paper-bg-alt);border-radius:6px;margin-top:4px}.subscription-choice h3{font-size:13px;font-weight:600;margin:0 0 10px}.billing-cycle{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;border:0;padding:0;margin:0 0 12px;min-width:0}.cycle-option{display:flex;align-items:center;gap:7px;padding:10px 8px;border:1px solid var(--border-color);border-radius:4px;background:var(--paper-card);font-size:12px;cursor:pointer;margin:0}.cycle-option.selected{border-color:var(--accent);background:var(--accent-soft)}.cycle-option input{accent-color:var(--accent);margin:0;flex:none}.subscription-choice p{font-size:12px;line-height:1.5;margin:0 0 8px}.subscription-choice p:last-child{margin:0}.hosting-terms{font-size:12px;line-height:1.5;color:var(--ink-muted)}.capacity-reason{font-size:13px}.capacity-options,.repository-pass{margin-top:12px;font-size:12px}.capacity-options summary,.repository-pass summary{cursor:pointer}.capacity-options p,.repository-pass p{margin:8px 0}.capacity-options .task-text-button{display:block}@media(max-width:767px){.anonymize-page .anonymize-split{display:block;overflow:visible}.anonymize-page .anonymize-form-col .paper-settings-main{height:auto}.anonymize-fields{overflow:visible}.anonymize-page .paper-settings-main .paper-settings-section{padding:18px 16px 20px}.anonymize-page .anonymize-topbar{padding:14px 16px}.anonymize-page .anonymize-preview-col{padding:16px}.anonymize-page .anonymize-preview-body{padding:20px}.anonymize-page .anonymize-submit-bar{padding:16px}.anonymize-page .preview-expand{display:none}.anonymize-page .anonymize-mobile-tabs{padding:0;gap:0;background:var(--paper-card)}.anonymize-mobile-tabs button{border-radius:0;padding:12px;min-height:44px}.anonymize-mobile-tabs button[aria-selected=true]{background:0 0;box-shadow:inset 0 -2px var(--accent)}.cycle-option{min-height:44px}}.anonymize-page{--font-sans:system-ui,-apple-system,sans-serif;font-family:var(--font-sans)}body:not(.dark-mode) .anonymize-page{--paper-card:#fff;--canvas-bg-color:#faf9f6;--paper-bg-alt:#f5f4f0;--border-color:#dedbd4;--color:#242320;--ink-muted:#68655e}.anonymize-page .repo-access-controls .btn{font-size:12px;padding:8px 12px;min-height:36px}.anonymize-page .form-check-label{font-weight:400}.anonymize-page .form-check{padding-left:26px}.anonymize-page .form-check input{width:16px;height:16px;margin-left:-26px;accent-color:var(--accent)}.anonymize-page .form-check small{margin-top:6px}.anonymize-page .btn.btn-icon.refresh-branches{display:inline-flex;align-items:center;justify-content:center;width:40px;min-width:40px;height:100%;min-height:40px;padding:0}@media (max-width:767px){.anonymize-page #branch,.anonymize-page #commit{min-height:44px}.anonymize-page .btn.btn-icon.refresh-branches{width:44px;min-width:44px;min-height:44px}}.anonymize-page .redaction-syntax{font-size:12px;margin-top:8px}.redaction-syntax summary{cursor:pointer;color:var(--link-color);min-height:28px}.anonymize-page .term-hint{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-top:8px;padding:8px 10px;border-radius:6px;background:#fbf1df;color:#5c3a07;font-size:12px}.anonymize-page .term-hint code{background:0 0;padding:0;color:inherit;font-weight:600}.anonymize-page .term-hint .btn{flex:none}.anonymize-page .term-hint-more{margin-top:6px;font-size:12px;color:var(--ink-muted)}body.dark-mode .anonymize-page .term-hint{background:#3a2f1c;color:#f3dcb4}.anonymize-page .preserve-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:4px 0 16px;padding-top:14px;border-top:1px solid var(--paper-border,#e5e1d9)}.anonymize-page .preserve-row-text{display:flex;flex-direction:column;min-width:0}.anonymize-page .preserve-row .paper-field-label{margin-bottom:2px}.anonymize-page .preserve-row-value{font-size:12px;color:var(--ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.anonymize-page .preserve-row .btn{flex:none}.preserve-dialog{width:min(620px,calc(100vw - 32px));padding:24px;border:1px solid var(--paper-border,#e5e1d9);border-radius:12px;background:var(--paper-bg,#faf9f6);color:inherit;box-shadow:0 16px 64px #0003}.preserve-dialog::backdrop{background:#0006}.preserve-dialog h2{margin:0 0 6px;font-size:20px}.preserve-dialog .preserve-intro{font-size:13px;color:var(--ink-muted);margin-bottom:14px}.preserve-dialog .preserve-tree{margin-top:10px;height:300px;overflow:auto;border:1px solid var(--paper-border,#e5e1d9);border-radius:8px;background:var(--paper-card);padding:4px 0}.preserve-dialog .preserve-item{display:flex;align-items:center;gap:6px;min-height:30px;padding-right:10px;font-size:13px}.preserve-dialog .preserve-item:hover{background:var(--paper-bg-alt)}.preserve-dialog .preserve-caret,.preserve-dialog .preserve-caret-space{flex:none;width:18px;height:22px;border:0;padding:0;background:0 0;color:var(--ink-muted);font-size:12px;cursor:pointer}.preserve-dialog .preserve-item input{flex:none;margin:0}.preserve-dialog .preserve-name{flex:1;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,monospace;font-size:12.5px;cursor:pointer}.preserve-dialog .preserve-note{flex:none;font-size:11px;color:var(--ink-muted)}.preserve-dialog .preserve-status{margin:10px 12px;font-size:13px;color:var(--ink-muted)}.preserve-dialog .preserve-patterns{margin-top:12px;font-size:13px}.preserve-dialog .preserve-patterns summary{cursor:pointer;color:var(--link-color);min-height:28px}.preserve-dialog .preserve-patterns textarea{margin-top:6px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:12.5px}.preserve-dialog .preserve-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:16px}.preserve-dialog .preserve-count{font-size:13px;color:var(--ink-muted)}.preserve-dialog .preserve-actions{display:flex;gap:8px;margin-left:auto}body.dark-mode .preserve-dialog{background:#242320;color:#faf9f6}.anonymize-page .anonymize-preview-body h2{border:0;padding:0;font-weight:700}.anonymize-page .anonymize-preview-body h1{font-weight:700}.anonymize-page .anonymize-preview-body pre{background:var(--paper-bg-alt);line-height:1.7}.anonymize-page .anonymize-preview-body pre code{font:12px/1.7 ui-monospace,monospace;background:0 0;padding:0}.anonymize-page .anonymize-preview-body{--main-bg-color:var(--paper-card);background:var(--paper-card)}.anonymize-page .anonymize-submit-bar .btn{font-weight:600}.anonymize-page .form-grid-2 .form-group{margin-bottom:0}.anonymize-page .form-check small{margin-left:-26px}.user-settings{max-width:1060px;padding:28px 26px 40px}.user-settings .settings-title{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:22px}.user-settings .settings-title h1{font:650 26px/1.3 var(--font-sans);letter-spacing:-.025em;margin:0}.settings-title>span{color:var(--ink-muted);font-size:12px}.settings-nav{display:flex;gap:28px;border-bottom:1px solid var(--border-color)}.settings-nav button{border:0;border-radius:0;background:0 0;color:var(--ink-muted);padding:12px 0;min-height:44px;font:13px/1.4 var(--font-sans)}.settings-nav button[aria-current=page]{color:var(--color);font-weight:600;box-shadow:inset 0 -2px var(--accent)}.settings-nav button:hover{color:var(--accent)}.user-settings .settings-scope{color:var(--ink-muted);font-size:12px;margin:20px 0 4px}.user-settings .settings-row{display:grid;grid-template-columns:210px minmax(0,1fr);gap:32px;padding:22px 0;border-bottom:1px solid var(--border-color)}.user-settings .settings-label,.user-settings .settings-row>h2{font-size:13px;font-weight:600;line-height:1.5;margin:8px 0 0;display:block}.user-settings .settings-help{font-size:12px;color:var(--ink-muted);margin:7px 0 0;line-height:1.6}.user-settings .form-control{font-size:14px;min-height:40px;padding:9px 10px;border-radius:4px;background:var(--paper-card)}.user-settings textarea.form-control{line-height:1.6}.settings-syntax{font-size:12px;margin-top:8px}.settings-syntax summary{cursor:pointer;color:var(--link-color);min-height:26px}.settings-syntax p{margin:8px 0}.settings-checks{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px;padding:4px 0;margin-bottom:12px}.user-settings .settings-check{display:flex;gap:9px;align-items:center;font-size:13px;font-weight:400;margin:0}.user-settings .settings-check .form-check-input{position:static;width:16px;height:16px;margin:0;flex:none;accent-color:var(--accent)}.settings-save{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:18px 0 22px}.settings-save-status{color:var(--ink-muted);font-size:12px}.settings-save #save{margin-left:auto;min-width:125px}.settings-save-error{color:var(--status-error);flex-basis:100%}.user-settings .settings-inline{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.user-settings .btn{font-size:13px;min-height:40px;padding:9px 13px}.settings-inline .btn{flex-shrink:0}.user-settings #settings-quota{margin:22px 0 16px}.user-settings .quota-row{gap:20px}.user-settings .quota-item{padding:0;background:0 0;border:0}.user-settings .quota-label{font-size:12px}.user-settings .quota-value{font-size:13px;margin:6px 0}.user-settings .quota-value strong{font-size:14px}.user-settings .quota-percent,.user-settings .quota-remaining{font-size:11px}.user-settings .settings-plan{background:var(--paper-card);border:1px solid var(--border-color);border-radius:6px;padding:20px;margin:20px 0 0}.user-settings .settings-plan h3{font-size:15px;margin:0 0 10px}.user-settings .settings-plan>p{font-size:13px}.settings-cycles{display:flex;flex-wrap:wrap;gap:10px;border:0;padding:0;margin:16px 0}.settings-cycles label{display:flex;align-items:center;gap:8px;border:1px solid var(--border-color);background:var(--paper-card);border-radius:5px;padding:12px;font-size:13px;margin:0;cursor:pointer;flex:1}.settings-cycles label.selected{border-color:var(--accent);background:var(--accent-soft)}.settings-cycles input{accent-color:var(--accent)}.settings-addons{flex-direction:column}.settings-addons label{align-items:flex-start}.settings-addons small{color:var(--ink-muted);font-size:12px}.settings-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.settings-notice{background:var(--paper-bg-alt);border:1px solid var(--border-color);border-radius:5px;padding:14px 16px;margin:16px 0;font-size:13px}.settings-notice p{margin:6px 0 12px}.settings-text-button{border:0;background:0 0;color:var(--link-color);padding:8px 0;font-size:12px}.settings-pass{margin-top:18px}.settings-pass label{display:block;font-size:13px;margin-bottom:8px}.settings-pass .btn{margin-top:12px}.settings-purchase{padding:12px 0;border-bottom:1px solid var(--border-color);font-size:13px;overflow-wrap:anywhere}.settings-purchase:last-child{border:0}.settings-purchase>span{display:block;color:var(--ink-muted);margin-top:4px}.settings-purchase-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.settings-purchase-parts{margin:6px 0 0;padding-left:18px;font-size:12px;color:var(--ink-muted)}.settings-status{display:inline-block;font-size:12px;font-weight:500;line-height:18px;border-radius:999px;padding:1px 9px;background:var(--paper-bg-alt);color:var(--ink-muted);white-space:nowrap}.settings-status.is-active{background:var(--accent-soft);color:var(--accent);box-shadow:inset 0 0 0 1px rgba(31,106,100,.3)}.settings-status.is-disputed,.settings-status.is-overdue,.settings-status.is-refunded{background:rgba(185,28,28,.08);color:#b91c1c}body.dark-mode .settings-status.is-disputed,body.dark-mode .settings-status.is-overdue,body.dark-mode .settings-status.is-refunded{background:rgba(248,113,113,.16);color:#f87171}.settings-badge{display:inline-block;margin-left:6px;font-size:10px;font-weight:600;letter-spacing:.02em;border-radius:999px;padding:1px 7px;background:var(--accent-soft);border:1px solid var(--accent);vertical-align:middle}.user-settings .settings-comparison th:first-child{width:22%}.settings-comparison thead .settings-badge{display:table;margin:6px 0 0;white-space:nowrap}.user-settings .settings-subhead{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);margin:18px 0 4px}.user-settings .paper-account-card{padding:24px 0;border:0;background:0 0}.user-settings .paper-danger-zone{margin-top:24px}@media (max-width:767px){.user-settings{padding:22px 18px 90px}.user-settings .settings-row{grid-template-columns:1fr;gap:12px;padding:20px 0}.user-settings .settings-label,.user-settings .settings-row>h2{margin-top:0}.settings-nav{gap:18px;justify-content:space-between}.settings-nav button{text-align:left;font-size:12px;max-width:124px}.user-settings .settings-check{font-size:12px;min-height:28px}.settings-save{gap:8px}.settings-save-status{font-size:11px}.settings-save #save{min-width:120px}.user-settings .quota-row{grid-template-columns:1fr}.settings-cycles label{flex-basis:100%}}.user-settings .settings-save .draft-status{margin:0;padding:0}.settings-delete-confirm{max-width:480px;margin-top:18px}.settings-delete-confirm label{display:block;font-size:13px;margin-bottom:8px}.user-settings .quota-usage{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.user-settings .quota-usage .quota-item+.quota-item{border:0;padding:0}.user-settings .quota-percent,.user-settings .quota-remaining{display:none}@media (max-width:767px){.user-settings .quota-usage{grid-template-columns:1fr}}.settings-header-actions{display:flex;align-items:center;gap:16px}.settings-header-actions>span{color:var(--ink-muted);font-size:12px}.user-settings .settings-upgrade{color:var(--accent);border-color:var(--accent);background:0 0}.user-settings .settings-comparison{width:100%;table-layout:fixed;margin:16px 0 20px;font-size:12px}.settings-comparison td,.settings-comparison th{padding:10px 8px;border-bottom:1px solid var(--border-color);text-align:left;overflow-wrap:anywhere;vertical-align:top}.settings-comparison th:first-child{width:42%;padding-left:0}.settings-comparison tbody th{font-weight:400}.settings-comparison thead th{font-weight:600}@media(max-width:580px){.settings-header-actions>span{display:none}.settings-header-actions{gap:8px}.user-settings .settings-comparison{font-size:11px}}.navbar .nav-link.nav-upgrade{border:1px solid var(--accent);border-radius:5px;color:var(--accent)!important;padding:7px 12px!important;margin-right:12px;font-size:12px;line-height:1.5}.navbar .nav-link.nav-upgrade:hover{background:var(--accent-soft)}@media(max-width:991px){.navbar .nav-link.nav-upgrade{display:inline-block;min-height:44px;padding:11px 14px!important;margin:8px 0}}@media (max-width:600px){.ov-cache .ov-performance-window{display:grid;grid-template-columns:auto minmax(0,1fr);width:100%}.ov-cache .ov-performance-window select{width:100%;min-width:0}}.viewer-loading{padding:24px clamp(16px,4vw,40px);min-height:280px;color:var(--color)}.viewer-loading-status{min-height:84px}.viewer-loading-status strong{display:block;font-size:15px;font-weight:600}.viewer-loading-name{display:block;margin-top:6px;font-family:monospace;font-size:13px;overflow-wrap:anywhere;opacity:.75}.viewer-loading-status p{margin:12px 0;font-size:14px}.viewer-loading-lines{display:grid;gap:14px;max-width:720px;padding-top:16px}.viewer-loading-lines span{height:9px;width:70%;background:var(--border-color);border-radius:3px}.viewer-loading-lines span:nth-child(3n+1){width:48%}.viewer-loading-lines span:nth-child(3n+2){width:88%}.ace_scrollbar-h{height:8px!important}.ace_scrollbar-h::-webkit-scrollbar{height:8px}.ace_scrollbar::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ink-faint) 55%,transparent);border-radius:4px}.ace_scrollbar::-webkit-scrollbar-track{background:0 0}.explorer-content,.explorer-main{background:var(--paper-card)}.explorer-content .dir-card,.explorer-content .file-card{margin:0!important;border:0;border-radius:0;background:0 0;overflow:visible}.explorer-content .file-card{min-height:100%}.explorer-content .file-card.is-code{height:100%!important;overflow:clip}.explorer-content .file-card-head{position:sticky;top:0;z-index:3;min-height:52px;padding:8px 12px 8px 32px;border-radius:0!important;border-bottom:1px solid var(--border-soft);background:color-mix(in srgb,var(--paper-card) 90%,transparent);-webkit-backdrop-filter:saturate(1.2) blur(8px);backdrop-filter:saturate(1.2) blur(8px)}.dark-mode .explorer-content .file-card-head{background:color-mix(in srgb,var(--paper-card) 90%,transparent)}.explorer-content .file-card .file-content.markdown-body{max-width:880px;padding:36px 32px 96px;background:0 0!important}.explorer-content .file-card .ace_editor{border-radius:0}.explorer-content .ace_editor.ace-chrome .ace_gutter,.explorer-content .ace_editor.ace-nord-dark .ace_gutter{background:var(--paper-card)!important;border-right:0}.explorer-content .ace_editor .ace_gutter-cell{padding-left:20px}.explorer-content .dir-card{border-bottom:1px solid var(--border-soft)}.explorer-content .dir-card-head{padding:14px 32px;background:0 0!important;border-bottom:0}.explorer-content .dir-row{padding:0 32px}.explorer-content .dir-card+.file-card{margin-top:0!important}@media (max-width:767px){.explorer-content .file-card-head{padding:6px 8px 6px 16px;min-height:0}.explorer-content .file-card .file-content.markdown-body{padding:20px 16px 72px}.explorer-content .ace_editor .ace_gutter-cell{padding-left:8px}.explorer-content .dir-card-head,.explorer-content .dir-row{padding-left:16px;padding-right:16px}}.leftCol-brand{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:52px;padding:0 14px;border-bottom:1px solid var(--border-soft)}.leftCol-logo{font-family:var(--font-serif);font-size:19px;letter-spacing:-.01em;color:var(--color)!important;text-decoration:none!important;white-space:nowrap}.leftCol-logo em{font-style:italic}.leftCol-badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px 2px 6px;border-radius:999px;background:var(--hover-bg-color);font-size:11.5px;font-weight:500;color:var(--ink-soft);white-space:nowrap}.leftCol-badge .ui-icon{width:13px;height:13px;color:var(--status-ready)}.leftCol-search{padding-top:12px}.leftCol-links{display:flex;align-items:center;gap:14px;margin:0 0 10px;font-size:13px}.leftCol-links a{color:var(--ink-soft);text-decoration:none}.leftCol-links a:hover{color:var(--color);text-decoration:underline;text-underline-offset:3px}.leftCol-theme{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;margin-left:auto;border:0;border-radius:var(--radius-control);background:0 0;color:var(--ink-soft);cursor:pointer}.leftCol-theme:hover{background:var(--hover-bg-color);color:var(--color)}.leftCol-theme .ui-icon{width:16px;height:16px}.leftCol-foot .leftCol-zip{display:flex}.card-files-btn{display:none!important}@media (max-width:991px){.card-files-btn{display:inline-flex!important}}.card-files-btn.is-needed{display:inline-flex!important}@media (max-width:991px){.leftCol-brand{padding-right:60px}.leftCol-head{position:absolute;top:0;right:0;z-index:2;padding:4px 6px!important;border:0!important;background:0 0!important}.leftCol-head .leftCol-eyebrow{display:none}}@media (max-width:991px){.leftCol-head .leftCol-close{width:40px;height:40px;border:0!important;background:0 0!important;border-radius:var(--radius-control);color:var(--ink-soft)}.leftCol-head .leftCol-close:hover{background:var(--hover-bg-color)!important;color:var(--color)}.leftCol-brand{min-height:52px}}.leftCol-links .leftCol-donate{display:inline-flex;align-items:center;gap:5px}.leftCol-links .leftCol-donate .ui-icon{width:14px;height:14px}.leftCol-links .leftCol-donate:hover{color:var(--status-error);text-decoration:none}.leftCol-links .leftCol-donate:hover .ui-icon{fill:currentColor}.files .file.active>a{border-radius:var(--radius-control)!important}.files .file.active>a::before{left:4px!important;top:7px!important;bottom:7px!important;width:3px!important;border-radius:2px!important}.leftCol-backdrop{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:rgba(20,18,16,.45)!important}@media (max-width:991px){.leftCol-head{right:6px!important}}.symbols{position:relative}.file-card-head .btn.btn-symbols{gap:6px;padding:0 10px;color:var(--ink-soft);font-weight:500}.symbols-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:30;width:300px;max-height:420px;overflow:auto;padding:6px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);box-shadow:0 12px 32px rgba(26,24,21,.16)}.symbols-head{padding:6px 8px 8px;font-size:12px;font-weight:600;color:var(--ink-muted)}.symbols-item{display:flex;align-items:center;gap:10px;width:100%;height:32px;padding:0 8px;border:0;border-radius:var(--radius-control);background:0 0;font:inherit;font-size:13px;color:var(--color);text-align:left;cursor:pointer}.symbols-item:focus-visible,.symbols-item:hover{background:var(--hover-bg-color);outline:0}.symbols-kind{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;font:600 11px/1 var(--font-mono);flex-shrink:0}.symbols-kind.is-function{background:color-mix(in srgb,#6b45b8 14%,transparent);color:#6b45b8}.symbols-kind.is-class{background:color-mix(in srgb,#b4362a 14%,transparent);color:#b4362a}.dark-mode .symbols-kind.is-function{color:#c9a8f5}.dark-mode .symbols-kind.is-class{color:#f2897d}.symbols-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);font-size:12.5px}.symbols-line{font-size:12px;color:var(--ink-muted);font-variant-numeric:tabular-nums}@media (max-width:1180px){.file-card-head .btn-symbols .btn-find-label{display:none}.file-card-head .btn-symbols{width:32px;padding:0!important}}.ace_search{top:0!important;left:0!important;right:0!important;border:0!important;border-bottom:1px solid var(--border-soft)!important;border-radius:0!important;box-shadow:none!important;padding:8px 12px 8px 8px!important;background:var(--paper-card)!important}.ace_search_field{border-color:var(--border-color)!important}.ace_search .ace_button{border:1px solid transparent!important}.ace_search .ace_button.checked{background:var(--accent-soft)!important;color:var(--accent)!important;border-color:color-mix(in srgb,var(--accent) 40%,transparent)!important}.ace_search_counter{color:var(--ink-soft)!important;font-size:13px!important}.ace_editor .ace_marker-layer .ace_selected-word{background:var(--accent-soft)!important}.ace_editor.ace-chrome .ace_marker-layer .ace_selection{background:color-mix(in srgb,var(--accent) 28%,transparent)!important;box-shadow:0 0 0 1px var(--accent)!important}.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection{background:color-mix(in srgb,var(--accent) 34%,transparent)!important;box-shadow:0 0 0 1px var(--accent)!important}.leftCol-foot{padding:10px 14px 12px}.leftCol-links{margin:0 0 6px;gap:12px}.leftCol-repo-actions{display:inline-flex}.leftCol-project-header .leftCol-hide{display:inline-flex}@media (max-width:991px){.leftCol-project-header button.leftCol-hide{display:none}}.ace-chrome .ace_string{color:#11704f!important}.ace-chrome .ace_entity.ace_name.ace_function,.ace-chrome .ace_support.ace_function{color:#5b3dc2!important}.ace-chrome .ace_keyword,.ace-chrome .ace_storage{color:#b02f22!important}.ace-chrome .ace_comment{color:#6f6a61!important}.ace-chrome .ace_keyword.ace_operator,.ace-chrome .ace_paren,.ace-chrome .ace_punctuation{color:#5c574f!important}.dark-mode .ace_editor.ace-nord-dark,.dark-mode .explorer-content,.dark-mode .explorer-content .ace_editor.ace-nord-dark .ace_gutter,.dark-mode .explorer-main{background:var(--canvas-bg-color)!important}.dark-mode .ace_search,.dark-mode .explorer-content .file-card-head{background:color-mix(in srgb,var(--canvas-bg-color) 92%,transparent)!important}.dark-mode .leftCol{background:var(--sidebar-bg-color)}.dark-mode .symbols-menu{background:#22201c}.paper-stats-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}.paper-stats-grid .paper-stat-card{padding-left:24px!important;padding-right:24px!important}.paper-stats-grid .paper-stat-card:first-child{padding-left:0!important}.paper-stat-value{font-size:40px!important}.paper-stats-grid .paper-stat-card{margin-right:0!important}.paper-stats-grid .paper-stat-card:last-child{border-right:0;padding-right:0!important}@media (max-width:767px){.paper-stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.paper-stats-grid .paper-stat-card:nth-child(odd){padding-left:0!important}}.dark-mode .leftCol-foot,.leftCol-foot{background:0 0!important}.paper-faq-toc nav a.active,.paper-faq-toc nav a:hover{border-left-color:var(--accent)!important}.card-files-label{display:none}@media (max-width:991px){.file-card-head .card-files-btn{width:auto!important;padding:0 10px!important;gap:6px;border:1px solid var(--border-color)!important;color:var(--color)!important}.card-files-label{display:inline;font-size:13px;font-weight:500}}@media (max-width:767px){.file-card-head .btn.btn-icon-only{color:var(--color)!important}.file-card-head .file-card-meta .meta-extra{display:none!important}.file-card.is-code.no-wrap::after{width:64px!important}}.btn.btn-ghost.is-on{color:var(--accent)!important;background:var(--accent-soft)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 35%,transparent)!important}.explorer-content .ace_editor.ace-chrome .ace_gutter,.explorer-content .ace_editor.ace-nord-dark .ace_gutter{border-right:1px solid var(--border-soft)!important}.ace_search .ace_button{width:28px!important;height:28px!important;border:1px solid var(--border-color)!important;color:var(--ink-soft)!important;font-size:12px!important}.ace_search .ace_button.checked{background:var(--accent-soft)!important;color:var(--accent)!important;border-color:var(--accent)!important}.ace_search_counter{margin-left:2px!important}.ace_editor .ace_marker-layer .ace_selected-word{background:rgba(242,204,96,.38)!important;box-shadow:none!important}.ace_editor.ace-chrome .ace_marker-layer .ace_selection,.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection{background:#f2cc60!important;box-shadow:0 0 0 1px #c69026!important}.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection{background:rgba(242,204,96,.55)!important}.explorer-content .file-card .file-content.markdown-body{margin:0 auto!important}.leftCol-project-header .leftCol-zipbtn{width:auto!important;gap:4px;padding:0 6px;font-size:11.5px;font-weight:600;letter-spacing:.02em}.leftCol-project-header .leftCol-zipbtn .ui-icon{width:13px;height:13px}.leftCol-brand{justify-content:space-between}.repo-panel{display:grid;gap:8px;padding:14px 14px 12px;border-bottom:1px solid var(--border-soft)}.repo-panel-title{display:flex;align-items:center;gap:8px;min-width:0;font-size:14px;font-weight:600;color:var(--color)}.repo-panel-title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.repo-panel-title .ui-icon{width:16px;height:16px;flex-shrink:0;color:var(--ink-muted)}.repo-panel-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:12.5px;color:var(--ink-soft)}.repo-panel-meta .last-update{font:inherit!important;color:inherit!important;padding:0;border:0}.repo-panel-meta>span+span::before{content:"·";margin-right:10px;color:var(--ink-faint)}.repo-panel-meta>.repo-panel-badge+span::before{content:none}.repo-panel-badge{display:inline-flex;align-items:center;gap:4px;padding:1px 8px 1px 6px;border-radius:999px;background:color-mix(in srgb,var(--status-ready) 12%,transparent);color:var(--status-ready);font-size:11.5px;font-weight:600}.repo-panel-badge .ui-icon{width:12px;height:12px}.repo-panel-zip{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-card);font-size:13px;font-weight:500;color:var(--color)!important;text-decoration:none!important}.repo-panel-zip:hover{background:var(--hover-bg-color);border-color:var(--ink-faint)}.repo-panel-zip .ui-icon{width:15px;height:15px}.dark-mode .repo-panel-zip{background:0 0}.leftCol-project-header{display:none!important}.leftCol-search{padding-top:12px;padding-bottom:4px}.tb-file{display:inline-flex;align-items:center;gap:4px;margin-left:6px;padding-left:10px;border-left:1px solid var(--border-color)}.file-card-head .btn.tb-btn{height:32px;gap:6px;padding:0 12px!important;border:1px solid var(--border-color)!important;border-radius:var(--radius-control)!important;background:var(--paper-card)!important;color:var(--color)!important;font-size:13px;font-weight:500}.file-card-head .btn.tb-btn:hover{background:var(--hover-bg-color)!important;border-color:var(--ink-faint)!important}.file-card-head .btn.tb-btn .ui-icon{width:15px;height:15px}.file-card-head .btn.tb-btn-icon{width:32px;padding:0!important;justify-content:center}.dark-mode .file-card-head .btn.tb-btn{background:0 0!important}.file-card-actions>.tb-file:first-child{border-left:0;padding-left:0;margin-left:0}.tb-more{position:relative;display:none}.tb-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:40;width:220px;padding:6px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);box-shadow:0 12px 32px rgba(26,24,21,.18)}.tb-menu>a,.tb-menu>button{display:flex;align-items:center;gap:10px;width:100%;height:40px;padding:0 10px;border:0;border-radius:var(--radius-control);background:0 0;font:inherit;font-size:14px;color:var(--color)!important;text-align:left;text-decoration:none!important}.tb-menu>a:hover,.tb-menu>button:hover{background:var(--hover-bg-color)}.tb-menu .ui-icon{width:16px;height:16px;color:var(--ink-soft)}.tb-menu-check{margin-left:auto;color:var(--accent);font-weight:600}.tb-menu-sep{height:1px;margin:6px 4px;background:var(--border-soft)}@media (max-width:767px){.tb-more{display:inline-flex}.file-card-head .btn-find,.file-card-head .btn-goto,.file-card-head .btn-toggle,.file-card-head .symbols,.file-card-head .tb-file,.file-card-head .view-switch+.file-card-actions .tb-file{display:none!important}.file-card-head .tb-more-btn{width:40px!important;height:40px!important}.file-card-head .card-files-btn{height:40px!important}.file-card-path .paths .breadcrumb-item:last-child{font-size:15px}}.feat-mock{height:380px;overflow:hidden;background:var(--paper-card);font-family:var(--font-sans);color:var(--color)}.fm-form{padding:22px 26px;display:grid;gap:8px}.fm-label{font-size:12px;font-weight:600;color:var(--ink-soft);margin-top:6px}.fm-input{height:36px;display:flex;align-items:center;padding:0 12px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--input-bg);font-size:13.5px}.fm-input-sm{width:150px}.fm-chips{display:flex;flex-wrap:wrap;gap:6px}.fm-chips span{padding:4px 10px;border-radius:999px;background:color-mix(in srgb,var(--status-error) 9%,transparent);color:var(--color);font-size:12.5px;text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--status-error) 55%,transparent)}.fm-chips .fm-chip-add{background:0 0;border:1px dashed var(--border-color);color:var(--ink-muted);text-decoration:none}.fm-row{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:end}.fm-toggles{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}.fm-toggles span{padding:5px 10px;border:1px solid var(--border-color);border-radius:var(--radius-control);font-size:12.5px;color:var(--ink-muted)}.fm-toggles .is-on{border-color:color-mix(in srgb,var(--accent) 45%,transparent);background:var(--accent-soft);color:var(--accent)}.fm-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--border-soft)}.fm-share{font-family:var(--font-mono);font-size:12px;color:var(--ink-soft)}.fm-btn{padding:9px 14px;border-radius:var(--radius-button);background:var(--accent);color:#fff;font-size:13px;font-weight:600;white-space:nowrap}.dark-mode .fm-btn{background:#1f6a64}.fm-viewer{display:grid;grid-template-columns:150px 1fr;height:100%}.fm-tree{padding:14px 8px;background:var(--paper-bg-alt);border-right:1px solid var(--border-soft);font-size:12.5px}.fm-tree div{padding:5px 10px;border-radius:var(--radius-control);color:var(--ink-soft)}.fm-tree .is-folder::before{content:"▸ ";color:var(--ink-faint)}.fm-tree .is-active{background:rgba(128,128,128,.14);color:var(--color);font-weight:500;box-shadow:inset 3px 0 0 var(--accent)}.fm-code{min-width:0}.fm-code-bar{display:flex;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--border-soft);font-size:12.5px;color:var(--ink-muted)}.fm-code-bar b{color:var(--color);font-weight:600}.fm-code pre{margin:0;padding:12px 16px;font-family:var(--font-mono);font-size:12.5px;line-height:1.75;color:var(--color);background:0 0;white-space:pre}.fm-code .ln{display:inline-block;width:22px;margin-right:14px;text-align:right;color:var(--ink-faint)}.fm-code .k{color:#b02f22}.fm-code .f{color:#5b3dc2}.fm-code .s{color:#11704f}.fm-code .c{color:var(--ink-muted);font-style:italic}.dark-mode .fm-code .k{color:#f2897d}.dark-mode .fm-code .f{color:#c9a8f5}.dark-mode .fm-code .s{color:#9dd3a8}.fm-code .redact{padding:0 4px;border-radius:3px;background:var(--accent-soft);color:var(--accent);font-style:normal}.fm-dash{padding:12px 18px;font-size:13px}.fm-dash-head,.fm-dash-row{display:grid;grid-template-columns:1.7fr .9fr .5fr .9fr;gap:12px;align-items:center}.fm-dash-head{padding:8px 0;border-bottom:1px solid var(--border-color);font-size:12px;font-weight:600;color:var(--ink-muted)}.fm-dash-row{padding:12px 0;border-bottom:1px solid var(--border-soft)}.fm-dash-row b{display:block;font-weight:600}.fm-dash-row i{display:block;font-style:normal;font-size:12px;color:var(--ink-muted);font-family:var(--font-mono)}.fm-dash-row.is-muted{color:var(--ink-muted)}.fm-dash .st{display:inline-flex;align-items:center;gap:6px}.fm-dash .st::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.fm-dash .st.is-ready{color:var(--status-ready)}.fm-dash .st.is-progress{color:var(--status-progress)}.fm-dash .st.is-expired{color:var(--ink-muted)}@media (max-width:767px){.feat-mock{height:auto;min-height:260px}.fm-viewer{grid-template-columns:1fr}.fm-tree{display:none}.fm-dash-head span:nth-child(4),.fm-dash-row span:nth-child(4){display:none}.fm-dash-head,.fm-dash-row{grid-template-columns:1.6fr 1fr .5fr}.fm-row{grid-template-columns:1fr}}.paper-stat-delta{margin-top:6px!important;font-family:var(--font-sans)!important;font-size:13px!important;color:var(--ink-muted)!important}.paper-stats-grid .paper-stat-card{padding-top:22px!important;padding-bottom:22px!important}.paper-eyebrow,.paper-faq-eyebrow,.paper-stats-meta{font-family:var(--font-sans)!important;font-size:12.5px!important;font-weight:600!important;letter-spacing:.06em!important;color:var(--ink-soft)!important}.paper-feature-tab .paper-eyebrow{font-size:12px!important}.paper-reassure li::before{color:var(--ink-soft)!important}.feat-mock{height:auto!important;min-height:300px}@media (max-width:767px){.file-card.is-code.no-wrap::after{display:none!important}.file-card.is-code.no-wrap .ace_scroller{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 48px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 48px),transparent)}.explorer-content .file-card-head{row-gap:6px;padding-top:8px;padding-bottom:8px}.file-card-path{flex:1 1 auto;gap:10px}.file-card-path .paths{flex:1 1 auto;min-width:0}.file-card-path .paths .breadcrumb-item:last-child{overflow:hidden;text-overflow:ellipsis}.file-card-head .card-files-btn{height:32px!important;border-radius:var(--radius-control)!important;padding:0 10px!important}.file-card-head .tb-more-btn{width:36px!important;height:32px!important}.file-card-head>.view-switch{order:4;margin-left:auto!important}.file-card-head .file-card-meta{order:3;flex-basis:auto!important;flex:1 1 auto;margin:0!important;align-self:center}}@media (min-width:768px){.explorer-content .file-card-head{padding-left:20px}.explorer-content .file-card .file-content.markdown-body{margin:0!important;padding-left:20px!important;padding-right:40px!important;max-width:900px}}.dark-mode .files .file.active>a{background:rgba(255,255,255,.13)!important}.dark-mode .btn.btn-ghost.is-on{background:rgba(124,199,190,.18)!important;box-shadow:inset 0 0 0 1px rgba(124,199,190,.45)!important}.dark-mode .leftCol{background:#1e1b18!important}.ace_searchbtn_close{width:24px!important;height:24px!important;background-size:12px!important;opacity:.7}.ace_search_field:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}.navbar .nav-link:not(.active):not(.btn-signin){color:var(--ink-soft)!important}.navbar .nav-support-inline{color:var(--ink-soft)!important}.paper-stat-delta{color:var(--ink-soft)!important}.paper-faq-toc-head,.paper-footer-head{font-family:var(--font-sans)!important;font-size:12px!important;font-weight:600!important;letter-spacing:.06em!important;text-transform:uppercase;color:var(--ink-soft)!important}.paper-feature:not(.is-on) .paper-feature-tab::after{border-color:var(--ink-soft)!important;border-width:0 2px 2px 0!important}.faq-section .panel-default .panel-body{max-width:720px!important}.repo-panel-meta .last-update{flex-basis:100%}.repo-panel-meta .last-update::before{content:none!important}@media (max-width:767px){.file-card-head .file-card-path{flex:1 1 calc(100% - 56px)!important}.file-card-head .file-card-actions{order:1}.file-card-head .file-card-meta{order:3}.file-card-head>.view-switch{order:4}}.repo-panel{display:none!important}.repo-id{display:flex;align-items:center;gap:10px;padding:14px 14px 6px}.repo-id-tile{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;border-radius:9px;background:linear-gradient(140deg,color-mix(in srgb,var(--accent) 16%,var(--paper-card)),color-mix(in srgb,var(--accent) 6%,var(--paper-card)));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 22%,transparent);color:var(--accent)}.repo-id-tile .ui-icon{width:17px;height:17px}.repo-id-text{min-width:0}.repo-id-title{font-size:14px;font-weight:600;color:var(--color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.repo-id-sub{margin-top:1px;font-size:12.5px;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.repo-id-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 14px 12px 58px;border-bottom:1px solid var(--border-soft);font-size:12.5px}.repo-id-count{color:var(--ink-muted);font-variant-numeric:tabular-nums}.repo-id-zip{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:var(--radius-control);color:var(--link-color)!important;font-weight:500;text-decoration:none!important}.repo-id-zip:hover{background:var(--accent-soft)}.repo-id-zip .ui-icon{width:14px;height:14px}.leftCol-foot .leftCol-links{display:none!important}.acct-bar{display:flex;align-items:center;justify-content:space-between;gap:8px}.acct{position:relative;min-width:0}.acct-chip{display:inline-flex;align-items:center;gap:8px;max-width:150px;height:34px;padding:0 8px 0 4px;border:0;border-radius:var(--radius-control);background:0 0;font:inherit;font-size:13px;font-weight:500;color:var(--color);cursor:pointer}.acct-chip:hover,.acct-chip[aria-expanded=true]{background:var(--hover-bg-color)}.acct-chip img,.acct-initial{width:24px;height:24px;border-radius:50%;flex-shrink:0}.acct-initial{display:inline-flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:700}.acct-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acct-caret{width:12px;height:12px;color:var(--ink-muted);transform:rotate(-90deg)}.acct-menu{position:absolute;bottom:calc(100% + 6px);left:0;z-index:40;width:190px;padding:6px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);box-shadow:0 12px 32px rgba(26,24,21,.18)}.acct-menu a{display:flex;align-items:center;gap:10px;height:36px;padding:0 10px;border-radius:var(--radius-control);font-size:13.5px;color:var(--color)!important;text-decoration:none!important}.acct-menu a:hover{background:var(--hover-bg-color)}.acct-menu .ui-icon{width:16px;height:16px;color:var(--ink-soft)}.acct-signin{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-card);font-size:13px;font-weight:500;color:var(--color)!important;text-decoration:none!important}.acct-signin:hover{background:var(--hover-bg-color);border-color:var(--ink-faint)}.dark-mode .acct-signin{background:0 0}.acct-icons{display:inline-flex;align-items:center;gap:2px}.acct-icons a,.acct-icons button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:0;border-radius:var(--radius-control);background:0 0;color:var(--ink-soft)!important;cursor:pointer}.acct-icons a:hover,.acct-icons button:hover{background:var(--hover-bg-color);color:var(--color)!important}.acct-icons .acct-donate:hover{color:var(--status-error)!important}.acct-icons .ui-icon{width:17px;height:17px}.leftCol-foot{padding:8px 10px 10px 14px!important}.leftCol-foot .last-update{display:none}.file-card-head .card-files-btn,.file-card-head .card-files-btn.is-needed{width:34px!important;height:34px!important;padding:0!important;border:0!important;background:0 0!important;color:var(--ink-soft)!important}.file-card-head .card-files-btn:hover{background:var(--hover-bg-color)!important;color:var(--color)!important}.file-card-head .card-files-btn .ui-icon{width:19px;height:19px}.card-files-label{display:none!important}.tb-copy-m{display:none!important}@media (max-width:767px){.tb-copy-m{display:inline-flex!important;width:36px!important;height:34px!important}.file-card-head .file-card-path{flex:1 1 calc(100% - 96px)!important;gap:6px!important}}.ace_search{flex-direction:row}.ace_searchbtn_close{order:99;margin-left:auto!important;width:28px!important;height:28px!important}.ace_search .ace_button,.ace_searchbtn{color:var(--ink-soft)!important}.file-card-head .btn-find:focus:not(:focus-visible){background:0 0!important}.dark-mode .explorer-content .markdown-body img{filter:brightness(.92)!important}@media (max-width:767px){.file-card.is-code.no-wrap .ace_scroller{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 80px),rgba(0,0,0,.15) calc(100% - 8px),transparent)!important;mask-image:linear-gradient(to right,#000 calc(100% - 80px),rgba(0,0,0,.15) calc(100% - 8px),transparent)!important}}.acct-menu-head{padding:6px 10px 8px;margin-bottom:4px;border-bottom:1px solid var(--border-soft);font-size:12px;color:var(--ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acct-menu-head b{color:var(--color);font-weight:600}@media (max-width:767px){.file-card.is-code.no-wrap{position:relative}.file-card.is-code.no-wrap::before{content:"Scroll \2194";position:absolute;right:12px;bottom:14px;z-index:25;padding:5px 10px;border-radius:999px;background:color-mix(in srgb,var(--color) 82%,transparent);color:var(--canvas-bg-color);font:600 12px/1 var(--font-sans);pointer-events:none;box-shadow:0 4px 14px rgba(0,0,0,.18)}.file-card-head>.view-switch{order:5!important;flex:1 1 100%;margin-left:0!important;display:grid!important;grid-template-columns:1fr 1fr}.file-card-head>.view-switch .btn{height:36px!important;min-height:36px!important;justify-content:center;font-size:14px}.file-card-head .file-card-meta{font-size:13px!important}}.acct-menu{width:240px}.acct-menu-head{white-space:normal;overflow-wrap:anywhere}.paper-feature .paper-feature-tab::after{border-width:0 1.5px 1.5px 0!important;border-color:var(--ink-soft)!important}.hero-mock-doc-bar span,.hero-mock-tree-title{color:var(--ink-soft)!important}.paper-frame-bar{color:var(--ink-soft)!important}.paper-frame-bar .dots i{background:color-mix(in srgb,var(--ink-muted) 55%,transparent)!important}.dark-mode .hero-mock-doc,.dark-mode .paper-frame{background:#24211d!important}.dark-mode .hero-mock-tree{background:#1c1a17!important}.dark-mode .paper-stats-grid .paper-stat-card{border-color:#3a3631!important}.dark-mode .paper-stats,.dark-mode .paper-stats-grid{border-color:#3a3631!important}.faq-section .panel-default .panel-body{padding-bottom:18px!important}.btn.btn-ghost.is-on{background:var(--hover-bg-color)!important;color:var(--accent)!important;box-shadow:none!important}.dark-mode .btn.btn-ghost.is-on{background:rgba(255,255,255,.08)!important;color:#7cc7be!important;box-shadow:none!important}.acct-chip .acct-caret,.acct-chip .acct-name{display:none}.acct-chip{padding:0 5px!important}.acct-chip img,.acct-initial{width:26px!important;height:26px!important}@media (min-width:768px){.explorer-content .file-card .file-content.markdown-body{margin:0 auto!important;padding-left:40px!important;padding-right:40px!important;max-width:920px}}.files .file.active>a::before{top:5px!important;bottom:5px!important}@media (max-width:767px){.explorer-content .ace_editor .ace_gutter-cell{padding-left:6px!important;padding-right:6px!important}}.repo-id,.repo-id-actions{display:none!important}.leftCol-search{display:flex;align-items:center;gap:6px;padding:12px 12px 8px!important}.leftCol-search .tree-search-box{flex:1 1 auto;min-width:0}.search-zip{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex-shrink:0;border:1px solid var(--border-color);border-radius:8px;background:var(--canvas-bg-color);color:var(--ink-soft)!important}.search-zip:hover{background:var(--hover-bg-color);color:var(--color)!important;border-color:var(--ink-faint)}.search-zip .ui-icon{width:17px;height:17px}.dark-mode .search-zip{background:0 0}.support-cta{display:flex;align-items:center;gap:10px;margin:0 0 10px;padding:9px 12px;border-radius:var(--radius-surface);background:color-mix(in srgb,#e5484d 9%,var(--paper-card));box-shadow:inset 0 0 0 1px color-mix(in srgb,#e5484d 22%,transparent);color:var(--color)!important;text-decoration:none!important;transition:background .15s,box-shadow .15s}.support-cta:hover{background:color-mix(in srgb,#e5484d 14%,var(--paper-card));box-shadow:inset 0 0 0 1px color-mix(in srgb,#e5484d 40%,transparent)}.support-cta .ui-icon{width:18px;height:18px;flex-shrink:0;color:#e5484d;fill:#e5484d}.support-cta span{display:grid;min-width:0}.support-cta b{font-size:13px;font-weight:600}.support-cta small{font-size:12px;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dark-mode .support-cta{background:color-mix(in srgb,#e5484d 12%,var(--sidebar-bg-color))}.leftCol-foot{padding:10px 12px 10px!important}.tb-file{display:inline-flex!important;align-items:stretch;gap:0!important;margin-left:8px;padding-left:0!important;border:1px solid var(--border-color)!important;border-radius:var(--radius-control);overflow:hidden}.tb-seg-btn{display:inline-flex;align-items:center;justify-content:center;height:30px;padding:0 12px;border:0;background:var(--paper-card);font:inherit;font-size:13px;font-weight:500;color:var(--color)!important;text-decoration:none!important;cursor:pointer}.tb-seg-btn+.tb-seg-btn{border-left:1px solid var(--border-color)}.tb-seg-btn:hover{background:var(--hover-bg-color)}.tb-seg-icon{width:34px;padding:0;color:var(--ink-soft)!important}.tb-seg-icon:hover{color:var(--color)!important}.tb-seg-icon .ui-icon{width:15px;height:15px}.dark-mode .tb-seg-btn{background:0 0}.file-card-actions>.tb-file:first-child{margin-left:0}.file-card-head .btn-find,.file-card-head .btn-goto,.file-card-head .btn-toggle{width:32px!important;height:32px!important}.file-card.is-code.no-wrap::before{content:none!important;display:none!important}.acct-chip{width:34px;height:34px;padding:0!important;justify-content:center;border-radius:50%!important;background:0 0!important}.acct-chip:hover,.acct-chip[aria-expanded=true]{background:var(--hover-bg-color)!important}.ace_searchbtn_close{margin-left:4px!important}.dark-mode .explorer-content .markdown-body img{filter:brightness(.9)!important}.snapshot-line{display:flex;align-items:center;gap:6px;padding:0 14px 8px;font-size:12.5px;color:var(--ink-soft);white-space:nowrap;overflow:hidden}.snapshot-line span{overflow:hidden;text-overflow:ellipsis}.snapshot-line .ui-icon{width:14px;height:14px;flex-shrink:0;color:var(--ink-muted)}.leftCol-search{padding-bottom:6px!important}@media (max-width:767px){.explorer-content .file-card-head .file-card-meta{display:none!important}.explorer-content .file-card-head{flex-wrap:nowrap!important;min-height:52px!important}.file-card-head .card-files-btn,.file-card-head .tb-copy-m,.file-card-head .tb-more-btn{width:40px!important;height:40px!important}.file-card-head .card-files-btn{background:var(--hover-bg-color)!important;color:var(--color)!important;border-radius:var(--radius-control)!important}.file-card-head .file-card-path{flex:1 1 auto!important}}.acct-menu{box-shadow:0 16px 40px rgba(26,24,21,.22),0 0 0 1px var(--border-color)!important;border:0!important}.dark-mode .acct-menu{background:#26231f;box-shadow:0 16px 40px rgba(0,0,0,.55),0 0 0 1px #3a3631!important}.acct-chip{width:32px!important;height:32px!important}.acct-chip img,.acct-initial{width:30px!important;height:30px!important;font-size:13px!important}.ace_search{padding:6px 12px 6px 8px!important;min-height:40px}.ace_search_field{height:28px!important}.ace_search_options{gap:0!important;margin-left:4px!important}.ace_search_options .ace_button{border-radius:0!important;margin:0!important}.ace_search_options .ace_button+.ace_button{margin-left:-1px!important}.ace_search_options .ace_button:first-of-type{border-radius:var(--radius-control) 0 0 var(--radius-control)!important}.ace_search_options .ace_button:last-of-type{border-radius:0 var(--radius-control) var(--radius-control) 0!important}.ace_searchbtn_close{width:28px!important;height:28px!important;border-radius:var(--radius-control)!important;margin-left:8px!important;background-color:transparent!important;opacity:.65}.ace_searchbtn_close:hover{background-color:var(--hover-bg-color)!important;opacity:1}.ace_search_counter{color:var(--ink-soft)!important}.ace_editor .ace_marker-layer .ace_selected-word{background:color-mix(in srgb,var(--accent) 16%,transparent)!important}.ace_editor.ace-chrome .ace_marker-layer .ace_selection,.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection{background:color-mix(in srgb,var(--accent) 34%,transparent)!important;box-shadow:0 0 0 1px var(--accent)!important}.dark-mode .btn.btn-ghost.is-on{background:rgba(124,199,190,.16)!important;color:#a8ddd6!important}.paper-features{grid-template-columns:1fr 1.4fr!important;gap:40px!important}.faq-section .panel-default .panel-title a:after{border-color:var(--ink-soft)!important}.paper-features .paper-feature.is-on .paper-feature-tab::after,.paper-features .paper-feature:not(.is-on) .paper-feature-tab::after{border-width:0 1.5px 1.5px 0!important;border-color:var(--ink-muted)!important}.markdown-body mark.redact-chip,.redact-chip{display:inline-block;padding:0 6px;margin:0 1px;border-radius:4px;background:var(--accent-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 25%,transparent);color:var(--accent);font-family:var(--font-mono);font-size:.82em;font-weight:500;line-height:1.5;vertical-align:.06em;cursor:help;transition:background .1s}.redact-chip:hover{background:color-mix(in srgb,var(--accent) 22%,transparent)}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip{font-size:.7em;vertical-align:.18em}.dark-mode .redact-chip{background:rgba(124,199,190,.14);color:#a8ddd6}.ace_editor .ace_marker-layer .ace_redacted{position:absolute;background:var(--accent-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent);border-radius:3px}.dark-mode .ace_editor .ace_marker-layer .ace_redacted{background:rgba(124,199,190,.16)}.meta-redact{color:var(--accent);font-weight:500}.explorer-page{display:grid!important;grid-template-columns:var(--sidebar-w,280px) minmax(0,1fr);grid-template-rows:44px minmax(0,1fr)}.viewer-bar{grid-column:1/-1;grid-row:1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 12px 0 14px;border-bottom:1px solid var(--border-color);background:var(--paper-bg-alt);z-index:20}.dark-mode .viewer-bar{background:var(--sidebar-bg-color)}.explorer-page>.leftCol{grid-row:2;grid-column:1;width:auto!important;flex:none!important;height:auto!important;min-height:0;border-top:0}.explorer-page>.explorer-main{grid-row:2;grid-column:2;min-height:0}.explorer-page.files-hidden{grid-template-columns:minmax(0,1fr)}.explorer-page.files-hidden>.explorer-main{grid-column:1/-1}.leftCol-resizer{top:44px!important}.card-files-btn.is-needed{display:none!important}.vb-left,.vb-right{display:flex;align-items:center;gap:4px;min-width:0}.vb-logo{font-family:var(--font-serif);font-size:18px;letter-spacing:-.01em;color:var(--color)!important;text-decoration:none!important;white-space:nowrap;margin-right:10px}.vb-logo em{font-style:italic}.vb-icon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:0;border-radius:var(--radius-control);background:0 0;color:var(--ink-soft)!important;cursor:pointer;text-decoration:none!important}.vb-icon:hover{background:var(--hover-bg-color);color:var(--color)!important}.vb-icon .ui-icon{width:17px;height:17px}.vb-snapshot{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;margin-right:6px;border-radius:999px;background:var(--hover-bg-color);font-family:var(--font-mono);font-size:12px;color:var(--ink-soft);white-space:nowrap;cursor:help}.vb-snapshot .ui-icon{width:13px;height:13px;color:var(--ink-muted)}.vb-support{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;margin-right:4px;border-radius:999px;background:color-mix(in srgb,#e5484d 10%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,#e5484d 28%,transparent);font-size:13px;font-weight:600;color:#c2353a!important;text-decoration:none!important}.vb-support:hover{background:color-mix(in srgb,#e5484d 16%,transparent)}.vb-support .ui-icon{width:15px;height:15px;fill:currentColor}.dark-mode .vb-support{color:#ff8a8e!important;background:rgba(229,72,77,.14)}.vb-signin{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 12px;margin-left:6px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-card);font-size:13px;font-weight:500;color:var(--color)!important;text-decoration:none!important}.vb-signin:hover{background:var(--hover-bg-color)}.dark-mode .vb-signin{background:0 0}.viewer-bar .acct{margin-left:6px}.viewer-bar .acct-menu{top:calc(100% + 8px);bottom:auto;left:auto;right:0}.explorer-page>.leftCol .leftCol-search{padding-top:12px!important}@media (max-width:991px){.explorer-page{grid-template-columns:minmax(0,1fr)}.explorer-page>.explorer-main{grid-column:1/-1}.vb-sidebar{display:none}.explorer-page>.leftCol{grid-row:auto}}@media (max-width:575px){.vb-bug,.vb-snapshot{display:none}.vb-support span{display:none}.vb-support{width:32px;padding:0;justify-content:center}}@media (max-width:991px){.explorer-page>.leftCol .leftCol-head{position:static!important;display:flex!important;align-items:center;justify-content:space-between;min-height:52px;padding:6px 8px 6px 16px!important;border-bottom:1px solid var(--border-soft)!important;background:0 0!important}.explorer-page>.leftCol .leftCol-head .leftCol-eyebrow{display:inline!important;font:600 15px/1 var(--font-sans);letter-spacing:0;text-transform:none;color:var(--color)}.explorer-page>.leftCol .leftCol-close{width:44px!important;height:44px!important}.files a{min-height:38px!important;font-size:15px}}.vb-support{background:var(--paper-card)!important;box-shadow:inset 0 0 0 1px var(--border-color)!important;color:var(--color)!important;font-weight:500!important}.vb-support .ui-icon{color:#e5484d;fill:#e5484d}.vb-support:hover{background:var(--hover-bg-color)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,#e5484d 40%,var(--border-color))!important}.dark-mode .vb-support{background:0 0!important;color:var(--color)!important}.vb-snapshot{font-family:var(--font-sans)!important;font-variant-numeric:tabular-nums;font-size:12.5px!important}.file-card-path .breadcrumb-root a{color:var(--ink-soft)!important}.file-card-path .breadcrumb-root a:hover{color:var(--color)!important;text-decoration:underline}@media (max-width:767px){.viewer-bar{padding:0 6px 0 12px}.vb-icon,.vb-support{width:40px!important;height:40px!important}.vb-signin{height:36px}.file-card-head .card-files-btn{background:0 0!important;color:var(--ink-soft)!important}}.ace_search{background:var(--paper-bg-alt)!important;border-bottom:1px solid var(--border-color)!important;gap:6px!important}.dark-mode .ace_search{background:#1e1b18!important}.ace_search .ace_searchbtn{width:28px!important;height:28px!important;border-radius:var(--radius-control)!important;border:1px solid var(--border-color)!important;background:var(--paper-card)!important}.ace_searchbtn_close{order:99;margin-left:6px!important;border:1px solid transparent!important;background-position:center!important;opacity:.8!important}@media (max-width:767px){.file-card.is-code.no-wrap .ace_scroller{-webkit-mask-image:none!important;mask-image:none!important}.file-card.is-code.no-wrap .file-card-body{position:relative}.file-card.is-code.no-wrap .file-card-body::after{content:"";position:absolute;top:0;right:0;bottom:0;width:36px;z-index:8;pointer-events:none;background:linear-gradient(to right,color-mix(in srgb,var(--paper-card) 0,transparent),var(--paper-card) 85%)}.dark-mode .file-card.is-code.no-wrap .file-card-body::after{background:linear-gradient(to right,transparent,var(--canvas-bg-color) 85%)}}.dark-mode .ace_editor .ace_marker-layer .ace_redacted{background:rgba(124,199,190,.24)!important;box-shadow:inset 0 0 0 1px rgba(124,199,190,.5)!important}.paper-reassure,.paper-stat-delta,.paper-stat-label{color:var(--ink-soft)!important}.paper-faq-title{font-size:clamp(2.2rem,4vw,3.1rem)!important}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{background:linear-gradient(to right,transparent,var(--paper-card) 80%)!important}.dark-mode .file-card.is-code.no-wrap .file-card-body::after{background:linear-gradient(to right,transparent,var(--canvas-bg-color) 80%)!important}}@media (max-width:575px){.vb-support{box-shadow:none!important;background:0 0!important;border-radius:var(--radius-control)!important}.vb-support:hover{background:var(--hover-bg-color)!important}}.meta-redact{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:999px;background:var(--accent-soft);color:var(--accent)!important;font-size:12px;font-weight:600;cursor:default}.dark-mode .meta-redact{background:rgba(124,199,190,.14);color:#a8ddd6!important}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{font-size:.6em!important;padding:1px 6px!important;vertical-align:.25em!important}.ace_search .ace_button{color:var(--ink-soft)!important;font-size:12.5px!important;font-weight:600!important;background:var(--paper-card)!important}.ace_search .ace_button.checked{background:var(--accent-soft)!important;color:var(--accent)!important;border-color:var(--accent)!important;position:relative;z-index:1}.ace_search{align-items:center!important}.ace_search_counter{align-self:center;line-height:28px}.hero-mock-row.is-active{background:rgba(128,128,128,.12)!important;box-shadow:inset 3px 0 0 var(--accent)}.mobile-sub{display:none}@media (max-width:767px){.file-card-head .file-card-path{display:grid!important;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;column-gap:8px;align-items:center}.file-card-head .file-card-path .card-files-btn{grid-row:1/span 2}.file-card-head .file-card-path .paths{grid-column:2}.mobile-sub{display:block;grid-column:2;margin-top:1px;font-size:12px;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-sub b{color:var(--accent);font-weight:600}.dark-mode .mobile-sub b{color:#a8ddd6}.vb-icon[href="/faq"]{display:none!important}}.ace_searchbtn_close{font-size:0!important;color:transparent!important;background-size:10px 10px!important;align-self:center}.acct-initial{background:var(--hover-bg-color)!important;color:var(--color)!important;box-shadow:inset 0 0 0 1px var(--border-color)}.acct-chip[aria-expanded=true] .acct-initial{background:var(--accent-soft)!important;color:var(--accent)!important}.viewer-bar .acct-menu{top:calc(100% + 12px)!important}.dark-mode .paper-frame{box-shadow:0 0 0 1px #3f3a34,0 24px 60px rgba(0,0,0,.5)!important}.faq-section .panel-default .panel-body{max-width:640px!important}.anonymize-landing{align-items:flex-start!important;padding-top:clamp(32px,9vh,88px)!important}.landing-url-row{display:flex;gap:8px;align-items:stretch}.landing-url-row .form-control{flex:1 1 auto;min-width:0}.landing-continue{flex-shrink:0;height:auto;min-height:46px;padding:0 20px;font-weight:600}@media (max-width:575px){.landing-url-row{flex-direction:column}.landing-continue{min-height:44px}.source-url-label-row{flex-direction:column;align-items:flex-start!important;gap:8px}}.paper-table.paper-table-dashboard{width:100%}.q-card-count,.q-stat-value{font-family:var(--font-sans)!important;font-variant-numeric:tabular-nums;font-weight:600}.paper-table .paper-table-head [role=columnheader],.paper-table-head>div,.q-stat-label{font-family:var(--font-sans)!important;font-size:12px!important;letter-spacing:.02em!important;color:var(--ink-soft)!important}.errors-page .kpi-card.kpi-info .kpi-value{color:var(--color)!important}.errors-page .col-msg,.errors-page .col-msg *{font-weight:400!important}.errors-page .col-msg .msg-code,.errors-page .msg-code{font-size:13px!important}.admin-page select,.anonymize-page select,.errors-page select,.paper-page select,.paper-table select{height:34px;padding:0 30px 0 10px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--input-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236F6A61' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center;-webkit-appearance:none;appearance:none;font:inherit;font-size:13px;color:var(--input-color)}input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px}.anonymize-page .form-control,.paper-page .form-control,.paper-page input[type=date],.paper-page input[type=text],.paper-page textarea{border:1px solid color-mix(in srgb,var(--ink-faint) 55%,var(--border-color))!important;border-radius:var(--radius-control)!important}.anonymize-page code,.paper-page code,.paper-page kbd{font-family:var(--font-mono)!important}.filter-chip.is-active .count,.paper-chip.is-active .count,.status-chip.active .count{color:inherit!important}.user-header h2{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.status-dot-wrap{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:500;color:var(--ink-soft)}.user-actions{display:flex;flex-wrap:wrap;gap:8px}.user-detail-grid .detail-value.is-empty{color:var(--ink-muted);font-style:normal;font-family:var(--font-sans)!important}.admin-section-header h2{font-family:var(--font-sans)!important;font-size:15px!important;font-weight:600!important;letter-spacing:0!important;text-transform:none!important;color:var(--color)!important}.errors-page .kpi-sub.down,.errors-page .kpi-sub.up{color:var(--ink-soft)!important}.errors-page .kpi-card.kpi-error .kpi-value{color:var(--color)!important}.errors-page .kpi-card.kpi-error:has(.kpi-value:not(:empty)) .kpi-value{color:var(--color)!important}.errors-page .kpi-label{font-family:var(--font-sans)!important}.errors-page .col-msg{font-family:var(--font-mono)!important;font-size:13px!important}.admin-page .admin-head,.admin-page .paper-page-head,.admin-page>header{min-height:92px}.admin-page .paper-page-title{min-height:44px;display:flex;align-items:center;margin-bottom:8px!important}.admin-page .errors-header,.admin-page .ov-header,.admin-page .q-header{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;margin-bottom:8px!important}.admin-page .errors-header .paper-page-title,.admin-page .ov-header .paper-page-title,.admin-page .q-header .paper-page-title{margin-bottom:0!important}.admin-page .admin-nav{margin-top:0!important}.admin-page .paper-crumbs{min-height:20px;margin-bottom:4px!important}.dashboard-page,.paper-page{max-width:1112px}.landing-continue:disabled{background:var(--hover-bg-color)!important;border-color:var(--border-color)!important;color:var(--ink-muted)!important;opacity:1!important;box-shadow:none!important}.landing-continue:not(:disabled){background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}.admin-summary .summary-pill{border-color:var(--border-color)!important;color:var(--color)!important;background:var(--paper-card)!important}.admin-summary .summary-pill::before{content:"";display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:var(--ink-faint);vertical-align:1px}.admin-summary .summary-pill.ok::before{background:var(--status-ready)}.admin-summary .summary-pill.progress::before,.admin-summary .summary-pill.warn::before{background:var(--status-progress)}.admin-summary .summary-pill.err::before,.admin-summary .summary-pill.error::before{background:var(--status-error)}.admin-summary .summary-pill .count{color:var(--ink-soft)!important;font-weight:600}.admin-summary .summary-pill.active{background:var(--accent-soft)!important;border-color:color-mix(in srgb,var(--accent) 45%,transparent)!important;color:var(--accent)!important}.admin-summary .summary-pill.active .count{color:var(--accent)!important}.admin-summary .summary-pill:has(.count:is(:empty)){opacity:.6}.admin-page .btn-dark,.admin-page .btn-primary{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}.btn-outline-danger{border:1px solid color-mix(in srgb,var(--status-error) 45%,transparent)!important;color:var(--status-error)!important;background:0 0!important}.admin-page .paper-table-head>*,.admin-page [role=columnheader],.admin-page h3,.errors-page th,.q-card-title,.q-header-label,.q-panel-title{font-family:var(--font-sans)!important;text-transform:none!important;letter-spacing:0!important;font-size:12.5px!important;font-weight:600!important;color:var(--ink-soft)!important}.ov-flag{color:var(--status-error);font-weight:600}.overview-page .ov-daily-value{color:var(--color)!important}@media (max-width:767px){.paper-table.paper-table-dashboard{margin-left:0!important;margin-right:0!important;width:100%!important}.dashboard-meta{flex-wrap:wrap;row-gap:8px}.dashboard-active-filters{flex-basis:100%;flex-wrap:wrap}.anonymize-landing{padding-top:20px!important}.anonymize-landing .paper-page-lede{font-size:15px!important}}.anonymize-landing .source-privacy-note,.anonymize-landing .text-muted:has(.ui-icon){display:flex;gap:8px;align-items:flex-start;padding:10px 12px;margin-top:12px;border-radius:var(--radius-control);background:color-mix(in srgb,var(--status-progress) 9%,transparent);color:var(--color)!important;font-size:13px}.repo-access-note>span:has(.ui-icon){display:flex;gap:8px;align-items:flex-start;margin-top:10px;padding:9px 12px;border-radius:var(--radius-control);background:color-mix(in srgb,var(--status-progress) 10%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--status-progress) 25%,transparent);color:var(--color)!important;font-size:13px}.repo-access-note>span:has(.ui-icon) .ui-icon{color:var(--status-progress);flex-shrink:0;margin-top:2px}.admin-summary .summary-pill.active{background:var(--paper-card)!important;border-color:var(--border-color)!important;color:var(--color)!important}.admin-summary .summary-pill.active .count{color:var(--ink-soft)!important}.admin-summary .summary-pill:not(.active){background:0 0!important;border-style:dashed!important;color:var(--ink-muted)!important}.admin-summary .summary-pill:not(.active),.admin-summary .summary-pill:not(.active)>:not(.count){text-decoration:line-through;text-decoration-color:var(--ink-faint)}.admin-summary .summary-pill:not(.active) .count{text-decoration:none}.admin-summary .summary-pill:not(.active)::before{opacity:.45}.admin-page:has(.admin-users-row) .admin-summary .summary-pill:not(.active),.user-detail-card~* .admin-summary .summary-pill:not(.active){border-style:solid!important;text-decoration:none!important;color:var(--color)!important;background:var(--paper-card)!important}.admin-page:has(.admin-users-row) .admin-summary .summary-pill:not(.active)::before{opacity:1}.admin-page:has(.admin-users-row) .admin-summary .summary-pill.active{background:var(--accent-soft)!important;border-color:color-mix(in srgb,var(--accent) 45%,transparent)!important;color:var(--accent)!important}.copy-link-inline{display:inline-flex!important;align-items:center;gap:6px;height:30px;padding:0 10px!important;border:1px solid var(--border-color)!important;border-radius:var(--radius-control);background:var(--paper-card)!important;color:var(--color)!important;font-size:13px;font-weight:500}.copy-link-inline:hover{background:var(--hover-bg-color)!important}.copy-link-inline .project-type-svg{width:14px;height:14px}@media (max-width:767px){.copy-link-label{display:none}.copy-link-inline{width:36px;justify-content:center;padding:0!important}}.overview-page .ov-val-warn{color:var(--color)!important}.ov-flag{color:var(--status-progress)!important}@media (max-width:767px){.admin-page .admin-nav{flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none;-webkit-mask-image:linear-gradient(to right,#000 85%,transparent);mask-image:linear-gradient(to right,#000 85%,transparent)}.admin-page .admin-nav::-webkit-scrollbar{display:none}.admin-page .admin-nav a{flex-shrink:0}.admin-page .ov-header,.admin-page .paper-page-title{text-align:left!important;justify-content:flex-start!important}.overview-page .ov-kpi-row>:last-child:nth-child(odd){grid-column:1/-1}.admin-summary{flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none}.admin-summary>*{flex-shrink:0}}.user-detail-grid .detail-value:first-of-type{font-family:var(--font-mono);font-size:13px}.user-header .type-badge{font-family:var(--font-sans)!important;letter-spacing:0!important;text-transform:none!important;font-weight:600}.errors-page .count-badge,.errors-page .msg-count,.errors-page [class*=count]{background:var(--hover-bg-color)!important;color:var(--color)!important}.ov-flag.critical{color:var(--status-error)!important}.paper-table.paper-table-dashboard .paper-table-head,.paper-table.paper-table-dashboard .paper-table-row{grid-template-columns:minmax(280px,3fr) 180px 70px 150px 150px!important}.paper-table.paper-table-dashboard .paper-table-row>:last-child{display:flex;justify-content:flex-end;align-items:center;gap:4px}.copy-link-inline{white-space:nowrap}@media (max-width:767px){.admin-filter-row,.admin-page form[class*=filter]{display:grid!important;grid-template-columns:1fr;gap:8px}.admin-page form[class*=filter] input,.admin-page form[class*=filter] select{width:100%!important}.admin-page form[class*=filter]>*{width:100%}.admin-page form[class*=filter] label{font-size:12px!important}}@media (min-width:768px){.copy-link-inline{width:auto!important;min-width:0!important}}@media (max-width:767px){.copy-link-inline{width:44px!important;height:44px!important}}.errors-list-head,.errors-list-head>span,.q-section-label{font-family:var(--font-sans)!important;text-transform:none!important;letter-spacing:0!important;font-size:12.5px!important;font-weight:600!important;color:var(--ink-soft)!important}.errors-list-head>span{background:0 0!important}.q-state-chip{background:var(--paper-card)!important;color:var(--color)!important;border:1px solid var(--border-color)!important;text-transform:none!important;font-family:var(--font-sans)!important;letter-spacing:0!important}.q-state-chip::before{content:"";display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:var(--ink-faint)}.q-state-chip.q-state-active::before{background:var(--accent)}.q-state-chip.q-state-delayed::before,.q-state-chip.q-state-waiting::before{background:var(--status-progress)}.q-state-chip.q-state-failed::before{background:var(--status-error)}.q-state-chip.q-state-completed::before{background:var(--status-ready)}.role-pill{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:999px;background:var(--hover-bg-color);font:600 12px/1 var(--font-sans);color:var(--color)}.user-header .type-badge{background:var(--hover-bg-color)!important;border:0!important}.admin-filter-inline label,.admin-page label{font-size:12px!important;color:var(--ink-soft)!important}.admin-page select,.admin-page select.form-control{padding-right:30px!important;background:var(--input-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236F6A61' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center!important;-webkit-appearance:none!important;appearance:none!important}.admin-page .paper-table-row .text-muted,.admin-page .paper-table-row [class*=meta]{color:var(--ink-soft)!important}.dashboard-page.container,.paper-page,.paper-page.container{max-width:1112px!important;padding-left:32px!important;padding-right:32px!important}@media (max-width:767px){.dashboard-page.container,.paper-page,.paper-page.container{padding-left:18px!important;padding-right:18px!important}}.page-head-row>a.btn{margin-top:6px}.paper-faq-toc nav,.paper-settings-toc nav{border-left:1px solid var(--border-color)}.paper-settings-toc nav a{margin-left:-1px;border-left:2px solid transparent}.paper-settings-toc nav a.active{border-left-color:var(--accent)!important;color:var(--color)}.paper-page textarea{resize:vertical}.paper-page input[type=date]{height:38px;padding:0 10px;color:var(--input-color);font-family:var(--font-sans)}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row{grid-template-columns:minmax(0,1fr) auto!important;grid-template-areas:"name actions" "meta meta";row-gap:6px}.paper-table.paper-table-dashboard .paper-table-row>:first-child{grid-area:name}.paper-table.paper-table-dashboard .paper-table-row>:last-child{grid-area:actions;align-self:start}.paper-table.paper-table-dashboard .paper-table-row>:not(:first-child):not(:last-child){grid-column:1/-1}.copy-link-inline{width:36px!important;height:36px!important}.admin-filter-toolbar{display:grid!important;grid-template-columns:1fr 1fr;gap:8px}.admin-filter-toolbar>:first-child{grid-column:1/-1}.admin-filter-toolbar .admin-filter-inline{display:grid!important;gap:4px}.admin-filter-toolbar .admin-filter-inline label{margin:0}.admin-filter-toolbar>:last-child{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center}.overview-page .ov-header{align-items:flex-start!important;text-align:left!important}.overview-page .ov-header .paper-page-title{width:100%;justify-content:flex-start!important;text-align:left!important}}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row{flex-wrap:wrap!important;align-items:flex-start!important;row-gap:6px}.paper-table.paper-table-dashboard .paper-table-row>.cell-anon{flex:1 1 0!important;min-width:0;order:1}.paper-table.paper-table-dashboard .paper-table-row>.cell-actions{flex:0 0 auto!important;order:2;width:auto!important;margin:0!important}.paper-table.paper-table-dashboard .paper-table-row>.dashboard-row-meta{flex:1 1 100%!important;order:3}.admin-filter-toolbar{display:block!important}.admin-filter-row{display:grid!important;grid-template-columns:1fr 1fr;gap:8px!important}.admin-filter-row>:first-child{grid-column:1/-1}.admin-filter-row .admin-filter-inline{display:grid!important;gap:4px;min-width:0}.admin-filter-row .admin-filter-inline input{width:100%!important}.admin-filter-row>:last-child{grid-column:1/-1;display:flex!important;justify-content:space-between;align-items:center;flex-direction:row!important}.admin-filter-row>:last-child .btn{width:auto!important}}.page-head-row .btn-primary,.paper-page .btn-primary{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}.dark-mode .paper-page .btn-primary{background:#1f6a64!important;border-color:#1f6a64!important}.q-section-right,.q-section-right *,.q-stat-label{font-family:var(--font-sans)!important;text-transform:none!important;letter-spacing:0!important;font-size:12px!important;color:var(--ink-soft)!important}.q-card .q-card-sub,[class*=q-card] small{font-family:var(--font-sans)!important}.quota-ring-track{stroke:var(--border-color)!important;stroke-width:3!important;fill:none}.quota-ring-fill{stroke:var(--accent)!important;stroke-width:3!important;fill:none;stroke-linecap:round;transform:rotate(-90deg);transform-origin:12px 12px;min-width:0}.quota-summary-ring{width:18px!important;height:18px!important}.errors-list-head .col-count,.errors-list-head .col-msg{background:0 0!important;font-family:var(--font-sans)!important;font-weight:600!important}.errors-page .col-count>*{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:999px;background:var(--hover-bg-color)!important;color:var(--color)!important;font:600 12px/1 var(--font-sans);box-shadow:none!important}.errors-page .col-count>*>*{background:0 0!important}.errors-page .col-when{display:flex;flex-direction:column;gap:0;line-height:1.3}.errors-page .errors-list>div:not(.errors-list-head){padding-top:10px!important;padding-bottom:10px!important;min-height:0!important}.errors-page .kpi-sub{font-style:normal!important;color:var(--ink-soft)!important}.q-legend-exec{display:inline-block;width:14px;height:0;border-top:2px dashed var(--ink-muted);vertical-align:middle;margin-right:4px}.admin-filter-row .admin-search,.admin-filter-row input[placeholder^=Search],.admin-filter-row input[type=search],.admin-filter-row>:first-child{flex:1 1 320px!important;min-width:280px}.repo-access-note>span:has(.ui-icon){background:var(--hover-bg-color)!important;box-shadow:none!important}.repo-access-note>span:has(.ui-icon) .ui-icon{color:var(--ink-soft)!important}.dark-mode .paper-table-row{background:0 0!important}.dark-mode .paper-table-row:hover{background:rgba(255,255,255,.04)!important}.dark-mode .btn-primary,.dark-mode .dashboard-page .btn-primary,.dark-mode .paper-page .btn-primary{background:#1f6a64!important;border-color:#1f6a64!important;color:#fff!important}.dark-mode .dashboard-type-filter.btn-primary{background:rgba(124,199,190,.16)!important;border-color:transparent!important;color:#a8ddd6!important}.paper-page .form-control,.paper-page input[type=date],.paper-page input[type=text],.paper-page textarea{border-color:var(--border-color)!important}.paper-page .form-control:focus,.paper-page textarea:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}.errors-page .col-count{background:0 0!important;box-shadow:none!important;display:flex;align-items:center}.errors-page .col-count::after,.errors-page .col-count::before{content:none!important;display:none!important}.errors-page .col-count .count-pill{width:auto!important;min-width:0!important}.paper-page .dashboard-type-filter.btn-primary{background:var(--accent-soft)!important;border-color:transparent!important;color:var(--accent)!important}.paper-page>.row{margin-left:0!important;margin-right:0!important}.paper-page>.row>[class*=col],.paper-page>.row>[class*=w-100]{padding-left:0!important;padding-right:0!important}.q-table th{font-family:var(--font-sans)!important;text-transform:none!important;letter-spacing:0!important;font-size:12.5px!important;font-weight:600!important;color:var(--ink-soft)!important}.admin-page input:not([type=checkbox]),.claim-page input,.paper-page input.form-control,.paper-page input[type=date],.paper-page input[type=search],.paper-page input[type=text],.paper-page input[type=url],.paper-page select.form-control,.paper-page textarea,.paper-page textarea.form-control{border:1px solid var(--border-color)!important}.dark-mode .admin-page input:not([type=checkbox]),.dark-mode .claim-page input,.dark-mode .paper-page input.form-control,.dark-mode .paper-page textarea{border-color:#5a554d!important}.landing-continue:disabled{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important;opacity:.45!important}.overview-page .ov-kpi-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width:767px){.admin-page .admin-nav{flex-wrap:wrap!important;overflow:visible!important;-webkit-mask-image:none!important;mask-image:none!important;row-gap:4px}.admin-summary{flex-wrap:wrap!important;overflow:visible!important;row-gap:8px}.admin-page .paper-table-row .text-muted,.admin-page .paper-table-row [class*=meta]{white-space:normal!important}}.summary-total small{font-size:13px;font-weight:500;color:var(--ink-soft);margin-left:2px}@media (max-width:767px){.overview-page .ov-daily-row,.overview-page .ov-kpi-row,.overview-page [class*=ov-][class*="-row"]{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}.overview-page .ov-kpi-card,.overview-page [class*=ov-daily-card]{min-width:0!important;width:auto!important}.overview-page .ov-kpi-row>:last-child:nth-child(odd){grid-column:1/-1}}.user-detail-grid .detail-value:nth-of-type(1){font-family:var(--font-mono)!important}.paper-table-empty .empty-title{display:block;font-size:15px;font-weight:600;color:var(--color);margin-bottom:4px}.paper-table-empty>span{max-width:440px;text-align:center}.paper-table-empty-actions{margin-top:12px;display:flex;gap:8px;justify-content:center}.q-action-sep{display:inline-block;width:1px;height:22px;margin:0 6px;background:var(--border-color);vertical-align:middle}.hidden-toggle{padding:0;border:0;background:0 0;color:var(--link-color);font:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.ov-meter{height:4px;margin:6px 0 2px;border-radius:4px;background:var(--hover-bg-color);overflow:hidden}.ov-meter>span{display:block;height:100%;border-radius:4px;background:var(--ink-faint)}.ov-meter.warn>span{background:var(--status-progress)}.ov-meter.crit>span{background:var(--status-error)}.admin-filters-toggle{display:none}@media (max-width:767px){.admin-filters-toggle{display:inline-flex;margin:8px 0}.admin-filter-toolbar .admin-filter-row:not(.is-open)>:not(:first-child){display:none!important}.admin-filter-toolbar .admin-filter-row:not(.is-open){grid-template-columns:1fr!important}}.paper-settings-layout,.settings-layout{max-width:none!important}.paper-settings-layout>:last-child,.settings-layout>:last-child{max-width:none!important;flex:1 1 auto}.errors-list-head>span{font-weight:600!important}.errors-page .errors-list>div:not(.errors-list-head){min-height:56px!important}.reading-layout{display:grid;grid-template-columns:minmax(0,720px) 220px;justify-content:center;gap:48px;padding:0 32px}.reading-layout .file-content.markdown-body{max-width:none!important;margin:0!important;padding:40px 0 96px!important;font-size:16px!important;line-height:1.7!important}.reading-layout .markdown-body h1{font-size:34px!important;font-weight:600!important;letter-spacing:-.02em;border-bottom:0!important;margin-bottom:12px!important}.reading-layout .markdown-body h2{font-size:24px!important;font-weight:600!important;letter-spacing:-.01em;border-bottom:0!important;margin-top:44px!important;padding-bottom:0!important;scroll-margin-top:72px}.reading-layout .markdown-body h3{font-size:18px!important;margin-top:28px!important;scroll-margin-top:72px}.reading-layout .markdown-body>p:first-of-type{font-size:18px;color:var(--ink-soft)}.readme-toc{position:sticky;top:68px;align-self:start;margin-top:44px;max-height:calc(100% - 100px);overflow:auto;display:grid;gap:2px;font-size:13px}.readme-toc-head{font-size:12px;font-weight:600;color:var(--color);margin-bottom:8px}.readme-toc a{display:block;padding:4px 0 4px 12px;border-left:1px solid var(--border-color);color:var(--ink-soft)!important;text-decoration:none!important;line-height:1.35}.readme-toc a:hover{color:var(--color)!important;border-left-color:var(--ink-muted)}.readme-toc a.lvl-3{padding-left:24px;font-size:12.5px}@media (max-width:1199px){.reading-layout{grid-template-columns:minmax(0,760px)}.readme-toc{display:none}}@media (max-width:767px){.reading-layout{padding:0 16px}.reading-layout .file-content.markdown-body{padding:20px 0 72px!important}.reading-layout .markdown-body h1{font-size:26px!important}.reading-layout .markdown-body h2{font-size:20px!important}}.demo{margin-top:28px;display:grid;gap:14px}.demo-terms{display:grid;gap:6px}.demo-terms label{font-size:13px;font-weight:600;color:var(--color);margin:0}.demo-terms label span{font-weight:400;color:var(--ink-soft);margin-left:6px}.demo-terms input{height:42px;padding:0 14px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-card);font:14px var(--font-mono);color:var(--color)}.demo-terms input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.demo-panes{display:grid;grid-template-columns:1fr 1fr;gap:14px}.demo .pane{border:1px solid var(--border-color);border-radius:var(--radius-surface);background:var(--paper-card);overflow:hidden;display:flex;flex-direction:column}.demo .pane-header{display:flex;justify-content:space-between;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border-soft);font-size:12px;color:var(--ink-soft)}.demo .pane-label{font-weight:600;color:var(--color)}.demo .pane-url{font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.demo .pane-after{box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent);border-color:color-mix(in srgb,var(--accent) 35%,var(--border-color))}.demo .pane-body{min-height:150px;padding:14px 16px;font:13px/1.75 var(--font-mono);color:var(--color);white-space:pre-wrap}.demo-input{border:0;resize:vertical;background:0 0;outline:0;width:100%}.demo-input:focus{background:color-mix(in srgb,var(--accent) 3%,transparent)}.demo-output .redact-chip{font-size:.92em}@media (max-width:767px){.demo-panes{grid-template-columns:1fr}}.paper-frame-bar .dots{display:none!important}.paper-frame-bar{justify-content:flex-start!important;height:32px!important;background:0 0!important}.paper-frame-bar .url{text-align:left!important;flex:none!important}.reading-layout .markdown-body>p:first-of-type{font-size:inherit!important;color:inherit!important}@media (max-width:767px){.mobile-sub b{display:inline-flex;align-items:center;height:18px;padding:0 6px;border-radius:999px;background:var(--accent-soft);font-size:11.5px}.explorer-content .file-card-head{min-height:52px!important;padding-top:6px!important;padding-bottom:6px!important}.file-card-head .file-card-path{gap:4px!important;column-gap:4px!important}.file-card.is-code.no-wrap .file-card-body::after{width:48px!important;background:linear-gradient(to right,transparent,var(--paper-card) 60%)!important}.dark-mode .file-card.is-code.no-wrap .file-card-body::after{background:linear-gradient(to right,transparent,var(--canvas-bg-color) 60%)!important}}.ace_search{justify-content:flex-start}.ace_searchbtn_close{margin-left:auto!important;order:99}.fm-chips span,.paper-preview .term{background:var(--hover-bg-color)!important;color:var(--ink-soft)!important;text-decoration-color:var(--ink-muted)!important}.dark-mode .files .file.active>a{background:rgba(255,255,255,.06)!important}.dark-mode .ace-nord-dark .ace_marker-layer .ace_redacted,.dark-mode .ace_editor .ace_marker-layer .ace_redacted{background:rgba(124,199,190,.32)!important;box-shadow:inset 0 0 0 1px rgba(124,199,190,.65)!important}.paper-link-arrow{font-size:15px!important}.paper-reassure{font-size:14px!important}.acct-menu-head,.dark-mode .acct-menu-head{color:var(--ink-soft)!important}.reading-layout{grid-template-columns:minmax(0,720px) 200px!important;gap:40px!important;padding:0 24px!important}.vb-snapshot{color:var(--ink-soft)!important;background:var(--paper-card)!important;box-shadow:inset 0 0 0 1px var(--border-color)}.paper-faq-lede a{color:var(--color)!important;border-bottom:1px solid var(--ink-faint)!important;text-decoration:none!important}.paper-faq-lede a:hover{border-bottom-color:var(--color)!important}.paper-qa,.paper-section-head{margin-top:96px!important}.ace-chrome .ace_constant.ace_language,.ace-chrome .ace_constant.ace_numeric,.ace-chrome .ace_support.ace_constant{color:#0550ae!important}.ace-nord-dark .ace_constant.ace_language,.ace-nord-dark .ace_constant.ace_numeric,.ace-nord-dark .ace_support.ace_constant{color:#79c0ff!important}.copy-url{display:inline-flex;align-items:center;gap:8px;max-width:230px;height:30px;padding:0 8px 0 10px;border:0;border-radius:var(--radius-control);background:var(--hover-bg-color);font:500 12.5px/1 var(--font-mono);color:var(--ink-soft);cursor:pointer;transition:background .12s,color .12s}.copy-url:hover{background:var(--accent-soft);color:var(--accent)}.copy-url:disabled{cursor:progress}.copy-url-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.copy-url .project-type-svg{width:14px;height:14px;flex-shrink:0;opacity:.75}.copy-url:hover .project-type-svg{opacity:1}.paper-table.paper-table-dashboard .paper-table-head,.paper-table.paper-table-dashboard .paper-table-row{grid-template-columns:minmax(260px,3fr) 170px 64px 140px 280px!important}@media (max-width:767px){.copy-url{max-width:44px;padding:0;justify-content:center;width:40px;height:40px}.copy-url-text{display:none}}.dashboard-page .btn.dashboard-type-filter.btn-primary,.paper-page .btn.dashboard-type-filter.btn-primary{background:var(--accent-soft)!important;border-color:transparent!important;color:var(--accent)!important}.ace_editor .ace_marker-layer .ace_selected-word{background:rgba(242,204,96,.42)!important;box-shadow:none!important;border-radius:2px}.ace_editor.ace-chrome .ace_marker-layer .ace_selection{background:#f2cc60!important;box-shadow:0 0 0 1px #c69026!important}.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection{background:rgba(242,204,96,.55)!important;box-shadow:0 0 0 1px #f2cc60!important}.ace_searchbtn_close{background-image:none!important;width:28px!important;height:28px!important;display:inline-flex!important;align-items:center;justify-content:center;border-radius:var(--radius-control)!important;opacity:1!important;color:var(--ink-soft)!important}.ace_searchbtn_close::before{content:"\00d7";font:400 20px/1 var(--font-sans);color:var(--ink-soft)}.ace_searchbtn_close:hover{background-color:var(--hover-bg-color)!important}.ace_search{padding:6px 12px!important}.readme-toc a.is-active{color:var(--color)!important;border-left:2px solid var(--accent)!important;margin-left:-.5px;font-weight:500}.demo .pane-after{box-shadow:none!important;border-color:var(--border-color)!important}.demo .pane-body{min-height:120px!important}.demo-input{resize:none!important}.vb-snapshot .vb-dot{margin:0 2px;color:var(--ink-faint)}.dark-mode .btn-hero,.dark-mode .btn-primary,.dark-mode .landing-continue:not(:disabled){background:#2b8a80!important;border-color:#2b8a80!important;color:#fff!important}.paper-reassure li::before{content:""!important;display:inline-block;width:14px;height:14px;margin-right:7px;vertical-align:-2px;background:var(--accent);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/contain no-repeat}.nav-support-inline .nav-heart{width:14px;height:14px;color:#e5484d;fill:#e5484d}.fm-chips span{color:var(--color)!important}@media (max-width:767px){.vb-icon,.vb-support{width:36px!important;height:36px!important}.vb-signin{height:36px!important}.navbar .nav-signin-m,.navbar-toggler{height:36px!important;border-radius:var(--radius-control)!important}}.overview-page .ov-spark-fill,.overview-page .ov-spark-fill-alt,.overview-page .ov-spark-fill-new-user,.overview-page .ov-spark-fill-user{background:color-mix(in srgb,var(--accent) 70%,transparent)!important}.overview-page .ov-dot-legend{background:var(--accent)!important}.errors-page .bucket-info,.errors-page .col-sev .sev-info::before,.errors-page .errors-chart [class*=info]{background:var(--ink-faint)!important}.errors-header .btn-danger{background:0 0!important;color:var(--status-error)!important;border:1px solid color-mix(in srgb,var(--status-error) 45%,transparent)!important;margin-left:10px}.conferences-page .paper-table:has(.paper-table-empty) .paper-table-head{display:none!important}.copy-url{max-width:280px!important}.paper-table.paper-table-dashboard .paper-table-head,.paper-table.paper-table-dashboard .paper-table-row{grid-template-columns:minmax(240px,3fr) 150px 60px 130px 320px!important}.dark-mode .paper-table-dashboard .paper-table-row{background:0 0!important}.ace_editor .ace_marker-layer .ace_redacted{background:color-mix(in srgb,var(--accent) 18%,transparent)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 60%,transparent)!important}.ace_searchbtn_close{margin-left:4px!important}.ace_search .ace_button{font-size:12px!important}.nav-support-inline .nav-heart,.support-cta .ui-icon,.vb-support .ui-icon{color:#c25b5e!important;fill:#c25b5e!important}.nav-support-inline:hover .nav-heart,.support-cta:hover .ui-icon,.vb-support:hover .ui-icon{color:#e5484d!important;fill:#e5484d!important}.vb-support{background:0 0!important;box-shadow:inset 0 0 0 1px var(--border-color)!important}.dark-mode .nav-support-inline .nav-heart,.dark-mode .vb-support .ui-icon{color:#d9787b!important;fill:#d9787b!important}.readme-toc .toc-rail{border-left:1px solid var(--border-color)}.readme-toc a,.readme-toc a.is-active{border-left:0!important;margin-left:-1px!important;padding:5px 0 5px 13px!important;line-height:1.4}.readme-toc a.lvl-3{padding-left:25px!important}.readme-toc a:hover{box-shadow:inset 1px 0 0 var(--ink-muted)}.readme-toc a.is-active{box-shadow:inset 2px 0 0 var(--accent)!important}@media (min-width:992px){.demo-panes{grid-template-columns:1fr 1.4fr;gap:40px}}.fm-chips span{text-decoration:none!important}.dark-mode .btn-hero,.dark-mode .btn-primary,.dark-mode .landing-continue:not(:disabled){background:#237a71!important;border-color:#237a71!important}.dark-mode .paper-frame{box-shadow:0 0 0 1px #34302b,0 24px 60px rgba(0,0,0,.5)!important}.dark-mode .leftCol{background:#1d1a17!important}.dark-mode .files .file.active>a{background:rgba(255,255,255,.09)!important}.dark-mode .explorer-content .markdown-body img{filter:none!important}@media (max-width:767px){.viewer-bar{padding-left:12px!important;padding-right:12px!important}.vb-signin{height:30px!important;padding:0 10px!important}}.paper-table.paper-table-dashboard .paper-table-head,.paper-table.paper-table-dashboard .paper-table-row{grid-template-columns:minmax(240px,3fr) 190px 60px 120px 300px!important}.paper-table-dashboard .cell-status .status-sub-date{white-space:normal!important;overflow:visible!important;text-overflow:clip!important}.row-edit{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-control);color:var(--ink-soft)!important}.row-edit:hover{background:var(--hover-bg-color);color:var(--color)!important}.row-edit .ui-icon{width:16px;height:16px}.cell-actions{display:flex;align-items:center;gap:4px;justify-content:flex-end}.dashboard-filter-controls .btn-group[aria-label=Type]{background:var(--hover-bg-color);padding:3px;border-radius:calc(var(--radius-control) + 3px);gap:2px}.dashboard-filter-controls .btn-group[aria-label=Type]>.btn{border:0!important;background:0 0!important;color:var(--ink-soft)!important;border-radius:var(--radius-control)!important;height:32px;box-shadow:none!important}.dashboard-filter-controls .btn-group[aria-label=Type]>.btn.btn-primary{background:var(--paper-card)!important;color:var(--color)!important;box-shadow:0 1px 2px rgba(0,0,0,.08),0 0 0 1px var(--border-color)!important}.admin-filter-row .form-control,.dashboard-page .dashboard-filter-row .form-control,.paper-page .search-wrap .form-control{border:1px solid #a39d92!important}.dark-mode .admin-filter-row .form-control,.dark-mode .dashboard-page .dashboard-filter-row .form-control,.dark-mode .paper-page .search-wrap .form-control{border-color:#4a443d!important}.ov-health{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;margin:0 0 20px;border-radius:var(--radius-control);background:color-mix(in srgb,var(--status-error,#b42318) 8%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--status-error,#b42318) 30%,transparent);font-size:14px;color:var(--color)}.ov-health .ui-icon{width:18px;height:18px;flex:none;margin-top:1px;color:var(--status-error,#b42318)}.dark-mode .ov-health{background:rgba(240,138,130,.1);box-shadow:inset 0 0 0 1px rgba(240,138,130,.35)}.dark-mode .ov-health .ui-icon{color:#f08a82}.cell-anon .record-type-icon{display:none!important}.cell-anon{padding-left:0!important}.errors-page .errors-row-main{padding-top:10px!important;padding-bottom:10px!important;min-height:46px;align-items:center!important}.errors-page .col-when{display:flex;gap:8px;align-items:baseline}.errors-page .when-abs{font-size:12px}.errors-page .msg-code{font-family:var(--font-sans)!important;font-weight:500!important;font-size:13.5px!important}@media (max-width:767px){.viewer-bar .vb-icon,.viewer-bar .vb-signin,.viewer-bar .vb-support{height:36px!important;border-radius:var(--radius-control)!important;background:0 0!important;box-shadow:inset 0 0 0 1px var(--border-color)!important;border:0!important}.viewer-bar .vb-icon,.viewer-bar .vb-support{width:36px!important}.viewer-bar .vb-signin{padding:0 12px!important}.file-card-head .card-files-btn,.file-card-head .tb-copy-m,.file-card-head .tb-more-btn{width:36px!important;height:36px!important;border-radius:var(--radius-control)!important;background:0 0!important;box-shadow:inset 0 0 0 1px var(--border-color)!important;color:var(--color)!important}.file-card.is-code.no-wrap .file-card-body::after{width:64px!important;background:linear-gradient(to right,transparent,var(--paper-card) 70%)!important}.dark-mode .file-card.is-code.no-wrap .file-card-body::after{background:linear-gradient(to right,transparent,var(--canvas-bg-color) 75%)!important}}.btn-toggle.is-on,.btn-toggle[aria-pressed=true]{color:var(--accent)!important;background:var(--accent-soft)!important}.dark-mode .btn-toggle.is-on{background:rgba(124,199,190,.14)!important}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{font-size:.78em!important;padding:0 6px!important;vertical-align:.08em!important;font-weight:600!important}@media (min-width:1200px){.readme-toc{padding-top:10px}}.fm-toggles span{color:var(--color)!important}.dark-mode .paper-frame{border:0!important;box-shadow:0 0 0 1px #34302b,0 24px 60px rgba(0,0,0,.45)!important}.q-section-right .q-legend-completed{color:#2f7d4f!important}.q-section-right .q-legend-failed{color:#b42318!important}.dark-mode .q-section-right .q-legend-completed{color:#6fbf8a!important}.dark-mode .q-section-right .q-legend-failed{color:#f08a82!important}.q-chart-wrap canvas{max-height:180px}.avatar-fallback{width:28px;height:28px;flex:none;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--hover-bg-color);color:var(--ink-soft);font-size:12px;font-weight:600}.mono-id{font-family:var(--font-mono)!important;font-size:13px!important}.landing-continue:disabled{background:var(--hover-bg-color)!important;border-color:var(--border-color)!important;color:var(--ink-soft)!important;opacity:1!important;cursor:not-allowed}.paper-table .anon-sub,.paper-table .anon-sub *{font-size:12px}.dashboard-heading-actions{display:flex;align-items:center;gap:10px}.dashboard-heading-actions .dashboard-quota{position:relative;margin:0!important}.dashboard-heading-actions .quota-panel{right:0;left:auto!important}@media (max-width:767px){.admin-nav{display:flex!important;flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none;gap:4px;margin-left:-16px;margin-right:-16px;padding:0 16px 4px}.admin-nav::-webkit-scrollbar,.admin-summary::-webkit-scrollbar{display:none}.admin-nav a{flex:none;white-space:nowrap}.admin-summary{display:flex!important;flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none;gap:6px;margin-left:-16px;margin-right:-16px;padding:0 16px 4px}.admin-summary>*{flex:none;white-space:nowrap}.paper-table .anon-sub{flex-wrap:wrap!important;white-space:normal!important;row-gap:2px}.paper-table .anon-sub>a,.paper-table .anon-sub>span{overflow:visible!important;text-overflow:clip!important;white-space:nowrap}.paper-table .cell-anon .repo-name{white-space:normal!important;overflow-wrap:anywhere;overflow:visible!important;text-overflow:clip!important}.overview-page .ov-kpi-sub{white-space:normal!important;overflow:visible!important;text-overflow:clip!important}.overview-page .ov-kpi-row{grid-template-columns:1fr 1fr!important}}.dashboard-page .dashboard-heading-actions{flex-direction:row!important;align-items:center!important;gap:10px!important}@media (max-width:767px){.admin-page .admin-nav{flex-wrap:nowrap!important;overflow-x:auto!important;margin-left:-16px;margin-right:-16px;padding:0 16px 4px}header.viewer-bar .vb-icon,header.viewer-bar .vb-support{box-shadow:inset 0 0 0 1px var(--border-color)!important;background:0 0!important}}@media (max-width:767px){.dashboard-page .dashboard-heading{flex-direction:column!important;align-items:stretch!important;gap:12px}.dashboard-page .dashboard-heading-actions{justify-content:space-between!important;width:100%}.row-edit{display:none!important}}@media (max-width:767px){.paper-table-dashboard .copy-url{background:0 0!important;box-shadow:inset 0 0 0 1px var(--border-color)!important}}@media (max-width:767px){.mobile-sub{display:flex!important;align-items:center;gap:6px;margin-top:3px!important}.mobile-sub>*+::before{content:"·";margin-right:6px;color:var(--ink-muted);font-weight:400}.mobile-sub>b::before{display:none}header.viewer-bar .vb-icon,header.viewer-bar .vb-support{box-shadow:none!important;background:0 0!important}.file-card-head .card-files-btn,.file-card-head .tb-copy-m,.file-card-head .tb-more-btn{box-shadow:none!important;background:0 0!important}.file-card-head .card-files-btn:active,.file-card-head .tb-copy-m:active,.file-card-head .tb-more-btn:active{background:var(--hover-bg-color)!important}.file-card-head{padding-top:6px!important;padding-bottom:6px!important}}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{box-shadow:none!important;border:0!important;padding:0 5px!important;font-weight:500!important}@media (min-width:1200px){.reading-layout{gap:40px!important}}.ace_search .ace_search_field:focus,.ace_search_field:focus{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 22%,transparent)!important;border-color:color-mix(in srgb,var(--accent) 70%,transparent)!important}.demo-terms label span,.paper-eyebrow,.paper-footer,.paper-footer a{color:var(--ink-soft)!important}.dark-mode .anonymize-page .btn-ink,.dark-mode .btn-hero,.dark-mode .btn-primary,.dark-mode .landing-continue,.dark-mode .page-head-row .btn-primary,.dark-mode .paper-page .btn-ink,.dark-mode .paper-page .btn-primary{background:#237a71!important;border-color:#237a71!important;color:#fff!important}.dark-mode .anonymize-page .btn-ink:hover,.dark-mode .btn-primary:hover,.dark-mode .paper-page .btn-ink:hover{background:#1e6b63!important;color:#fff!important;filter:none!important}.landing-continue,.landing-continue:disabled{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important;opacity:1!important;cursor:pointer}.errors-page .seg.seg-info{background:var(--ink-faint)!important;opacity:1!important}.errors-page .dot-info,.errors-page .sev-dot.sev-info{background:var(--ink-muted)!important}@media (max-width:767px){.admin-page .admin-nav,.admin-summary{-webkit-mask-image:linear-gradient(to right,#000 82%,transparent)!important;mask-image:linear-gradient(to right,#000 82%,transparent)!important;scroll-snap-type:x proximity}.admin-page .admin-nav a,.admin-summary>*{scroll-snap-align:start}.admin-page .admin-filters-toggle,.admin-page .dashboard-filters-toggle{width:auto!important}}.admin-filter-inline{display:inline-flex;align-items:center;gap:6px;margin-left:14px}.admin-filter-inline label{margin:0!important;font-size:12.5px;color:var(--ink-soft)}.admin-filter-row .form-control,.dashboard-page .dashboard-filter-row .form-control,.paper-page .search-wrap .form-control{border-color:var(--border-color)!important;height:36px!important}.admin-filter-row .form-control:focus,.dashboard-page .dashboard-filter-row .form-control:focus{border-color:var(--accent)!important}.dashboard-page .dashboard-filter-controls .btn,.dashboard-page .dashboard-filter-controls .dropdown-toggle{height:36px}.admin-page .cell-repos a,.paper-table [role=cell].num a{color:var(--color)!important;font-family:var(--font-sans)!important}.errors-page .col-count{font-weight:inherit!important;color:inherit!important}.errors-page .errors-row-main{min-height:52px!important;padding-top:8px!important;padding-bottom:8px!important}.connections-grid{display:grid!important;grid-template-columns:1fr 1fr!important;align-items:stretch}@media (max-width:767px){.connections-grid{grid-template-columns:1fr!important}}.admin-page .admin-filter-inline .form-control,.admin-page .admin-filter-row .form-control,.admin-page .search-wrap .form-control{height:36px!important;min-height:36px!important;border:1px solid var(--border-color)!important;font-size:13.5px!important;padding-top:0!important;padding-bottom:0!important}.admin-page .admin-filter-inline .form-control:focus,.admin-page .admin-filter-row .form-control:focus{border-color:var(--accent)!important}.admin-page select.form-control{height:36px!important;border:1px solid var(--border-color)!important}.admin-page .paper-table .anon-sub{gap:0!important;column-gap:0!important}.admin-page .paper-table .anon-sub>a{border-bottom:0!important;text-decoration:none}.tb-menu-note{display:flex;align-items:center;gap:10px;padding:8px 12px;font-size:13px;color:var(--ink-soft)}.tb-menu-note .ui-icon{width:16px;height:16px}.readme-toc a{color:var(--ink-soft)!important;font-size:13.5px!important}.readme-toc a.lvl-3{font-size:13px!important}.readme-toc a.is-active{color:var(--accent)!important;font-weight:500!important}.dark-mode .readme-toc a.is-active{color:#a8ddd6!important}.ace_search_form .ace_searchbtn{border-radius:0!important;margin:0!important}.ace_search_form .ace_searchbtn.prev{border-radius:var(--radius-control) 0 0 var(--radius-control)!important;margin-left:8px!important}.ace_search_form .ace_searchbtn.next{border-radius:0 var(--radius-control) var(--radius-control) 0!important;margin-left:-1px!important}.ace_search .ace_searchbtn.next,.ace_search .ace_searchbtn.prev{box-shadow:none!important}.ace_editor .ace_marker-layer .ace_selected-word,.ace_editor .ace_marker-layer .ace_selection{box-shadow:none!important;border:0!important}@media (max-width:767px){.file-card-head{padding-left:12px!important;padding-right:12px!important}.file-card-head .file-card-path{column-gap:8px!important}}.dark-mode .files .file.active>a{background:rgba(255,255,255,.07)!important}@media (min-width:1200px){.reading-layout{grid-template-columns:minmax(0,700px) 190px!important;gap:40px!important;padding:0 24px!important}}.ace-chrome .ace_string{color:#0a3069!important}.ace-nord-dark .ace_string,.dark-mode .ace_editor .ace_string{color:#a5c8ff!important}.ace_editor .ace_marker-layer .ace_redacted{background:color-mix(in srgb,var(--accent) 20%,transparent)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 55%,transparent)!important;border-radius:3px}.ace_search .ace_button{height:28px!important;min-width:30px!important;font-size:12px!important;color:var(--ink-soft)!important;display:inline-flex!important;align-items:center;justify-content:center}.ace_search .ace_button.checked{background:var(--accent-soft)!important;color:var(--accent)!important;box-shadow:inset 0 0 0 1px var(--accent)!important}.ace_search_counter{font-size:12.5px!important;color:var(--ink-soft)!important}.ace_searchbtn_close::before{font-size:18px!important;font-weight:300!important}.btn-toggle.is-on{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent)!important}.vb-snapshot{background:0 0!important;box-shadow:none!important;color:var(--ink-soft)!important;padding-left:4px!important;padding-right:4px!important}.dark-mode .files .file.active>a{background:rgba(255,255,255,.1)!important;color:#f2eee8!important}.paper-faq-title,.paper-hero h1,.paper-section-head h2{text-wrap:balance}@media (min-width:992px){.demo-panes{grid-template-columns:1fr 1fr!important;gap:20px!important}}.paper-faq details a:not(.btn),.paper-faq-a a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,currentColor 40%,transparent)}@media (max-width:767px){.file-card.is-code .ace_gutter-cell{padding-left:8px!important;padding-right:8px!important}}.auto-refresh-label{font-family:var(--font-sans)!important}.ov-spark-fill{opacity:1!important;background:color-mix(in srgb,var(--accent) 70%,transparent)!important}.connections-grid .connection-link:not(.connection-danger){display:inline-flex;align-items:center;height:34px;padding:0 12px;border:1px solid var(--border-color);border-radius:var(--radius-control);color:var(--color)!important;text-decoration:none!important}.reading-layout .file-content.markdown-body,.reading-layout .markdown-body{padding-left:0!important;padding-right:0!important}.explorer-content .file-card .reading-layout .file-content.markdown-body{padding-left:0!important;padding-right:0!important}.admin-page h1.paper-page-title{margin:0!important;line-height:44px!important;min-height:44px}.admin-page .errors-header,.admin-page .ov-header,.admin-page .q-header{min-height:44px;margin:0 0 12px!important;display:flex;align-items:center;justify-content:space-between}.admin-page>h1.paper-page-title{margin-bottom:12px!important}.admin-page:has(.admin-users-row) .admin-summary .summary-pill.active{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}.admin-page:has(.admin-users-row) .admin-summary .summary-pill.active .count{color:rgba(255,255,255,.8)!important}.admin-page:has(.admin-users-row) .admin-summary .summary-pill.active::before{display:none!important}.admin-page input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px}.ov-health{background:var(--paper-card)!important;box-shadow:inset 3px 0 0 var(--status-error,#b42318),inset 0 0 0 1px var(--border-color)!important}.dark-mode .ov-health{background:var(--paper-card)!important;box-shadow:inset 3px 0 0 #f08a82,inset 0 0 0 1px var(--border-color)!important}.dashboard-quota .quota-summary-ring{display:none!important}.errors-page .errors-row-main{min-height:44px!important}.errors-page .when-abs{display:none!important}@media (max-width:767px){.admin-summary{flex-wrap:wrap!important;overflow:visible!important;-webkit-mask-image:none!important;mask-image:none!important;margin-left:0!important;margin-right:0!important;padding:0!important}.admin-summary .summary-pill{height:30px!important;padding:0 10px!important;font-size:13px!important}.admin-page .admin-nav{flex-wrap:wrap!important;overflow:visible!important;-webkit-mask-image:none!important;mask-image:none!important;margin-left:0!important;margin-right:0!important;padding:0!important;gap:2px!important}.admin-page .admin-nav a{min-height:34px!important;padding:0 10px!important;font-size:13.5px!important}.admin-page .admin-nav a .ui-icon{display:none!important}}.fm-toggles span{display:inline-flex;align-items:center;gap:6px}.fm-toggles span::before{content:"";width:12px;height:12px;flex:none}.fm-toggles .is-on::before{background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-7'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-7'/%3E%3C/svg%3E") center/contain no-repeat}.faq-toc a,.paper-faq nav a,.paper-faq-toc a{text-decoration:none!important}@media (max-width:991px){.navbar .navbar-toggler{border-color:transparent!important;background:0 0!important;box-shadow:none!important}}.ace-chrome .ace_gutter-cell{color:#8a847a!important}.dark-mode .ace_editor .ace_gutter-cell{color:#7a746b!important}.ace-chrome .ace_keyword,.ace-chrome .ace_keyword.ace_operator.ace_new,.ace-chrome .ace_storage{color:#7a3e6e!important}.ace-chrome .ace_string{color:#6b5a1e!important}.ace-chrome .ace_entity.ace_name.ace_function,.ace-chrome .ace_support.ace_function{color:#2b2824!important;font-weight:500}.ace-chrome .ace_constant,.ace-chrome .ace_constant.ace_language,.ace-chrome .ace_constant.ace_numeric{color:#8a4b12!important}.ace-chrome .ace_comment{color:#8a847a!important;font-style:italic}.ace-chrome .ace_identifier,.ace-chrome .ace_variable{color:#2b2824!important}.ace-chrome .ace_keyword.ace_operator,.ace-chrome .ace_paren,.ace-chrome .ace_punctuation{color:#6e6860!important}.ace-chrome .ace_entity.ace_name.ace_tag,.ace-chrome .ace_support.ace_class,.ace-chrome .ace_support.ace_type{color:#7a3e6e!important}.ace-chrome .ace_entity.ace_other.ace_attribute-name{color:#8a4b12!important}.dark-mode .ace_editor .ace_entity.ace_name.ace_tag,.dark-mode .ace_editor .ace_keyword,.dark-mode .ace_editor .ace_storage,.dark-mode .ace_editor .ace_support.ace_type{color:#d7a6cb!important}.dark-mode .ace_editor .ace_string{color:#d9c08a!important}.dark-mode .ace_editor .ace_entity.ace_name.ace_function,.dark-mode .ace_editor .ace_identifier,.dark-mode .ace_editor .ace_support.ace_function,.dark-mode .ace_editor .ace_variable{color:#ece7df!important}.dark-mode .ace_editor .ace_constant,.dark-mode .ace_editor .ace_constant.ace_numeric,.dark-mode .ace_editor .ace_entity.ace_other.ace_attribute-name{color:#e0b070!important}.dark-mode .ace_editor .ace_comment{color:#8a847a!important;font-style:italic}.dark-mode .ace_editor .ace_keyword.ace_operator,.dark-mode .ace_editor .ace_paren,.dark-mode .ace_editor .ace_punctuation{color:#a39d92!important}.ace_editor .ace_marker-layer .ace_redacted{background:rgba(31,106,100,.22)!important;box-shadow:inset 0 0 0 1px rgba(31,106,100,.55)!important;border-radius:3px;mix-blend-mode:multiply}.dark-mode .ace_editor .ace_marker-layer .ace_redacted{background:rgba(124,199,190,.26)!important;box-shadow:inset 0 0 0 1px rgba(124,199,190,.6)!important;mix-blend-mode:screen}.ace-chrome .ace_gutter-cell{color:#77716a!important}.dark-mode .ace_editor .ace_gutter-cell{color:#8a847a!important}@media (min-width:1200px){.reading-layout{justify-content:center!important}}.fm-toggles span:not(.is-on)::before{display:none!important}.demo-panes .pane-header{display:flex;gap:10px;min-width:0}.demo-panes .pane-url{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width:767px){.mobile-sub{font-size:12.5px!important;line-height:1.4}}.ov-live{font-size:12.5px;color:var(--ink-soft)}.admin-summary .summary-pill:not(.active) .count{text-decoration:none!important}.paper-table:not(.paper-table-dashboard) .paper-table-head,.paper-table:not(.paper-table-dashboard) .paper-table-row{column-gap:24px!important}.connection-label{font-size:12.5px;color:var(--ink-soft);margin-right:4px}.paper-table-dashboard .copy-url:hover{background:var(--hover-bg-color)!important;box-shadow:inset 0 0 0 1px var(--border-color)!important}.dashboard-page .dashboard-count button,.dashboard-page .show-hidden{font-size:13px!important}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;grid-template-areas:"name more" "meta meta" "link link"!important;row-gap:8px!important}.paper-table.paper-table-dashboard .paper-table-row>.cell-anon{grid-area:name!important;grid-column:auto!important;min-width:0}.paper-table.paper-table-dashboard .paper-table-row>.dashboard-row-meta{grid-area:meta!important;grid-column:auto!important}.paper-table.paper-table-dashboard .paper-table-row>.cell-actions{display:contents!important}.paper-table-dashboard .cell-actions>.copy-url{grid-area:link;width:100%!important;height:36px!important;padding:0 12px!important;justify-content:space-between!important;background:var(--hover-bg-color)!important;box-shadow:none!important}.paper-table-dashboard .cell-actions>.copy-url .copy-url-text{display:inline!important;min-width:0;overflow:hidden;text-overflow:ellipsis}.paper-table-dashboard .cell-actions>.dropdown{grid-area:more;align-self:start}.paper-table-dashboard .cell-actions>.project-details-button,.paper-table-dashboard .cell-actions>.row-edit{display:none!important}}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row{padding-right:12px!important}}.vb-support{background:0 0!important;box-shadow:none!important;border:0!important}.vb-support:hover{background:var(--hover-bg-color)!important}.vb-snapshot{margin-right:8px!important}.paper-eyebrow,.paper-stat small,.paper-stat-sub,.paper-stats .sub{color:#5e5950!important}.dark-mode .paper-eyebrow,.dark-mode .paper-stat-sub{color:#b5aea3!important}.paper-qa,.paper-section-head{margin-top:80px!important}.demo{margin-bottom:0!important}.ace_editor .ace_marker-layer .ace_selected-word{background:rgba(242,204,96,.35)!important}.ace_editor .ace_marker-layer .ace_selection{background:rgba(232,184,58,.55)!important}.paper-faq details>:not(summary),.paper-faq-a{max-width:720px!important}.q-state-chip.q-state-active::before{background:var(--color)!important}.q-state-chip.q-state-delayed::before{background:var(--ink-muted)!important}.repo-access-note>span:last-child{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border-radius:var(--radius-control);background:color-mix(in srgb,#b7791f 8%,transparent);box-shadow:inset 3px 0 0 #b7791f;color:var(--color)!important}.repo-access-note>span:last-child .ui-icon{color:#9a6416;flex:none;margin-top:2px}.dark-mode .repo-access-note>span:last-child{background:rgba(224,176,112,.1);box-shadow:inset 3px 0 0 #e0b070}.repo-access-note>span:has(.ui-icon){background:color-mix(in srgb,#b7791f 8%,transparent)!important;box-shadow:inset 3px 0 0 #b7791f!important;color:var(--color)!important}.repo-access-note>span:has(.ui-icon) .ui-icon{color:#9a6416!important}.dark-mode .repo-access-note>span:has(.ui-icon){background:rgba(224,176,112,.1)!important;box-shadow:inset 3px 0 0 #e0b070!important}.dark-mode .repo-access-note>span:has(.ui-icon) .ui-icon{color:#e0b070!important}@media (min-width:1200px){.reading-layout{grid-template-columns:minmax(0,680px) 190px!important;padding:0 40px!important}}.ace-chrome .ace_entity.ace_name.ace_tag,.ace-chrome .ace_keyword,.ace-chrome .ace_storage,.ace-chrome .ace_support.ace_type{color:#93306a!important}.ace-chrome .ace_string{color:#7a5300!important}.ace-chrome .ace_constant,.ace-chrome .ace_constant.ace_numeric{color:#a14a0f!important}.dark-mode .ace_editor .ace_string{color:#cdb98e!important}.ace_editor .ace_marker-layer .ace_redacted{background:rgba(31,106,100,.28)!important;box-shadow:inset 0 0 0 1px rgba(31,106,100,.65)!important}.ace_search{background:var(--paper-card)!important;box-shadow:inset 0 1px 0 var(--border-color),inset 0 -1px 0 var(--border-color)!important}.ace_search .ace_search_field{height:32px!important;border-radius:var(--radius-control)!important}.ace_search .ace_searchbtn{height:32px!important}.paper-stats-dot{background:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}.paper-stats-meta-right{color:var(--ink-soft)!important;font-weight:400!important}.paper-frame{box-shadow:0 0 0 1px var(--border-color),0 12px 32px rgba(40,30,20,.08)!important;border:0!important}.dark-mode .paper-frame{box-shadow:0 0 0 1px #34302b,0 12px 32px rgba(0,0,0,.4)!important}.paper-faq details>summary,.paper-faq summary{font-weight:600!important}@media (max-width:767px){.file-card-head .file-card-path{column-gap:12px!important}.file-card.is-code.no-wrap .file-card-body::after{width:72px!important;background:linear-gradient(to right,rgba(255,255,255,0),var(--paper-card) 65%)!important}}.dashboard-page .hidden-toggle{font-size:13px!important;color:var(--color)!important}.paper-table-dashboard .btn-icon-dots{width:32px!important;height:32px!important}.access-q{display:block;font-size:13px;color:var(--ink-soft);margin:4px 0 6px}.repo-access-note{max-width:none!important;width:100%}.repo-access-note>span:has(.ui-icon){width:100%}@media (max-width:767px){.anonymize-page .repo-access-switch,.anonymize-page [role=group][aria-label*=onnection]{width:100%!important;display:flex!important}.anonymize-page .repo-access-switch button{flex:1 1 0}}.admin-empty,.paper-table-empty{border:1px solid var(--border-color)!important;border-radius:var(--radius-surface,12px)!important;background:var(--paper-card)!important;padding:40px 24px!important;text-align:center}.dark-mode .paper-table-head{background:#26221e!important}.dark-mode .paper-table-row{background:#1e1b18}.paper-table:has(.paper-table-empty),:has(>.paper-table-empty:only-child){border-top:0!important;border-bottom:0!important;box-shadow:none!important}.ace_editor .ace_text-layer .ace_redacted{color:var(--accent)!important;background:var(--accent-soft)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent);border-radius:3px;font-weight:500}.dark-mode .ace_editor .ace_text-layer .ace_redacted{color:#a8ddd6!important;background:rgba(124,199,190,.16)!important;box-shadow:inset 0 0 0 1px rgba(124,199,190,.35)}.ace_editor .ace_marker-layer .ace_redacted{display:none!important}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{font-size:.82em!important;padding:0 .2em!important;background:color-mix(in srgb,var(--accent) 9%,transparent)!important;box-shadow:none!important;border:0!important;line-height:1.1!important;vertical-align:baseline!important;font-weight:500!important}.vb-snapshot{color:var(--color)!important;opacity:.78}.ace_search{box-shadow:inset 0 -1px 0 var(--border-color)!important}.btn-find.is-on,.btn-toggle.is-on{color:var(--accent)!important;background:var(--accent-soft)!important}.readme-toc a{text-indent:0;padding-left:13px!important}.readme-toc a.lvl-3{padding-left:25px!important}@media (max-width:767px){.anonymize-page .repo-access,.repo-access{flex-wrap:wrap;width:100%}.repo-access-switch{display:flex!important;width:100%!important}.repo-access-switch button{flex:1 1 0!important;white-space:nowrap!important;justify-content:center}}.q-card.selected{box-shadow:none!important;border-color:color-mix(in srgb,var(--accent) 60%,transparent)!important}.dark-mode .paper-table-head{background:#2e2a25!important}.dark-mode .paper-table-row{background:#1c1a17!important}.ov-chart-legend{font-family:var(--font-sans)!important;font-size:12px!important;color:var(--ink-soft)!important}.readme-toc a.lvl-2{font-weight:500!important;color:var(--color)!important}.readme-toc a.lvl-3{font-size:12.5px!important;color:var(--ink-soft)!important;font-weight:400!important}.readme-toc a.is-active{color:var(--accent)!important}.readme-toc a.lvl-2+a.lvl-2,.readme-toc a.lvl-3+a.lvl-2{margin-top:4px}.dark-mode .ace_editor .ace_text-layer .ace_redacted,.dark-mode .redact-chip{color:#9fe0d7!important;background:rgba(124,199,190,.2)!important;box-shadow:inset 0 0 0 1px rgba(124,199,190,.38)!important}.file-card-head .btn.btn-toggle.is-on,.file-card-head .btn.btn-toggle[aria-pressed=true]{color:var(--accent)!important;background:var(--accent-soft)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent)!important}.dark-mode .file-card-head .btn.btn-toggle.is-on{color:#a8ddd6!important;background:rgba(124,199,190,.14)!important}@media (max-width:767px){.file-card-head .file-card-path .card-files-btn{align-self:start!important}}@media (max-width:767px){.paper-hero-shot{max-height:300px;overflow:hidden;-webkit-mask-image:linear-gradient(#000 70%,transparent);mask-image:linear-gradient(#000 70%,transparent)}}.dark-mode .hero-mock-doc,.dark-mode .paper-frame{background:#24211d!important}.paper-stats-meta-right{color:#5e5950!important}.dark-mode .paper-stats-meta-right{color:#b5aea3!important}.errors-page .status-pill.status-neutral{background:var(--hover-bg-color)!important;color:var(--ink-soft)!important;border-color:var(--border-color)!important}.connections-grid .btn,.connections-grid .connection-link:not(.connection-danger){height:36px!important;min-height:36px!important;padding-top:0!important;padding-bottom:0!important;display:inline-flex!important;align-items:center}.claim-page .form-control,.claim-page input{border:1px solid var(--border-color)!important}@media (max-width:767px){.overview-page .ov-kpi-sub{white-space:nowrap!important;font-size:12px!important;overflow:visible!important}.overview-page .ov-kpi-row>:last-child:nth-child(odd){grid-column:1/-1}.admin-summary .summary-pill{height:28px!important}.admin-summary .summary-total{flex-basis:100%}.admin-page .paper-table:not(.paper-table-dashboard) .paper-table-row{position:relative;padding-right:44px!important}.admin-page .paper-table:not(.paper-table-dashboard) .paper-table-row>:last-child{position:absolute!important;top:10px;right:4px}.admin-page .paper-table .anon-sub>span{white-space:nowrap}}.file-card-head .btn.btn-toggle.is-on,.file-card-head .btn.btn-toggle[aria-pressed=true]{background:0 0!important;box-shadow:none!important;color:var(--accent)!important}.file-card-head .btn.btn-toggle.is-on:hover{background:var(--hover-bg-color)!important}.dark-mode .file-card-head .btn.btn-toggle.is-on{background:0 0!important;color:#a8ddd6!important}.ace-chrome .ace_string{color:#3d5a73!important}.dark-mode .ace_editor .ace_string{color:#afc4d6!important}.ace-chrome .ace_gutter-cell{color:#6b655d!important}.readme-toc a.lvl-2{color:var(--ink-soft)!important;font-weight:500!important}.readme-toc a.lvl-3{color:var(--ink-soft)!important;opacity:.9}.readme-toc a.is-active{color:var(--accent)!important}.readme-toc-head{font-size:12.5px!important}.vb-snapshot{opacity:1!important;color:var(--ink-soft)!important}@media (max-width:767px){.viewer-bar .vb-signin{height:32px!important}}.paper-footer-meta{font-size:15px!important;color:var(--ink-soft)!important}.dark-mode .files .file.active>a{background:rgba(255,255,255,.07)!important}@media (min-width:992px){.anonymize-landing{justify-content:flex-start!important;align-items:flex-start!important}.anonymize-landing-inner{margin-left:max(4px,calc((100vw - 1048px)/ 2 - 20px))!important;margin-right:auto!important;max-width:640px!important}}.paper-settings-body>:not(aside){max-width:none!important}.paper-settings-body .paper-card,.paper-settings-body section{max-width:none!important}.dark-mode .paper-table-row{background:0 0!important}.dark-mode .paper-table-head{background:#26231f!important}@media (max-width:767px){.overview-page .ov-kpi-sub{white-space:normal!important;font-size:12px!important;padding-right:4px}.dashboard-count{position:static!important;width:auto!important;height:auto!important;margin:0 0 0 auto!important;overflow:visible!important;clip:auto!important;font-size:12.5px!important}}.errors-page input[type=search]{font-family:var(--font-sans)!important}.paper-settings-body .form-text,.paper-settings-body .paper-field-help,.paper-settings-body small{max-width:none!important}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip{font-size:.7em!important;vertical-align:.12em!important}.ace_search{border-bottom:1px solid var(--border-color)!important;box-shadow:none!important;border-top:0!important}.ace_search .ace_button,.ace_search .ace_searchbtn{height:32px!important}.file-card-head .btn.btn-toggle.is-on,.file-card-head .btn.btn-toggle[aria-pressed=true]{background:var(--accent-soft)!important;color:var(--accent)!important;box-shadow:none!important}.dark-mode .file-card-head .btn.btn-toggle.is-on{background:rgba(124,199,190,.14)!important}@media (max-width:767px){.file-card-head .card-files-btn{width:32px!important;height:32px!important}.file-card-head .file-card-path{column-gap:8px!important}}.dark-mode .leftCol{background:#1c1a17!important}.dark-mode .explorer-content,.dark-mode .file-card{background:#141311!important}.nav-support-inline{color:var(--color)!important;font-weight:500!important}@media (min-width:992px){.anonymize-landing{padding-top:24px!important}.anonymize-landing-inner{padding-top:0!important;margin-top:0!important}}.anonymize-page .access-q+.btn-outline-ink{height:30px!important;padding:0 10px!important;font-size:13px!important}.admin-summary .summary-pill:not(.active){color:var(--ink-soft)!important}.volume-legend>span{display:inline-flex;align-items:center;gap:5px;margin-left:12px}.dark-mode .leftCol{background:#221f1b!important}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{box-shadow:inset -1px 0 0 var(--border-color),inset -10px 0 10px -10px rgba(0,0,0,.18)!important}}.readme-toc a.is-active{font-weight:600!important}.paper-stats-meta-right{color:var(--ink-soft)!important;font-weight:500!important;letter-spacing:inherit}.paper-faq details a:not(.btn),.paper-faq-a a,.paper-section a{text-decoration-color:color-mix(in srgb,currentColor 35%,transparent)!important;text-decoration-thickness:1px!important}.volume-axis{display:flex;justify-content:space-between;font-size:11.5px;color:var(--ink-soft);margin-top:6px}.errors-page .seg.seg-info{background:color-mix(in srgb,var(--ink-muted) 55%,transparent)!important}.paper-crumbs a{color:var(--ink-soft)!important}.paper-crumbs .here{color:var(--color)!important}.paper-table .mobile-meta-icon,.paper-table [role=cell]>.ui-icon{opacity:.45}@media (min-width:768px){.paper-table-dashboard .cell-expires{padding-left:24px!important}}.dark-mode .paper-table-dashboard .paper-table-head,.dark-mode .paper-table-head{background:0 0!important;box-shadow:inset 0 -1px 0 var(--border-color)!important}@media (max-width:767px){.paper-table-dashboard .cell-actions>.copy-url{max-width:none!important;justify-self:stretch}.paper-table.paper-table-dashboard .paper-table-row{padding-right:16px!important}.dashboard-filters-toggle{border:1px solid var(--border-color)!important;border-radius:var(--radius-control)!important;height:44px;padding:0 12px!important}.overview-page .ov-kpi-card{padding-left:14px!important;padding-right:14px!important}.overview-page .ov-kpi-sub{white-space:nowrap!important;font-size:11.5px!important}.admin-filter-row kbd,.search-wrap .kbd,.search-wrap kbd{display:none!important}}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{background:0 0!important;padding:0!important;font-size:.78em!important;color:var(--accent)!important;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px;text-decoration-color:color-mix(in srgb,var(--accent) 30%,transparent)}.dark-mode .markdown-body h1 .redact-chip,.dark-mode .markdown-body h2 .redact-chip{color:#9fe0d7!important}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{width:56px!important;background:linear-gradient(to right,rgba(255,255,255,0),var(--paper-card) 55%)!important}}.readme-toc a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (min-width:768px){.paper-table-dashboard .cell-expires,.paper-table-dashboard .paper-table-head>:nth-child(4){text-align:left!important;justify-content:flex-start!important;padding-left:24px!important}}.anonymize-page #sourceUrl-landing,.anonymize-page .form-control-lg{border:1px solid var(--border-color)!important}.anonymize-page .form-control-lg:focus{border-color:var(--accent)!important}.repo-access-note>span:has(.ui-icon){background:var(--accent-soft)!important;box-shadow:inset 3px 0 0 var(--accent)!important;color:var(--color)!important;font-size:13.5px}.repo-access-note>span:has(.ui-icon) .ui-icon{color:var(--accent)!important}.dark-mode .repo-access-note>span:has(.ui-icon){background:rgba(124,199,190,.1)!important;box-shadow:inset 3px 0 0 #7cc7be!important}.dark-mode .repo-access-note>span:has(.ui-icon) .ui-icon{color:#7cc7be!important}.readme-toc a{white-space:normal!important;overflow:visible!important;text-overflow:clip!important}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::before{content:"Scroll \2192";position:absolute;right:10px;bottom:14px;z-index:9;font:500 12px/1 var(--font-sans);color:var(--ink-soft);background:var(--paper-card);box-shadow:0 0 0 1px var(--border-color),0 2px 6px rgba(0,0,0,.06);border-radius:999px;padding:6px 10px;pointer-events:none}}.ace-chrome .ace_string{color:#2d5f86!important}.ace-chrome .ace_keyword,.ace-chrome .ace_storage{color:#9a2b6b!important}.dark-mode .ace_editor .ace_string{color:#9cc3e6!important}.dark-mode .ace_editor .ace_keyword,.dark-mode .ace_editor .ace_storage{color:#e3a6d2!important}.reading-layout .markdown-body h1{font-size:34px!important;letter-spacing:-.015em}.errors-page .btn-group>.btn,.errors-page .btn-icon,.errors-page .form-control,.errors-page select{height:36px!important;min-height:36px!important}.errors-page .col-when .when-rel{font-size:13.5px!important}.q-danger-group{display:inline-flex;gap:6px;margin-left:auto;padding-left:12px;border-left:1px solid var(--border-color)}.q-stats-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.repo-access-note>span:has(.ui-icon){background:color-mix(in srgb,#b7791f 8%,transparent)!important;box-shadow:inset 3px 0 0 #b7791f!important}.repo-access-note>span:has(.ui-icon) .ui-icon{color:#9a6416!important}.dark-mode .repo-access-note>span:has(.ui-icon){background:rgba(224,176,112,.1)!important;box-shadow:inset 3px 0 0 #e0b070!important}.dark-mode .repo-access-note>span:has(.ui-icon) .ui-icon{color:#e0b070!important}@media (max-width:767px){.admin-page .paper-table [role=cell]:has(>input[type=checkbox]),.admin-page .paper-table input[type=checkbox],.admin-page .paper-table-head [role=columnheader]:has(>input[type=checkbox]){display:none!important}.admin-page .admin-filters-toggle,.admin-page .dashboard-filters-toggle{width:auto!important}}.q-danger-group{border-left:0!important;padding-left:0!important}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::before{animation:scrollHintOut .4s ease 2.6s forwards}}@keyframes scrollHintOut{to{opacity:0;visibility:hidden}}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{text-decoration:none!important;background:color-mix(in srgb,var(--accent) 8%,transparent)!important;padding:0 .15em!important;border-radius:4px}.readme-toc a.lvl-3{padding-left:29px!important}.ace_search .ace_button{color:var(--color)!important;opacity:.8}.ace_search .ace_button.checked{opacity:1}.dark-mode .files .file>a,.dark-mode .files .folder>a{color:#d8d2c8!important}.ov-live{display:inline-flex;align-items:center;gap:6px}.ov-live-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.anon-sub .meta-sep{display:inline-flex;align-items:center;white-space:nowrap}@media (max-width:767px){.anon-sub{column-gap:0!important}}.connection-status-legacy{color:var(--ink-soft)!important}.connection-status-legacy::before{background:var(--ink-muted)!important}.q-detail{align-items:start!important}.q-chart-wrap canvas{max-height:200px}.admin-page .paper-table .cell-anon .anon-text:has(.meta-sep){overflow:hidden}.admin-page .paper-table .anon-sub:has(.meta-sep){display:flex!important;flex-wrap:wrap!important;margin-left:-14px!important;gap:0!important}.admin-page .paper-table .anon-sub:has(.meta-sep)>*{white-space:nowrap}.admin-page .paper-table .anon-sub:has(.meta-sep)>::before{content:"\00b7";display:inline-block;width:14px;text-align:center;color:var(--ink-muted)}.ace-chrome .ace_gutter-cell,.dark-mode .ace_editor .ace_gutter-cell{font-size:12px!important}.q-stats-actions{display:grid!important;grid-template-columns:auto auto 1fr;gap:8px;align-items:center}.q-danger-group{grid-column:1/-1;justify-self:start;margin:4px 0 0!important;padding:10px 0 0!important;border-top:1px solid var(--border-color)!important;width:100%;display:flex!important;gap:8px}@media (max-width:767px){.overview-page .ov-header{flex-wrap:nowrap!important;align-items:center!important}.ov-live{font-size:12px}.ov-live .ov-live-text-extra{display:none}.overview-page .ov-daily-card,.overview-page .ov-kpi-card{padding-left:14px!important;padding-right:14px!important}}.admin-page input[type=checkbox]{width:14px!important;height:14px!important}.demo-input-wrap{position:relative}.demo-input-wrap .demo-backdrop{position:absolute;inset:0;margin:0;overflow:hidden;color:var(--color);pointer-events:none;overflow-wrap:break-word}.demo-input-wrap .demo-input{position:relative;color:transparent!important;caret-color:var(--color);background:0 0!important;overflow-wrap:break-word}.demo-input-wrap .demo-input::selection{color:var(--color);background:color-mix(in srgb,var(--accent) 25%,transparent)}.demo-match{background:0 0;color:inherit;padding:0;border-radius:2px;box-shadow:inset 0 -2px 0 color-mix(in srgb,var(--accent) 55%,transparent);background-color:color-mix(in srgb,var(--accent) 10%,transparent)}.demo-output .redact-chip{font-size:12.5px!important}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::before{display:none!important}.file-card.is-code.no-wrap .file-card-body::after{width:36px!important;background:linear-gradient(to right,rgba(0,0,0,0),rgba(60,45,30,.1))!important;box-shadow:inset -1px 0 0 rgba(60,45,30,.18)!important}.dark-mode .file-card.is-code.no-wrap .file-card-body::after{background:linear-gradient(to right,rgba(0,0,0,0),rgba(0,0,0,.45))!important;box-shadow:inset -1px 0 0 rgba(255,255,255,.12)!important}}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{width:44px!important;background:linear-gradient(to right,rgba(255,255,255,0),var(--paper-card) 70%)!important;box-shadow:inset -8px 0 10px -6px rgba(40,30,20,.28),inset -1px 0 0 rgba(40,30,20,.16)!important}.dark-mode .file-card.is-code.no-wrap .file-card-body::after{background:linear-gradient(to right,rgba(0,0,0,0),var(--canvas-bg-color) 70%)!important;box-shadow:inset -8px 0 10px -6px rgba(0,0,0,.6),inset -1px 0 0 rgba(255,255,255,.1)!important}}.q-chart-wrap{position:relative}.q-chart-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:var(--paper-card);border-bottom:1px solid var(--border-color);text-align:center}.q-chart-empty strong{font-size:14px;font-weight:500;color:var(--color)}.q-chart-empty span{font-size:12.5px;color:var(--ink-soft)}.q-danger-group .btn{margin-left:0!important}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{background:0 0!important;padding:0!important;border-radius:0!important}.paper-settings-body .form-control,.paper-settings-body input[type=date],.paper-settings-body input[type=text],.paper-settings-body input[type=url],.paper-settings-body textarea{border:1px solid var(--border-color)!important;border-radius:var(--radius-control)!important}.admin-page .paper-table .cell-views .ui-icon{display:none!important}.admin-page:has(.admin-users-row) .paper-table-head,.admin-page:has(.admin-users-row) .paper-table-row{column-gap:40px!important}@media (max-width:767px){.overview-page .ov-header{justify-content:space-between!important}.ov-live{margin-left:0!important}}.dark-mode .paper-table-dashboard .paper-table-row{background:0 0!important}.mono-hash{font-family:var(--font-mono)!important;font-size:11.5px}.nav-heart-m{display:none}@media (max-width:991px){.nav-heart-m{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin-left:auto;color:#c25b5e}.nav-heart-m .ui-icon{width:18px;height:18px;fill:currentColor}.nav-heart-m+.nav-signin-m{margin-left:4px!important}}.file-card:has(.ace_search:not([style*=none])) .btn-find{color:var(--accent)!important;background:var(--accent-soft)!important}.paper-link-arrow{color:var(--color)!important;text-decoration-color:color-mix(in srgb,var(--accent) 55%,transparent)!important}.paper-faq details p,.paper-faq details>:not(summary),.paper-faq-a{max-width:none!important}.paper-stat-value{font-family:var(--font-display,var(--font-serif))!important;font-weight:400!important;letter-spacing:-.01em}@media (max-width:767px){.ov-live-extra{display:none}.paper-table-dashboard .cell-views.num::after{content:" views";color:var(--ink-soft)}.paper-table-dashboard .cell-expires>span:not(.expires-never):not(.expires-past)::before{content:"Expires ";color:var(--ink-soft)}.admin-page .admin-filters-toggle{width:auto!important;height:36px!important;padding:0 12px!important}}.dashboard-quota summary{border:0!important;box-shadow:none!important;background:0 0!important;padding-left:0!important}.q-card.selected{background:var(--accent-soft)!important}.dark-mode .q-card.selected{background:rgba(124,199,190,.08)!important}.dark-mode .ov-meter .fill.critical,.dark-mode .ov-meter-fill.critical{background:#f08a82!important}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{font-family:inherit!important;font-weight:inherit!important;font-size:.9em!important;background:var(--accent-soft)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent)!important;padding:0 .25em!important;border-radius:6px!important;color:var(--accent)!important;text-decoration:none!important}.dark-mode .markdown-body h1 .redact-chip,.dark-mode .markdown-body h2 .redact-chip,.dark-mode .markdown-body h3 .redact-chip{background:rgba(124,199,190,.16)!important;color:#9fe0d7!important}.file-card-head .btn.btn-toggle.is-on,.file-card-head .btn.btn-toggle[aria-pressed=true],.file-card:has(.ace_search:not([style*=none])) .btn-find{background:0 0!important;color:var(--accent)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 50%,transparent)!important}.dark-mode .file-card-head .btn.btn-toggle.is-on,.dark-mode .file-card:has(.ace_search:not([style*=none])) .btn-find{background:0 0!important;color:#a8ddd6!important;box-shadow:inset 0 0 0 1px rgba(124,199,190,.5)!important}@media (min-width:768px){.file-card-head{padding-left:46px!important}}.breadcrumb-root{display:none!important}.breadcrumb-root+.breadcrumb-item::before{display:none!important}.ace_editor .ace_marker-layer .ace_selection{background:rgba(232,170,40,.65)!important;box-shadow:0 0 0 1px rgba(160,100,10,.6)!important}.ace_search_counter{color:var(--color)!important;opacity:.75}.dark-mode .files .file.active>a{background:rgba(255,255,255,.12)!important}.dark-mode .leftCol{box-shadow:inset -1px 0 0 rgba(255,255,255,.08)!important}.hero-mock-doc-bar span,.paper-stat-delta,.paper-stat-sub,.paper-stats .sub{color:#5e5950!important}.dark-mode .paper-stat-delta,.dark-mode .paper-stat-sub{color:#b5aea3!important}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{font-size:.72em!important;font-weight:600!important;vertical-align:.1em;padding:.05em .3em!important}.is-unsynced{color:var(--ink-muted)!important;font-size:12.5px;font-family:var(--font-sans)!important}.q-dot.q-dot-idle{background:var(--ink-muted)!important}.dark-mode .paper-table,.dark-mode .paper-table-dashboard{background:0 0!important}.dark-mode .paper-table .paper-table-head{background:#24211d!important}.dark-mode .paper-table .paper-table-row{background:#141311!important}@media (min-width:768px){.file-card.is-code .file-card-head{padding-left:16px!important}.readme-toc{margin-left:16px}.reading-layout{grid-template-columns:minmax(0,660px) 190px!important;gap:56px!important}}.dark-mode .leftCol{box-shadow:none!important;border-right:1px solid var(--border-color)!important}.dark-mode .leftCol-resizer,.dark-mode .sidebar-resizer{background:0 0!important}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{box-shadow:none!important}.files .file.active>a::before{left:4px!important;top:6px!important;bottom:6px!important;width:3px!important;border-radius:2px!important}.hero-mock-row.is-active{box-shadow:inset 3px 0 0 var(--accent)!important;border-radius:6px}.fm-label,.paper-eyebrow,.paper-stats-meta-left,.paper-stats-meta-right{color:#57524a!important}.dark-mode .paper-eyebrow,.dark-mode .paper-stats-meta-left,.dark-mode .paper-stats-meta-right{color:#bdb6ab!important}.demo-match{box-shadow:inset 0 -1px 0 color-mix(in srgb,var(--accent) 50%,transparent)!important}.redact-glue{white-space:nowrap}@media (min-width:768px){.file-card-head,.file-card.is-code .file-card-head{padding-left:20px!important}}.dark-mode .files .file.active>a{background:rgba(255,255,255,.08)!important}.files .file.active>a{position:relative}.files .file.active>a::before{left:0!important;top:4px!important;bottom:4px!important;width:3px!important;border-radius:0 2px 2px 0!important}.admin-page .paper-table [role=cell]>svg.ui-icon[aria-hidden],.paper-table .cell-expires .mobile-meta-icon{display:none!important}@media (max-width:767px){.admin-page .paper-table .cell-views.num::after{content:" views";color:var(--ink-soft)}}.dark-mode .paper-table .paper-table-row{background:#1e1b18!important}.dark-mode .paper-table .paper-table-head{background:#26231f!important}.paper-page input.form-control,.paper-page input[type=date],.paper-page input[type=email],.paper-page input[type=text],.paper-page input[type=url],.paper-page select.form-control,.paper-page textarea,.paper-page textarea.form-control{border:1px solid var(--border-color)!important;border-radius:var(--radius-control)!important}.paper-page input:focus,.paper-page select:focus,.paper-page textarea:focus{border-color:var(--accent)!important}.q-detail{align-items:stretch!important}.q-throughput{display:flex;flex-direction:column}.q-throughput .q-chart-wrap{flex:1;min-height:180px}.admin-page .search-wrap{flex:0 1 420px!important;max-width:420px!important}@media (max-width:767px){.overview-page .ov-header{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;justify-content:space-between!important;align-items:center!important}.overview-page .ov-header .ov-live{margin:0 0 0 auto!important;align-self:center}}.hero-mock-count{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent)!important;font-weight:600;font-size:11.5px}.dark-mode .hero-mock-count{background:rgba(124,199,190,.16);color:#a8ddd6!important}.vb-support{color:var(--ink-soft)!important;font-weight:400!important}.vb-support:hover{color:var(--color)!important}@media (max-width:767px){.file-card.is-code .ace_gutter-cell{padding-left:4px!important;padding-right:6px!important}.file-card.is-code .ace_scroller{left:30px!important}.file-card.is-code .ace_gutter{width:30px!important}}.md-find-bar{position:sticky;top:52px;z-index:5;display:flex;align-items:center;gap:10px;padding:8px 20px;background:var(--paper-card);border-bottom:1px solid var(--border-color)}.md-find-input{width:260px;height:32px;padding:0 10px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-card);color:var(--color);font:14px var(--font-sans)}.md-find-input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.md-find-count{font-size:12.5px;color:var(--ink-soft);min-width:64px;font-variant-numeric:tabular-nums}.md-find-nav{display:inline-flex}.md-find-close,.md-find-nav button{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-color);background:var(--paper-card);color:var(--color)}.md-find-nav button:first-child{border-radius:var(--radius-control) 0 0 var(--radius-control)}.md-find-nav button:last-child{border-radius:0 var(--radius-control) var(--radius-control) 0;margin-left:-1px}.md-find-nav button:disabled{opacity:.45}.md-find-close{border:0;background:0 0;font-size:20px;border-radius:var(--radius-control)}.md-find-close:hover{background:var(--hover-bg-color)}mark.md-find{background:rgba(242,204,96,.45);color:inherit;border-radius:2px;padding:0}mark.md-find.is-current{background:rgba(232,170,40,.8);box-shadow:0 0 0 1px rgba(160,100,10,.6)}@media (min-width:1280px){.viewer-bar a.vb-icon[href="/faq"]{width:auto!important;padding:0 10px!important;gap:6px}.viewer-bar a.vb-icon[href="/faq"]::after{content:"FAQ";font:500 13px var(--font-sans);color:var(--ink-soft)}}.file-card-head .btn-md-find.is-on{background:0 0!important;color:var(--accent)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 50%,transparent)!important}.md-find-input::-webkit-search-cancel-button{-webkit-appearance:none;display:none}@media (min-width:768px){.md-find-bar{padding-left:63px!important}}.md-find-input{width:240px!important}.file-card:has(.md-find-bar) .readme-toc{top:120px!important}.claim-page input,.claim-page textarea{border-color:var(--border-color)!important}.connection-status{font-size:12.5px!important}@media (max-width:767px){.admin-page .admin-filters-toggle::before{content:"";width:14px;height:14px;margin-right:6px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 6h16M7 12h10M10 18h4'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 6h16M7 12h10M10 18h4'/%3E%3C/svg%3E") center/contain no-repeat}.admin-page .admin-filters-toggle{display:inline-flex!important;align-items:center}}.paper-faq-title{text-wrap:balance}.file-card-head,.md-find-bar{background:var(--paper-card)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;opacity:1!important}.dark-mode .file-card-head,.dark-mode .md-find-bar{background:#141311!important}@media (min-width:1200px){.reading-layout{grid-template-columns:minmax(0,640px) 190px!important;gap:56px!important;justify-content:center!important;padding:0 24px!important}}.reading-layout .file-content.markdown-body{padding-top:32px!important}@media (min-width:1200px){.md-find-bar{padding-left:calc((100% - 886px)/ 2)!important}}@media (min-width:1280px){.viewer-bar a.vb-bug{width:auto!important;padding:0 10px!important;gap:6px}.viewer-bar a.vb-bug::after{content:"Report a bug";font:500 13px var(--font-sans);color:var(--ink-soft)}}.vb-snapshot{font-size:13px!important;color:var(--ink-soft)!important}.dashboard-filter-controls .btn-group[aria-label=Type]>.btn,.dashboard-page .dashboard-filter-controls .dropdown-toggle,.dashboard-page .dashboard-filter-row .form-control{height:36px!important;min-height:36px!important}.dashboard-filter-controls .btn-group[aria-label=Type]{padding:0!important;height:36px;align-items:center}.dashboard-filter-controls .btn-group[aria-label=Type]>.btn{height:30px!important;min-height:30px!important;margin:3px 0}.errors-page .errors-toolbar{flex-wrap:nowrap!important}.errors-page .errors-toolbar input[type=search]{min-width:0;flex:1 1 260px}.paper-table .paper-table-head{background:color-mix(in srgb,var(--hover-bg-color) 60%,transparent)!important}@media (min-width:1200px){.reading-layout{grid-template-columns:minmax(0,700px) 190px!important;gap:48px!important}}.md-find-bar{padding-top:4px!important;padding-bottom:4px!important}.md-find-input{height:30px!important}.md-find-input:focus{box-shadow:0 0 0 1px var(--accent)!important}.ace_editor .ace_marker-layer .ace_selection,mark.md-find.is-current{background:rgba(240,190,80,.6)!important;box-shadow:0 0 0 1px rgba(170,110,20,.5)!important}.viewer-bar .vb-right{gap:12px!important}.viewer-bar .vb-right>*{margin:0!important}.auto-refresh-label{white-space:nowrap!important}.errors-page .errors-toolbar{flex-wrap:wrap!important}.errors-page .errors-row-head,.errors-page .errors-thead,.paper-table .paper-table-head,.q-table thead th{background:#f3f1ec!important}.dark-mode .errors-page .errors-thead,.dark-mode .paper-table .paper-table-head,.dark-mode .q-table thead th{background:#24211d!important}.summary-show-label{font-size:12.5px;color:var(--ink-soft);margin-right:2px;align-self:center}.anon-sub a.mono-hash,.mono-hash{text-decoration:none!important;border-bottom:0!important}.errors-page .errors-list-head{background:#f3f1ec!important}.dark-mode .errors-page .errors-list-head{background:#24211d!important}.errors-page .errors-toolbar .search-wrap,.errors-page .errors-toolbar input[type=search]{flex:1 1 220px!important;max-width:340px!important;min-width:0!important}.errors-page .errors-toolbar{flex-wrap:nowrap!important;gap:8px!important}.faq-section .panel-default .panel-title a{padding:16px 32px 16px 0!important;position:relative;display:block}.faq-section .panel-default .panel-body{padding-left:0!important}.faq-section .panel-default .panel-title a:after{left:auto!important;right:6px!important}.md-find-bar{padding-left:20px!important}.vb-logo{font-size:19px!important}@media (max-width:767px){.vb-logo{font-size:18px!important}.admin-summary .summary-show-label{flex-basis:100%}}.btn-ghost-danger{background:0 0!important;border:1px solid transparent!important;color:#b42318!important;display:inline-flex;align-items:center;gap:6px}.btn-ghost-danger:hover{background:color-mix(in srgb,#b42318 8%,transparent)!important}.dark-mode .btn-ghost-danger{color:#f08a82!important}mark.md-find{background:rgba(242,204,96,.32)!important;box-shadow:none!important}mark.md-find.is-current{background:rgba(232,160,30,.85)!important;box-shadow:0 0 0 1px rgba(150,90,10,.7)!important;color:#2b2824!important}.md-find-opt{height:30px;min-width:32px;padding:0 8px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-card);color:var(--ink-soft);font:600 12px var(--font-sans)}.md-find-opt.is-on{color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.md-find-nav button{color:var(--ink-soft)!important}.md-find-close{font-size:18px!important;font-weight:300!important;color:var(--ink-soft)!important}@media (min-width:768px){.file-card .ace_search{left:0!important;right:0!important;padding-left:20px!important;margin:0!important;max-width:none!important}}@media (min-width:768px){.md-find-bar{padding-left:71px!important}}@media (min-width:768px){.md-find-bar{padding-left:71px!important}}@media (min-width:1200px){.file-card:has(.md-find-bar) .readme-toc,.readme-toc{top:120px!important}}.dark-mode .dashboard-filter-controls .btn-group[aria-label=Type]>.btn.btn-primary{background:#3a3631!important;color:#f2eee8!important;box-shadow:0 0 0 1px rgba(255,255,255,.14)!important}.admin-page .paper-table .user-name,.admin-page .paper-table .username,.admin-page:has(.admin-users-row) .cell-anon .repo-name,.admin-users-row .repo-name{font-family:var(--font-sans)!important;font-weight:600}.paper-page input[type=checkbox]{-webkit-appearance:none;appearance:none;width:16px!important;height:16px!important;margin:0;border:1.5px solid #a39d92;border-radius:4px;background:var(--paper-card);display:inline-grid;place-content:center;cursor:pointer;vertical-align:middle}.paper-settings-section .form-check>input.form-check-input[type=checkbox]{position:absolute;margin:3px 0 0 -28px}.paper-page input[type=checkbox]::before{content:"";width:9px;height:9px;transform:scale(0);background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat}.paper-page input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}.paper-page input[type=checkbox]:checked::before{transform:scale(1)}.paper-page input[type=checkbox]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dark-mode .paper-page input[type=checkbox]{border-color:#6e6860;background:0 0}.admin-page .detail-value:is(:empty),.detail-value.is-empty{color:var(--ink-muted)!important;font-style:italic}.paper-table-dashboard .btn-icon-dots,.row-edit{width:32px!important;height:32px!important;border-radius:var(--radius-control)}.paper-table-dashboard .btn-icon-dots:hover,.row-edit:hover{background:var(--hover-bg-color)!important}.q-state-toggle input[type=checkbox]{position:absolute;opacity:0;width:1px!important;height:1px!important;pointer-events:none}.q-state-toggle{position:relative;cursor:pointer}.q-state-toggle input:not(:checked)+.q-state-chip{opacity:.45;text-decoration:line-through}.q-state-toggle input:focus-visible+.q-state-chip{outline:2px solid var(--accent);outline-offset:2px}@media (min-width:768px){.md-find-bar{padding-left:31px!important}}.ace_search .ace_search_field,.anonymize-page .form-control,.md-find-input,.paper-page input.form-control,.paper-page input[type=date],.paper-page input[type=text],.paper-page input[type=url],.paper-page select.form-control,.paper-page textarea{border-radius:8px!important}.page-head-row .btn-primary,.paper-page .btn-ink,.paper-page .btn-primary{min-height:40px!important}.errors-page .errors-list-head>*,.paper-table .paper-table-head [role=columnheader],.paper-table .paper-table-head>div{font-weight:500!important;font-size:12.5px!important;letter-spacing:0!important;text-transform:none!important;color:var(--ink-soft)!important}.admin-page .admin-section-header h2{font:600 18px/1.3 var(--font-sans)!important;display:inline-flex;align-items:center;gap:8px}.admin-page .admin-section-header h2 .ui-icon{width:16px;height:16px;color:var(--ink-soft)}.files .file.active>a{background:#e2ded7!important}.files .file.active>a::before{left:3px!important}.dark-mode .files .file.active>a{background:rgba(255,255,255,.09)!important}.admin-page:has(.admin-users-row) .paper-table-head,.admin-page:has(.admin-users-row) .paper-table-row{grid-template-columns:28px minmax(220px,320px) 120px 140px 1fr 40px!important}@media (max-width:767px){.mobile-sub{margin-top:3px!important}}.paper-faq-lede,.paper-page-lede{text-wrap:pretty;max-width:640px}.errors-page .status-pill.status-neutral:not([title=""])[title]{background:0 0!important;border-color:transparent!important;color:var(--ink-muted)!important}.md-find-bar{min-height:47px!important;padding-top:7px!important;padding-bottom:7px!important}.ace_search .ace_search_field:focus,.md-find-input:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}mark.md-find{background:rgba(246,224,138,.7)!important}.ace_editor .ace_marker-layer .ace_selected-word{background:rgba(246,224,138,.7)!important}.files .file.active>a{background:#e6e3dc!important}@media (min-width:1200px){.readme-toc{margin-top:32px!important;padding-top:0!important}}.errors-page .kpi-card.kpi-info .kpi-value{color:var(--ink-soft)!important;font-weight:500!important;font-size:26px!important}.errors-page .kpi-card.kpi-info{background:color-mix(in srgb,var(--paper-card) 70%,transparent)!important}.ov-meter span{background:var(--accent)}.ov-meter.warn span{background:#b7791f!important}.ov-meter.crit span{background:#b42318!important}@media (max-width:767px){.admin-summary .summary-show-label{flex-basis:auto!important}}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row{grid-template-columns:minmax(0,1fr) auto auto!important;grid-template-areas:"name edit more" "meta meta meta" "link link link"!important;column-gap:2px!important}.paper-table-dashboard .cell-actions>.row-edit{display:inline-flex!important;grid-area:edit;align-self:start;align-items:center;justify-content:center}.dashboard-page .paper-table-dashboard .dashboard-row-meta{display:flex!important;flex-wrap:nowrap!important;align-items:center!important;gap:0!important;padding-left:26px;font-size:12.5px;color:var(--ink-soft)}.dashboard-page .dashboard-row-meta .cell-status{flex:0 0 auto!important}.dashboard-page .dashboard-row-meta .cell-status .status-line{gap:6px}.dashboard-page .dashboard-row-meta .cell-expires,.dashboard-page .dashboard-row-meta .cell-views{display:inline-flex!important;align-items:center;font-family:var(--font-sans,Inter,sans-serif)!important;font-size:12.5px!important;color:var(--ink-soft)!important;white-space:nowrap;margin:0!important;padding:0!important;text-align:left!important;justify-content:flex-start!important}.dashboard-page .dashboard-row-meta .cell-expires::before,.dashboard-page .dashboard-row-meta .cell-views::before{content:"·";margin:0 8px;color:var(--ink-muted)}.dashboard-page .dashboard-row-meta .cell-views .ui-icon,.dashboard-page .dashboard-row-meta .cell-views svg{display:none!important}.dashboard-page .dashboard-row-meta .cell-expires .cell-label,.dashboard-page .dashboard-row-meta .cell-expires small{font-size:inherit!important;color:inherit!important;margin-right:4px}}.dashboard-page .dashboard-quota>summary{border:1px solid var(--border-color)!important;border-radius:999px!important;padding:0 12px 0 10px!important;height:36px;min-height:36px!important;display:inline-flex!important;align-items:center;gap:8px;background:var(--paper-card)!important}.dashboard-page .dashboard-quota>summary:hover{background:var(--hover-bg-color)!important}.dashboard-page .dashboard-quota .quota-summary-ring{display:inline-block!important;width:16px;height:16px}@media (min-width:1200px){.reading-layout{grid-template-columns:minmax(0,660px) 176px!important;gap:56px!important;justify-content:center!important}}@media (max-width:767px){.admin-summary .summary-show-label{flex-basis:100%!important;margin:4px 0 -2px!important}.admin-summary .summary-meta{flex:1 1 auto}}.q-throughput:has(.q-chart-empty) .q-chart-wrap{flex:0 0 auto!important;min-height:120px!important;height:120px}.q-throughput:has(.q-chart-empty) .q-chart-wrap canvas{visibility:hidden}.q-chart-empty{border-bottom:0!important;border-radius:8px}@media (min-width:768px){.md-find-bar{padding-left:20px!important}.file-card .ace_search{padding-left:20px!important}.file-card .ace_search .ace_search_form{margin-left:0!important}}@media (min-width:768px){.file-card .ace_search{left:0!important;padding-left:0!important}}@media (min-width:1200px){.md-find-bar{padding-left:max(20px,calc((100% - 892px)/ 2))!important}}.q-throughput:has(.q-chart-empty) .q-chart-wrap{flex:1 1 auto!important;height:auto!important;min-height:160px!important}.q-danger-group{align-items:center;flex-wrap:wrap}.q-danger-group::before{content:"Clear jobs";flex-basis:100%;font-size:12px;color:var(--ink-soft);margin-bottom:2px}.q-legend .q-legend-item,.q-legend button,.q-legend span{font-size:12px!important}.q-state-filters .q-state-toggle,.q-state-filters .q-state-toggle *{font-size:12px!important}.admin-nav a.active,.admin-nav a.router-link-active{background:0 0!important;color:var(--accent)!important;box-shadow:inset 0 -2px 0 var(--accent)!important;border-radius:0!important}.admin-nav a:not(.active):hover{background:0 0!important;color:var(--color)!important;box-shadow:inset 0 -2px 0 var(--border-color)!important}.dark-mode .q-card.selected,.q-card.selected{background:var(--paper-card)!important;border-color:var(--accent)!important;box-shadow:inset 0 0 0 1px var(--accent)!important}.errors-page .kpi-card .kpi-value,.errors-page .kpi-card.kpi-info .kpi-value,.errors-page .kpi-card.kpi-warn .kpi-value{color:var(--color)!important;font-weight:600!important;font-size:28px!important}.errors-page .kpi-card.kpi-info{background:var(--paper-card)!important}.paper-table-dashboard .btn-icon-dots,.paper-table-dashboard .row-edit{color:var(--color)!important;opacity:.72}.paper-table-dashboard .btn-icon-dots:hover,.paper-table-dashboard .row-edit:hover{opacity:1}@media (max-width:767px){.paper-table-dashboard .cell-actions>.dropdown,.paper-table-dashboard .cell-actions>.row-edit{margin-top:-6px}}@media (min-width:1280px){.viewer-bar a.vb-bug,.viewer-bar a.vb-icon[href="/faq"]{width:32px!important;padding:0!important}.viewer-bar a.vb-bug::after,.viewer-bar a.vb-icon[href="/faq"]::after{content:none!important}}.markdown-body h2{margin-bottom:12px!important}.markdown-body h3{margin-top:32px!important;margin-bottom:8px!important}.markdown-body h4{margin-top:24px!important;margin-bottom:6px!important;color:var(--ink-soft)!important}@media (min-width:768px){.file-card .ace_search{padding-left:16px!important}}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{width:48px!important;background:linear-gradient(to right,rgba(255,255,255,0),var(--paper-card) 55%)!important;box-shadow:inset -1px 0 0 var(--border-color)}.dark-mode .file-card.is-code.no-wrap .file-card-body::after{background:linear-gradient(to right,rgba(20,19,17,0),#141311 55%)!important}}.connections-page .connection-actions{flex-wrap:nowrap!important;align-items:center;gap:12px!important}.connections-page .connection-actions .connection-link{white-space:nowrap}.paper-table-dashboard .paper-table-head .col-link{font-size:inherit;color:inherit}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{width:40px!important;background:linear-gradient(to right,rgba(40,32,24,0),rgba(40,32,24,.07)),linear-gradient(to right,rgba(255,255,255,0),#fff 70%)!important;border-right:2px solid rgba(40,32,24,.12)}.dark-mode .file-card.is-code.no-wrap .file-card-body::after{background:linear-gradient(to right,rgba(0,0,0,0),rgba(0,0,0,.35)),linear-gradient(to right,rgba(20,19,17,0),#141311 70%)!important;border-right-color:rgba(255,255,255,.08)}}.connections-page .connection-actions .btn{white-space:nowrap}.connections-page .connection-refresh{width:36px;height:36px;justify-content:center;padding:0!important;border-radius:var(--radius-control,8px);margin-left:auto}.faq-section .faq-cat,.faq-section .panel-group{max-width:720px}.ace-chrome .ace_gutter-cell{color:#5f5a52!important}.connections-grid{align-items:start!important}.connection-installations{border-bottom:0!important;margin-bottom:0!important;padding-bottom:0!important}.anonymize-page .form-control,.paper-page input.form-control,.paper-page input[type=date],.paper-page input[type=text],.paper-page input[type=url],.paper-page select.form-control,.paper-page textarea,.paper-page textarea.form-control{border-color:#c2baac!important}.dark-mode .anonymize-page .form-control,.dark-mode .paper-page input.form-control,.dark-mode .paper-page input[type=date],.dark-mode .paper-page input[type=text],.dark-mode .paper-page input[type=url],.dark-mode .paper-page select.form-control,.dark-mode .paper-page textarea{border-color:#4a453e!important}.paper-page input::placeholder,.paper-page textarea::placeholder{color:#a39b8e!important}@media (max-width:767px){.paper-table-dashboard .cell-actions>.dropdown,.paper-table-dashboard .cell-actions>.dropdown>.btn-icon-dots,.paper-table-dashboard .cell-actions>.row-edit{width:36px!important;height:36px!important;margin-top:-4px!important;align-self:start!important;display:inline-flex!important;align-items:center!important;justify-content:center!important}}.anonymize-page .repo-access-switch{border:0!important;background:0 0!important;padding:0!important;box-shadow:none!important;gap:0!important;display:inline-flex!important;align-items:center;width:auto!important;font-size:12.5px;color:var(--ink-soft)}.anonymize-page .repo-access-switch::before{content:"Access:";margin-right:6px;color:var(--ink-soft)}.anonymize-page .repo-access-switch button{background:0 0!important;border:0!important;box-shadow:none!important;padding:2px 4px!important;height:auto!important;min-height:0!important;font-size:12.5px!important;font-weight:500!important;color:var(--ink-soft)!important;flex:0 0 auto!important;border-radius:4px!important}.anonymize-page .repo-access-switch button+button::before{content:"·";margin-right:8px;color:var(--ink-muted)}.anonymize-page .repo-access-switch button[aria-pressed=true]{color:var(--color)!important;font-weight:600!important;opacity:1!important}.anonymize-page .repo-access-switch button:not([aria-pressed=true]):hover{color:var(--accent)!important;text-decoration:underline}.anonymize-page .repo-access-switch button .ui-icon{display:none!important}.ace_editor .ace_marker-layer .ace_selection,mark.md-find.is-current{background:rgba(240,206,90,.95)!important;box-shadow:0 0 0 1.5px #5c4a12!important;color:inherit!important}.dark-mode .ace_editor .ace_marker-layer .ace_selection,.dark-mode mark.md-find.is-current{background:rgba(214,178,60,.55)!important;box-shadow:0 0 0 1.5px #f2d77a!important}.ace_search .ace_search_field,.md-find-input,.paper-page input:not([type=checkbox]):not([type=radio]):not([type=range]),.paper-page select,.paper-page textarea{border-color:#cfc7b9!important}.dark-mode .md-find-input,.dark-mode .paper-page input:not([type=checkbox]):not([type=radio]):not([type=range]),.dark-mode .paper-page select,.dark-mode .paper-page textarea{border-color:#48433c!important}.ace_search .ace_search_field:focus,.md-find-input:focus,.paper-page input:focus,.paper-page select:focus,.paper-page textarea:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}.q-dot.q-dot-idle{background:#2f7d4f!important}.dark-mode .q-dot.q-dot-idle{background:#6fbf8a!important}@media (min-width:1200px){.readme-toc{margin-top:0!important;padding-top:0!important}}@media (min-width:1200px){.readme-toc{margin-top:-30px!important}}.anonymize-workspace .anonymize-topbar{background:var(--paper-bg,var(--background))!important;border-bottom:1px solid var(--border-color)!important}.anonymize-workspace .type-badge{font-family:var(--font-sans)!important;letter-spacing:0!important;text-transform:none!important;font-size:12px!important;font-weight:600!important;padding:2px 8px!important;border-radius:999px!important;background:var(--hover-bg-color)!important;color:var(--ink-soft)!important;border:0!important;vertical-align:middle}.anonymize-page input[type=checkbox]{-webkit-appearance:none;appearance:none;width:16px!important;height:16px!important;margin:2px 0 0;border:1.5px solid #a39d92;border-radius:4px;background:var(--paper-card);display:inline-grid;place-content:center;cursor:pointer;flex:0 0 16px}.anonymize-page input[type=checkbox]::before{content:"";width:9px;height:9px;transform:scale(0);background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat}.anonymize-page input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}.anonymize-page input[type=checkbox]:checked::before{transform:scale(1)}.anonymize-page input[type=checkbox]:indeterminate{background:var(--accent);border-color:var(--accent)}.anonymize-page input[type=checkbox]:indeterminate::before{width:8px;height:2px;border-radius:1px;-webkit-mask:none;mask:none;transform:scale(1)}.anonymize-page input[type=checkbox]:disabled{opacity:.45;cursor:not-allowed}.anonymize-page input[type=checkbox]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dark-mode .anonymize-page input[type=checkbox]{border-color:#6e6860;background:0 0}.anonymize-page #commit{font-family:var(--font-mono, "JetBrains Mono", monospace)!important;font-size:13px!important}.anonymize-page .form-control,.anonymize-page select,.anonymize-page textarea{border-color:#cfc7b9!important}.dark-mode .anonymize-page .form-control,.dark-mode .anonymize-page select,.dark-mode .anonymize-page textarea{border-color:#48433c!important}.anonymize-page .form-control:focus,.anonymize-page select:focus,.anonymize-page textarea:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}.anonymize-review-note{font-size:12.5px!important;color:var(--ink-soft)!important;margin:0 0 8px!important}.anonymize-page .form-check-input[type=checkbox]{position:absolute!important;margin-left:-28px!important;margin-top:3px!important}.anonymize-page .repo-access-controls:not(:has(button,a)),.anonymize-page .repo-access-main:not(:has(button,a)){display:none!important}.anonymize-page .repo-access-note:not(:has(span+span)){margin-top:0!important}.anonymize-form-col .anonymize-submit-bar{position:sticky;bottom:0;z-index:3;background:var(--paper-bg-alt)!important;border-top:1px solid var(--border-color);padding:12px 0 16px!important;margin-top:8px}.anonymize-form-col .anonymize-submit-bar::before{content:"";position:absolute;left:0;right:0;top:-25px;height:24px;background:linear-gradient(to bottom,transparent,var(--paper-bg-alt));pointer-events:none}.anonymize-form-col .anonymize-review-note,.anonymize-form-col .draft-status{font-size:12.5px!important;color:var(--ink-soft)!important;margin:0 0 6px!important;padding:0 2px}.anonymize-form-col .anonymize-review-note::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--status-progress,#b7791f);margin-right:8px;vertical-align:1px}.anonymize-page .repo-access-switch button[aria-pressed=true]{color:var(--accent)!important;box-shadow:inset 0 -2px 0 var(--accent)!important;border-radius:0!important}.anonymize-page .input-group-append .btn-icon{height:40px!important;width:40px!important;min-height:40px!important;display:inline-flex!important;align-items:center;justify-content:center;border:1px solid #cfc7b9!important;border-radius:8px!important;margin-left:8px!important;background:var(--paper-card)!important}.dark-mode .anonymize-page .input-group-append .btn-icon{border-color:#48433c!important}.custom-select,input.form-control,select.form-control,textarea.form-control{border-color:#cfc7b9!important}.dark-mode .custom-select,.dark-mode input.form-control,.dark-mode select.form-control,.dark-mode textarea.form-control{border-color:#48433c!important}input.form-control:focus,select.form-control:focus,textarea.form-control:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}@media (max-width:767px){.paper-table-dashboard .cell-views.num::after{content:"views"!important;margin-left:4px}}@media (min-width:768px){.paper-table-dashboard .cell-views.num::after{content:none!important}}@media (max-width:767px){.admin-page .paper-table:not(.users-table) .cell-views.num::after{margin-left:4px}}.markdown-body li .redact-chip,.markdown-body p .redact-chip{line-height:1!important;padding-top:1px!important;padding-bottom:1px!important;vertical-align:baseline}.dark-mode .explorer-sidebar,.dark-mode .leftCol{background:#1e1c19!important}.errors-page .seg-tabs,.q-range-btns{display:inline-flex!important;gap:2px!important;padding:3px!important;background:var(--hover-bg-color)!important;border:0!important;border-radius:9px!important}.errors-page .seg-tabs button,.q-range-btns .btn{border:0!important;background:0 0!important;color:var(--ink-soft)!important;border-radius:7px!important;height:28px!important;min-height:28px!important;padding:0 10px!important;font-size:13px!important;font-weight:500!important;box-shadow:none!important}.errors-page .seg-tabs button.active,.q-range-btns .btn.active{background:var(--paper-card)!important;color:var(--color)!important;box-shadow:0 1px 2px rgba(40,32,24,.12),0 0 0 1px rgba(40,32,24,.06)!important}.dark-mode .errors-page .seg-tabs button.active,.dark-mode .q-range-btns .btn.active{background:#2c2925!important;box-shadow:0 0 0 1px rgba(255,255,255,.06)!important}.ace_search .ace_search_field,.md-find-input{border-width:1px!important}.ace_search .ace_search_field:focus,.md-find-input:focus{outline:0!important;border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}.anonymize-form-col .anonymize-review-note{color:#8a5a12!important;font-weight:500}.dark-mode .anonymize-form-col .anonymize-review-note{color:#e3b062!important}@media (max-width:767px){.anonymize-form-col .anonymize-submit-bar{position:sticky!important;bottom:0!important;padding:12px 0 calc(12px + env(safe-area-inset-bottom))!important}}@media (max-width:767px){.anonymize-form-col{overflow:visible!important}.anonymize-page .form-group+.form-group,.anonymize-page .form-row>[class*=col]+[class*=col]{margin-top:0!important}.anonymize-page .input-group-append .btn-icon{height:44px!important;width:44px!important}}#sourceUrl,#sourceUrl-landing{border-color:#cfc7b9!important}.dark-mode #sourceUrl,.dark-mode #sourceUrl-landing{border-color:#48433c!important}#sourceUrl-landing:focus,#sourceUrl:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}.anonymize-form-col .anonymize-review-note{color:#6e470c!important}.dark-mode .anonymize-preview-col .markdown-body h1,.dark-mode .anonymize-preview-col .markdown-body h2,.dark-mode .anonymize-preview-col .markdown-body hr{border-color:var(--border-color)!important}.dark-mode .q-dot.q-dot-idle,.q-dot.q-dot-idle{background:var(--ink-muted)!important}.ace_search .ace_search_counter,.md-find-count{color:var(--color)!important;font-weight:500!important;font-variant-numeric:tabular-nums;font-size:12.5px!important}.readme-toc a:not(.is-active){color:#57524a!important}.dark-mode .readme-toc a:not(.is-active){color:#b8b1a6!important}.viewer-bar .vb-support{margin-right:8px!important}:root{--redact-bar:#1F1C19;--redact-ink:#5A544C;--redact-reveal:#F4EFE6}.dark-mode{--redact-bar:#000000;--redact-ink:#3E3A35;--redact-reveal:#F4EFE6}.demo-output .redact-chip,.hero .redact,.hero-mock .redact,.markdown-body h1 mark.redact-chip,.markdown-body h2 mark.redact-chip,.markdown-body h3 mark.redact-chip,.markdown-body h4 mark.redact-chip,.markdown-body mark.redact-chip,span.redact{background:var(--redact-bar)!important;color:var(--redact-ink)!important;box-shadow:none!important;border:0!important;border-radius:2px!important;padding:0 .28em!important;text-decoration:none!important;font-weight:inherit;letter-spacing:.02em;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:color .12s ease;cursor:help}.dark-mode .demo-output .redact-chip,.dark-mode .markdown-body mark.redact-chip,.dark-mode span.redact{box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)!important}.demo-output .redact-chip:hover,.markdown-body mark.redact-chip:hover,span.redact:hover{color:var(--redact-reveal)!important}.markdown-body h1 mark.redact-chip,.markdown-body h2 mark.redact-chip,.markdown-body h3 mark.redact-chip{font-size:inherit!important;vertical-align:baseline!important;padding:0 .2em!important}.ace_text-layer .ace_redacted{background:var(--redact-bar)!important;color:var(--redact-ink)!important;border-radius:2px;box-shadow:none!important;text-decoration:none!important}.dark-mode .ace_text-layer .ace_redacted{box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)!important}.meta-redact{background:0 0!important;color:var(--ink-soft)!important;box-shadow:none!important;padding:0!important;display:inline-flex!important;align-items:center;gap:6px;font-weight:500!important}.meta-redact::before{content:"";width:14px;height:8px;border-radius:1.5px;background:var(--redact-bar);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}.ace_editor .ace_text-layer .ace_redacted,.dark-mode .ace_editor .ace_text-layer .ace_redacted{background:var(--redact-bar)!important;color:var(--redact-ink)!important;border-radius:2px!important}.ace_editor .ace_text-layer .ace_redacted{box-shadow:none!important}.dark-mode .ace_editor .ace_text-layer .ace_redacted{box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)!important}.dark-mode .demo-output .redact-chip,.dark-mode .markdown-body h1 mark.redact-chip,.dark-mode .markdown-body h2 mark.redact-chip,.dark-mode .markdown-body h3 mark.redact-chip,.dark-mode .markdown-body mark.redact-chip,.dark-mode span.redact{background:var(--redact-bar)!important;color:var(--redact-ink)!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)!important}.dark-mode .demo-output .redact-chip:hover,.dark-mode .markdown-body mark.redact-chip:hover{color:var(--redact-reveal)!important}.markdown-body h1 mark.redact-chip,.markdown-body h2 mark.redact-chip{color:#3e3933!important}.dark-mode .meta-redact{color:var(--ink-soft)!important}.dark-mode .hero-mock-count,.hero-mock-count{background:0 0!important;color:var(--ink-soft)!important;padding:0!important;gap:6px;font-weight:500!important}.hero-mock-count::before{content:"";width:12px;height:7px;border-radius:1.5px;background:var(--redact-bar);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}@media (max-width:767px){.dark-mode .mobile-sub b,.mobile-sub b{background:0 0!important;color:var(--ink-soft)!important;padding:0!important;gap:5px;font-weight:500!important}.mobile-sub b::before{content:"";width:12px;height:7px;border-radius:1.5px;background:var(--redact-bar);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}}:root{--redact-bar:#E4DED3;--redact-ink:#8A8378;--redact-reveal:#2B2824}.dark-mode{--redact-bar:#34302A;--redact-ink:#8F887D;--redact-reveal:#F1ECE3}.ace_editor .ace_text-layer .ace_redacted,.dark-mode .ace_editor .ace_text-layer .ace_redacted,.dark-mode .demo-output .redact-chip,.dark-mode .markdown-body mark.redact-chip,.dark-mode span.redact,.demo-output .redact-chip,.markdown-body mark.redact-chip,span.redact{box-shadow:none!important;border-radius:3px!important}.markdown-body h1 mark.redact-chip,.markdown-body h2 mark.redact-chip{color:var(--redact-ink)!important}.dark-mode .markdown-body h1 mark.redact-chip,.dark-mode .markdown-body h2 mark.redact-chip,.dark-mode .markdown-body h3 mark.redact-chip{box-shadow:none!important}.hero-mock-count::before,.meta-redact::before,.mobile-sub b::before{box-shadow:none!important}:root{--redact-bar:#EEEAE2;--redact-ink:#8C8478;--redact-reveal:#2B2824;--redact-deboss:inset 0 1px 2px rgba(60,48,32,.18),inset 0 0 0 1px rgba(60,48,32,.06)}.dark-mode{--redact-bar:#0E0D0B;--redact-ink:#7A746A;--redact-reveal:#F1ECE3;--redact-deboss:inset 0 1px 2px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.05)}.dark-mode .demo-output .redact-chip,.dark-mode .markdown-body mark.redact-chip,.dark-mode span.redact,.demo-output .redact-chip,.markdown-body mark.redact-chip,span.redact{background:var(--redact-bar)!important;color:var(--redact-ink)!important;box-shadow:var(--redact-deboss)!important;border-radius:4px!important;padding:.05em .45em!important;font-family:var(--font-mono, "JetBrains Mono", monospace)!important;font-size:.78em!important;font-weight:500!important;letter-spacing:.02em!important;line-height:1.4!important;vertical-align:.08em!important;white-space:nowrap}.dark-mode .markdown-body h1 mark.redact-chip,.dark-mode .markdown-body h2 mark.redact-chip,.dark-mode .markdown-body h3 mark.redact-chip,.markdown-body h1 mark.redact-chip,.markdown-body h2 mark.redact-chip,.markdown-body h3 mark.redact-chip{font-size:.55em!important;vertical-align:.3em!important;color:var(--redact-ink)!important;padding:.15em .5em!important}.demo-output .redact-chip:hover,.markdown-body mark.redact-chip:hover,span.redact:hover{color:var(--redact-reveal)!important}.ace_editor .ace_text-layer .ace_redacted,.dark-mode .ace_editor .ace_text-layer .ace_redacted{background:var(--redact-bar)!important;color:var(--redact-ink)!important;box-shadow:var(--redact-deboss)!important;border-radius:3px!important}.hero-mock-count::before,.meta-redact::before,.mobile-sub b::before{background:var(--redact-bar)!important;box-shadow:var(--redact-deboss)!important;border-radius:2px!important}:root{--slot-bg:#E3DCD0;--slot-bg-sel:#D3CBBD;--slot-num:#1F5F5A}.dark-mode{--slot-bg:#3A352F;--slot-bg-sel:#4A443C;--slot-num:#7CC7BE}.dark-mode .demo-output .redact-chip,.dark-mode .markdown-body h1 mark.redact-chip,.dark-mode .markdown-body h2 mark.redact-chip,.dark-mode .markdown-body h3 mark.redact-chip,.dark-mode .markdown-body mark.redact-chip,.dark-mode span.redact,.demo-output .redact-chip,.markdown-body h1 mark.redact-chip,.markdown-body h2 mark.redact-chip,.markdown-body h3 mark.redact-chip,.markdown-body h4 mark.redact-chip,.markdown-body mark.redact-chip,.redact-slot,span.redact{display:inline-flex!important;align-items:center!important;justify-content:flex-end!important;min-width:2.5em!important;height:1.12em!important;padding:0 .32em!important;margin:0 .06em!important;background:var(--slot-bg)!important;color:var(--slot-num)!important;box-shadow:none!important;border:0!important;border-radius:3px!important;vertical-align:-.2em!important;line-height:1!important;font-size:inherit!important;letter-spacing:0!important;text-decoration:none!important;cursor:help;white-space:nowrap}.markdown-body mark.redact-chip i,.redact-slot i,span.redact i{font:700 .66em/1 var(--font-sans,Inter,sans-serif)!important;font-style:normal!important;color:var(--slot-num)!important}.demo-output .redact-chip{font:700 .66em/1 var(--font-sans,Inter,sans-serif)!important;min-width:3.8em!important;height:1.7em!important;vertical-align:-.35em!important}.markdown-body h1 mark.redact-chip,.markdown-body h2 mark.redact-chip{height:.95em!important;vertical-align:-.1em!important;border-radius:4px!important}.files .redact-slot{min-width:2.3em!important;height:1.08em!important;vertical-align:-.18em!important}.files .file.active>a .redact-slot,.files a[aria-current] .redact-slot{background:var(--slot-bg-sel)!important}.breadcrumb .redact-slot{vertical-align:-.22em!important}.ace_editor .ace_text-layer .ace_redacted,.dark-mode .ace_editor .ace_text-layer .ace_redacted{position:relative;color:transparent!important;background:var(--slot-bg)!important;box-shadow:none!important;border-radius:3px!important}.ace_editor .ace_text-layer .ace_redacted::after{position:absolute;right:.35em;top:50%;transform:translateY(-50%);font:700 9.5px/1 var(--font-sans,Inter,sans-serif);color:var(--slot-num)}.hero-mock-count::before,.meta-redact::before,.mobile-sub b::before{background:var(--slot-bg)!important;box-shadow:none!important;border-radius:2px!important}.files .tree-name{display:inline-flex;align-items:center;gap:0;min-width:0}.files .tree-name .redact-slot{vertical-align:middle!important;margin:0 .08em!important}.markdown-body li mark.redact-chip,.markdown-body p mark.redact-chip{vertical-align:-.16em!important}.ace_editor .ace_marker-layer .ace_selection,mark.md-find.is-current{background:rgba(240,196,70,.95)!important;box-shadow:0 0 0 2px rgba(196,140,20,.55)!important}.dark-mode .ace_editor .ace_marker-layer .ace_selection,.dark-mode mark.md-find.is-current{background:rgba(214,170,50,.6)!important;box-shadow:0 0 0 2px rgba(240,200,90,.55)!important}.demo-output .redact-chip,span.redact i{font-size:10px!important}.dark-mode{--slot-num:#8FD6CC}.dark-mode .markdown-body h1 mark.redact-chip,.dark-mode .markdown-body h2 mark.redact-chip,.markdown-body h1 mark.redact-chip,.markdown-body h2 mark.redact-chip{min-width:1.9em!important;height:.78em!important;vertical-align:0!important;padding:0 .22em!important}.viewer-bar .vb-right{gap:4px!important}.viewer-bar .vb-right .vb-icon{width:34px!important;height:34px!important;margin:0!important}.viewer-bar .vb-support{margin-right:10px!important}.viewer-bar .vb-snapshot{margin-right:14px!important}@media (max-width:767px){.mobile-sub{font-size:13px!important;color:#5f5a52!important}.dark-mode .mobile-sub{color:#b3aca1!important}}.file-card-meta{overflow:visible!important}:root{--control-border:#CFC7B9}.dark-mode{--control-border:#48433C}.admin-page .btn:not(.btn-ink):not(.btn-primary):not(.btn-outline-danger):not(.summary-pill),.admin-page select,.anonymize-page #branch,.anonymize-page #sourceUrl,.anonymize-page #sourceUrl-landing,.anonymize-page .form-control-lg,.anonymize-page select.form-control,.dashboard-page .dashboard-quota>summary,.dashboard-page .dropdown-toggle,.dashboard-page .filter-btn,.errors-page select,.q-range-btns+.btn{border-color:var(--control-border)!important}.anonymize-page #sourceUrl-landing:focus,.anonymize-page #sourceUrl:focus{border-color:var(--accent)!important}.errors-page .seg-tabs{height:36px!important;align-items:center}.errors-page .seg-tabs button{height:30px!important}.admin-page .admin-toolbar .btn,.admin-page .btn-export,.admin-page a.btn[href*=export],.admin-page button[title*=xport]{height:36px!important;min-height:36px!important}@media (max-width:767px){.paper-table .cell-views{gap:0!important}}@media (min-width:1200px){.anonymize-workspace .anonymize-split,.anonymize-workspace .anonymize-topbar-inner{max-width:1048px;margin-left:auto!important;margin-right:auto!important}.anonymize-workspace .anonymize-topbar{padding-left:0!important;padding-right:0!important}.anonymize-workspace .anonymize-form-col{padding-left:0!important}}@media (max-width:767px){.anonymize-form-col .anonymize-submit-bar{margin:8px 0 0!important;padding:10px 0 calc(10px + env(safe-area-inset-bottom))!important}.anonymize-form-col .anonymize-submit-bar .btn{border-radius:10px!important}}.img-unavailable{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px dashed var(--control-border);border-radius:8px;font-size:12.5px;color:var(--ink-soft);background:var(--hover-bg-color)}.anonymize-form-col .draft-status{color:var(--ink-soft)!important}.errors-page .errors-toolbar .form-control,.errors-page .errors-toolbar select,.errors-page form select{border-color:var(--control-border)!important}@media (min-width:1200px){.anonymize-workspace .anonymize-form-col,.anonymize-workspace .anonymize-form-col .paper-section,.anonymize-workspace .anonymize-form-col form{padding-left:0!important}.anonymize-workspace .anonymize-form-col{background:0 0!important;padding-right:24px!important}.anonymize-workspace .anonymize-form-col .anonymize-submit-bar,.anonymize-workspace .anonymize-form-col .anonymize-submit-bar::before{background:var(--paper-bg,var(--background))!important}.anonymize-workspace .anonymize-form-col .anonymize-submit-bar::before{background:linear-gradient(to bottom,transparent,var(--paper-bg,#faf9f6))!important}}@media (max-width:767px){.anonymize-page .form-row>.form-group,.anonymize-page .form-row>[class*=col] .form-group{margin-bottom:14px!important}.anonymize-page .form-row>[class*=col]{margin-bottom:0!important;padding-bottom:0!important}}@media (min-width:1200px){.anonymize-workspace .anonymize-form-col .anonymize-submit-bar{background:#faf9f6!important}.anonymize-workspace .anonymize-form-col .anonymize-submit-bar::before{background:linear-gradient(to bottom,rgba(250,249,246,0),#faf9f6)!important}.dark-mode .anonymize-workspace .anonymize-form-col .anonymize-submit-bar{background:#161412!important}.dark-mode .anonymize-workspace .anonymize-form-col .anonymize-submit-bar::before{background:linear-gradient(to bottom,rgba(22,20,18,0),#161412)!important}}:root{--slot-num:#0F4F4A}.dark-mode{--slot-num:#A8E6DD;--slot-bg:#3F3A33}.markdown-body li mark.redact-chip,.markdown-body p mark.redact-chip,.markdown-body td mark.redact-chip,span.redact{display:inline-block!important;height:1.08em!important;line-height:1.08em!important;vertical-align:-.17em!important;min-width:2.5em!important;text-align:right!important;padding:0 .34em!important}.breadcrumb .redact-slot i,.files .redact-slot i,.markdown-body li mark.redact-chip i,.markdown-body p mark.redact-chip i,.markdown-body td mark.redact-chip i,span.redact i{font-size:max(10.5px,.72em)!important;line-height:inherit!important;vertical-align:top!important;font-weight:700!important}.markdown-body h1 mark.redact-chip i,.markdown-body h2 mark.redact-chip i,.markdown-body h3 mark.redact-chip i{font-size:.62em!important}.ace_editor .ace_text-layer .ace_redacted::after{font-size:10.5px!important}.demo-output .redact-chip{font-size:11px!important}.errors-page .bar-info,.errors-page .vol-info,.errors-page [class*=seg-info]{opacity:.45}.connections-grid{align-items:stretch!important}.connections-grid>section{display:flex;flex-direction:column}.connections-grid>section .connection-installations{margin-top:auto!important;border-top:1px solid var(--border-color);border-bottom:0!important}.navbar .nav-link.active,.site-nav .nav-link.active,header .nav-link.active{color:var(--color)!important;box-shadow:inset 0 -2px 0 var(--accent)!important;border-bottom-color:transparent!important}@media (max-width:767px){.anonymize-topbar .paper-crumbs{display:block!important;margin-bottom:4px;font-size:13px}}.anonymize-form-col .draft-discard{background:0 0;border:0;padding:0 0 0 6px;font-size:12.5px;font-weight:500;color:var(--color)!important;text-decoration:underline;text-underline-offset:3px}.anonymize-form-col .draft-discard:hover{color:#b42318!important}@media (max-width:767px){.mobile-sub b{display:inline-flex!important;align-items:center;gap:5px;font-weight:400!important;color:inherit!important}.mobile-sub b::before{content:""!important;display:inline-block!important;width:12px;height:7px;border-radius:2px;background:var(--slot-bg)!important}.mobile-sub span:has(+b)::after{content:"·";margin:0 6px;opacity:.7}}.demo-output .redact-chip,span.redact{display:inline-block!important;height:1.15em!important;line-height:1.15em!important;vertical-align:-.2em!important;text-align:right!important}.demo-output .redact-chip{font-size:11px!important;min-width:3.4em!important}.ace-chrome .ace_gutter-cell{color:#5a554d!important}.dark-mode .ace_editor .ace_gutter-cell{color:#a39c91!important}.files .file.active>a{background:#e2ded6!important}@media (min-width:1200px){.reading-layout{grid-template-columns:minmax(0,700px) 176px!important;gap:44px!important}}@media (hover:none){.anonymize-page .repo-access-switch button:not([aria-pressed=true]):hover{color:var(--ink-soft)!important;text-decoration:none!important}}.connections-grid>section .connection-installations{margin-top:16px!important}.dashboard-page .dashboard-quota .quota-summary-ring{display:none!important}.dashboard-page .dashboard-quota>summary::before{content:"";width:28px;height:4px;border-radius:2px;background:linear-gradient(to right,var(--accent) var(--quota-pct,5%),var(--border-color) 0);flex:0 0 28px}.paper-table-dashboard .row-open{margin-right:2px}@media (max-width:767px){.paper-table-dashboard .cell-actions>.row-open{display:none!important}}.dashboard-page .dashboard-quota>summary::before{width:32px;height:5px;flex-basis:32px;background:linear-gradient(to right,var(--accent) 0 max(3px,var(--quota-pct,5%)),#d9d3c8 0)!important}.dark-mode .dashboard-page .dashboard-quota>summary::before{background:linear-gradient(to right,#7cc7be 0 max(3px,var(--quota-pct,5%)),#3a352f 0)!important}@media (min-width:1200px){.reading-layout{grid-template-columns:minmax(0,680px) 176px!important;gap:44px!important}.md-find-bar{padding-left:max(20px,calc((100% - 900px)/ 2))!important}}.breadcrumb .redact-slot i,.files .redact-slot i,.markdown-body li mark.redact-chip i,.markdown-body p mark.redact-chip i,.markdown-body td mark.redact-chip i,span.redact i{font-size:max(11px,.8em)!important;letter-spacing:.01em}.files .file.active>a{background:#ebe7e0!important}.files .file.active>a .redact-slot{background:#d6cec0!important}.demo-output .redact-chip{font-size:12px!important;height:1.3em!important;line-height:1.3em!important;min-width:3em!important;vertical-align:-.28em!important;padding:0 .4em!important}.paper-table-dashboard .cell-actions{gap:4px!important}.paper-table-dashboard .cell-actions>.copy-url{margin-right:6px!important}.paper-table-dashboard .btn-icon-dots,.paper-table-dashboard .row-edit{width:32px!important;height:32px!important;display:inline-flex!important;align-items:center;justify-content:center;border-radius:8px}.paper-table-dashboard .btn-icon-dots:hover,.paper-table-dashboard .row-edit:hover{background:var(--hover-bg-color)!important}.anonymize-page #commit{text-overflow:ellipsis}@media (max-width:767px){.anonymize-page .form-grid-2{row-gap:0!important;gap:0!important}.anonymize-page .form-grid-2>.form-group{margin-bottom:16px!important}}.connections-grid>section .connection-installations{border-top:0!important;padding-top:0!important}.vb-help{position:relative;display:inline-flex}.vb-help-btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px;border:0;border-radius:8px;background:0 0;color:var(--ink-soft);font:500 13px var(--font-sans,Inter,sans-serif);cursor:pointer}.vb-help-btn:hover,.vb-help-btn[aria-expanded=true]{background:var(--hover-bg-color);color:var(--color)}.vb-help-menu{position:absolute;top:calc(100% + 8px)!important;right:0;left:auto;min-width:250px;z-index:50}.vb-help-menu a{display:flex;gap:10px;align-items:flex-start}.vb-help-menu small{display:block;font-size:12px;color:var(--ink-soft);font-weight:400;margin-top:1px}@media (max-width:767px){.viewer-bar .vb-help{display:none!important}}.paper-table-dashboard .paper-table-head .col-link{padding-left:0!important;margin-left:-16px}@media (min-width:768px){.anonymize-workspace .anonymize-topbar{padding-top:12px!important;padding-bottom:12px!important}.anonymize-workspace .anonymize-topbar .paper-crumbs{margin-bottom:2px!important}.anonymize-workspace .anonymize-topbar .paper-page-title,.anonymize-workspace .anonymize-topbar h1{font-size:26px!important;margin:0!important}}#sourceUrl-landing::placeholder,#terms::placeholder,.form-control::placeholder,input::placeholder,textarea::placeholder{color:#a39b8e!important;opacity:1!important}.dark-mode .form-control::placeholder,.dark-mode input::placeholder,.dark-mode textarea::placeholder{color:#6f695f!important}.q-dot-active,.q-state-filters .q-legend-active,.q-state-filters [class*=active]>.q-dot,.q-state-toggle .q-dot-active{background:var(--accent)!important}@media (max-width:767px){.mobile-sub b{font-size:inherit!important;gap:6px!important;margin-left:0!important;padding-left:0!important}.mobile-sub span:has(+b)::after{margin:0 6px 0 6px!important}.mobile-sub b::before{width:14px!important;height:8px!important;background:#d6cec0!important}.file-card-head{min-height:56px!important}}.markdown-body h1 mark.redact-chip i,.markdown-body h2 mark.redact-chip i{font-weight:600!important;font-size:.58em!important}.dark-mode .markdown-body h1 mark.redact-chip,.dark-mode .markdown-body h2 mark.redact-chip,.markdown-body h1 mark.redact-chip,.markdown-body h2 mark.redact-chip{min-width:1.6em!important;padding:0 .18em!important}.readme-toc a.lvl-3{font-size:12.5px!important;color:#6e685f!important}.dark-mode .readme-toc a.lvl-3{color:#9c958a!important}.file-card-head .file-card-tools,.file-card-head .view-tools{margin-right:10px!important;padding-right:10px!important;border-right:1px solid var(--border-color)!important}.files .file.active>a{background:#e5e0d8!important}.files .file.active>a .redact-slot{background:#cec5b5!important}.markdown-body li mark.redact-chip,.markdown-body p mark.redact-chip,.markdown-body td mark.redact-chip{vertical-align:-.1em!important}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{width:24px!important;transition:opacity .15s}.file-card.at-right-edge .file-card-body::after{opacity:0!important}}.hero-mock .is-active,.hero-mock [class*=active]{position:relative}.hero-mock .is-active::before{left:0!important}.anonymize-form-col form{padding-bottom:36px!important}.connections-grid>section p{font-size:13.5px!important;line-height:1.55!important}.connections-grid>section>.btn,.connections-grid>section>a.btn{width:auto!important;align-self:flex-start}@media (max-width:767px){.paper-table-dashboard .cell-actions>.dropdown,.paper-table-dashboard .cell-actions>.dropdown>.btn-icon-dots,.paper-table-dashboard .cell-actions>.row-edit{width:40px!important;height:40px!important}.dashboard-page .dashboard-row-meta .cell-expires,.dashboard-page .dashboard-row-meta .cell-status,.dashboard-page .dashboard-row-meta .cell-views{padding:0!important;margin:0!important}.dashboard-page .dashboard-row-meta .cell-expires::before,.dashboard-page .dashboard-row-meta .cell-views::before{margin:0 7px!important;width:auto!important}.dashboard-page .dashboard-row-meta .status-line{padding:0!important;margin:0!important}.dashboard-page .dashboard-row-meta .cell-expires .cell-label{margin-right:4px!important}}.connection-installations,.connection-installations li{border:0!important;padding-bottom:0!important;margin-bottom:0!important}.connection-installations li{padding-top:0!important}.connections-page .connection-refresh{margin-left:0!important}.anonymize-form-col .anonymize-submit-bar::before{display:none!important}.anonymize-form-col .anonymize-submit-bar{border-top:1px solid var(--border-color)!important;box-shadow:0 -6px 12px -10px rgba(40,32,24,.18)}.anonymize-form-col form{padding-bottom:24px!important}.img-unavailable{display:flex!important;align-items:center;justify-content:center;gap:8px;width:100%;min-height:72px;border:1px solid var(--border-color)!important;border-style:solid!important;background:var(--hover-bg-color);font:500 12.5px var(--font-sans,Inter,sans-serif)!important;color:var(--ink-soft)}.img-unavailable::before{content:"";width:16px;height:13px;border:1.5px solid currentColor;border-radius:2px;opacity:.7;background:linear-gradient(135deg,transparent 55%,currentColor 55% 62%,transparent 62%)}.admin-summary .summary-pill:not(.active) .count{text-decoration:none!important;opacity:1!important;color:var(--ink-soft)!important}.admin-summary .summary-pill:not(.active)::before{background:#8a8680!important}.dashboard-page .dashboard-quota>summary::before{width:44px!important;flex-basis:44px!important}@media (min-width:1200px){.reading-layout{grid-template-columns:minmax(0,664px) 176px!important;gap:40px!important}.md-find-bar{padding-left:max(20px,calc((100% - 880px)/ 2))!important}}.file-card-head .tb-file{margin-left:8px!important;position:relative}.file-card-head .tb-file::before{content:"";position:absolute;left:-9px;top:6px;bottom:6px;width:1px;background:var(--border-color)}.tree-search-input::placeholder{color:#8a8378!important}.tree-search-kbd{color:#6e685f!important;border:1px solid var(--border-color)!important;background:var(--paper-card)!important}@media (max-width:767px){.mobile-sub{gap:0!important;column-gap:0!important}.mobile-sub span:has(+b)::after,.mobile-sub>span+span::before{margin:0 6px!important}.mobile-sub b::before{margin:0!important}.file-card-head{min-height:52px!important;padding-top:6px!important;padding-bottom:6px!important}}.errors-page .dot-info,.errors-page .seg-info{background:#cfc9bf!important;opacity:1!important}.dark-mode .errors-page .dot-info,.dark-mode .errors-page .seg-info{background:#4a453e!important}.errors-page .dot-error,.errors-page .seg-error{background:#b42318!important}.errors-page .dot-warn,.errors-page .seg-warn{background:#b7791f!important}.dark-mode .leftCol,.dark-mode .viewer-bar{background:#221f1b!important}.paper-table-dashboard .copy-url{box-shadow:inset 0 0 0 1px var(--control-border,#cfc7b9)!important;background:var(--paper-card)!important}.paper-table-dashboard .copy-url .ui-icon,.paper-table-dashboard .copy-url svg{width:15px!important;height:15px!important;color:var(--color)!important;opacity:.75}.paper-table-dashboard .copy-url:hover{background:var(--hover-bg-color)!important}@media (min-width:1200px){.anonymize-workspace .anonymize-preview-col{padding-right:0!important}}.anonymize-submit-bar .draft-status{display:block;margin:0 0 8px!important;font-size:12.5px!important}@media (max-width:767px){.paper-table-dashboard .cell-actions>.row-open{display:inline-flex!important;grid-area:auto}.paper-table.paper-table-dashboard .paper-table-row{grid-template-columns:minmax(0,1fr) auto auto auto!important;grid-template-areas:"name open edit more" "meta meta meta meta" "link link link link"!important}.paper-table-dashboard .cell-actions>.row-open{grid-area:open;width:40px!important;height:40px!important;align-self:start;margin-top:-4px}}.overview-page :is(.ov-kpi,.ov-card,.kpi-card):has(.ov-meter.crit){border-color:rgba(180,35,24,.45)!important;box-shadow:inset 3px 0 0 #b42318!important}.overview-page :is(.ov-kpi,.ov-card,.kpi-card):has(.ov-meter.warn):not(:has(.ov-meter.crit)){border-color:rgba(183,121,31,.45)!important;box-shadow:inset 3px 0 0 #b7791f!important}.dark-mode{--slot-bg:#46403A}.faq-section .panel-default .panel-title a:after{transform:rotate(45deg)!important}.faq-section .panel-default .panel-title a[aria-expanded=true]:after{transform:rotate(-135deg)!important}.overview-page .ov-kpi-card:has(.ov-meter.crit){border-color:rgba(180,35,24,.45)!important;box-shadow:inset 3px 0 0 #b42318!important}.overview-page .ov-kpi-card:has(.ov-meter.warn):not(:has(.ov-meter.crit)){border-color:rgba(183,121,31,.45)!important;box-shadow:inset 3px 0 0 #b7791f!important}@media (max-width:767px){.paper-table-dashboard .cell-anon,.paper-table-dashboard .cell-anon a,.paper-table-dashboard .cell-anon strong,.paper-table-dashboard .cell-anon>*{min-width:0}.paper-table-dashboard .cell-anon .anon-name,.paper-table-dashboard .cell-anon .anon-title,.paper-table-dashboard .cell-anon .anon-title>a{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;word-break:normal!important;overflow-wrap:normal!important;display:block}}.admin-page .summary-pill.ok::before,.users-page .summary-pill.ok::before{background:var(--status-ready,#2f7d4f)!important}.admin-page .summary-pill.error::before{background:var(--status-error,#b42318)!important}@media (max-width:767px){.paper-table-dashboard .cell-actions>.row-open{display:none!important}.paper-table.paper-table-dashboard .paper-table-row{grid-template-columns:minmax(0,1fr) auto auto!important;grid-template-areas:"name edit more" "meta meta meta" "link link link"!important}.paper-table-dashboard .cell-anon .anon-title,.paper-table-dashboard .cell-anon .anon-title>a{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere!important}}.ace-chrome .ace_keyword,.ace-chrome .ace_storage,.ace-chrome .ace_storage.ace_type{color:#7a3e6b!important}.dark-mode .ace_editor .ace_keyword,.dark-mode .ace_editor .ace_storage{color:#d3a3c6!important}.dark-mode{--slot-bg:#4A443D;--slot-num:#9FE0D6}.faq-hero h1,.faq-page h1,.paper-page-title{text-wrap:balance}@media (min-width:1200px){.readme-toc{margin-top:-18px!important}}@media (min-width:768px){.leftCol-search{height:52px!important;min-height:52px!important;box-sizing:border-box;display:flex!important;align-items:center;padding-top:0!important;padding-bottom:0!important;border-bottom:1px solid var(--border-color)!important;margin-bottom:6px!important}}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{width:32px!important;background:linear-gradient(to right,rgba(255,255,255,0),#fff 75%)!important;border-right:2px solid rgba(40,32,24,.14)}.dark-mode .file-card.is-code.no-wrap .file-card-body::after{background:linear-gradient(to right,rgba(20,19,17,0),#141311 75%)!important;border-right-color:rgba(255,255,255,.1)}}.anonymize-form-col form{padding-bottom:0!important}.anonymize-form-col .anonymize-submit-bar{margin-bottom:0!important}.errors-page .kpi-filter{cursor:pointer;transition:border-color .12s,box-shadow .12s}.errors-page .kpi-filter:hover{border-color:var(--control-border,#cfc7b9)!important}.errors-page .kpi-filter.is-selected{border-color:var(--accent)!important;box-shadow:inset 0 0 0 1px var(--accent)!important}.errors-page .kpi-filter:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.readme-toc a:not(.is-active){color:#4f4a43!important}.readme-toc a.lvl-3:not(.is-active){color:#625c53!important}.ace_search .ace_search_field:focus,.md-find-input:focus{box-shadow:0 0 0 2px var(--accent-soft)!important;border-color:var(--accent)!important}@media (max-width:767px){.file-card-head{align-items:flex-start!important}.file-card-head .btn-sidebar-toggle,.file-card-head .mobile-files-toggle,.file-card-head>button:first-child{margin-top:2px!important}}@media (max-width:767px){.dashboard-page #search,.dashboard-page .btn-filters,.dashboard-page .dashboard-heading-actions .btn,.dashboard-page .dashboard-quota>summary,.dashboard-page .filters-toggle{height:40px!important;min-height:40px!important}}.profile-page .quota-tile:has(.quota-unlimited)::after,.quota-panel .quota-item:has(.quota-unlimited)::after{content:"No limit on file count";display:block;font-size:12.5px;color:var(--ink-soft);margin-top:6px}.admin-page .detail-value.is-empty,.admin-page .is-unsynced{color:#9a9389!important;font-style:normal!important}@media (min-width:768px){.anonymize-form-col .anonymize-submit-bar{display:flex!important;align-items:center;gap:16px}.anonymize-submit-bar .draft-status{margin:0!important;flex:0 1 auto;max-width:46%;line-height:1.35}.anonymize-submit-bar .btn-ink{flex:1 1 auto}}.anonymize-landing .repo-access-note>span:has(.ui-icon){display:none!important}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{box-shadow:inset -8px 0 8px -8px rgba(40,32,24,.35)!important;border-right:0!important}}.dark-mode .leftCol{background:#1c1a17!important}.dark-mode .viewer-bar{background:#181614!important}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{width:44px!important;background:linear-gradient(to right,rgba(250,249,246,0) 0,rgba(250,249,246,.92) 55%,rgba(226,220,210,.95) 100%)!important;box-shadow:inset -1px 0 0 rgba(40,32,24,.18)!important}.dark-mode .file-card.is-code.no-wrap .file-card-body::after{background:linear-gradient(to right,rgba(20,19,17,0) 0,rgba(20,19,17,.92) 55%,rgba(44,40,35,.95) 100%)!important;box-shadow:inset -1px 0 0 rgba(255,255,255,.14)!important}}@media (max-width:767px){.file-card-head{min-height:48px!important;align-items:center!important;padding-top:4px!important;padding-bottom:4px!important}.file-card-head .file-card-path{display:flex!important;flex-direction:row!important;align-items:center!important;flex-wrap:nowrap!important;gap:8px!important;min-width:0}.file-card-head .file-card-path .breadcrumb{min-width:0;flex:0 1 auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mobile-sub{margin:0!important;flex:0 0 auto;white-space:nowrap}.mobile-sub>span{display:none!important}.mobile-sub span:has(+b)::after{content:none!important}.mobile-sub b{font-size:12.5px!important}}.paper-features,.paper-qa,.paper-section-head,.paper-stats{margin-top:88px!important}.paper-hero+.paper-stats{margin-top:40px!important}@media (min-width:1100px){.paper-faq-body{grid-template-columns:180px minmax(0,1fr) 220px!important;gap:48px!important}.paper-faq-help{display:block}}.paper-faq-help{display:none}.paper-faq-help-card{position:sticky;top:96px;border:1px solid var(--border-color);border-radius:12px;background:var(--paper-card);padding:18px}.paper-faq-help-card strong{display:block;font-size:14px;margin-bottom:6px}.paper-faq-help-card p{font-size:13px;line-height:1.5;color:var(--ink-soft);margin:0 0 12px}.anonymize-submit-bar .draft-status{white-space:nowrap;flex:0 0 auto!important;max-width:none!important}.q-throughput .q-range-btns{float:right;margin:-4px 0 0 12px}.admin-page .paper-table{border:1px solid var(--border-color)!important;border-radius:12px!important;overflow:hidden;background:var(--paper-card)}.dark-mode{--ink-soft:#ADA699;--ink-muted:#8C8579}.hero-mock-count::before{background:var(--slot-bg)!important}@media (min-width:1100px){.paper-faq-help{display:block!important}}.q-throughput{position:relative}.q-throughput .q-range-btns{position:absolute!important;top:12px;right:16px;float:none!important;margin:0!important;width:auto!important;display:inline-flex!important;z-index:2}.anonymize-submit-bar .draft-status{order:-1}.dark-mode .readme-toc a:not(.is-active){color:#b8b1a6!important}.dark-mode .readme-toc a.lvl-3:not(.is-active){color:#a39c91!important}.dark-mode .files .file.active>a{background:rgba(255,255,255,.13)!important}.files .file.active>a{background:#ebe7e0!important}.files .file.active>a .redact-slot{background:var(--slot-bg)!important}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{width:28px!important;background:linear-gradient(to right,rgba(250,249,246,0) 0,rgba(250,249,246,.85) 100%)!important;box-shadow:inset -1px 0 0 rgba(40,32,24,.16)!important}.dark-mode .file-card.is-code.no-wrap .file-card-body::after{background:linear-gradient(to right,rgba(20,19,17,0) 0,rgba(20,19,17,.85) 100%)!important;box-shadow:inset -1px 0 0 rgba(255,255,255,.12)!important}}@media (min-width:1100px){.readme-toc{margin-top:-54px!important;top:84px!important}}.dark-mode .leftCol,.dark-mode .leftCol .leftCol-search{background:#1f1d1a!important}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{width:32px!important;background:linear-gradient(to right,rgba(250,249,246,0) 0,rgba(250,249,246,.75) 45%,rgba(236,232,225,.98) 100%)!important;box-shadow:inset -1px 0 0 rgba(40,32,24,.2)!important}.dark-mode .file-card.is-code.no-wrap .file-card-body::after{background:linear-gradient(to right,rgba(20,19,17,0) 0,rgba(20,19,17,.75) 45%,rgba(38,35,31,.98) 100%)!important;box-shadow:inset -1px 0 0 rgba(255,255,255,.16)!important}}@media (max-width:991px){.navbar .nav-signin-m{display:inline-flex;align-items:center;gap:6px;background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important;padding:0 12px!important;font-weight:500}.dark-mode .navbar .nav-signin-m{background:#237a71!important;border-color:#237a71!important;color:#fff!important}.navbar .nav-signin-m .fa-github{font-size:15px}}.paper-faq-help-card p{font-size:14px!important;line-height:1.55!important}@media (min-width:1100px){.paper-hero{grid-template-columns:minmax(0,1fr) 500px!important;column-gap:48px!important}}@media (max-width:767px){.viewer-bar .vb-right{gap:8px!important}.viewer-bar .vb-right>.vb-icon,.viewer-bar .vb-right>.vb-support{margin:0!important}}@media (min-width:1100px){.paper-reassure{flex-wrap:wrap!important;column-gap:18px!important;row-gap:6px!important;max-width:100%}.paper-reassure li{white-space:nowrap}}@media (min-width:1100px){.paper-hero{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;column-gap:20px!important}.paper-section-head{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;column-gap:20px!important}.paper-section-head>p{max-width:500px}}.dark-mode{--slot-bg:#3D3833;--slot-num:#8FDACD}@media (min-width:768px){.explorer-page>.leftCol .leftCol-search,.leftCol-search{height:53px!important;padding:0 12px!important;display:flex!important;align-items:center!important;box-sizing:border-box}.leftCol-search .tree-search-box{height:36px!important;padding-top:0!important;padding-bottom:0!important;align-items:center}.leftCol-search .search-zip{height:36px!important;width:36px!important}}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{width:36px!important;background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(250,249,246,.9) 55%,#ece7df 100%)!important;box-shadow:inset -2px 0 0 rgba(40,32,24,.18)!important}.dark-mode .file-card.is-code.no-wrap .file-card-body::after{background:linear-gradient(to right,rgba(20,19,17,0) 0,rgba(20,19,17,.9) 55%,#2a2622 100%)!important;box-shadow:inset -2px 0 0 rgba(255,255,255,.18)!important}}@media (min-width:1100px){.paper-faq-help-card{margin-top:7px}}.hero-mock-count::before,.meta-redact::before,.mobile-sub b::before{background:#d9d1c3!important;box-shadow:inset 0 0 0 1px rgba(40,32,24,.12)!important}.dark-mode .hero-mock-count::before,.dark-mode .meta-redact::before,.dark-mode .mobile-sub b::before{background:#4a443d!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)!important}.viewer-bar .vb-signin,.viewer-bar .vb-signin:hover{background:var(--accent)!important;color:#fff!important;box-shadow:none!important;border:0!important}.viewer-bar .vb-signin:hover{filter:brightness(.94)}.dark-mode .viewer-bar .vb-signin,.dark-mode .viewer-bar .vb-signin:hover{background:#237a71!important;color:#fff!important}@media (min-width:992px){.paper-features,.paper-qa,.paper-section-head,.paper-stats{margin-top:72px!important}.demo{margin-bottom:0!important}.paper-qa{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;column-gap:20px!important}}.ace-chrome .ace_gutter-cell{color:#57524a!important}.dark-mode .ace_editor .ace_gutter-cell{color:#ada69b!important}.readme-toc a.lvl-3:not(.is-active){color:#57524a!important}.dark-mode .readme-toc a.lvl-3:not(.is-active){color:#ada69b!important}.paper-stat-delta,.paper-stats small{color:#57524a!important}.nav-heart-m,.nav-heart-m:focus,.nav-heart-m:hover{background:0 0!important;box-shadow:none!important;border:0!important}@media (min-width:992px){.paper-section-head+.paper-features{margin-top:32px!important}}@media (min-width:1100px){.paper-features{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;column-gap:20px!important}.paper-features>:first-child{padding-right:28px}}@media (min-width:1100px){.fm-input-sm{width:118px!important}.fm-row{gap:12px!important}.fm-toggles{flex-wrap:nowrap!important}}@media (min-width:768px){.viewer-bar .vb-right{gap:8px!important}.viewer-bar .vb-right>*{margin:0!important}.viewer-bar .vb-help-btn,.viewer-bar .vb-icon,.viewer-bar .vb-signin,.viewer-bar .vb-support{height:32px!important;min-height:32px!important;box-sizing:border-box}.viewer-bar .vb-icon{width:32px!important}.viewer-bar .vb-snapshot{margin-right:8px!important}}.dark-mode .hero-mock{background:#221f1c!important;box-shadow:0 0 0 1px rgba(255,255,255,.1),0 18px 40px -18px rgba(0,0,0,.7)!important}@media (min-width:768px){.viewer-bar .vb-right .vb-icon{width:32px!important;height:32px!important}}.pane-url .meta-redact{display:inline-flex;align-items:center;gap:6px;font-family:inherit}@media (min-width:768px){.file-card-head .tb-file,.tb-file{margin-left:16px!important}}.demo-panes .pane-header{height:40px!important;min-height:40px!important;box-sizing:border-box;display:flex;align-items:center;padding-top:0!important;padding-bottom:0!important}.files .file.active>a .tree-name{font-weight:500;color:var(--color)}.files .file.active>a{background:#e8e3db!important}.viewer-bar .vb-snapshot{font-size:12px!important;color:var(--ink-soft)!important;gap:5px!important}.dark-mode .files .file.active>a{background:rgba(255,255,255,.08)!important}.demo-terms .label,.demo-terms label,.fm-label,.pane-label{letter-spacing:0!important}@media (min-width:992px){.navbar .nav-link:not(.btn-signin){font-size:14px!important}}.paper-faq-toc a.active{color:var(--accent)!important;font-weight:500}.dark-mode .paper-faq-toc a.active{color:#7fcfc2!important}.paper-features .paper-feature.is-on .paper-feature-tab::after,.paper-features .paper-feature:not(.is-on) .paper-feature-tab::after{border-color:#57524a!important}.dark-mode .paper-features .paper-feature .paper-feature-tab::after{border-color:#ada69b!important}.paper-feature:not(.is-on) .paper-feature-tab:hover .paper-feature-title{color:var(--accent)}.dark-mode .ace_redacted,.dark-mode .redact-chip,.dark-mode .redact-slot{box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)!important}@media (min-width:768px){.file-card-meta{font-size:13px!important}}@media (min-width:768px){.file-card-head .btn-goto{order:1}.file-card-head .btn-toggle{order:2}.file-card-head .btn-find{order:3}.file-card-head .tb-file{order:4}.file-card-head .tb-copy-m,.file-card-head .tb-more-btn{order:5}}.leftCol-search .search-zip{width:auto!important;padding:0 9px!important;gap:4px;display:inline-flex!important;align-items:center;justify-content:center}.search-zip-label{font-size:11px;font-weight:600;letter-spacing:.02em}.navbar .nav-support,.navbar .nav-support-inline{font-weight:400!important;color:var(--ink-soft)!important}.files .file.active>a::before{left:0!important}.dark-mode .hero-mock{border-color:#3a3631!important}.dark-mode .hero-mock .hm-side,.dark-mode .hero-mock-side,.dark-mode .hero-mock-tree{background:#1e1c19!important}.paper-faq-lede{font-size:18px!important;line-height:1.55!important}@media (min-width:768px){.file-card-actions>.btn-ghost.btn-icon-only,.file-card-actions>.btn-toggle{height:32px!important;width:32px!important;min-height:32px!important;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center}}.tree-search-input::placeholder{color:#6e685f!important;opacity:1}.dark-mode .tree-search-input::placeholder{color:#9c958a!important}.tree-search-kbd{color:#57524a!important}.dark-mode .tree-search-kbd{color:#ada69b!important}@media (min-width:1100px){.paper-footer-inner{grid-template-columns:calc(50% - 10px) repeat(3,minmax(0,1fr))!important;column-gap:20px!important}.paper-footer-brand{max-width:420px}}.ace_search_counter,.find-count,.md-find-count{font-variant-numeric:tabular-nums}.demo-panes .pane-label,.demo-panes .pane-url{font-size:13px!important}.dark-mode .files .file.active>a{background:rgba(255,255,255,.1)!important}.demo-output .redact-chip{vertical-align:-.16em!important}.hero-mock .redact,span.redact{vertical-align:-.12em!important}.tb-seg-icon .ui-icon{width:16px!important;height:16px!important}.files .file.active>a{background:#e3ddd2!important}.files .file.active>a .redact-slot{background:#d0c7b7!important}.file-card-actions>.btn-find.is-on{box-shadow:inset 0 0 0 1px rgba(31,106,100,.55)!important;border-color:transparent!important}.demo-panes>:last-child .pane-header{background:#f3efe8!important}.dark-mode .demo-panes>:last-child .pane-header{background:#1f1c19!important}.demo-terms input:focus,.demo-terms textarea:focus{outline:0!important;border-color:var(--accent)!important;box-shadow:0 0 0 3px rgba(31,106,100,.18)!important}.markdown-body>h1:first-child{margin-top:8px!important;margin-bottom:24px!important}.tb-menu-label{padding:8px 14px 4px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#57524a}.dark-mode .tb-menu-label{color:#ada69b}.tb-menu .tb-menu-toc{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px;display:block;text-align:left}.tb-menu .tb-menu-toc.lvl-3{padding-left:28px!important;color:#57524a}.dark-mode .tb-menu .tb-menu-toc.lvl-3{color:#ada69b}.files .file.active>a{background:#ece8e1!important}.files .file.active>a .redact-slot{background:var(--slot-bg)!important}.tb-menu{max-height:calc(100dvh - 120px);overflow-y:auto;overscroll-behavior:contain}.tb-menu .tb-menu-toc.is-active{color:var(--accent)!important;font-weight:500}.dark-mode .tb-menu .tb-menu-toc.is-active{color:#7fcfc2!important}.markdown-body>h1:first-child{margin-bottom:18px!important}@media (max-width:767px){.markdown-body>h1:first-child{margin-top:0!important;margin-bottom:14px!important}}.files .file.active>a{background:#e8e5dd!important}.tree-toggle::after{border-color:#7a746a!important}.dark-mode .tree-toggle::after{border-color:#8f887d!important}.dark-mode .hero-mock{box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 0 0 1px rgba(255,255,255,.1),0 18px 40px -18px rgba(0,0,0,.7)!important;background:#24211d!important}.paper-faq-lede{text-wrap:balance;max-width:640px}.pane-edit-hint{font-weight:400;color:#6e685f}.dark-mode .pane-edit-hint{color:#9c958a}.demo-panes>:first-child:focus-within,.demo-panes>:first-child:hover{border-color:#cfc7b9!important}.tb-menu .tb-menu-toc{white-space:normal!important;font-size:14px!important;line-height:1.35;padding-top:7px!important;padding-bottom:7px!important;max-width:none!important}.tb-menu .tb-menu-toc.lvl-3{padding-left:24px!important}.tb-menu-note{font-size:13px!important;color:#6e685f!important}.dark-mode .tb-menu-note{color:#9c958a!important}@media (max-width:767px){.tb-more:has(.tb-menu)::before{content:"";position:fixed;inset:0;background:rgba(26,24,21,.22);z-index:40}.tb-menu{z-index:41!important}}.paper-faq-help-card{border-radius:12px!important}.nav-theme-m{display:none}@media (max-width:991px){.nav-theme-m{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:0;background:0 0;color:var(--ink-soft);padding:0;margin-left:2px}.nav-theme-m .ui-icon{width:18px;height:18px}.navbar .nav-signin-m{height:32px!important;margin-left:6px!important}.nav-heart-m+.nav-theme-m{margin-left:2px}}@media (max-width:767px){.viewer-bar .vb-signin{height:32px!important}}.tb-menu .tb-menu-toc.lvl-2{padding-left:42px!important}.tb-menu .tb-menu-toc.lvl-3{padding-left:58px!important}.tb-menu-label{padding-left:42px!important}@media (max-width:991px){.navbar-collapse .nav-item:has(>.nav-icon){display:none!important}}.file-card-head .tb-menu>button.tb-menu-toc,.tb-menu>button.tb-menu-toc{font-size:14px!important;min-height:36px!important;padding-top:8px!important;padding-bottom:8px!important;line-height:1.35!important;height:auto!important}.tb-menu>.tb-menu-label{padding-left:40px!important}.tb-menu>button.tb-menu-toc.lvl-2{padding-left:40px!important}.tb-menu>button.tb-menu-toc.lvl-3{padding-left:56px!important}.tb-toc-m{display:none;position:relative}@media (max-width:767px){.tb-toc-m{display:inline-flex}.file-card-head .tb-toc-btn{box-shadow:none!important;background:0 0!important;width:36px;height:36px}.tb-toc-m .tb-menu{right:-44px;min-width:260px}.tb-toc-m:has(.tb-menu)::before{content:"";position:fixed;inset:0;background:rgba(26,24,21,.22);z-index:40}}.dark-mode .file-card-actions>.btn-find.is-on,.dark-mode .file-card-actions>.btn-toggle.is-on{box-shadow:inset 0 0 0 1px #7fcfc2!important;color:#7fcfc2!important}.tb-more:has(.tb-menu)::before,.tb-toc-m:has(.tb-menu)::before{pointer-events:none}.tb-toc-menu>.tb-menu-label{padding-left:16px!important}.tb-toc-menu>button.tb-menu-toc.lvl-2{padding-left:16px!important}.tb-toc-menu>button.tb-menu-toc.lvl-3{padding-left:32px!important}@media (max-width:767px){.tb-toc-m .tb-menu{right:-40px;max-width:calc(100vw - 28px)}}.files .tree-icon-file,.files .tree-icon-folder{width:16px!important;min-width:16px;display:inline-flex;justify-content:center}.ace_search .ace_button.checked,.ace_search .ace_button[aria-checked=true],.ace_search .ace_button[checked]{color:var(--accent)!important;box-shadow:inset 0 0 0 1px rgba(31,106,100,.55)!important;background:0 0!important}.dark-mode .ace_search .ace_button.checked,.dark-mode .ace_search .ace_button[aria-checked=true],.dark-mode .ace_search .ace_button[checked]{color:#7fcfc2!important;box-shadow:inset 0 0 0 1px #7fcfc2!important}.file-card-meta .sep{font-size:0!important;display:inline-block;width:0;margin:0 6px!important}@media (max-width:991px){.navbar .nav-heart-m{margin-left:auto!important}.navbar .nav-heart-m+.nav-theme-m{margin-left:4px!important}.navbar .nav-theme-m+.nav-signin-m{margin-left:4px!important}.navbar .navbar-toggler{margin-left:4px!important;margin-right:-6px}}.tb-more:has(.tb-menu)::before,.tb-toc-m:has(.tb-menu)::before{background:rgba(26,24,21,.1)!important}.dark-mode .tb-more:has(.tb-menu)::before,.dark-mode .tb-toc-m:has(.tb-menu)::before{background:rgba(0,0,0,.3)!important}.tb-more:has(.tb-menu)::before,.tb-toc-m:has(.tb-menu)::before{content:none!important}.tb-menu{box-shadow:0 12px 32px -8px rgba(26,24,21,.28),0 0 0 1px rgba(26,24,21,.08)!important}.tb-menu [role=menuitemcheckbox]{position:relative;padding-right:40px!important}.tb-menu [role=menuitemcheckbox][aria-checked=true]::after{content:"";position:absolute;right:18px;top:50%;width:10px;height:5px;border-left:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:translateY(-70%) rotate(-45deg)}.tb-menu [role=menuitemcheckbox][aria-checked=true] .ui-icon{color:var(--accent)}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{width:20px!important}}.search-zip-label{font-size:12px!important;font-weight:500!important}.meta-redact::before,.mobile-sub b::before{box-shadow:inset 0 0 0 1px rgba(40,32,24,.22)!important}@media (max-width:767px){.file-card-actions>.tb-toc-m,.file-card-head .tb-toc-m{order:1!important}.file-card-actions>.tb-copy-m,.file-card-head .tb-copy-m{order:2!important}.file-card-actions>.tb-more,.file-card-head .tb-more{order:3!important}.file-card.is-code.no-wrap .file-card-body::after{width:26px!important;background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(250,249,246,.92) 60%,#eae5dc 100%)!important;box-shadow:inset -1px 0 0 rgba(40,32,24,.2)!important}}@media (max-width:767px){.ace_editor .ace_gutter-cell{padding-left:6px!important;padding-right:8px!important}}.files .redact-slot i{font-size:11px!important}.tb-menu-meta{padding-top:0!important;padding-left:42px!important}.pane-url .meta-redact{font-family:var(--font-sans,Inter,system-ui,sans-serif)!important;font-size:12px}@media (max-width:767px){.tb-toc-m .tb-menu{right:-76px!important}}@media (max-width:991px){.navbar .navbar-brand{font-size:18px!important;margin-right:16px!important}}.tb-menu .tb-menu-meta{white-space:nowrap;font-size:12px!important;padding-left:44px!important;padding-bottom:8px!important}.tb-menu .tb-menu-meta{padding-left:38px!important}.paper-cta{margin-top:72px;margin-bottom:72px;padding:40px 0;border-top:1px solid var(--border-color);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:20px;align-items:center}.paper-cta h2{font-family:var(--font-serif);font-size:40px;line-height:1.05;letter-spacing:-.01em;margin:0 0 10px;color:var(--color);font-weight:400}.paper-cta p{margin:0;color:var(--ink-soft);font-size:16px;max-width:440px}.paper-cta-actions{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.paper-cta-actions .btn-hero{display:inline-flex;align-items:center;gap:10px}@media (max-width:991px){.paper-cta{grid-template-columns:1fr;row-gap:20px;margin-top:56px;margin-bottom:40px}.paper-cta h2{font-size:32px}}.tb-menu .tb-menu-meta,.tb-menu-note{color:#57524a!important}.dark-mode .tb-menu .tb-menu-meta,.dark-mode .tb-menu-note{color:#ada69b!important}.paper-cta{margin-bottom:40px!important;padding-bottom:40px!important}.ace_search .ace_search_field{height:32px!important;box-sizing:border-box;border:1px solid var(--control-border,#cfc7b9)!important;box-shadow:none!important}.ace_search .ace_search_field:focus-visible{border-color:var(--accent)!important;box-shadow:0 0 0 3px rgba(31,106,100,.16)!important}.ace_search .ace_button,.ace_search .ace_searchbtn,.ace_search .ace_searchbtn_close{height:32px!important;min-height:32px!important;box-sizing:border-box;display:inline-flex!important;align-items:center;justify-content:center}.ace_search .ace_searchbtn_close{width:32px!important;border-radius:6px}.ace_search .ace_searchbtn_close:hover{background:var(--hover-bg-color)!important}.file-card-head .tb-toc-btn.is-on{background:0 0!important;box-shadow:inset 0 0 0 1px rgba(31,106,100,.55)!important;color:var(--accent)!important}@media (min-width:1100px){.readme-toc{top:110px!important;margin-top:-28px!important}}@media (min-width:1100px){.paper-faq-help-card{margin-top:2px!important}}@media (min-width:1100px){.readme-toc{top:92px!important}}@media (min-width:1100px){.paper-hero{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr)!important;column-gap:40px!important;overflow:visible}.paper-hero-shot{margin-right:calc((100vw - 100%)/ -2 + 0px);margin-right:min(-24px,calc((1076px - 100vw)/ 2))}.paper-hero-shot .paper-frame{border-top-right-radius:0!important;border-bottom-right-radius:0!important;border-right:0!important}.hero-mock{font-size:14px;min-height:420px}.hero-mock-row{font-size:13.5px!important}.hero-mock-doc-bar span{font-size:13px!important}.paper-landing{overflow-x:clip}}@media (min-width:1100px){.hero-mock{min-height:0!important}}.dark-mode .markdown-body pre code mark.redact-chip,.markdown-body pre code mark.redact-chip,pre code mark.redact-chip{display:inline-block!important;box-sizing:border-box!important;overflow:hidden!important;width:var(--slot-ch,6ch)!important;min-width:0!important;height:1.2em!important;margin:0!important;padding:0 .4ch!important;vertical-align:-.24em!important;font-size:inherit!important;line-height:1.2em!important;text-align:right!important}.markdown-body pre code mark.redact-chip i,pre code mark.redact-chip i{font-size:.8em!important;line-height:inherit!important;vertical-align:top!important}@media (max-width:1199px){.reading-layout{grid-template-columns:minmax(0,760px)!important}}@media (max-width:767px){.reading-layout{grid-template-columns:minmax(0,1fr)!important;padding:0 16px!important}}.reading-layout>.file-content.markdown-body{min-width:0!important;max-width:100%!important}.paper-cta{border-top:0!important;padding-top:0!important;padding-bottom:0!important;margin-top:96px!important;margin-bottom:88px!important}.paper-cta+.paper-footer{margin-top:0!important}@media (max-width:991px){.paper-cta{margin-top:72px!important;margin-bottom:64px!important}}@media (max-width:767px){.dashboard-heading-actions .dashboard-quota .quota-panel{left:0!important;right:auto!important;width:calc(100vw - 36px)!important}}@media (max-width:767px){.errors-page .errors-toolbar{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px!important;align-items:center}.errors-page .errors-toolbar .seg-tabs{grid-column:1/-1;display:flex!important;width:100%}.errors-page .errors-toolbar .seg-tabs button{flex:1 1 0}.errors-page .errors-toolbar .search-wrap{grid-column:1/-1;max-width:none!important;min-width:0!important;width:100%}.errors-page .errors-toolbar .select-wrap{display:flex!important;min-width:0}.errors-page .errors-toolbar .select-wrap select{flex:1 1 auto;min-width:0!important;width:100%!important;max-width:none!important}.errors-page .errors-toolbar .autoref{grid-column:1}.errors-page .errors-toolbar>.btn-icon{grid-column:2;justify-self:end}}.overview-page .ov-views{display:inline-flex;gap:2px;padding:3px;margin:4px 0 16px;border-radius:9px;background:var(--paper-sunk,rgba(0,0,0,.05))}.overview-page .ov-views button{border:0;background:0 0;padding:6px 14px;border-radius:7px;font:500 13.5px var(--font-sans);color:var(--ink-soft);cursor:pointer}.overview-page .ov-views button:hover{color:var(--color)}.overview-page .ov-views button.active{background:var(--paper-card,#fff);color:var(--color);box-shadow:0 1px 2px rgba(0,0,0,.08)}.dark-mode .overview-page .ov-views{background:rgba(255,255,255,.06)}.dark-mode .overview-page .ov-views button.active{background:rgba(255,255,255,.1);box-shadow:none}@media (max-width:767px){.overview-page .ov-views{display:flex}.overview-page .ov-views button{flex:1 1 0}.admin-page.overview-page section.ov-chart-row,.admin-page.overview-page section.ov-triple-row{grid-template-columns:minmax(0,1fr)!important}}@media (max-width:991.98px){.navbar .navbar-collapse{padding:8px 10px 12px!important}.navbar .navbar-collapse .navbar-nav{gap:2px!important;margin:0!important;padding:0!important}.navbar .navbar-collapse .nav-item{margin:0!important;padding:0!important;width:100%!important}.navbar .navbar-collapse .nav-link,.navbar .navbar-collapse .user-menu .dropdown-item{display:flex!important;align-items:center!important;gap:12px!important;width:100%!important;min-height:44px;padding:10px 12px!important;margin:0!important;border:0!important;border-radius:8px!important;font:500 15px/1.2 var(--font-sans)!important;color:var(--color)!important;background:0 0!important;box-shadow:none!important;text-decoration:none!important;white-space:normal}.navbar .navbar-collapse .nav-link::after,.navbar .navbar-collapse .nav-link::before{display:none!important}.navbar .navbar-collapse .nav-link:hover,.navbar .navbar-collapse .user-menu .dropdown-item:hover{background:rgba(0,0,0,.04)!important}.navbar .navbar-collapse .nav-link.active{background:rgba(0,0,0,.06)!important;font-weight:600!important}.dark-mode .navbar .navbar-collapse .nav-link:hover,.dark-mode .navbar .navbar-collapse .user-menu .dropdown-item:hover{background:rgba(255,255,255,.05)!important}.dark-mode .navbar .navbar-collapse .nav-link.active{background:rgba(255,255,255,.08)!important}.navbar .navbar-collapse .nav-link .ui-icon,.navbar .navbar-collapse .user-menu .dropdown-item .fab,.navbar .navbar-collapse .user-menu .dropdown-item .ui-icon{flex:none;width:18px!important;height:18px!important;margin:0!important;color:var(--ink-soft)!important;font-size:16px;text-align:center}.navbar .navbar-collapse .nav-signin-item{display:none!important}.navbar .navbar-collapse .user-chip-wrap{margin-top:8px!important;padding-top:8px!important;border-top:1px solid var(--border-color)!important}.navbar .navbar-collapse .user-chip{pointer-events:none;font-weight:600!important}.navbar .navbar-collapse .user-chip img{width:24px!important;height:24px!important;margin:-3px 0!important}.navbar .navbar-collapse .user-menu{display:block!important;position:static!important;transform:none!important;float:none!important;min-width:0!important;margin:0!important;padding:0!important;border:0!important;box-shadow:none!important;background:0 0!important}.navbar .navbar-collapse .user-menu .dropdown-header,.navbar .navbar-collapse .user-menu .um-extra{display:none!important}.navbar .navbar-collapse .user-menu .dropdown-item small{display:none!important}.navbar .navbar-collapse .user-menu .dropdown-item span{display:inline!important}.navbar .navbar-collapse .user-menu .dropdown-divider{margin:6px 12px!important}}.paper-table .paper-table-row.repo-inactive>:not(.cell-actions){opacity:1!important}.paper-table .paper-table-row.repo-inactive .cell-anon,.paper-table .paper-table-row.repo-inactive .cell-expires,.paper-table .paper-table-row.repo-inactive .cell-views,.paper-table .paper-table-row.repo-inactive .status-sub{opacity:.55}.paper-table .paper-table-row.repo-inactive .repo-name{color:var(--ink-soft)!important}.status-line.status-ended{display:inline-flex!important;align-items:center;gap:5px;padding:2px 8px 2px 6px;border-radius:999px;background:rgba(0,0,0,.06);color:var(--ink-soft)}.status-line.status-ended .status-word{font-size:12.5px!important;font-weight:600!important;color:inherit!important}.status-line.status-ended .status-ended-icon{width:13px;height:13px;flex:none}.status-line.status-ended-expired{background:rgba(245,158,11,.1);color:#b45309}.dark-mode .status-line.status-ended{background:rgba(255,255,255,.08);color:var(--ink-soft)}.dark-mode .status-line.status-ended-expired{background:rgba(245,158,11,.16);color:#fbbf24}.ended-link{font-size:12.5px;color:var(--ink-muted,var(--ink-soft));font-style:italic;white-space:nowrap;margin-right:4px}.ended-action{border:1px solid var(--control-border,var(--border-color));background:0 0;color:var(--color);border-radius:7px;padding:4px 10px;font:500 12.5px var(--font-sans);cursor:pointer;white-space:nowrap}.ended-action:hover{background:rgba(0,0,0,.04)}.dark-mode .ended-action:hover{background:rgba(255,255,255,.06)}.ended-row{display:inline-flex;align-items:center;gap:8px;margin-right:6px}@media (max-width:767px){.paper-table-dashboard .cell-actions>.ended-row{grid-area:link;display:flex;justify-content:space-between;width:100%;margin:0;padding:6px 6px 6px 12px;border-radius:8px;border:1px dashed var(--border-color)}.paper-table-dashboard .paper-table-row.repo-inactive .cell-expires{display:none!important}}input.form-control[type=date]{-webkit-appearance:none;appearance:none;display:block;box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:40px;min-height:40px;line-height:1.25;text-align:left}input.form-control[type=date]::-webkit-date-and-time-value{text-align:left;margin:0;min-height:1.25em}input.form-control[type=date]::-webkit-datetime-edit{padding:0}.hosting-date>input.form-control[type=date]{justify-self:stretch}.paper-table-dashboard .cell-actions>.copy-url{display:inline-flex!important;align-items:center!important;justify-content:center!important;width:36px!important;height:36px!important;min-width:0!important;max-width:none!important;padding:0!important;margin:0!important;border:0!important;border-radius:8px!important;background:0 0!important;color:var(--ink-soft)!important;box-shadow:none!important}.paper-table-dashboard .cell-actions>.copy-url:hover{background:rgba(0,0,0,.05)!important;color:var(--color)!important}.dark-mode .paper-table-dashboard .cell-actions>.copy-url:hover{background:rgba(255,255,255,.07)!important}.paper-table-dashboard .cell-actions>.copy-url .project-type-svg{width:18px;height:18px;margin:0!important}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row{grid-template-columns:minmax(0,1fr) auto auto auto!important;grid-template-areas:"name copy edit more" "meta meta meta meta"!important}.paper-table.paper-table-dashboard .paper-table-row.repo-inactive{grid-template-areas:"name copy edit more" "meta meta meta meta" "link link link link"!important}.paper-table-dashboard .cell-actions>.copy-url{grid-area:copy;align-self:start;width:40px!important;height:40px!important;margin-top:-4px!important;justify-self:auto!important}}.paper-table-dashboard .cell-actions>.copy-url .project-type-svg{width:16px!important;height:16px!important}@media (max-width:767px){.paper-table-dashboard .anon-title{min-width:0}.paper-table.paper-table-dashboard .anon-title .repo-name{display:block!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;word-break:normal!important;overflow-wrap:normal!important}}.ace_editor .ace_marker-layer .ace_selection,.dark-mode .ace_editor .ace_marker-layer .ace_selection{box-shadow:none!important;border-radius:0!important}.ace_editor .ace_marker-layer .ace_selection.ace_br15{box-shadow:inset 0 0 0 1px rgba(170,115,15,.75)!important;border-radius:3px!important}.dark-mode .ace_editor .ace_marker-layer .ace_selection.ace_br15{box-shadow:inset 0 0 0 1px rgba(240,200,90,.7)!important}.ace_editor.ace-chrome .ace_marker-layer .ace_selection,.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection{box-shadow:none!important;border-radius:0!important}.ace_editor.ace-chrome .ace_marker-layer .ace_selection.ace_br15{box-shadow:inset 0 0 0 1px rgba(170,115,15,.75)!important;border-radius:3px!important}.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection.ace_br15{box-shadow:inset 0 0 0 1px rgba(240,200,90,.7)!important;border-radius:3px!important}.file-card .file-card-head{position:relative}.file-card:not(.is-code) .file-card-head{position:sticky}.goto-pop{position:absolute;z-index:30;top:calc(100% + 6px);right:12px;width:260px;max-width:calc(100vw - 24px);margin:0;padding:12px;display:grid;gap:6px;background:var(--paper-card,#fff);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 12px 32px rgba(26,24,21,.16)}.dark-mode .goto-pop{box-shadow:0 12px 32px rgba(0,0,0,.5)}.goto-label{margin:0;font:600 12.5px var(--font-sans);color:var(--color)}.goto-input{width:100%;height:36px;padding:0 10px;border:1px solid var(--control-border,var(--border-color));border-radius:7px;background:var(--bg-color,transparent);color:var(--color);font:500 14px var(--font-mono,ui-monospace,monospace);outline:0}.goto-input:focus{border-color:var(--accent,#1f6b66);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent,#1f6b66) 22%,transparent)}.goto-input[aria-invalid=true]{border-color:#b91c1c}.goto-hint{font-size:12px;color:var(--ink-soft)}.goto-hint.is-error{color:#b91c1c}.dark-mode .goto-input[aria-invalid=true]{border-color:#f87171}.dark-mode .goto-hint.is-error{color:#f87171}.anonymize-form-col .anonymize-submit-bar:has(>.checkout-return-note){flex-wrap:wrap!important;row-gap:6px!important}.anonymize-submit-bar .checkout-return-note{order:3;flex:1 0 100%;margin:0!important;font-size:12px;text-align:center;white-space:normal}.paper-table{overflow:visible!important}.paper-table>.paper-table-head{border-top-left-radius:inherit;border-top-right-radius:inherit}.paper-table>:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.user-settings #settings-billing>.settings-scope{margin-bottom:14px}.user-settings .billing-summary{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:24px}.user-settings .billing-summary-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px}.user-settings .billing-eyebrow{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);margin:0 0 6px}.user-settings .billing-plan-name{font-size:24px;font-weight:600;line-height:1.2;letter-spacing:-.01em;margin:0}.user-settings .billing-plan-meta{font-size:13px;color:var(--ink-muted);margin:6px 0 0}.user-settings .billing-summary .quota-track{height:6px;border-radius:3px;background:var(--border-color)}.user-settings .billing-summary .quota-track .quota-fill{border-radius:3px}.user-settings .billing-summary .quota-unlimited-tag{display:none}.user-settings .billing-summary .quota-usage{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}.user-settings .billing-summary .quota-item:has(.quota-unlimited-tag){display:none}.user-settings .billing-summary .settings-notice{margin:18px 0 0}.user-settings .billing-footnote{font-size:12px;line-height:1.6;color:var(--ink-muted);margin:16px 0 0}.user-settings .billing-section{margin-top:44px}.user-settings .billing-section-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px}.user-settings .billing-section-title{font-size:18px;font-weight:600;letter-spacing:-.005em;margin:0 0 14px}.user-settings .billing-section-title:focus{outline:0}.user-settings .billing-section-head .settings-text-button{font-size:12px;padding:0;min-height:0}.user-settings .billing-offers{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;padding-top:10px}.user-settings .billing-offer{position:relative;display:flex;flex-direction:column;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:24px 22px 22px;min-width:0}.user-settings .billing-offer.is-recommended{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.user-settings .billing-offer-pill{position:absolute;top:-10px;left:20px;font-size:11px;font-weight:600;line-height:20px;padding:0 9px;border-radius:999px;background:var(--accent);color:#fff}body.dark-mode .user-settings .billing-offer-pill{color:#1a1815}.user-settings .billing-offer h3{font-size:16px;font-weight:600;margin:0}.user-settings .billing-offer-price{margin:8px 0 16px;color:var(--ink-muted);font-size:13px;line-height:40px;height:40px}.user-settings .billing-offer-price strong{font-size:32px;font-weight:600;letter-spacing:-.02em;color:var(--color);vertical-align:-2px}.user-settings .billing-offer-list{list-style:none;margin:0 0 20px;padding:0;font-size:13px;line-height:1.5}.user-settings .billing-offer-list li{position:relative;padding-left:22px;margin:0 0 6px}.user-settings .billing-offer-list li::before{content:"";position:absolute;left:3px;top:6px;width:10px;height:5px;border-left:1.5px solid var(--ink-muted);border-bottom:1.5px solid var(--ink-muted);transform:rotate(-45deg)}.user-settings .billing-offer>.btn{margin-top:auto;width:100%}.user-settings .billing-addon-list{display:flex;flex-direction:column;gap:2px;margin:0 -8px 20px}.user-settings .billing-addon{display:grid;grid-template-columns:14px minmax(0,1fr) auto;gap:10px;align-items:start;margin:0;padding:7px 8px;border-radius:6px;cursor:pointer;font-weight:400}.user-settings .billing-addon.is-on,.user-settings .billing-addon:hover{background:var(--paper-bg-alt)}.user-settings .billing-addon input{margin:3px 0 0;accent-color:var(--accent)}.user-settings .billing-addon strong{display:block;font-size:13px;font-weight:600;line-height:1.35}.user-settings .billing-addon small{display:block;font-size:12px;color:var(--ink-muted)}.user-settings .billing-addon-price{font-size:13px;font-weight:600;white-space:nowrap;line-height:1.35}.billing-toggle{display:inline-flex;flex-shrink:0;padding:2px;border:1px solid var(--border-color);border-radius:8px;background:var(--paper-bg-alt)}.billing-toggle button{border:0;background:0 0;border-radius:6px;padding:3px 10px;font-size:12px;line-height:18px;color:var(--ink-muted);cursor:pointer}.billing-toggle button.is-on{background:var(--paper-card);color:var(--color);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.1)}.billing-toggle button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.billing-toggle-save{margin-left:5px;font-weight:600;color:var(--accent)}.user-settings .billing-offer-head{display:flex;justify-content:space-between;align-items:center;gap:12px;height:26px;margin-bottom:4px}.user-settings .billing-offer-head .billing-eyebrow{margin:0}.user-settings .btn-ink.disabled,.user-settings .btn-ink:disabled{background:var(--paper-bg-alt);border-color:var(--border-color);color:var(--ink-muted);opacity:1;cursor:not-allowed}.user-settings .billing-buy{margin-top:10px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:24px}.user-settings .billing-buy-info .billing-offer-price{margin:4px 0 8px}.user-settings .billing-buy-form{display:flex;flex-direction:column;gap:10px;padding-left:32px;border-left:1px solid var(--border-color);align-self:center}.user-settings .billing-buy-form .paper-field-label{margin:0}.user-settings .billing-buy-form .btn{width:100%}.user-settings .billing-buy-form .billing-footnote{margin:0}.user-settings .billing-buy:focus{outline:0}.user-settings .billing-back{font-size:13px;padding:4px 10px;min-height:0;margin-bottom:16px;border-color:transparent;background:0 0;margin-left:-10px}.user-settings .billing-back:hover{background:var(--paper-bg-alt)}.user-settings .billing-buy h3{font-size:18px;font-weight:600;margin:0}.user-settings .billing-buy h3 span{font-size:14px;font-weight:400;color:var(--ink-muted);margin-left:8px}.user-settings .billing-buy-desc{font-size:13px;line-height:1.55;color:var(--ink-muted);margin:0}.user-settings .billing-buy-row{display:flex;gap:12px;align-items:center}.user-settings .billing-buy-row select{flex:1;min-width:0}.user-settings .billing-buy-row .btn{flex-shrink:0}.user-settings .billing-compare{margin-top:16px;font-size:13px}.user-settings .billing-compare summary{cursor:pointer;color:var(--accent);width:max-content;list-style:none;display:flex;align-items:center;gap:6px}.user-settings .billing-compare summary::-webkit-details-marker{display:none}.user-settings .billing-compare summary::before{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s;margin-right:2px}.user-settings .billing-compare[open] summary::before{transform:rotate(45deg)}.user-settings .billing-compare-card{margin-top:12px;padding:6px 20px 8px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px}.user-settings .billing-compare .settings-comparison{width:100%;margin:0;font-size:13px;border-collapse:separate;border-spacing:0}.user-settings .billing-compare .settings-comparison td.is-recommended{border-bottom-color:transparent}.user-settings .billing-compare .settings-comparison td,.user-settings .billing-compare .settings-comparison th{padding:10px 14px;border-bottom:1px solid var(--border-color)}.user-settings .billing-compare .settings-comparison tr>:first-child{padding-left:0}.user-settings .billing-compare .settings-comparison thead th{font-size:14px;font-weight:600;vertical-align:bottom}.user-settings .billing-compare .settings-comparison thead th small{display:block;font-size:12px;font-weight:400;color:var(--ink-muted);margin-top:2px}.user-settings .billing-compare .settings-comparison thead th.is-recommended{border-radius:8px 8px 0 0}.user-settings .billing-compare .settings-comparison tbody tr:last-child td.is-recommended{border-radius:0 0 8px 8px}.user-settings .billing-compare .settings-comparison tbody tr:last-child>*{border-bottom:0}.user-settings .billing-compare .settings-comparison th[scope=row]{color:var(--ink-muted);font-weight:400}.user-settings .billing-compare .settings-comparison .is-recommended{background:var(--accent-soft)}.user-settings .billing-empty{font-size:13px;color:var(--ink-muted);margin:0}.user-settings .billing-history{list-style:none;margin:0;padding:0;border-top:1px solid var(--border-color)}.user-settings .billing-history-head,.user-settings .billing-history-row{display:grid;grid-template-columns:minmax(0,1fr) 160px 120px 88px;gap:16px}.user-settings .billing-history-head{padding:0 0 8px;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-muted)}.user-settings .billing-history-head span:nth-child(n+3){text-align:right}.user-settings .billing-history-row{align-items:baseline;padding:14px 0;border-bottom:1px solid var(--border-color);font-size:13px}.user-settings .billing-history-main strong{display:block;font-weight:600;overflow-wrap:anywhere}.user-settings .billing-history-main strong a{font-weight:500}.user-settings .billing-history-main>span{display:block;font-size:12px;color:var(--ink-muted);margin-top:3px}.user-settings .billing-history-term{color:var(--ink-muted)}.user-settings .billing-history-term:empty::before{content:"—"}.user-settings .billing-history-paid{text-align:right}.user-settings .billing-history-paid small{display:block;color:var(--ink-muted);font-size:12px;margin-top:2px}.user-settings .billing-history-status{text-align:right}.user-settings .billing-history-row.is-ended .billing-history-main strong,.user-settings .billing-history-row.is-ended .billing-history-paid{color:var(--ink-muted)}.user-settings .billing-manage{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:20px;padding:18px 20px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;font-size:13px}.user-settings .billing-manage strong{display:block;font-weight:600}.user-settings .billing-manage p{margin:3px 0 0;color:var(--ink-muted);font-size:12px;line-height:1.55}.user-settings .billing-manage .btn{flex-shrink:0}.user-settings .billing-conference{margin:28px 0 0;font-size:13px;color:var(--ink-muted)}.user-settings .billing-addons{margin-top:40px}.user-settings .billing-subtitle{font-size:13px;font-weight:600;margin:0}.user-settings .billing-addons-head{display:grid;grid-template-columns:minmax(0,1fr) 90px 48px;gap:16px;align-items:baseline;margin-bottom:8px}.user-settings .billing-addons-head span{text-align:right}.user-settings .billing-addons-head span{font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-muted)}.user-settings .billing-addon-rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--border-color)}.user-settings .billing-addon-rows li{display:grid;grid-template-columns:minmax(0,1fr) 90px 48px;gap:16px;align-items:center;padding:11px 0;border-bottom:1px solid var(--border-color);font-size:13px}.user-settings .billing-addon-rows strong{font-weight:600;margin-right:8px}.user-settings .billing-addon-rows div span{color:var(--ink-muted)}.user-settings .billing-addon-rows .billing-addon-price{text-align:right;font-weight:500}.user-settings .billing-addon-rows .settings-text-button{justify-self:end;padding:0;min-height:0;font-size:13px;font-weight:600}body.dark-mode .settings-status.is-active{background:rgba(124,199,190,.16);color:#d2f1ed;box-shadow:inset 0 0 0 1px rgba(124,199,190,.45)}body.dark-mode .user-settings .billing-offer.is-recommended{border-color:rgba(124,199,190,.6);box-shadow:none}body.dark-mode .user-settings .billing-summary .quota-track{background:rgba(255,255,255,.2)}@media (max-width:900px){.user-settings .billing-offers{grid-template-columns:1fr;gap:24px}.user-settings .billing-history-head{display:none}.user-settings .billing-history-row{grid-template-columns:minmax(0,1fr) auto;gap:4px 12px}.user-settings .billing-history-term:empty{display:none}.user-settings .billing-addon-rows li{grid-template-columns:minmax(0,1fr) auto auto;gap:12px}.user-settings .billing-addon-rows strong{display:block}.user-settings .billing-addon-rows .settings-text-button{min-height:44px;padding:0 4px}.user-settings .billing-offer-head{height:auto;flex-wrap:wrap;row-gap:8px}.user-settings .billing-history-row{grid-template-columns:minmax(0,1fr) auto}.user-settings .billing-history-term{grid-column:1;grid-row:2}.user-settings .billing-history-paid{grid-column:2;grid-row:2;text-align:right;color:var(--ink-muted);font-size:12px}.user-settings .billing-buy{grid-template-columns:1fr;gap:20px}.user-settings .billing-buy-form{padding-left:0;border-left:0;padding-top:20px;border-top:1px solid var(--border-color)}.user-settings .billing-history-main{grid-column:1;grid-row:1}.user-settings .billing-history-status{grid-column:2;grid-row:1}.user-settings .billing-history-term{font-size:12px;color:var(--ink-muted)}.user-settings .billing-buy-row,.user-settings .billing-manage{flex-direction:column;align-items:stretch}}@media (max-width:600px){.user-settings .billing-summary-head{flex-direction:column;align-items:stretch}.user-settings .billing-summary .quota-usage{grid-template-columns:1fr;gap:16px}.user-settings .billing-summary-actions .btn{width:100%}.settings-nav{overflow-x:auto;gap:20px;scrollbar-width:none;padding-right:16px}.settings-nav button{white-space:nowrap;flex-shrink:0}}.hosting-options{border:0;padding:0;margin:14px 0 0;min-width:0}.hosting-options-title{font-size:13px;font-weight:600;margin:0 0 8px;padding:0}.hosting-option{display:grid;grid-template-columns:16px minmax(0,1fr) auto;gap:10px;align-items:start;margin:0 0 8px;padding:12px 14px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:8px;cursor:pointer;font-weight:400}.hosting-option:hover:not(.is-selected){border-color:color-mix(in srgb,var(--accent) 45%,var(--border-color))}.hosting-option.is-selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:var(--accent-soft)}.hosting-option input{width:16px;height:16px;margin:1px 0 0;accent-color:var(--accent)}.hosting-subhead{font-size:13px;font-weight:600;margin:22px 0 10px;padding-top:18px;border-top:1px solid var(--border-color)}.hosting-option-body strong{display:block;font-size:13px;font-weight:600;line-height:1.35}.hosting-option-body small{display:block;font-size:12px;line-height:1.45;color:var(--ink-muted);margin-top:2px}.hosting-option-price{text-align:right;white-space:nowrap;line-height:1.2;min-width:64px}.hosting-limit{margin:12px 0 0;padding:10px 12px;border-radius:8px;background:rgba(217,119,6,.08);border:1px solid rgba(217,119,6,.28);font-size:13px;font-weight:500}body.dark-mode .hosting-limit{background:rgba(251,191,36,.1);border-color:rgba(251,191,36,.3)}.hosting-cycle{margin-top:8px}.hosting-option-price strong{display:block;font-size:15px;font-weight:600}.hosting-option-price small{display:block;font-size:12px;color:var(--ink-muted)}.hosting-payment>.hosting-limit:first-child{margin-top:4px}.hosting-payment{margin-bottom:18px}.hosting-payment .capacity-options summary,.inline-hosting .capacity-options summary{list-style:none;display:inline-flex;align-items:center;gap:6px;color:var(--accent)}.hosting-payment .capacity-options summary::-webkit-details-marker{display:none}.hosting-payment .capacity-options summary::before{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s}.hosting-payment .capacity-options[open] summary::before{transform:rotate(45deg)}.inline-hosting .hosting-terms{font-size:12px;color:var(--ink-muted);margin:4px 0 0} \ No newline at end of file + */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:'Font Awesome 5 Brands';font-style:normal;font-weight:400;font-display:block;src:url(../fonts/fa-brands-400.eot);src:url(../fonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-brands-400.woff2) format("woff2"),url(../fonts/fa-brands-400.woff) format("woff"),url(../fonts/fa-brands-400.ttf) format("truetype"),url(../fonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:'Font Awesome 5 Brands';font-weight:400}@font-face{font-family:'Font Awesome 5 Free';font-style:normal;font-weight:400;font-display:block;src:url(../fonts/fa-regular-400.eot);src:url(../fonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-regular-400.woff2) format("woff2"),url(../fonts/fa-regular-400.woff) format("woff"),url(../fonts/fa-regular-400.ttf) format("truetype"),url(../fonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:'Font Awesome 5 Free';font-weight:400}@font-face{font-family:'Font Awesome 5 Free';font-style:normal;font-weight:900;font-display:block;src:url(../fonts/fa-solid-900.eot);src:url(../fonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-solid-900.woff2) format("woff2"),url(../fonts/fa-solid-900.woff) format("woff"),url(../fonts/fa-solid-900.ttf) format("truetype"),url(../fonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:'Font Awesome 5 Free';font-weight:900}.nb-notebook{line-height:1.5}.nb-stderr,.nb-stdout{white-space:pre-wrap;margin:1em 0;padding:.1em .5em}.nb-stderr{background-color:#faa}.nb-cell+.nb-cell{margin-top:.5em}.nb-output table{border:1px solid #000;border-collapse:collapse}.nb-output th{font-weight:700}.nb-output td,.nb-output th{border:1px solid #000;padding:.25em;text-align:left;vertical-align:middle;border-collapse:collapse}.nb-notebook blockquote{border-left:5px solid #ccc;margin-left:0;padding-left:1em}.nb-cell{position:relative}.nb-raw-cell{white-space:pre-wrap;background-color:#f5f2f0;font-family:Consolas,Monaco,'Andale Mono',monospace;padding:1em;margin:.5em 0}.nb-output{min-height:1em;width:100%;overflow-x:scroll;border-right:1px dotted #ccc}.nb-output img{max-width:100%}.nb-input:before,.nb-output:before{position:absolute;font-family:monospace;color:#999;left:-7.5em;width:7em;text-align:right}.nb-input:before{content:"In [" attr(data-prompt-number) "]:"}.nb-output:before{content:"Out [" attr(data-prompt-number) "]:"}// Fix pandas dataframe formatting div[style="max-height:1000px;max-width:1500px;overflow:auto;"]{max-height:none!important}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,math,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.18.10"}.katex .katex-mathml{border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.katex-newline{display:block}.katex .katex-base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .katex-base,.katex .katex-strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .katex-vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .katex-thinbox{display:inline-flex;flex-direction:row;max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .katex-hdashline,.katex .katex-hline,.katex .katex-overline .overline-line,.katex .katex-rule,.katex .katex-underline .underline-line,.katex .mfrac .frac-line{min-height:1px}.katex .mspace{display:inline-block}.katex .katex-smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.katex-inner,.katex .llap>.katex-inner,.katex .rlap>.katex-inner{position:absolute}.katex .clap>.katex-fix,.katex .llap>.katex-fix,.katex .rlap>.katex-fix{display:inline-block}.katex .llap>.katex-inner{right:0}.katex .clap>.katex-inner,.katex .rlap>.katex-inner{left:0}.katex .clap>.katex-inner>span{margin-left:-50%;margin-right:50%}.katex .katex-rule{border:0 solid;display:inline-block;position:relative}.katex .katex-hline,.katex .katex-overline .overline-line,.katex .katex-underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .katex-hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.katex-root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .katex-sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .katex-sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .katex-sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .katex-sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .katex-sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .katex-sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .katex-sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .katex-sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .katex-sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .katex-sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .katex-sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .katex-sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .katex-sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .katex-sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .katex-sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .katex-sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .katex-sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .katex-sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .katex-sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .katex-sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .katex-sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .katex-sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .katex-sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .katex-sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .katex-sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .katex-sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .katex-sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .katex-sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .katex-sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .katex-sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .katex-sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .katex-sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .katex-sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .katex-sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .katex-sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .katex-sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .katex-sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .katex-sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .katex-sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .katex-sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .katex-sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .katex-sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .katex-sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .katex-sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .katex-sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .katex-sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .katex-sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .katex-sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .katex-sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .katex-sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .katex-sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .katex-sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .katex-sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .katex-sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .katex-sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .katex-sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .katex-sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .katex-sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .katex-sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .katex-sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .katex-sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .katex-sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .katex-sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .katex-sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .katex-sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .katex-sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .katex-sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .katex-sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .katex-sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .katex-sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .katex-sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .katex-sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .katex-sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .katex-sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .katex-sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .katex-sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .katex-sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .katex-sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .katex-sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .katex-sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .katex-sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .katex-sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .katex-sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .katex-sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .katex-sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .katex-sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .katex-sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .katex-sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .katex-sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .katex-sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .katex-sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .katex-sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .katex-sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .katex-sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .katex-sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .katex-sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .katex-sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .katex-sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .katex-sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .katex-sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .katex-sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .katex-sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .katex-sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .katex-sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .katex-sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .katex-sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .katex-sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .katex-sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .katex-sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .katex-sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .katex-sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .katex-sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .katex-sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .katex-sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .katex-sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .katex-sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .katex-sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .katex-sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .katex-sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .katex-sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .katex-sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .katex-accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .katex-accent .accent-body{position:relative}.katex .katex-accent .accent-body:not(.accent-full){width:0}.katex .katex-overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .katex-stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .katex-stretchy:after,.katex .katex-stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .katex-sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .reflectbox{display:inline-block;transform:scaleX(-1)}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.katex-tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.katex-tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.mermaid{text-align:center;margin:1em 0;overflow:auto}.mermaid svg{max-width:100%;height:auto}.dark-mode .mermaid{filter:invert(1) hue-rotate(180deg)}.dark-mode .mermaid svg{background:0 0}.dark-mode .mermaid .edgeLabel,.dark-mode .mermaid .nodeLabel{filter:invert(1) hue-rotate(180deg)}.mermaid .node circle,.mermaid .node ellipse,.mermaid .node polygon,.mermaid .node rect{stroke-width:2px}.mermaid .flowchart-link{stroke-width:2px}.mermaid .actor{fill:#f9f9f9;stroke:#333;stroke-width:2px}.mermaid .messageLine0,.mermaid .messageLine1{stroke:#333;stroke-width:1.5px}.mermaid .section0,.mermaid .section1,.mermaid .section2,.mermaid .section3{opacity:.8}.mermaid .pieChart .slice{opacity:.9}.markdown-body .mermaid{background:0 0;border:none;padding:10px}.mermaid .error{color:#d32f2f;font-family:monospace;font-size:12px;padding:10px;border:1px solid #d32f2f;border-radius:4px;background-color:#ffebee}@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff')}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1.5;color:#24292e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .pl-c{color:#6a737d}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#005cc5}.markdown-body .pl-e,.markdown-body .pl-en{color:#6f42c1}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292e}.markdown-body .pl-ent{color:#22863a}.markdown-body .pl-k{color:#d73a49}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#032f62}.markdown-body .pl-smw,.markdown-body .pl-v{color:#e36209}.markdown-body .pl-bu{color:#b31d28}.markdown-body .pl-ii{color:#fafbfc;background-color:#b31d28}.markdown-body .pl-c2{color:#fafbfc;background-color:#d73a49}.markdown-body .pl-c2::before{content:"^M"}.markdown-body .pl-sr .pl-cce{font-weight:700;color:#22863a}.markdown-body .pl-ml{color:#735c0f}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:#005cc5}.markdown-body .pl-mi{font-style:italic;color:#24292e}.markdown-body .pl-mb{font-weight:700;color:#24292e}.markdown-body .pl-md{color:#b31d28;background-color:#ffeef0}.markdown-body .pl-mi1{color:#22863a;background-color:#f0fff4}.markdown-body .pl-mc{color:#e36209;background-color:#ffebda}.markdown-body .pl-mi2{color:#f6f8fa;background-color:#005cc5}.markdown-body .pl-mdr{font-weight:700;color:#6f42c1}.markdown-body .pl-ba{color:#586069}.markdown-body .pl-sg{color:#959da5}.markdown-body .pl-corl{text-decoration:underline;color:#032f62}.markdown-body .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}.markdown-body a{background-color:transparent;-webkit-text-decoration-skip:objects}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit}.markdown-body strong{font-weight:bolder}.markdown-body h1{font-size:2em;margin:.67em 0}.markdown-body img{border-style:none}.markdown-body svg:not(:root){overflow:hidden}.markdown-body hr{box-sizing:content-box;height:0;overflow:visible}.markdown-body input{font:inherit;margin:0}.markdown-body input{overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#0366d6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{height:0;margin:15px 0;overflow:hidden;background:0 0;border:0;border-bottom:1px solid #dfe2e5}.markdown-body hr::before{display:table;content:""}.markdown-body hr::after{display:table;clear:both;content:""}.markdown-body table{border-spacing:0;border-collapse:collapse}.markdown-body td,.markdown-body th{padding:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:0;margin-bottom:0}.markdown-body h1{font-size:32px;font-weight:600}.markdown-body h2{font-size:24px;font-weight:600}.markdown-body h3{font-size:20px;font-weight:600}.markdown-body h4{font-size:16px;font-weight:600}.markdown-body h5{font-size:14px;font-weight:600}.markdown-body h6{font-size:12px;font-weight:600}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{padding-left:0;margin-top:0;margin-bottom:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code{font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:12px}.markdown-body .octicon{vertical-align:text-bottom}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .pl-3{padding-left:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body::before{display:table;content:""}.markdown-body::after{display:table;clear:both;content:""}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:0}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e1e4e8;border:0}.markdown-body blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:solid 1px #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1{padding-bottom:.3em;font-size:2em;border-bottom:1px solid #eaecef}.markdown-body h2{padding-bottom:.3em;font-size:1.5em;border-bottom:1px solid #eaecef}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#6a737d}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body code{padding:0;padding-top:.2em;padding-bottom:.2em;margin:0;font-size:85%;background-color:rgba(27,31,35,.05);border-radius:3px}.markdown-body .full-commit .btn-outline:not(:disabled):hover{color:#005cc5;border-color:#005cc5}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:solid 1px #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1}.markdown-body :checked+.radio-label{position:relative;z-index:1;border-color:#0366d6}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee}.dark-mode{--canvas-bg-color:#161412;--sidebar-bg-color:#1C1A17;--main-bg-color:#161412;--header-bg-color:#161412;--hover-bg-color:rgba(255, 255, 255, 0.05);--header-color:#FAF9F6;--color:#D6D1C5;--link-color:#7CC7BE;--link-hover-color:#A8DDD6;--border-color:#423D37;--border-soft:#2A2825;--btn-color:#FAF9F6;--input-color:#E6E1D8;--input-bg:#25231F;--primary-bg:#FAF9F6;--primary-hover-bg:#FFFFFF;--primary-color:#1A1815;--primary-active-color:#1A1815;--accent:#7CC7BE;--accent-soft:rgba(124, 199, 190, 0.12);--ink-faint:#8A857C;--status-ready:#5FB27A;--status-progress:#E0A94A;--status-error:#F08A82;--status-inactive:#8A857C;--status-error-soft:rgba(240, 138, 130, 0.08);--status-error-soft-hover:rgba(240, 138, 130, 0.14);--admin-nav-bg:#1A1918;--admin-nav-active:rgba(124, 199, 190, 0.12);--admin-stat-bg:#25231F;--paper-card:#2C2925;--paper-bg-alt:#211E1B;--highlight:#3A341E;background-color:var(--canvas-bg-color);color:var(--color);--bucket-error-bg:rgba(255, 139, 123, 0.10);--bucket-error-fg:var(--status-error);--bucket-error-bd:rgba(255, 139, 123, 0.28);--bucket-error-dot:var(--status-error);--bucket-warn-bg:rgba(255, 211, 122, 0.10);--bucket-warn-fg:var(--status-progress);--bucket-warn-bd:rgba(255, 211, 122, 0.28);--bucket-warn-dot:var(--status-progress);--bucket-info-bg:rgba(152, 200, 168, 0.10);--bucket-info-fg:#98C8A8;--bucket-info-bd:rgba(152, 200, 168, 0.28);--bucket-info-dot:#98C8A8;--card-shadow:0 1px 2px rgba(0, 0, 0, 0.35),0 6px 18px rgba(0, 0, 0, 0.30);--card-shadow-hover:0 2px 4px rgba(0, 0, 0, 0.45),0 12px 28px rgba(0, 0, 0, 0.40);--ink-soft:#ADA699;--ink-muted:#A39D92}body{--canvas-bg-color:#FAF9F6;--sidebar-bg-color:#FFFFFF;--header-bg-color:#FAF9F6;--header-color:#1A1815;--main-bg-color:#FAF9F6;--hover-bg-color:rgba(26, 24, 21, 0.05);--input-color:#1A1815;--color:#1A1815;--link-color:#1F6A64;--link-hover-color:#17544F;--border-color:#E6E1D8;--border-soft:#EDE9E1;--btn-color:#1A1815;--input-bg:#FFFFFF;--primary-bg:#1A1815;--primary-hover-bg:#000000;--primary-color:#FAF9F6;--primary-active-color:#FAF9F6;--accent:#1F6A64;--accent-soft:#E4F0EE;--ink-muted:#6F6A61;--ink-faint:#8A857C;--ink-soft:#4A4641;--paper-bg-alt:#F3F1EC;--paper-card:#FFFFFF;--highlight:#FFF3C4;--status-ready:#2F7A44;--status-progress:#946512;--status-error:#B42318;--status-inactive:#8A857C;--status-error-soft:rgba(180, 35, 24, 0.04);--status-error-soft-hover:rgba(180, 35, 24, 0.08);--radius-control:6px;--radius-button:8px;--button-height:36px;--button-font-size:14px;--button-line-height:20px;--button-padding-x:13px;--button-compact-height:32px;--radius-surface:10px;--font-serif:'Instrument Serif','Iowan Old Style',Georgia,serif;--font-sans:'Inter',ui-sans-serif,system-ui,-apple-system,sans-serif;--font-mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;background-color:var(--canvas-bg-color);color:var(--color);font-family:var(--font-sans);font-size:14px;letter-spacing:-.005em;line-height:1.5;overflow-y:hidden;--bucket-error-bg:#FCEDED;--bucket-error-fg:#8A1F1F;--bucket-error-bd:#F0C4C4;--bucket-error-dot:#B53737;--bucket-warn-bg:#FFF3DF;--bucket-warn-fg:#7A4D00;--bucket-warn-bd:#F0D8A0;--bucket-warn-dot:#B07A2F;--bucket-info-bg:#EAF2EC;--bucket-info-fg:#2C5D3A;--bucket-info-bd:#C5DCCD;--bucket-info-dot:#5B8D6B;--card-shadow:0 1px 2px rgba(26, 24, 21, 0.04),0 4px 14px rgba(26, 24, 21, 0.05);--card-shadow-hover:0 1px 2px rgba(26, 24, 21, 0.06),0 8px 24px rgba(26, 24, 21, 0.08);--page-max:1048px;--page-gutter:32px;--control-h:40px;--page-top:32px;--crumb-h:18px;--crumb-gap:8px}.fadeIn{opacity:1;animation-name:fadeInOpacity;animation-iteration-count:1;animation-timing-function:ease-in;animation-duration:.6s}@keyframes fadeInOpacity{0%{opacity:0}100%{opacity:1}}.btn:active,.btn:focus{box-shadow:none}:focus:not(:focus-visible){outline:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:focus-visible,.dropdown-item:focus-visible,.form-control:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:none}input:active,input:hover{box-shadow:none!important}input:-webkit-autofill,input:-webkit-autofill:focus,input:-webkit-autofill:hover,select:-webkit-autofill,select:-webkit-autofill:focus,select:-webkit-autofill:hover,textarea:-webkit-autofill,textarea:-webkit-autofill:focus,textarea:-webkit-autofill:hover{border-color:var(--border-color);-webkit-text-fill-color:var(--color);-webkit-box-shadow:none;transition:background-color 1000s ease-in-out 0s}.form-control,input:-internal-autofill-selected{color:var(--input-color);background-color:var(--input-bg)!important;border-color:var(--border-color)}.form-control:focus{border-color:var(--border-color)}body,html{position:relative;height:100%;overflow-x:hidden}#app{flex:1 1 auto;min-height:0}.app-header{flex:0 0 auto}@media (min-width:992px){.app-header.is-contained .navbar{padding-left:max(40px,calc((100% - 1140px)/ 2 + 32px))!important;padding-right:max(40px,calc((100% - 1140px)/ 2 + 32px))!important}}@media (max-width:575.98px){.app-header .navbar.navbar-expand-lg:has(>.navbar-collapse.collapsing),.app-header .navbar.navbar-expand-lg:has(>.navbar-collapse.show){flex-wrap:wrap!important}}.app-view{display:block;flex:1 1 auto;min-height:0;overflow-x:hidden!important;overflow-y:auto!important;max-width:100%}.markdown-body a,a{color:var(--link-color)}.markdown-body a:hover,a:hover{text-decoration:none;color:var(--link-hover-color)}.dropdown-menu a.dropdown-item{color:var(--color)}.dropdown-menu a.dropdown-item:hover{color:var(--color);text-decoration:none}.markdown-body .emoji{height:1.3em;margin:0;vertical-align:text-bottom}.navbar.navbar-expand-lg{background:var(--header-bg-color)!important;border-bottom:1px solid var(--border-color);transition:background-color .5s ease;padding:10px max(20px,calc((100vw - 1200px)/ 2));font-family:var(--font-sans)}.navbar-toggler{border:1px solid var(--border-color)!important;color:var(--color)!important;width:44px;height:40px;padding:0!important;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-control)!important}.navbar-toggler .navbar-toggler-icon{width:22px;height:22px;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='%231A1815' stroke-width='2' stroke-linecap='round' d='M4 8h22M4 15h22M4 22h22'/%3E%3C/svg%3E")!important}.navbar .navbar-nav{align-items:center}.navbar .nav-link{display:inline-flex;align-items:center;font-size:13px;color:var(--ink-muted)!important;padding:6px 0!important;margin:0 12px;border-bottom:1px solid transparent;letter-spacing:-.005em;line-height:1}.navbar .nav-link:hover{color:var(--color)!important}.navbar .nav-link.nav-icon{padding:0!important;margin:0 8px;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px}.navbar .nav-link .fa,.navbar .nav-link .fab{font-size:15px;line-height:1}.navbar #navbarSupportedContent{align-items:center}.navbar-brand{font-family:var(--font-serif)!important;font-size:20px!important;letter-spacing:-.01em;color:var(--color)!important;padding-right:18px;margin-right:12px;border-right:1px solid var(--border-color)}.navbar-brand em,.navbar-brand i{font-style:italic;font-weight:400}.navbar-dark .navbar-toggler{border-color:var(--border-color);color:var(--color)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='%231A1815' stroke-width='2' stroke-linecap='round' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar .btn-signin{display:inline-flex;align-items:center;height:32px;padding:0 14px!important;margin-left:6px;border:1px solid var(--border-color);border-radius:var(--radius-control);font-size:13px;font-weight:500;line-height:1}.navbar .btn-signin:hover{filter:brightness(.94)}.navbar .nav-support{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;order:3;gap:6px;min-height:32px;margin-left:4px;padding:0 10px;border:1px solid transparent;border-radius:var(--radius-control);font-size:13px;text-decoration:none}.navbar .nav-support:hover{background:var(--hover-bg-color);color:var(--color)}.navbar button.nav-link{background:0 0;border:0;cursor:pointer}.navbar .nav-link:focus-visible,.navbar .nav-support:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-control)}.navbar .nav-signin-m{display:none}@media (min-width:992px){.navbar>.nav-support{display:none!important}}.navbar .nav-support-inline{display:inline-flex!important;align-items:center;gap:6px}.navbar .nav-support-inline .ui-icon{width:15px;height:15px}@media (max-width:991px){.navbar .nav-signin-m{order:0;margin-right:8px;border:1px solid var(--border-color);border-radius:var(--radius-control);font-size:13px;text-decoration:none}.navbar .nav-support{order:0;width:44px;min-height:44px;margin:0 8px 0 auto;padding:0}.navbar .nav-support-label{display:none}}.navbar .user-chip{display:inline-flex!important;align-items:center;gap:8px;padding:4px 12px 4px 6px!important;margin-left:6px;border:1px solid var(--border-color);border-radius:999px;background:var(--sidebar-bg-color);font-size:13px;color:var(--color)!important}.navbar .user-chip:hover{background:var(--hover-bg-color)}.navbar .user-chip img{width:22px;height:22px}.navbar .user-chip .user-chip-name{color:var(--color);font-weight:500}.navbar .user-chip::after{color:var(--ink-muted)}#navbarSupportedContent{padding-right:0}.generalMessage{display:block;text-align:center;color:var(--header-color)}.paper-landing{overflow-x:clip}.paper-wrap{margin-left:auto;margin-right:auto;padding-left:0;padding-right:0}.paper-eyebrow{text-transform:uppercase}.paper-hero{margin:0 auto;padding:40px 32px 0;display:grid;grid-template-columns:.95fr 1.05fr;gap:48px;align-items:center}.paper-hero h1.hero-title{font-family:var(--font-serif);font-weight:400;font-size:clamp(2.6rem,5.4vw,4.4rem);line-height:1.02;letter-spacing:-.025em;margin:14px 0 0;color:var(--color);text-wrap:balance}.paper-hero h1 .accent{color:var(--accent);font-style:italic}.hero-subtitle{margin-top:18px;font-size:18px;line-height:1.55;color:var(--ink-soft);max-width:30em;text-wrap:pretty}.paper-cta-row{display:flex;flex-wrap:wrap;gap:18px;align-items:center;margin-top:26px}.btn-hero{display:inline-flex;align-items:center;font-family:var(--font-sans);border:1px solid var(--color);font-weight:500;letter-spacing:-.005em;transition:background .15s,border-color .15s,transform .1s}.btn-hero:hover{border-color:var(--primary-hover-bg);text-decoration:none;transform:translateY(-1px);filter:brightness(.94)}.btn-hero-ghost{background:0 0;border:1px solid var(--border-color);color:var(--color);padding:12px 20px;font-size:14px;font-weight:500;border-radius:var(--radius-control)}.btn-hero-ghost:hover{background:var(--hover-bg-color);border-color:var(--color);color:var(--color)}.paper-link-arrow{text-decoration:underline;text-underline-offset:4px;text-decoration-color:color-mix(in srgb,var(--accent) 55%,transparent)!important}.paper-link-arrow:hover{color:var(--color);text-decoration-color:var(--color)}.paper-reassure{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 18px}.paper-reassure li{white-space:nowrap}@media (min-width:1100px){.paper-reassure{flex-wrap:wrap;column-gap:18px!important;row-gap:6px!important}}.paper-reassure li::before{font-size:14px;font-weight:600;color:var(--ink-soft)!important;content:""!important;display:inline-block;width:14px;height:14px;margin-right:7px;vertical-align:-2px;background:var(--accent);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/contain no-repeat}.paper-frame{border-radius:var(--radius-surface);background:var(--paper-card);overflow:hidden;box-shadow:0 0 0 1px var(--border-color),0 12px 32px rgba(40,30,20,.08)!important}.paper-frame-bar{display:flex;align-items:center;gap:8px;padding:0 12px;border-bottom:1px solid var(--border-soft);font-family:var(--font-mono);font-size:11px;justify-content:flex-start!important}.paper-frame-bar .dots{gap:5px}.paper-frame-bar .dots i{width:9px;height:9px;border-radius:50%;background:color-mix(in srgb,var(--ink-muted) 55%,transparent)!important}.paper-frame-bar .url{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-frame img{display:block;width:100%;height:auto}.paper-hero-shot .paper-frame{width:100%}.hero-mock{display:grid;grid-template-columns:168px 1fr;min-height:360px;font-family:var(--font-sans);text-align:left}.hero-mock-tree{background:var(--paper-bg-alt);border-right:1px solid var(--border-soft);padding:12px 8px}.hero-mock-tree-title{font-size:11px;font-weight:600;padding:0 8px 8px}.hero-mock-row{display:flex;align-items:center;gap:7px;height:26px;padding:0 8px;border-radius:var(--radius-control);font-size:12.5px;color:var(--ink-soft);white-space:nowrap}.hero-mock-row svg{width:14px;height:14px;flex-shrink:0;fill:none;stroke:var(--ink-muted);stroke-width:1.2;stroke-linejoin:round}.hero-mock-row.is-active{color:var(--color);font-weight:500}.hero-mock-doc{min-width:0;background:var(--paper-card)}.hero-mock-doc-bar{display:flex;align-items:center;justify-content:space-between;height:40px;padding:0 18px;border-bottom:1px solid var(--border-soft);font-size:13px}.hero-mock-doc-bar span{font-size:12px}.hero-mock-doc-body{padding:18px 22px 22px;font-size:13.5px;line-height:1.6;color:var(--color)}.hero-mock-doc-body p{margin:0 0 10px}.hero-mock-h1{font-size:22px;font-weight:600;letter-spacing:-.01em;padding-bottom:8px;margin-bottom:12px;border-bottom:1px solid var(--border-soft)}.hero-mock-h2{font-size:15px;font-weight:600;margin:16px 0 8px}.hero-mock-doc-body pre{margin:0 0 12px;padding:10px 12px;background:var(--paper-bg-alt);border:1px solid var(--border-soft);border-radius:var(--radius-control);font-family:var(--font-mono);font-size:12px;line-height:1.6;color:var(--color)}.hero-mock .redact{font-family:var(--font-mono);font-size:.88em}@media (max-width:575px){.hero-mock{grid-template-columns:1fr;min-height:0}.hero-mock-tree{display:none}}.hero-mock .is-active::before{left:0!important}.paper-stats{padding-top:16px;border-top:1px solid var(--border-color)}.paper-stats-meta-left{display:inline-flex;align-items:center;gap:8px}.paper-stats-meta{display:flex;justify-content:space-between;align-items:center;text-transform:uppercase;margin-bottom:14px}.paper-stats-meta-right{display:inline-flex;align-items:center;gap:6px}.paper-stats-dot{display:inline-block;width:6px;height:6px;border-radius:50%;box-shadow:0 0 0 3px var(--accent-soft)!important}.paper-stats-grid{display:grid;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);grid-template-columns:repeat(4,minmax(0,1fr))!important}.paper-stats-grid .paper-stat-card:first-child{padding-left:0!important}@media (max-width:767px){.paper-stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}@media (max-width:767px){.paper-stats-grid .paper-stat-card:nth-child(odd){padding-left:0!important}}.dark-mode .paper-stats-grid .paper-stat-card{border-color:#3a3631!important}.paper-stat-card{display:flex;flex-direction:column;padding:22px 26px 20px 0;margin-right:26px;border-right:1px solid var(--border-color);min-width:0}.paper-stat-card:last-child{border-right:0;margin-right:0;padding-right:0}.paper-stat-value{line-height:1;color:var(--color);font-variant-numeric:tabular-nums;font-size:40px!important;font-weight:400!important}.paper-stat-label{margin-top:6px;font-size:13px}.paper-stat-value.is-pending{color:var(--ink-faint)}.paper-stat-delta{margin-top:6px!important;font-family:var(--font-sans)!important;font-size:13px!important}.paper-section-head{display:grid;grid-template-columns:1fr 1.4fr;gap:40px;align-items:start}.paper-section-head>p{padding-top:34px}@media (max-width:991px){.paper-section-head>p{padding-top:0}}.paper-qa h2,.paper-section-head h2{font-family:var(--font-serif);font-weight:400;font-size:clamp(2rem,4.2vw,3.25rem);line-height:1.05;letter-spacing:-.02em;margin:10px 0 0;color:var(--color);text-wrap:balance}.paper-feature-title em,.paper-qa h2 em,.paper-section-head h2 em{font-style:italic;color:var(--accent)}.paper-section-head p{font-size:15px;color:var(--ink-soft);max-width:32em;margin:0;line-height:1.6}.paper-features{padding-top:28px;border-top:1px solid var(--border-color);display:grid;align-items:start;grid-template-columns:1fr 1.4fr!important;gap:40px!important}.paper-features-list{display:flex;flex-direction:column}.paper-feature{border-left:2px solid var(--border-soft);padding:16px 0 16px 20px;transition:border-color .2s}.paper-feature.is-on{border-left-color:var(--accent)}.paper-feature-tab{all:unset;display:block;position:relative;width:100%;cursor:pointer;color:inherit;border-radius:4px}.paper-feature:not(.is-on) .paper-feature-tab::after{content:"";position:absolute;right:4px;bottom:12px;width:8px;height:8px;border-right:1.5px solid var(--ink-muted);border-bottom:1.5px solid var(--ink-muted);transform:rotate(45deg);border-color:var(--ink-soft)!important;border-width:0 2px 2px 0!important}.paper-feature:not(.is-on) .paper-feature-tab:hover::after{border-color:var(--color)}.paper-feature.is-on .paper-feature-tab::after{content:"";position:absolute;right:4px;bottom:10px;width:8px;height:8px;border-right:1.5px solid var(--color);border-bottom:1.5px solid var(--color);transform:rotate(-135deg)}.paper-feature-tab:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.paper-feature-tab .paper-eyebrow{display:block;margin-bottom:6px;font-size:12px!important}.paper-feature-title{display:block;font-family:var(--font-serif);font-size:24px;line-height:1.15;letter-spacing:-.015em;color:var(--color);transition:color .2s}.paper-feature-title em{color:inherit}.paper-feature-tab:hover .paper-feature-title,.paper-feature.is-on .paper-feature-title{color:var(--color)}.paper-feature.is-on .paper-feature-title em{color:var(--accent)}.paper-feature-more{display:none}.paper-feature.is-on .paper-feature-more{display:block}.paper-feature-more .paper-feature-title-m{display:none}.paper-feature-more p{font-size:15px;color:var(--ink-soft);line-height:1.55;margin:10px 0 12px;max-width:30em}.paper-features-stage{min-width:0}.paper-feature-panel{animation:paper-feature-in .25s ease-out}@keyframes paper-feature-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.paper-feature-panel{animation:none}}.paper-qa{display:grid;grid-template-columns:1fr 1.4fr;gap:40px;align-items:start}.paper-qa h2{margin-bottom:12px}.paper-qa .q{border-top:1px solid var(--border-color);padding:18px 0}.paper-qa .q:last-child{border-bottom:1px solid var(--border-color)}.paper-qa .q a::after{content:none;display:inline-block;width:7px;height:7px;margin-left:10px;border-right:1.5px solid var(--ink-muted);border-bottom:1.5px solid var(--ink-muted);transform:translateY(-2px) rotate(-45deg);transition:transform .15s,border-color .15s}.paper-qa .q a:hover::after{border-color:var(--accent);transform:translate(3px,-2px) rotate(-45deg)}.paper-qa .q a:hover{text-underline-offset:3px;color:var(--accent);text-decoration:none}.paper-qa .q a{display:block;font-weight:500;font-size:15px;color:var(--color);margin-bottom:6px}.paper-qa .q p{margin:0;font-size:14px;color:var(--ink-soft);line-height:1.6}@media (max-width:1100px){.paper-hero-shot .paper-frame{width:100%}}@media (max-width:767px){.paper-hero-shot{max-height:none!important;overflow:visible!important;-webkit-mask-image:none!important;mask-image:none!important}}@media (max-width:991px){.paper-hero{grid-template-columns:1fr;gap:36px;padding-top:40px}.paper-qa,.paper-section-head{grid-template-columns:1fr;gap:16px}.paper-stat-card:nth-child(2n){border-right:0;margin-right:0;padding-right:0}.paper-stat-card:nth-child(-n+2){border-bottom:1px solid var(--border-color)}}@media (min-width:992px){.paper-qa{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;column-gap:20px!important}}@media (min-width:900px){.paper-qa>div:first-child{position:sticky;top:96px;align-self:start}}@media (max-width:767px){.paper-hero{row-gap:28px!important}.paper-reassure{flex-direction:column;gap:6px}.paper-hero h1.hero-title{font-size:clamp(2.4rem,11vw,3.25rem)}.hero-subtitle{font-size:16px}.paper-cta-row .btn-hero{width:100%;justify-content:center}.paper-stat-card{padding:18px 16px 16px 0;margin-right:16px}.paper-features{display:flex;flex-wrap:wrap;padding-top:0;border-top:0;row-gap:0!important}.paper-feature,.paper-features-list,.paper-features-stage{display:contents}.paper-feature-tab{order:1;width:auto;border-bottom:2px solid var(--border-color);border-radius:0;flex:1 1 0!important;text-align:center!important;align-self:flex-start}.paper-feature-tab .paper-eyebrow{letter-spacing:.08em}.paper-feature-tab .paper-feature-title{display:none}.paper-feature-panel{order:2;width:100%;animation:none}.paper-feature-more{order:3;width:100%}.paper-feature-more .paper-feature-title-m{display:block;font-size:28px;line-height:1.1}.paper-feature-more p{max-width:none}.paper-footer-inner>.paper-footer-brand{grid-column:1/-1}.paper-footer-foot{flex-direction:column}}.paper-feature .paper-feature-tab::after{border-width:0 1.5px 1.5px 0!important;border-color:var(--ink-soft)!important}.paper-features .paper-feature.is-on .paper-feature-tab::after,.paper-features .paper-feature:not(.is-on) .paper-feature-tab::after{border-width:0 1.5px 1.5px 0!important;border-color:#57524a!important}@media (min-width:1100px){.paper-features{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;column-gap:20px!important}}.dark-mode .paper-features .paper-feature .paper-feature-tab::after{border-color:#ada69b!important}.paper-feature:not(.is-on) .paper-feature-tab:hover .paper-feature-title{color:var(--accent)}@media (max-width:767px){.paper-feature .paper-feature-tab::after,.paper-features .paper-feature .paper-feature-tab::after{display:none!important}}@media (min-width:1100px){.paper-reassure li{white-space:nowrap}}.dropdown-menu{background-color:var(--paper-card,var(--main-bg-color))!important;color:var(--color)!important;border:1px solid var(--border-color)!important;border-radius:8px!important;box-shadow:0 12px 28px rgba(26,24,21,.08),0 2px 6px rgba(26,24,21,.05)!important;padding:6px!important;font-family:var(--font-sans);font-size:13px;min-width:11rem}.dropdown-menu .dropdown-item{color:var(--color)!important;padding:7px 10px!important;border-radius:5px;font-size:13px}.dropdown-menu .dropdown-item:focus,.dropdown-menu .dropdown-item:hover{background:var(--hover-bg-color)!important;color:var(--color)!important}.dropdown-menu .dropdown-divider{border-top-color:var(--border-color)!important;margin:4px 2px}.dropdown-menu .dropdown-header{color:var(--ink-muted);font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.body,.file-content,.markdown-body{background-color:var(--main-bg-color)!important;color:var(--color)!important}.markdown-body table tr{background-color:var(--main-bg-color);border-top:1px solid var(--border-color)}.markdown-body table tr:nth-child(2n){background-color:var(--paper-bg-alt)}.markdown-body table td,.markdown-body table th{border:1px solid var(--border-color)}.file-content{padding:4px 7px;text-align:left;min-height:100%}.file-card{margin:16px 20px 28px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);overflow:clip}.file-card:not(.is-code) .file-card-head{top:0;z-index:2;border-radius:var(--radius-surface) var(--radius-surface) 0 0}.file-card.is-code{display:flex;flex-direction:column;height:calc(100% - 32px);margin-bottom:16px}.file-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:46px;padding:6px 8px 6px 16px;border-bottom:1px solid var(--border-color)}.file-card-meta{font-size:13px;color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;font-variant-numeric:tabular-nums;overflow:visible!important}.file-card-head .btn{height:32px;min-height:32px;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:500;padding:0 10px}.file-card-head .btn.btn-icon-only{width:32px;padding:0!important;color:var(--ink-soft)}.file-card-head .btn.btn-icon-only:hover{color:var(--color);background:var(--hover-bg-color)!important}.file-card .file-card-body{flex:1 1 auto;min-height:0}.file-card-actions{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;margin-left:auto}.file-card-path{align-items:center;gap:2px;min-width:0;display:inline-flex}.file-card-path .paths{overflow:hidden}.file-card-path+.file-card-meta,.file-card-path+.view-switch{margin-left:8px}.status-bar.is-redundant{display:none}@media (max-width:767px){.file-card-head{flex-wrap:wrap;padding:6px 8px 6px 16px;position:sticky;top:0;z-index:2;padding-left:12px!important;padding-right:12px!important;gap:4px!important}.file-card-head .file-card-meta{padding:0!important;border:0!important;color:var(--ink-muted);align-self:center;font-size:13px!important;order:3}.file-card-head .btn-ghost{color:var(--ink-soft)}.file-card-head .breadcrumb-root,.file-card-head .breadcrumb-root+.breadcrumb-item::before{display:none!important}.file-card-head .breadcrumb-item{padding-left:0}.file-card-actions{gap:2px}}@media (min-width:992px){.file-card-path+.file-card-meta{padding-left:14px;border-left:1px solid var(--border-color)}.file-card{margin-top:20px}.file-card.is-code{height:calc(100% - 36px)}}.card-files-btn{margin-right:4px}.file-card-head .btn.btn-find,.file-card-head .btn.btn-goto{padding:0 10px;gap:6px;font-weight:400}@media (max-width:1180px){.file-card-head .btn-find .btn-find-label,.file-card-head .btn-goto .btn-find-label{display:none}.file-card-head .btn-find,.file-card-head .btn-goto{padding:0!important}}@media (max-width:991px){.file-card-head .btn-find{padding:0!important}.file-card-head .btn-find-label{display:none}}.ace_search{color:var(--color)!important;font-family:var(--font-sans)!important;font-size:13px!important;display:flex;flex-wrap:nowrap;max-width:none!important;width:auto!important;top:0!important;left:0!important;right:0!important;align-items:center!important}.ace_search_field{background:var(--input-bg)!important;color:var(--input-color)!important;border:1px solid var(--border-color)!important;border-radius:var(--radius-control)!important;margin-right:4px!important;padding:0 8px!important;font-family:var(--font-sans)!important;width:200px!important}.ace_search_field:focus{outline:0}.ace_button,.ace_searchbtn{background:0 0!important;color:var(--ink-soft)!important;border:0!important;border-radius:var(--radius-control)!important;width:28px;height:28px!important;line-height:28px!important}.ace_button:hover,.ace_searchbtn:hover{background:var(--hover-bg-color)!important;color:var(--color)!important}.ace_button.checked{border-color:var(--accent)!important;color:var(--accent)!important}.ace_search_counter{margin:0 8px 0 4px!important;align-self:center}.ace_search .ace_button.checked{z-index:1;border-color:var(--accent)!important}.ace_search .ace_button[action=searchInSelection],.ace_search .ace_button[action=toggleReplace],.ace_search .ace_replace_form,.ace_search .ace_searchbtn[action=findAll]{display:none!important}.ace_search{padding:6px 12px!important}.ace_search .ace_search_field{box-sizing:border-box}.ace_search_form{display:flex;align-items:center;margin:0!important;float:none!important}.ace_search_options{display:flex!important;align-items:center;margin:0!important;float:none!important;text-align:left!important;gap:0!important}.ace_search_options .ace_button{width:28px;height:28px!important;line-height:26px!important;padding:0!important;font-size:12px!important;text-align:center;border-radius:0!important}.ace_search_options .ace_button:first-of-type{border-radius:var(--radius-control) 0 0 var(--radius-control)!important}.ace_search_options .ace_button:last-of-type{border-radius:0 var(--radius-control) var(--radius-control) 0!important}.ace_searchbtn_close{position:static!important;filter:none!important;font-size:0!important;align-self:center;order:99;opacity:1!important}.ace_editor .ace_indent-guide-active{background:0 0!important;box-shadow:inset 1px 0 0 var(--border-color)!important}.ace_prompt_container{background:var(--paper-card)!important;border:1px solid var(--border-color)!important;border-radius:var(--radius-surface)!important;box-shadow:0 12px 32px rgba(26,24,21,.16)!important}.btn.btn-ghost{background:0 0!important;border-color:transparent!important;color:var(--ink-muted)}.btn.btn-ghost:hover{background:var(--hover-bg-color)!important;color:var(--color)}.btn.btn-ghost.is-on{box-shadow:none!important}.btn.btn-ghost:focus:not(:focus-visible):not(.is-on):not(:hover){background:0 0!important;box-shadow:none}.file-card-head .btn.btn-find,.file-card-head .btn.btn-goto{color:var(--ink-soft)}.file-card-head>.view-switch{gap:2px;padding:2px;border-radius:calc(var(--radius-control) + 2px);background:var(--hover-bg-color)}.file-card-head>.view-switch .btn{height:28px;min-height:28px;margin:0!important;border:0!important;border-radius:var(--radius-control)!important;background:0 0!important;color:var(--ink-soft);font-weight:500}.file-card-head>.view-switch .btn:hover{color:var(--color)}.file-card-head>.view-switch .btn.is-on{background:var(--paper-card)!important;color:var(--color);box-shadow:0 1px 2px rgba(26,24,21,.1),0 0 0 1px var(--border-color);cursor:default}.dark-mode .file-card-head>.view-switch .btn.is-on{background:#3d3934!important;box-shadow:none}.copy-path-btn{margin-left:-4px}@media (max-width:767px){.file-card-head .btn,.file-card-head .btn.btn-icon-only{height:40px;min-height:40px}.file-card-head .btn.btn-icon-only{width:40px}.copy-path-btn{display:none!important}}.file-card .ace_editor{height:100%!important}@media (max-width:767px){.file-card{margin:0;border:0;border-radius:0}.file-card.is-code{height:100%}}.dir-card{margin:20px 20px 0;background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);overflow:hidden}.dir-card+.file-card{margin-top:16px}.dir-card-head{display:flex;align-items:baseline;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border-color);background:var(--paper-bg-alt)}.dark-mode .dir-card-head{background:#35312c}.dir-card-title{font-size:14px;font-weight:600;color:var(--color)}.dir-card-sub{font-size:13px;color:var(--ink-muted)}.dir-list{list-style:none;margin:0;padding:4px 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:0}.dir-row{display:flex;align-items:center;gap:10px;width:100%;height:34px;padding:0 16px;border:0;background:0 0;font:inherit;font-size:14px;color:var(--color);text-align:left;text-decoration:none;cursor:pointer}.dir-row:hover{background:var(--hover-bg-color);color:var(--color);text-decoration:none}.dir-row:hover .dir-name{text-decoration:underline;text-underline-offset:3px}.dir-row.is-current .dir-name{font-weight:600}.dir-icon{width:16px;height:16px;flex-shrink:0;fill:none;stroke:var(--ink-muted);stroke-width:1.2;stroke-linejoin:round}.dir-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dir-meta{flex-shrink:0;font-size:12px;color:var(--ink-muted);font-variant-numeric:tabular-nums}.dir-list:not(.is-expanded)>li:nth-child(n+9){display:none}.dir-more{display:block;width:100%;height:40px;border:0;border-top:1px solid var(--border-soft);background:0 0;font:inherit;font-size:13px;font-weight:500;color:var(--link-color);cursor:pointer}.dir-more:hover{background:var(--hover-bg-color)}@media (max-width:767px){.dir-card{margin:0;border:0;border-bottom:1px solid var(--border-color);border-radius:0}.dir-list{grid-template-columns:1fr}.dir-card+.file-card{margin-top:0}}.explorer-content .file-card .file-content.markdown-body{min-height:0;font-family:var(--font-sans);font-size:15px;line-height:1.65;max-width:880px;background:0 0!important;margin:0 auto!important}.explorer-content .markdown-body h1,.explorer-content .markdown-body h2{font-family:var(--font-sans);font-weight:600;letter-spacing:-.01em;border-bottom:1px solid var(--border-color);padding-bottom:.3em}.explorer-content .markdown-body h1{font-size:28px;margin-top:0}.explorer-content .markdown-body h2{font-size:21px;margin-top:32px}.explorer-content .markdown-body h3{font-size:17px;font-weight:600;margin-top:24px}.explorer-content .markdown-body h4{font-size:15px;font-weight:600}.explorer-content .markdown-body img{border-radius:var(--radius-control)}.explorer-content .markdown-body p>a:only-child>img,.explorer-content .markdown-body p>img:only-child{border:1px solid var(--border-color)}.explorer-content .markdown-body code,.explorer-content .markdown-body pre{font-family:var(--font-mono);font-size:13px}.explorer-content .markdown-body pre{background:var(--paper-bg-alt)!important;border:1px solid var(--border-soft);border-radius:var(--radius-control);padding:14px 16px;line-height:1.55}.explorer-content .markdown-body :not(pre)>code{background:var(--hover-bg-color);border-radius:4px;padding:.15em .4em;font-size:.86em}@media (max-width:767px){.explorer-content .file-card .file-content.markdown-body{font-size:15px}.explorer-content .markdown-body h1{font-size:24px}}.ace_editor.ace-chrome,.ace_editor.ace-nord-dark{background:var(--paper-card)!important;color:var(--color)!important}.ace_editor.ace-chrome .ace_gutter,.ace_editor.ace-nord-dark .ace_gutter{background:color-mix(in srgb,var(--paper-bg-alt) 55%,var(--paper-card))!important;color:var(--ink-muted)!important;border-right:1px solid var(--border-soft)}.ace_editor .ace_gutter-cell{padding-right:14px;padding-left:12px;font-size:12px}.ace_editor .ace_gutter-active-line{background:0 0!important}.ace_editor .ace_indent-guide{background:0 0!important;box-shadow:inset 1px 0 0 var(--border-soft)}.ace_editor .ace_fold-widget{opacity:0;transition:opacity .15s}.ace_editor .ace_fold-widget.ace_closed,.ace_editor .ace_gutter:hover .ace_fold-widget{opacity:.7}.ace-chrome .ace_variable.ace_parameter{color:#8a5a12;font-style:normal}.ace-chrome .ace_entity.ace_name.ace_tag,.ace-chrome .ace_meta.ace_tag{color:#116329}.ace-nord-dark .ace_keyword,.ace-nord-dark .ace_storage{color:#f2897d}.ace-nord-dark .ace_comment{color:#9a948a;font-style:italic}.ace-nord-dark .ace_entity.ace_name.ace_function,.ace-nord-dark .ace_support.ace_function{color:#c9a8f5}.ace-nord-dark .ace_variable.ace_parameter{color:#e0a94a;font-style:normal}.ace-nord-dark .ace_entity.ace_name.ace_tag,.ace-nord-dark .ace_meta.ace_tag{color:#7ee787}.ace-nord-dark .ace_entity.ace_other.ace_attribute-name{color:#79c0ff}.ace-nord-dark .ace_identifier,.ace-nord-dark .ace_paren,.ace-nord-dark .ace_punctuation,.ace-nord-dark .ace_variable{color:var(--color)}.badge{font-size:75%;font-weight:500;padding:3px 8px;border-radius:10px;vertical-align:middle}.dropdown-item:focus,.dropdown-item:hover{background-color:var(--hover-bg-color)}.card-header .btn,.card-header .btn:focus,.card-header .btn:hover{border:none!important;background:0 0!important}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--button-height);padding:7px var(--button-padding-x);font:500 var(--button-font-size)/var(--button-line-height) var(--font-sans);vertical-align:middle;max-width:100%;transition:background-color 120ms ease,border-color 120ms ease,color 120ms ease;color:var(--btn-color);border:1px solid var(--border-color);background:var(--paper-card);border-radius:var(--radius-button);white-space:nowrap}.btn:active,.btn:hover{color:var(--btn-color);border:1px solid var(--border-color);background-color:var(--hover-bg-color);box-shadow:none!important}.btn.btn-primary{color:var(--primary-color);background-color:var(--primary-bg)}.btn.btn-primary:active,.btn.btn-primary:hover{color:var(--primary-active-color);background-color:var(--primary-hover-bg)!important}.btn::placeholder{color:var(--color);opacity:1}.leftCol{display:flex;position:relative;flex:0 0 auto;width:100%;z-index:9;flex-direction:column}.card,.leftCol,.sidePanel{background-color:var(--sidebar-bg-color);border:1px solid var(--border-color)}@media (min-width:768px){.leftCol{flex:0 0 var(--sidebar-w,280px);width:var(--sidebar-w,280px);height:100%}}.leftCol-search{padding:12px 12px 8px!important;padding-bottom:6px!important}.tree-search-box{display:flex;align-items:center;gap:8px;background:var(--canvas-bg-color);border:1px solid var(--border-color);border-radius:8px;padding:7px 10px;transition:border-color .15s}.tree-search-box:focus-within{border-color:var(--ink-muted)}.tree-search-icon{font-size:12px;color:var(--ink-muted);flex-shrink:0}.tree-search-input{flex:1;border:none;outline:0;background:0 0;font-family:var(--font-sans);font-size:13px;color:var(--color);min-width:0}.tree-search-input::placeholder{color:#6e685f!important;opacity:1}.dark-mode .tree-search-input::placeholder{color:#9c958a!important}.tree-search-kbd{font-family:var(--font-sans);font-size:11px;border-radius:4px;padding:1px 6px;line-height:1.4;flex-shrink:0}.tree-search-clear{background:0 0;border:none;color:var(--ink-muted);font-size:16px;cursor:pointer;padding:0 2px;line-height:1}.tree-search-clear:hover{color:var(--color)}.project-name{font-family:var(--font-sans);font-size:13px;font-weight:600;color:var(--color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.files{position:relative;display:block;overflow:auto;height:100%;padding:4px 6px}.files ul{list-style:none;margin:0;padding:0}.files li ul{padding-left:8px;margin-left:7px;border-left:1px solid var(--border-color)}.files .folder>ul{display:none}.files .folder.open>ul{display:block}.files .file,.files .folder{position:relative;color:var(--ink-soft);cursor:pointer;word-break:break-all}.files a{display:flex;align-items:center;gap:5px;min-height:26px;padding:2px 8px 2px 4px;font-family:var(--font-sans);font-size:13px;color:var(--ink-soft);border-radius:var(--radius-control);text-decoration:none;line-height:1.5;position:relative}.files a:hover{background:var(--hover-bg-color);color:var(--color);text-decoration:none}.files:focus{outline:0}.files a.tree-focused{background:var(--hover-bg-color);color:var(--color)}.files .file.active>a::before{content:"";position:absolute;background:var(--accent);top:4px!important;bottom:4px!important;width:3px!important;border-radius:0 2px 2px 0!important;left:0!important}.files .file.active>a{color:var(--color);font-weight:500;border-radius:var(--radius-control)!important;position:relative}.files .file.active>a .tree-icon-file{color:var(--color)}.tree-icon-file,.tree-icon-folder{display:inline-block;flex-shrink:0}.tree-icon-folder{width:14px;height:12px;color:var(--ink-muted);opacity:.75}.tree-icon-folder svg{display:block;width:100%;height:100%;fill:currentColor;fill-opacity:0;stroke:currentColor;stroke-width:1.2;stroke-linejoin:round}.files .folder.open>a .tree-icon-folder{color:var(--ink-muted);opacity:1}.files .folder.open>a .tree-icon-folder svg{fill-opacity:.12}.tree-icon-file{width:16px;font-size:14px;text-align:center;color:var(--ink-muted)}.tree-toggle{display:inline-flex;align-items:center;justify-content:center;width:12px;height:14px;flex-shrink:0;opacity:.8}.tree-toggle::after{content:"";display:block;width:6px;height:6px;border-right:1.5px solid var(--ink-muted);border-bottom:1.5px solid var(--ink-muted);transform:translateX(-1px) rotate(-45deg);transition:transform .12s ease;border-color:#7a746a!important}.files .folder.open>a .tree-toggle::after{transform:translateY(-2px) rotate(45deg)}.dark-mode .tree-toggle::after{border-color:#8f887d!important}.tree-spacer{display:inline-block;width:12px;flex-shrink:0}.tree-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files .folder>a{color:var(--color)}.files .file::before,.files .folder::before{display:none}.files .folder>a::after{display:none}.tree-search-empty{padding:16px 12px;color:var(--ink-muted);font-size:13px;font-family:var(--font-sans);text-align:center}.leftCol{background:var(--paper-bg-alt,#f3f1ec);border:0;border-right:1px solid var(--border-color)}.dark-mode .leftCol{border-right:1px solid var(--border-color)!important}.dark-mode .explorer-content .markdown-body img{filter:none!important}.dark-mode .hero-mock-row.is-active{background:rgba(255,255,255,.1)}.dark-mode .files .file.active>a{color:#f2eee8!important}.files li:not(.active)>a.tree-focused:not(:hover){background:0 0!important}.files:focus-visible a.tree-focused{box-shadow:inset 0 0 0 1px var(--border-color);border-radius:6px}.files li.folder>a.tree-focused:hover{background:var(--hover-bg-color)!important}.status-bar{background:var(--canvas-bg-color);min-height:48px;align-items:center;background-color:var(--canvas-bg-color);margin:0;border-bottom:1px solid var(--border-color)}.paths .breadcrumb-item,.paths .breadcrumb-item a{font-family:var(--font-sans);font-size:14px;color:var(--ink-muted);letter-spacing:0}.paths .breadcrumb-root a{color:var(--link-color)}.paths .breadcrumb-root a:hover{text-decoration:underline;text-underline-offset:3px}.paths .breadcrumb-item.active,.paths .breadcrumb-item:last-child{color:var(--color);font-family:var(--font-sans);font-size:14px;font-weight:600;letter-spacing:0}.status-files-btn{display:none!important;gap:6px}.leftCol-resizer{display:none;top:44px!important}@media (min-width:992px){.leftCol-resizer{display:block;position:absolute;bottom:0;left:calc(var(--sidebar-w,280px) - 3px);width:6px;cursor:col-resize;z-index:10}.leftCol-resizer:hover,body.is-resizing .leftCol-resizer{background:color-mix(in srgb,var(--accent) 35%,transparent)}body.is-resizing{cursor:col-resize;user-select:none}}@media (min-width:992px){.explorer-page.files-hidden .leftCol{display:none!important}.explorer-page.files-hidden .status-files-btn{display:inline-flex!important}}@media (max-width:991px){.status-files-btn{display:inline-flex!important;flex-shrink:0;height:40px!important;min-height:40px!important;padding:0 12px;border-radius:var(--radius-control)}.explorer-page .sidebar-toggle{display:none!important}}@media (max-width:767px){.status-bar .btn,.status-bar .btn.btn-icon-only{min-height:40px}}.dark-mode .status-bar .btn{background:var(--paper-card)}.status-bar .btn{height:32px;min-height:32px;display:inline-flex;align-items:center;gap:6px}.status-bar .btn.btn-icon-only{padding-left:0;padding-right:0;width:32px;justify-content:center}@media (max-width:767px){.file-card.is-code.no-wrap::after{content:"";position:absolute;top:46px;right:0;bottom:0;pointer-events:none;background:linear-gradient(to right,transparent,var(--paper-card) 85%);z-index:20;width:64px!important;display:none!important}}@media (max-width:575px){.navbar .nav-support{display:none!important}.navbar .nav-signin-m{margin-left:auto}}.ace_editor .ace_gutter-cell{cursor:pointer}.ace_editor .ace_gutter-cell:hover{color:var(--color)}.paths .breadcrumb-item+.breadcrumb-item::before{content:'/';color:var(--ink-faint);padding:0 6px 0 3px}.ace_editor{height:100%}.ace_scroller{cursor:default}.status-bar{display:flex;gap:12px;padding:10px 14px;border-radius:0;flex-shrink:0}.status-bar-actions{display:flex;align-items:center;margin-left:auto;gap:10px;flex-shrink:0}.status-bar-actions .btn{display:inline-flex;align-items:center;background:var(--paper-card);border:1px solid var(--border-color);color:var(--color)}.status-bar-actions .btn:hover{background:var(--hover-bg-color);color:var(--color)}.status-bar-actions .btn.btn-active{border-color:currentColor;font-weight:600}.paths{flex:0 1 auto;min-width:0;padding:0;margin:0;background-color:initial;border:none;border-radius:0;align-items:center;overflow-x:auto;white-space:nowrap;flex-wrap:nowrap}.paths::-webkit-scrollbar{display:none}.paths a{color:var(--color)}.paths .breadcrumb-item{padding-left:3px}.paths .breadcrumb-item::before{padding-right:3px}.content{height:100%;overflow:scroll;padding-top:42px;background-color:var(--main-bg-color);text-align:center}.image-content{max-width:100%;max-height:100%;text-align:center;padding:4px}.pdf-viewer{display:flex;flex-direction:column;height:100%;min-height:0;background-color:var(--main-bg-color)}.pdf-toolbar{display:flex;align-items:center;gap:4px;flex:0 0 auto;padding:4px 8px;border-bottom:1px solid var(--border-color,rgba(0,0,0,.12))}.pdf-toolbar-group{display:inline-flex;align-items:center;gap:4px}.pdf-toolbar-right{margin-left:auto}.pdf-toolbar-btn{border:0;background:0 0;color:inherit;padding:4px 8px;border-radius:4px;font-size:13px;line-height:1.2;cursor:pointer}.pdf-toolbar-btn:hover:not(:disabled){background-color:rgba(128,128,128,.18)}.pdf-toolbar-btn:disabled{opacity:.4;cursor:default}.pdf-toolbar-zoom{min-width:52px;font-variant-numeric:tabular-nums}.pdf-toolbar-page{width:3.5em;text-align:right;padding:2px 4px;font-size:13px;color:inherit;background:0 0;border:1px solid var(--border-color,rgba(0,0,0,.2));border-radius:4px}.pdf-toolbar-count{font-size:13px;opacity:.75;font-variant-numeric:tabular-nums}.pdf-pages{flex:1 1 auto;min-height:0;overflow:auto;padding:8px 0}.pdf-viewer-page{margin:0 auto 12px}.pdf-viewer-page canvas{display:block;box-shadow:0 1px 4px rgba(0,0,0,.25)}.pdf-viewer-error{padding:24px;text-align:center;font-weight:700}.html-doc{display:block;height:100%}.html-doc-frame{display:block;width:100%;height:100%;border:0;background-color:#fff}.file-error{text-align:left}pdfviewer{display:block;padding:15px}pdfpageviewer{display:block;width:100%;margin-bottom:10px}notebook{display:block;text-align:left;padding:15px}@media (min-width:768px){notebook{padding-left:100px}}.nb-output td,.nb-output th{border:1px solid var(--border-color)!important}.paper-faq{margin:0 auto;padding:48px 32px 80px;font-family:var(--font-sans)}.paper-faq-hero{border-bottom:1px solid var(--border-color)}.paper-faq-title{color:var(--color);margin:0 0 22px;font-size:clamp(2.2rem,4vw,3.1rem)!important}.paper-faq-lede{color:var(--ink-soft);margin:0}.paper-faq-lede a{border-bottom:1px solid var(--ink-faint)!important}.paper-faq-lede a:hover{color:var(--accent);border-bottom-color:var(--color)!important}.paper-faq-body{display:grid;align-items:start;grid-template-columns:180px minmax(0,1fr)}.paper-faq-toc{position:sticky;top:32px;font-size:14px}.paper-faq-toc-head{padding-bottom:10px;border-bottom:1px solid var(--border-color)}.paper-faq-toc nav{display:flex;flex-direction:column}.paper-faq-toc nav a{color:var(--ink-soft);padding:8px 0 8px 14px;border-left:2px solid transparent;text-decoration:none;margin-left:0}.paper-faq-toc nav a.active,.paper-faq-toc nav a:hover{color:var(--color);border-left-color:var(--accent)!important}.faq-section{min-width:0}.faq-section>div{width:100%}.faq-section h4.faq-cat{color:var(--color);margin:0 0 6px;border-bottom:1px solid var(--border-color);font:400 30px/1.15 var(--font-serif);letter-spacing:-.015em;padding-bottom:12px}.faq-section h4.faq-cat i{display:none}.faq-section .panel-default .panel-title a{letter-spacing:-.005em;color:var(--color);text-decoration:none;cursor:pointer;font:500 15px/1.5 var(--font-sans);min-height:44px;padding:16px 32px 16px 0!important;padding-right:40px!important;position:relative}.faq-section .panel-default .panel-title a:hover{color:var(--accent)}.faq-section .panel-heading{background:0 0;padding:0!important;border:none}.faq-section .panel-default{background:0 0;border:none;border-bottom:1px solid var(--border-soft);border-radius:0;margin-bottom:0!important;box-shadow:none}.faq-section .panel-default .panel-title{margin-bottom:0}.faq-section .panel-default .panel-title a:after{position:absolute;font-family:var(--font-mono);font-size:18px;line-height:1.35;color:var(--ink-muted);float:none;margin:0;font-weight:400;content:"";top:22px;width:8px;height:8px;border-right:1.5px solid var(--ink-soft);border-bottom:1.5px solid var(--ink-soft);transition:transform .15s ease;border-color:var(--ink-soft)!important;left:auto!important;right:6px!important;transform:rotate(45deg)!important}.faq-section .panel-default .panel-title a.collapsed:after{content:"";transform:translateX(2px) rotate(-45deg)}.faq-section .panel-default .panel-body{padding:0 0 22px 42px!important;color:var(--ink-soft);font-size:15px;line-height:1.65;border-top:none;padding-bottom:18px!important;max-width:640px!important}.table{color:var(--color)}.dropdown-divider,.table td,.table th,hr{border-color:var(--border-color)}.table.repositories td{word-break:break-word}loc{display:block;position:relative;width:100%;height:5px}loc .lang{float:left;height:100%}.rounded-circle.fa{display:inline-block;font-size:75px;height:140px;width:140px;border:4px solid;line-height:140px;text-align:center}.dark-mode .shadow{box-shadow:none}.dark-mode .overflow-auto::-webkit-scrollbar{width:10px}.dark-mode .overflow-auto::-webkit-scrollbar-track{-webkit-box-shadow:none;background:inherit;border-radius:0}.dark-mode .overflow-auto::-webkit-scrollbar-thumb{border-radius:10px;border:1px solid var(--border-color);background-color:var(--hover-bg-color)}.section-number{padding-right:10px;font-weight:700;font-style:italic}.org-subscript-child{font-size:85%}.highlighted-line{position:absolute;background:rgba(100,200,100,.5);z-index:20}code,pre{font-family:"Fira Code","Courier New",Courier,monospace;line-height:1.1;color:var(--color)}.quota-row{display:flex;gap:16px;margin-bottom:16px;padding:0}.quota-item{flex:1;min-width:0}.quota-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}.quota-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.3px;opacity:.7}.quota-value{font-size:.8125rem;font-weight:500;font-variant-numeric:tabular-nums}.quota-progress{height:6px;border-radius:3px;background:var(--hover-bg-color)}.quota-progress .progress-bar{border-radius:3px}.filter-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;font-size:.8125rem;font-weight:500;background:var(--primary-bg);color:var(--primary-color);border-radius:12px;line-height:1.4}.filter-chip-close{display:inline-flex;align-items:center;justify-content:center;background:0 0;border:none;color:inherit;opacity:.7;cursor:pointer;padding:0;min-width:24px;min-height:24px;margin:-6px -6px -6px 0;font-size:1rem;line-height:1;border-radius:999px}.filter-chip-close:hover{opacity:1}.repo-list{list-style:none;padding:0;margin:0}.repo-list-item{display:flex;align-items:flex-start;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--border-color);gap:12px}.repo-list-item:first-child{border-top:1px solid var(--border-color)}.repo-list-item.repo-inactive{opacity:.6}.repo-list-item-content{flex:1;min-width:0}.repo-list-item-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}.repo-name{font-family:var(--font-mono);font-size:14px;font-weight:500;color:var(--color);word-break:break-word}.repo-name:hover{color:var(--accent)}.repo-source{font-size:.875rem;opacity:.8;display:flex;flex-wrap:wrap;align-items:center;gap:6px}.repo-date{opacity:.7}.repo-meta{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;font-size:.8125rem;opacity:.7}.repo-meta span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.repo-list-item-actions{flex-shrink:0;padding-top:2px;margin-left:14px}.repo-list-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:48px 20px;opacity:.5;font-size:.9375rem;list-style:none;border-bottom:1px solid var(--border-color);border-top:1px solid var(--border-color)}.repo-list-empty i{font-size:1.75rem}.type-badge{display:inline-flex;align-items:center;gap:3px;font-size:.6875rem;font-weight:600;text-transform:uppercase;white-space:nowrap;font-family:var(--font-mono);letter-spacing:.06em;padding:2px 8px;border-radius:999px;border:1px solid var(--border-color);background:var(--paper-bg-alt,transparent)}.type-badge.type-pr,.type-badge.type-repo{background:var(--paper-bg-alt);color:var(--ink-muted);border-color:var(--border-color)}.dark-mode .type-badge.type-pr,.dark-mode .type-badge.type-repo{background:rgba(255,255,255,.06);color:var(--ink-muted);border-color:var(--border-color)}.type-badge.type-coauthor{margin-left:6px}.btn-group .btn:not(.btn-primary){background:var(--hover-bg-color)}.anonymize-page{display:flex;flex-direction:column;min-height:0;--rp-stage:#ECE9E2;--rp-window:#FFFFFF;--rp-chrome:#F4F2ED;--rp-tree:#F7F6F2;--rp-line:#DEDAD2;--rp-skel:#ECE8E0}.anonymize-landing{flex:1 1 0;min-height:min-content;display:flex;justify-content:center;padding:20px;align-items:flex-start!important}.anonymize-landing-inner h2{font-weight:700}.anonymize-workspace{display:flex;flex-direction:column;flex:1 1 0;min-height:0;background:var(--canvas-bg-color)}.anonymize-topbar{background:var(--paper-card);border-bottom:1px solid var(--border-color);flex:0 0 auto}.anonymize-topbar-inner{max-width:1400px;margin:0 auto}.anonymize-topbar-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.anonymize-topbar-title{margin:4px 0 0;font-size:clamp(1.8rem,3vw,2.4rem)}.anonymize-split{flex:1 1 auto;display:flex;min-height:0}.anonymize-form-col{flex:0 0 auto;width:100%;min-width:0;border-right:1px solid var(--border-color);overflow-y:auto}.anonymize-form-col .paper-settings-main{max-width:720px;margin:0}.anonymize-form-col .anonymize-submit-bar{padding:12px 0 16px!important;bottom:0}.anonymize-form-col .anonymize-submit-bar .btn{width:100%;padding:12px 16px;font-size:15px}.anonymize-preview-col{flex:1 1 auto;overflow:auto;min-height:0;min-width:0}.anonymize-preview-body{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px}.form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid-3{display:grid;grid-template-columns:2fr 1fr 1fr;gap:16px}@media (max-width:700px){.form-grid-2,.form-grid-3{grid-template-columns:1fr}}.paper-optional{font-family:var(--font-sans);font-weight:400;color:var(--ink-muted);text-transform:none;letter-spacing:0;font-size:11px;margin-left:6px}.paper-plan-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.paper-plan-card{position:relative;display:block;padding:18px 20px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease;margin:0}.paper-plan-card input[type=radio]{position:absolute;opacity:0;pointer-events:none}.paper-plan-card.selected{border-color:var(--color);box-shadow:0 0 0 2px var(--color) inset}.paper-plan-head{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted)}.paper-plan-price{font-family:var(--font-serif);font-size:2rem;color:var(--color);margin:6px 0 4px}.paper-plan-desc{font-size:13px;color:var(--ink-soft)}.paper-plan-desc ul{padding-left:18px;margin:0}.conference-package{padding:20px 22px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;margin:0 0 12px}.conference-package .billing-offer-list{list-style:none;margin:0 0 14px;padding:0;font-size:13px;line-height:1.5}.conference-package .billing-offer-list li{position:relative;padding-left:22px;margin:0 0 6px}.conference-package .billing-offer-list li::before{content:"";position:absolute;left:3px;top:6px;width:10px;height:5px;border-left:1.5px solid var(--ink-muted);border-bottom:1.5px solid var(--ink-muted);transform:rotate(-45deg)}.conference-package h3{font-size:.95rem;font-weight:600;margin:0 0 10px}.conference-tiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:0 0 12px}.conference-tier{position:relative;display:flex;flex-direction:column;gap:4px;margin:0;padding:16px 18px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.conference-tier:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--border-color))}.conference-tier.is-selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;background:var(--accent-soft)}.conference-tier:focus-within{outline:2px solid var(--accent);outline-offset:2px}.paper-page .conference-tier input[type=radio]{position:absolute;opacity:0;pointer-events:none}.conference-tier-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.conference-tier-head strong{font-size:15px;font-weight:600;color:var(--color)}.conference-tier-pill{font-size:11px;font-weight:500;padding:1px 8px;border-radius:999px;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);white-space:nowrap}.conference-tier-who{font-size:13px;color:var(--ink-soft)}.conference-tier-price{margin-top:8px;font-size:12px;color:var(--ink-muted)}.conference-tier-price strong{font-size:1.5rem;font-weight:600;color:var(--color);font-variant-numeric:tabular-nums;margin-right:2px}.conference-tier-size{font-size:13px;color:var(--color)}.conference-tier-per{font-size:12px;color:var(--ink-muted)}.conference-package-note{margin:0;padding-top:12px;border-top:1px solid var(--border-color);font-size:12px;color:var(--ink-muted)}.anonymize-section-title{font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.3px;margin:18px 0 8px 0;padding-bottom:6px;border-bottom:1px solid var(--border-color);opacity:.7}.anonymize-section-title i{margin-right:4px}.anonymize-submit-bar{padding:12px 0 4px 0}.anonymize-submit-bar .btn{font-size:1rem;padding:10px 20px;font-weight:600}.pr-diff pre{overflow-x:auto;max-width:100%}@media (min-width:768px){.anonymize-form-col{height:100%;width:520px;flex:0 0 520px}.anonymize-preview-col{height:100%;flex:1}}@media (max-width:767px){.anonymize-workspace{flex:0 0 auto;min-height:0}.anonymize-topbar-title{font-size:1.5rem;margin-top:2px}.anonymize-split{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}.anonymize-form-col{height:auto!important;border-bottom:1px solid var(--border-color);width:100%!important;flex:0 0 100%!important;border-right:none;border-top:1px solid var(--border-color);overflow:visible!important}.anonymize-form-col .paper-settings-main{max-width:none}.anonymize-form-col .anonymize-submit-bar{position:sticky!important;bottom:0!important}.anonymize-form-col .anonymize-submit-bar .btn{width:100%;padding:12px 16px;font-size:15px}.anonymize-preview-col{width:100%;flex:0 0 auto;overflow:visible;height:auto!important;max-height:none}.anonymize-preview-body{border-radius:8px}.anonymize-preview-body .pr-diff pre,.anonymize-preview-body pre{overflow-x:auto;max-width:100%}.anonymize-landing-inner{padding:16px}}@media (min-width:1200px){.dark-mode .anonymize-workspace .anonymize-form-col .anonymize-submit-bar::before{background:linear-gradient(to bottom,rgba(22,20,18,0),#161412)!important}}@media (min-width:1280px){.anonymize-form-col{width:620px;flex:0 0 620px}}@media (max-width:767px){.btn{min-height:38px;padding:6px 14px;font-size:14px}.btn-sm{min-height:34px;padding:5px 10px}.navbar .nav-link .fa,.navbar .nav-link .fab{font-size:24px;line-height:32px}.container.page{padding-left:15px;padding-right:15px;max-width:100%}h1{font-size:1.5rem}h2{font-size:1.375rem}h3{font-size:1.125rem}.repo-list-item{flex-direction:column}.repo-list-item-actions{align-self:flex-start}.quota-row{flex-direction:column;gap:10px;padding:10px 12px}.dropdown-menu{position:absolute;right:0;left:auto}.form-group{margin-bottom:12px}.form-control{font-size:16px}.status-bar{gap:6px;padding:8px 10px}.status-bar .btn{font-size:12px;padding:4px 10px;min-height:32px}.status-bar .paths{font-size:12px;overflow-x:auto;flex-wrap:nowrap;white-space:nowrap;-webkit-overflow-scrolling:touch}.status-bar .paths::-webkit-scrollbar{display:none}.status-bar-actions{flex-shrink:0;gap:4px}.progress:not(.quota-progress){min-width:120px!important}.badge{font-size:70%}.anonymize-page .container-fluid>.row{height:auto!important;min-height:100%}.anonymize-section-title{font-size:.8125rem;margin:12px 0 8px 0}.anonymize-submit-bar{position:sticky;bottom:0;background:var(--sidebar-bg-color);padding:10px 0;margin:0 -12px;padding-left:12px;padding-right:12px;border-top:1px solid var(--border-color);z-index:10}.anonymize-submit-bar .btn{font-size:1rem;padding:12px 20px}.anonymize-page .form-check{min-height:36px}.anonymize-page .card-body{padding:12px}.pr-diff pre{font-size:.75rem}.pr-comment .mb-1 h5{font-size:1rem}.nav-tabs .nav-link{padding:8px 12px;font-size:.875rem}}@media (min-width:768px) and (max-width:991px){.container.page{max-width:100%;padding-left:15px;padding-right:15px}.leftCol{flex:0 0 250px;width:250px}}.explorer-page{height:100%;width:100%;background:var(--canvas-bg-color);position:relative;display:grid!important;grid-template-columns:var(--sidebar-w,280px) minmax(0,1fr);grid-template-rows:44px minmax(0,1fr)}.explorer-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;overflow:hidden}.explorer-content{flex:1 1 auto;min-height:0;width:100%;overflow:auto}.leftCol-close,.leftCol-head{display:none}.leftCol-body{flex:1 1 auto;min-height:0;overflow:auto}.leftCol-backdrop{display:none;-webkit-backdrop-filter:none;backdrop-filter:none}.paper-inline-warning{display:flex;align-items:flex-start;gap:8px;margin:8px;padding:10px 12px;background:rgba(138,107,30,.08);border:1px solid rgba(138,107,30,.35);border-radius:8px;color:var(--color);font-size:13px;line-height:1.4}.paper-inline-warning i{color:var(--status-progress);margin-top:2px;flex-shrink:0}.dark-mode .paper-inline-warning i{color:var(--status-progress)}@media (min-width:768px){.leftCol-body{padding:8px 4px}}.sidebar-toggle{display:none;align-items:center;gap:8px;position:fixed;bottom:18px;right:18px;z-index:1100;padding:10px 14px;background:var(--color);color:var(--canvas-bg-color);border:1px solid var(--color);border-radius:999px;font-family:var(--font-sans);font-size:13px;font-weight:500;box-shadow:0 6px 20px rgba(0,0,0,.15);cursor:pointer;outline:0}.sidebar-toggle:hover{background:var(--primary-hover-bg)}.sidebar-toggle:focus{outline:0}.sidebar-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (max-width:991px){.sidebar-toggle{display:inline-flex}.leftCol{position:fixed;top:0;left:0;bottom:0;width:min(86vw,340px);max-width:340px;z-index:1200;border:none;border-right:1px solid var(--border-color);transform:translateX(0);transition:transform .22s ease;box-shadow:4px 0 24px rgba(0,0,0,.18);background:var(--sidebar-bg-color)}.leftCol.collapsed{transform:translateX(-105%);box-shadow:none;pointer-events:none}.leftCol-head{display:flex;align-items:center;justify-content:space-between;padding:4px 6px!important;right:6px!important}.leftCol-eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted)}.leftCol-close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:0 0;border:1px solid var(--border-color);border-radius:8px;color:var(--ink-muted);cursor:pointer}.leftCol-close:hover{color:var(--color);border-color:var(--color)}.leftCol-body{padding:4px 0}.leftCol-backdrop{display:block;position:fixed;inset:0;z-index:1150}.dark-mode .leftCol-backdrop{background:rgba(0,0,0,.5)}}.admin-nav{display:flex;margin:8px 0 20px;flex-wrap:wrap}.admin-nav a{display:inline-flex;align-items:center;gap:8px;color:var(--ink-muted);text-decoration:none;font-weight:500;transition:background-color .15s,color .15s;white-space:nowrap;font-family:var(--font-sans);letter-spacing:0;text-transform:none;border-radius:6px;min-height:40px}.admin-nav a:hover{background:var(--paper-bg-alt);color:var(--color)}.admin-nav a i{font-size:12px;width:14px;text-align:center}@media (max-width:767px){.admin-nav{flex-direction:row;display:flex!important;flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none}.admin-nav a{justify-content:flex-start;white-space:nowrap}}.admin-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:16px 0 12px}.admin-toolbar .form-control{max-width:320px}@media (max-width:767px){.admin-toolbar .form-control{max-width:100%;width:100%}}.pagination-compact{display:inline-flex;align-items:center;gap:6px;flex-wrap:nowrap;font-family:var(--font-mono);font-size:12px;color:var(--ink-muted)}.pagination-compact input{width:60px;text-align:center;flex-shrink:0}.pagination-compact .btn{padding:4px 10px;min-height:34px;background:var(--paper-card);border:1px solid var(--border-color);color:var(--color);flex-shrink:0}.pagination-compact>span{white-space:nowrap}.status-badge{display:inline-block;vertical-align:middle;font-family:var(--font-sans);font-weight:500;letter-spacing:.02em;border:1px solid transparent;text-transform:none;font-size:12px;padding:1px 9px 2px;border-radius:999px}.status-badge.status-ready{background:#e8f3ec;color:#2f7a44;border-color:#cfe6d6}.status-badge.status-error{background:#fbe7e7;color:#b42318;border-color:#f3c7c7}.status-badge.status-download,.status-badge.status-preparing{background:#e4f0ee;color:#1f6a64;border-color:#d4d8fa}.status-badge.status-expired,.status-badge.status-expiring,.status-badge.status-removed,.status-badge.status-removing{background:var(--paper-bg-alt);color:var(--ink-muted);border-color:var(--border-color)}.status-badge.status-active{background:#e8f3ec;color:#2f7a44;border-color:#cfe6d6}.admin-section-header{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:24px 0 12px;padding-bottom:8px;border-bottom:1px solid var(--border-color)}.admin-section-header h2{margin:0;font-family:var(--font-sans)!important;font-size:15px!important;font-weight:600!important;letter-spacing:0!important;text-transform:none!important;color:var(--color)!important}.admin-section-header h2 i{margin-right:6px;color:var(--ink-muted)}.admin-section-header .section-count{background:var(--paper-bg-alt);color:var(--ink-muted);border:1px solid var(--border-color);font-family:var(--font-mono);font-size:11px;padding:1px 10px;border-radius:999px}.user-detail-card{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:22px;margin-bottom:24px}.user-detail-card .user-header{display:flex;align-items:center;gap:16px;margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--border-color);flex-wrap:wrap}.user-detail-card .user-header img{border-radius:50%}.user-detail-card .user-header h2{margin:0;display:flex;align-items:center;gap:10px;flex-wrap:wrap;font:600 20px/1.4 var(--font-sans)}.user-detail-grid{display:grid;grid-template-columns:160px 1fr;gap:10px 20px;font-size:.9375rem}.user-detail-grid .detail-label{color:var(--ink-muted);white-space:nowrap;padding-top:2px}.user-detail-grid .detail-value{word-break:break-all;color:var(--color)}@media (max-width:767px){.user-detail-grid{grid-template-columns:1fr}.user-detail-grid .detail-label{margin-top:8px;border-top:1px solid var(--border-color);padding-top:8px}.user-detail-grid .detail-label:first-child{border-top:none;margin-top:0;padding-top:0}}.paper-empty{display:flex;align-items:center;justify-content:center;padding:40px 24px;min-height:min(calc(100vh - 61px),640px)!important}.paper-empty-inner{max-width:560px;text-align:left}.paper-empty-title{margin:18px 0 20px;color:var(--color)}.paper-empty-lede{font-size:18px;line-height:1.55;color:var(--ink-soft);text-wrap:pretty}.paper-empty-cta{display:flex;gap:10px;margin-top:28px;flex-wrap:wrap}.paper-page{margin:0 auto;padding:32px 32px 80px}@media (max-width:991px){.paper-page,.paper-page.container,.paper-page.container-fluid{padding:20px 18px 60px!important}.paper-page .row{margin-left:0;margin-right:0}.paper-page .row>.w-100,.paper-page .row>[class*=col]{padding-left:0;padding-right:0}.navbar.navbar-expand-lg{padding:10px 18px!important}.navbar .navbar-collapse{margin:10px -18px 0;padding:12px 18px 16px;border-top:1px solid var(--border-color);background:var(--header-bg-color)}.navbar .navbar-nav{align-items:stretch!important;gap:2px}.navbar .navbar-nav .nav-item,.navbar .navbar-nav .nav-link{width:100%}.navbar .nav-link{display:flex!important;align-items:center;justify-content:flex-start;margin:0!important;padding:12px 4px!important;border-bottom:1px solid var(--border-color)!important;border-radius:0;font-size:14px;line-height:1.2;gap:0;min-height:44px;box-sizing:border-box}.navbar .nav-link:not(.btn-signin):not(.user-chip){color:var(--color)!important}.navbar .nav-link .fa,.navbar .nav-link .fab,.navbar .nav-link .fas,.navbar .nav-link i{display:inline-flex!important;align-items:center;justify-content:center;width:28px;flex-shrink:0;font-size:16px;line-height:1;margin:0 10px 0 0!important}.navbar .navbar-nav .nav-item:last-child .nav-link,.navbar .navbar-nav>.nav-link:last-child{border-bottom-color:transparent!important}.navbar .nav-item>.nav-link:not(.btn-signin):not(.user-chip)::before{content:'';display:inline-block;width:28px;margin-right:10px;flex-shrink:0}.navbar .nav-link.nav-icon::before,.navbar .nav-link:has(>i)::before{display:none!important}.navbar .nav-link.nav-icon{width:100%!important;height:auto!important;justify-content:flex-start!important;padding:12px 4px!important}.navbar .nav-link.nav-icon::after{content:attr(title);font-family:var(--font-sans);font-size:14px;color:var(--color)}.navbar .btn-signin{display:inline-flex!important;width:auto!important;align-self:flex-start;justify-content:center;height:40px;padding:0 18px!important;margin:14px 0 0!important;border-radius:8px;border-bottom:none!important}.navbar .btn-signin i{margin:0 8px 0 0!important;width:auto!important}.navbar .user-chip-wrap{width:100%}.navbar .user-chip{display:flex!important;width:100%;margin:0!important;padding:10px 4px!important;background:0 0!important;border:none!important;border-bottom:1px solid var(--border-color)!important;border-radius:0!important;justify-content:flex-start;gap:0;min-height:44px}.navbar .user-chip::before{display:none!important}.navbar .user-chip img{width:28px!important;height:28px!important;margin-right:10px!important;flex-shrink:0}.navbar .user-chip .user-chip-name{font-size:14px;font-weight:500;color:var(--color)!important}.navbar .user-chip.dropdown-toggle::after{margin-left:auto;color:var(--ink-muted)}.navbar .user-chip-wrap .dropdown-menu{position:static!important;float:none;width:100%;margin:0!important;padding:0!important;background:0 0!important;border:none!important;box-shadow:none!important;transform:none!important}.navbar .user-chip-wrap .dropdown-menu .dropdown-item{padding:10px 4px 10px 42px!important;font-size:14px;color:var(--ink-muted)!important;background:0 0!important;border-bottom:1px solid var(--border-color);text-align:left!important}.navbar .user-chip-wrap .dropdown-menu .dropdown-item:last-child{border-bottom:none}.navbar .user-chip-wrap .dropdown-divider{display:none}.navbar-brand{border-right:none!important;padding-right:0!important;margin-right:0!important}.dark-mode .navbar .navbar-collapse{background:var(--header-bg-color);border-top-color:var(--border-color)}.dark-mode .navbar .nav-link{border-bottom-color:var(--border-color)!important}.dark-mode .navbar-toggler .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='%23f5f5f5' stroke-width='2' stroke-linecap='round' d='M4 8h22M4 15h22M4 22h22'/%3E%3C/svg%3E")!important}}.status-pill{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;background:var(--paper-bg-alt);border:1px solid var(--border-color);color:var(--ink-soft)}.paper-progress{position:relative;height:auto;background:0 0;margin:18px 0 8px}.paper-progress::before{content:"";display:block;height:8px;background:var(--paper-bg-alt);border-radius:999px}.paper-progress .paper-progress-bar{position:absolute;top:0;left:0;height:8px;border-radius:999px;transition:width .4s ease;min-width:4px}.paper-progress .paper-progress-label{display:flex;justify-content:space-between;align-items:center;margin-top:10px;color:var(--ink-muted)}.paper-progress .paper-progress-pct{color:var(--color)}.paper-error-card{margin-top:18px;padding:20px 22px;background:var(--paper-bg-alt);border:1px solid var(--border-color);border-left:3px solid var(--status-error);border-radius:10px;color:var(--color)}.dark-mode .paper-error-card{border-left-color:var(--status-error)}.paper-ratelimit-card{margin-top:18px;padding:20px 22px;background:var(--paper-bg-alt);border:1px solid var(--border-color);border-left:3px solid var(--status-progress);border-radius:10px;color:var(--color);text-align:left;border-left-color:var(--status-progress)}.dark-mode .paper-ratelimit-card{border-left-color:var(--status-progress)}.paper-ratelimit-head{display:flex;align-items:flex-start;gap:14px}.paper-ratelimit-head>i{font-size:18px;color:var(--status-progress);margin-top:4px;flex-shrink:0}.dark-mode .paper-ratelimit-head>i{color:var(--status-progress)}.paper-ratelimit-card strong{color:var(--color)}.paper-ratelimit-head>.ui-icon{width:18px;height:18px;flex-shrink:0}.paper-ratelimit-card .paper-error-title{font-family:var(--font-sans);font-size:17px;font-weight:600}.paper-ratelimit-card .paper-error-msg{font-family:var(--font-sans);white-space:normal;margin-left:32px}.paper-ratelimit-card .paper-error-eyebrow{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none}.status-pill-ratelimit{border-color:var(--status-progress);color:var(--status-progress)}.dark-mode .status-pill-ratelimit{border-color:var(--status-progress);color:var(--status-progress)}.status-ratelimit{background:var(--status-progress)}.dark-mode .status-ratelimit{background:var(--status-progress)}.paper-error-head{display:flex;align-items:flex-start;gap:14px}.paper-error-head>i{font-size:18px;color:var(--status-error);margin-top:4px;flex-shrink:0}.dark-mode .paper-error-head>i{color:var(--status-error)}.paper-error-eyebrow{color:var(--ink-muted)}.paper-error-title{margin-top:2px;color:var(--color)}.paper-error-msg{margin:12px 0 0;font-size:14px;line-height:1.55;color:var(--ink-soft);font-family:var(--font-mono);word-break:break-word;white-space:pre-wrap}.paper-error-hints{margin:14px 0 0;padding-left:18px;color:var(--ink-soft);font-size:14px;line-height:1.6}.paper-error-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.pr-page{min-height:100%;background:var(--canvas-bg-color)}.pr-page-inner{padding-top:24px;padding-bottom:60px}.pr-header{margin:6px 0 18px}.pr-title{margin:4px 0 10px;font-size:clamp(1.6rem,3vw,2.4rem);line-height:1.15;word-break:break-word}.pr-header-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-family:var(--font-mono);font-size:12px;color:var(--ink-muted)}.pr-header-meta .pr-meta-item{display:inline-flex;align-items:center;gap:6px}.pr-header-meta .pr-meta-item i{color:var(--ink-muted)}.pr-body-card{margin:18px 0 24px;padding:20px 22px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px}.pr-body-card .paper-section-eyebrow{margin-bottom:12px}.paper-tabs{display:flex;flex-wrap:wrap;gap:0;border-bottom:1px solid var(--border-color);margin:18px 0 0}.paper-tabs .paper-tab{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;background:0 0;border:0;border-bottom:2px solid transparent;font-family:var(--font-sans);font-size:14px;font-weight:500;color:var(--ink-muted);cursor:pointer;transition:color .15s ease,border-color .15s ease;margin-bottom:-1px;min-height:44px}.paper-tabs .paper-tab:hover{color:var(--color)}.paper-tabs .paper-tab.active{color:var(--color);border-bottom-color:var(--color)}.paper-tabs .paper-tab i{color:inherit;opacity:.85}.paper-tabs .paper-tab:active,.paper-tabs .paper-tab:focus,.paper-tabs .paper-tab:focus-visible{outline:0;box-shadow:none}.paper-tabs .paper-tab:focus-visible{color:var(--color);background:var(--hover-bg-color);border-radius:6px 6px 0 0}.pr-diff{margin:16px 0 28px;display:flex;flex-direction:column;gap:16px}.diff-file-block{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;overflow:hidden}.diff-file-header{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--paper-bg-alt);border-bottom:1px solid var(--border-color);font-family:var(--font-mono);font-size:13px;color:var(--color)}.diff-file-icon{color:var(--ink-muted);flex-shrink:0}.diff-file-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-break:break-all}.diff-file-status{flex-shrink:0;padding:2px 8px;border-radius:999px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--border-color);color:var(--ink-muted);background:var(--paper-card)}.diff-file-status-added{color:#2f6b3e;border-color:rgba(47,107,62,.35);background:rgba(47,107,62,.08)}.diff-file-status-deleted{color:var(--status-error);border-color:rgba(161,58,46,.35);background:rgba(161,58,46,.08)}.diff-file-status-renamed{color:var(--status-progress);border-color:rgba(138,107,30,.35);background:rgba(138,107,30,.08)}.dark-mode .diff-file-status-added{color:#a7e2a7;border-color:rgba(167,226,167,.35);background:rgba(167,226,167,.08)}.dark-mode .diff-file-status-deleted{color:var(--status-error);border-color:rgba(255,139,123,.35);background:rgba(255,139,123,.08)}.dark-mode .diff-file-status-renamed{color:var(--status-progress);border-color:rgba(255,211,122,.35);background:rgba(255,211,122,.08)}.diff-file-table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:13px;line-height:1.55;table-layout:fixed}.diff-file-table tr.diff-row{vertical-align:top}.diff-file-table .diff-gutter{width:48px;padding:0 10px;text-align:right;color:var(--ink-muted);background:var(--paper-bg-alt);border-right:1px solid var(--border-color);user-select:none;font-variant-numeric:tabular-nums;vertical-align:top;white-space:nowrap}.diff-file-table .diff-gutter-new{border-right:1px solid var(--border-color)}.diff-file-table .diff-sign{width:18px;padding:0 6px;text-align:center;color:var(--ink-muted);background:var(--paper-bg-alt);user-select:none;vertical-align:top}.diff-file-table .diff-code{padding:1px 12px;white-space:pre-wrap;word-break:break-word;color:var(--color)}.diff-row-hunk td{background:var(--paper-bg-alt)!important;color:var(--ink-muted);border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);font-size:12px;letter-spacing:.02em;padding-top:6px;padding-bottom:6px}.diff-row-hunk .diff-code{color:var(--ink-muted)}.diff-row-add .diff-code{background:rgba(47,107,62,.1);color:#1f4a2a}.diff-row-add .diff-gutter,.diff-row-add .diff-sign{background:rgba(47,107,62,.06);color:#2f6b3e}.diff-row-remove .diff-code{background:rgba(161,58,46,.1);color:#6e1f1a}.diff-row-remove .diff-gutter,.diff-row-remove .diff-sign{background:rgba(161,58,46,.06);color:var(--status-error)}.dark-mode .diff-row-add .diff-code{background:rgba(167,226,167,.1);color:#c9f0c9}.dark-mode .diff-row-add .diff-gutter,.dark-mode .diff-row-add .diff-sign{background:rgba(167,226,167,.06);color:#a7e2a7}.dark-mode .diff-row-remove .diff-code{background:rgba(255,139,123,.1);color:#ffc9c0}.dark-mode .diff-row-remove .diff-gutter,.dark-mode .diff-row-remove .diff-sign{background:rgba(255,139,123,.06);color:var(--status-error)}@media (max-width:700px){.diff-file-table{font-size:12px}.diff-file-table .diff-gutter{width:36px;padding:0 6px}.diff-file-table .diff-sign{width:14px;padding:0 4px}.diff-file-table .diff-code{padding:1px 8px}}.pr-comments{list-style:none;margin:16px 0 28px;padding:0;display:flex;flex-direction:column;gap:12px}.pr-comment{padding:16px 18px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px}.pr-comment-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid var(--border-color)}.pr-comment-author{font-weight:600;color:var(--color);font-size:14px;display:inline-flex;align-items:center;gap:6px}.pr-comment-author i{color:var(--ink-muted);font-size:12px}.pr-comment-date{font-family:var(--font-mono);font-size:12px;color:var(--ink-muted);letter-spacing:.02em}.pr-comment-body{color:var(--color);font-size:14px;line-height:1.6}.pr-comment-body :last-child{margin-bottom:0}@media (max-width:700px){.pr-page-inner{padding-top:14px;padding-bottom:40px}.pr-body-card{padding:14px 14px;border-radius:8px}.pr-comment{padding:12px 14px}.paper-tabs .paper-tab{padding:10px 12px;font-size:13px}.pr-diff pre{font-size:12px;padding:12px}}.toast{background-color:var(--paper-card)!important;color:var(--color)!important;border:1px solid var(--border-color)!important;border-radius:10px!important;box-shadow:0 8px 24px rgba(0,0,0,.08);backdrop-filter:none;min-width:280px;max-width:calc(100vw - 24px)}.toast .toast-header{background:0 0!important;color:var(--color)!important;border-bottom:1px solid var(--border-color)!important;font-family:var(--font-sans);padding:10px 12px}.toast .toast-header strong{font-weight:600;color:var(--color);letter-spacing:.01em}.toast .toast-header .close{color:var(--ink-muted)!important;text-shadow:none;opacity:.9;font-size:1.25rem}.toast .toast-header .close:hover{color:var(--color)!important;opacity:1}.toast .toast-body{color:var(--color)!important;padding:12px;font-size:14px;line-height:1.45}.dark-mode .toast{box-shadow:0 8px 24px rgba(0,0,0,.5)}.paper-crumbs{font-family:var(--font-sans);font-size:12px;color:var(--ink-muted);letter-spacing:0}.paper-crumbs .here,.paper-crumbs a{text-decoration:none}.paper-page-title{margin:8px 0 6px;color:var(--color);overflow-wrap:anywhere}.paper-page-lede{color:var(--ink-soft);font-size:16px;line-height:1.55}.paper-meta-rule{display:flex;flex-wrap:wrap;align-items:center;margin:22px 0 18px;padding:12px 0;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);color:var(--ink-muted)}.paper-meta-rule b{color:var(--color);font-weight:500}.paper-section-eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted);font-weight:500;margin-bottom:10px;display:block}.paper-pill{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border:1px solid var(--border-color);color:var(--ink-soft);background:var(--paper-card,#fff)}.paper-pill.accent{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.paper-pill.good{border-color:#2f6b3e;color:#2f6b3e}.paper-pill.warn{border-color:var(--status-progress);color:var(--status-progress)}.paper-pill.bad{border-color:var(--status-error);color:var(--status-error)}.paper-field-label{font-family:var(--font-sans);font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--color);margin-bottom:6px;display:block}.paper-page .form-control{padding:8px 12px;height:auto;background:var(--input-bg);color:var(--input-color)}.paper-page .form-control:focus{color:var(--input-color);background:var(--input-bg)}.form-control:focus,input:focus,select:focus,textarea:focus{color:var(--input-color)!important;background-color:var(--input-bg)!important}.form-control::selection,input::selection,textarea::selection{background:var(--accent-soft);color:var(--input-color)}.dark-mode .form-control::selection,.dark-mode input::selection,.dark-mode textarea::selection{background:rgba(124,199,190,.3);color:var(--input-color)}.btn.btn-ink{background:var(--color);color:var(--canvas-bg-color);border:1px solid var(--color);font-weight:500;border-radius:6px;padding:8px 14px}.btn.btn-ink:hover{background:var(--primary-hover-bg);color:var(--canvas-bg-color);border-color:var(--primary-hover-bg)}.paper-page .dashboard-filter-row{display:flex;align-items:center;gap:10px;padding:14px 0;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);margin:18px 0 0;flex-wrap:wrap}.paper-page .dashboard-filter-row .form-control{height:38px;background:var(--paper-card)}.paper-page .dashboard-filter-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.paper-page .dashboard-filter-row .btn-group .btn,.paper-page .dashboard-filter-row .dropdown-toggle{background:var(--paper-card);border:1px solid var(--border-color);color:var(--color);height:38px;padding:0 14px;font-size:14px;font-weight:500;border-radius:var(--radius-control,6px);display:inline-flex;align-items:center;gap:6px;line-height:1}.paper-page .dashboard-filter-row .dropdown-toggle .filter-btn-label{color:var(--ink-muted);font-weight:500}.paper-page .dashboard-filter-row .dropdown-toggle .filter-btn-label::after{content:"·";margin-left:6px;color:var(--ink-faint)}.paper-page .dashboard-filter-row .dropdown-toggle .filter-btn-value{font-weight:500}.paper-page .dashboard-filter-row .dropdown-toggle .fas{font-size:11px;color:var(--ink-muted)}.paper-page .dashboard-filter-row .btn-group .btn:hover,.paper-page .dashboard-filter-row .dropdown-toggle:hover{background:var(--hover-bg-color);border-color:var(--border-color);color:var(--color)}.paper-page .dashboard-filter-row .btn-group{gap:0}.paper-page .dashboard-filter-row .btn-group .btn{border-radius:0;border-right-width:0}.paper-page .dashboard-filter-row .btn-group .btn:first-child{border-top-left-radius:6px;border-bottom-left-radius:6px}.paper-page .dashboard-filter-row .btn-group .btn:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px;border-right-width:1px}.paper-page .dashboard-filter-row .btn-group .btn.btn-primary{background:var(--color);color:var(--canvas-bg-color);border-color:var(--color)}.paper-page .dashboard-filter-row .search-wrap{flex:1 1 280px;min-width:220px}.paper-page .quota-row{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin:24px 0 0;padding:0;background:0 0;border:none;border-radius:0}.paper-page .quota-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted);opacity:1}.paper-page .quota-value{font-family:var(--font-mono);font-size:13px;font-variant-numeric:tabular-nums;color:var(--color)}.paper-page .quota-value .quota-unlimited-tag{font-family:var(--font-sans);font-size:12px;color:var(--ink-muted);margin-left:4px}.paper-page .quota-track{height:6px;background:var(--paper-bg-alt);border:1px solid var(--border-color);border-radius:999px;overflow:hidden;width:100%;min-width:0}.paper-page .quota-track .quota-fill{height:100%;min-width:2px;border-radius:999px;background:var(--color);transition:width .3s ease}.paper-page .quota-track.quota-warn .quota-fill{background:var(--status-progress)}.paper-page .quota-track.quota-danger .quota-fill{background:var(--status-error)}.paper-page .quota-track.quota-unlimited{background:repeating-linear-gradient(-45deg,var(--paper-bg-alt) 0 4px,var(--border-soft,var(--border-color)) 4px 6px)}.paper-page .repo-list{margin-top:8px}.paper-page .repo-list-item{padding:20px 0;gap:16px;border-bottom:1px solid var(--border-soft,var(--border-color))}.paper-page .repo-list-item:first-child{border-top:none}.paper-page .repo-list-item-header{gap:10px;margin-bottom:6px}.paper-page .repo-name{font-family:var(--font-mono);font-size:15px;color:var(--color)}.paper-page .repo-source{font-size:13px;color:var(--ink-soft);opacity:1;gap:10px}.paper-page .repo-source a{color:var(--ink-soft);border-bottom:1px dotted var(--border-color)}.paper-page .repo-source a:hover{color:var(--color)}.paper-page .repo-meta{font-family:var(--font-mono);font-size:12px;color:var(--ink-muted);opacity:1;gap:16px;margin-top:10px}.paper-page .type-badge{font-family:var(--font-mono);font-size:11px;padding:3px 8px;letter-spacing:.1em}.paper-page .repo-list-item-actions .dropdown-toggle{background:var(--paper-card);border:1px solid var(--border-color);color:var(--color);border-radius:6px;font-size:13px;padding:6px 12px;height:auto}.paper-settings{max-width:1180px;margin:0 auto;padding:48px 32px 80px}.paper-settings .paper-page-title{max-width:14em}.paper-settings-body{display:grid;margin-top:24px;grid-template-columns:180px minmax(0,1fr)}.paper-settings-toc{position:sticky;top:32px;align-self:start}.paper-settings-toc-head{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted);margin-bottom:12px}.paper-settings-toc nav{display:flex;flex-direction:column;gap:2px}.paper-settings-toc nav a{padding:8px 0 8px 14px;color:var(--ink-soft);font-size:14px;text-decoration:none}.paper-settings-toc nav a.active,.paper-settings-toc nav a:hover{color:var(--color);border-left-color:var(--color)}.paper-settings-main{min-width:0;max-width:720px}.paper-settings-section{padding:28px 0;border-bottom:1px solid var(--border-soft,var(--border-color))}.paper-settings-section:first-child{padding-top:0}.paper-settings-section:last-of-type{border-bottom:none}.paper-settings-section .form-group{margin-bottom:18px}.paper-settings-section .form-check{padding:10px 0 10px 28px;border-bottom:1px solid var(--border-soft,var(--border-color))}.paper-settings-section .form-check:last-child{border-bottom:none}.paper-settings-section .form-check-label{font-family:var(--font-sans);font-size:14px;font-weight:500;color:var(--color);cursor:pointer}.paper-settings-section .form-check-input{cursor:pointer;width:16px;height:16px;margin-top:3px;margin-left:-28px;accent-color:var(--color)}.paper-settings-section .form-text{color:var(--ink-soft);font-size:13px;margin-top:4px;max-width:48em}.paper-settings-section .paper-section-copy{margin:-4px 0 14px}.paper-settings-footer{padding-top:24px;display:flex;flex-direction:column;gap:14px}.paper-settings-footer .btn-ink{align-self:flex-start}.paper-inline-alert{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:var(--radius-control,6px);border:1px solid var(--border-color);background:var(--paper-bg-alt);font-size:13px;color:var(--color)}.paper-inline-alert i{margin-top:2px;color:var(--ink-muted)}.paper-inline-alert-error{border-color:var(--status-error);background:var(--status-error-soft)}.paper-inline-alert-error i{color:var(--status-error)}.paper-account-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--border-color);border-radius:var(--radius-surface,10px);background:var(--paper-card);margin-bottom:20px}.paper-account-card img{flex-shrink:0}.paper-account-identity{flex:1 1 auto;min-width:0}.paper-account-name{font-family:var(--font-mono);font-size:14px;font-weight:500;color:var(--color)}.paper-account-meta{font-size:13px;color:var(--ink-muted);margin-top:2px}.paper-danger-zone{padding:16px;border:1px solid var(--status-error);border-radius:var(--radius-surface,10px);background:var(--status-error-soft)}.paper-danger-head{font-weight:600;font-size:14px;color:var(--status-error);margin-bottom:6px}.paper-danger-copy{font-size:13px;color:var(--ink-soft);max-width:52em;margin-bottom:12px}.paper-danger-zone .paper-inline-alert{margin-bottom:12px}.btn.btn-outline-danger{background:0 0;color:var(--status-error);border:1px solid var(--status-error);font-weight:500;border-radius:var(--radius-control,6px);padding:8px 14px}.btn.btn-outline-danger:hover{background:var(--status-error);color:#fff;border-color:var(--status-error)}.btn-outline-danger{border:1px solid color-mix(in srgb,var(--status-error) 45%,transparent)!important;color:var(--status-error)!important;background:0 0!important}.navbar .user-menu{min-width:260px}.navbar .user-menu .dropdown-item{display:flex;align-items:flex-start;gap:10px;padding:8px 10px!important}.navbar .user-menu .dropdown-item i{width:16px;margin-top:3px;font-size:13px;color:var(--ink-muted);text-align:center}.navbar .user-menu .dropdown-item span{display:flex;flex-direction:column;line-height:1.3}.navbar .user-menu .dropdown-item small{font-size:12px;color:var(--ink-muted)}.navbar .user-menu .dropdown-header{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);padding:8px 10px 6px}@media (max-width:900px){.paper-settings-toc{position:static}.paper-settings-toc nav{flex-direction:row;flex-wrap:wrap;gap:8px}.paper-settings-toc nav a{border-bottom:2px solid transparent;padding:4px 0}.paper-settings-toc nav a.active,.paper-settings-toc nav a:hover{border-bottom-color:var(--color);border-left:none}}.paper-table{display:block;margin-top:12px;overflow:visible!important}.paper-table .paper-table-head,.paper-table .paper-table-row{display:grid;grid-template-columns:minmax(280px,2.4fr) minmax(140px,1fr) 140px 90px 140px 52px;align-items:center;gap:18px;padding:12px 4px}.paper-table.paper-table-conferences .paper-table-head,.paper-table.paper-table-conferences .paper-table-row{grid-template-columns:minmax(280px,2.4fr) 140px 90px 220px 52px}.paper-table.paper-table-repos .paper-table-head,.paper-table.paper-table-repos .paper-table-row{grid-template-columns:minmax(280px,2.4fr) minmax(140px,1fr) 90px 140px 52px}.paper-table.paper-table-repos.has-bulk .paper-table-head,.paper-table.paper-table-repos.has-bulk .paper-table-row{grid-template-columns:28px minmax(280px,2.4fr) minmax(140px,1fr) 90px 140px 52px;gap:12px}.paper-table .admin-users-row{grid-template-columns:28px minmax(280px,2.4fr) 90px 120px 100px 52px!important;gap:12px!important}.paper-table.paper-table-dashboard .paper-table-head,.paper-table.paper-table-dashboard .paper-table-row{gap:20px;padding:8px 4px}.paper-table.paper-table-dashboard .cell-anon .anon-text{gap:2px}.paper-table.paper-table-dashboard .cell-anon .repo-name{padding:0}.paper-table .paper-table-head{border-bottom:1px solid var(--border-color);color:var(--ink-muted);padding-top:8px;padding-bottom:8px}.paper-table .paper-table-head .sortable{cursor:pointer;user-select:none;display:inline-flex;align-items:center;gap:6px;background:0 0;border:none;padding:2px 0;margin:0;font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;border-radius:4px}.paper-table .paper-table-head .sortable:hover{color:var(--color)}.paper-table .paper-table-head .sortable.active{color:var(--color)}.paper-table .paper-table-head .sortable i{font-size:10px}.paper-table .paper-table-head .num,.paper-table .paper-table-row .num{text-align:right}.paper-table .paper-table-head .num .sortable{flex-direction:row-reverse}.paper-table .paper-table-row{border-top:1px solid var(--border-soft,var(--border-color));font-size:14px;transition:background-color .12s ease}.paper-table .paper-table-row:hover{background:var(--hover-bg-color)}.paper-table .paper-table-row.row-clickable{cursor:pointer}.paper-table .paper-table-row.repo-inactive>:not(.cell-actions){opacity:1!important}.paper-table .paper-table-row.repo-error{background:var(--status-error-soft)}.paper-table .paper-table-row.repo-error:hover{background:var(--status-error-soft-hover)}.cell-status .status-sub.status-sub-error,.paper-table .cell-status .status-sub-error{color:var(--status-error)}.paper-table .cell-status .status-sub-warn{color:var(--status-progress)}.paper-table .cell-anon{display:flex;align-items:center;min-width:0}.paper-table .cell-anon .type-badge{flex-shrink:0;min-width:52px;justify-content:center}.paper-table .cell-anon .anon-text{min-width:0;display:flex;flex-direction:column;gap:3px}.paper-table .cell-anon .anon-title{display:flex;align-items:center;gap:8px;min-width:0}.paper-table .cell-anon .anon-title .type-badge{margin-left:0}.paper-table .cell-anon .repo-name{font-family:var(--font-mono);font-size:14px;color:var(--color);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;max-width:100%;padding:2px 0}.paper-table .cell-anon .repo-name-static{color:var(--ink-muted);font-style:italic}.paper-table .cell-anon .anon-sub{font-family:var(--font-sans);font-size:13px;color:var(--ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:10px;min-width:0}.paper-table .cell-anon .anon-sub .anon-source{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-table .cell-anon .anon-sub .conf-tag{flex:0 1 auto;min-width:72px;max-width:50%}.paper-table .cell-anon .anon-sub a{color:var(--ink-muted);border-bottom:1px dotted var(--border-color);padding:4px 0;margin:-4px 0}.paper-table .cell-anon .anon-sub a:hover{color:var(--color)}.paper-table .cell-anon .anon-sub .commit-hash{font-family:var(--font-mono);font-size:12px}.paper-table .cell-conf{font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-table .cell-conf span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-table .cell-status{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;font-size:14px;color:var(--color);min-width:0}.paper-table .cell-status .status-line{display:inline-flex;align-items:center;gap:8px}.paper-table .cell-status .status-sub{flex-basis:100%;font-family:var(--font-sans);font-size:13px;line-height:1.3;color:var(--ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-table .cell-views{color:var(--color)}.paper-table .cell-expires{font-family:var(--font-sans);font-size:13px;color:var(--ink-soft)}.paper-table .cell-expires .expires-never{color:var(--ink-muted)}.paper-table .cell-expires .expires-past{color:var(--ink-muted)}.paper-table .empty-dash{color:var(--ink-faint)}.paper-table .cell-actions{display:flex;justify-content:flex-end}.status-dot{width:8px;height:8px;border-radius:999px;display:inline-block;flex-shrink:0}.status-dot.status-ready{background:var(--status-ready)}.status-dot.status-error{background:var(--status-error)}.status-dot.status-preparing,.status-dot.status-progress{background:var(--status-progress)}.status-dot.status-expired,.status-dot.status-removed{background:var(--status-inactive)}.dashboard-page{padding-bottom:96px;--dashboard-space-xs:4px;--dashboard-space-sm:8px;--dashboard-space-md:12px;--dashboard-space-lg:16px;--dashboard-space-xl:24px}.dashboard-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:12px;font-size:13px;color:var(--ink-muted)}.dashboard-meta .dashboard-count{font-variant-numeric:tabular-nums}.btn-link-inline{background:0 0;border:none;padding:2px 4px;margin:-2px 0;font:inherit;color:var(--link-color);cursor:pointer;border-radius:4px}.btn-link-inline:hover{color:var(--link-hover-color);text-decoration:underline}.btn.btn-outline-ink{background:0 0;color:var(--color);border:1px solid var(--border-color);font-weight:500;border-radius:var(--radius-control,6px);padding:8px 14px}.btn.btn-outline-ink:hover{background:var(--hover-bg-color);color:var(--color);border-color:var(--ink-faint)}.paper-page .dropdown-menu .dropdown-item-danger,.paper-page .dropdown-menu .dropdown-item-danger i{color:var(--status-error)}.paper-page .dropdown-menu .dropdown-item-danger:focus,.paper-page .dropdown-menu .dropdown-item-danger:hover{background:var(--status-error-soft-hover);color:var(--status-error)}.paper-page .dropdown-menu button.dropdown-item{width:100%;text-align:left;background:0 0;border:none}.paper-page .dropdown-menu .dropdown-divider{border-top-color:var(--border-soft,var(--border-color));margin:4px 0}.paper-table .paper-table-skeleton{pointer-events:none}.skeleton{display:block;background:var(--paper-bg-alt);border-radius:4px;position:relative;overflow:hidden}.skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,var(--hover-bg-color),transparent);animation:skeleton-shimmer 1.4s infinite}.skeleton-line{height:12px}.skeleton-line+.skeleton-line{margin-top:8px}.skeleton-line-sm{height:10px}.skeleton-badge{width:52px;height:22px;border-radius:999px;flex-shrink:0}@keyframes skeleton-shimmer{to{transform:translateX(100%)}}@media (prefers-reduced-motion:reduce){.skeleton::after{animation:none}}.paper-table .paper-table-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:56px 20px;color:var(--ink-muted);text-align:center;border-top:1px solid var(--border-soft,var(--border-color))}.paper-table .paper-table-empty>i{font-size:1.5rem;color:var(--ink-faint)}.paper-table .paper-table-empty-actions{display:flex;gap:8px;margin-top:8px}.bulk-bar{display:flex;align-items:center;gap:8px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:8px;padding:8px 12px;margin:8px 0}.paper-page.admin-page .paper-page-title{margin:4px 0}.paper-page.admin-page .paper-page-lede{display:none}.paper-page.admin-page .paper-crumbs{margin-bottom:4px}.paper-page.admin-page .admin-nav{margin:6px 0 12px}.admin-filter-toolbar{display:flex;flex-direction:column;gap:6px;margin:8px 0 12px;position:sticky;top:0;z-index:4;box-shadow:0 1px 0 var(--canvas-bg-color)}@media (max-width:900px){.admin-filter-toolbar{position:static;box-shadow:none}}.admin-filter-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.admin-filter-row .search-wrap{flex:1;min-width:220px;position:relative}.admin-filter-row .search-wrap .form-control{height:34px;padding-right:40px}.admin-filter-inline{font-size:12px;color:var(--ink-muted)}.admin-filter-inline>label{font-size:10px;color:var(--ink-muted);margin:0;white-space:nowrap}.admin-filter-inline .form-control-sm{height:28px;padding:2px 8px;font-size:12px}.admin-filter-inline input[type=search].form-control-sm,.admin-filter-inline input[type=text].form-control-sm{width:130px}.admin-filter-inline input[type=date].form-control-sm{width:130px}.admin-filter-inline select.form-control-sm{width:auto;min-width:88px}.admin-filter-inline .arrow{color:var(--ink-muted);font-size:11px}.admin-filter-spacer{flex:1}.admin-active-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px;color:var(--ink-muted)}.admin-active-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 4px 2px 10px;border:1px solid var(--border-color);border-radius:999px;background:var(--hover-bg-color);color:var(--color)}.admin-active-chip .key{color:var(--ink-muted);font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em}.admin-active-chip button{background:0 0;border:none;cursor:pointer;padding:0 4px;color:var(--ink-muted);font-size:12px;border-radius:50%}.admin-active-chip button:hover{color:#b42318}.admin-search-hint{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-family:var(--font-mono);font-size:11px;color:var(--ink-muted);pointer-events:none;border:1px solid var(--border-color);border-radius:4px;padding:1px 5px;background:var(--paper-card)}.paper-table-row.row-selected{background:rgba(47,122,68,.06)}.paper-table-empty{color:var(--ink-muted);display:flex;flex-direction:column;align-items:center;gap:8px}.paper-table-empty>i{font-size:1.5rem}.paper-table-empty>span{max-width:440px;text-align:center}.q-header{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:4px}.q-header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.q-range-btns{overflow:hidden;display:inline-flex!important;gap:2px!important;padding:3px!important;border-radius:9px!important}.q-range-btns .btn+.btn{border-left:1px solid var(--border-color)}.q-cards{display:flex;gap:10px;margin:16px 0;flex-wrap:wrap}.q-card{flex:1;min-width:140px;background:var(--paper-card);border:1px solid var(--border-color);padding:14px 16px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.q-card:hover{border-color:var(--ink-muted)}.q-card-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.q-dot{width:8px;height:8px;border-radius:50%;background:#2f7a44;flex-shrink:0}.q-dot-red{background:#b42318}.dark-mode .q-dot{background:#7dc894}.dark-mode .q-dot-red{background:#f08a82}.q-card-name{font-weight:500;color:var(--ink-muted)}.q-card-count{line-height:1.1;color:var(--color);margin-bottom:6px}.q-card-sub{color:var(--ink-muted)}.q-card-bar{height:4px;background:var(--border-color);border-radius:2px;overflow:hidden;margin-top:6px}.q-card-bar-fill{height:100%;background:#1f6a64;border-radius:2px;transition:width .3s}.dark-mode .q-card-bar-fill{background:#7cc7be}.q-detail{display:grid;grid-template-columns:1fr 320px;gap:16px;margin-bottom:20px;align-items:stretch!important}.q-throughput{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:16px 20px;flex-direction:column}.q-throughput canvas{width:100%;display:block}.q-throughput:has(.q-chart-empty) .q-chart-wrap{flex:1 1 auto!important;height:auto!important;min-height:160px!important}.q-throughput:has(.q-chart-empty) .q-chart-wrap canvas{visibility:hidden}.q-chart-wrap canvas{max-height:none!important;position:absolute;inset:0}.q-chart-tooltip{position:absolute;pointer-events:none;background:var(--paper-card);border:1px solid var(--border-color);border-radius:6px;padding:6px 10px;font-family:var(--font-mono);font-size:11px;line-height:1.6;white-space:nowrap;box-shadow:0 2px 8px rgba(0,0,0,.15);z-index:10}.q-chart-tooltip .q-tip-time{color:var(--ink-muted);margin-bottom:2px}.q-chart-tooltip .q-tip-completed{color:#1f6a64}.q-chart-tooltip .q-tip-failed{color:#b42318}.dark-mode .q-chart-tooltip .q-tip-completed{color:#7cc7be}.dark-mode .q-chart-tooltip .q-tip-failed{color:#f08a82}.q-chart-crosshair{position:absolute;top:0;width:1px;height:100%;background:var(--ink-muted);opacity:.3;pointer-events:none;z-index:9}.q-stats-panel{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:16px 20px;display:flex;flex-direction:column}.q-section-label{margin-bottom:14px}.q-section-right{float:right}.q-legend-completed{color:#1f6a64}.q-legend-failed{color:#b42318;margin-left:8px}.q-legend-exec{margin-left:8px}.dark-mode .q-legend-completed{color:#7cc7be}.dark-mode .q-legend-failed{color:#f08a82}.q-chart-tooltip .q-tip-exec{color:var(--status-progress)}.dark-mode .q-chart-tooltip .q-tip-exec{color:var(--status-progress)}.q-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 20px;flex:1}.q-stat-label{margin-bottom:2px}.q-stat-value{color:var(--color);line-height:1.2}.q-stats-actions{margin-top:16px;padding-top:14px;border-top:1px solid var(--border-color);display:grid!important;grid-template-columns:auto auto 1fr}.q-stats-actions .btn{font-family:var(--font-mono);font-size:11px;padding:6px 14px;border-radius:8px;background:var(--paper-card);border:1px solid var(--border-color);color:var(--color)}.q-jobs{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:16px 20px;overflow-x:auto}.q-jobs-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:12px}.q-state-filters{display:inline-flex;gap:6px;flex-wrap:wrap}.q-state-toggle{display:inline-flex;align-items:center}.q-state-toggle input{display:none}.q-state-chip{padding:3px 10px;border-radius:10px;transition:opacity .15s,background .15s}.q-state-toggle input:checked+.q-state-chip{opacity:1}.q-state-toggle input:not(:checked)+.q-state-chip{opacity:.45}.q-state-badge,.q-state-chip{font-weight:600}.q-state-badge{border-radius:8px}.q-state-active{background:#dbeafe;color:#1d4ed8}.q-state-waiting{background:#fef3c7;color:#92400e}.q-state-delayed{background:#e0e7ff;color:#4338ca}.q-state-failed{background:#fee2e2;color:#b91c1c}.q-state-completed{background:#dcfce7;color:#166534}.dark-mode .q-state-active{background:rgba(59,130,246,.2);color:#93bbfd}.dark-mode .q-state-waiting{background:rgba(251,191,36,.15);color:#fbbf24}.dark-mode .q-state-delayed{background:rgba(99,102,241,.2);color:#7cc7be}.dark-mode .q-state-failed{background:rgba(239,68,68,.2);color:#fca5a5}.dark-mode .q-state-completed{background:rgba(34,197,94,.15);color:#86efac}.q-cell-state{width:120px}.q-delay-hint{display:block;font-size:10px;color:var(--ink-muted);margin-top:2px}.q-search-row{display:flex;align-items:center;gap:10px;margin-bottom:12px}.q-search-row .form-control{max-width:320px;height:34px}.q-auto-refresh{font-size:11px;color:var(--ink-muted);display:inline-flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap}.q-table{width:100%;border-collapse:collapse}.q-table thead th{font-family:var(--font-mono);font-size:10px;font-weight:500;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em;padding:8px 10px;border-bottom:1px solid var(--border-color);text-align:left;white-space:nowrap}.q-table tbody tr{border-bottom:1px solid var(--border-color);transition:background .1s}.q-table tbody tr:hover{background:var(--paper-bg-alt)}.q-table tbody tr:last-child{border-bottom:none}.q-table tbody td{padding:10px 10px;font-size:.875rem;vertical-align:middle}.q-cell-id{font-family:var(--font-mono);font-size:12px;align-items:center;gap:8px}.q-chevron{font-size:10px;color:var(--ink-muted);transition:transform .15s;flex-shrink:0}.q-chevron-open{transform:rotate(90deg)}.q-cell-id a{color:var(--color)}.q-cell-num{font-size:12px;text-align:center;white-space:nowrap}.q-cell-progress{min-width:120px}.q-progress-wrap{display:flex;align-items:center;gap:8px}.q-progress-bar{flex:1;height:6px;border-radius:3px;overflow:hidden;background-image:linear-gradient(to right,#1f6a64 var(--pct,0),var(--border-color) var(--pct,0))}.dark-mode .q-progress-bar{background-image:linear-gradient(to right,#7cc7be var(--pct,0),var(--border-color) var(--pct,0))}.q-progress-label{font-family:var(--font-mono);font-size:11px;color:var(--ink-muted);white-space:nowrap;min-width:32px;text-align:right}.q-cell-actions{text-align:right;white-space:nowrap}.q-cell-actions .btn{padding:3px 8px;font-size:11px;background:0 0;border:1px solid var(--border-color);color:var(--ink-muted)}.q-cell-actions .btn:hover{color:var(--color)}.q-row-failed{background:rgba(180,35,24,.04)}.dark-mode .q-row-failed{background:rgba(240,138,130,.06)}.q-error-reason{color:#b42318;font-size:.8125rem;margin-bottom:4px}.dark-mode .q-error-reason{color:#f08a82}.q-toast-error{background:#fbe7e7;color:#b42318;border:1px solid #f3c7c7;border-radius:8px;padding:10px 16px;margin-bottom:12px;font-family:var(--font-mono);font-size:12px;cursor:pointer;display:flex;align-items:center;gap:8px}.dark-mode .q-toast-error{background:rgba(240,138,130,.1);color:#f08a82;border-color:rgba(240,138,130,.25)}.q-error-stack{font-size:.75rem;max-height:120px;overflow:auto;margin:4px 0 0;background:var(--paper-bg-alt);border:1px solid var(--border-color);border-radius:6px;padding:8px 10px}.q-row-expanded>td{border-bottom-color:transparent}.q-detail-row>td{padding:0 10px 14px!important;border-bottom:1px solid var(--border-color)}.q-job-detail{background:var(--paper-bg-alt);border:1px solid var(--border-color);border-radius:8px;padding:14px 16px}.q-job-detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px 20px;margin-bottom:10px}.q-job-detail-item{display:flex;flex-direction:column;gap:2px}.q-job-detail-label{font-weight:500;color:var(--ink-muted)}.q-job-detail-value{font-family:var(--font-mono);font-size:12px;color:var(--color);word-break:break-all}.q-job-detail-value a{color:var(--color)}.q-job-detail-error{margin:8px 0}.q-job-detail-actions{display:flex;gap:8px;margin-top:12px;padding-top:10px;border-top:1px solid var(--border-color)}.q-job-detail-actions .btn{padding:5px 12px;border-radius:6px;background:var(--paper-card);border:1px solid var(--border-color);color:var(--color)}@media (max-width:900px){.q-detail{grid-template-columns:1fr}.q-cards{flex-direction:column}.q-card{min-width:100%}.q-jobs-header{flex-direction:column;align-items:flex-start}.q-search-row{flex-wrap:wrap}.q-search-row .form-control{max-width:100%;flex:1}.q-table{font-size:12px}.q-header{flex-direction:column}.q-job-detail-grid{grid-template-columns:1fr 1fr}}@media (max-width:900px){.paper-table .paper-table-head{display:none}.paper-table .admin-users-row,.paper-table .paper-table-row,.paper-table.paper-table-conferences .paper-table-row,.paper-table.paper-table-repos .paper-table-row{display:flex!important;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:14px 0;grid-template-columns:none!important}.paper-table .cell-anon{flex:1 1 calc(100% - 52px);min-width:0;order:1}.paper-table .cell-actions{flex:0 0 auto;order:2;align-self:center}.paper-table .cell-conf,.paper-table .cell-expires,.paper-table .cell-status,.paper-table .cell-views{order:3;font-size:13px;color:var(--ink-muted);display:inline-flex;align-items:center;gap:6px;text-align:left}.paper-table .cell-status{flex-wrap:nowrap;gap:6px;min-width:0}.paper-table .cell-status .status-sub{flex-basis:auto;font-size:13px;line-height:inherit}.paper-table .cell-status .status-sub::before{content:"·";margin-right:6px;color:var(--ink-faint)}.paper-table .cell-conf{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-table .cell-views.num{text-align:left}.paper-table .paper-table-skeleton .cell-expires,.paper-table .paper-table-skeleton .cell-status,.paper-table .paper-table-skeleton .cell-views{flex:1 1 30%}.paper-table .cell-views::before{font-family:'Font Awesome 5 Free';font-weight:900;font-size:10px}.paper-table .cell-expires::before{font-family:'Font Awesome 5 Free';font-weight:400;font-size:10px}.paper-table .cell-conf::before{content:'\f51c';font-family:'Font Awesome 5 Free';font-weight:900;font-size:10px;color:var(--ink-muted)}.paper-table-dashboard .cell-conf::before{content:none}.paper-table .cell-conf:has(.empty-dash),.paper-table .cell-expires:has(.empty-dash){display:none}.paper-table .cell-expires::before,.paper-table .cell-views::before{color:var(--ink-faint)}}.paper-page .dropdown-menu{background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface,10px);box-shadow:0 12px 28px rgba(26,24,21,.08);padding:6px;min-width:220px;font-family:var(--font-sans);font-size:14px;color:var(--color);margin-top:6px}.paper-page .dropdown-menu .dropdown-header{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-muted);padding:8px 10px 6px;font-weight:500}.paper-page .dropdown-menu .dropdown-item{border-radius:6px;padding:8px 10px;color:var(--color);font-size:14px;display:flex;align-items:center;gap:8px}.paper-page .dropdown-menu .dropdown-item:focus,.paper-page .dropdown-menu .dropdown-item:hover{background:var(--hover-bg-color);color:var(--color)}.paper-page .dropdown-menu .dropdown-item i{width:16px;font-size:13px;color:var(--ink-muted)}.paper-page .dropdown-menu .form-check.dropdown-item{padding:8px 10px 8px 36px!important;position:relative}.paper-page .dropdown-menu .form-check.dropdown-item .form-check-input{position:absolute;left:12px;top:50%;transform:translateY(-50%);margin:0;width:16px;height:16px;accent-color:var(--color);cursor:pointer}.paper-page .dropdown-menu .form-check.dropdown-item .form-check-label{font-family:var(--font-sans);font-size:14px;color:var(--color);font-weight:400;margin:0;cursor:pointer}.btn.btn-icon-dots{width:32px;height:32px;padding:0;border:1px solid transparent;background:0 0;color:var(--ink-muted);border-radius:6px;display:inline-flex;align-items:center;justify-content:center;line-height:1}.btn.btn-icon-dots:focus,.btn.btn-icon-dots:hover,.btn.btn-icon-dots[aria-expanded=true]{background:var(--hover-bg-color);border-color:var(--border-color);color:var(--color)}.btn.btn-icon-dots::after{display:none}.btn.btn-icon-dots i{font-size:15px}.paper-page .repo-list-empty{border-top:none;padding:56px 20px;color:var(--ink-muted)}.paper-page .filter-chip{background:var(--paper-bg-alt);color:var(--color);border:1px solid var(--border-color);padding:4px 10px}@media (max-width:768px){.paper-page .paper-page-title{margin:4px 0 2px}.paper-page .btn-ink{font-size:13px}.paper-page .quota-row{grid-template-columns:1fr;gap:12px;padding:0;margin:16px 0 0}.paper-page .dashboard-filter-row{padding:10px 0;margin-top:12px;gap:8px}.paper-page .quota-header{flex-direction:row;align-items:baseline;gap:8px}.paper-page .quota-value{white-space:nowrap}.paper-page .dashboard-filter-controls{width:100%}.paper-page .dashboard-filter-controls .btn-group{flex:1 1 100%;display:flex}.paper-page .dashboard-filter-controls .btn-group .btn{flex:1;justify-content:center}.paper-page .dashboard-filter-controls .dropdown{flex:1 1 0;min-width:0}.paper-page .dashboard-filter-controls .dropdown .dropdown-toggle{width:100%;justify-content:space-between}.paper-page .dashboard-filter-controls .dropdown .filter-btn-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media (max-width:480px){.paper-page .paper-page-lede{-webkit-box-orient:vertical;-webkit-line-clamp:unset}}.paper-page .progress{height:10px;background:var(--paper-bg-alt);border:1px solid var(--border-color);border-radius:999px;overflow:hidden;margin-bottom:20px}.paper-page .progress .progress-bar{background:var(--color);color:var(--canvas-bg-color);font-family:var(--font-mono);font-size:10px;line-height:10px}.paper-page .progress .progress-bar.bg-success{background:var(--status-ready)!important}.paper-page .progress .progress-bar.bg-warning{background:var(--status-progress)!important;color:#fff}.paper-page .progress .progress-bar.bg-danger{background:var(--status-error)!important}.paper-page .progress .progress-bar.bg-dark{background:var(--ink-faint)!important}.paper-page .form>h5,.paper-page form>h5,.paper-page>h5{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted);margin:24px 0 8px}.paper-page .accordion .card{background:var(--paper-card,var(--sidebar-bg-color));border:1px solid var(--border-color);border-radius:8px!important;margin-bottom:8px;overflow:hidden}.paper-page .accordion .card+.card{border-top:1px solid var(--border-color)}.paper-page .accordion .card-header{background:0 0;border:none;padding:0}.paper-page .accordion .card-header .btn{color:var(--color)!important;font-family:var(--font-sans);font-weight:500;font-size:14px;padding:14px 18px!important;background:0 0!important;border:none!important;position:relative}.paper-page .accordion .card-header .btn::after{content:"+";position:absolute;right:18px;font-family:var(--font-serif);font-size:20px;color:var(--ink-muted)}.paper-page .accordion .card-header .btn:not(.collapsed)::after{content:"–"}.paper-page .accordion .card-body{padding:6px 18px 18px!important;border-top:1px solid var(--border-soft)}.paper-page .accordion .form-check-label{color:var(--color);font-weight:500;font-size:14px}.paper-page .accordion .form-text{color:var(--ink-muted);font-size:12px;margin-top:2px}.faq-section .panel-body code{font-family:var(--font-mono);font-size:13px;padding:1px 6px;background:var(--paper-bg-alt);border:1px solid var(--border-color);border-radius:3px;color:var(--color)}.faq-section .panel-body a{color:var(--accent)}@media (max-width:820px){.paper-faq-toc{position:static}}.paper-footer{margin-top:80px;padding:56px max(20px,calc((100% - 1076px)/ 2)) 28px;border-top:1px solid var(--border-color);background:var(--canvas-bg-color);font-family:var(--font-sans)}@media (max-width:480px){.paper-footer .paper-footer-inner{grid-template-columns:repeat(3,minmax(0,1fr))!important;column-gap:12px!important}}@media (max-width:480px){.paper-footer .paper-footer-brand{grid-column:1/-1!important}}.paper-footer-inner{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:40px}.paper-footer-brand .paper-footer-mark{font-family:var(--font-serif);font-size:22px;letter-spacing:-.01em;color:var(--color)}.paper-footer-brand .paper-footer-mark em{font-style:italic;font-weight:400}.paper-footer-tag{margin-top:10px;color:var(--ink-soft);font-size:14px;line-height:1.55;max-width:340px}.paper-footer-head{margin-bottom:14px}.paper-footer-col a{display:block;color:var(--color);font-size:14px;padding:4px 0;text-decoration:none}.paper-footer-col a:hover{color:var(--accent)}.paper-footer-rule{height:1px;background:var(--border-color);margin:40px 0 16px}.paper-footer-foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font-size:13px;color:var(--ink-muted);font-family:var(--font-sans);letter-spacing:0}.paper-footer-foot .paper-footer-meta{font-family:var(--font-serif);font-style:italic;font-size:14px;letter-spacing:0;color:var(--ink-soft)}@media (max-width:768px){.paper-footer-inner{grid-template-columns:1fr 1fr}}@media (min-width:1100px){.paper-footer-inner{grid-template-columns:calc(50% - 10px) repeat(3,minmax(0,1fr))!important;column-gap:20px!important}}.file.folder.truncated .truncated-warning{color:var(--status-progress);margin-left:4px;font-size:.85em;flex-shrink:0}.file.folder.truncated>a{color:var(--status-progress)}.errors-page .errors-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:4px 0 8px}.errors-page .errors-actions{display:flex;gap:6px}.errors-page .kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin:14px 0 18px}.errors-page .kpi-card{background:var(--paper-card);border:1px solid var(--border-color);padding:18px 20px;display:flex;flex-direction:column;gap:4px;transition:box-shadow 160ms ease,transform 160ms ease}.errors-page .kpi-label{color:var(--ink-muted);font-family:var(--font-sans)!important}.errors-page .kpi-value{line-height:1;margin-top:2px;color:var(--color)}.errors-page .kpi-sub{font-size:.75rem;font-style:normal!important}.errors-page .kpi-sub.up{font-style:normal}.errors-page .kpi-sub.down{font-style:normal}.errors-page .dropped-warn{color:var(--bucket-error-fg);font-weight:600;font-style:normal}.errors-page .volume-chart{background:var(--paper-card);border:1px solid var(--border-color);border-radius:12px;padding:18px 22px;margin-bottom:18px}.errors-page .volume-head{display:flex;justify-content:space-between;align-items:center;color:var(--ink-muted);margin-bottom:10px}.errors-page .volume-legend{display:flex;gap:14px;align-items:center;text-transform:none;letter-spacing:0;font-family:var(--font-sans)}.errors-page .volume-legend .dot{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:middle}.errors-page .dot.dot-error{background:var(--bucket-error-dot)}.errors-page .dot.dot-warn{background:var(--bucket-warn-dot)}.errors-page .dot.dot-info{background:var(--bucket-info-dot)}.errors-page .volume-bars{display:flex;align-items:flex-end;gap:4px;height:80px}.errors-page .volume-bar{display:flex;flex-direction:column-reverse;flex:1 1 0;min-width:6px;height:100%}.errors-page .volume-bar .seg{display:block;width:100%}.errors-page .seg.seg-error{background:var(--bucket-error-dot)}.errors-page .seg.seg-warn{background:var(--bucket-warn-dot)}.errors-page .seg.seg-info{opacity:1!important}.errors-page .errors-toolbar{display:flex;align-items:center;margin-bottom:12px;flex-wrap:nowrap!important;gap:8px!important}.errors-page .errors-toolbar .search-wrap{position:relative}.errors-page .errors-toolbar .search-wrap input{width:100%;padding:6px 10px 6px 32px;border:1px solid var(--border-color);border-radius:8px;font-family:var(--font-mono);font-size:.8125rem;background:var(--input-bg);color:var(--input-color)}.errors-page .errors-toolbar .search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--ink-muted);font-size:.875rem}.errors-page .errors-toolbar .filter-count{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:.75rem;color:var(--ink-muted)}.errors-page .errors-toolbar .select-wrap{display:inline-flex;align-items:center;gap:6px}.errors-page .errors-toolbar .select-wrap label{color:var(--ink-muted);margin:0}.errors-page .errors-toolbar .select-wrap select{background:var(--input-bg);color:var(--input-color);border:1px solid var(--border-color);border-radius:8px}.errors-page .errors-toolbar .autoref{display:inline-flex;gap:6px;align-items:center;font-size:.8125rem;color:var(--color);cursor:pointer;margin:0}.errors-page .btn-icon{width:32px;padding:4px 0}.errors-page .errors-list{background:var(--paper-card);border:1px solid var(--border-color);border-radius:12px;overflow:hidden}.errors-page .errors-list-head,.errors-page .errors-row-main{display:grid;gap:16px;padding:18px 20px;grid-template-columns:120px 104px 120px minmax(0,1fr) 64px 72px!important}.errors-page .errors-list-head{padding:12px 20px;align-items:center;font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted);border-bottom:1px solid var(--border-color)}.errors-page .errors-row{border-bottom:1px solid var(--border-soft)}.errors-page .errors-row:last-child{border-bottom:none}.errors-page .errors-row.open{background:var(--paper-bg-alt)}.errors-page .errors-row-main{cursor:pointer;align-items:center!important;padding-top:8px!important;padding-bottom:8px!important;min-height:44px!important}.errors-page .errors-row-main:hover{background:var(--hover-bg-color)}.errors-page .col-when .when-rel{color:var(--color);font-variant-numeric:tabular-nums}.errors-page .col-when .when-abs{font-family:var(--font-mono);font-size:.75rem;color:var(--ink-muted);font-variant-numeric:tabular-nums;margin-top:2px}.errors-page .col-sev{display:flex;align-items:center;gap:8px}.errors-page .sev-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.errors-page .sev-dot.sev-error{background:var(--bucket-error-dot)}.errors-page .sev-dot.sev-warn{background:var(--bucket-warn-dot)}.errors-page .sev-label{color:var(--color)}.errors-page .pill-module{display:inline-block;font-family:var(--font-mono);font-size:.75rem;background:var(--paper-bg-alt);color:var(--ink-soft);border:1px solid var(--border-color);padding:3px 10px;border-radius:6px}.errors-page .col-msg .msg-code{font-family:var(--font-mono);color:var(--color);font-weight:600}.errors-page .col-msg .msg-context{color:var(--ink-muted);font-style:italic;font-size:.875rem;margin-left:10px}.errors-page .col-msg .msg-detail{color:var(--ink-soft);font-family:var(--font-mono);font-size:.8125rem;margin-left:10px}.errors-page .col-msg .msg-url{color:var(--ink-muted);font-family:var(--font-mono);font-size:.8125rem;margin-top:6px;word-break:normal!important}.errors-page .count-pill{display:inline-block;padding:2px 8px;border-radius:4px;background:var(--primary-bg);color:var(--primary-color);font-family:var(--font-mono);font-size:.75rem;font-variant-numeric:tabular-nums}.errors-page .count-pill.count-pill-muted{background:0 0;color:var(--ink-muted);border:1px solid var(--border-color)}.errors-page .status-pill{display:inline-block;padding:2px 10px;border-radius:4px;font-family:var(--font-mono);font-size:.8125rem;font-variant-numeric:tabular-nums;border:1px solid transparent}.errors-page .status-pill.status-error{background:var(--bucket-error-bg);color:var(--bucket-error-fg);border-color:var(--bucket-error-bd)}.errors-page .status-pill.status-warn{background:var(--bucket-warn-bg);color:var(--bucket-warn-fg);border-color:var(--bucket-warn-bd)}.errors-page .errors-row-detail{padding:0 16px 16px}.errors-page .detail-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border-color);margin-bottom:12px}.errors-page .detail-tabs button{background:0 0;border:0;border-bottom:2px solid transparent;padding:8px 12px;font-size:.875rem;cursor:pointer;color:var(--ink-muted);font-family:var(--font-sans)}.errors-page .detail-tabs button.active{color:var(--color);border-bottom-color:var(--color)}.errors-page .detail-body{display:grid;grid-template-columns:1fr 260px;gap:20px}.errors-page .detail-main pre{background:var(--paper-card);border:1px solid var(--border-color);border-radius:12px;padding:18px 22px;font-family:var(--font-mono);font-size:.875rem;line-height:1.7;color:var(--color);max-height:26em;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;box-shadow:var(--card-shadow)}.errors-page .related-list{background:var(--paper-card);border:1px solid var(--border-color);border-radius:12px;max-height:22em;overflow:auto;box-shadow:var(--card-shadow)}.errors-page .stack-pre{line-height:1.45;white-space:pre;overflow-x:auto}.errors-page .related-row{display:flex;gap:10px;padding:6px 12px;align-items:center;border-bottom:1px solid var(--border-soft);font-size:.8125rem}.errors-page .related-row:last-child{border-bottom:none}.errors-page .detail-actions{display:flex;gap:6px;align-items:center;margin-top:10px}.errors-page .copy-hint{font-size:.75rem;color:var(--bucket-info-fg)}.errors-page .detail-aside{background:var(--paper-card);border:1px solid var(--border-color);border-radius:12px;padding:18px;box-shadow:var(--card-shadow)}.errors-page .aside-block+.aside-block{margin-top:16px}.errors-page .aside-label{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted);margin-bottom:4px}.errors-page .aside-value{font-family:var(--font-serif);font-size:1rem;color:var(--color);word-break:break-word;line-height:1.3}.errors-page .aside-value.mono{font-family:var(--font-mono);font-size:.8125rem}.errors-page .aside-sub{color:var(--ink-muted);font-style:italic;font-size:.8125rem;font-family:var(--font-sans)}.errors-page .errors-pager{display:flex;justify-content:space-between;align-items:center;padding:10px 0;color:var(--ink-muted);font-size:.875rem}@media (max-width:720px){.errors-page .errors-list-head .col-mod,.errors-page .errors-list-head .col-sev,.errors-page .errors-row-main .col-mod,.errors-page .errors-row-main .col-sev{display:none}.errors-page .detail-body{grid-template-columns:1fr}}.overview-page .ov-header{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:2px}.overview-page .ov-dot-ok{background:#2f7a44}.overview-page .ov-dot-warn{background:var(--status-progress)}.overview-page .ov-dot-idle{background:var(--ink-muted)}.dark-mode .overview-page .ov-dot-ok{background:#7dc894}.dark-mode .overview-page .ov-dot-warn{background:var(--status-progress)}.overview-page .ov-kpi-row{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin:16px 0 22px}.overview-page .ov-kpi-card{background:var(--paper-card,#fff);border:1px solid var(--border-color);padding:18px 22px;display:flex;flex-direction:column;gap:4px;transition:box-shadow 160ms ease}.overview-page .ov-kpi-card:hover{box-shadow:var(--card-shadow-hover)}.overview-page .ov-kpi-label{color:var(--ink-muted)}.overview-page .ov-kpi-value{line-height:1;margin-top:2px;color:var(--color)}.dark-mode .overview-page .ov-kpi-value.ov-val-warn{color:#f08a82}.overview-page .ov-kpi-sub{font-size:.75rem;color:var(--ink-muted);margin-top:2px;text-overflow:ellipsis}.overview-page .ov-daily-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:-4px 0 22px}.overview-page .ov-daily-card{border:1px solid var(--border-color);padding:16px 20px}.overview-page .ov-daily-label{color:var(--ink-muted)}.overview-page .ov-daily-value{line-height:1;margin-top:6px}.overview-page .ov-daily-sub{font-size:.75rem;color:var(--ink-muted);margin-top:5px}.dark-mode .overview-page .ov-daily-card{background:var(--paper-card)}.overview-page .ov-chart-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:18px}.overview-page .ov-chart-card{background:var(--paper-card,#fff);border:1px solid var(--border-color);border-radius:12px;padding:18px 22px 14px}.overview-page .ov-chart-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.overview-page .ov-chart-legend{font-size:.6875rem;color:var(--ink-muted);display:flex;align-items:center;gap:5px}.overview-page .ov-dot-legend{display:inline-block;width:8px;height:8px;border-radius:50%}.overview-page .ov-dot-accent{background:var(--accent,#1f6a64)}.overview-page .ov-spark-bars{display:flex;align-items:flex-end;gap:3px;height:140px}.overview-page .ov-spark-col{flex:1;display:flex;align-items:flex-end;height:100%;position:relative}.overview-page .ov-spark-fill{width:100%;background:var(--accent,#1f6a64);border-radius:2px 2px 0 0;transition:height .3s ease;opacity:.55}.overview-page .ov-spark-col:hover .ov-spark-fill{opacity:1}.overview-page .ov-spark-col.has-tip::after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 10px);transform:translateX(-50%) translateY(4px);z-index:10;padding:6px 8px;border-radius:6px;background:var(--color);color:var(--canvas-bg-color);font-family:var(--font-mono);font-size:.6875rem;line-height:1;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity 120ms ease,transform 120ms ease}.overview-page .ov-spark-col.has-tip::before{content:"";position:absolute;left:50%;bottom:calc(100% + 4px);transform:translateX(-50%) translateY(4px);z-index:10;border:5px solid transparent;border-top-color:var(--color);opacity:0;pointer-events:none;transition:opacity 120ms ease,transform 120ms ease}.overview-page .ov-spark-col.has-tip:hover::after,.overview-page .ov-spark-col.has-tip:hover::before{opacity:1;transform:translateX(-50%) translateY(0)}.overview-page .ov-spark-x{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:.6875rem;color:var(--ink-muted);margin-top:6px}.overview-page .ov-triple-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin-bottom:18px}.overview-page .ov-panel-card{background:var(--paper-card,#fff);border:1px solid var(--border-color);border-radius:12px;padding:18px 20px}.overview-page .ov-panel-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px}.overview-page .ov-panel-meta{color:var(--ink-muted)}.overview-page .ov-panel-foot{margin-top:12px;padding-top:10px;border-top:1px solid var(--border-color);font-size:.8125rem}.overview-page .ov-panel-foot a{color:var(--link-color);text-decoration:none}.overview-page .ov-panel-foot a:hover{text-decoration:underline}.overview-page .ov-performance{min-width:0;margin:22px 0}.overview-page .ov-performance-head{align-items:center;flex-wrap:wrap;gap:12px 20px}.overview-page .ov-performance-head h2{margin:0 0 4px}.overview-page .ov-performance-note{margin:0 0 12px;font-size:12px;line-height:1.5;color:var(--ink-muted)}.overview-page .ov-performance-head .ov-performance-note{margin:0}.overview-page .ov-performance-window{display:flex;align-items:center;gap:8px;flex-shrink:0}.overview-page .ov-performance-window label{margin:0;font-size:12px;color:var(--ink-muted)}.overview-page .ov-performance-window select{width:auto}.overview-page .ov-metrics-scroll{max-width:100%;overflow-x:auto;border:1px solid var(--border-color);border-radius:var(--radius-control,8px)}.overview-page .ov-metrics-table{width:100%;border-collapse:collapse;color:var(--color);font-size:13px;line-height:1.5;font-variant-numeric:tabular-nums}.overview-page .ov-metrics-table td,.overview-page .ov-metrics-table th{padding:10px 12px;border-bottom:1px solid var(--border-color);vertical-align:middle;white-space:nowrap}.overview-page .ov-metrics-table thead th{background:var(--paper-bg-alt);color:var(--ink-muted);font-size:12px;font-weight:500}.overview-page .ov-metrics-table .num{text-align:right}.overview-page .ov-metrics-table tr:last-child>*{border-bottom:0}.overview-page .ov-metrics-table thead tr:last-child>*{border-bottom:1px solid var(--border-color)}.overview-page .ov-metrics-table tbody tr:hover{background:var(--hover-bg-color)}.overview-page .ov-metrics-table .ov-metric-name{min-width:190px;max-width:280px;text-align:left;white-space:normal;overflow-wrap:anywhere;font-weight:500}.overview-page .ov-metrics-table small{display:block;margin-top:3px;font-size:11px;font-weight:400;color:var(--ink-muted)}.overview-page .ov-metrics-table small .ui-icon{width:12px;height:12px}.overview-page .ov-metric-warning-row{background:rgba(196,138,46,.07)}.overview-page .ov-metric-warn,.overview-page .ov-metrics-table small.ov-metric-warn{color:#946519}.dark-mode .overview-page .ov-metric-warn,.dark-mode .overview-page .ov-metrics-table small.ov-metric-warn{color:var(--status-progress)}.overview-page .ov-performance-message{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 12px;margin:0 0 16px;border:1px solid var(--border-color);border-radius:var(--radius-control,8px);font-size:13px;line-height:1.5}.overview-page .ov-performance-message span{flex:1;min-width:160px}.overview-page .ov-performance-warning{background:rgba(196,138,46,.07)}.overview-page .ov-performance-empty{margin:0;padding:24px 12px;text-align:center;font-size:13px;color:var(--ink-muted)}.overview-page .ov-performance-help{margin-top:16px;font-size:12px;line-height:1.6;color:var(--ink-muted)}.overview-page .ov-performance-help summary{width:fit-content;cursor:pointer}.overview-page .ov-performance-help p{margin:8px 0 0;max-width:80ch}@media (max-width:575px){.overview-page .ov-performance{padding:16px 12px}.overview-page .ov-performance-window{width:100%}.overview-page .ov-performance-window select{flex:1;min-width:0}}.overview-page .ov-stacked-bar{display:flex;height:18px;border-radius:6px;overflow:hidden;margin-bottom:14px}.overview-page .ov-bar-seg{transition:width .4s ease}.overview-page .ov-bar-ready{background:#2f7a44}.overview-page .ov-bar-preparing{background:var(--status-progress)}.overview-page .ov-bar-error{background:#b42318}.overview-page .ov-bar-expired{background:var(--ink-faint)}.overview-page .ov-bar-removed{background:#b5afa2}.dark-mode .overview-page .ov-bar-ready{background:#7dc894}.dark-mode .overview-page .ov-bar-preparing{background:var(--status-progress)}.dark-mode .overview-page .ov-bar-error{background:#f08a82}.dark-mode .overview-page .ov-bar-expired{background:#6b665e}.dark-mode .overview-page .ov-bar-removed{background:#4a453e}.overview-page .ov-bar-legend{display:flex;flex-direction:column;gap:6px}.overview-page .ov-legend-item{display:flex;align-items:center;gap:8px;font-size:.8125rem;text-decoration:none;color:inherit}.overview-page .ov-legend-item:hover{text-decoration:none;color:inherit}.overview-page .ov-swatch{display:inline-block;width:12px;height:12px;border-radius:3px;flex-shrink:0}.overview-page .ov-legend-n{margin-left:auto;font-family:var(--font-mono);font-size:.8125rem;font-weight:600}.overview-page .ov-error-bars{display:flex;flex-direction:column;gap:12px}.overview-page .ov-ebar-row{display:flex;align-items:center;gap:10px}.overview-page .ov-ebar-label{font-size:.75rem;color:var(--ink-muted)}.overview-page .ov-ebar-track{flex:1;height:10px;background:var(--hover-bg-color);border-radius:5px;overflow:hidden}.overview-page .ov-ebar-fill{height:100%;border-radius:5px;transition:width .4s ease}.overview-page .ov-ebar-error{background:#b42318}.overview-page .ov-ebar-warn{background:var(--status-progress)}.dark-mode .overview-page .ov-ebar-error{background:#f08a82}.dark-mode .overview-page .ov-ebar-warn{background:var(--status-progress)}.overview-page .ov-ebar-n{width:36px;text-align:right;font-family:var(--font-mono);font-size:.8125rem;font-weight:600;flex-shrink:0}.overview-page .ov-routes-table{display:flex;flex-direction:column}.overview-page .ov-route-row{display:grid;grid-template-columns:1fr 60px 60px 60px;padding:8px 0;border-bottom:1px solid var(--border-soft,var(--border-color));text-decoration:none;color:inherit;font-size:.875rem;align-items:center}.overview-page .ov-route-row:last-child{border-bottom:none}.overview-page .ov-route-row:hover{background:var(--hover-bg-color);text-decoration:none;color:inherit}.overview-page .ov-route-head{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);border-bottom:1px solid var(--border-color)}.overview-page .ov-route-head:hover{background:0 0}.overview-page .ov-route-name{font-size:.8125rem}.overview-page .ov-route-n{text-align:right;font-size:.8125rem}.overview-page .ov-route-lat{color:var(--ink-muted)}.overview-page .ov-n-bad{color:#b42318;font-weight:600}.dark-mode .overview-page .ov-n-bad{color:#f08a82}.overview-page .ov-services-card{background:var(--paper-card,#fff);border:1px solid var(--border-color);border-radius:12px;padding:18px 22px;box-shadow:var(--card-shadow);margin-bottom:18px}.overview-page .ov-services-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:16px}.overview-page .ov-services-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}.overview-page .ov-svc{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border:1px solid var(--border-soft,var(--border-color));border-radius:10px}.overview-page .ov-svc-dot{width:10px;height:10px;border-radius:50%;margin-top:3px;flex-shrink:0}.overview-page .ov-svc-info{display:flex;flex-direction:column;gap:1px;flex:1}.overview-page .ov-svc-name{font-family:var(--font-mono);font-size:.875rem;font-weight:600}.overview-page .ov-svc-meta{font-size:.75rem;color:var(--ink-muted)}@media (max-width:900px){.overview-page .ov-kpi-row{grid-template-columns:repeat(3,1fr)}.overview-page .ov-daily-row{grid-template-columns:repeat(3,1fr)}.overview-page .ov-triple-row{grid-template-columns:1fr}}@media (max-width:720px){.overview-page .ov-kpi-row{grid-template-columns:repeat(2,1fr)}.overview-page .ov-daily-row{grid-template-columns:1fr}.overview-page .ov-chart-row{grid-template-columns:1fr}.overview-page .ov-header{flex-direction:column;gap:8px}}.admin-page .errors-header .paper-page-title,.admin-page .ov-header .paper-page-title,.admin-page .q-header .paper-page-title{margin-bottom:0!important}@media (max-width:480px){.overview-page .ov-kpi-row{grid-template-columns:1fr 1fr}.overview-page .ov-services-grid{grid-template-columns:1fr 1fr}}.dashboard-heading-actions{flex-direction:column;padding-bottom:12px}.dashboard-heading-actions .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px}@media (max-width:767px){.dashboard-heading-actions{padding-bottom:0}}.paper-settings-connection-link{display:flex;align-items:center;gap:12px;padding:18px 0;color:var(--color);font-size:14px}.paper-settings-connection-link>i{color:var(--ink-muted);font-size:18px}.paper-settings-connection-link>span:first-of-type{flex:1}.paper-settings-connection-link small{display:block;margin-top:4px;color:var(--ink-muted);font-size:12px}.paper-settings-connection-link:hover{color:var(--accent);text-decoration:none}.paper-settings-connection-link:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.connections-heading .paper-page-title{font-size:clamp(38px,4.5vw,56px);margin-bottom:12px}.connections-heading .paper-page-lede{font-size:15px}.connections-grid{border-top:1px solid var(--border-color);padding-top:28px;display:grid!important;grid-template-columns:1fr 1fr!important}.connections-grid>section{min-width:0;background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);padding:20px;display:flex;flex-direction:column}.connection-title,.connection-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.connection-top{margin-bottom:24px;min-height:28px}.connection-top>i{color:var(--ink-muted);font-size:24px}.connection-top>.fa-key{font-size:18px}.connection-title{margin-bottom:10px}.connections-page h2{font-family:inherit;font-size:22px;font-weight:600;letter-spacing:-.5px;margin:0}.connections-page p{font-size:14px;line-height:1.65;color:var(--ink-muted)}.connection-badge{background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:600;border-radius:5px;padding:4px 8px;white-space:nowrap}.connection-badge-muted{background:var(--paper-bg-alt);color:var(--ink-muted)}.connection-status{display:inline-flex;align-items:center;gap:6px;color:var(--ink-muted)}.connection-status::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}.connection-status.is-connected{color:var(--status-ready)}.connection-actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin:22px 0 16px}.connections-page .btn{font-size:13px;padding:9px 13px;white-space:normal}.connection-revoke p,.connections-page .connection-help{font-size:12px}.connection-link{display:inline-flex;align-items:center;gap:8px;border:0;padding:0;background:0 0;color:var(--accent);font-size:13px;line-height:1.6;font-weight:500;text-align:left;cursor:pointer}.connection-link:hover{color:var(--link-hover-color);text-decoration:underline}.connection-link:disabled{color:var(--ink-muted);opacity:.65;cursor:not-allowed;text-decoration:none}.connection-link:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.connection-installations{list-style:none;padding:0;margin:18px 0}.connection-installations li{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 0;font-size:12px;padding-top:0!important}.connection-revoke{border-top:1px solid var(--border-soft);padding-top:18px;margin-top:24px}.connection-danger{color:var(--status-error)}.connection-resources{margin-top:36px;padding-top:28px;border-top:1px solid var(--border-color)}.connection-count{color:var(--ink-muted);font-size:12px}.connection-empty{display:flex;align-items:center;gap:18px;padding:20px 0;margin:22px 0}.connection-empty>i{font-size:22px;color:var(--ink-muted)}.connection-empty h3{font-size:14px;font-weight:600;margin:0 0 5px}.connection-empty p{font-size:12px;margin:0}.connection-empty>a{margin-left:auto;flex-shrink:0}.connection-resource{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:20px 0;border-bottom:1px solid var(--border-color)}.connection-resource-name{flex:1;min-width:180px;overflow-wrap:anywhere;font-size:14px}.connection-resource-name small{display:block;color:var(--ink-muted);font-size:11px;margin-top:5px}.connection-resource-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.connection-resource-actions .connection-help{flex-basis:100%}.connections-page .connection-footnote{display:flex;align-items:baseline;gap:10px;margin-top:22px;font-size:12px}@media (max-width:767px){.connections-grid{grid-template-columns:1fr!important}.connections-grid>section+section{border-top:1px solid var(--border-color);padding-top:28px}.connection-empty{flex-wrap:wrap}.connection-empty>div{flex:1;min-width:180px}.connection-empty>a{margin-left:40px}.connection-resource-actions{flex-basis:100%}}.paper-table-empty-actions .btn{display:inline-flex;align-items:center;justify-content:center;gap:6px}.paper-table-empty-actions .btn>i{font-size:1em;line-height:1;color:inherit;margin-right:0!important}.auth-layout{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start}.auth-intro,.auth-options{padding-top:28px}.auth-title-mobile{display:none}.auth-intro .paper-page-title{margin:18px 0 24px}.auth-intro .paper-page-lede{max-width:330px}.auth-options{display:grid;gap:28px}.auth-options h2{font-family:inherit;font-size:22px;font-weight:600;margin:0 0 10px}.auth-options p{font-size:14px;line-height:1.65;color:var(--ink-muted)}.auth-permissions{padding:6px 0 12px;list-style:none;font-size:13px;line-height:1.6}.auth-permissions li{display:flex;gap:10px;margin:12px 0}.auth-permissions i{color:var(--status-ready);margin-top:4px}.auth-continue{display:flex!important;align-items:center;justify-content:space-between;min-height:48px;padding:12px 16px!important}.auth-options small{display:block;font-size:12px;text-align:center;color:var(--ink-muted);margin-top:12px}.auth-legacy{border-top:1px solid var(--border-color);padding-top:24px}.auth-legacy h2{font-size:16px;margin:0}.auth-legacy p{font-size:13px}.source-url-label-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;margin-bottom:8px}.source-url-label-row>.paper-field-label{font-family:var(--font-sans);font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--color);margin-bottom:6px;display:block}.repo-access{margin:0}.repo-access-details{margin:12px 0 24px}.source-url-label-row .repo-access-switch{padding:2px}.source-url-label-row .repo-access-switch button{padding:6px 10px;font-size:12px;line-height:20px}.repo-access-main{display:flex;align-items:center;gap:10px;padding:0 0 8px;flex-wrap:wrap}.repo-access-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.repo-access-switch{display:inline-flex;gap:3px;padding:3px;border:1px solid var(--border-color);border-radius:7px;flex-wrap:wrap}.repo-access-switch button{border:0;border-radius:4px;background:0 0;color:var(--ink-muted);padding:7px 10px;font:inherit;font-size:12px;cursor:pointer}.repo-access-switch button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);opacity:1;cursor:default;font-weight:600}.repo-access-switch button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.repo-access-details .btn{font-size:12px;padding:8px 12px}.repo-access-note{display:flex;gap:6px 16px;flex-wrap:wrap;padding:0;color:var(--ink-muted);font-size:11px;line-height:1.6;max-width:none!important}@media (max-width:767px){.auth-page{max-width:480px}.auth-intro .paper-eyebrow,.auth-title-desktop{display:none}.auth-title-mobile{display:inline}.auth-layout{grid-template-columns:1fr;gap:24px}.auth-intro,.auth-options{padding-top:0}.auth-intro .paper-page-title{margin:6px 0 12px}.auth-intro .paper-page-lede{max-width:none;margin:0}.auth-options{gap:24px}.auth-options .connection-top{margin-bottom:16px}.auth-options h2{font-size:18px}.auth-options p{font-size:13px;margin-bottom:12px}.auth-permissions{padding:0;margin:14px 0 20px;font-size:12px}.auth-permissions li{margin:8px 0}.auth-continue{font-size:14px}.auth-legacy{padding-top:20px}.auth-legacy h2{font-size:15px}.auth-legacy .connection-link{min-height:44px}.repo-access-controls{width:100%;gap:12px}}.paper-eyebrow,.paper-faq-eyebrow,.paper-stats-meta{font-family:var(--font-sans)!important;font-size:12.5px!important;font-weight:600!important;letter-spacing:.06em!important;color:var(--ink-soft)!important}.text-muted{color:var(--ink-muted)!important}.draft-status{font-size:13px;color:var(--ink-muted);display:flex;align-items:center;flex-wrap:wrap;gap:6px 12px;padding:10px 0}.anonymize-preview-status{padding:20px 32px;color:var(--ink-muted)}.anonymize-preview-status p{margin:0 0 12px}@media (max-width:575px){.dashboard-page .paper-page-lede{margin-bottom:8px}.anonymize-preview-status{padding:16px}}.paper-page.admin-page .paper-page-title{font-size:28px}.paper-page .paper-page-lede{font-size:14px;line-height:1.5;overflow-wrap:anywhere}.paper-settings{padding-top:32px}.paper-settings-body{gap:40px;padding-top:24px;border-top:0}.paper-settings-main .paper-settings-section{background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);padding:20px;margin-bottom:16px}.anonymize-page .paper-section-eyebrow,.paper-settings .paper-section-eyebrow{font-family:var(--font-sans);font-size:16px;font-weight:600;color:var(--color);text-transform:none;letter-spacing:-.01em;margin-bottom:12px}.paper-settings .paper-settings-toc-head{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none}.paper-settings-section .paper-section-copy{margin-top:0}.paper-settings .quota-row{gap:24px}.paper-settings .quota-header{flex-direction:column;align-items:flex-start;gap:4px}.paper-settings .quota-value{white-space:nowrap}.paper-settings .paper-settings-footer{padding:0 0 20px}.paper-settings .form-control{font-size:14px;border-color:var(--border-color);border-radius:var(--radius-control)}.paper-settings .form-check{padding-top:8px;padding-bottom:8px}.anonymize-page .btn-ink,.explorer-page .btn-ink,.paper-page .btn-ink{background:var(--accent);color:#fff;border-color:var(--accent)}.dark-mode .anonymize-page .btn-ink,.dark-mode .explorer-page .btn-ink,.dark-mode .paper-page .btn-ink{color:#1a1815}.anonymize-page .btn-ink:hover,.explorer-page .btn-ink:hover,.paper-page .btn-ink:hover{background:var(--accent);border-color:var(--accent);color:#fff;filter:brightness(.94)}.dark-mode .anonymize-page .btn-ink:hover,.dark-mode .explorer-page .btn-ink:hover,.dark-mode .paper-page .btn-ink:hover{color:#1a1815}.anonymize-page .btn-ink:active,.explorer-page .btn-ink:active,.paper-page .btn-ink:active{filter:brightness(.9)}.explorer-page>.explorer-main{grid-row:2;grid-column:2;min-height:0}.explorer-page.files-hidden>.explorer-main{grid-column:1/-1}.explorer-page>.leftCol .leftCol-search{padding-top:12px!important}@media (max-width:991px){.explorer-page{grid-template-columns:minmax(0,1fr)}}@media (max-width:991px){.explorer-page>.explorer-main{grid-column:1/-1}}@media (max-width:991px){.explorer-page>.leftCol .leftCol-close{width:44px!important;height:44px!important}}@media (max-width:767px){.explorer-page{grid-template-rows:auto auto minmax(0,1fr)}}@media (max-width:767px){.explorer-page>.viewer-bar{grid-row:1}}@media (max-width:767px){.explorer-page>.explorer-main,.explorer-page>.leftCol{grid-row:3!important}}input[type=date],select{color-scheme:light}.dark-mode input[type=date],.dark-mode select{color-scheme:dark}.draft-discard{padding:0;border:0;color:var(--accent);font:inherit;font-size:13px;text-decoration:underline;background:0 0;cursor:pointer}.conference-feedback{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px;margin-top:16px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);width:100%}.paper-table{background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface)}.dashboard-page .paper-table-dashboard{width:100%}.paper-account-email{margin:20px 0}.paper-account-email .form-control{max-width:420px}.paper-settings .paper-account-email .btn[type=submit]{min-height:36px;padding:7px 18px;white-space:nowrap}.paper-table .paper-table-head{font-family:var(--font-sans);text-transform:none;letter-spacing:0;font-size:12px;border-radius:var(--radius-surface) var(--radius-surface) 0 0}.paper-table .paper-table-head,.paper-table .paper-table-row{padding-left:16px;padding-right:16px}.dashboard-page{padding-top:var(--dashboard-space-xl)}.project-type-svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.project-empty-icon{width:28px;height:28px;color:var(--ink-faint)}.project-type-icon{display:inline-flex;color:var(--ink-muted);flex-shrink:0}.dashboard-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--dashboard-space-lg)}.dashboard-heading .paper-page-title{font-size:28px;margin-bottom:var(--dashboard-space-xs)}.dashboard-heading .btn{min-height:40px;display:inline-flex;gap:var(--dashboard-space-sm);align-items:center}.dashboard-new-mobile{display:none}.dashboard-quota{position:relative;margin:0;padding:0;border:0;background:0 0}.dashboard-quota>summary{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:5px 10px;border:1px solid var(--border-color);border-radius:6px;background:var(--paper-card);color:var(--color);font-family:var(--font-sans);font-size:12px;cursor:pointer;list-style:none;white-space:nowrap}.dashboard-quota>summary::-webkit-details-marker{display:none}.dashboard-quota>summary:hover,.dashboard-quota[open]>summary{background:var(--paper-bg-alt);border-color:var(--ink-faint)}.quota-summary-label{font-weight:600}.quota-summary-value{color:var(--ink-muted);font-variant-numeric:tabular-nums}.quota-summary-ring{flex-shrink:0;fill:none;stroke-width:2.5}.quota-ring-track{stroke:var(--border-color)!important;stroke-width:3!important}.quota-ring-fill{stroke:var(--accent)!important;stroke-width:3!important;transform:rotate(-90deg);transform-origin:12px 12px}.quota-summary-ring.quota-warn .quota-ring-fill{stroke:var(--status-progress)}.quota-summary-ring.quota-danger .quota-ring-fill{stroke:var(--status-error)}.quota-ring-unlimited{stroke:var(--accent);stroke-width:1.7}.quota-summary-chevron{width:14px;height:14px;margin-left:2px;color:var(--ink-muted);transition:transform .15s ease}.dashboard-quota[open] .quota-summary-chevron{transform:rotate(180deg)}.dashboard-quota .quota-panel{position:absolute;z-index:25;top:calc(100% + 8px);left:0;width:344px;max-width:calc(100vw - 36px);padding:16px;border:1px solid var(--border-color);border-radius:12px;background:var(--paper-card);box-shadow:0 12px 36px rgba(26,24,21,.16)}.quota-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.quota-panel-heading h2{font:600 15px var(--font-sans);margin:0}.quota-panel-heading .project-close{margin:-8px -8px -8px 0}.paper-page .quota-usage{display:grid;grid-template-columns:1fr;gap:16px;margin:0;padding:0}.quota-usage .quota-item+.quota-item{padding-top:16px;border-top:1px solid var(--border-soft,var(--border-color))}.quota-usage .quota-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.quota-usage .quota-label{display:inline-flex;align-items:center;gap:8px;font:500 12px var(--font-sans);letter-spacing:0;text-transform:none;color:var(--ink-muted)}.quota-usage .quota-label .project-type-svg{width:16px;height:16px}.quota-usage .quota-value{display:flex;align-items:baseline;gap:4px;font:12px var(--font-sans);font-variant-numeric:tabular-nums;color:var(--ink-muted);margin-bottom:8px}.quota-usage .quota-value strong{font-size:20px;line-height:1.2;font-weight:600;color:var(--color)}.quota-percent,.quota-usage .quota-unlimited-tag{margin-left:auto;padding:2px 6px;border-radius:4px;background:var(--paper-bg-alt);font:11px var(--font-sans);color:var(--ink-muted);white-space:nowrap}.quota-warn>.quota-header .quota-percent{color:var(--status-progress)}.quota-danger>.quota-header .quota-percent{color:var(--status-error)}.quota-usage .quota-track{height:5px;border:0;background:var(--paper-bg-alt)}.quota-usage .quota-track .quota-fill{min-width:0;background:var(--accent)}.quota-remaining{margin:6px 0 0;color:var(--ink-muted);font-size:11px}.quota-remaining.quota-limit{color:var(--status-error)}.quota-loading{font-size:12px;color:var(--ink-muted);margin:12px 0 0}.dashboard-page .dashboard-filter-row{display:flex;align-items:center;gap:var(--dashboard-space-md);padding:0;margin:var(--dashboard-space-lg) 0 0;border:0;background:0 0}.dashboard-page .dashboard-filter-row .search-wrap{flex:1 1 240px;min-width:0}.dashboard-page .dashboard-filter-row .form-control{padding:8px 12px;font-size:13px;background:var(--paper-card)}.dashboard-page .dashboard-filter-controls{display:flex;flex-wrap:nowrap;align-items:center;gap:var(--dashboard-space-sm)}.dashboard-extra-filters{display:flex;gap:var(--dashboard-space-sm)}.dashboard-filters-toggle{display:none}.dashboard-page .dashboard-filter-row .btn-group .btn{border:0;background:0 0;border-radius:6px;height:36px;padding:6px 10px}.dashboard-page .dashboard-filter-row .btn-group .btn.btn-primary{background:var(--accent-soft);color:var(--accent)}.dashboard-page .dashboard-filter-row .btn-group .btn.btn-primary:active,.dashboard-page .dashboard-filter-row .btn-group .btn.btn-primary:hover{background:var(--accent-soft)!important;color:var(--accent)}.dashboard-page .dashboard-filter-row .dropdown-toggle{height:36px;padding:6px 10px}.dashboard-type-filter .project-type-svg{display:none}.sort-direction{width:14px;height:14px}.sort-direction.ascending{transform:rotate(180deg)}.dashboard-page .dashboard-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--dashboard-space-sm) var(--dashboard-space-md);margin:var(--dashboard-space-md) 0 0;padding:0}.dashboard-view-tabs{display:flex;align-items:center;gap:var(--dashboard-space-lg)}.dashboard-view-tabs button{min-height:36px;border:0;border-bottom:2px solid transparent;border-radius:0;background:0 0;font:inherit;font-size:13px;color:var(--ink-muted);padding:4px 0}.dashboard-view-tabs button[aria-pressed=true]{font-weight:600}.attention-count{padding:1px 5px;margin-left:4px;border-radius:4px;background:var(--paper-bg-alt);font-size:11px;font-variant-numeric:tabular-nums}.attention-count.has-attention{color:var(--status-error)}.dashboard-count{margin-left:auto;font-size:12px;color:var(--ink-muted)}.dashboard-active-filters{display:flex;align-items:center;flex-wrap:wrap;gap:var(--dashboard-space-sm);width:100%}.dashboard-page .filter-chip{display:inline-flex;font-family:var(--font-sans);font-size:11px;text-transform:none;letter-spacing:0;border-radius:6px}.dashboard-page .filter-chip .project-type-svg{width:12px;height:12px;margin-left:4px}.dashboard-page .filter-chip-close{min-width:24px;min-height:24px;display:inline-flex;align-items:center;justify-content:center;margin:-2px -4px -2px 2px}.dashboard-page .btn-link-inline{color:var(--ink-muted);font-size:12px}.dashboard-page .paper-table-dashboard{margin-top:var(--dashboard-space-md);border-left:0;border-right:0;border-radius:0}.dashboard-page .paper-table-dashboard .paper-table-head,.dashboard-page .paper-table-dashboard .paper-table-row{grid-template-columns:minmax(280px,3fr) 180px 72px 148px 64px;gap:var(--dashboard-space-lg);padding:8px 12px}.dashboard-page .paper-table-dashboard .paper-table-head{border-radius:0}.dashboard-page .paper-table .cell-anon{gap:var(--dashboard-space-sm)}.dashboard-page .paper-table .anon-text{flex:1}.dashboard-page .paper-table .repo-name{font-family:var(--font-sans);font-size:14px;font-weight:600}.dashboard-page .paper-table .anon-sub{display:flex;align-items:center;gap:var(--dashboard-space-sm);min-width:0}.anonymous-id{font-size:12px;font-family:var(--font-mono);color:var(--ink-muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-page .paper-table .type-badge{font-family:var(--font-sans);letter-spacing:0;font-size:11px;text-transform:none;border-radius:6px}.dashboard-page .paper-table .status-sub{font-size:12px}.dashboard-page .paper-table .cell-conf{font-family:var(--font-sans);letter-spacing:0;text-transform:none}.dashboard-page .conf-tag .project-type-svg{width:14px;height:14px}.dashboard-row-meta{display:contents}.dashboard-page .cell-actions{gap:0;align-items:center}.dashboard-page .btn-icon-dots,.project-close{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:6px;background:0 0;color:var(--ink-muted);padding:0;width:32px;height:32px;min-width:32px;cursor:pointer}.dashboard-page .btn-icon-dots:hover,.project-close:hover{background:var(--accent-soft);color:var(--accent)}.mobile-meta-icon{display:none}.project-attention-action{display:inline-block;color:var(--accent);border:0;background:0 0;padding:0;font:inherit;font-size:12px;cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-align:left}.dashboard-page .cell-status .project-attention-action{flex-basis:100%}.project-details-row{width:100%;border-bottom:1px solid var(--border-color)}.project-details{padding:var(--dashboard-space-xl);background:var(--paper-bg-alt)}.project-details-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--dashboard-space-sm)}.project-details-heading h2{font:600 16px var(--font-sans);margin:0}.project-details-list{display:grid;grid-template-columns:1fr 1fr;gap:var(--dashboard-space-md) var(--dashboard-space-xl);margin:12px 0}.project-details-list dt{font-size:12px;color:var(--ink-muted);font-weight:500;margin-bottom:4px}.project-details-list dd{margin:0;font-size:13px;overflow-wrap:anywhere}.project-details-list code{color:var(--color);font-size:12px}.project-name-form{margin-top:var(--dashboard-space-lg);padding-top:var(--dashboard-space-lg);border-top:1px solid var(--border-color)}.project-name-form label{display:block;font-size:13px;font-weight:500;margin-bottom:4px}.project-name-form p,.project-progress-help{font-size:12px;color:var(--ink-muted);margin-bottom:8px}.project-name-controls{display:flex;gap:var(--dashboard-space-sm);max-width:560px}.project-name-controls .form-control{min-width:0;font-size:14px}.project-name-controls .btn{flex-shrink:0;min-height:40px}.project-name-form .project-name-error{color:var(--status-error)}.anonymize-topbar{padding:16px 24px}.anonymize-form-col{background:var(--paper-bg-alt)}.anonymize-form-col .paper-settings-main{padding:20px 24px}.anonymize-form-col .paper-settings-section{padding:18px}.anonymize-form-col .paper-settings-section:first-child{padding-top:18px}.anonymize-preview-col{background:var(--canvas-bg-color);padding:24px}.anonymize-preview-body{padding:24px}.anonymize-mobile-tabs,.mobile-preview-jump{display:none}@media (max-width:900px){.paper-settings-body{grid-template-columns:1fr;gap:18px}.paper-settings-toc{padding:0}.paper-settings-toc-head{display:none}.paper-table .paper-table-row{padding-left:14px;padding-right:14px}}@media (max-width:767px){.paper-settings{padding:20px 16px 40px}.paper-settings-main .paper-settings-section{padding:16px}.anonymize-topbar{padding:12px 16px}.anonymize-mobile-tabs{display:flex;gap:4px;padding:8px 16px;border-bottom:1px solid var(--border-color);background:var(--paper-card)}.anonymize-mobile-tabs button{flex:1;font:inherit;font-size:13px;padding:10px;border:0;border-radius:6px;background:0 0;color:var(--ink-muted)}.anonymize-mobile-tabs button[aria-selected=true]{background:var(--accent-soft);color:var(--accent);font-weight:600}.anonymize-page:not(.mobile-preview-active) .anonymize-preview-col{display:none}.mobile-preview-active .anonymize-form-col{display:none}.anonymize-form-col .paper-settings-main{padding:16px}.mobile-preview-jump{display:block;width:100%;min-height:44px}.anonymize-preview-col{padding:16px}.anonymize-preview-body{padding:16px}}@media (max-width:575px){.paper-settings .quota-header{flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:4px 8px}}@media (max-width:1100px) and (min-width:901px){.dashboard-page .dashboard-filter-row{flex-wrap:wrap}.dashboard-page .dashboard-filter-row .search-wrap{flex-basis:100%}.dashboard-page .dashboard-filter-controls{width:100%;justify-content:space-between}}@media (max-width:900px){.dashboard-page .paper-table.paper-table-dashboard .paper-table-row{gap:4px 8px;padding:8px 12px}.dashboard-page .paper-table .cell-anon{flex:1 1 calc(100% - 96px);min-width:0}.dashboard-page .paper-table .cell-actions{flex:0 0 88px}.dashboard-row-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;order:3;width:100%}.dashboard-page .dashboard-row-meta .cell-status{flex:1 1 80px;flex-wrap:wrap;gap:2px 8px}.dashboard-page .dashboard-row-meta .cell-expires,.dashboard-page .dashboard-row-meta .cell-views{flex-shrink:0;font-size:12px}.dashboard-page .cell-expires::before,.dashboard-page .cell-views::before{content:none}.dashboard-page .mobile-meta-icon{display:inline-block;width:14px;height:14px}.dashboard-page .dashboard-row-meta .status-sub-date{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dashboard-page .dashboard-row-meta .status-sub-error,.dashboard-page .dashboard-row-meta .status-sub-warn{flex-basis:100%;white-space:normal;overflow-wrap:anywhere}.dashboard-page .dashboard-row-meta .status-sub::before{content:none}.dashboard-page .project-attention-action{min-height:44px;display:inline-flex;align-items:center}.dashboard-page .paper-table .anon-sub .commit-hash,.dashboard-page .paper-table .anon-sub .conf-tag{display:none}}@media (max-width:767px){.container.dashboard-page{padding-top:12px}.dashboard-heading .paper-page-title{font-size:24px}.dashboard-new-label{display:none}.dashboard-new-mobile{display:inline}.dashboard-quota>summary{min-height:44px;gap:6px;padding:10px;font-size:12px;line-height:20px}.dashboard-quota .quota-panel{max-height:calc(100dvh - 184px);overflow-y:auto;overscroll-behavior:contain}.dashboard-page .dashboard-filter-row{flex-wrap:wrap;gap:8px}.dashboard-page .dashboard-filter-row .search-wrap{flex:1 1 0}.dashboard-page .dashboard-filters-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;min-height:44px;background:0 0;border:0}.dashboard-page .dashboard-filter-controls{display:none;width:100%}.dashboard-page .dashboard-filter-controls.expanded{display:flex;flex-wrap:wrap;gap:8px}.dashboard-page .dashboard-filter-controls .btn-group{width:100%;display:flex}.dashboard-page .dashboard-filter-controls .btn-group .btn{flex:1;min-height:44px}.dashboard-extra-filters{display:flex;width:100%}.dashboard-page .dashboard-extra-filters .dropdown{flex:1;min-width:0}.dashboard-page .dashboard-extra-filters .dropdown-toggle{width:100%;height:44px}.dashboard-type-filter .type-filter-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dashboard-type-filter .project-type-svg{display:inline-block}.dashboard-page .dashboard-meta{margin-top:8px;gap:4px 8px}.dashboard-view-tabs{gap:16px}.dashboard-view-tabs button{min-width:44px;min-height:44px;font-size:12px}.dashboard-count{padding:0;white-space:nowrap;position:static!important;margin:0 0 0 auto!important;overflow:visible!important;clip:auto!important}.dashboard-active-filters{display:contents;flex-basis:100%}.dashboard-page .filter-chip{font-size:11px;padding:0 8px;min-height:44px;gap:4px}.dashboard-page .filter-chip-close{min-width:44px;min-height:44px;margin:0}.dashboard-page .btn-link-inline{min-height:44px;font-size:12px}.dashboard-page .paper-table-dashboard{width:calc(100% + 36px);margin:8px -18px 0;border-left:0;border-right:0;border-radius:0}.dashboard-page .paper-table .repo-name{font-size:13px}.project-details{padding:16px 12px}.project-details-list{grid-template-columns:1fr;gap:12px}.project-name-controls{flex-wrap:wrap}.project-name-controls .form-control{flex-basis:100%}.project-name-controls .btn{min-height:44px}}.dashboard-quota summary{border:0!important;box-shadow:none!important;background:0 0!important;padding-left:0!important}@media (max-width:360px){.dashboard-attention-prefix{display:none}.dashboard-attention-prefix+span{text-transform:capitalize}}.ui-icon-definitions{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}.ui-icon{display:inline-block;width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;vertical-align:-3px}.ui-icon.sort-direction{width:14px;height:14px}.pr-title-row{display:flex;align-items:flex-start;gap:16px}.pr-title-row .pr-title{flex:1;min-width:0}.pr-title-row>.btn{flex-shrink:0}.ui-icon.record-type-icon{color:var(--ink-muted)}.btn .ui-icon,.dropdown-item .ui-icon{width:16px;height:16px}.btn-icon-dots .ui-icon{width:18px;height:18px}.anonymize-page .paper-page-title,.paper-page .paper-page-title{font-size:28px}.paper-faq,.paper-page{padding-top:24px}.paper-page .paper-page-lede{margin-bottom:16px}.anonymize-page .form-control,.paper-page .form-control{min-height:40px;font-family:var(--font-sans);font-size:14px}.anonymize-page textarea.form-control,.paper-page textarea.form-control{height:auto}.anonymize-page .btn,.paper-page .btn,.status-bar-actions .btn{min-height:var(--button-height);padding:7px var(--button-padding-x);font:500 var(--button-font-size)/var(--button-line-height) var(--font-sans);border-radius:var(--radius-button);gap:6px}.anonymize-page .btn.btn-sm,.paper-page .btn.btn-sm,.status-bar-actions .btn{min-height:var(--button-compact-height);padding:5px 10px;font-size:13px;border-radius:6px}.anonymize-page .btn-ink,.paper-page .btn-ink{min-height:40px;padding:9px 15px}.btn-hero>i,.btn>.project-type-svg,.btn>.ui-icon,.btn>i{width:16px;height:16px;margin:0!important;flex-shrink:0}.btn.dropdown-toggle::after{margin-left:0}.btn.disabled,.btn:disabled{cursor:not-allowed}.btn.disabled:hover,.btn:disabled:hover{filter:none}.paper-page .btn.btn-link{background:0 0;border-color:transparent}.auth-continue.btn{min-height:44px;padding:11px 16px!important}.anonymize-page .btn.btn-icon,.paper-page .btn.btn-icon{width:32px;height:32px;min-width:32px;min-height:32px;padding:0}.paper-page .btn.btn-icon-dots{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-width:32px;min-height:32px;padding:0;border:0;background:0 0;color:var(--ink-muted)}.paper-page .btn-icon-dots:hover{background:var(--accent-soft);color:var(--accent)}.paper-page .btn-group .btn-primary:active,.paper-page .btn-group .btn-primary:hover{background:var(--accent-soft)!important;color:var(--accent)}.paper-page .paper-section-eyebrow{font-family:var(--font-sans);font-size:16px;font-weight:600;color:var(--color);text-transform:none;letter-spacing:0;margin-bottom:12px}.paper-page .paper-field-label{font-family:var(--font-sans);font-size:13px;letter-spacing:0}.paper-pill,.status-pill{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none;border-radius:6px}.paper-meta-rule{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none;gap:12px 24px}.paper-meta-rule b:not(.commit-hash){font-family:var(--font-sans);font-weight:500}.connections-grid{gap:16px}.connections-grid>section p{font-size:13.5px!important;line-height:1.55!important}.connections-grid>section>.btn,.connections-grid>section>a.btn{width:auto!important;align-self:flex-start}.connections-heading{margin-bottom:24px}.claim-page .claim-form,.status-page>.paper-settings-section{padding:20px;margin-top:24px;border:1px solid var(--border-color);border-radius:var(--radius-surface);background:var(--paper-card)}.claim-page .claim-form{max-width:640px}.status-page .anonymize-submit-bar{background:0 0;gap:8px;flex-wrap:wrap}.paper-settings .quota-usage{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.paper-settings .quota-usage .quota-item+.quota-item{padding-top:0;border-top:0;padding-left:16px;border-left:1px solid var(--border-color)}.paper-settings .quota-usage .quota-header{flex-direction:row;align-items:center;flex-wrap:wrap}.paper-settings .quota-usage .quota-value{white-space:normal;flex-wrap:wrap}.paper-faq-hero{padding-bottom:24px;margin-bottom:24px}.paper-faq-toc-head{margin-bottom:8px}.paper-faq-eyebrow{text-transform:uppercase;margin-bottom:14px}.paper-faq-title{font-family:var(--font-serif);font-weight:400;line-height:1.05;letter-spacing:-.02em;max-width:13em;margin-bottom:16px}.paper-faq-title em{font-style:italic;color:var(--accent)}.paper-faq-title,.paper-hero h1,.paper-section-head h2{text-wrap:balance}@media (min-width:1100px){.paper-hero{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr)!important;column-gap:40px!important;overflow:visible}.paper-section-head{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;column-gap:20px!important}}@media (min-width:1100px){.paper-section-head>p{max-width:500px}}@media (max-width:767px){.paper-hero .paper-cta-row{row-gap:14px!important}}@media (max-width:767px){.paper-hero .paper-reassure li{white-space:nowrap;margin:0!important}}.paper-reassure,.paper-stat-delta,.paper-stat-label{color:var(--ink-soft)!important}@media (min-width:1100px){.paper-reassure{max-width:100%}}.paper-faq-body{gap:40px}.faq-section h4.faq-cat .ui-icon{display:none}.faq-section .panel-group{margin-bottom:32px}.faq-section .panel-default .panel-title a:hover:after{border-color:var(--color)}.faq-section .panel-default .panel-title a[aria-expanded=true]:after{transform:rotate(-135deg)!important}.faq-section.faq-searching .faq-hit .panel-title a:after{transform:rotate(-135deg)!important}.paper-faq-toc nav a.active{color:var(--color);font-weight:500}.paper-empty-title{font:600 32px/1.2 var(--font-sans)}.btn-hero{justify-content:center;gap:8px;min-height:48px;padding:13px 20px;font-size:15px;line-height:20px;background:var(--accent);border-color:var(--accent);color:#fff;border-radius:var(--radius-button)}.btn-hero:hover{background:var(--accent);color:#fff}.dark-mode .btn-hero:hover{background:#24786f;border-color:#24786f;color:#fff;filter:none}.paper-table:not(.paper-table-dashboard){border-left:0;border-right:0;border-radius:0}.paper-table:not(.paper-table-dashboard) .paper-table-head{border-radius:0}.paper-table .cell-anon{gap:8px}.paper-table .cell-anon .anon-text{flex:1}.paper-table-conferences .cell-anon .repo-name{font-family:var(--font-sans);font-weight:600}.paper-table .anon-sub>a,.paper-table .anon-sub>span{min-width:0;overflow:hidden;text-overflow:ellipsis}.paper-table .anon-sub .ui-icon{width:14px;height:14px}.paper-page .filter-chip{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none;border-radius:6px}.paper-page .filter-chip-close .ui-icon{width:12px;height:12px}.admin-nav{gap:4px;border:0;border-bottom:1px solid var(--border-color);border-radius:0;padding:0 0 8px;background:0 0}.admin-nav a{font-size:13px;padding:8px 12px}.admin-nav .ui-icon{width:16px;height:16px}.admin-filter-toolbar{background:0 0;border:0;padding:0}@media (max-width:767px){.admin-filter-toolbar .admin-filter-inline label{margin:0}}.admin-filter-inline>label,.admin-filter-inline>span{font-family:var(--font-sans);text-transform:none;letter-spacing:0}.admin-active-chip{font-family:var(--font-sans);font-size:12px}.admin-active-chip button .ui-icon{width:12px;height:12px}.errors-page .errors-toolbar .select-wrap label,.errors-page .volume-head,.overview-page .ov-panel-meta,.paper-progress .paper-progress-label,.status-page .paper-error-eyebrow,.user-detail-grid .detail-label{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none}.overview-page .ov-chart-title,.overview-page .ov-panel-title,.paper-error-title{font:600 16px/1.4 var(--font-sans)}.paper-error-head>.ui-icon,.paper-ratelimit-head>.ui-icon{margin-top:3px;color:var(--status-error)}.paper-ratelimit-head>.ui-icon{color:var(--status-progress)}.errors-page .errors-list,.errors-page .kpi-card:hover,.errors-page .volume-chart,.overview-page .ov-chart-card,.overview-page .ov-panel-card{box-shadow:none}.errors-page .kpi-value,.overview-page .ov-daily-value,.overview-page .ov-kpi-value,.q-card-count{font-family:var(--font-sans);font-size:28px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.errors-page .kpi-label,.overview-page .ov-daily-label,.overview-page .ov-kpi-label,.q-card-name,.q-section-label{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none}.overview-page .ov-daily-card{background:var(--paper-card);box-shadow:none;border-radius:var(--radius-surface)}.errors-page .kpi-card,.overview-page .ov-kpi-card{box-shadow:none;border-radius:var(--radius-surface)}.q-card{border-radius:var(--radius-surface)}.q-job-detail-actions .btn,.q-range-btns .btn{font-family:var(--font-sans);font-size:13px}@media (max-width:900px){.paper-settings .quota-usage{grid-template-columns:1fr;gap:16px}.paper-settings .quota-usage .quota-item+.quota-item{padding-left:0;border-left:0;border-top:1px solid var(--border-color);padding-top:16px}.paper-table:not(.paper-table-dashboard) .paper-table-row{gap:4px 8px!important;padding:8px 12px}.paper-table:not(.paper-table-dashboard) .cell-anon{flex:1 1 calc(100% - 52px);order:1}.paper-table:not(.paper-table-dashboard) .cell-actions{order:2;flex:0 0 44px}.paper-table .admin-users-row>[role=cell]:first-child,.paper-table.paper-table-repos.has-bulk .paper-table-row>[role=cell]:first-child{flex:0 0 24px;order:0}.paper-table .admin-users-row .cell-anon,.paper-table.paper-table-repos.has-bulk .cell-anon{flex-basis:calc(100% - 84px)}.paper-table:not(.paper-table-dashboard) .cell-anon .anon-sub{font-size:12px;gap:6px}.paper-table:not(.paper-table-dashboard) .cell-status .status-sub{font-size:12px}.paper-table .cell-expires::before,.paper-table .cell-views::before{content:none}.paper-table .cell-expires .mobile-meta-icon,.paper-table .cell-views .mobile-meta-icon{display:inline-block;width:14px;height:14px}.paper-faq-body{grid-template-columns:1fr;gap:24px}}@media (max-width:767px){.paper-faq,.paper-page{padding-top:20px}.paper-settings .paper-account-email .btn[type=submit]{min-height:40px;padding:9px 18px}.anonymize-page .paper-page-title,.paper-page .paper-page-title,.paper-page.admin-page .paper-page-title{font-size:24px}.anonymize-page .form-control,.paper-page .form-control{min-height:44px}.anonymize-page .btn,.connection-link,.draft-discard,.paper-faq-toc a,.paper-page .btn,.paper-settings-toc nav a{min-height:44px}.anonymize-page .btn,.paper-page .btn,.status-bar-actions .btn{min-height:44px;padding:11px 14px;font-size:14px;line-height:20px;white-space:normal}.anonymize-page .btn.btn-sm,.paper-page .btn.btn-sm{min-height:44px;padding:11px 12px;font-size:14px}.anonymize-page .btn.btn-icon,.paper-page .btn.btn-icon,.paper-page .btn.btn-icon-dots,.project-close{width:44px;height:44px;min-width:44px;min-height:44px;padding:0}.dashboard-page .dashboard-filter-row .btn-group .btn,.dashboard-page .dashboard-filter-row .dropdown-toggle{height:auto;min-height:44px;font-size:14px;padding:11px 10px}.dashboard-heading-actions .btn-ink{padding:11px 16px}.dashboard-page .dashboard-filters-toggle{padding:11px 10px}.errors-page .btn-icon,.pr-title-row .btn,.status-bar-actions .btn{min-width:44px;min-height:44px;padding:0}.status-bar-actions .btn{width:44px;height:44px}.paper-tab{min-height:44px}.status-bar-actions{flex-wrap:wrap;max-width:100%}.leftCol-close,.tree-search-clear{min-width:44px;min-height:44px}.anonymize-landing{padding:20px 18px}.anonymize-landing .repo-access-switch button,.source-url-label-row .repo-access-switch button{min-height:44px;padding:11px 10px;font-size:13px}.paper-settings-body{margin-top:16px;padding-top:0;gap:16px}.paper-settings-toc nav{gap:0 12px}.paper-settings-toc nav a{display:inline-flex;align-items:center}.paper-faq-toc nav{display:flex;flex-direction:row;flex-wrap:wrap;gap:0 16px}.paper-faq-toc a{display:inline-flex;align-items:center;padding:8px 0;border-left:0;border-bottom:2px solid transparent;margin-left:0}.paper-faq-toc nav a.active,.paper-faq-toc nav a:hover{border-bottom-color:var(--accent);color:var(--accent)}.claim-page .claim-form,.status-page>.paper-settings-section{padding:16px;margin-top:16px}.admin-nav{max-width:100%;margin:8px 0 16px}.admin-nav a{min-height:44px}.admin-active-chip button{min-width:44px;min-height:44px}.admin-filter-row{gap:8px!important}.admin-filter-row .admin-filter-inline{flex-wrap:wrap;min-width:0}.errors-page .kpi-grid{grid-template-columns:1fr 1fr;gap:12px}.q-cards{flex-direction:row}.q-card{min-width:130px}.q-header-actions{flex-wrap:wrap;gap:8px}}@media (max-width:575px){.source-url-label-row{flex-direction:column;align-items:flex-start!important;gap:8px}}.admin-page .admin-nav{margin-top:0!important;gap:24px!important}@media (max-width:767px){.admin-page .ov-header,.admin-page .paper-page-title{text-align:left!important;justify-content:flex-start!important}}.admin-filter-inline label,.admin-page label{font-size:12px!important;color:var(--ink-soft)!important}@media (max-width:767px){.admin-filter-row .admin-filter-inline input{width:100%!important}}.paper-faq details a:not(.btn){text-decoration:underline;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,currentColor 35%,transparent)!important;text-decoration-thickness:1px!important}.paper-faq details>summary,.paper-faq summary{font-weight:600!important}.paper-faq details p,.paper-faq details>:not(summary){max-width:none!important}.dashboard-page .dashboard-count button,.dashboard-page .show-hidden{font-size:13px!important}@media (max-width:767px){.dashboard-page .dashboard-row-meta .cell-status{flex:0 0 auto!important}}@media (max-width:767px){.dashboard-page .dashboard-row-meta .cell-expires::before,.dashboard-page .dashboard-row-meta .cell-views::before{color:var(--ink-muted);margin:0 7px!important;width:auto!important;content:none!important}}.dashboard-page .dashboard-quota>summary::before{content:"";border-radius:2px;flex:0 0 28px;height:5px;background:linear-gradient(to right,var(--accent) 0 max(3px,var(--quota-pct,5%)),#d9d3c8 0)!important;width:44px!important;flex-basis:44px!important}.dark-mode .dashboard-page .dashboard-quota>summary::before{background:linear-gradient(to right,#7cc7be 0 max(3px,var(--quota-pct,5%)),#3a352f 0)!important}@media (min-width:768px){.dashboard-page .paper-table.paper-table-dashboard .paper-table-head,.dashboard-page .paper-table.paper-table-dashboard .paper-table-row{grid-template-columns:minmax(240px,3fr) 210px 64px 160px 172px!important}}@media (max-width:767px){.dashboard-page .dashboard-row-meta .project-attention-action::before,.dashboard-page .dashboard-row-meta .status-sub::before{content:none}}.dashboard-page .paper-table-dashboard .anon-sub>.anonymous-id:has(.id-head){min-width:12ch}.dashboard-page .paper-table-dashboard .anon-sub>.conf-tag>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-page .paper-table-dashboard .anon-sub>.conf-tag svg{flex:none;margin-top:2px;width:13px;height:13px}.dashboard-page .paper-table-dashboard .anon-sub>.anonymous-id:has(~.commit-hash){max-width:calc(100% - 9ch - 8px)}.dashboard-page .paper-table-dashboard .anon-sub>.conf-tag>.conf-name{overflow:visible!important;text-overflow:clip!important;white-space:normal!important;overflow-wrap:anywhere;line-height:1.4}@media (max-width:767px){.dashboard-page .paper-table-dashboard .dashboard-row-meta>.cell-expires:has(>.empty-dash){display:none!important}}@media (max-width:767px){.dashboard-page .paper-table-dashboard .project-attention-action{position:relative}}@media (max-width:767px){.dashboard-page .paper-table-dashboard .dashboard-row-meta .project-attention-action{line-height:20px!important}}@media (max-width:767px){.dashboard-page .paper-table-dashboard .dashboard-row-meta>.cell-expires,.dashboard-page .paper-table-dashboard .dashboard-row-meta>.cell-views{gap:0!important;column-gap:0!important}}@media (max-width:767px){.dashboard-page .paper-table.paper-table-dashboard .paper-table-row>.dashboard-row-meta{grid-area:meta!important;grid-column:1/-1!important}}@media (max-width:767px){.dashboard-page .paper-table-dashboard .dashboard-row-meta .status-action-line .project-attention-action{font-size:13px}}.dashboard-page .dashboard-quota>summary.quota-level-warn::before{background:linear-gradient(to right,#b7791f 0 max(3px,var(--quota-pct,5%)),#d9d3c8 0)!important}.dark-mode .dashboard-page .dashboard-quota>summary.quota-level-warn::before{background:linear-gradient(to right,#e0a84a 0 max(3px,var(--quota-pct,5%)),#3a352f 0)!important}.dashboard-page .dashboard-quota>summary.quota-level-danger::before{background:linear-gradient(to right,var(--status-error) 0 max(3px,var(--quota-pct,5%)),#d9d3c8 0)!important}.dark-mode .dashboard-page .dashboard-quota>summary.quota-level-danger::before{background:linear-gradient(to right,#f08a82 0 max(3px,var(--quota-pct,5%)),#3a352f 0)!important}@media (max-width:767px){.dashboard-page .paper-table-dashboard .anon-title .repo-name{line-height:1.3!important}}@media (max-width:767px){.dashboard-page .paper-table-dashboard .anon-sub>.anonymous-id:has(~.commit-hash){max-width:calc(100% - 9ch - 17px)!important}}@media (max-width:767px){.dashboard-page .paper-table-dashboard .anon-sub>.anonymous-id+.commit-hash{padding-left:8px;border-left:1px solid var(--border-color);line-height:14px!important}}@media (max-width:767px){.dashboard-page .paper-table-dashboard .cell-actions>.dropdown>.btn-icon-dots::after{content:"";display:block!important;position:absolute;top:-6px;bottom:-6px;left:0;right:-12px}}@media (min-width:768px){.dashboard-page .paper-table-dashboard .cell-actions>.row-edit:not(.row-open){display:none!important}}@media (min-width:768px){.dashboard-page .paper-table-dashboard .cell-actions>.copy-url .copy-url-label{display:inline}}@media (min-width:768px){.dashboard-page .paper-table-dashboard .cell-actions>.copy-url.is-disabled{opacity:.7!important}}@media (min-width:768px){.dashboard-page .paper-table-dashboard .cell-actions>.copy-url.is-disabled>svg{color:inherit}}@media (min-width:768px){.dashboard-page .paper-table-dashboard .cell-actions>.dropdown>.btn-icon-dots{width:32px!important;height:32px!important}}@media (max-width:767px){.dashboard-page .paper-table-dashboard .anon-sub .conf-tag>svg{width:14px!important;height:14px!important;flex:0 0 14px;margin:0 7px 0 1px!important}}@media (min-width:768px){.dashboard-page .paper-table-dashboard .cell-actions>.copy-url:not(.is-disabled)>svg{color:inherit!important}}@media (min-width:768px){.dashboard-page .paper-table-dashboard .paper-table-row:is(:hover,:focus-within) .cell-actions>.copy-url:not(.is-disabled){border-color:var(--border-color)!important;color:var(--color)!important}}@media (max-width:640px){.dashboard-page .dashboard-heading-actions>.dashboard-quota>summary{width:100%}}@media (max-width:640px){.dashboard-page .dashboard-heading-actions>.btn{flex:0 0 auto!important}}@media (max-width:767px){.repo-access-switch button{flex:1 1 0!important;white-space:nowrap!important;justify-content:center}}.admin-filter-inline label{margin:0!important}@media (max-width:767px){.admin-page .admin-nav{scrollbar-width:none;scroll-snap-type:x proximity;flex-wrap:wrap!important;overflow:visible!important;-webkit-mask-image:none!important;mask-image:none!important;padding:0!important}}@media (max-width:767px){.admin-page .admin-nav::-webkit-scrollbar{display:none}}@media (max-width:767px){.admin-page .admin-nav a{flex-shrink:0;scroll-snap-align:start;min-height:34px!important;font-size:13.5px!important}}@media (max-width:767px){.admin-nav::-webkit-scrollbar{display:none}}@media (max-width:767px){.admin-nav a{flex:none}}@media (max-width:767px){.admin-page .admin-nav a .ui-icon{display:none!important}}.paper-page.container:not(.auth-page){max-width:1180px}.paper-page>.row>.w-100,.paper-page>.row>[class*=col]{padding-left:0;padding-right:0}.explorer-content .ace_editor{font-family:var(--font-mono);line-height:1.6}.dark-mode .explorer-content .ace-nord-dark,.dark-mode .explorer-content .ace-nord-dark .ace_gutter{background:var(--main-bg-color)}.explorer-content .file-content.markdown-body{max-width:960px;padding:32px 40px 96px}.file-error{font-size:inherit;font-weight:inherit}.file-error-card{width:100%;max-width:520px;margin-top:0}.file-error .paper-empty-title{font-size:20px;text-align:center}.explorer-content .ace-chrome,.explorer-content .ace-chrome .ace_gutter{background:var(--main-bg-color)}@media (max-width:991px){.explorer-content .file-content.markdown-body{padding:20px 16px 96px}.anonymize-landing{padding:20px 18px}.anonymize-landing-inner{padding:0}.paper-faq-toc nav,.paper-settings-toc nav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;display:flex;flex-direction:row;gap:0 16px}.paper-faq-toc nav a,.paper-settings-toc nav a{flex-shrink:0;white-space:nowrap;display:inline-flex;align-items:center;padding:8px 0;margin-left:0;border-left:0;border-bottom:2px solid transparent}.paper-faq-body,.paper-settings-body{grid-template-columns:minmax(0,1fr)}.paper-faq-toc,.paper-settings-toc{position:static}.paper-faq-toc nav a.active,.paper-faq-toc nav a:hover,.paper-settings-toc nav a.active,.paper-settings-toc nav a:hover{border-bottom-color:var(--accent)}.paper-page .dashboard-filter-controls .dropdown .dropdown-toggle{justify-content:flex-start;gap:6px}.paper-page .dashboard-filter-controls .dropdown .dropdown-toggle::after{margin-left:auto}}.paper-faq-toc nav,.paper-settings-toc nav{border-left:1px solid var(--border-color)}@media (min-width:992px){.anonymize-landing{justify-content:flex-start!important;align-items:flex-start!important}.anonymize-landing-inner{margin-top:0!important}}.anonymize-landing .repo-access-note>span:has(.ui-icon){display:none!important}@media (max-width:767px){.anonymize-landing-inner>.repo-picker{order:2}}@media (min-width:1100px){.anonymize-landing-inner>.page-head{grid-column:1/-1}}.repo-picker:has(.repo-picker-list>.repo-picker-row:not(.is-skeleton):nth-child(8)) .repo-picker-more{display:inline}@media (max-width:767px){.repo-picker:has(.repo-picker-list>.repo-picker-row:not(.is-skeleton):nth-child(7)) .repo-picker-more{display:block}}.repo-picker-list.is-end,.repo-picker-list:has(>:nth-child(-n+7):last-child){-webkit-mask-image:none!important;mask-image:none!important}@media (max-width:767px){.repo-picker-list:has(>:nth-child(7)){-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 32px),rgba(0,0,0,.1) 100%);mask-image:linear-gradient(to bottom,#000 calc(100% - 32px),rgba(0,0,0,.1) 100%)}}@media (max-width:767px){.repo-picker-list:has(>:nth-child(-n+6):last-child){-webkit-mask-image:none!important;mask-image:none!important}}.repo-picker-list,.repo-picker-list.is-end,.repo-picker-list:has(>:nth-child(8)){-webkit-mask-image:none!important;mask-image:none!important}.dark-mode .repo-picker-list{--scroll-thumb:#4A453F}.repo-picker-list::-webkit-scrollbar{width:6px}.paper-settings-body>:not(aside){max-width:none!important}.dark-mode .dashboard-filter-controls .btn-group[aria-label=Type]>.btn.btn-primary{background:#3a3631!important;color:#f2eee8!important;box-shadow:0 0 0 1px rgba(255,255,255,.14)!important}@media (min-width:1100px){.paper-faq-body{grid-template-columns:180px minmax(0,1fr) 220px!important;gap:48px!important}}.paper-settings-body section{max-width:none!important}.paper-settings-body .form-text,.paper-settings-body small{max-width:none!important}.paper-settings-toc nav a{margin-left:-1px;border-left:2px solid transparent}.paper-settings-toc nav a.active{border-left-color:var(--accent)!important;color:var(--color)}@media (max-width:767px){.paper-faq-toc nav,.paper-settings-toc nav{border-left:0!important;scroll-padding-inline:20px;-webkit-mask-image:linear-gradient(to right,#000 82%,transparent);mask-image:linear-gradient(to right,#000 82%,transparent);padding-right:32px}}@media (max-width:767px){.paper-faq-toc nav a,.paper-settings-toc nav a{margin-left:0!important;border-left:0!important}}@media (max-width:767px){.paper-settings-toc nav a.active{border-left:0!important}}@media (max-width:480px){.paper-page .paper-page-lede{display:block;overflow:visible}}.navbar .btn-signin,.navbar .btn-signin:hover{background:var(--accent);border-color:var(--accent);color:#fff!important}.dark-mode .navbar .btn-signin,.dark-mode .navbar .btn-signin:hover{background:#237a71;border-color:#237a71;color:#fff!important}.paper-progress .paper-progress-bar,.paper-progress.paper-progress-ready .paper-progress-bar{background:var(--accent)}.paper-progress .paper-progress-label{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none}.paper-error-eyebrow{font-family:var(--font-sans);font-size:12px;font-weight:500;letter-spacing:0;text-transform:none}.markdown-body mark.redaction{background:var(--accent-soft);color:var(--accent);border-radius:3px;padding:0 2px}.ace_marker-layer .ace_redaction{position:absolute;background:var(--accent-soft);border-radius:3px}.status-bar-actions .btn-icon-only{width:32px;padding:0;justify-content:center}.share-link-row{display:flex;gap:8px;margin-top:4px}.share-link-row .btn{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;min-width:112px;justify-content:center}@media (min-width:992px){.paper-table .cell-expires{white-space:nowrap}}.paper-settings .paper-settings-main .paper-settings-section{background:0 0;border:0;border-bottom:1px solid var(--border-color);border-radius:0;padding:0 0 28px;margin-bottom:28px}.paper-settings .paper-settings-main .paper-settings-section:last-of-type{border-bottom:0}@media (max-width:991px){.paper-settings .paper-settings-main .paper-settings-section{padding:0 0 20px;margin-bottom:20px}.share-link-row{flex-direction:column}}@media (max-width:480px){.paper-settings .paper-settings-footer #send{display:flex;width:100%!important;min-height:46px;justify-content:center;align-items:center}}.paper-page .q-range-btns{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-card);overflow:visible}.paper-page .q-range-btns .btn,.paper-page .q-range-btns .btn+.btn{min-height:0;height:28px;padding:0 10px;border:0;border-radius:4px;background:0 0;color:var(--ink-muted);font:500 13px/1 var(--font-sans)}.paper-page .q-range-btns .btn:hover{background:var(--hover-bg-color);color:var(--color)}.paper-page .q-range-btns .btn.active{background:var(--accent-soft);color:var(--accent)}.q-header-actions>.btn{height:34px;min-height:34px}.q-auto-refresh,.q-section-label,.q-state-chip{font-family:var(--font-sans);letter-spacing:0;text-transform:none}.q-state-chip{font-size:12px}.q-state-chip::before{content:"";display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:var(--ink-faint)}.overview-page .ov-ebar-fill{display:block}.admin-page .q-table th,.admin-page .type-badge,.admin-page section>h2,.admin-page th,.admin-page>h2,.errors-page .col-count,.errors-page .col-mod,.errors-page .col-msg,.errors-page .col-sev,.errors-page .col-status,.errors-page .col-when,.overview-page .ov-chart-legend,.overview-page .ov-ebar-label,.overview-page .ov-route-n,.overview-page .ov-route-name,.q-card-sub,.q-delay-hint,.q-legend-completed,.q-legend-exec,.q-legend-failed,.q-section-right,.q-stat-label,.user-detail-grid .detail-label{font-family:var(--font-sans);letter-spacing:0;text-transform:none}.q-table tbody+tbody{border-top:1px solid var(--border-color)!important}.q-table thead+tbody{border-top:1px solid var(--border-color)}.q-table td.q-cell-id .q-job-link{max-width:calc(100% - 22px)!important;font-size:12.5px}.admin-page th,.errors-page [class^=col-]{font-size:12px;font-weight:500;color:var(--ink-muted)}.q-card-sub,.q-stat-label,.user-detail-grid .detail-label{font-size:12px}.q-stat-value{font-size:20px}.q-state-badge{letter-spacing:0;text-transform:capitalize}.q-state-badge.q-state-completed::before{box-shadow:inset 0 0 0 1.5px var(--st-off)}.admin-page .type-badge{font-size:12px;text-transform:none}.errors-page .col-sev span,.errors-page .sev-label{text-transform:capitalize}.dark-mode .overview-page .ov-daily-value,.overview-page .ov-daily-value{color:var(--color)}.dark-mode .overview-page .ov-spark-fill-alt,.dark-mode .overview-page .ov-spark-fill-new-user,.overview-page .ov-spark-fill-alt,.overview-page .ov-spark-fill-new-user{background:var(--accent)}.dark-mode .overview-page .ov-dot-new-user-fill,.dark-mode .overview-page .ov-dot-ok-fill,.dark-mode .overview-page .ov-dot-user-fill,.overview-page .ov-dot-new-user-fill,.overview-page .ov-dot-ok-fill,.overview-page .ov-dot-user-fill{background:var(--accent)}@media (max-width:767px){.overview-page .ov-header{text-align:left!important;flex-wrap:nowrap!important;justify-content:space-between!important;align-items:center!important}}@media (max-width:767px){.overview-page .ov-header .paper-page-title{width:100%;justify-content:flex-start!important;text-align:left!important}}.overview-page .ov-kpi-sub{white-space:nowrap;overflow:hidden}@media (max-width:767px){.overview-page .ov-daily-card,.overview-page .ov-kpi-card{padding-left:14px!important;padding-right:14px!important}}@media (max-width:767px){.overview-page .ov-header .ov-live{margin:0 0 0 auto!important;align-self:center}}.dark-mode .overview-page .ov-views{background:rgba(255,255,255,.06)}.dark-mode .overview-page .ov-views button.active{background:rgba(255,255,255,.1);box-shadow:none}@media (max-width:767px){.overview-page .ov-views button{flex:1 1 0}}@media (max-width:767px){.admin-page.overview-page section.ov-chart-row,.admin-page.overview-page section.ov-triple-row{grid-template-columns:minmax(0,1fr)!important}}.overview-page .ov-kpi-card:has(.ov-meter.warn):not(:has(.ov-meter.crit)) .ov-flag{color:#b7791f!important}.dark-mode .overview-page .ov-kpi-card:has(.ov-meter.warn):not(:has(.ov-meter.crit)) .ov-flag{color:#e0a84a!important}.overview-page .ov-spark-bars[data-zero]::before{content:attr(data-zero);position:absolute;left:-14px;bottom:-6px;font:400 11px/12px var(--font-sans);color:var(--ink-muted);font-variant-numeric:tabular-nums}.overview-page .ov-step-area{fill:color-mix(in srgb,var(--accent) 16%,transparent)}.overview-page .ov-step-line{fill:none;stroke:var(--accent);stroke-width:2}.overview-page .ov-has-axis+.ov-spark-x,.overview-page .ov-spark-bars.ov-has-axis{margin-left:28px}.overview-page .ov-yaxis>span:nth-child(1){top:-6px}.overview-page .ov-yaxis>span:nth-child(2){top:calc(50% - 6px)}.overview-page .ov-yaxis>span:nth-child(3){bottom:-6px}.overview-page .ov-triple-row>.ov-panel-card>.ov-panel-foot{margin-top:auto}.overview-page .ov-triple-row>.ov-panel-card>.ov-error-bars:not(:last-child){flex:0 0 auto}.overview-page .ov-ehours-bars>span>i{display:block;width:100%;background:color-mix(in srgb,var(--status-progress,#8a6116) 70%,transparent);flex:none;border-radius:0!important}.overview-page .ov-ehours-bars>span.is-bad>i{background:color-mix(in srgb,var(--danger,#b42318) 75%,transparent)}.overview-page .ov-triple-row>.ov-panel-card>.ov-routes-table>.ov-route-row:not(.ov-route-head){flex:1 1 auto;align-items:center}.overview-page .ov-ehours-bars>span.is-zero>i{height:1px!important;border-radius:0;background:var(--border-strong,#cfc7b9)!important}.dark-mode .overview-page .ov-ehours-bars>span.is-zero>i{background:#4a453f!important}.overview-page .ov-ehours-bars>span>i:first-child{border-radius:1px 1px 0 0!important}.overview-page .ov-ehours-bars>span>i.ov-ehours-e{min-height:2px;background:#b42318!important}.overview-page .ov-ehours-bars>span>i.ov-ehours-w{min-height:2px;background:var(--status-progress)!important}.dark-mode .overview-page .ov-ehours-bars>span>i.ov-ehours-e{background:#f08a82!important}.overview-page .ov-cache .ov-metrics-table td.num,.overview-page .ov-cache .ov-metrics-table th.num{text-align:right;font-variant-numeric:tabular-nums}.overview-page .page-head .ov-header.page-head-main{min-height:48px!important;align-items:center!important}.page-head h1 em{font-style:normal!important;color:inherit!important}.page-head>.flow-trail li[aria-current]::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}.flow-trail li{display:inline-flex;align-items:center;gap:6px}.user-detail-card .user-header .status-dot-wrap{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:400;color:var(--ink-soft)}.user-header h2{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.user-detail-card .user-actions{display:flex;flex-wrap:wrap;gap:8px}.admin-page .paper-table .cell-anon .anon-sub{flex-wrap:wrap;row-gap:2px}.admin-page .paper-table .anon-sub>a,.admin-page .paper-table .anon-sub>span{flex:0 1 auto;max-width:100%;white-space:nowrap}.admin-page .paper-table .cell-views .mobile-meta-icon{margin-right:4px}.paper-table.paper-table-dashboard{width:100%}.q-job-detail-label{font-family:var(--font-sans);font-size:12px;letter-spacing:0;text-transform:none}.errors-page .sev-label{font-family:var(--font-sans);font-size:13px;letter-spacing:0}.admin-page select,.anonymize-page select,.errors-page select,.paper-page select,.paper-table select{height:34px;padding:0 30px 0 10px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--input-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236F6A61' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center;-webkit-appearance:none;appearance:none;font:inherit;font-size:13px;color:var(--input-color)}.errors-page .kpi-card.kpi-error .kpi-value{color:var(--color)!important}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row{flex-wrap:wrap;align-items:flex-start!important}}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row>:first-child{grid-area:name}}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row>:last-child{grid-area:actions;align-self:start}}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row>:not(:first-child):not(:last-child){grid-column:1/-1}}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row>.cell-anon{flex:1 1 0!important;order:1;grid-area:name!important;grid-column:auto!important;min-width:0}}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row>.cell-actions{flex:0 0 auto!important;order:2;width:auto!important;margin:0!important}}.cell-anon{padding-left:0!important}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row>.dashboard-row-meta{flex:1 1 100%!important;order:3;grid-area:meta!important;grid-column:auto!important}}@media (max-width:767px){.admin-page .paper-table-row .text-muted,.admin-page .paper-table-row [class*=meta]{white-space:normal!important}}.paper-table-dashboard .cell-status .status-sub-date{white-space:normal!important;overflow:visible!important;text-overflow:clip!important}.paper-table-dashboard .copy-url:hover{box-shadow:inset 0 0 0 1px var(--border-color)!important}@media (max-width:767px){.paper-table-dashboard .cell-actions>.copy-url{align-self:start;justify-self:auto!important;grid-area:copy!important}}.copy-url:disabled{cursor:progress}.copy-url:hover .project-type-svg{opacity:1}@media (max-width:767px){.paper-table-dashboard .cell-actions>.dropdown{grid-area:more!important}}@media (max-width:767px){.paper-table-dashboard .cell-actions>.row-edit{grid-area:edit}}@media (max-width:767px){.paper-table .anon-sub>a,.paper-table .anon-sub>span{overflow:visible!important;text-overflow:clip!important;white-space:nowrap}}@media (max-width:767px){.paper-table .cell-anon .repo-name{white-space:normal!important;overflow-wrap:anywhere;overflow:visible!important;text-overflow:clip!important}}@media (max-width:767px){.admin-page .paper-table:not(.paper-table-dashboard) .paper-table-row{position:relative;padding-right:44px!important}}@media (max-width:767px){.admin-page .paper-table:not(.paper-table-dashboard) .paper-table-row>:last-child{position:absolute!important;top:10px;right:4px}}@media (max-width:767px){.admin-page .paper-table .anon-sub>span{white-space:nowrap}.paper-table-dashboard .cell-views.num::after{color:var(--ink-soft);content:"views"!important;margin-left:4px}}@media (max-width:767px){.admin-page .paper-table [role=cell]:has(>input[type=checkbox]),.admin-page .paper-table input[type=checkbox],.admin-page .paper-table-head [role=columnheader]:has(>input[type=checkbox]){display:none!important}.anon-sub{column-gap:0!important}.paper-table-dashboard .cell-expires>span:not(.expires-never):not(.expires-past)::before{content:"Expires ";color:var(--ink-soft)}}.admin-page .paper-table .cell-anon .anon-text:has(.meta-sep){overflow:hidden}.paper-table-dashboard .paper-table-head .col-link{font-size:inherit;color:inherit;margin-left:-16px}@media (min-width:768px){.paper-table-dashboard .cell-views.num::after{content:none!important}}.paper-table-dashboard .cell-actions{gap:4px!important}@media (min-width:768px){.paper-table-dashboard .cell-actions>.row-edit:not(.row-open){grid-column:3}}@media (min-width:768px){.paper-table-dashboard .cell-actions>.dropdown{grid-column:4;grid-row:1}}.paper-table-dashboard .cell-status .project-attention-action{display:inline-block}@media (max-width:767px){.paper-table-dashboard .dashboard-row-meta .status-line{order:1}}@media (max-width:767px){.paper-table-dashboard .dashboard-row-meta>.cell-expires{order:3;flex:1 0 100%!important}}.paper-table-dashboard .cell-actions .dropdown.is-disabled{opacity:1}@media (min-width:768px){.paper-table-dashboard .cell-actions>.row-edit.row-open,.paper-table-dashboard .cell-actions>button.row-edit.row-open{grid-column:2;grid-row:1}}@media (min-width:768px){.paper-table-dashboard .cell-actions>.row-edit:not(.row-open){grid-row:1}}@media (max-width:767px){.row-edit{display:none!important}}.paper-table-dashboard .cell-expires .expires-soon::before{content:none!important}@media (max-width:767px){.admin-page .paper-table .cell-views.num[data-unit]::after,.paper-table-dashboard .cell-views.num[data-unit]::after{content:attr(data-unit)!important}}.paper-table-dashboard .btn-icon-dots:hover,.paper-table-dashboard .row-edit:hover{opacity:1}.admin-page .paper-table .anon-sub:has(.meta-sep)>*{white-space:nowrap}@media (max-width:767px){.admin-page .paper-table .cell-views.num::after{content:" views";color:var(--ink-soft)}}.admin-page .anon-sub.meta-dots>.meta-email{max-width:100%;overflow:hidden;text-overflow:ellipsis}.admin-page .anon-sub.meta-dots .fa-github{margin-right:3px}@media (max-width:767px){.admin-page .paper-table:not(.users-table) .cell-views.num::after{margin-left:4px}}@media (max-width:767px){.paper-table .cell-views{gap:0!important}}.paper-table .paper-table-row .repo-name-static{font-style:normal}.admin-page.admin-page .paper-table .anon-text>.repo-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.admin-page.admin-page .paper-table .anon-sub.anon-sub>*>*{vertical-align:baseline}.admin-page.admin-page .paper-table .anon-sub.anon-sub>:first-child{display:inline-block}.admin-page.admin-page .paper-table .anon-sub.anon-sub>:last-child:not(:first-child){flex-shrink:0}.admin-page.admin-page .paper-table .anon-sub .ui-icon{width:13px;height:13px;margin-right:4px;vertical-align:-2px}.admin-page.admin-page .paper-table .anon-sub .fa-github{margin-right:4px}.admin-page.admin-page .paper-table .anon-sub.anon-sub>.meta-tail.meta-tail{flex:0 1000 auto!important}@media (min-width:768px){.admin-page .paper-table.paper-table-repos.has-bulk .paper-table-head,.admin-page .paper-table.paper-table-repos.has-bulk .paper-table-row{grid-template-columns:28px minmax(280px,1fr) minmax(150px,200px) 80px 130px 40px!important}}@media (min-width:768px){.admin-page .paper-table.paper-table-repos .cell-anon .anon-sub:has(.meta-sep){flex-wrap:nowrap;min-width:0}}@media (min-width:768px){.admin-page .paper-table.paper-table-repos .anon-sub:has(.meta-sep)>*{flex:none!important;max-width:none!important}}.admin-page .paper-table.paper-table-repos .cell-status{min-width:0}@media (min-width:768px){.admin-page.admin-page .paper-table.paper-table-repos .anon-sub.anon-sub>.meta-tail.meta-tail{flex:none!important}}@media (min-width:768px){.admin-page.admin-page .paper-table.paper-table-repos .anon-sub.anon-sub>.meta-tail.meta-tail:last-child:has(>a){text-overflow:ellipsis;white-space:nowrap;flex:0 0 auto!important;min-width:0!important;overflow:visible}}@media (min-width:768px){.admin-page.admin-page .paper-table.paper-table-repos .anon-sub.anon-sub>.meta-tail.meta-tail:last-child:has(>a)>a{overflow:hidden;text-overflow:ellipsis}}@media (min-width:768px){.admin-page.admin-page .paper-table.paper-table-repos .cell-anon .anon-sub.anon-sub:has(.meta-sep){flex-wrap:wrap;height:18px;line-height:18px;overflow:hidden;align-content:flex-start}}@media (min-width:768px){.admin-page.admin-page .paper-table.paper-table-repos .anon-sub.anon-sub>a.src-path{display:inline-flex!important;flex:0 1 auto!important;min-width:0!important;overflow:hidden}}@media (min-width:768px){.admin-page.admin-page .paper-table.paper-table-repos .anon-sub.anon-sub>a.src-path::before{flex:none}}html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta>*{flex:none!important;min-width:0!important;max-width:none!important;white-space:nowrap;overflow:visible;text-overflow:clip}html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta>.src-path{display:inline-flex!important;flex:0 1 auto!important;min-width:8ch!important;overflow:hidden}html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta>.meta-item{display:inline-flex;align-items:center;gap:4px}html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta>.meta-item .ui-icon{width:12px;height:12px;flex:none}html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta>.meta-more[hidden]{display:none!important}html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta>.meta-more{display:inline-flex;align-items:center;height:18px;padding:0 6px;border-radius:9px;background:var(--paper-bg-alt);border:1px solid var(--border-color);color:var(--ink-soft);font-size:11.5px;font-weight:500;font-variant-numeric:tabular-nums;line-height:16px;cursor:help;margin-left:8px}html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta>.meta-more::before{content:none!important}html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta.is-fitting>.src-path{flex:none!important}html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta>.src-path .src-repo{flex:none}html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta.is-fitting>.src-path .src-owner,html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta.is-fitting>.src-path .src-repo{flex:none;overflow:visible}html body .admin-page .paper-table .anon-sub.anon-meta>[data-meta-hidden]{display:none!important}@media (min-width:768px){html body .admin-page .paper-table.paper-table-repos.has-bulk .paper-table-head,html body .admin-page .paper-table.paper-table-repos.has-bulk .paper-table-row{grid-template-columns:28px minmax(280px,1fr) minmax(160px,236px) 72px 124px 40px!important}}@media (min-width:768px){html body .admin-page .paper-table .cell-status .status-sub{max-width:none!important;width:auto}}.errors-page .kpi-card.kpi-error:has(.kpi-value:not(:empty)) .kpi-value{color:var(--color)!important}.errors-page .col-msg{font-family:var(--font-mono)!important;font-size:13px!important}.errors-page .errors-list>div:not(.errors-list-head){padding-top:10px!important;padding-bottom:10px!important;min-height:56px!important}.errors-page .col-count::after,.errors-page .col-count::before{content:none!important;display:none!important}.errors-page .col-count .count-pill{width:auto!important;min-width:0!important}.errors-page .col-sev .sev-info::before{background:var(--ink-faint)!important}.errors-page input[type=search]{font-family:var(--font-sans)!important}.errors-page .errors-toolbar .search-wrap,.errors-page .errors-toolbar input[type=search]{flex:1 1 220px!important;max-width:340px!important;min-width:0!important}.errors-page .kpi-filter:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (max-width:767px){.errors-page .errors-toolbar .select-wrap select{flex:1 1 auto;min-width:0!important;width:100%!important;max-width:none!important}}@media (max-width:767px){.errors-page .errors-toolbar .autoref{grid-column:1}}@media (max-width:767px){.errors-page .errors-toolbar>.btn-icon{grid-column:2;justify-self:end}}.errors-page .col-msg .msg-context,.errors-page .col-msg .msg-detail{overflow-wrap:anywhere}.errors-toolbar .select-wrap label{white-space:nowrap}.errors-page .col-status{text-align:center}@media (max-width:900px){.errors-page .errors-list-head,.errors-page .errors-row-main{grid-template-columns:80px minmax(0,1fr) 56px 64px!important}}@media (min-width:768px){.errors-page .errors-toolbar .select-wrap{flex:none!important}}@media (min-width:768px){.errors-page .errors-toolbar>.seg-filter{order:1}}@media (min-width:768px){.errors-page .errors-toolbar>.btn-icon{order:3}}@media (min-width:768px){.errors-page .errors-toolbar>.select-wrap{order:6}}@media (min-width:768px){.errors-page .errors-toolbar>.select-wrap+.select-wrap{order:7}}@media (min-width:768px){.errors-page .errors-toolbar .search-wrap input[type=search]{max-width:none!important;width:100%!important}}@media (min-width:901px){.errors-page .errors-list-head,.errors-page .errors-row-main{grid-template-columns:120px 120px minmax(0,1fr) 64px 72px!important}}.email-prompt{width:min(560px,calc(100vw - 32px));padding:28px;border:1px solid var(--paper-border,#e5e1d9);border-radius:12px;background:var(--paper-bg,#faf9f6);color:inherit;box-shadow:0 16px 64px #0003}.email-prompt::backdrop{background:#0006}.email-prompt h2{margin:0 0 12px;font-size:24px}.email-prompt p{margin-bottom:20px}.email-prompt-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:24px}body.dark-mode .email-prompt{background:#242320;color:#faf9f6}.file-error .viewer-error{width:100%;max-width:65ch;padding:2rem 1rem;overflow-wrap:anywhere;font-size:1rem;font-weight:400;text-align:left}.viewer-error .paper-empty-title{margin-bottom:1rem}.viewer-error p{line-height:1.6}.viewer-error .paper-error-actions{display:flex;flex-wrap:wrap;gap:.75rem}.markdown-body .markdown-alert{margin:1rem 0;padding:.5rem 1rem;border-left:4px solid var(--alert-color,#0969da)}.markdown-body .markdown-alert-note{--alert-color:#0969da}.markdown-body .markdown-alert-tip{--alert-color:#1a7f37}.markdown-body .markdown-alert-important{--alert-color:#8250df}.markdown-body .markdown-alert-warning{--alert-color:#9a6700}.markdown-body .markdown-alert-caution{--alert-color:#cf222e}.markdown-body .markdown-alert-title{color:var(--alert-color);font-weight:600;display:flex;align-items:center;gap:.5rem}.markdown-body .markdown-alert-title svg{fill:currentColor;flex-shrink:0}.markdown-body .markdown-alert>:last-child{margin-bottom:0}body.dark-mode .markdown-alert-note{--alert-color:#79c0ff}body.dark-mode .markdown-alert-tip{--alert-color:#7ee787}body.dark-mode .markdown-alert-important{--alert-color:#d2a8ff}body.dark-mode .markdown-alert-warning{--alert-color:#e3b341}body.dark-mode .markdown-alert-caution{--alert-color:#ff7b72}.markdown-body .emoji{display:inline}.markdown-body .footnotes{margin-top:2rem;border-top:1px solid var(--border-color,#d0d7de);padding-top:1rem;font-size:.875em}.markdown-body .katex-display{overflow-x:auto;overflow-y:hidden;padding:.25rem 0}.markdown-body .markdown-diagram{margin:1rem 0;border:1px solid var(--border-color,#d0d7de);padding:.75rem}.markdown-body .markdown-diagram svg{display:block;width:100%;max-height:360px}.markdown-body .markdown-diagram path{fill:#7cc7be;fill-opacity:.5;stroke:var(--link-color,#1f6a64);stroke-width:1;vector-effect:non-scaling-stroke}.markdown-body .diagram-controls{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.markdown-body .diagram-controls button{min-width:44px;min-height:44px;padding:.25rem .75rem;border:1px solid var(--border-color,#d0d7de);background:var(--main-bg-color,#fff);color:inherit;border-radius:4px}.markdown-body .diagram-controls button:hover{background:var(--hover-bg-color,#f6f8fa)}.markdown-body .diagram-controls button:focus-visible{outline:2px solid var(--link-color,#0969da);outline-offset:2px}.markdown-body .hljs-keyword,.markdown-body .hljs-selector-tag{color:#cf222e}.markdown-body .hljs-attr,.markdown-body .hljs-string{color:#0a3069}.markdown-body .hljs-literal,.markdown-body .hljs-number,.markdown-body .hljs-title{color:#8250df}.markdown-body .hljs-comment{color:#57606a}body.dark-mode .markdown-body .hljs-keyword{color:#ff7b72}body.dark-mode .markdown-body .hljs-attr,body.dark-mode .markdown-body .hljs-string{color:#a5d6ff}body.dark-mode .markdown-body .hljs-literal,body.dark-mode .markdown-body .hljs-number,body.dark-mode .markdown-body .hljs-title{color:#d2a8ff}body.dark-mode .markdown-body .hljs-comment{color:#b1bac4}body.dark-mode .markdown-body .gh-light-mode-only,body:not(.dark-mode) .markdown-body .gh-dark-mode-only{display:none}#settings-billing p{max-width:72ch}.repository-hosting{border-top:1px solid var(--border-color);margin-top:24px}.repository-hosting h2{font-size:1.5rem}.repository-pass{margin:20px 0}.repository-pass summary{color:var(--link-color)}.repository-task{margin:0 auto;padding:32px 24px 42px;color:var(--color);font-size:15px;line-height:1.55;scroll-margin-top:70px}.repository-task .paper-crumbs{margin-bottom:24px}.admin-page .paper-crumbs{min-height:20px;margin-bottom:4px!important}.repository-task h1{font:normal 40px/1.15 'Iowan Old Style',Georgia,serif;margin:8px 0 10px}.repository-task h2{font:normal 27px/1.25 'Iowan Old Style',Georgia,serif;margin:0 0 12px}.repository-task h3{font:600 17px/1.5 var(--font-sans);margin:0 0 10px}.repository-task p{margin:0 0 16px}.task-lede{color:var(--ink-muted)}.task-trail{list-style:none;display:flex;flex-wrap:wrap;gap:24px;margin:30px 0;padding:18px 0;border-bottom:1px solid var(--border-color);color:var(--ink-muted);font-size:13px}.task-trail [aria-current]{color:var(--color);font-weight:600}.task-trail button{color:inherit;padding:0;border:0;background:0 0;font:inherit;cursor:pointer}.task-columns{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(245px,1fr);gap:34px;align-items:stretch}.task-text-button{border:0;padding:7px 0;background:0 0;color:var(--link-color);cursor:pointer;font:inherit;text-align:left}.task-text-button:focus-visible,.task-trail button:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.task-summary dt{font-size:12px;font-weight:400;color:var(--ink-muted);margin-top:16px!important}.task-summary dd{margin:3px 0;overflow-wrap:anywhere}.task-summary h3{overflow-wrap:anywhere}.task-summary dl{margin-bottom:0}.task-status{background:var(--accent-soft);padding:16px 20px;margin:20px 0}.task-status p:last-child{margin:0}@media (max-width:650px){.repository-task{padding:24px 18px}.repository-task h1{font-size:32px}.task-columns{display:block}.task-summary{margin-top:28px}.task-trail{gap:15px;font-size:12px}}.repository-task.status-page .paper-progress{margin-top:24px}.repository-task>h1{margin:4px 0 8px}.repository-task .btn-primary:hover{filter:brightness(.94)}@media (min-width:992px){.repository-task .task-columns:has(.share-link){grid-template-columns:minmax(0,2fr) minmax(300px,1fr)!important}}.repository-task .share-link-url:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.anonymize-page .anonymize-topbar{padding:14px 22px;background:var(--canvas-bg-color)}.anonymize-page .anonymize-topbar-inner{max-width:none}.anonymize-page .anonymize-topbar-head{justify-content:space-between}.anonymize-page .anonymize-topbar-title{font:600 19px/1.25 var(--font-sans);margin:0}.anonymize-page .anonymize-split{display:grid;grid-template-columns:minmax(320px,42%) minmax(0,1fr);overflow:hidden}.anonymize-page .anonymize-form-col{width:auto;min-height:0;overflow:hidden!important;background:var(--paper-card)}.anonymize-page .anonymize-form-col .paper-settings-main{display:flex;flex-direction:column;height:100%;min-height:0;max-width:none;padding:0}.anonymize-fields{flex:1;min-height:0;overflow:auto;position:relative;scrollbar-width:thin}.anonymize-page .paper-settings-main .paper-settings-section{border:0;border-top:1px solid var(--border-color);border-radius:0;padding:18px 20px 20px;margin:0;box-shadow:none}.anonymize-page .paper-settings-main .paper-settings-section:first-child{border-top:0;padding-top:18px}.anonymize-page .paper-section-eyebrow{font:600 15px/1.4 var(--font-sans);margin:0 0 16px;letter-spacing:0}.anonymize-page .paper-field-label{font:500 13px/1.5 var(--font-sans);margin-bottom:8px}.anonymize-page .form-group{margin-bottom:16px}.anonymize-page .form-group:last-child{margin-bottom:0}.anonymize-page .form-control{font-size:14px;min-height:40px;padding:9px 10px}.anonymize-page textarea.form-control{line-height:1.6}.anonymize-page .form-grid-2{gap:12px}.anonymize-page .form-check{padding-top:10px;padding-bottom:10px;font-size:14px;padding-left:26px}.anonymize-page .form-check-label{font-size:14px;line-height:1.5;font-weight:400}.anonymize-page .form-text{font-size:12px;line-height:1.6}.anonymize-page .repo-access-details{margin:12px 0 16px}.anonymize-page .repo-access-note{font-size:11px}.repo-access-note>span:has(.ui-icon) .ui-icon{flex-shrink:0;margin-top:2px;color:#9a6416!important}.repo-access-note>span:last-child .ui-icon{color:#9a6416;flex:none;margin-top:2px}.dark-mode .repo-access-note>span:has(.ui-icon){background:rgba(224,176,112,.1)!important;box-shadow:inset 3px 0 0 #e0b070!important}.dark-mode .repo-access-note>span:has(.ui-icon) .ui-icon{color:#e0b070!important}.repo-access-note{width:100%}.anonymize-page .anonymize-submit-bar{flex:none;position:static;margin:0;padding:16px 20px;background:var(--paper-card);border-top:1px solid var(--border-color)}.anonymize-page .anonymize-submit-bar .btn{width:100%;font-size:14px;padding:10px 12px;min-height:43px;font-weight:600}.checkout-return-note{font-size:11px;line-height:1.5;color:var(--ink-muted);margin:8px 0 0;text-align:center}.anonymize-fields>.alert,.anonymize-fields>.draft-status{margin:12px 20px}.anonymize-page .anonymize-preview-col{min-height:0;padding:20px;position:relative;background:var(--canvas-bg-color)}.anonymize-page .anonymize-preview-body{padding:24px;border-radius:6px;min-height:480px;overflow-wrap:anywhere;font:14px/1.7 var(--font-sans);--main-bg-color:var(--paper-card);background:var(--paper-card)}.anonymize-page .anonymize-preview-body h1{font-size:27px;line-height:1.2;margin:0 0 20px;padding-bottom:14px;font-weight:700}.anonymize-page .anonymize-preview-body h2{font-size:18px;margin:28px 0 12px;border:0;padding:0;font-weight:700}.anonymize-page .anonymize-preview-body pre{font-size:12px;padding:15px;background:var(--paper-bg-alt);line-height:1.7}.anonymize-page.preview-expanded .anonymize-split{grid-template-columns:1fr}.anonymize-page.preview-expanded .anonymize-form-col{display:none}.hosting-usage{font-size:12px;color:var(--ink-muted);margin:0 0 4px}.expiration-choices{border:0;padding:0;margin:0 0 16px;min-width:0}.expiration-choice{display:flex;align-items:flex-start;gap:10px;padding:12px 0;margin:0;cursor:pointer;font-size:14px;font-weight:500;line-height:1.5}.expiration-choice input{width:16px;height:16px;margin:4px 0 0;flex:none;accent-color:var(--accent)}.expiration-choice small{display:block;font-size:12px;font-weight:400;color:var(--ink-muted);margin-top:2px}.dated-options{padding:2px 0 14px 26px}.hosting-date,.hosting-property{display:grid;grid-template-columns:48px minmax(0,1fr);gap:8px;align-items:center;margin-bottom:10px}.hosting-property{margin-bottom:0}.hosting-date .paper-field-label,.hosting-property label{font-size:12px;font-weight:400;margin:0}.hosting-date .invalid-feedback{grid-column:1/-1}.hosting-date>input.form-control[type=date]{justify-self:stretch}.anonymize-page .conference-field{border-bottom:1px solid var(--border-color);padding:0 0 16px;margin:0 0 14px}.anonymize-page .conference-hosting{margin:8px 0 0;padding:8px 12px;border-radius:8px;font-size:13px;line-height:1.45;color:var(--ink-soft);background:color-mix(in srgb,var(--ink-muted) 8%,transparent)}.anonymize-page .conference-hosting.is-covered{color:var(--color);background:var(--accent-soft)}.anonymize-page .conference-hosting a{font-weight:600}.hosting-terms{font-size:12px;line-height:1.5;color:var(--ink-muted)}.capacity-options,.repository-pass{margin-top:12px;font-size:12px}.capacity-options summary,.repository-pass summary{cursor:pointer}.capacity-options p,.repository-pass p{margin:8px 0}.capacity-options .task-text-button{display:block}@media (max-width:767px){.anonymize-page .anonymize-split{display:block;overflow:visible}.anonymize-page .anonymize-form-col .paper-settings-main{height:auto}.anonymize-fields{overflow:visible}.anonymize-page .paper-settings-main .paper-settings-section{padding:18px 16px 20px}.anonymize-page .anonymize-topbar{padding:14px 16px}.anonymize-page .anonymize-preview-col{padding:16px}.anonymize-page .anonymize-preview-body{padding:20px}.anonymize-page .anonymize-submit-bar{padding:16px}.anonymize-page .anonymize-mobile-tabs{padding:0;gap:0;background:var(--paper-card)}.anonymize-mobile-tabs button{border-radius:0;padding:12px;min-height:44px}.anonymize-mobile-tabs button[aria-selected=true]{background:0 0;box-shadow:inset 0 -2px var(--accent)}}.paper-settings-section .form-check>input.form-check-input[type=checkbox]{position:absolute;margin:3px 0 0 -28px}.dark-mode .anonymize-preview-col .markdown-body h1,.dark-mode .anonymize-preview-col .markdown-body h2,.dark-mode .anonymize-preview-col .markdown-body hr{border-color:var(--border-color)!important}.anonymize-preview-col .pr-title .badge::before{content:"";width:6px;height:6px;border-radius:50%;margin-right:6px;background:var(--status-inactive,var(--ink-faint))}.anonymize-preview-col .pr-title .badge.badge-success::before{background:var(--status-ready)}.anonymize-preview-col .pr-title .badge.badge-warning::before{background:var(--status-progress)}.anonymize-preview-col .pr-title .badge.badge-danger::before{background:var(--status-error)}.anonymize-form-col form{padding-bottom:0!important}.anonymize-page{font-family:var(--font-sans)}body:not(.dark-mode) .anonymize-page{--paper-card:#fff;--canvas-bg-color:#faf9f6;--paper-bg-alt:#f5f4f0;--border-color:#dedbd4;--color:#242320;--ink-muted:#68655e}.anonymize-page .repo-access-controls .btn{font-size:12px;padding:8px 12px;min-height:36px}.anonymize-page .form-check input{width:16px;height:16px;margin-left:-26px;accent-color:var(--accent)}.anonymize-page .form-check small{margin-top:6px;margin-left:-26px}.anonymize-page .btn.btn-icon.refresh-branches{display:inline-flex;align-items:center;justify-content:center;width:40px;min-width:40px;height:100%;min-height:40px;padding:0}@media (max-width:767px){.anonymize-page #branch,.anonymize-page #commit{min-height:44px}.anonymize-page .btn.btn-icon.refresh-branches{width:44px;min-width:44px;min-height:44px}}.anonymize-page .redaction-syntax{font-size:12px;margin-top:8px}.redaction-syntax summary{cursor:pointer;color:var(--link-color);min-height:28px}.anonymize-page .term-hint{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-top:8px;padding:8px 10px;border-radius:6px;background:#fbf1df;color:#5c3a07;font-size:12px}.anonymize-page .term-hint code{background:0 0;padding:0;color:inherit;font-weight:600}.anonymize-page .term-hint .btn{flex:none}.anonymize-page .term-hint-more{margin-top:6px;font-size:12px;color:var(--ink-muted)}body.dark-mode .anonymize-page .term-hint{background:#3a2f1c;color:#f3dcb4}.anonymize-page .preserve-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:4px 0 16px;padding-top:14px;border-top:1px solid var(--paper-border,#e5e1d9)}.anonymize-page .preserve-row-text{display:flex;flex-direction:column;min-width:0}.anonymize-page .preserve-row .paper-field-label{margin-bottom:2px}.anonymize-page .preserve-row-value{font-size:12px;color:var(--ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.anonymize-page .preserve-row .btn{flex:none}.preserve-dialog{width:min(620px,calc(100vw - 32px));padding:24px;border:1px solid var(--paper-border,#e5e1d9);border-radius:12px;background:var(--paper-bg,#faf9f6);color:inherit;box-shadow:0 16px 64px #0003}.preserve-dialog::backdrop{background:#0006}.preserve-dialog h2{margin:0 0 6px;font-size:20px}.preserve-dialog .preserve-intro{font-size:13px;color:var(--ink-muted);margin-bottom:14px}.preserve-dialog .preserve-tree{margin-top:10px;height:300px;overflow:auto;border:1px solid var(--paper-border,#e5e1d9);border-radius:8px;background:var(--paper-card);padding:4px 0}.preserve-dialog .preserve-item{display:flex;align-items:center;gap:6px;min-height:30px;padding-right:10px;font-size:13px}.preserve-dialog .preserve-item:hover{background:var(--paper-bg-alt)}.preserve-dialog .preserve-caret,.preserve-dialog .preserve-caret-space{flex:none;width:18px;height:22px;border:0;padding:0;background:0 0;color:var(--ink-muted);font-size:12px;cursor:pointer}.preserve-dialog .preserve-item input{flex:none;margin:0}.preserve-dialog .preserve-name{flex:1;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,monospace;font-size:12.5px;cursor:pointer}.preserve-dialog .preserve-note{flex:none;font-size:11px;color:var(--ink-muted)}.preserve-dialog .preserve-status{margin:10px 12px;font-size:13px;color:var(--ink-muted)}.preserve-dialog .preserve-patterns{margin-top:12px;font-size:13px}.preserve-dialog .preserve-patterns summary{cursor:pointer;color:var(--link-color);min-height:28px}.preserve-dialog .preserve-patterns textarea{margin-top:6px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:12.5px}.preserve-dialog .preserve-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:16px}.preserve-dialog .preserve-count{font-size:13px;color:var(--ink-muted)}.preserve-dialog .preserve-actions{display:flex;gap:8px;margin-left:auto}body.dark-mode .preserve-dialog{background:#242320;color:#faf9f6}.anonymize-page .anonymize-preview-body pre code{font:12px/1.7 ui-monospace,monospace;background:0 0;padding:0}.anonymize-page .form-grid-2 .form-group{margin-bottom:0}.user-settings{max-width:1060px;padding:28px 26px 40px}.user-settings .settings-title{align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:22px}.user-settings .settings-title h1{margin:0}.settings-title>span{color:var(--ink-muted);font-size:12px}.settings-nav{display:flex;gap:28px;border-bottom:1px solid var(--border-color)}.settings-nav button{border:0;border-radius:0;background:0 0;color:var(--ink-muted);padding:12px 0;min-height:44px;font:13px/1.4 var(--font-sans)}.settings-nav button[aria-current=page]{color:var(--color);font-weight:600;box-shadow:inset 0 -2px var(--accent)}.settings-nav button:hover{color:var(--accent)}.user-settings .settings-row{display:grid;grid-template-columns:210px minmax(0,1fr);gap:32px;padding:22px 0;border-bottom:1px solid var(--border-color)}.user-settings .settings-label,.user-settings .settings-row>h2{font-size:13px;font-weight:600;line-height:1.5;margin:8px 0 0;display:block}.user-settings .settings-help{font-size:12px;color:var(--ink-muted);margin:7px 0 0;line-height:1.6}.user-settings .form-control{font-size:14px;min-height:40px;padding:9px 10px;border-radius:4px;background:var(--paper-card)}.user-settings textarea.form-control{line-height:1.6}.anonymize-page .form-control,.paper-page .form-control,.paper-page input[type=date],.paper-page input[type=text],.paper-page textarea{border:1px solid color-mix(in srgb,var(--ink-faint) 55%,var(--border-color))!important;border-radius:var(--radius-control)!important}.anonymize-page code,.paper-page code,.paper-page kbd{font-family:var(--font-mono)!important}.anonymize-page .repo-access-switch button+button::before{content:"·";margin-right:8px;color:var(--ink-muted)}.anonymize-page .repo-access-switch button:not([aria-pressed=true]):hover{color:var(--accent)!important;text-decoration:underline}.anonymize-page input[type=checkbox]:disabled{opacity:.45;cursor:not-allowed}.anonymize-page #commit{font-family:var(--font-mono, "JetBrains Mono", monospace)!important;font-size:13px!important;text-overflow:ellipsis}.anonymize-page .form-check-input[type=checkbox]{position:absolute!important;margin-left:-28px!important;margin-top:3px!important}.anonymize-page .repo-access-controls:not(:has(button,a)),.anonymize-page .repo-access-main:not(:has(button,a)){display:none!important}.anonymize-page .repo-access-note:not(:has(span+span)){margin-top:0!important}@media (max-width:767px){.anonymize-page .form-group+.form-group{margin-top:0!important}}.anonymize-page #sourceUrl-landing:focus,.anonymize-page #sourceUrl:focus{border-color:var(--accent)!important}@media (min-width:768px){#conf-basics .form-group{max-width:600px}}@media (hover:none){.anonymize-page .repo-access-switch button:not([aria-pressed=true]):hover{color:var(--ink-soft)!important;text-decoration:none!important}}@media (max-width:767px){.anonymize-page .form-grid-2{gap:0!important}}.dark-mode :is(.paper-page,.anonymize-page) input[type=checkbox]:is(:checked,:indeterminate)::before{background:#161412!important}.anonymize-page .repair-disclosure .repair-step p[role=status]{margin:10px 0 0}.dark-mode .anonymize-page{--rp-stage:var(--sidebar-bg-color);--rp-window:var(--canvas-bg-color);--rp-chrome:var(--paper-card);--rp-tree:var(--sidebar-bg-color);--rp-line:var(--border-color);--rp-skel:var(--paper-card)}.anonymize-page .reviewer-preview .anonymize-preview-body.markdown-body h1{font-size:24px}@media (prefers-reduced-motion:no-preference){.reviewer-preview .rp-loading .rp-skel,.reviewer-preview .rp-skel-row .rp-skel{animation:rp-pulse 1.4s ease-in-out infinite}}@media (min-width:1200px){.anonymize-page .anonymize-workspace .anonymize-split>.anonymize-form-col{grid-column:2;padding-right:24px!important}}@media (min-width:1200px){.anonymize-page .anonymize-workspace .anonymize-split>.reviewer-preview{grid-column:3}}@media (min-width:1200px){.anonymize-page.preview-expanded .anonymize-workspace .anonymize-split>.reviewer-preview{grid-column:1/-1}}@supports (animation-timeline:scroll()){.reviewer-preview .rp-more{animation:rp-more-fade linear both;animation-timeline:scroll(nearest block)}}@media (max-width:767px){.anonymize-workspace .hosting-settings>.expiration-choices:last-child>.expiration-choice:last-child{padding-bottom:0!important}}.anonymize-page .source-url-label-row>label{margin:0!important;align-self:center!important}.anonymize-page .source-url-label-row .repo-access-switch button::after,.anonymize-page .source-url-label-row .repo-access-switch button::before{content:none!important;display:none!important}.anonymize-page .anon-url-echo{overflow-wrap:normal!important;word-break:normal}@media (max-width:767px){.anonymize-page .source-url-label-row .repo-access-switch.repo-access-switch button{min-height:28px!important;height:28px!important;padding:0 12px!important;font-size:12.5px!important}}@media (max-width:767px){.anonymize-workspace .anonymize-fields>.paper-settings-section:has(+.paper-settings-section[style*="display: none"]):not(:has(~.paper-settings-section:not([style*="display: none"]))){padding-bottom:8px!important}}@media (min-width:1200px){.anonymize-workspace .anonymize-form-col .anonymize-submit-bar::before{background:linear-gradient(to bottom,rgba(250,249,246,0),#faf9f6)!important}}.reviewer-preview .markdown-body pre,.reviewer-preview .pr-diff pre,.reviewer-preview .pr-diff table,.reviewer-preview pre{max-width:100%}.reviewer-preview pre{overflow-x:hidden!important;white-space:pre-wrap!important;overflow-wrap:anywhere!important;word-break:normal!important}.reviewer-preview pre code,.reviewer-preview pre code span{white-space:pre-wrap!important;overflow-wrap:anywhere!important;word-break:normal!important}@media (min-width:768px){.reviewer-preview .rp-body.has-tree .anonymize-preview-body{padding-left:32px!important;padding-right:32px!important;max-width:none}}@media (min-width:768px){.reviewer-preview .rp-body.has-tree .anonymize-preview-body li>:is(p,ul,ol){display:block}}.reviewer-preview pre code .code-line{display:inline-block;width:100%;box-sizing:border-box;padding-left:var(--hang,4ch);text-indent:calc(-1 * var(--hang,4ch));vertical-align:top}.reviewer-preview pre code .md-diff-line{padding-left:calc(var(--diff-pad) + var(--hang,4ch));text-indent:calc(-1 * var(--hang,4ch));vertical-align:top}@media (min-width:768px){.reviewer-preview .rp-body.has-tree>.rp-tree .rp-tree-row.rp-skel-row{width:120px}}@media (min-width:768px){.reviewer-preview .rp-body.has-tree .anonymize-preview-body :is(p,ul,ol,dl,h1,h2,h3,h4,h5,h6,blockquote,hr){display:revert}}.reviewer-preview pre,.reviewer-preview pre code{font-family:var(--font-mono)!important;font-size:12px!important;line-height:20px!important}.reviewer-preview pre code{display:block}.dark-mode .reviewer-preview pre code .md-diff-line.is-add{background:#1e2a20}.dark-mode .reviewer-preview pre code .md-diff-line.is-remove{background:#33201d}.reviewer-preview .rp-open:hover{text-decoration-thickness:2px}pre code .md-diff-line{display:inline-block;box-sizing:border-box;margin:0 calc(-1 * var(--diff-pad));padding:0 var(--diff-pad);width:calc(100% + 2 * var(--diff-pad))}pre code .md-diff-line.is-add{background:rgba(47,107,62,.1);color:#1f4a2a}pre code .md-diff-line.is-remove{background:rgba(161,58,46,.1);color:#6e1f1a}pre code .md-diff-line.is-hunk{color:var(--ink-muted)}.dark-mode pre code .md-diff-line.is-add{background:rgba(167,226,167,.1);color:#c9f0c9}.dark-mode pre code .md-diff-line.is-remove{background:rgba(255,139,123,.1);color:#ffc9c0}.dark-mode .reviewer-preview .rp-window{box-shadow:0 12px 32px -10px rgba(0,0,0,.6)}.reviewer-preview .rp-bar .vb-logo em{font-style:italic}@media (min-width:768px){#conf-window .form-grid-2{max-width:600px}}.admin-page select,.admin-page select.form-control{padding-right:30px!important;background:var(--input-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236F6A61' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center!important;-webkit-appearance:none!important;appearance:none!important}.paper-page .form-control,.paper-page input[type=date],.paper-page input[type=text],.paper-page textarea{border-color:var(--border-color)!important}.paper-page .form-control:focus,.paper-page textarea:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}.admin-page input:not([type=checkbox]),.claim-page input,.paper-page input.form-control,.paper-page input[type=date],.paper-page input[type=search],.paper-page input[type=text],.paper-page input[type=url],.paper-page select.form-control,.paper-page textarea,.paper-page textarea.form-control{border:1px solid var(--border-color)!important}.dark-mode .admin-page input:not([type=checkbox]),.dark-mode .claim-page input,.dark-mode .paper-page input.form-control,.dark-mode .paper-page textarea{border-color:#5a554d!important}.admin-page select.form-control{height:36px!important;border:1px solid var(--border-color)!important}#sourceUrl-landing::placeholder,#terms::placeholder,.form-control::placeholder,input::placeholder,textarea::placeholder{color:#a39b8e!important;opacity:1!important}input.form-control[type=date]::-webkit-date-and-time-value{text-align:left;margin:0;min-height:1.25em}input.form-control[type=date]::-webkit-datetime-edit{padding:0}body.dark-mode #sourceUrl-landing::placeholder,body.dark-mode #terms::placeholder,body.dark-mode .form-control::placeholder,body.dark-mode input::placeholder,body.dark-mode textarea::placeholder{color:var(--ink-faint)!important;opacity:1}.settings-syntax{font-size:12px;margin-top:8px}.settings-syntax summary{cursor:pointer;color:var(--link-color);min-height:26px}.settings-syntax p{margin:8px 0}.settings-checks{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px;padding:4px 0;margin-bottom:12px}.user-settings .settings-check{display:flex;gap:9px;align-items:center;font-weight:400;margin:0}.user-settings .settings-check .form-check-input{position:static;width:16px;height:16px;margin:0;flex:none;accent-color:var(--accent)}.settings-save{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:18px 0 22px}.settings-save-status{color:var(--ink-muted);font-size:12px}.settings-save #save{margin-left:auto;min-width:125px}.settings-save-error{color:var(--status-error);flex-basis:100%}.user-settings .btn{font-size:13px;min-height:40px;padding:9px 13px}.user-settings #settings-quota{margin:22px 0 16px}.user-settings .quota-row{gap:20px}.user-settings .quota-item{padding:0;background:0 0;border:0}.user-settings .quota-label{font-size:12px}.user-settings .quota-value{font-size:13px;margin:6px 0}.user-settings .quota-value strong{font-size:14px}.user-settings .quota-percent,.user-settings .quota-remaining{font-size:11px}.settings-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.settings-notice{background:var(--paper-bg-alt);border:1px solid var(--border-color);border-radius:5px;padding:14px 16px;margin:16px 0;font-size:13px}.settings-notice p{margin:6px 0 12px}.settings-text-button{border:0;background:0 0;color:var(--link-color);padding:8px 0;font-size:12px}.settings-status{display:inline-block;font-size:12px;font-weight:500;line-height:18px;border-radius:999px;padding:1px 9px;background:var(--paper-bg-alt);color:var(--ink-muted);white-space:nowrap}.settings-status.is-active{background:var(--accent-soft);color:var(--accent);box-shadow:inset 0 0 0 1px rgba(31,106,100,.3)}.settings-status.is-disputed,.settings-status.is-overdue,.settings-status.is-refunded{background:rgba(185,28,28,.08);color:#b91c1c}body.dark-mode .settings-status.is-disputed,body.dark-mode .settings-status.is-overdue,body.dark-mode .settings-status.is-refunded{background:rgba(248,113,113,.16);color:#f87171}.user-settings .settings-comparison th:first-child{width:22%}.user-settings .paper-account-card{padding:24px 0;border:0;background:0 0}.user-settings .paper-danger-zone{margin-top:24px}@media (max-width:767px){.user-settings{padding:22px 18px 90px}.user-settings .settings-row{grid-template-columns:1fr;gap:12px;padding:20px 0}.user-settings .settings-label,.user-settings .settings-row>h2{margin-top:0}.settings-nav{gap:18px;justify-content:space-between}.settings-nav button{text-align:left;font-size:12px;max-width:124px}.settings-save{gap:8px}.settings-save-status{font-size:11px}.settings-save #save{min-width:120px}.user-settings .quota-row{grid-template-columns:1fr}}@media (max-width:600px){.settings-nav button{white-space:nowrap;flex-shrink:0}}.user-settings .settings-save .draft-status{margin:0;padding:0}.settings-delete-confirm{max-width:480px;margin-top:18px}.settings-delete-confirm label{display:block;font-size:13px;margin-bottom:8px}.user-settings .quota-usage{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.user-settings .quota-usage .quota-item+.quota-item{border:0;padding:0}.user-settings .quota-percent,.user-settings .quota-remaining{display:none}@media (max-width:767px){.user-settings .quota-usage{grid-template-columns:1fr}}.user-settings .settings-comparison{width:100%;table-layout:fixed;margin:16px 0 20px;font-size:12px}.settings-comparison td,.settings-comparison th{padding:10px 8px;border-bottom:1px solid var(--border-color);text-align:left;overflow-wrap:anywhere;vertical-align:top}.settings-comparison th:first-child{width:42%;padding-left:0}.settings-comparison tbody th{font-weight:400}.settings-comparison thead th{font-weight:600}@media (max-width:580px){.user-settings .settings-comparison{font-size:11px}}.user-settings .billing-summary .quota-track .quota-fill{border-radius:3px}.user-settings .billing-summary .settings-notice{margin:18px 0 0}.user-settings .billing-section{margin-top:44px}.user-settings .billing-section-title:focus{outline:0}body.dark-mode .user-settings .billing-offer-pill{color:#1a1815}.user-settings .billing-offer h3{font-size:16px;font-weight:600;margin:0}.user-settings .billing-offer-list li{position:relative;padding-left:22px;margin:0 0 6px}.user-settings .billing-offer-list li::before{content:"";position:absolute;left:3px;top:6px;width:10px;height:5px;border-left:1.5px solid var(--ink-muted);border-bottom:1.5px solid var(--ink-muted);transform:rotate(-45deg)}.user-settings .billing-offer-head .billing-eyebrow{margin:0}.user-settings .billing-buy-info .billing-offer-price{margin:4px 0 8px}.user-settings .billing-buy-form .paper-field-label{margin:0}.user-settings .billing-buy-form .billing-footnote{margin:0}.user-settings .billing-buy:focus{outline:0}.user-settings .billing-buy h3{font-size:18px;font-weight:600;margin:0}.user-settings .billing-buy h3 span{font-size:14px;font-weight:400;color:var(--ink-muted);margin-left:8px}.user-settings .billing-compare summary::-webkit-details-marker{display:none}.user-settings .billing-compare summary::before{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s;margin-right:2px}.user-settings .billing-compare[open] summary::before{transform:rotate(45deg)}.user-settings .billing-compare .settings-comparison td.is-recommended{border-bottom-color:transparent}.user-settings .billing-compare .settings-comparison td,.user-settings .billing-compare .settings-comparison th{padding:10px 14px;border-bottom:1px solid var(--border-color)}.user-settings .billing-compare .settings-comparison tr>:first-child{padding-left:0}.user-settings .billing-compare .settings-comparison thead th{font-size:14px;font-weight:600;vertical-align:bottom}.user-settings .billing-compare .settings-comparison thead th small{display:block;font-size:12px;font-weight:400;color:var(--ink-muted);margin-top:2px}.user-settings .billing-compare .settings-comparison thead th.is-recommended{border-radius:8px 8px 0 0}.user-settings .billing-compare .settings-comparison tbody tr:last-child td.is-recommended{border-radius:0 0 8px 8px}.user-settings .billing-compare .settings-comparison tbody tr:last-child>*{border-bottom:0}.user-settings .billing-history-head span:nth-child(n+3){text-align:right}.user-settings .billing-history-main strong a{font-weight:500}.user-settings .billing-history-term:empty::before{content:"—"}.user-settings .billing-history-paid{text-align:right}.user-settings .billing-history-paid small{display:block;color:var(--ink-muted);font-size:12px;margin-top:2px}.user-settings .billing-history-status{text-align:right}.user-settings .billing-manage p{margin:3px 0 0;color:var(--ink-muted);font-size:12px;line-height:1.55}.user-settings .billing-addons{margin-top:40px}.user-settings .billing-addon-rows li{display:grid;grid-template-columns:minmax(0,1fr) 90px 48px;gap:16px;align-items:center;padding:11px 0;border-bottom:1px solid var(--border-color);font-size:13px}.user-settings .billing-addon-rows div span{color:var(--ink-muted)}body.dark-mode .user-settings .billing-offer.is-recommended{border-color:rgba(124,199,190,.6);box-shadow:none}body.dark-mode .user-settings .billing-summary .quota-track{background:rgba(255,255,255,.2)}@media (max-width:900px){.user-settings .billing-addon-rows li{grid-template-columns:minmax(0,1fr) auto auto;gap:12px}}.dark-mode .user-settings .settings-save #save:disabled:not(.is-saving),.user-settings .settings-save #save:disabled:not(.is-saving){background:var(--paper-bg-alt)!important;border-color:var(--border-color)!important;color:var(--ink-muted)!important;opacity:1;cursor:not-allowed;box-shadow:none!important}.user-settings .settings-scope+form>.settings-row:first-child{padding-top:0!important;border-top:0!important}body .btn:is(:disabled,.disabled,[aria-disabled=true]):not(.is-saving):not(.btn-link):not(.btn-icon-dots):not(.task-text-button),body .landing-url-row:has(>input:placeholder-shown)>.landing-continue,body .landing-url-row>.landing-continue[aria-disabled=true]:not(:is(.landing-url-row:has(>input:not(:placeholder-shown))>*)),body .user-settings .settings-save #save:disabled:not(.is-saving),body.dark-mode .btn:is(:disabled,.disabled,[aria-disabled=true]):not(.is-saving):not(.btn-link):not(.btn-icon-dots):not(.task-text-button),body.dark-mode .landing-url-row:has(>input:placeholder-shown)>.landing-continue,body.dark-mode .landing-url-row>.landing-continue[aria-disabled=true]:not(:is(.landing-url-row:has(>input:not(:placeholder-shown))>*)),body.dark-mode .user-settings .settings-save #save:disabled:not(.is-saving){background:var(--btn-disabled-bg)!important;border-color:var(--btn-disabled-border)!important;color:var(--btn-disabled-ink)!important;opacity:1!important;box-shadow:none!important;filter:none!important;cursor:not-allowed}@media (max-width:575px){.landing-url-row{flex-direction:column}}.landing-continue:disabled{box-shadow:none!important}.landing-continue:not(:disabled){background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}.settings-row select.form-control{max-width:360px}input[type=date].form-control::-webkit-datetime-edit{padding:0}.settings-row>div:last-child>.settings-check,.settings-row>div:last-child>textarea{max-width:none!important;width:100%}input[type=date].form-control::-webkit-datetime-edit-fields-wrapper{padding:0}input[type=date].form-control::-webkit-calendar-picker-indicator{width:16px;height:16px;padding:0;margin:0 0 0 8px;cursor:pointer;opacity:1;background:0 0;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.4' stroke-linecap='round'%3E%3Crect x='2.2' y='3.2' width='11.6' height='10.6' rx='1.8'/%3E%3Cpath d='M2.2 6.6h11.6M5.4 1.8v2.6M10.6 1.8v2.6'/%3E%3C/svg%3E") center/16px 16px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.4' stroke-linecap='round'%3E%3Crect x='2.2' y='3.2' width='11.6' height='10.6' rx='1.8'/%3E%3Cpath d='M2.2 6.6h11.6M5.4 1.8v2.6M10.6 1.8v2.6'/%3E%3C/svg%3E") center/16px 16px no-repeat;background-color:var(--ink-muted)}input[type=date].form-control:hover::-webkit-calendar-picker-indicator{background-color:var(--accent)}.dark-mode input[type=date].form-control{color-scheme:dark}@media (max-width:480px){input#name.form-control,input#name.form-control::placeholder{text-overflow:ellipsis}}.navbar .nav-link.nav-upgrade{border:1px solid var(--accent);border-radius:5px;color:var(--accent)!important;padding:7px 12px!important;margin-right:12px;font-size:12px;line-height:1.5}.navbar .nav-link.nav-upgrade:hover{background:var(--accent-soft)}@media (max-width:991px){.navbar .nav-link.nav-upgrade{display:inline-block;min-height:44px;padding:11px 14px!important;margin:8px 0}}.navbar .nav-link:not(.active):not(.btn-signin){color:var(--ink-soft)!important}@media (max-width:991px){.navbar .nav-signin-m .fa-github{font-size:15px}}@media (max-width:991.98px){.navbar .navbar-collapse .nav-link::after,.navbar .navbar-collapse .nav-link::before{display:none!important}}@media (max-width:991.98px){.navbar .navbar-collapse .user-chip img{width:24px!important;height:24px!important;margin:-3px 0!important}}@media (max-width:991.98px){.navbar .navbar-collapse .user-menu .dropdown-item small{display:none!important}}@media (max-width:991.98px){.navbar .navbar-collapse .user-menu .dropdown-item span{display:inline!important}}@media (max-width:991.98px){.navbar .navbar-collapse .user-menu .dropdown-divider{margin:6px 12px!important}}@media (min-width:992px){.navbar .navbar-collapse .navbar-nav:last-child>.nav-item:last-child>.nav-link{margin-right:0!important}}@media (max-width:767px){.navbar .nav-signin-m::after,.navbar .nav-theme-m::after,.navbar .navbar-toggler::after,.viewer-bar .vb-icon::after,.viewer-bar .vb-signin::after{content:"";position:absolute;left:50%;top:50%;width:max(100%,44px);height:44px;transform:translate(-50%,-50%)}}.viewer-bar .acct{margin-left:6px}@media (max-width:767px){.vb-signin{padding:0 10px!important}}.viewer-bar .acct-menu{bottom:auto;left:auto;right:0;top:calc(100% + 12px)!important}@media (max-width:767px){.viewer-bar .vb-signin{gap:6px!important}}@media (min-width:1280px){.viewer-bar a.vb-icon[href="/faq"]{gap:6px;width:32px!important;padding:0!important}}@media (min-width:1280px){.viewer-bar a.vb-icon[href="/faq"]::after{font:500 13px var(--font-sans);color:var(--ink-soft);content:none!important}}.viewer-bar .vb-right{gap:4px!important}@media (max-width:767px){.viewer-bar .vb-right{gap:8px!important}}.viewer-bar .vb-signin:hover{filter:brightness(.94)}@media (min-width:768px){.viewer-bar .vb-right{gap:8px!important}}@media (min-width:768px){.viewer-bar .vb-icon{width:32px!important}}@media (max-width:600px){.ov-cache .ov-performance-window{display:grid;grid-template-columns:auto minmax(0,1fr);width:100%}.ov-cache .ov-performance-window select{width:100%;min-width:0}}.viewer-loading{padding:24px clamp(16px,4vw,40px);min-height:280px;color:var(--color)}.viewer-loading-status{min-height:84px}.viewer-loading-status strong{display:block;font-size:15px;font-weight:600}.viewer-loading-name{display:block;margin-top:6px;font-family:monospace;font-size:13px;overflow-wrap:anywhere;opacity:.75}.viewer-loading-status p{margin:12px 0;font-size:14px}.viewer-loading-lines{display:grid;gap:14px;max-width:720px;padding-top:16px}.viewer-loading-lines span{height:9px;width:70%;background:var(--border-color);border-radius:3px}.viewer-loading-lines span:nth-child(3n+1){width:48%}.viewer-loading-lines span:nth-child(3n+2){width:88%}.ace_scrollbar-h{height:8px!important}.ace_scrollbar-h::-webkit-scrollbar{height:8px}.ace_scrollbar::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ink-faint) 55%,transparent);border-radius:4px}.ace_scrollbar::-webkit-scrollbar-track{background:0 0}.explorer-content,.explorer-main{background:var(--paper-card)}.explorer-content .dir-card,.explorer-content .file-card{margin:0!important;border:0;border-radius:0;background:0 0;overflow:visible}.explorer-content .file-card{min-height:100%}.explorer-content .file-card.is-code{height:100%!important;overflow:clip}.explorer-content .file-card-head{position:sticky;top:0;z-index:3;min-height:52px;padding:8px 12px 8px 32px;border-radius:0!important;border-bottom:1px solid var(--border-soft);background:color-mix(in srgb,var(--paper-card) 90%,transparent);-webkit-backdrop-filter:saturate(1.2) blur(8px);backdrop-filter:saturate(1.2) blur(8px)}.explorer-content .file-card .file-content.markdown-body{padding:36px 32px 96px}.explorer-content .file-card .ace_editor{border-radius:0}.explorer-content .ace_editor.ace-chrome .ace_gutter,.explorer-content .ace_editor.ace-nord-dark .ace_gutter{background:var(--paper-card)!important;border-right:1px solid var(--border-soft)!important}.explorer-content .ace_editor .ace_gutter-cell{padding-left:20px}.explorer-content .dir-card{border-bottom:1px solid var(--border-soft)}.explorer-content .dir-card-head{padding:14px 32px;background:0 0!important;border-bottom:0}.explorer-content .dir-row{padding:0 32px}.explorer-content .dir-card+.file-card{margin-top:0!important}@media (max-width:767px){.explorer-content .file-card-head{padding:6px 8px 6px 16px;row-gap:6px;flex-wrap:nowrap!important;min-height:52px!important;padding-top:6px!important;padding-bottom:6px!important}.explorer-content .file-card .file-content.markdown-body{padding:20px 16px 72px}.explorer-content .ace_editor .ace_gutter-cell{padding-left:6px!important;padding-right:6px!important}.explorer-content .dir-card-head,.explorer-content .dir-row{padding-left:16px;padding-right:16px}}.file-card-head .btn.btn-symbols{gap:6px;padding:0 10px;color:var(--ink-soft);font-weight:500}@media (max-width:767px){.file-card.is-code.no-wrap .ace_scroller{-webkit-mask-image:none!important;mask-image:none!important}}@media (min-width:768px){.explorer-content .file-card .file-content.markdown-body{margin:0 auto!important;padding-left:40px!important;padding-right:40px!important;max-width:920px}}.ace_editor .ace_marker-layer .ace_redacted{position:absolute;mix-blend-mode:multiply}.dark-mode .ace_editor .ace_marker-layer .ace_redacted{mix-blend-mode:screen}.dark-mode .ace-nord-dark .ace_marker-layer .ace_redacted,.dark-mode .ace_editor .ace_marker-layer .ace_redacted{background:rgba(124,199,190,.32)!important;box-shadow:inset 0 0 0 1px rgba(124,199,190,.65)!important}.ace_editor .ace_marker-layer .ace_selected-word{border-radius:2px}.ace_editor.ace-chrome .ace_marker-layer .ace_selection{background:#f2cc60!important}.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection{background:rgba(242,204,96,.55)!important}.ace_editor .ace_marker-layer .ace_redacted{border-radius:3px}.dark-mode .ace_editor .ace_marker-layer .ace_redacted{background:rgba(124,199,190,.26)!important;box-shadow:inset 0 0 0 1px rgba(124,199,190,.6)!important}.ace_editor .ace_text-layer .ace_redacted::after{position:absolute;top:50%;font:700 9.5px/1 var(--font-sans,Inter,sans-serif);color:var(--slot-num);text-align:center!important;left:50%!important;right:auto!important;transform:translate(-50%,-50%)!important;padding:1px 5px!important;border-radius:3px;background:var(--slot-bg);font-size:11px!important;line-height:1.2!important}.dark-mode .ace_editor .ace_marker-layer .ace_selection.ace_br15{box-shadow:inset 0 0 0 1px rgba(240,200,90,.7)!important}.ace_editor.ace-chrome .ace_marker-layer .ace_selection.ace_br15{box-shadow:inset 0 0 0 1px rgba(170,115,15,.75)!important;border-radius:3px!important}.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection.ace_br15{box-shadow:inset 0 0 0 1px rgba(240,200,90,.7)!important;border-radius:3px!important}@media (max-width:767px){.file-card.is-code.no-wrap{position:relative}.explorer-content .file-card-head .file-card-meta{display:none!important}}@media (max-width:767px){.file-card.is-code.no-wrap::before{position:absolute;right:12px;bottom:14px;z-index:25;padding:5px 10px;border-radius:999px;background:color-mix(in srgb,var(--color) 82%,transparent);color:var(--canvas-bg-color);font:600 12px/1 var(--font-sans);pointer-events:none;box-shadow:0 4px 14px rgba(0,0,0,.18)}}.explorer-content .file-card .reading-layout .file-content.markdown-body{padding-left:0!important;padding-right:0!important}.reading-layout .markdown-body h1{font-weight:600!important;border-bottom:0!important;margin-bottom:12px!important;letter-spacing:-.015em;font-size:34px!important}.reading-layout .markdown-body h2{font-size:24px!important;font-weight:600!important;letter-spacing:-.01em;border-bottom:0!important;margin-top:44px!important;padding-bottom:0!important;scroll-margin-top:72px}.reading-layout .markdown-body h3{font-size:18px!important;margin-top:28px!important;scroll-margin-top:72px}.reading-layout .markdown-body>p:first-of-type{font-size:inherit!important;color:inherit!important}@media (max-width:767px){.reading-layout .markdown-body h2{font-size:20px!important}}.markdown-body h2{margin-bottom:12px!important}.explorer-content .file-card-media .file-card-path+.file-card-meta{margin-left:8px}.file-card-media .tb-file{margin-left:0}.explorer-content notebook .nb-cell+.nb-cell{margin-top:16px}.explorer-content notebook .nb-markdown-cell>:first-child{margin-top:0}.explorer-content notebook .nb-markdown-cell>:last-child{margin-bottom:0}.explorer-content notebook .nb-code-cell+.nb-markdown-cell,.explorer-content notebook .nb-markdown-cell+.nb-markdown-cell{margin-top:28px}.explorer-content notebook.markdown-body h1{font-size:26px;border:0;padding:0;margin:0 0 8px}.explorer-content notebook.markdown-body h2{font-size:20px;border:0;padding:0;margin:0 0 6px}.explorer-content notebook .nb-input pre{margin:0;padding:10px 14px;font:13px/20px var(--font-mono);background:var(--main-bg-color)!important;border:1px solid var(--border-color);border-radius:var(--radius-control);overflow-x:auto;scrollbar-width:none}.explorer-content notebook .nb-input pre code{font:inherit;background:0 0;padding:0}.explorer-content notebook .nb-output table{display:table;width:auto;margin:0;border:1px solid var(--border-color)!important;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}.explorer-content notebook .nb-output td,.explorer-content notebook .nb-output th{border:0!important;border-bottom:1px solid var(--border-color)!important;padding:6px 12px!important}.explorer-content notebook .nb-output td{text-align:right}.explorer-content notebook .nb-output thead th{background:var(--main-bg-color);color:var(--ink-soft);font-weight:600;text-align:right}.explorer-content notebook .nb-output tbody th,.explorer-content notebook .nb-output thead th:first-child{text-align:left}.explorer-content notebook .nb-output img{display:block;max-width:min(100%,720px);height:auto;background:#fff;border-radius:4px;box-shadow:0 0 0 1px var(--border-color)}.explorer-content notebook .nb-html-output,.explorer-content notebook .nb-image-output{overflow-x:auto}.explorer-content .file-card-media .file-card-actions{margin-left:auto}@media (max-width:767px){.explorer-content .file-card.is-code .ace_gutter-cell{padding-left:8px!important;padding-right:10px!important;text-align:right}}.explorer-content notebook .nb-input pre::-webkit-scrollbar{display:none}.explorer-content notebook .nb-code-scroll.is-overflowing>pre{padding-bottom:14px}.explorer-content notebook .nb-code-scroll::after{content:"";position:absolute;top:1px;right:1px;bottom:1px;width:48px;pointer-events:none;opacity:0;transition:opacity .15s;border-radius:0 var(--radius-control) var(--radius-control) 0;background:linear-gradient(to right,transparent,var(--main-bg-color) 80%)}.explorer-content notebook .nb-code-scroll.is-overflowing:not(.is-at-end)::after{opacity:1}.file-card-media .media-stage.is-audio audio{width:min(100%,560px)}.dark-mode .file-card-media .media-stage .image-content{box-shadow:0 0 0 1px var(--border-color),0 2px 12px rgba(0,0,0,.4)}.file-card-media pdfviewer{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;padding:0}.file-card-media .pdf-viewer-page canvas{border-radius:2px;box-shadow:0 0 0 1px var(--border-color),0 2px 10px rgba(40,32,24,.08)}@media (max-width:767px){.file-card-media .file-card-head .mobile-sub>span+span::before{content:"·";margin:0 6px;color:var(--ink-muted)}}.markdown-body h3{margin-top:32px!important;margin-bottom:8px!important}.markdown-body h4{margin-top:24px!important;margin-bottom:6px!important;color:var(--ink-soft)!important}.markdown-body h1 mark.redact-chip i,.markdown-body h2 mark.redact-chip i,.markdown-body h3 mark.redact-chip i{font-size:.62em!important}.dark-mode .markdown-body pre code mark.redact-chip,.markdown-body pre code mark.redact-chip,pre code mark.redact-chip{display:inline-block!important;box-sizing:border-box!important;overflow:hidden!important;width:var(--slot-ch,6ch)!important;min-width:0!important;height:1.2em!important;margin:0!important;vertical-align:-.24em!important;font-size:inherit!important;line-height:1.2em!important;text-align:center!important;padding:0!important}.markdown-body pre code mark.redact-chip i,pre code mark.redact-chip i{line-height:inherit!important;vertical-align:top!important;display:inline-block;padding:0 5px;border-radius:3px;background:var(--slot-bg);font-size:11px!important;line-height:1.35}.file-card.is-code.no-wrap::before{content:none!important;display:none!important}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body{position:relative}}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::after{content:"";position:absolute;top:0;right:0;bottom:0;z-index:8;pointer-events:none;transition:opacity .15s;border-right:0!important;width:26px;background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(250,249,246,.92) 60%,#eae5dc 100%)!important;box-shadow:inset -1px 0 0 rgba(40,32,24,.2)!important}}@media (max-width:767px){.dark-mode .file-card.is-code.no-wrap .file-card-body::after{border-right-color:rgba(255,255,255,.1);background:linear-gradient(to right,rgba(20,19,17,0) 0,rgba(20,19,17,.9) 55%,#2a2622 100%)!important;box-shadow:inset -2px 0 0 rgba(255,255,255,.18)!important}}@media (max-width:767px){.file-card.is-code.no-wrap .file-card-body::before{content:"Scroll \2192";position:absolute;right:10px;bottom:14px;z-index:9;font:500 12px/1 var(--font-sans);color:var(--ink-soft);background:var(--paper-card);box-shadow:0 0 0 1px var(--border-color),0 2px 6px rgba(0,0,0,.06);border-radius:999px;padding:6px 10px;pointer-events:none;animation:scrollHintOut .4s ease 2.6s forwards;display:none!important}}@media (max-width:767px){.file-card.is-code .ace_scroller{left:30px!important}}.file-card:has(.md-find-bar) .readme-toc{top:120px!important}@media (min-width:1200px){.file-card:has(.md-find-bar) .readme-toc,.readme-toc{top:120px!important}}@media (max-width:767px){.file-card.at-right-edge .file-card-body::after{opacity:0!important}}.file-card:not(.is-code) .file-card-head{position:sticky}.dark-mode .readme-toc a.lvl-3:not(.is-active){color:#ada69b!important}.readme-toc a.lvl-3{opacity:.9;font-weight:400!important}.readme-toc a.is-active{box-shadow:inset 2px 0 0 var(--accent)!important}@media (min-width:1200px){.readme-toc{padding-top:0!important}}.readme-toc a.lvl-2+a.lvl-2,.readme-toc a.lvl-3+a.lvl-2{margin-top:4px}@media (max-width:1180px){.file-card-head .btn-symbols .btn-find-label{display:none}}@media (max-width:1180px){.file-card-head .btn-symbols{width:32px;padding:0!important}}@media (max-width:767px){.file-card-head .btn.btn-icon-only{color:var(--color)!important}}@media (max-width:767px){.file-card-head .file-card-meta .meta-extra{display:none!important}}@media (max-width:767px){.file-card-head .btn-find,.file-card-head .btn-goto,.file-card-head .btn-toggle,.file-card-head .symbols,.file-card-head .tb-file,.file-card-head .view-switch+.file-card-actions .tb-file{display:none!important}}.symbols{position:relative}@media (max-width:767px){.file-card-head>.view-switch{order:5!important;display:grid!important;grid-template-columns:1fr 1fr}}@media (max-width:767px){.file-card-head .file-card-meta{flex-basis:auto!important;flex:1 1 auto;margin:0!important}}@media (max-width:767px){.file-card-head .file-card-path{flex:1 1 auto!important;grid-template-rows:auto auto;flex-wrap:nowrap!important;gap:8px!important;grid-template-columns:auto minmax(0,1fr);column-gap:12px!important;row-gap:0!important}}@media (max-width:767px){.file-card-head .file-card-actions{order:1}}.file-card-path .breadcrumb-root a{color:var(--ink-soft)!important}.file-card-path .breadcrumb-root a:hover{color:var(--color)!important;text-decoration:underline}.breadcrumb-root{display:none!important}.breadcrumb-root+.breadcrumb-item::before{display:none!important}.file-card-head .card-files-btn .ui-icon{width:19px;height:19px}@media (max-width:767px){.file-card-actions>.tb-toc-m,.file-card-head .tb-toc-m{order:1!important}}@media (max-width:767px){.tb-toc-m:has(.tb-menu)::before{position:fixed;inset:0;z-index:40}}.tb-more:has(.tb-menu)::before,.tb-toc-m:has(.tb-menu)::before{pointer-events:none;background:rgba(26,24,21,.1)!important;content:none!important}.dark-mode .tb-more:has(.tb-menu)::before,.dark-mode .tb-toc-m:has(.tb-menu)::before{background:rgba(0,0,0,.3)!important}@media (max-width:767px){.file-card-actions>.tb-copy-m,.file-card-head .tb-copy-m{order:2!important}}@media (max-width:767px){.file-card-actions>.tb-more,.file-card-head .tb-more{order:3!important}}.file-card-actions>.tb-file:first-child{border-left:0;padding-left:0;margin-left:0}.tb-more{position:relative;display:none}@media (max-width:767px){.tb-more{display:inline-flex}}@media (max-width:767px){.tb-more:has(.tb-menu)::before{position:fixed;inset:0;z-index:40}}@media (max-width:767px){.tb-menu{z-index:41!important}}.tb-menu>button.tb-menu-toc.lvl-2{padding-left:40px!important}.tb-menu>button.tb-menu-toc.lvl-3{padding-left:56px!important}.tb-menu [role=menuitemcheckbox][aria-checked=true] .ui-icon{color:var(--accent)}.file-card-head .btn-find:focus:not(:focus-visible){background:0 0!important}body .btn:is(:disabled,.disabled,[aria-disabled=true]):not(.is-saving) .ui-icon{opacity:.8}.file-card-head .btn-find,.file-card-head .btn-goto,.file-card-head .btn-toggle{width:32px!important;height:32px!important}@media (max-width:767px){.file-card-head .file-card-path .paths{grid-column:2}}@media (max-width:767px){.file-card-head>button:first-child{margin-top:2px!important}}@media (min-width:768px){.file-card-head .btn-goto{order:1}}@media (min-width:768px){.file-card-head .btn-toggle{order:2}}@media (min-width:768px){.file-card-head .btn-find{order:3}}@media (min-width:768px){.file-card-head .tb-file{order:4}}@media (min-width:768px){.file-card-head .tb-copy-m,.file-card-head .tb-more-btn{order:5}}.tb-copy-m{display:none!important}@media (max-width:767px){.tb-copy-m{display:inline-flex!important;width:36px!important;height:34px!important}}@media (max-width:767px){.file-card-head .mobile-sub b::before{content:none!important;display:none!important}}@media (max-width:767px){.file-card-head .file-card-path>.copy-path-btn{grid-column:3;grid-row:1/3}}@media (min-width:768px){.file-card-head .tb-view>.btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}}@media (min-width:768px){.file-card-head .tb-file::before{display:none!important}}.tb-file{display:inline-flex!important;align-items:stretch;gap:0!important;margin-left:8px;padding-left:0!important;border:1px solid var(--border-color)!important;border-radius:var(--radius-control);overflow:hidden}@media (max-width:767px){.file-card-head .file-card-path>.mobile-sub>span+span::before{content:"·"!important;margin:0 6px!important;color:var(--ink-muted)}}@media (max-width:767px){.file-card-head .file-card-path>.mobile-sub>span:has(+b)::after{content:"·"!important;margin:0 6px!important;color:var(--ink-muted);opacity:1!important}}@media (max-width:767px){.file-card-head .file-card-path>.mobile-sub.ms>.ms-item::after{content:none!important;display:none}}@media (max-width:767px){.file-card-head .file-card-path>.mobile-sub.ms>.ms-item::before{content:none!important;display:none!important}}@media (max-width:767px){.file-card-head .file-card-path>.mobile-sub.ms>.ms-item+.ms-item::before{content:"·"!important;display:inline!important;margin:0 6px!important;color:var(--ink-muted);width:auto!important;height:auto!important;background:0 0!important;box-shadow:none!important}}@media (max-width:767px){.file-card-head .file-card-path>.mobile-sub.ms>.ms-item:first-child:not(.ms-redact){min-width:0;overflow:hidden;text-overflow:ellipsis;flex-shrink:0!important}}@media (max-width:767px){.mobile-sub b{height:18px;border-radius:999px;display:inline-flex!important;align-items:center;gap:6px!important;margin-left:0!important;font-size:12.5px!important}}@media (max-width:767px){.mobile-sub>b::before{display:none}}@media (max-width:767px){.mobile-sub b::before{content:""!important;display:inline-block!important;width:14px!important;height:8px!important;margin:0!important}}@media (max-width:767px){.mobile-sub span:has(+b)::after{opacity:.7;content:none!important}}@media (max-width:767px){.mobile-sub span:has(+b)::after,.mobile-sub>span+span::before{margin:0 6px!important}}@media (max-width:767px){.file-card-head .file-card-path>.breadcrumb>li:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media (max-width:767px){.file-card-path .paths .breadcrumb-item:last-child{font-size:15px;overflow:hidden;text-overflow:ellipsis}}@media (max-width:767px){.file-card-path{flex:1 1 auto;gap:10px}}@media (max-width:767px){.file-card-path .paths{flex:1 1 auto;min-width:0}}.card-files-btn{display:none!important}@media (max-width:991px){.card-files-btn{display:inline-flex!important}}.card-files-btn.is-needed{display:none!important}@media (max-width:991px){.leftCol-head{position:absolute;top:0;z-index:2;border:0!important;background:0 0!important}.leftCol-head .leftCol-eyebrow{display:none}}@media (max-width:991px){.leftCol-head .leftCol-close{width:40px;height:40px;border:0!important;background:0 0!important;border-radius:var(--radius-control);color:var(--ink-soft)}.leftCol-head .leftCol-close:hover{background:var(--hover-bg-color)!important;color:var(--color)}}.leftCol-backdrop{background:rgba(20,18,16,.45)!important}.symbols-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:30;width:300px;max-height:420px;overflow:auto;padding:6px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);box-shadow:0 12px 32px rgba(26,24,21,.16)}.symbols-head{padding:6px 8px 8px;font-size:12px;font-weight:600;color:var(--ink-muted)}.symbols-item{display:flex;align-items:center;gap:10px;width:100%;height:32px;padding:0 8px;border:0;border-radius:var(--radius-control);background:0 0;font:inherit;font-size:13px;color:var(--color);text-align:left;cursor:pointer}.symbols-item:focus-visible,.symbols-item:hover{background:var(--hover-bg-color);outline:0}.symbols-kind{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;font:600 11px/1 var(--font-mono);flex-shrink:0}.symbols-kind.is-function{background:color-mix(in srgb,#6b45b8 14%,transparent);color:#6b45b8}.symbols-kind.is-class{background:color-mix(in srgb,#b4362a 14%,transparent);color:#b4362a}.dark-mode .symbols-kind.is-function{color:#c9a8f5}.dark-mode .symbols-kind.is-class{color:#f2897d}.symbols-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);font-size:12.5px}.symbols-line{font-size:12px;color:var(--ink-muted);font-variant-numeric:tabular-nums}.ace_search{border:0!important;border-radius:0!important}.ace_search_field{border-color:var(--border-color)!important}.ace_search .ace_button{width:28px!important;border:1px solid var(--border-color)!important;font-weight:600!important}.dark-mode .ace_editor.ace-nord-dark,.dark-mode .explorer-content,.dark-mode .explorer-content .ace_editor.ace-nord-dark .ace_gutter,.dark-mode .explorer-main{background:var(--canvas-bg-color)!important}.dark-mode .ace_search,.dark-mode .explorer-content .file-card-head{background:color-mix(in srgb,var(--canvas-bg-color) 92%,transparent)!important}.dark-mode .symbols-menu{background:#22201c}.card-files-label{display:none!important}.ace_search_counter{margin-left:2px!important}.tb-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:40;width:220px;padding:6px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:var(--radius-surface);max-height:calc(100dvh - 120px);overflow-y:auto;overscroll-behavior:contain}.tb-menu>a,.tb-menu>button{display:flex;align-items:center;gap:10px;width:100%;height:40px;padding:0 10px;border:0;border-radius:var(--radius-control);background:0 0;font:inherit;font-size:14px;color:var(--color)!important;text-align:left;text-decoration:none!important}.tb-menu>a:hover,.tb-menu>button:hover{background:var(--hover-bg-color)}.tb-menu .ui-icon{width:16px;height:16px;color:var(--ink-soft)}.tb-menu-check{margin-left:auto;color:var(--accent);font-weight:600}.tb-menu-sep{height:1px;margin:6px 4px;background:var(--border-soft)}.fm-form{padding:22px 26px;display:grid;gap:8px}.fm-label{font-size:12px;font-weight:600;margin-top:6px}.fm-input{height:36px;display:flex;align-items:center;padding:0 12px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--input-bg);font-size:13.5px}.fm-input-sm{width:150px}.fm-chips{display:flex;flex-wrap:wrap;gap:6px}.fm-chips span{padding:4px 10px;border-radius:999px;font-size:12.5px;text-decoration:none!important}.fm-chips .fm-chip-add{background:0 0;border:1px dashed var(--border-color);color:var(--ink-muted);text-decoration:none}.fm-row{display:grid;grid-template-columns:1fr auto;gap:16px}.fm-toggles{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}.fm-toggles span{padding:5px 10px;border:1px solid var(--border-color);border-radius:var(--radius-control);font-size:12.5px;align-items:center;gap:6px}.fm-toggles .is-on{border-color:color-mix(in srgb,var(--accent) 45%,transparent);background:var(--accent-soft);color:var(--accent)}.fm-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--border-soft)}.fm-share{font-family:var(--font-mono);font-size:12px;color:var(--ink-soft)}.fm-btn{padding:9px 14px;border-radius:var(--radius-button);background:var(--accent);color:#fff;font-size:13px;font-weight:600;white-space:nowrap}.dark-mode .fm-btn{background:#1f6a64}.fm-viewer{display:grid;grid-template-columns:150px 1fr;height:100%}.fm-tree{padding:14px 8px;background:var(--paper-bg-alt);border-right:1px solid var(--border-soft);font-size:12.5px}.fm-tree div{padding:5px 10px;border-radius:var(--radius-control);color:var(--ink-soft)}.fm-tree .is-folder::before{content:"▸ ";color:var(--ink-faint)}.fm-tree .is-active{background:rgba(128,128,128,.14);color:var(--color);font-weight:500;box-shadow:inset 3px 0 0 var(--accent)}.fm-code{min-width:0}.fm-code-bar{display:flex;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--border-soft);font-size:12.5px;color:var(--ink-muted)}.fm-code-bar b{color:var(--color);font-weight:600}.fm-code pre{margin:0;padding:12px 16px;font-family:var(--font-mono);font-size:12.5px;line-height:1.75;color:var(--color);background:0 0;white-space:pre}.fm-code .ln{display:inline-block;width:22px;margin-right:14px;text-align:right;color:var(--ink-faint)}.fm-code .k{color:#b02f22}.fm-code .f{color:#5b3dc2}.fm-code .s{color:#11704f}.fm-code .c{color:var(--ink-muted);font-style:italic}.dark-mode .fm-code .k{color:#f2897d}.dark-mode .fm-code .f{color:#c9a8f5}.dark-mode .fm-code .s{color:#9dd3a8}.fm-code .redact{padding:0 4px;border-radius:3px;background:var(--accent-soft);color:var(--accent);font-style:normal}.fm-dash{padding:12px 18px;font-size:13px}.fm-dash-head,.fm-dash-row{display:grid;grid-template-columns:1.7fr .9fr .5fr .9fr;gap:12px;align-items:center}.fm-dash-head{padding:8px 0;border-bottom:1px solid var(--border-color);font-size:12px;font-weight:600;color:var(--ink-muted)}.fm-dash-row{padding:12px 0;border-bottom:1px solid var(--border-soft)}.fm-dash-row b{display:block;font-weight:600}.fm-dash-row i{display:block;font-style:normal;font-size:12px;color:var(--ink-muted);font-family:var(--font-mono)}.fm-dash-row.is-muted{color:var(--ink-muted)}.fm-dash .st{display:inline-flex;align-items:center;gap:6px}.fm-dash .st::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.fm-dash .st.is-ready{color:var(--status-ready)}.fm-dash .st.is-progress{color:var(--status-progress)}.fm-dash .st.is-expired{color:var(--ink-muted)}@media (max-width:767px){.fm-viewer{grid-template-columns:1fr}.fm-tree{display:none}.fm-dash-head span:nth-child(4),.fm-dash-row span:nth-child(4){display:none}.fm-dash-head,.fm-dash-row{grid-template-columns:1.6fr 1fr .5fr}.fm-row{grid-template-columns:1fr}}@media (min-width:768px){.explorer-content .file-card-head{padding-left:20px}}.ace_search_field:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}.file-card-head .card-files-btn,.file-card-head .card-files-btn.is-needed{width:34px!important;height:34px!important;padding:0!important;border:0!important;background:0 0!important;color:var(--ink-soft)!important}.file-card-head .card-files-btn:hover{background:var(--hover-bg-color)!important;color:var(--color)!important}.ace_search{flex-direction:row}.ace_search .ace_button,.ace_searchbtn{color:var(--ink-soft)!important}@media (max-width:767px){.file-card-head>.view-switch{flex:1 1 100%;margin-left:0!important}.file-card-head>.view-switch .btn{height:36px!important;min-height:36px!important;justify-content:center;font-size:14px}}.leftCol-search{display:flex;align-items:center;gap:6px}.leftCol-search .tree-search-box{flex:1 1 auto;min-width:0}.search-zip{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex-shrink:0;border:1px solid var(--border-color);border-radius:8px;background:var(--canvas-bg-color);color:var(--ink-soft)!important}.search-zip:hover{background:var(--hover-bg-color);color:var(--color)!important;border-color:var(--ink-faint)}.dark-mode .search-zip{background:0 0}.tb-seg-btn{display:inline-flex;align-items:center;justify-content:center;height:30px;padding:0 12px;border:0;background:var(--paper-card);font:inherit;font-size:13px;font-weight:500;color:var(--color)!important;text-decoration:none!important;cursor:pointer}.tb-seg-btn+.tb-seg-btn{border-left:1px solid var(--border-color)}.tb-seg-btn:hover{background:var(--hover-bg-color)}.tb-seg-icon{width:34px;padding:0;color:var(--ink-soft)!important}.tb-seg-icon:hover{color:var(--color)!important}.dark-mode .tb-seg-btn{background:0 0}@media (max-width:767px){.file-card-head .card-files-btn,.file-card-head .tb-copy-m,.file-card-head .tb-more-btn{height:36px!important;border-radius:var(--radius-control)!important}}.ace_search{min-height:40px}.ace_search_field{height:28px!important}.ace_search_options{margin-left:4px!important}.ace_search_options .ace_button{margin:0!important}.ace_search_options .ace_button+.ace_button{margin-left:-1px!important}.ace_searchbtn_close{background-color:transparent!important}.ace_searchbtn_close:hover{opacity:1}.explorer-page>.leftCol{grid-row:2;grid-column:1;width:auto!important;flex:none!important;height:auto!important;min-height:0;border-top:0}.explorer-page.files-hidden{grid-template-columns:minmax(0,1fr)}.vb-logo em{font-style:italic}.vb-support:hover{box-shadow:inset 0 0 0 1px color-mix(in srgb,#e5484d 40%,var(--border-color))!important}.dark-mode .vb-support{background:0 0!important;color:var(--color)!important}@media (max-width:991px){.explorer-page>.leftCol{grid-row:auto}}@media (max-width:575px){.vb-support span{display:none}}@media (max-width:991px){.explorer-page>.leftCol .leftCol-head{position:static!important;display:flex!important;align-items:center;justify-content:space-between;min-height:52px;padding:6px 8px 6px 16px!important;border-bottom:1px solid var(--border-soft)!important;background:0 0!important}.explorer-page>.leftCol .leftCol-head .leftCol-eyebrow{display:inline!important;font:600 15px/1 var(--font-sans);letter-spacing:0;text-transform:none;color:var(--color)}}.ace_search{gap:6px!important}.dark-mode .ace_search{background:#1e1b18!important}.ace_search .ace_searchbtn{width:28px!important;border-radius:var(--radius-control)!important;border:1px solid var(--border-color)!important;background:var(--paper-card)!important}.ace_searchbtn_close{border:1px solid transparent!important;background-position:center!important}.ace_search .ace_button{background:var(--paper-card)!important}.ace_search .ace_button.checked{position:relative}@media (max-width:767px){.vb-icon[href="/faq"]{display:none!important}}.ace_searchbtn_close{background-size:10px 10px!important}.readme-toc a:hover{color:var(--color)!important;border-left-color:var(--ink-muted);box-shadow:inset 1px 0 0 var(--ink-muted)}.ace_search{justify-content:flex-start}.ace_searchbtn_close::before{content:"\00d7";font:400 20px/1 var(--font-sans);color:var(--ink-soft);font-size:18px!important;font-weight:300!important}.ace_searchbtn_close{margin-left:4px!important}.readme-toc .toc-rail{border-left:1px solid var(--border-color)}.readme-toc a,.readme-toc a.is-active{border-left:0!important;margin-left:-1px!important;padding:5px 0 5px 13px!important;line-height:1.4}@media (max-width:767px){header.viewer-bar .vb-icon,header.viewer-bar .vb-support{box-shadow:none!important;background:0 0!important}}.ace_search_form .ace_searchbtn.prev{border-radius:var(--radius-control) 0 0 var(--radius-control)!important;margin-left:8px!important}.ace_search_form .ace_searchbtn.next{border-radius:0 var(--radius-control) var(--radius-control) 0!important;margin-left:-1px!important}.fm-toggles span::before{content:"";width:12px;height:12px;flex:none}.fm-toggles .is-on::before{background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-7'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-7'/%3E%3C/svg%3E") center/contain no-repeat}.fm-toggles span:not(.is-on)::before{display:none!important}.readme-toc a{padding-left:13px!important}.file-card-head .btn.btn-toggle.is-on:hover{background:var(--hover-bg-color)!important}.readme-toc a.lvl-2{color:var(--ink-soft)!important;font-weight:500!important}.readme-toc a.is-active{color:var(--accent)!important}.readme-toc a.is-active{font-weight:600!important}.ace_search .ace_button.checked{opacity:1}.dark-mode .file-card-head .btn.btn-toggle.is-on,.dark-mode .file-card:has(.ace_search:not([style*=none])) .btn-find{background:0 0!important;color:#a8ddd6!important;box-shadow:inset 0 0 0 1px rgba(124,199,190,.5)!important}.md-find-nav button:first-child{border-radius:var(--radius-control) 0 0 var(--radius-control)}.md-find-nav button:last-child{border-radius:0 var(--radius-control) var(--radius-control) 0;margin-left:-1px}.md-find-nav button:disabled{opacity:.45}mark.md-find{color:inherit;border-radius:2px;padding:0;box-shadow:none!important;background:rgba(246,224,138,.7)!important}.md-find-input::-webkit-search-cancel-button{-webkit-appearance:none;display:none}.md-find-opt.is-on{color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.md-find-nav button{color:var(--ink-soft)!important}.ace_search .ace_search_field:focus,.md-find-input:focus{outline:0!important}@media (min-width:768px){.file-card .ace_search .ace_search_form{margin-left:0!important}}.ace_editor .ace_text-layer .ace_redacted,.dark-mode .ace_editor .ace_text-layer .ace_redacted{position:relative}.markdown-body mark.redact-chip i,.redact-slot i,span.redact i{font:700 .66em/1 var(--font-sans,Inter,sans-serif)!important;font-style:normal!important;color:var(--slot-num)!important}.vb-help-menu small{display:block;font-size:12px;color:var(--ink-soft);font-weight:400;margin-top:1px}.file-card-head .tb-file::before{content:"";position:absolute;left:-9px;top:6px;bottom:6px;width:1px;background:var(--border-color)}@media (min-width:1100px){.fm-row{gap:12px!important}.fm-toggles{flex-wrap:nowrap!important}}.files .file.active>a .tree-name{font-weight:500;color:var(--color)}.dark-mode .tb-menu-label{color:#ada69b}.tb-menu .tb-menu-toc.lvl-3{color:#57524a}.dark-mode .tb-menu .tb-menu-toc.lvl-3{color:#ada69b}.tb-toc-menu>button.tb-menu-toc.lvl-2{padding-left:16px!important}.tb-toc-menu>button.tb-menu-toc.lvl-3{padding-left:32px!important}.dark-mode .goto-pop{box-shadow:0 12px 32px rgba(0,0,0,.5)}@media (max-width:639px){.fm-row{grid-template-columns:minmax(0,1fr)!important;gap:4px!important}.fm-toggles{flex-wrap:wrap}.fm-share{overflow-wrap:anywhere}}.vb-artifact,.vb-artifact:hover{text-decoration:none}.files .tree-name-split .tree-name-head.is-cut::after{content:"\2026";color:var(--ink-muted)}.fm-row>div>.fm-label{margin-top:6px!important;margin-bottom:0!important}.fm-row>div>.fm-input,.fm-row>div>.fm-toggles{margin-top:6px!important}.csv-table td,.csv-table th{padding:7px 14px;border-bottom:1px solid var(--border-color);white-space:nowrap;text-align:left}.csv-table thead th{position:sticky;z-index:1;background:var(--paper-bg-alt,#f3f1ec);font-weight:600;font-size:12.5px;color:var(--ink-soft,var(--color));border-bottom:1px solid var(--border-color);top:0}.csv-table td.is-num{text-align:right}.csv-table tbody tr:nth-child(even) td{background:0 0!important}.csv-table tbody tr:hover td{background:var(--hover-bg-color)!important}.csv-table thead .csv-rownum{border-right:1px solid var(--border-color)}@media (max-width:767px){.csv-table td,.csv-table th{padding:6px 10px}}.csv-table th.is-num{text-align:right}@media (min-width:768px){.csv-table td,.csv-table th{padding:8px 22px}}.nb-output mark.redact-chip i,.output_text mark.redact-chip i{font-size:11px!important}.csv-table thead th:first-child{border-top-left-radius:7px}.csv-table thead th:last-child{border-top-right-radius:7px}.csv-table tbody tr:last-child td{border-bottom:0!important}.csv-table tbody tr:last-child td:first-child{border-bottom-left-radius:7px}.csv-table tbody tr:last-child td:last-child{border-bottom-right-radius:7px}.paper-stats-grid .paper-stat-card{padding-left:24px!important;padding-right:24px!important;margin-right:0!important;padding-top:22px!important;padding-bottom:22px!important}.paper-stats-grid .paper-stat-card:last-child{border-right:0;padding-right:0!important}.feat-mock{overflow:hidden;background:var(--paper-card);font-family:var(--font-sans);color:var(--color);height:auto!important;min-height:300px}.hero-mock-doc-bar span,.hero-mock-tree-title{color:var(--ink-soft)!important}.paper-frame-bar{color:var(--ink-soft)!important}.dark-mode .paper-stats,.dark-mode .paper-stats-grid{border-color:#3a3631!important}.hero-mock-row.is-active{background:rgba(128,128,128,.12)!important}.demo-terms label{font-size:13px;font-weight:600;color:var(--color);margin:0}.demo-terms label span{font-weight:400;margin-left:6px}@media (min-width:992px){.demo-panes{grid-template-columns:1fr 1fr!important;gap:20px!important}}.demo-input-wrap{position:relative}.demo-input-wrap .demo-input::selection{color:var(--color);background:color-mix(in srgb,var(--accent) 25%,transparent)}.faq-section .panel-default .panel-title a{display:block}.faq-section .faq-cat,.faq-section .panel-group{max-width:720px}.hero-mock-count::before,.meta-redact::before,.mobile-sub b::before{border-radius:2px!important;box-shadow:inset 0 0 0 1px rgba(40,32,24,.12)!important;background:#d9d1c3!important}.paper-faq-help-card p{color:var(--ink-soft);margin:0 0 12px;font-size:14px!important;line-height:1.55!important}.dark-mode .hero-mock-count::before,.dark-mode .meta-redact::before,.dark-mode .mobile-sub b::before{background:#4a443d!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)!important}.dark-mode .demo-panes>:last-child .pane-header{background:#1f1c19!important}.dark-mode .pane-edit-hint{color:#9c958a}.paper-cta h2{font-family:var(--font-serif);font-size:40px;line-height:1.05;letter-spacing:-.01em;margin:0 0 10px;color:var(--color);font-weight:400}.paper-cta p{margin:0;color:var(--ink-soft);font-size:16px;max-width:440px}@media (max-width:991px){.paper-cta h2{font-size:32px}}@media (min-width:1100px){.paper-landing{overflow-x:clip}}@media (max-width:639px){.demo-terms label span{display:block;margin:2px 0 0!important;font-size:12.5px}}@media (max-width:767px){.demo-terms label>span{display:inline!important;margin-left:6px!important}}.faq-section .faq-search{margin:0 0 28px}.demo-terms label>span{margin-left:6px}.dark-mode .btn.btn-ghost.is-on{box-shadow:none!important;color:#a8ddd6!important;background:rgba(124,199,190,.16)!important}.btn.btn-ghost.is-on{background:var(--hover-bg-color)!important;color:var(--accent)!important}.admin-page .btn-primary{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}.repo-access-note>span:has(.ui-icon){display:flex;gap:8px;align-items:flex-start;margin-top:10px;padding:9px 12px;border-radius:var(--radius-control);font-size:13.5px;background:color-mix(in srgb,#b7791f 8%,transparent)!important;box-shadow:inset 3px 0 0 #b7791f!important}.dark-mode .btn-toggle.is-on{background:rgba(124,199,190,.14)!important}.paper-faq-toc-head,.paper-footer-head{font-family:var(--font-sans)!important;font-size:12px!important;font-weight:600!important;letter-spacing:.06em!important;text-transform:uppercase;color:var(--ink-soft)!important}.acct{position:relative;min-width:0}.acct-chip{display:inline-flex;align-items:center;gap:8px;max-width:150px;border:0;font:inherit;font-size:13px;font-weight:500;color:var(--color);cursor:pointer;padding:0!important;justify-content:center;border-radius:50%!important;background:0 0!important;width:32px!important;height:32px!important}.acct-chip:hover,.acct-chip[aria-expanded=true]{background:var(--hover-bg-color)!important}.acct-chip img,.acct-initial{border-radius:50%;flex-shrink:0;width:30px!important;height:30px!important;font-size:13px!important}.acct-initial{display:inline-flex;align-items:center;justify-content:center;font-weight:700;background:var(--hover-bg-color)!important;color:var(--color)!important}.acct-menu{position:absolute;bottom:calc(100% + 6px);left:0;z-index:40;padding:6px;background:var(--paper-card);border-radius:var(--radius-surface);width:240px;box-shadow:0 16px 40px rgba(26,24,21,.22),0 0 0 1px var(--border-color)!important;border:0!important}.acct-menu a{display:flex;align-items:center;gap:10px;height:36px;padding:0 10px;border-radius:var(--radius-control);font-size:13.5px;color:var(--color)!important;text-decoration:none!important}.acct-menu a:hover{background:var(--hover-bg-color)}.acct-menu .ui-icon{width:16px;height:16px;color:var(--ink-soft)}.acct-menu-head{padding:6px 10px 8px;margin-bottom:4px;border-bottom:1px solid var(--border-soft);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:normal;overflow-wrap:anywhere}.acct-menu-head b{color:var(--color);font-weight:600}.dark-mode .acct-menu{background:#26231f;box-shadow:0 16px 40px rgba(0,0,0,.55),0 0 0 1px #3a3631!important}.acct-chip[aria-expanded=true] .acct-initial{background:var(--accent-soft)!important;color:var(--accent)!important}.admin-page .paper-page-title{min-height:44px;display:flex;align-items:center;margin-bottom:8px!important}.page-head-row>a.btn{margin-top:6px}.admin-page h1.paper-page-title{margin:0!important;line-height:44px!important;min-height:44px}.admin-page>h1.paper-page-title{margin-bottom:12px!important}@media (min-width:1100px){.paper-footer-brand{max-width:420px}}@media (max-width:991px){.nav-heart-m+.nav-theme-m{margin-left:2px}}.paper-page-title em{font-style:normal;color:inherit}.page-head>.flow-trail li{display:inline-flex;align-items:center;gap:6px}.page-head>.flow-trail li[aria-current]{color:var(--color);font-weight:600}.search-zip .ui-icon{width:17px;height:17px}.markdown-body mark.redact-chip,.redact-chip{display:inline-block;padding:0 6px;margin:0 1px;border-radius:4px;background:var(--accent-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 25%,transparent);color:var(--accent);font-family:var(--font-mono);font-size:.82em;font-weight:500;line-height:1.5;vertical-align:.06em;cursor:help;transition:background .1s}.redact-chip:hover{background:color-mix(in srgb,var(--accent) 22%,transparent)}.meta-redact{height:20px;border-radius:999px;font-size:12px;cursor:default;box-shadow:none!important;padding:0!important;display:inline-flex!important;font-weight:500!important}.dark-mode .meta-redact{background:rgba(124,199,190,.14)}.mobile-sub{display:none}@media (max-width:767px){.mobile-sub{grid-column:2;overflow:hidden;text-overflow:ellipsis;display:flex!important;line-height:1.4;gap:0!important;column-gap:0!important;flex:0 0 auto}}input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px}.admin-page>header{min-height:92px}@media (max-width:767px){.admin-page form[class*=filter] input,.admin-page form[class*=filter] select{width:100%!important}.admin-page form[class*=filter]>*{width:100%}.admin-page form[class*=filter] label{font-size:12px!important}}.paper-page textarea{resize:vertical}.paper-page input[type=date]{height:38px;padding:0 10px;color:var(--input-color);font-family:var(--font-sans)}.paper-page>.row>[class*=col],.paper-page>.row>[class*=w-100]{padding-left:0!important;padding-right:0!important}@media (max-width:767px){.mobile-sub>*+::before{content:"·";margin-right:6px;color:var(--ink-muted);font-weight:400}}.admin-page input[type=checkbox]{accent-color:var(--accent);width:14px!important;height:14px!important}.dark-mode .repo-access-note>span:last-child{background:rgba(224,176,112,.1);box-shadow:inset 3px 0 0 #e0b070}.paper-page input[type=checkbox]::before{content:"";width:9px;height:9px;transform:scale(0);background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat}.paper-page input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}.paper-page input[type=checkbox]:checked::before{transform:scale(1)}.paper-page input[type=checkbox]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dark-mode .paper-page input[type=checkbox]{border-color:#6e6860;background:0 0}.paper-page input::placeholder,.paper-page textarea::placeholder{color:#a39b8e!important}#sourceUrl,#sourceUrl-landing{border-color:#cfc7b9!important}:root{--redact-deboss:inset 0 1px 2px rgba(60,48,32,.18),inset 0 0 0 1px rgba(60,48,32,.06);--slot-bg:#E3DCD0;--slot-bg-sel:#D3CBBD;--control-border:#CFC7B9;--redact-bar:#EEEAE2;--redact-ink:#8C8478;--redact-reveal:#2B2824;--slot-num:#0F4F4A}.meta-redact::before{content:"";width:14px;height:8px}.dark-mode{--redact-bar:#0E0D0B;--redact-ink:#7A746A;--redact-reveal:#F1ECE3;--redact-deboss:inset 0 1px 2px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.05)}.dark-mode{--slot-bg-sel:#4A443C}.dark-mode{--control-border:#48433C}.dark-mode{--slot-bg:#3D3833;--slot-num:#8FDACD}.meta-redact::before,.mobile-sub b::before{box-shadow:inset 0 0 0 1px rgba(40,32,24,.22)!important}@media (max-width:767px){body{--page-gutter:20px;--page-top:24px}}.paper-qa-r3>.qa-head h2{margin-bottom:0!important}.flow-trail li[aria-current]{color:var(--color);font-weight:600}.flow-trail li[aria-current]::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}:root,body{--btn-disabled-bg:#F3F1EC;--btn-disabled-border:#E6E1D8;--btn-disabled-ink:#6F6A61;--st-ok:var(--status-ready);--st-progress:var(--status-progress);--st-bad:var(--status-error);--st-off:var(--status-inactive);--syn-kw:#8E2F6A;--syn-str:#17694C;--syn-fn:#4A3FB0;--syn-num:#8A4B0F;--syn-cmt:#6F6A61;--syn-punct:#5C574F;--syn-var:#2B2824;--syn-type:#8E2F6A;--syn-attr:#8A4B0F;--q-time-series:#946512}body.dark-mode{--syn-kw:#D7A6CB;--syn-str:#9DCBA8;--syn-fn:#BDB4F2;--syn-num:#E0B07A;--syn-cmt:#8F897F;--syn-punct:#A39D92;--syn-var:#E6E1D8;--syn-type:#D7A6CB;--syn-attr:#E0B07A;--q-time-series:#E0A94A;--btn-disabled-bg:#312D29;--btn-disabled-border:#312D29;--btn-disabled-ink:#A39D92}@media (min-width:768px){#conf-basics #conferenceID{max-width:240px}}.admin-page .anon-sub.meta-dots>*+::before{margin:0 6px;color:var(--ink-faint);content:none!important}input[type=radio]::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent);transform:scale(0);transition:transform .12s}input[type=radio]:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:2px}body.dark-mode code[class*=language-],body.dark-mode pre[class*=language-]{text-shadow:none!important;color:var(--syn-var)}pre{--diff-pad:15px}.viewer-bar{grid-column:1/-1;grid-row:1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 12px 0 14px;border-bottom:1px solid var(--border-color);background:var(--paper-bg-alt);z-index:20}.vb-left,.vb-right{display:flex;align-items:center;gap:4px;min-width:0}.vb-logo{font-family:var(--font-serif);letter-spacing:-.01em;color:var(--color)!important;text-decoration:none!important;white-space:nowrap;margin-right:10px}.vb-icon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:0;border-radius:var(--radius-control);background:0 0;color:var(--ink-soft)!important;cursor:pointer;text-decoration:none!important}.vb-icon:hover{background:var(--hover-bg-color);color:var(--color)!important}.vb-icon .ui-icon{width:17px;height:17px}.vb-snapshot{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:999px;white-space:nowrap;cursor:help;font-family:var(--font-sans)!important;font-variant-numeric:tabular-nums;box-shadow:none!important;padding-left:4px!important;padding-right:4px!important;margin-right:8px!important;opacity:1!important}.vb-snapshot .ui-icon{width:13px;height:13px;color:var(--ink-muted)}.vb-support{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;margin-right:4px;border-radius:999px;font-size:13px;text-decoration:none!important;font-weight:400!important;box-shadow:none!important}.vb-support .ui-icon{width:15px;height:15px}.vb-signin{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 12px;margin-left:6px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-card);font-size:13px;font-weight:500;color:var(--color)!important;text-decoration:none!important}.vb-signin:hover{background:var(--hover-bg-color)}.dark-mode .vb-signin{background:0 0}@media (max-width:991px){.vb-sidebar{display:none}}@media (max-width:575px){.vb-snapshot{display:none}.vb-support{width:32px;padding:0;justify-content:center;border-radius:var(--radius-control)!important}}@media (max-width:991px){.files a{min-height:38px!important;font-size:15px}}@media (max-width:767px){.viewer-bar{padding:0 6px 0 12px;padding-left:12px!important;padding-right:12px!important}}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{vertical-align:baseline!important;text-underline-offset:6px;text-decoration:none!important;vertical-align:.1em;font-family:inherit!important}.ace_search_counter{line-height:28px}.acct-initial{box-shadow:inset 0 0 0 1px var(--border-color)}.landing-url-row{display:flex;gap:8px;align-items:stretch}.landing-url-row .form-control{flex:1 1 auto;min-width:0}.landing-continue{flex-shrink:0;height:auto;min-height:46px;padding:0 20px;font-weight:600}@media (max-width:575px){.landing-continue{min-height:44px}}.anonymize-page .repo-access-switch::before{content:"Access:";margin-right:6px;color:var(--ink-soft)}.anonymize-page input[type=checkbox]::before{content:"";width:9px;height:9px;transform:scale(0);background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat}.anonymize-page input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}.anonymize-page input[type=checkbox]:checked::before{transform:scale(1)}.anonymize-page input[type=checkbox]:indeterminate{background:var(--accent);border-color:var(--accent)}.anonymize-page input[type=checkbox]:indeterminate::before{width:8px;height:2px;border-radius:1px;-webkit-mask:none;mask:none;transform:scale(1)}.dark-mode .anonymize-page input[type=checkbox]{border-color:#6e6860;background:0 0}.anonymize-form-col .anonymize-submit-bar::before{content:"";position:absolute;left:0;right:0;top:-25px;height:24px;background:linear-gradient(to bottom,transparent,var(--paper-bg-alt));pointer-events:none;display:none!important}@media (min-width:1200px){.dark-mode .anonymize-workspace .anonymize-form-col .anonymize-submit-bar{background:#161412!important}}.repository-task .task-preparation>h2{font:600 20px/1.3 var(--font-sans);letter-spacing:-.01em;overflow-wrap:anywhere;margin:0 0 10px}.repo-picker-head h2{margin:0;font:600 14px/1.3 var(--font-sans);letter-spacing:0;color:var(--color)}@media (max-width:767px){.anonymize-landing .landing-help{margin-top:8px}}@media (min-width:1100px){.landing-next h2{margin:0 0 4px;font:600 15px/1.4 var(--font-sans);letter-spacing:0;color:var(--color)}.landing-next ol{list-style:none;counter-reset:next;margin:0;padding:0}.landing-next li{counter-increment:next;position:relative;padding:12px 0 0 32px;font-size:13px;line-height:1.5;color:var(--ink-muted)}.landing-next li+li{border-top:0}.landing-next li::before{content:counter(next);position:absolute;left:0;top:12px;width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font:600 12px/1 var(--font-sans);color:var(--accent);background:var(--accent-soft);font-variant-numeric:tabular-nums}.landing-next li b{display:block;font-weight:600;font-size:14px;color:var(--color)}}.repo-picker-list::-webkit-scrollbar-track{background:0 0}.repo-picker-list::-webkit-scrollbar-thumb{background:var(--scroll-thumb,#cfc7b9);border-radius:3px}@media (min-width:768px){.reviewer-preview .rp-body.has-tree .rp-file-head{margin-left:0;position:relative;padding-left:32px!important;padding-right:32px!important;border-top:1px solid var(--rp-line);border-bottom:1px solid var(--rp-line)}}.anonymize-page .source-url-label-row .repo-access-switch::before{content:none!important;display:none!important}.dark-mode .anonymize-page .source-url-label-row .repo-access-switch{background:var(--canvas-bg-color)!important}.q-card-count,.q-stat-value{font-family:var(--font-sans)!important;font-variant-numeric:tabular-nums;font-weight:600}.paper-table .paper-table-head [role=columnheader],.paper-table-head>div,.q-stat-label{font-family:var(--font-sans)!important;font-size:12px!important;letter-spacing:.02em!important;color:var(--ink-soft)!important}.errors-page .col-msg,.errors-page .col-msg *{font-weight:400!important}.errors-page .col-msg .msg-code,.errors-page .msg-code{font-size:13px!important}.user-detail-grid .detail-value.is-empty{color:var(--ink-muted);font-style:normal;font-family:var(--font-sans)!important}.admin-page .errors-header,.admin-page .ov-header,.admin-page .q-header{gap:12px;min-height:44px}.user-detail-grid .detail-value:first-of-type{font-family:var(--font-mono);font-size:13px}.errors-list-head,.errors-list-head>span,.q-section-label{font-family:var(--font-sans)!important;text-transform:none!important;letter-spacing:0!important;font-size:12.5px!important;font-weight:600!important;color:var(--ink-soft)!important}.errors-list-head>span{background:0 0!important;font-weight:600!important}@media (max-width:767px){.admin-filter-toolbar>:first-child{grid-column:1/-1}.admin-filter-toolbar .admin-filter-inline{display:grid!important;gap:4px}.admin-filter-toolbar>:last-child{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center}.admin-filter-row>:first-child{grid-column:1/-1}.admin-filter-row .admin-filter-inline{display:grid!important;gap:4px}.admin-filter-row>:last-child{grid-column:1/-1;display:flex!important;justify-content:space-between;align-items:center;flex-direction:row!important}.admin-filter-row>:last-child .btn{width:auto!important}}.admin-filter-row input[placeholder^=Search],.admin-filter-row input[type=search],.admin-filter-row>:first-child{flex:1 1 320px!important;min-width:280px}@media (max-width:767px){.overview-page .ov-daily-row,.overview-page .ov-kpi-row,.overview-page [class*=ov-][class*="-row"]{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}}.user-detail-grid .detail-value:nth-of-type(1){font-family:var(--font-mono)!important}.ov-meter{height:4px;margin:6px 0 2px;border-radius:4px;background:var(--hover-bg-color);overflow:hidden}.ov-meter>span{display:block;height:100%;border-radius:4px;background:var(--ink-faint)}.ov-meter.warn>span{background:var(--status-progress)}.ov-meter.crit>span{background:var(--status-error)}@media (max-width:767px){.admin-filter-toolbar .admin-filter-row:not(.is-open)>:not(:first-child){display:none!important}.admin-filter-toolbar .admin-filter-row:not(.is-open){grid-template-columns:1fr!important}}.dark-mode .ov-health .ui-icon{color:#f08a82}@media (max-width:767px){.overview-page .ov-kpi-row{grid-template-columns:1fr 1fr!important}}.errors-page .seg.seg-info{background:var(--ink-faint)!important}@media (max-width:767px){.admin-page .admin-nav a{padding:0 10px!important}.overview-page .ov-kpi-row>:last-child:nth-child(odd){grid-column:1/-1}}.errors-page .col-when .when-rel{font-size:13.5px!important}.q-stats-actions{flex-wrap:wrap}.ov-live-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.q-chart-wrap{position:relative}.q-chart-empty strong{font-size:14px;font-weight:500;color:var(--color)}.q-chart-empty span{font-size:12.5px;color:var(--ink-soft)}.dark-mode .ov-meter .fill.critical{background:#f08a82!important}@media (max-width:767px){.admin-page .admin-filters-toggle::before{content:"";width:14px;height:14px;margin-right:6px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 6h16M7 12h10M10 18h4'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 6h16M7 12h10M10 18h4'/%3E%3C/svg%3E") center/contain no-repeat}}.q-state-toggle input:focus-visible+.q-state-chip{outline:2px solid var(--accent);outline-offset:2px}.admin-page .admin-section-header h2 .ui-icon{width:16px;height:16px;color:var(--ink-soft)}.ov-meter span{background:var(--accent)}.q-danger-group::before{content:"Clear jobs";flex-basis:100%;font-size:12px;color:var(--ink-soft);margin-bottom:2px}.overview-page .ov-views button{border:0;background:0 0;padding:6px 14px;border-radius:7px;font:500 13.5px var(--font-sans);color:var(--ink-soft);cursor:pointer}.overview-page .ov-views button:hover{color:var(--color)}.overview-page .ov-views button.active{background:var(--paper-card,#fff);color:var(--color);box-shadow:0 1px 2px rgba(0,0,0,.08)}.overview-page .ov-ehours{margin:0}.overview-page .ov-cache .ov-cache-rates>div{padding:12px 14px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--admin-stat-bg,var(--main-bg-color))}.overview-page .ov-cache .ov-cache-rates dt{font-size:12px;font-weight:500;color:var(--ink-muted);margin:0 0 4px}.overview-page .ov-cache .ov-cache-rates dd{margin:0;font:600 20px/1.2 var(--font-sans);font-variant-numeric:tabular-nums;color:var(--color)}.q-state-badge.q-state-active::before,.q-state-badge.q-state-completed::before{background:var(--st-ok)!important}.q-state-badge.q-state-delayed::before,.q-state-badge.q-state-waiting::before{background:var(--st-progress)!important}.q-state-badge.q-state-failed::before{background:var(--st-bad)!important}.q-state-chip.q-state-active::before,.q-state-chip.q-state-completed::before{background:var(--st-ok)!important}.q-state-chip.q-state-delayed::before,.q-state-chip.q-state-waiting::before{background:var(--st-progress)!important}.q-state-chip.q-state-failed::before{background:var(--st-bad)!important}.seg-chip:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.q-jobs-header .seg-filter{margin-left:auto}@media (min-width:768px){.errors-page .errors-toolbar::before{content:"";order:4;flex:0 0 100%;height:0}}.q-state-badge.q-state-completed::before{background:0 0!important}.q-table td.q-cell-id{width:32%;max-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.q-table td.q-cell-detail{width:30%;max-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;color:var(--ink-muted)}.q-table .q-progress-wrap.is-indeterminate .q-progress-bar{background-image:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--accent) 55%,transparent) 0 4px,var(--border-color) 4px 8px)!important}.filter-chip.is-active .count,.status-chip.active .count{color:inherit!important}.status-dot-wrap{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:500;color:var(--ink-soft)}.dashboard-page,.paper-page{max-width:1112px}.admin-page .paper-table-head>*,.admin-page [role=columnheader],.admin-page h3,.errors-page th{font-family:var(--font-sans)!important;text-transform:none!important;letter-spacing:0!important;font-size:12.5px!important;font-weight:600!important;color:var(--ink-soft)!important}@media (max-width:767px){.paper-table.paper-table-dashboard{margin-left:0!important;margin-right:0!important;width:100%!important}.dashboard-meta{flex-wrap:wrap;row-gap:8px}.dashboard-active-filters{flex-wrap:wrap}}.paper-table.paper-table-dashboard .paper-table-row>:last-child{display:flex;justify-content:flex-end;align-items:center;gap:4px}.quota-ring-track{fill:none}.quota-ring-fill{fill:none;stroke-linecap:round;min-width:0}.quota-summary-ring{width:18px!important;height:18px!important}.dark-mode .paper-table-row:hover{background:rgba(255,255,255,.04)!important}.paper-table-empty-actions{margin-top:12px;display:flex;gap:8px;justify-content:center}.copy-url{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 8px 0 10px;border:0;border-radius:var(--radius-control);background:var(--hover-bg-color);font:500 12.5px/1 var(--font-mono);color:var(--ink-soft);cursor:pointer;transition:background .12s,color .12s;max-width:280px!important}.copy-url:hover{background:var(--accent-soft);color:var(--accent)}@media (max-width:767px){.copy-url{padding:0;justify-content:center;width:40px;height:40px}}.dashboard-page .btn.dashboard-type-filter.btn-primary,.paper-page .btn.dashboard-type-filter.btn-primary{background:var(--accent-soft)!important;border-color:transparent!important;color:var(--accent)!important}.paper-table.paper-table-dashboard .paper-table-head,.paper-table.paper-table-dashboard .paper-table-row{grid-template-columns:minmax(240px,3fr) 190px 60px 120px 300px!important}.cell-actions{display:flex;align-items:center;gap:4px;justify-content:flex-end}.dashboard-filter-controls .btn-group[aria-label=Type]{background:var(--hover-bg-color);border-radius:calc(var(--radius-control) + 3px);gap:2px;height:36px;align-items:center}.dashboard-filter-controls .btn-group[aria-label=Type]>.btn{border:0!important;background:0 0!important;color:var(--ink-soft)!important;border-radius:var(--radius-control)!important;box-shadow:none!important;margin:3px 0}.dashboard-filter-controls .btn-group[aria-label=Type]>.btn.btn-primary{background:var(--paper-card)!important;color:var(--color)!important;box-shadow:0 1px 2px rgba(0,0,0,.08),0 0 0 1px var(--border-color)!important}.admin-filter-row .form-control,.dashboard-page .dashboard-filter-row .form-control,.paper-page .search-wrap .form-control{border:1px solid #a39d92!important;height:36px!important}.dark-mode .admin-filter-row .form-control,.dark-mode .dashboard-page .dashboard-filter-row .form-control,.dark-mode .paper-page .search-wrap .form-control{border-color:#4a443d!important}.cell-anon .record-type-icon{display:none!important}.dashboard-heading-actions{display:flex;align-items:center;gap:10px}.dashboard-heading-actions .quota-panel{right:0;left:auto!important}@media (max-width:767px){.paper-table .anon-sub{flex-wrap:wrap;white-space:normal!important;row-gap:2px}}.dashboard-page .dashboard-heading-actions{flex-direction:row!important;align-items:center!important;gap:10px!important}@media (max-width:767px){.dashboard-page .dashboard-heading{flex-direction:column!important;align-items:stretch!important;gap:12px}}.admin-filter-row .form-control,.dashboard-page .dashboard-filter-row .form-control,.paper-page .search-wrap .form-control{border-color:var(--border-color)!important}.admin-filter-row .form-control:focus,.dashboard-page .dashboard-filter-row .form-control:focus{border-color:var(--accent)!important}.dashboard-page .dashboard-filter-controls .btn,.dashboard-page .dashboard-filter-controls .dropdown-toggle{height:36px}.paper-table [role=cell].num a{color:var(--color)!important;font-family:var(--font-sans)!important}.admin-page .paper-table .anon-sub{gap:0!important;column-gap:0!important}.admin-page .paper-table .anon-sub>a{border-bottom:0!important;text-decoration:none}.paper-table:not(.paper-table-dashboard) .paper-table-head,.paper-table:not(.paper-table-dashboard) .paper-table-row{column-gap:24px!important}.connection-label{font-size:12.5px;color:var(--ink-soft);margin-right:4px}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row{display:grid!important}.paper-table.paper-table-dashboard .paper-table-row>.cell-actions{display:contents!important}.paper-table.paper-table-dashboard .paper-table-row{padding-right:16px!important}}.admin-page .paper-table .anon-sub:has(.meta-sep){display:flex!important;flex-wrap:wrap;margin-left:-14px!important;gap:0!important}.admin-page .paper-table .anon-sub:has(.meta-sep)>::before{content:"\00b7";display:inline-block;width:14px;text-align:center;color:var(--ink-muted)}.admin-page .paper-table .cell-views .ui-icon{display:none!important}@media (max-width:767px){.dashboard-page .paper-table-dashboard .dashboard-row-meta{font-size:12.5px;color:var(--ink-soft);grid-area:meta!important;flex-wrap:wrap;gap:2px 12px!important;column-gap:0!important;row-gap:4px!important}.dashboard-page .dashboard-row-meta .cell-status .status-line{gap:6px}.dashboard-page .dashboard-row-meta .cell-views .ui-icon,.dashboard-page .dashboard-row-meta .cell-views svg{display:none!important}}.dashboard-page .dashboard-quota .quota-summary-ring{width:16px;height:16px}.connections-page .connection-actions .connection-link{white-space:nowrap}.connections-page .connection-actions .btn{white-space:nowrap}.paper-table-dashboard .row-open{margin-right:2px}@media (max-width:767px){.paper-table-dashboard .cell-anon .anon-title,.paper-table-dashboard .cell-anon .anon-title>a{word-break:normal!important;display:block;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere!important}}.quota-panel .quota-item:has(.quota-unlimited)::after{content:"No limit on file count";display:block;font-size:12.5px;color:var(--ink-soft);margin-top:6px}@media (max-width:767px){.paper-table.paper-table-dashboard .anon-title .repo-name{min-width:0!important;word-break:normal!important;display:inline!important;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere!important}}@media (min-width:768px){.dashboard-page .paper-table-dashboard .paper-table-row>.cell-actions{display:grid!important;grid-template-columns:repeat(4,36px);gap:4px!important;justify-content:end;align-items:center}}@media (max-width:767px){.dashboard-page .dashboard-row-meta .cell-expires .mobile-meta-icon,.dashboard-page .dashboard-row-meta .cell-views .mobile-meta-icon{display:inline-block!important;color:var(--ink-muted)}.dashboard-page .dashboard-row-meta>.cell-expires:has(>.empty-dash){display:inline-flex!important}}.dashboard-page .paper-table-dashboard .anon-sub>.commit-hash{display:inline!important;flex:0 0 auto!important;overflow:visible!important;text-overflow:clip!important;white-space:nowrap;min-width:8ch}@media (min-width:768px){.paper-table-dashboard .cell-actions>button.row-edit{border:0;background:0 0;padding:0;display:inline-flex;align-items:center;justify-content:center}}.paper-table-dashboard .cell-status .status-action-line .status-stuck>span{color:var(--ink-faint)}@media (max-width:767px){.dashboard-page .paper-table-dashboard .dashboard-row-meta .status-sub:not(.status-sub-date){padding-left:22px!important}.dashboard-page .paper-table.paper-table-dashboard .paper-table-row,.dashboard-page .paper-table.paper-table-dashboard .paper-table-row.repo-error{padding-left:16px!important;padding-right:16px!important}.dashboard-page .paper-table-dashboard .cell-anon>.anon-text,.dashboard-page .paper-table.paper-table-dashboard .paper-table-row>.cell-anon{display:contents!important}.dashboard-page .paper-table-dashboard .cell-actions>.copy-url{display:inline-flex!important;align-items:center;justify-content:center;padding:0!important;border-radius:8px}.dashboard-page .paper-table-dashboard .cell-actions>.copy-url::after{content:"";position:absolute;top:-6px;bottom:-6px;left:-12px;right:0}}.repository-task .share-link-next>p{margin:0;font-size:14px;line-height:21px;color:var(--ink-soft)}@media (min-width:768px){.dashboard-page .paper-table-dashboard .cell-actions:not(:empty){display:flex!important;align-items:center;justify-content:flex-end;gap:4px!important}.dashboard-page .paper-table-dashboard .cell-actions>.copy-url>svg{width:15px!important;height:15px!important;flex:0 0 15px;color:var(--ink-soft)}}.dashboard-page .dropdown-menu .status-preset.active::after{content:"✓";float:right;margin-left:12px;color:var(--accent)}.admin-page.admin-page .paper-table .anon-sub.anon-sub>::before{content:none!important}.admin-page.admin-page .paper-table .anon-sub.anon-sub>*+::before{content:"·"!important;display:inline!important;width:auto!important;margin:0 6px!important;color:var(--ink-faint,var(--ink-muted));text-align:center}.dashboard-view-tabs button[aria-pressed=true] .attention-count:not(.has-attention){color:var(--color)}@media (min-width:768px){.admin-page.admin-page .paper-table.paper-table-repos .anon-sub.anon-sub>:first-child{overflow:hidden;text-overflow:ellipsis;flex:0 1 auto!important;min-width:0!important;padding-right:0!important;margin-right:0!important}}.paper-page .dashboard-meta .dashboard-view-tabs button{min-height:40px;padding:8px 0 10px}.dashboard-status-filter.is-view-hidden{visibility:hidden;pointer-events:none}.user-actions{display:flex;flex-wrap:wrap;gap:8px}.errors-page .kpi-sub.down,.errors-page .kpi-sub.up{color:var(--ink-soft)!important}.ov-flag{font-weight:600;color:var(--status-progress)!important}.overview-page .ov-daily-value{color:var(--color)!important}@media (max-width:767px){.anonymize-landing .paper-page-lede{font-size:15px!important}}.anonymize-landing .text-muted:has(.ui-icon){display:flex;gap:8px;align-items:flex-start;padding:10px 12px;margin-top:12px;border-radius:var(--radius-control);background:color-mix(in srgb,var(--status-progress) 9%,transparent);color:var(--color)!important;font-size:13px}.overview-page .ov-val-warn{color:var(--color)!important}.user-header .type-badge{font-family:var(--font-sans)!important;letter-spacing:0!important;text-transform:none!important;font-weight:600;border:0!important}.errors-page [class*=count]{background:var(--hover-bg-color)!important;color:var(--color)!important}.ov-flag.critical{color:var(--status-error)!important}@media (max-width:767px){.admin-filter-row,.admin-page form[class*=filter]{display:grid!important;grid-template-columns:1fr;gap:8px}}.q-state-chip{background:var(--paper-card)!important;color:var(--color)!important;border:1px solid var(--border-color)!important;text-transform:none!important;font-family:var(--font-sans)!important;letter-spacing:0!important}.role-pill{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:999px;background:var(--hover-bg-color);font:600 12px/1 var(--font-sans);color:var(--color)}.user-header .type-badge{background:var(--hover-bg-color)!important}.admin-page .paper-table-row .text-muted,.admin-page .paper-table-row [class*=meta]{color:var(--ink-soft)!important}@media (max-width:767px){.admin-filter-toolbar{grid-template-columns:1fr 1fr;gap:8px;display:block!important}}@media (max-width:767px){.admin-filter-row{display:grid!important;grid-template-columns:1fr 1fr}}.page-head-row .btn-primary,.paper-page .btn-primary{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}.q-section-right,.q-section-right *,.q-stat-label{font-family:var(--font-sans)!important;text-transform:none!important;letter-spacing:0!important;font-size:12px!important;color:var(--ink-soft)!important}.q-card .q-card-sub,[class*=q-card] small{font-family:var(--font-sans)!important}.errors-list-head .col-count,.errors-list-head .col-msg{background:0 0!important;font-family:var(--font-sans)!important;font-weight:600!important}.errors-page .col-count>*{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:999px;background:var(--hover-bg-color)!important;color:var(--color)!important;font:600 12px/1 var(--font-sans);box-shadow:none!important}.errors-page .col-count>*>*{background:0 0!important}.errors-page .col-when{flex-direction:column;line-height:1.3;display:flex;gap:8px;align-items:baseline}.errors-page .kpi-sub{color:var(--ink-soft)!important}.q-legend-exec{display:inline-block;width:14px;height:0;vertical-align:middle;margin-right:4px}.dark-mode .btn-primary,.dark-mode .dashboard-page .btn-primary,.dark-mode .paper-page .btn-primary{background:#1f6a64!important;border-color:#1f6a64!important;color:#fff!important}.dark-mode .dashboard-type-filter.btn-primary{background:rgba(124,199,190,.16)!important;border-color:transparent!important;color:#a8ddd6!important}.errors-page .col-count{background:0 0!important;box-shadow:none!important;display:flex;align-items:center;font-weight:inherit!important;color:inherit!important;text-align:right}.paper-page .dashboard-type-filter.btn-primary{background:var(--accent-soft)!important;border-color:transparent!important;color:var(--accent)!important}.paper-page>.row{margin-left:0!important;margin-right:0!important}.q-table th{font-family:var(--font-sans)!important;text-transform:none!important;letter-spacing:0!important;font-size:12.5px!important;font-weight:600!important;color:var(--ink-soft)!important}@media (max-width:767px){.overview-page .ov-kpi-card,.overview-page [class*=ov-daily-card]{min-width:0!important;width:auto!important}}.paper-table-empty .empty-title{display:block;font-size:15px;font-weight:600;color:var(--color);margin-bottom:4px}.admin-filters-toggle{display:none}@media (max-width:767px){.admin-filters-toggle{display:inline-flex;margin:8px 0}}.reading-layout{display:grid;justify-content:center;grid-template-columns:minmax(0,720px) 200px!important;gap:40px!important;padding:0 24px!important}.reading-layout .file-content.markdown-body{max-width:none!important;margin:0!important;padding:40px 0 96px!important;font-size:16px!important;line-height:1.7!important}.readme-toc{position:sticky;top:68px;align-self:start;margin-top:44px;max-height:calc(100% - 100px);overflow:auto;display:grid;gap:2px;font-size:13px}.readme-toc-head{font-weight:600;color:var(--color);margin-bottom:8px;font-size:12.5px!important}.readme-toc a{display:block;text-decoration:none!important;font-size:13.5px!important;text-indent:0;white-space:normal!important;overflow:visible!important;text-overflow:clip!important}@media (max-width:1199px){.readme-toc{display:none}}@media (max-width:767px){.reading-layout .file-content.markdown-body{padding:20px 0 72px!important}}.demo{margin-top:28px;display:grid;gap:14px;margin-bottom:0!important}.demo-terms{display:grid;gap:6px}.demo-terms input{height:42px;padding:0 14px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-card);font:14px var(--font-mono);color:var(--color)}.demo-panes{display:grid;grid-template-columns:1fr 1fr;gap:14px}.demo .pane{border:1px solid var(--border-color);border-radius:var(--radius-surface);background:var(--paper-card);overflow:hidden;display:flex;flex-direction:column}.demo .pane-header{display:flex;justify-content:space-between;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border-soft);font-size:12px;color:var(--ink-soft)}.demo .pane-label{font-weight:600;color:var(--color)}.demo .pane-url{font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.demo .pane-after{box-shadow:none!important;border-color:var(--border-color)!important}.demo .pane-body{padding:14px 16px;font:13px/1.75 var(--font-mono);color:var(--color);white-space:pre-wrap;min-height:120px!important}.demo-input{border:0;background:0 0;outline:0;width:100%;resize:none!important}.demo-input:focus{background:color-mix(in srgb,var(--accent) 3%,transparent)}@media (max-width:767px){.demo-panes{grid-template-columns:1fr}}.paper-frame-bar .dots{display:none!important}.paper-frame-bar{height:32px!important;background:0 0!important}.paper-frame-bar .url{text-align:left!important;flex:none!important}.fm-chips span{background:var(--hover-bg-color)!important}.paper-link-arrow{font-size:15px!important}.paper-reassure{font-size:14px!important}.acct-menu-head,.dark-mode .acct-menu-head{color:var(--ink-soft)!important}.paper-faq-lede a{color:var(--color)!important;text-decoration:none!important}.ace-chrome .ace_constant.ace_language,.ace-chrome .ace_constant.ace_numeric,.ace-chrome .ace_support.ace_constant{color:#0550ae!important}.ace-nord-dark .ace_constant.ace_language,.ace-nord-dark .ace_constant.ace_numeric,.ace-nord-dark .ace_support.ace_constant{color:#79c0ff!important}.copy-url .project-type-svg{width:14px;height:14px;flex-shrink:0;opacity:.75}.ace_searchbtn_close{background-image:none!important;width:28px!important;height:28px!important;display:inline-flex!important;align-items:center;justify-content:center;border-radius:var(--radius-control)!important;color:var(--ink-soft)!important}.ace_searchbtn_close:hover{background-color:var(--hover-bg-color)!important}.dark-mode .btn-hero,.dark-mode .btn-primary,.dark-mode .landing-continue:not(:disabled){color:#fff!important;background:#237a71!important;border-color:#237a71!important}.nav-support-inline .nav-heart{width:14px;height:14px}.fm-chips span{color:var(--color)!important}@media (max-width:767px){.vb-icon,.vb-support{width:36px!important;height:36px!important}.navbar .nav-signin-m,.navbar-toggler{height:36px!important;border-radius:var(--radius-control)!important}}.overview-page .ov-spark-fill,.overview-page .ov-spark-fill-alt,.overview-page .ov-spark-fill-new-user{background:color-mix(in srgb,var(--accent) 70%,transparent)!important}.overview-page .ov-dot-legend{background:var(--accent)!important}.conferences-page .paper-table:has(.paper-table-empty) .paper-table-head{display:none!important}.conferences-page .paper-table-empty .conf-empty-new .ui-icon{width:15px;height:15px}.conference-page .paper-crumbs+.d-flex>.d-flex{margin-top:2px}.conference-page>div>p[role=alert]{display:flex;align-items:center;gap:8px;margin:16px 0 0;padding:10px 14px;font-size:14px;color:var(--color);background:var(--status-error-soft);border:1px solid var(--border-color);border-radius:var(--radius-control)}.conf-repo-toolbar .seg-countline{margin-left:auto}@media (max-width:767px){.conf-repo-toolbar .seg-countline{margin-left:0}}@media (min-width:768px){.conference-page .conf-repo-toolbar .seg-filter{grid-area:seg;justify-self:start}.conference-page .conf-repo-toolbar .dashboard-filter-controls{grid-area:sort;justify-self:end}}.paper-page .conf-repo-toolbar .dropdown-toggle .filter-btn-label::after{content:"·";margin-left:6px;color:var(--ink-faint)}.nav-support-inline .nav-heart,.vb-support .ui-icon{color:#c25b5e!important;fill:#c25b5e!important}.nav-support-inline:hover .nav-heart,.vb-support:hover .ui-icon{color:#e5484d!important;fill:#e5484d!important}.dark-mode .nav-support-inline .nav-heart,.dark-mode .vb-support .ui-icon{color:#d9787b!important;fill:#d9787b!important}@media (max-width:767px){.vb-signin{height:30px!important}}.row-edit{display:inline-flex;align-items:center;justify-content:center;color:var(--ink-soft)!important}.row-edit:hover{color:var(--color)!important}.row-edit .ui-icon{width:16px;height:16px}.ov-health{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;margin:0 0 20px;border-radius:var(--radius-control);font-size:14px;color:var(--color);background:var(--paper-card)!important;box-shadow:inset 3px 0 0 var(--status-error,#b42318),inset 0 0 0 1px var(--border-color)!important}.ov-health .ui-icon{width:18px;height:18px;flex:none;margin-top:1px;color:var(--status-error,#b42318)}.dark-mode .ov-health{background:var(--paper-card)!important;box-shadow:inset 3px 0 0 #f08a82,inset 0 0 0 1px var(--border-color)!important}.errors-page .when-abs{font-size:12px}.errors-page .msg-code{font-family:var(--font-sans)!important;font-weight:500!important;font-size:13.5px!important}@media (max-width:767px){.viewer-bar .vb-icon,.viewer-bar .vb-signin,.viewer-bar .vb-support{height:36px!important;border-radius:var(--radius-control)!important;background:0 0!important;box-shadow:inset 0 0 0 1px var(--border-color)!important;border:0!important}.viewer-bar .vb-icon,.viewer-bar .vb-support{width:36px!important}.file-card-head .card-files-btn,.file-card-head .tb-copy-m,.file-card-head .tb-more-btn{width:36px!important;color:var(--color)!important}}.btn-toggle.is-on,.btn-toggle[aria-pressed=true]{color:var(--accent)!important;background:var(--accent-soft)!important}.fm-toggles span{color:var(--color)!important}.dark-mode .paper-frame{border:0!important;box-shadow:0 0 0 1px #34302b,0 12px 32px rgba(0,0,0,.4)!important}.q-section-right .q-legend-completed{color:#2f7d4f!important}.q-section-right .q-legend-failed{color:#b42318!important}.dark-mode .q-section-right .q-legend-completed{color:#6fbf8a!important}.dark-mode .q-section-right .q-legend-failed{color:#f08a82!important}.avatar-fallback{width:28px;height:28px;flex:none;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--hover-bg-color);color:var(--ink-soft);font-size:12px;font-weight:600}.mono-id{font-family:var(--font-mono)!important;font-size:13px!important}.paper-table .anon-sub,.paper-table .anon-sub *{font-size:12px}.dashboard-heading-actions .dashboard-quota{position:relative;margin:0!important}@media (max-width:767px){.admin-nav{gap:4px;margin-left:-16px;margin-right:-16px;padding:0 16px 4px}.overview-page .ov-kpi-sub{text-overflow:clip!important;overflow:visible!important;padding-right:4px;white-space:nowrap!important;font-size:11.5px!important}}@media (max-width:767px){.dashboard-page .dashboard-heading-actions{justify-content:space-between!important;width:100%}}@media (max-width:767px){.mobile-sub{align-items:center}.file-card-head .card-files-btn,.file-card-head .tb-copy-m,.file-card-head .tb-more-btn{box-shadow:none!important;background:0 0!important}.file-card-head .card-files-btn:active,.file-card-head .tb-copy-m:active,.file-card-head .tb-more-btn:active{background:var(--hover-bg-color)!important}}@media (min-width:1200px){.reading-layout{padding:0 24px!important;justify-content:center!important}}.ace_search .ace_search_field:focus,.ace_search_field:focus{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 22%,transparent)!important;border-color:color-mix(in srgb,var(--accent) 70%,transparent)!important}.demo-terms label span,.paper-eyebrow,.paper-footer,.paper-footer a{color:var(--ink-soft)!important}.dark-mode .anonymize-page .btn-ink,.dark-mode .btn-hero,.dark-mode .btn-primary,.dark-mode .landing-continue,.dark-mode .page-head-row .btn-primary,.dark-mode .paper-page .btn-ink,.dark-mode .paper-page .btn-primary{background:#237a71!important;border-color:#237a71!important;color:#fff!important}.dark-mode .anonymize-page .btn-ink:hover,.dark-mode .btn-primary:hover,.dark-mode .paper-page .btn-ink:hover{background:#1e6b63!important;color:#fff!important;filter:none!important}.landing-continue,.landing-continue:disabled{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important;opacity:1!important;cursor:pointer}.errors-page .dot-info,.errors-page .sev-dot.sev-info{background:var(--ink-muted)!important}@media (max-width:767px){.admin-page .admin-filters-toggle,.admin-page .dashboard-filters-toggle{width:auto!important}}.admin-filter-inline{display:inline-flex;align-items:center;gap:6px;margin-left:14px}.admin-page .admin-filter-inline .form-control,.admin-page .admin-filter-row .form-control,.admin-page .search-wrap .form-control{height:36px!important;min-height:36px!important;border:1px solid var(--border-color)!important;font-size:13.5px!important;padding-top:0!important;padding-bottom:0!important}.admin-page .admin-filter-inline .form-control:focus,.admin-page .admin-filter-row .form-control:focus{border-color:var(--accent)!important}.tb-menu-note{display:flex;align-items:center;gap:10px;padding:8px 12px}.tb-menu-note .ui-icon{width:16px;height:16px}.readme-toc a{color:var(--ink-soft)!important}.dark-mode .readme-toc a.is-active{color:#a8ddd6!important}.ace_search_form .ace_searchbtn{border-radius:0!important;margin:0!important}.ace_search .ace_searchbtn.next,.ace_search .ace_searchbtn.prev{box-shadow:none!important}.ace_editor .ace_marker-layer .ace_selected-word,.ace_editor .ace_marker-layer .ace_selection{box-shadow:none!important;border:0!important}.ace-nord-dark .ace_string,.dark-mode .ace_editor .ace_string{color:#a5c8ff!important}.ace_search .ace_button{min-width:30px!important;font-size:12px!important}.ace_search_counter{font-size:12.5px!important}.btn-toggle.is-on{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent)!important}.vb-snapshot{background:0 0!important}@media (max-width:767px){.file-card.is-code .ace_gutter-cell{padding-left:4px!important;padding-right:6px!important}}.auto-refresh-label{font-family:var(--font-sans)!important;white-space:nowrap!important}.ov-spark-fill{opacity:1!important;background:color-mix(in srgb,var(--accent) 70%,transparent)!important}.connections-grid .connection-link:not(.connection-danger){padding:0 12px;border:1px solid var(--border-color);border-radius:var(--radius-control);color:var(--color)!important;text-decoration:none!important}.reading-layout .file-content.markdown-body,.reading-layout .markdown-body{padding-left:0!important;padding-right:0!important}.admin-page .errors-header,.admin-page .ov-header,.admin-page .q-header{margin:0 0 12px!important;display:flex;align-items:center;justify-content:space-between}.dashboard-quota .quota-summary-ring{display:none!important}.errors-page .when-abs{display:none!important}@media (max-width:767px){.admin-page .admin-nav{margin-left:0!important;margin-right:0!important}}.fm-toggles span{display:inline-flex}.paper-faq nav a,.paper-faq-toc a{text-decoration:none!important}@media (max-width:991px){.navbar .navbar-toggler{border-color:transparent!important;background:0 0!important;box-shadow:none!important;margin-right:-6px}}.ace-chrome .ace_keyword,.ace-chrome .ace_keyword.ace_operator.ace_new,.ace-chrome .ace_storage{color:#7a3e6e!important}.ace-chrome .ace_entity.ace_name.ace_function,.ace-chrome .ace_support.ace_function{color:#2b2824!important;font-weight:500}.ace-chrome .ace_constant,.ace-chrome .ace_constant.ace_language,.ace-chrome .ace_constant.ace_numeric{color:#8a4b12!important}.ace-chrome .ace_comment{color:#8a847a!important;font-style:italic}.ace-chrome .ace_identifier,.ace-chrome .ace_variable{color:#2b2824!important}.ace-chrome .ace_keyword.ace_operator,.ace-chrome .ace_paren,.ace-chrome .ace_punctuation{color:#6e6860!important}.ace-chrome .ace_entity.ace_name.ace_tag,.ace-chrome .ace_support.ace_class,.ace-chrome .ace_support.ace_type{color:#7a3e6e!important}.ace-chrome .ace_entity.ace_other.ace_attribute-name{color:#8a4b12!important}.dark-mode .ace_editor .ace_entity.ace_name.ace_tag,.dark-mode .ace_editor .ace_keyword,.dark-mode .ace_editor .ace_storage,.dark-mode .ace_editor .ace_support.ace_type{color:#d7a6cb!important}.dark-mode .ace_editor .ace_entity.ace_name.ace_function,.dark-mode .ace_editor .ace_identifier,.dark-mode .ace_editor .ace_support.ace_function,.dark-mode .ace_editor .ace_variable{color:#ece7df!important}.dark-mode .ace_editor .ace_constant,.dark-mode .ace_editor .ace_constant.ace_numeric,.dark-mode .ace_editor .ace_entity.ace_other.ace_attribute-name{color:#e0b070!important}.dark-mode .ace_editor .ace_comment{color:#8a847a!important;font-style:italic}.dark-mode .ace_editor .ace_keyword.ace_operator,.dark-mode .ace_editor .ace_paren,.dark-mode .ace_editor .ace_punctuation{color:#a39d92!important}.demo-panes .pane-header{gap:10px;min-width:0;min-height:40px!important;box-sizing:border-box;display:flex}.demo-panes .pane-url{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ov-live{font-size:12.5px;color:var(--ink-soft);display:inline-flex;align-items:center;gap:6px}.vb-support{background:0 0!important;border:0!important}.vb-support:hover{background:var(--hover-bg-color)!important}.repo-access-note>span:last-child{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border-radius:var(--radius-control);background:color-mix(in srgb,#b7791f 8%,transparent);box-shadow:inset 3px 0 0 #b7791f;color:var(--color)!important}.ace-chrome .ace_entity.ace_name.ace_tag,.ace-chrome .ace_keyword,.ace-chrome .ace_storage,.ace-chrome .ace_support.ace_type{color:#93306a!important}.ace-chrome .ace_constant,.ace-chrome .ace_constant.ace_numeric{color:#a14a0f!important}.ace_editor .ace_marker-layer .ace_redacted{background:rgba(31,106,100,.28)!important;box-shadow:inset 0 0 0 1px rgba(31,106,100,.65)!important}.ace_search{background:var(--paper-card)!important}.paper-stats-dot{background:var(--accent)!important}.paper-frame{border:0!important}.access-q{display:block;font-size:13px;color:var(--ink-soft);margin:4px 0 6px}.repo-access-note>span:has(.ui-icon){width:100%}@media (max-width:767px){.anonymize-page .repo-access-switch,.anonymize-page [role=group][aria-label*=onnection]{width:100%!important;display:flex!important}}.admin-empty,.paper-table-empty{border:1px solid var(--border-color)!important;border-radius:var(--radius-surface,12px)!important;background:var(--paper-card)!important;padding:40px 24px!important;text-align:center}.paper-table:has(.paper-table-empty),:has(>.paper-table-empty:only-child){border-top:0!important;border-bottom:0!important;box-shadow:none!important}.ace_editor .ace_text-layer .ace_redacted{font-weight:500}.ace_editor .ace_marker-layer .ace_redacted{display:none!important}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{border:0!important;line-height:1.1!important}.btn-find.is-on,.btn-toggle.is-on{color:var(--accent)!important;background:var(--accent-soft)!important}@media (max-width:767px){.anonymize-page .repo-access,.repo-access{flex-wrap:wrap;width:100%}.repo-access-switch{display:flex!important;width:100%!important}}.ov-chart-legend{font-family:var(--font-sans)!important;font-size:12px!important;color:var(--ink-soft)!important}.dark-mode .ace_editor .ace_text-layer .ace_redacted,.dark-mode .redact-chip{color:#9fe0d7!important;background:rgba(124,199,190,.2)!important}.file-card-head .btn.btn-toggle.is-on,.file-card-head .btn.btn-toggle[aria-pressed=true]{box-shadow:none!important}.dark-mode .hero-mock-doc,.dark-mode .paper-frame{background:#24211d!important}.errors-page .status-pill.status-neutral{background:var(--hover-bg-color)!important;color:var(--ink-soft)!important;border-color:var(--border-color)!important}.connections-grid .btn,.connections-grid .connection-link:not(.connection-danger){height:36px!important;min-height:36px!important;padding-top:0!important;padding-bottom:0!important;display:inline-flex!important;align-items:center}.claim-page .form-control,.claim-page input{border:1px solid var(--border-color)!important}.auth-options .auth-continue-github+small{display:block;text-align:left!important;margin-top:10px}.auth-options .auth-card>h2{margin-top:0}.paper-footer-meta{font-size:15px!important;color:var(--ink-soft)!important}.dark-mode .paper-table-row{background:0 0!important}@media (max-width:767px){.dashboard-count{width:auto!important;height:auto!important;font-size:12.5px!important}}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip{vertical-align:.12em!important}.ace_search{border-bottom:1px solid var(--border-color)!important;box-shadow:none!important;border-top:0!important}@media (max-width:767px){.file-card-head .card-files-btn{width:32px!important;height:32px!important}}.dark-mode .explorer-content,.dark-mode .file-card{background:#141311!important}.nav-support-inline{color:var(--color)!important;font-weight:500!important}.anonymize-page .access-q+.btn-outline-ink{height:30px!important;padding:0 10px!important;font-size:13px!important}.volume-legend>span{display:inline-flex;align-items:center;gap:5px;margin-left:12px}.volume-axis{display:flex;justify-content:space-between;font-size:11.5px;color:var(--ink-soft);margin-top:6px}.errors-page .seg.seg-info{background:color-mix(in srgb,var(--ink-muted) 55%,transparent)!important}.paper-crumbs a{color:var(--ink-soft)!important}.paper-crumbs .here{color:var(--color)!important}.paper-table .mobile-meta-icon,.paper-table [role=cell]>.ui-icon{opacity:.45}.dark-mode .paper-table-dashboard .paper-table-head,.dark-mode .paper-table-head{background:0 0!important;box-shadow:inset 0 -1px 0 var(--border-color)!important}@media (max-width:767px){.dashboard-filters-toggle{border:1px solid var(--border-color)!important;padding:0 12px!important}.admin-filter-row kbd,.search-wrap .kbd,.search-wrap kbd{display:none!important}}@media (min-width:768px){.paper-table-dashboard .cell-expires,.paper-table-dashboard .paper-table-head>:nth-child(4){text-align:left!important;justify-content:flex-start!important;padding-left:24px!important}}.anonymize-page #sourceUrl-landing,.anonymize-page .form-control-lg{border:1px solid var(--border-color)!important}.anonymize-page .form-control-lg:focus{border-color:var(--accent)!important}.repo-access-note>span:has(.ui-icon){color:var(--color)!important}.ace-chrome .ace_string{color:#2d5f86!important}.dark-mode .ace_editor .ace_string{color:#9cc3e6!important}.errors-page .btn-group>.btn,.errors-page .btn-icon,.errors-page .form-control,.errors-page select{height:36px!important;min-height:36px!important}.q-danger-group{border-left:0!important;grid-column:1/-1;justify-self:start;margin:4px 0 0!important;padding:10px 0 0!important;border-top:1px solid var(--border-color)!important;width:100%;display:flex!important;gap:8px;align-items:center;flex-wrap:wrap}@keyframes scrollHintOut{to{opacity:0;visibility:hidden}}.readme-toc a.lvl-3{padding-left:29px!important}.ace_search .ace_button{color:var(--color)!important;opacity:.8}.dark-mode .files .file>a,.dark-mode .files .folder>a{color:#d8d2c8!important}.ace-chrome .ace_gutter-cell,.dark-mode .ace_editor .ace_gutter-cell{font-size:12px!important}.q-stats-actions{gap:8px;align-items:center}@media (max-width:767px){.ov-live{font-size:12px;margin-left:0!important}}.demo-input-wrap .demo-backdrop{margin:0;overflow:hidden;color:var(--color);pointer-events:none;overflow-wrap:break-word;position:relative!important;inset:auto!important}.demo-input-wrap .demo-input{color:transparent!important;caret-color:var(--color);background:0 0!important;overflow-wrap:break-word;position:absolute!important;inset:0;overflow:hidden}.demo-match{background:0 0;color:inherit;padding:0;border-radius:2px;background-color:color-mix(in srgb,var(--accent) 10%,transparent);box-shadow:inset 0 -1px 0 color-mix(in srgb,var(--accent) 50%,transparent)!important}.q-chart-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:var(--paper-card);text-align:center;border-bottom:0!important;border-radius:8px}.q-danger-group .btn{margin-left:0!important}.paper-settings-body .form-control,.paper-settings-body input[type=date],.paper-settings-body input[type=text],.paper-settings-body input[type=url],.paper-settings-body textarea{border:1px solid var(--border-color)!important;border-radius:var(--radius-control)!important}.admin-page:has(.admin-users-row) .paper-table-head,.admin-page:has(.admin-users-row) .paper-table-row{column-gap:40px!important;grid-template-columns:28px minmax(220px,320px) 120px 140px 1fr 40px!important}.dark-mode .paper-table-dashboard .paper-table-row{background:0 0!important}.nav-heart-m{display:none}@media (max-width:991px){.nav-heart-m{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin-left:auto;color:#c25b5e}.nav-heart-m .ui-icon{width:18px;height:18px;fill:currentColor}.nav-heart-m+.nav-signin-m{margin-left:4px!important}}.paper-link-arrow{color:var(--color)!important}.paper-stat-value{font-family:var(--font-display,var(--font-serif))!important;letter-spacing:-.01em}@media (max-width:767px){.ov-live-extra{display:none}.admin-page .admin-filters-toggle{width:auto!important;height:36px!important;padding:0 12px!important;display:inline-flex!important;align-items:center}}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{background:var(--accent-soft)!important;border-radius:6px!important;color:var(--accent)!important}.dark-mode .markdown-body h1 .redact-chip,.dark-mode .markdown-body h2 .redact-chip,.dark-mode .markdown-body h3 .redact-chip{background:rgba(124,199,190,.16)!important;color:#9fe0d7!important}.file-card-head .btn.btn-toggle.is-on,.file-card-head .btn.btn-toggle[aria-pressed=true],.file-card:has(.ace_search:not([style*=none])) .btn-find{background:0 0!important;color:var(--accent)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 50%,transparent)!important}.ace_search_counter{color:var(--color)!important;opacity:.75}.hero-mock-doc-bar span,.paper-stat-delta,.paper-stats .sub{color:#5e5950!important}.dark-mode .paper-stat-delta{color:#b5aea3!important}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{font-size:.72em!important;font-weight:600!important;padding:.05em .3em!important}.is-unsynced{color:var(--ink-muted)!important;font-size:12.5px;font-family:var(--font-sans)!important}.dark-mode .paper-table,.dark-mode .paper-table-dashboard{background:0 0!important}.dark-mode .paper-table .paper-table-row{background:#1e1b18!important}@media (min-width:768px){.readme-toc{margin-left:16px}.reading-layout{grid-template-columns:minmax(0,660px) 190px!important;gap:56px!important}}.dark-mode .leftCol{box-shadow:none!important}.dark-mode .leftCol-resizer{background:0 0!important}.markdown-body h1 .redact-chip,.markdown-body h2 .redact-chip,.markdown-body h3 .redact-chip{box-shadow:none!important}.hero-mock-row.is-active{box-shadow:inset 3px 0 0 var(--accent)!important;border-radius:6px}.fm-label,.paper-eyebrow,.paper-stats-meta-left,.paper-stats-meta-right{color:#57524a!important}.dark-mode .fm-label,.dark-mode .paper-eyebrow,.dark-mode .paper-stats-meta-left,.dark-mode .paper-stats-meta-right{color:#bdb6ab!important}.redact-glue{white-space:nowrap}@media (min-width:768px){.file-card-head,.file-card.is-code .file-card-head{padding-left:20px!important}}.admin-page .paper-table [role=cell]>svg.ui-icon[aria-hidden],.paper-table .cell-expires .mobile-meta-icon{display:none!important}.paper-page input.form-control,.paper-page input[type=date],.paper-page input[type=email],.paper-page input[type=text],.paper-page input[type=url],.paper-page select.form-control,.paper-page textarea,.paper-page textarea.form-control{border:1px solid var(--border-color)!important;border-radius:var(--radius-control)!important}.q-throughput{display:flex}.admin-page .search-wrap{flex:0 1 420px!important;max-width:420px!important}@media (max-width:767px){.overview-page .ov-header{display:flex!important;flex-direction:row!important}}.hero-mock-count{display:inline-flex;align-items:center;height:20px;border-radius:999px;font-size:11.5px}.vb-support{color:var(--ink-soft)!important}.vb-support:hover{color:var(--color)!important}@media (max-width:767px){.file-card.is-code .ace_gutter{width:30px!important}}.md-find-bar{position:sticky;top:52px;z-index:5;display:flex;align-items:center;gap:10px;padding:8px 20px;border-bottom:1px solid var(--border-color);min-height:47px!important;padding-top:7px!important;padding-bottom:7px!important;padding-left:20px!important}.md-find-input{padding:0 10px;border:1px solid var(--border-color);background:var(--paper-card);color:var(--color);font:14px var(--font-sans);width:240px!important;height:30px!important}.md-find-count{min-width:64px}.md-find-nav{display:inline-flex}.md-find-close,.md-find-nav button{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-color);background:var(--paper-card)}.md-find-close{border:0;background:0 0;border-radius:var(--radius-control);font-size:18px!important;font-weight:300!important;color:var(--ink-soft)!important}.md-find-close:hover{background:var(--hover-bg-color)}.file-card-head .btn-md-find.is-on{background:0 0!important;color:var(--accent)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 50%,transparent)!important}.claim-page input,.claim-page textarea{border-color:var(--border-color)!important}.connection-status{font-size:12.5px!important}.paper-faq-title{text-wrap:balance}.file-card-head,.md-find-bar{background:var(--paper-card)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;opacity:1!important}.dark-mode .file-card-head,.dark-mode .md-find-bar{background:#141311!important}.reading-layout .file-content.markdown-body{padding-top:32px!important}.vb-snapshot{font-size:13px!important;color:var(--ink-soft)!important}.dashboard-filter-controls .btn-group[aria-label=Type]>.btn,.dashboard-page .dashboard-filter-controls .dropdown-toggle,.dashboard-page .dashboard-filter-row .form-control{height:36px!important;min-height:36px!important}.dashboard-filter-controls .btn-group[aria-label=Type]{padding:0!important}.dashboard-filter-controls .btn-group[aria-label=Type]>.btn{height:30px!important;min-height:30px!important}.viewer-bar .vb-right>*{margin:0!important}.paper-table .paper-table-head,.q-table thead th{background:#f3f1ec!important}.dark-mode .paper-table .paper-table-head,.dark-mode .q-table thead th{background:#24211d!important}.errors-page .errors-list-head{background:#f3f1ec!important}.dark-mode .errors-page .errors-list-head{background:#24211d!important}.faq-section .panel-default .panel-body{padding-left:0!important}.vb-logo{font-size:19px!important}@media (max-width:767px){.vb-logo{font-size:18px!important}}.md-find-opt{height:30px;min-width:32px;padding:0 8px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-card);color:var(--ink-soft);font:600 12px var(--font-sans)}@media (min-width:768px){.file-card .ace_search{right:0!important;margin:0!important;max-width:none!important;left:0!important;padding-left:16px!important}}.admin-page .paper-table .username,.admin-page:has(.admin-users-row) .cell-anon .repo-name,.admin-users-row .repo-name{font-family:var(--font-sans)!important;font-weight:600}.paper-page input[type=checkbox]{-webkit-appearance:none;appearance:none;width:16px!important;height:16px!important;margin:0;border:1.5px solid #a39d92;border-radius:4px;background:var(--paper-card);display:inline-grid;place-content:center;cursor:pointer;vertical-align:middle}.admin-page .detail-value:is(:empty),.detail-value.is-empty{color:var(--ink-muted)!important;font-style:italic}.paper-table-dashboard .btn-icon-dots,.row-edit{width:32px!important;height:32px!important;border-radius:var(--radius-control)}.paper-table-dashboard .btn-icon-dots:hover,.row-edit:hover{background:var(--hover-bg-color)!important}.q-state-toggle input[type=checkbox]{position:absolute;opacity:0;width:1px!important;height:1px!important;pointer-events:none}.q-state-toggle{position:relative;cursor:pointer}.q-state-toggle input:not(:checked)+.q-state-chip{text-decoration:line-through}.ace_search .ace_search_field,.anonymize-page .form-control,.md-find-input,.paper-page input.form-control,.paper-page input[type=date],.paper-page input[type=text],.paper-page input[type=url],.paper-page select.form-control,.paper-page textarea{border-radius:8px!important}.page-head-row .btn-primary,.paper-page .btn-ink,.paper-page .btn-primary{min-height:40px!important}.errors-page .errors-list-head>*,.paper-table .paper-table-head [role=columnheader],.paper-table .paper-table-head>div{font-weight:500!important;font-size:12.5px!important;letter-spacing:0!important;text-transform:none!important;color:var(--ink-soft)!important}.admin-page .admin-section-header h2{font:600 18px/1.3 var(--font-sans)!important;display:inline-flex;align-items:center;gap:8px}.paper-faq-lede,.paper-page-lede{text-wrap:pretty;max-width:640px}.errors-page .status-pill.status-neutral:not([title=""])[title]{background:0 0!important;border-color:transparent!important;color:var(--ink-muted)!important}.ace_editor .ace_marker-layer .ace_selected-word{background:rgba(246,224,138,.7)!important}.errors-page .kpi-card.kpi-info{background:var(--paper-card)!important}.ov-meter.warn span{background:#b7791f!important}.ov-meter.crit span{background:#b42318!important}@media (max-width:767px){.dashboard-page .dashboard-row-meta .cell-expires,.dashboard-page .dashboard-row-meta .cell-views{display:inline-flex!important;align-items:center;font-family:var(--font-sans,Inter,sans-serif)!important;font-size:12.5px!important;color:var(--ink-soft)!important;white-space:nowrap;text-align:left!important;justify-content:flex-start!important}.dashboard-page .dashboard-row-meta .cell-expires small{font-size:inherit!important;color:inherit!important;margin-right:4px}}.dashboard-page .dashboard-quota>summary{border:1px solid var(--border-color)!important;padding:0 12px 0 10px!important;display:inline-flex!important;align-items:center;gap:8px;background:var(--paper-card)!important}.dashboard-page .dashboard-quota>summary:hover{background:var(--hover-bg-color)!important}@media (min-width:768px){.md-find-bar{padding-left:20px!important}}.q-state-filters .q-state-toggle,.q-state-filters .q-state-toggle *{font-size:12px!important}.admin-nav a.active,.admin-nav a.router-link-active{background:0 0!important;color:var(--accent)!important;box-shadow:inset 0 -2px 0 var(--accent)!important;border-radius:0!important}.admin-nav a:not(.active):hover{background:0 0!important;color:var(--color)!important;box-shadow:inset 0 -2px 0 var(--border-color)!important}.dark-mode .q-card.selected,.q-card.selected{background:var(--paper-card)!important;border-color:var(--accent)!important;box-shadow:inset 0 0 0 1px var(--accent)!important}.errors-page .kpi-card .kpi-value,.errors-page .kpi-card.kpi-info .kpi-value,.errors-page .kpi-card.kpi-warn .kpi-value{color:var(--color)!important;font-weight:600!important;font-size:28px!important}.paper-table-dashboard .btn-icon-dots,.paper-table-dashboard .row-edit{color:var(--color)!important;opacity:.72;width:32px!important;justify-content:center;border-radius:8px}.connections-page .connection-actions{flex-wrap:nowrap!important;align-items:center;gap:12px!important}.connections-page .connection-refresh{width:36px;height:36px;justify-content:center;padding:0!important;border-radius:var(--radius-control,8px)}.anonymize-page .form-control,.paper-page input.form-control,.paper-page input[type=date],.paper-page input[type=text],.paper-page input[type=url],.paper-page select.form-control,.paper-page textarea,.paper-page textarea.form-control{border-color:#c2baac!important}.dark-mode .anonymize-page .form-control,.dark-mode .paper-page input.form-control,.dark-mode .paper-page input[type=date],.dark-mode .paper-page input[type=text],.dark-mode .paper-page input[type=url],.dark-mode .paper-page select.form-control,.dark-mode .paper-page textarea{border-color:#4a453e!important}@media (max-width:767px){.paper-table-dashboard .cell-actions>.dropdown,.paper-table-dashboard .cell-actions>.dropdown>.btn-icon-dots,.paper-table-dashboard .cell-actions>.row-edit{margin-top:-4px!important;align-self:start!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;width:40px!important}}.anonymize-page .repo-access-switch{border:0!important;background:0 0!important;padding:0!important;box-shadow:none!important;gap:0!important;display:inline-flex!important;align-items:center;width:auto!important;font-size:12.5px;color:var(--ink-soft)}.anonymize-page .repo-access-switch button{background:0 0!important;border:0!important;box-shadow:none!important;padding:2px 4px!important;height:auto!important;min-height:0!important;font-size:12.5px!important;font-weight:500!important;color:var(--ink-soft)!important;flex:0 0 auto!important;border-radius:4px!important}.anonymize-page .repo-access-switch button[aria-pressed=true]{font-weight:600!important;opacity:1!important;color:var(--accent)!important;box-shadow:inset 0 -2px 0 var(--accent)!important;border-radius:0!important}.anonymize-page .repo-access-switch button .ui-icon{display:none!important}.ace_editor .ace_marker-layer .ace_selection,mark.md-find.is-current{color:inherit!important}.ace_search .ace_search_field,.md-find-input,.paper-page input:not([type=checkbox]):not([type=radio]):not([type=range]),.paper-page select,.paper-page textarea{border-color:#cfc7b9!important}.dark-mode .md-find-input,.dark-mode .paper-page input:not([type=checkbox]):not([type=radio]):not([type=range]),.dark-mode .paper-page select,.dark-mode .paper-page textarea{border-color:#48433c!important}.ace_search .ace_search_field:focus,.md-find-input:focus,.paper-page input:focus,.paper-page select:focus,.paper-page textarea:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}.anonymize-workspace .anonymize-topbar{border-bottom:1px solid var(--border-color)!important}.anonymize-workspace .type-badge{font-family:var(--font-sans)!important;letter-spacing:0!important;text-transform:none!important;font-size:12px!important;font-weight:600!important;padding:2px 8px!important;border-radius:999px!important;background:var(--hover-bg-color)!important;color:var(--ink-soft)!important;border:0!important;vertical-align:middle}.anonymize-page input[type=checkbox]{-webkit-appearance:none;appearance:none;width:16px!important;height:16px!important;margin:2px 0 0;border:1.5px solid #a39d92;border-radius:4px;background:var(--paper-card);display:inline-grid;place-content:center;cursor:pointer;flex:0 0 16px}.anonymize-page input[type=checkbox]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.anonymize-page .form-control,.anonymize-page select,.anonymize-page textarea{border-color:#cfc7b9!important}.dark-mode .anonymize-page .form-control,.dark-mode .anonymize-page select,.dark-mode .anonymize-page textarea{border-color:#48433c!important}.anonymize-page .form-control:focus,.anonymize-page select:focus,.anonymize-page textarea:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}.anonymize-form-col .anonymize-submit-bar{position:sticky;z-index:3;background:var(--paper-bg-alt)!important;margin-top:8px}.anonymize-form-col .draft-status{font-size:12.5px!important;margin:0 0 6px!important;padding:0 2px}.anonymize-page .input-group-append .btn-icon{height:40px!important;width:40px!important;min-height:40px!important;display:inline-flex!important;align-items:center;justify-content:center;border:1px solid #cfc7b9!important;border-radius:8px!important;margin-left:8px!important;background:var(--paper-card)!important}.dark-mode .anonymize-page .input-group-append .btn-icon{border-color:#48433c!important}input.form-control,select.form-control,textarea.form-control{border-color:#cfc7b9!important}.dark-mode input.form-control,.dark-mode select.form-control,.dark-mode textarea.form-control{border-color:#48433c!important}input.form-control:focus,select.form-control:focus,textarea.form-control:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}.markdown-body li .redact-chip,.markdown-body p .redact-chip{line-height:1!important;padding-top:1px!important;padding-bottom:1px!important;vertical-align:baseline}.q-range-btns{background:var(--hover-bg-color)!important;border:0!important}.q-range-btns .btn{border:0!important;background:0 0!important;color:var(--ink-soft)!important;border-radius:7px!important;height:28px!important;min-height:28px!important;padding:0 10px!important;font-size:13px!important;font-weight:500!important;box-shadow:none!important}.q-range-btns .btn.active{background:var(--paper-card)!important;color:var(--color)!important;box-shadow:0 1px 2px rgba(40,32,24,.12),0 0 0 1px rgba(40,32,24,.06)!important}.dark-mode .q-range-btns .btn.active{background:#2c2925!important;box-shadow:0 0 0 1px rgba(255,255,255,.06)!important}.ace_search .ace_search_field,.md-find-input{border-width:1px!important}@media (max-width:767px){.anonymize-page .input-group-append .btn-icon{height:44px!important;width:44px!important}}.dark-mode #sourceUrl,.dark-mode #sourceUrl-landing{border-color:#48433c!important}#sourceUrl-landing:focus,#sourceUrl:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-soft)!important}.dark-mode .q-dot.q-dot-idle,.q-dot.q-dot-idle{background:var(--ink-muted)!important}.ace_search .ace_search_counter,.md-find-count{color:var(--color)!important;font-weight:500!important;font-variant-numeric:tabular-nums;font-size:12.5px!important}.demo-output .redact-chip,.hero-mock .redact,.markdown-body h1 mark.redact-chip,.markdown-body h2 mark.redact-chip,.markdown-body h3 mark.redact-chip,.markdown-body h4 mark.redact-chip,.markdown-body mark.redact-chip,span.redact{background:var(--redact-bar)!important;color:var(--redact-ink)!important;box-shadow:none!important;border:0!important;border-radius:2px!important;padding:0 .28em!important;text-decoration:none!important;font-weight:inherit;letter-spacing:.02em;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:color .12s ease;cursor:help}.ace_text-layer .ace_redacted{background:var(--redact-bar)!important;color:var(--redact-ink)!important;border-radius:2px;box-shadow:none!important;text-decoration:none!important}.dark-mode .ace_text-layer .ace_redacted{box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)!important}.meta-redact{background:0 0!important;color:var(--ink-soft)!important;align-items:center;gap:6px}.dark-mode .demo-output .redact-chip:hover,.dark-mode .markdown-body mark.redact-chip:hover{color:var(--redact-reveal)!important}.dark-mode .meta-redact{color:var(--ink-soft)!important}.dark-mode .hero-mock-count,.hero-mock-count{background:0 0!important;color:var(--ink-soft)!important;padding:0!important;gap:6px;font-weight:500!important}.hero-mock-count::before{content:"";width:12px;height:7px}@media (max-width:767px){.dark-mode .mobile-sub b,.mobile-sub b{background:0 0!important;color:var(--ink-soft)!important;padding:0!important;gap:5px;font-weight:500!important}}.dark-mode .demo-output .redact-chip,.dark-mode .markdown-body mark.redact-chip,.dark-mode span.redact,.demo-output .redact-chip,.markdown-body mark.redact-chip,span.redact{font-family:var(--font-mono, "JetBrains Mono", monospace)!important;font-weight:500!important}.demo-output .redact-chip:hover,.markdown-body mark.redact-chip:hover,span.redact:hover{color:var(--redact-reveal)!important}.dark-mode .demo-output .redact-chip,.dark-mode .markdown-body h1 mark.redact-chip,.dark-mode .markdown-body h2 mark.redact-chip,.dark-mode .markdown-body h3 mark.redact-chip,.dark-mode .markdown-body mark.redact-chip,.dark-mode span.redact,.demo-output .redact-chip,.markdown-body h1 mark.redact-chip,.markdown-body h2 mark.redact-chip,.markdown-body h3 mark.redact-chip,.markdown-body h4 mark.redact-chip,.markdown-body mark.redact-chip,.redact-slot,span.redact{display:inline-flex!important;align-items:center!important;justify-content:flex-end!important;min-width:2.5em!important;height:1.12em!important;padding:0 .32em!important;margin:0 .06em!important;background:var(--slot-bg)!important;color:var(--slot-num)!important;box-shadow:none!important;border:0!important;border-radius:3px!important;vertical-align:-.2em!important;line-height:1!important;font-size:inherit!important;letter-spacing:0!important;text-decoration:none!important;cursor:help;white-space:nowrap}.demo-output .redact-chip{font:700 .66em/1 var(--font-sans,Inter,sans-serif)!important;font-size:12px!important}.markdown-body h1 mark.redact-chip,.markdown-body h2 mark.redact-chip{border-radius:4px!important}.files .redact-slot{min-width:2.3em!important;height:1.08em!important;vertical-align:-.18em!important}.files .file.active>a .redact-slot,.files a[aria-current] .redact-slot{background:var(--slot-bg-sel)!important}.breadcrumb .redact-slot{vertical-align:-.22em!important}.ace_editor .ace_text-layer .ace_redacted,.dark-mode .ace_editor .ace_text-layer .ace_redacted{color:transparent!important;background:var(--slot-bg)!important;box-shadow:none!important;border-radius:3px!important}.files .tree-name{align-items:center;gap:0}.files .tree-name .redact-slot{vertical-align:middle!important;margin:0 .08em!important}.ace_editor .ace_marker-layer .ace_selection,mark.md-find.is-current{background:rgba(240,196,70,.95)!important;box-shadow:0 0 0 2px rgba(196,140,20,.55)!important}.dark-mode .ace_editor .ace_marker-layer .ace_selection,.dark-mode mark.md-find.is-current{background:rgba(214,170,50,.6)!important;box-shadow:0 0 0 2px rgba(240,200,90,.55)!important}.dark-mode .markdown-body h1 mark.redact-chip,.dark-mode .markdown-body h2 mark.redact-chip,.markdown-body h1 mark.redact-chip,.markdown-body h2 mark.redact-chip{height:.78em!important;vertical-align:0!important}.viewer-bar .vb-right .vb-icon{width:34px!important;height:34px!important;margin:0!important}.viewer-bar .vb-support{margin-right:10px!important}.viewer-bar .vb-snapshot{margin-right:14px!important;gap:5px!important;font-size:12px!important}@media (max-width:767px){.mobile-sub{font-size:13px!important;color:#5f5a52!important}.dark-mode .mobile-sub{color:#b3aca1!important}}.admin-page .btn:not(.btn-ink):not(.btn-primary):not(.btn-outline-danger):not(.summary-pill),.admin-page select,.anonymize-page #branch,.anonymize-page #sourceUrl,.anonymize-page #sourceUrl-landing,.anonymize-page .form-control-lg,.anonymize-page select.form-control,.dashboard-page .dashboard-quota>summary,.dashboard-page .dropdown-toggle,.errors-page select,.q-range-btns+.btn{border-color:var(--control-border)!important}.admin-page .admin-toolbar .btn,.admin-page a.btn[href*=export],.admin-page button[title*=xport]{height:36px!important;min-height:36px!important}@media (min-width:1200px){.anonymize-workspace .anonymize-split,.anonymize-workspace .anonymize-topbar-inner{margin-left:auto!important;margin-right:auto!important;max-width:var(--page-max)!important}.anonymize-workspace .anonymize-form-col{background:0 0!important;padding-right:24px!important}}@media (max-width:767px){.anonymize-form-col .anonymize-submit-bar{margin:8px 0 0!important;padding:10px 0 calc(10px + env(safe-area-inset-bottom))!important}.anonymize-form-col .anonymize-submit-bar .btn{border-radius:10px!important}}.img-unavailable{padding:6px 10px;border-radius:8px;display:flex!important;justify-content:center;width:100%;min-height:72px;font:500 12.5px var(--font-sans,Inter,sans-serif)!important}.anonymize-form-col .draft-status{color:var(--ink-soft)!important}.errors-page .errors-toolbar .form-control,.errors-page .errors-toolbar select,.errors-page form select{border-color:var(--control-border)!important}@media (min-width:1200px){.anonymize-workspace .anonymize-form-col,.anonymize-workspace .anonymize-form-col form{padding-left:0!important}}@media (min-width:1200px){.anonymize-workspace .anonymize-form-col .anonymize-submit-bar{background:#faf9f6!important}}.markdown-body li mark.redact-chip,.markdown-body p mark.redact-chip,.markdown-body td mark.redact-chip,span.redact{display:inline-block!important;height:1.08em!important;line-height:1.08em!important;min-width:2.5em!important;text-align:right!important;padding:0 .34em!important}.breadcrumb .redact-slot i,.files .redact-slot i,.markdown-body li mark.redact-chip i,.markdown-body p mark.redact-chip i,.markdown-body td mark.redact-chip i,span.redact i{line-height:inherit!important;vertical-align:top!important;font-weight:700!important;letter-spacing:.01em;font-size:max(11px,.8em)!important}.errors-page [class*=seg-info]{opacity:.45}.connections-grid{align-items:stretch!important}.connections-grid>section .connection-installations{border-bottom:0!important;margin-top:16px!important;border-top:0!important;padding-top:0!important}.navbar .nav-link.active,header .nav-link.active{color:var(--color)!important;box-shadow:inset 0 -2px 0 var(--accent)!important;border-bottom-color:transparent!important}@media (max-width:767px){.anonymize-topbar .paper-crumbs{display:block!important;margin-bottom:4px;font-size:13px}}.anonymize-form-col .draft-discard{background:0 0;border:0;padding:0 0 0 6px;font-size:12.5px;font-weight:500;color:var(--color)!important;text-decoration:underline;text-underline-offset:3px}.anonymize-form-col .draft-discard:hover{color:#b42318!important}@media (max-width:767px){.mobile-sub b{font-weight:400!important;color:inherit!important}}.demo-output .redact-chip,span.redact{display:inline-block!important;height:1.15em!important;line-height:1.15em!important}.dashboard-page .dashboard-quota .quota-summary-ring{display:none!important}@media (max-width:767px){.paper-table-dashboard .cell-actions>.row-open{grid-area:open;width:40px!important;align-self:start;margin-top:-4px;display:none!important}}.demo-output .redact-chip{height:1.3em!important;line-height:1.3em!important;min-width:3em!important;padding:0 .4em!important}.paper-table-dashboard .cell-actions>.copy-url{display:inline-flex!important;align-items:center!important;justify-content:center!important;height:36px!important;min-width:0!important;max-width:none!important;border-radius:8px!important;box-shadow:none!important}.paper-table-dashboard .btn-icon-dots,.paper-table-dashboard .row-edit{height:32px!important;display:inline-flex!important;align-items:center}.paper-table-dashboard .btn-icon-dots:hover,.paper-table-dashboard .row-edit:hover{background:var(--hover-bg-color)!important}@media (max-width:767px){.anonymize-page .form-grid-2>.form-group{margin-bottom:16px!important}}.vb-help{position:relative;display:inline-flex}.vb-help-btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px;border:0;border-radius:8px;background:0 0;color:var(--ink-soft);font:500 13px var(--font-sans,Inter,sans-serif);cursor:pointer}.vb-help-btn:hover,.vb-help-btn[aria-expanded=true]{background:var(--hover-bg-color);color:var(--color)}.vb-help-menu{position:absolute;top:calc(100% + 8px)!important;right:0;left:auto;min-width:250px;z-index:50}.vb-help-menu a{display:flex;gap:10px;align-items:flex-start}@media (max-width:767px){.viewer-bar .vb-help{display:none!important}}.paper-table-dashboard .paper-table-head .col-link{padding-left:0!important}.dark-mode .form-control::placeholder,.dark-mode input::placeholder,.dark-mode textarea::placeholder{color:#6f695f!important}.q-state-filters [class*=active]>.q-dot{background:var(--accent)!important}@media (max-width:767px){.mobile-sub b{padding-left:0!important}}.markdown-body h1 mark.redact-chip i,.markdown-body h2 mark.redact-chip i{font-weight:600!important;font-size:.58em!important}.dark-mode .markdown-body h1 mark.redact-chip,.dark-mode .markdown-body h2 mark.redact-chip,.markdown-body h1 mark.redact-chip,.markdown-body h2 mark.redact-chip{min-width:1.6em!important;padding:0 .18em!important}.readme-toc a.lvl-3{font-size:12.5px!important;color:#6e685f!important}.dark-mode .readme-toc a.lvl-3{color:#9c958a!important}.file-card-head .view-tools{margin-right:10px!important;padding-right:10px!important;border-right:1px solid var(--border-color)!important}.markdown-body li mark.redact-chip,.markdown-body p mark.redact-chip,.markdown-body td mark.redact-chip{vertical-align:-.1em!important}.hero-mock .is-active,.hero-mock [class*=active]{position:relative}@media (max-width:767px){.paper-table-dashboard .cell-actions>.dropdown,.paper-table-dashboard .cell-actions>.dropdown>.btn-icon-dots,.paper-table-dashboard .cell-actions>.row-edit{height:40px!important}.dashboard-page .dashboard-row-meta .cell-expires,.dashboard-page .dashboard-row-meta .cell-status,.dashboard-page .dashboard-row-meta .cell-views{padding:0!important;margin:0!important}.dashboard-page .dashboard-row-meta .status-line{padding:0!important;margin:0!important}}.connection-installations,.connection-installations li{border:0!important;padding-bottom:0!important;margin-bottom:0!important}.connections-page .connection-refresh{margin-left:0!important}.anonymize-form-col .anonymize-submit-bar{border-top:1px solid var(--border-color)!important;box-shadow:0 -6px 12px -10px rgba(40,32,24,.18)}.img-unavailable{align-items:center;gap:8px;border:1px solid var(--border-color)!important;border-style:solid!important;background:var(--hover-bg-color);color:var(--ink-soft)}.img-unavailable::before{content:"";width:16px;height:13px;border:1.5px solid currentColor;border-radius:2px;opacity:.7;background:linear-gradient(135deg,transparent 55%,currentColor 55% 62%,transparent 62%)}@media (min-width:1200px){.reading-layout{grid-template-columns:minmax(0,664px) 176px!important;gap:40px!important}.md-find-bar{padding-left:max(20px,calc((100% - 880px)/ 2))!important}}.file-card-head .tb-file{margin-left:8px!important;position:relative}.tree-search-kbd{border:1px solid var(--border-color)!important;background:var(--paper-card)!important}.errors-page .dot-info,.errors-page .seg-info{background:#cfc9bf!important;opacity:1!important}.dark-mode .errors-page .dot-info,.dark-mode .errors-page .seg-info{background:#4a453e!important}.errors-page .dot-error,.errors-page .seg-error{background:#b42318!important}.errors-page .dot-warn,.errors-page .seg-warn{background:#b7791f!important}.paper-table-dashboard .copy-url{box-shadow:inset 0 0 0 1px var(--control-border,#cfc7b9)!important;background:var(--paper-card)!important}.paper-table-dashboard .copy-url .ui-icon,.paper-table-dashboard .copy-url svg{width:15px!important;height:15px!important;color:var(--color)!important;opacity:.75}.paper-table-dashboard .copy-url:hover{background:var(--hover-bg-color)!important}@media (min-width:1200px){.anonymize-workspace .anonymize-preview-col{padding-right:0!important}}.anonymize-submit-bar .draft-status{display:block;margin:0 0 8px!important;font-size:12.5px!important;white-space:nowrap;flex:0 0 auto!important;max-width:none!important;order:-1}@media (max-width:767px){.paper-table-dashboard .cell-actions>.row-open{height:40px!important}}.overview-page :is(.ov-kpi,.ov-card,.kpi-card):has(.ov-meter.crit){border-color:rgba(180,35,24,.45)!important;box-shadow:inset 3px 0 0 #b42318!important}.overview-page :is(.ov-kpi,.ov-card,.kpi-card):has(.ov-meter.warn):not(:has(.ov-meter.crit)){border-color:rgba(183,121,31,.45)!important;box-shadow:inset 3px 0 0 #b7791f!important}.overview-page .ov-kpi-card:has(.ov-meter.crit){border-color:rgba(180,35,24,.45)!important;box-shadow:inset 3px 0 0 #b42318!important}.overview-page .ov-kpi-card:has(.ov-meter.warn):not(:has(.ov-meter.crit)){border-color:rgba(183,121,31,.45)!important;box-shadow:inset 3px 0 0 #b7791f!important}@media (max-width:767px){.paper-table-dashboard .cell-anon,.paper-table-dashboard .cell-anon a,.paper-table-dashboard .cell-anon strong,.paper-table-dashboard .cell-anon>*{min-width:0}}.ace-chrome .ace_keyword,.ace-chrome .ace_storage,.ace-chrome .ace_storage.ace_type{color:#7a3e6b!important}.dark-mode .ace_editor .ace_keyword,.dark-mode .ace_editor .ace_storage{color:#d3a3c6!important}.paper-page-title{text-wrap:balance}@media (min-width:1200px){.readme-toc{margin-top:-18px!important}}@media (min-width:768px){.leftCol-search{min-height:52px!important;border-bottom:1px solid var(--border-color)!important;margin-bottom:6px!important}}.anonymize-form-col .anonymize-submit-bar{margin-bottom:0!important}.errors-page .kpi-filter{cursor:pointer;transition:border-color .12s,box-shadow .12s}.errors-page .kpi-filter:hover{border-color:var(--control-border,#cfc7b9)!important}.errors-page .kpi-filter.is-selected{border-color:var(--accent)!important;box-shadow:inset 0 0 0 1px var(--accent)!important}.readme-toc a:not(.is-active){color:#4f4a43!important}.ace_search .ace_search_field:focus,.md-find-input:focus{box-shadow:0 0 0 2px var(--accent-soft)!important;border-color:var(--accent)!important}@media (max-width:767px){.dashboard-page #search,.dashboard-page .dashboard-heading-actions .btn,.dashboard-page .dashboard-quota>summary{height:40px!important;min-height:40px!important}}.admin-page .detail-value.is-empty,.admin-page .is-unsynced{color:#9a9389!important;font-style:normal!important}@media (min-width:768px){.anonymize-form-col .anonymize-submit-bar{display:flex!important;align-items:center;gap:16px}.anonymize-submit-bar .draft-status{margin:0!important;line-height:1.35}.anonymize-submit-bar .btn-ink{flex:1 1 auto}}.dark-mode .viewer-bar{background:#181614!important}@media (max-width:767px){.file-card-head{min-height:48px!important;align-items:center!important;padding-top:4px!important;padding-bottom:4px!important}.file-card-head .file-card-path{flex-direction:row!important;align-items:center!important;min-width:0}.file-card-head .file-card-path .breadcrumb{min-width:0;flex:0 1 auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mobile-sub{margin:0!important;white-space:nowrap}.mobile-sub>span{display:none!important}}.paper-features,.paper-qa,.paper-section-head,.paper-stats{margin-top:88px!important}.paper-hero+.paper-stats{margin-top:40px!important}@media (min-width:1100px){.paper-faq-help{display:block!important}}.paper-faq-help{display:none}.paper-faq-help-card{position:sticky;top:96px;border:1px solid var(--border-color);background:var(--paper-card);padding:18px;border-radius:12px!important}.paper-faq-help-card strong{display:block;font-size:14px;margin-bottom:6px}.q-throughput .q-range-btns{position:absolute!important;top:12px;right:16px;float:none;margin:0!important;width:auto!important;display:inline-flex!important;z-index:2}.admin-page .paper-table{border:1px solid var(--border-color)!important;border-radius:12px!important;overflow:hidden;background:var(--paper-card)}.q-throughput{position:relative}.dark-mode .readme-toc a:not(.is-active){color:#b8b1a6!important}@media (min-width:1100px){.readme-toc{margin-top:-28px!important;top:92px!important}}.dark-mode .leftCol,.dark-mode .leftCol .leftCol-search{background:#1f1d1a!important}@media (max-width:991px){.navbar .nav-signin-m{display:inline-flex;align-items:center;gap:6px;background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important;padding:0 12px!important;font-weight:500}.dark-mode .navbar .nav-signin-m{background:#237a71!important;border-color:#237a71!important;color:#fff!important}}@media (max-width:767px){.viewer-bar .vb-right>.vb-icon,.viewer-bar .vb-right>.vb-support{margin:0!important}}@media (min-width:768px){.explorer-page>.leftCol .leftCol-search,.leftCol-search{height:53px!important;padding:0 12px!important;display:flex!important;align-items:center!important;box-sizing:border-box}.leftCol-search .tree-search-box{height:36px!important;padding-top:0!important;padding-bottom:0!important;align-items:center}.leftCol-search .search-zip{height:36px!important}}@media (min-width:1100px){.paper-faq-help-card{margin-top:2px!important}}.viewer-bar .vb-signin,.viewer-bar .vb-signin:hover{background:var(--accent)!important;color:#fff!important;box-shadow:none!important;border:0!important}.dark-mode .viewer-bar .vb-signin,.dark-mode .viewer-bar .vb-signin:hover{background:#237a71!important;color:#fff!important}@media (min-width:992px){.paper-features,.paper-qa,.paper-section-head,.paper-stats{margin-top:72px!important}.demo{margin-bottom:0!important}}.ace-chrome .ace_gutter-cell{color:#57524a!important}.dark-mode .ace_editor .ace_gutter-cell{color:#ada69b!important}.readme-toc a.lvl-3:not(.is-active){color:#57524a!important}.paper-stat-delta,.paper-stats small{color:#57524a!important}.nav-heart-m,.nav-heart-m:focus,.nav-heart-m:hover{background:0 0!important;box-shadow:none!important;border:0!important}@media (min-width:992px){.paper-section-head+.paper-features{margin-top:32px!important}}@media (min-width:1100px){.paper-features>:first-child{padding-right:28px}}@media (min-width:1100px){.fm-input-sm{width:118px!important}}@media (min-width:768px){.viewer-bar .vb-right>*{margin:0!important}.viewer-bar .vb-help-btn,.viewer-bar .vb-icon,.viewer-bar .vb-signin,.viewer-bar .vb-support{height:32px!important;min-height:32px!important;box-sizing:border-box}.viewer-bar .vb-snapshot{margin-right:8px!important}}.dark-mode .hero-mock{border-color:#3a3631!important;background:#24211d!important}@media (min-width:768px){.viewer-bar .vb-right .vb-icon{width:32px!important;height:32px!important}}.pane-url .meta-redact{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-sans,Inter,system-ui,sans-serif)!important;font-size:12px}@media (min-width:768px){.file-card-head .tb-file,.tb-file{margin-left:16px!important}}.demo-panes .pane-header{height:40px!important;align-items:center;padding-top:0!important;padding-bottom:0!important}.viewer-bar .vb-snapshot{color:var(--ink-soft)!important}.demo-terms .label,.demo-terms label,.fm-label,.pane-label{letter-spacing:0!important}@media (min-width:992px){.navbar .nav-link:not(.btn-signin){font-size:14px!important}}.paper-faq-toc a.active{color:var(--accent)!important;font-weight:500}.dark-mode .paper-faq-toc a.active{color:#7fcfc2!important}.dark-mode .ace_redacted,.dark-mode .redact-chip,.dark-mode .redact-slot{box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)!important}@media (min-width:768px){.file-card-meta{font-size:13px!important}}.leftCol-search .search-zip{width:auto!important;padding:0 9px!important;gap:4px;display:inline-flex!important;align-items:center;justify-content:center}.search-zip-label{letter-spacing:.02em;font-size:12px!important;font-weight:500!important}.navbar .nav-support,.navbar .nav-support-inline{font-weight:400!important;color:var(--ink-soft)!important}.dark-mode .hero-mock-tree{background:#1e1c19!important}.paper-faq-lede{font-size:18px!important;line-height:1.55!important}@media (min-width:768px){.file-card-actions>.btn-ghost.btn-icon-only,.file-card-actions>.btn-toggle{height:32px!important;width:32px!important;min-height:32px!important;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center}}.tree-search-kbd{color:#57524a!important}.dark-mode .tree-search-kbd{color:#ada69b!important}.ace_search_counter,.md-find-count{font-variant-numeric:tabular-nums}.demo-panes .pane-label,.demo-panes .pane-url{font-size:13px!important}.dark-mode .files .file.active>a{background:rgba(255,255,255,.1)!important}.demo-output .redact-chip{vertical-align:-.16em!important}.hero-mock .redact,span.redact{vertical-align:-.12em!important}.tb-seg-icon .ui-icon{width:16px!important;height:16px!important}.file-card-actions>.btn-find.is-on{box-shadow:inset 0 0 0 1px rgba(31,106,100,.55)!important;border-color:transparent!important}.demo-panes>:last-child .pane-header{background:#f3efe8!important}.demo-terms input:focus,.demo-terms textarea:focus{outline:0!important;border-color:var(--accent)!important;box-shadow:0 0 0 3px rgba(31,106,100,.18)!important}.markdown-body>h1:first-child{margin-top:8px!important;margin-bottom:18px!important}.tb-menu-label{padding:8px 14px 4px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#57524a;padding-left:42px!important}.tb-menu .tb-menu-toc{overflow:hidden;text-overflow:ellipsis;display:block;text-align:left;white-space:normal!important;font-size:14px!important;line-height:1.35;padding-top:7px!important;padding-bottom:7px!important;max-width:none!important}.files .file.active>a .redact-slot{background:var(--slot-bg)!important}.tb-menu .tb-menu-toc.is-active{color:var(--accent)!important;font-weight:500}.dark-mode .tb-menu .tb-menu-toc.is-active{color:#7fcfc2!important}@media (max-width:767px){.markdown-body>h1:first-child{margin-top:0!important;margin-bottom:14px!important}}.files .file.active>a{background:#e8e5dd!important}.dark-mode .hero-mock{box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 0 0 1px rgba(255,255,255,.1),0 18px 40px -18px rgba(0,0,0,.7)!important}.paper-faq-lede{text-wrap:balance;max-width:640px}.pane-edit-hint{font-weight:400;color:#6e685f}.demo-panes>:first-child:focus-within,.demo-panes>:first-child:hover{border-color:#cfc7b9!important}.tb-menu-note{font-size:13px!important}.nav-theme-m{display:none}@media (max-width:991px){.nav-theme-m{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:0;background:0 0;color:var(--ink-soft);padding:0;margin-left:2px}.nav-theme-m .ui-icon{width:18px;height:18px}.navbar .nav-signin-m{height:32px!important;margin-left:6px!important}}.tb-menu .tb-menu-toc.lvl-2{padding-left:42px!important}.tb-menu .tb-menu-toc.lvl-3{padding-left:58px!important}@media (max-width:991px){.navbar-collapse .nav-item:has(>.nav-icon){display:none!important}}.file-card-head .tb-menu>button.tb-menu-toc,.tb-menu>button.tb-menu-toc{font-size:14px!important;min-height:36px!important;padding-top:8px!important;padding-bottom:8px!important;line-height:1.35!important;height:auto!important}.tb-menu>.tb-menu-label{padding-left:40px!important}.tb-toc-m{display:none;position:relative}@media (max-width:767px){.tb-toc-m{display:inline-flex}.file-card-head .tb-toc-btn{box-shadow:none!important;background:0 0!important;width:36px;height:36px}.tb-toc-m .tb-menu{min-width:260px;max-width:calc(100vw - 28px);right:-76px!important}}.dark-mode .file-card-actions>.btn-find.is-on,.dark-mode .file-card-actions>.btn-toggle.is-on{box-shadow:inset 0 0 0 1px #7fcfc2!important;color:#7fcfc2!important}.tb-toc-menu>.tb-menu-label{padding-left:16px!important}.files .tree-icon-file,.files .tree-icon-folder{width:16px!important;min-width:16px;display:inline-flex;justify-content:center}.ace_search .ace_button.checked,.ace_search .ace_button[aria-checked=true],.ace_search .ace_button[checked]{color:var(--accent)!important;box-shadow:inset 0 0 0 1px rgba(31,106,100,.55)!important;background:0 0!important}.dark-mode .ace_search .ace_button.checked,.dark-mode .ace_search .ace_button[aria-checked=true],.dark-mode .ace_search .ace_button[checked]{color:#7fcfc2!important;box-shadow:inset 0 0 0 1px #7fcfc2!important}@media (max-width:991px){.navbar .nav-heart-m{margin-left:auto!important}.navbar .nav-heart-m+.nav-theme-m{margin-left:4px!important}.navbar .nav-theme-m+.nav-signin-m{margin-left:4px!important}.navbar .navbar-toggler{margin-left:4px!important}}.tb-menu{box-shadow:0 12px 32px -8px rgba(26,24,21,.28),0 0 0 1px rgba(26,24,21,.08)!important}.tb-menu [role=menuitemcheckbox]{position:relative;padding-right:40px!important}.tb-menu [role=menuitemcheckbox][aria-checked=true]::after{content:"";position:absolute;right:18px;top:50%;width:10px;height:5px;border-left:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:translateY(-70%) rotate(-45deg)}@media (max-width:767px){.ace_editor .ace_gutter-cell{padding-left:6px!important;padding-right:8px!important}}.files .redact-slot i{font-size:11px!important}.tb-menu-meta{padding-top:0!important;padding-left:42px!important}@media (max-width:991px){.navbar .navbar-brand{font-size:18px!important;margin-right:16px!important}}.tb-menu .tb-menu-meta{white-space:nowrap;font-size:12px!important;padding-bottom:8px!important;padding-left:38px!important}.paper-cta{padding:40px 0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:20px;align-items:center;border-top:0!important;padding-top:0!important;padding-bottom:0!important;margin-top:96px!important;margin-bottom:88px!important}.paper-cta-actions{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.paper-cta-actions .btn-hero{display:inline-flex;align-items:center;gap:10px}@media (max-width:991px){.paper-cta{grid-template-columns:1fr;row-gap:20px;margin-top:72px!important;margin-bottom:64px!important}}.tb-menu .tb-menu-meta,.tb-menu-note{color:#57524a!important}.dark-mode .tb-menu .tb-menu-meta,.dark-mode .tb-menu-note{color:#ada69b!important}.ace_search .ace_search_field{height:32px!important;border:1px solid var(--control-border,#cfc7b9)!important;box-shadow:none!important}.ace_search .ace_search_field:focus-visible{border-color:var(--accent)!important;box-shadow:0 0 0 3px rgba(31,106,100,.16)!important}.ace_search .ace_button,.ace_search .ace_searchbtn,.ace_search .ace_searchbtn_close{height:32px!important;min-height:32px!important;box-sizing:border-box;display:inline-flex!important;align-items:center;justify-content:center}.ace_search .ace_searchbtn_close{width:32px!important;border-radius:6px}.ace_search .ace_searchbtn_close:hover{background:var(--hover-bg-color)!important}.file-card-head .tb-toc-btn.is-on{background:0 0!important;box-shadow:inset 0 0 0 1px rgba(31,106,100,.55)!important;color:var(--accent)!important}@media (min-width:1100px){.paper-hero-shot{margin-right:0!important}.paper-hero-shot .paper-frame{border-right:1px solid var(--border-color)!important;border-radius:var(--radius-surface)!important}.hero-mock{font-size:14px;min-height:0!important}.hero-mock-row{font-size:13.5px!important}.hero-mock-doc-bar span{font-size:13px!important}}@media (max-width:1199px){.reading-layout{grid-template-columns:minmax(0,760px)!important}}@media (max-width:767px){.reading-layout{grid-template-columns:minmax(0,1fr)!important;padding:0 16px!important}}.reading-layout>.file-content.markdown-body{min-width:0!important;max-width:100%!important}.paper-cta+.paper-footer{margin-top:0!important}@media (max-width:767px){.dashboard-heading-actions .dashboard-quota .quota-panel{left:0!important;right:auto!important;width:calc(100vw - 36px)!important}}@media (max-width:767px){.errors-page .errors-toolbar{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px!important;align-items:center}.errors-page .errors-toolbar .search-wrap{grid-column:1/-1;max-width:none!important;min-width:0!important;width:100%}.errors-page .errors-toolbar .select-wrap{display:flex!important;min-width:0}}.overview-page .ov-views{display:inline-flex;gap:2px;padding:3px;margin:4px 0 16px;border-radius:9px;background:var(--paper-sunk,rgba(0,0,0,.05))}@media (max-width:767px){.overview-page .ov-views{display:flex}}@media (max-width:991.98px){.navbar .navbar-collapse{padding:8px 10px 12px!important}.navbar .navbar-collapse .navbar-nav{gap:2px!important;margin:0!important;padding:0!important}.navbar .navbar-collapse .nav-item{margin:0!important;padding:0!important;width:100%!important}.navbar .navbar-collapse .nav-link,.navbar .navbar-collapse .user-menu .dropdown-item{display:flex!important;align-items:center!important;gap:12px!important;width:100%!important;min-height:44px;padding:10px 12px!important;margin:0!important;border:0!important;border-radius:8px!important;font:500 15px/1.2 var(--font-sans)!important;color:var(--color)!important;background:0 0!important;box-shadow:none!important;text-decoration:none!important;white-space:normal}.navbar .navbar-collapse .nav-link:hover,.navbar .navbar-collapse .user-menu .dropdown-item:hover{background:rgba(0,0,0,.04)!important}.navbar .navbar-collapse .nav-link.active{background:rgba(0,0,0,.06)!important;font-weight:600!important}.dark-mode .navbar .navbar-collapse .nav-link:hover,.dark-mode .navbar .navbar-collapse .user-menu .dropdown-item:hover{background:rgba(255,255,255,.05)!important}.dark-mode .navbar .navbar-collapse .nav-link.active{background:rgba(255,255,255,.08)!important}.navbar .navbar-collapse .nav-link .ui-icon,.navbar .navbar-collapse .user-menu .dropdown-item .fab,.navbar .navbar-collapse .user-menu .dropdown-item .ui-icon{flex:none;width:18px!important;height:18px!important;margin:0!important;color:var(--ink-soft)!important;font-size:16px;text-align:center}.navbar .navbar-collapse .nav-signin-item{display:none!important}.navbar .navbar-collapse .user-chip-wrap{margin-top:8px!important;padding-top:8px!important;border-top:1px solid var(--border-color)!important}.navbar .navbar-collapse .user-chip{pointer-events:none;font-weight:600!important}.navbar .navbar-collapse .user-menu{display:block!important;position:static!important;transform:none!important;float:none;min-width:0!important;margin:0!important;padding:0!important;border:0!important;box-shadow:none!important;background:0 0!important}.navbar .navbar-collapse .user-menu .dropdown-header,.navbar .navbar-collapse .user-menu .um-extra{display:none!important}}.paper-table .paper-table-row.repo-inactive .repo-name{color:var(--ink-soft)!important}.paper-table .paper-table-row.repo-inactive :is(.anonymous-id,.commit-hash,.cell-conf,.cell-views,.cell-expires,.status-sub){color:var(--ink-muted)!important}.status-line.status-ended{display:inline-flex!important;align-items:center;gap:5px;padding:2px 8px 2px 6px;border-radius:999px;background:rgba(0,0,0,.06);color:var(--ink-soft)}.status-line.status-ended .status-word{font-size:12.5px!important;font-weight:600!important;color:inherit!important}.status-line.status-ended .status-ended-icon{width:13px;height:13px;flex:none}.status-line.status-ended-expired{background:rgba(245,158,11,.1);color:#b45309}.dark-mode .status-line.status-ended{background:rgba(255,255,255,.08);color:var(--ink-soft)}.dark-mode .status-line.status-ended-expired{background:rgba(245,158,11,.16);color:#fbbf24}input.form-control[type=date]{-webkit-appearance:none;appearance:none;display:block;box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:40px;min-height:40px;line-height:1.25;text-align:left}.paper-table-dashboard .cell-actions>.copy-url{width:36px!important;padding:0!important;margin:0!important;border:0!important;background:0 0!important;color:var(--ink-soft)!important}.paper-table-dashboard .cell-actions>.copy-url:hover{background:rgba(0,0,0,.05)!important;color:var(--color)!important}.dark-mode .paper-table-dashboard .cell-actions>.copy-url:hover{background:rgba(255,255,255,.07)!important}.paper-table-dashboard .cell-actions>.copy-url .project-type-svg{margin:0!important;width:16px!important;height:16px!important}@media (max-width:767px){.paper-table-dashboard .cell-actions>.copy-url{width:40px!important;height:40px!important}}@media (max-width:767px){.paper-table-dashboard .anon-title{display:block!important;min-width:0}}.ace_editor .ace_marker-layer .ace_selection,.dark-mode .ace_editor .ace_marker-layer .ace_selection{box-shadow:none!important;border-radius:0!important}.ace_editor .ace_marker-layer .ace_selection.ace_br15{box-shadow:inset 0 0 0 1px rgba(170,115,15,.75)!important;border-radius:3px!important}.ace_editor.ace-chrome .ace_marker-layer .ace_selection,.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection{box-shadow:none!important;border-radius:0!important}.file-card .file-card-head{position:relative}.goto-pop{position:absolute;z-index:30;top:calc(100% + 6px);right:12px;width:260px;max-width:calc(100vw - 24px);margin:0;padding:12px;display:grid;gap:6px;background:var(--paper-card,#fff);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 12px 32px rgba(26,24,21,.16)}.goto-label{margin:0;font:600 12.5px var(--font-sans);color:var(--color)}.goto-input{width:100%;height:36px;padding:0 10px;border:1px solid var(--control-border,var(--border-color));border-radius:7px;background:var(--bg-color,transparent);color:var(--color);font:500 14px var(--font-mono,ui-monospace,monospace);outline:0}.goto-input:focus{border-color:var(--accent,#1f6b66);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent,#1f6b66) 22%,transparent)}.goto-input[aria-invalid=true]{border-color:#b91c1c}.goto-hint{font-size:12px;color:var(--ink-soft)}.goto-hint.is-error{color:#b91c1c}.dark-mode .goto-input[aria-invalid=true]{border-color:#f87171}.dark-mode .goto-hint.is-error{color:#f87171}.anonymize-form-col .anonymize-submit-bar:has(>.checkout-return-note){flex-wrap:wrap;row-gap:6px!important}.anonymize-submit-bar .checkout-return-note{order:3;flex:1 0 100%;margin:0!important;font-size:12px;text-align:center;white-space:normal}.paper-table>.paper-table-head{border-top-left-radius:inherit;border-top-right-radius:inherit}.paper-table>:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.app-header .navbar.navbar-expand-lg,.app-header.is-contained .navbar.navbar-expand-lg{padding-left:max(var(--page-gutter),calc((100% - var(--page-max))/ 2))!important;padding-right:max(var(--page-gutter),calc((100% - var(--page-max))/ 2))!important}.dashboard-page.container,.paper-faq,.paper-hero,.paper-page,.paper-page.container,.repository-task{width:100%;max-width:calc(var(--page-max) + 2 * var(--page-gutter))!important;padding-left:var(--page-gutter)!important;padding-right:var(--page-gutter)!important;margin-left:auto;margin-right:auto}.paper-wrap{width:min(var(--page-max),calc(100% - 2 * var(--page-gutter)))!important}.paper-footer{padding-left:max(var(--page-gutter),calc((100% - var(--page-max))/ 2))!important;padding-right:max(var(--page-gutter),calc((100% - var(--page-max))/ 2))!important}.paper-page-title,.repository-task>h1,.user-settings .settings-title h1{font:600 28px/1.2 var(--font-sans)!important;letter-spacing:-.02em!important}@media (max-width:767px){.paper-page-title,.repository-task>h1,.user-settings .settings-title h1{font-size:24px!important}}.auth-intro .paper-page-title,.paper-empty-title{font-family:var(--font-serif)!important;font-weight:400!important;font-size:clamp(44px,5vw,64px)!important;line-height:1.04!important;letter-spacing:-.02em!important;text-wrap:balance}.auth-intro .paper-page-title em,.paper-empty-title em{font-style:italic!important;color:var(--accent)!important}@media (max-width:767px){.auth-intro .paper-page-title,.paper-empty-title{font-size:42px!important}}.repository-task .task-trail{margin:24px 0 28px;padding:0 0 14px}.repository-task .btn{display:inline-flex;align-items:center;gap:8px;height:var(--control-h);min-height:var(--control-h);padding:0 16px;border-radius:var(--radius-button);font-size:14px;font-weight:500}.repository-task .btn .ui-icon{width:16px;height:16px;margin:0!important}.repository-task .share-link-row{align-items:stretch!important;gap:12px!important;flex-direction:column!important}@media (max-width:767px){.repository-task .share-link-row .btn{justify-content:center}}.anonymize-landing .task-trail{margin:20px 0 28px;padding:0 0 14px}.anonymize-landing .source-url-label-row{display:flex;align-items:baseline!important;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}.anonymize-landing .source-url-label-row .paper-field-label{margin:0!important}.anonymize-landing .source-url-label-row .repo-access{margin:0!important;align-self:baseline}.dashboard-heading .paper-page-lede{display:block!important;margin:4px 0 0;color:var(--ink-muted)}.dashboard-filter-controls .btn-group,.dashboard-filters-toggle,.dashboard-heading-actions .btn-ink,.dashboard-page #dropdownSort,.dashboard-page #dropdownStatus,.dashboard-page #search,.dashboard-page .dashboard-quota>summary{height:var(--control-h)!important;min-height:var(--control-h)!important;border-radius:var(--radius-button)!important;box-sizing:border-box}.dashboard-filter-controls .btn-group{align-items:center}.dashboard-filter-controls .btn-group .btn{height:32px!important;min-height:32px!important;border-radius:6px!important}@media (min-width:768px){.paper-table-dashboard .cell-actions>.copy-url{grid-column:1;margin:0!important;grid-row:1}}.paper-table .paper-table-row.repo-error{border-left:0!important;box-shadow:inset 3px 0 0 var(--status-error)!important}.paper-table-dashboard .cell-views,.paper-table-dashboard .cell-views *{font-family:var(--font-sans)!important;font-variant-numeric:tabular-nums}.dark-mode .type-badge.type-coauthor,.type-badge.type-coauthor{background:var(--accent-soft)!important;color:var(--accent)!important;border-color:transparent!important}@media (max-width:767px){.paper-table.paper-table-dashboard .paper-table-row,.paper-table.paper-table-dashboard .paper-table-row.repo-inactive{grid-template-columns:minmax(0,1fr) 44px 44px!important;grid-template-areas:"name copy more" "meta meta meta";column-gap:0!important;row-gap:6px!important}.paper-table-dashboard .cell-actions>.copy-url{margin:0!important}.paper-table-dashboard .cell-actions>.row-edit:not(.row-open){grid-area:edit!important;margin:0!important}.paper-table-dashboard .cell-actions>.dropdown{margin:0!important}.paper-table-dashboard .cell-actions>:is(.copy-url,.row-edit,.dropdown){align-self:start}.paper-table-dashboard .type-badge.type-coauthor{display:inline-block;white-space:nowrap;margin-left:6px;vertical-align:1px}.dashboard-page .paper-table-dashboard .dashboard-row-meta{display:flex!important;min-width:0!important;align-self:center}.paper-table-dashboard .cell-actions>.dropdown>.btn-icon-dots,.paper-table-dashboard .cell-actions>:is(.copy-url,.row-edit,.dropdown){width:36px!important;height:36px!important;min-height:36px!important}.paper-table-dashboard .dashboard-row-meta>.cell-status{display:contents!important}.paper-table-dashboard .dashboard-row-meta>.cell-views{order:2;margin-left:16px!important}.paper-table-dashboard .dashboard-row-meta .status-sub:not(.status-sub-date){order:4;flex:1 0 100%;margin:0!important;white-space:normal!important}.paper-table-dashboard .dashboard-row-meta .project-attention-action{order:5;margin:0!important}.paper-table-dashboard .dashboard-row-meta .status-sub-date{display:none!important}.paper-table-dashboard .dashboard-row-meta>*{min-width:0;margin:0!important}}@media (max-width:639px){.fm-form{grid-template-columns:minmax(0,1fr)!important;padding:18px 16px!important}.fm-form>*,.fm-row>*{min-width:0}.fm-input{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fm-input-sm{width:auto!important;max-width:180px}.fm-actions{flex-direction:column;align-items:stretch!important;gap:10px!important}.fm-btn{display:block;width:100%;text-align:center}}@media (max-width:767px){.paper-feature-tab{min-width:0;min-height:52px;padding:8px 4px 10px!important}.paper-feature-tab .paper-eyebrow{display:flex!important;flex-direction:column;align-items:center;gap:2px;margin:0!important}.paper-feature-tab .pf-sep{display:none}.paper-feature-tab .pf-num{font-size:11px;color:var(--ink-muted)}.paper-feature-tab .pf-name{font:600 13px/1.3 var(--font-sans);letter-spacing:0;text-transform:none;color:var(--ink-soft)}.paper-feature.is-on .paper-feature-tab .pf-name{color:var(--color)}.paper-feature-panel{margin-top:24px!important}.paper-feature.is-on .paper-feature-more{margin-top:24px!important}}.demo-input-wrap .demo-backdrop{padding-bottom:16px!important}.demo-input-wrap .demo-input{height:100%!important}@media (max-width:639px){.demo-panes .pane-header{height:auto!important;min-height:0!important;flex-direction:column;align-items:flex-start!important;gap:2px!important;padding:10px 14px!important}.demo-panes .pane-header .pane-url{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.paper-stats.is-empty .paper-stats-meta{justify-content:flex-start;margin:0;padding:0!important}@media (max-width:767px){.paper-stats-meta{flex-direction:column;align-items:flex-start!important;gap:4px!important}.paper-stats-daily{display:none}}.img-unavailable:not(.is-large),.markdown-body .img-unavailable:not(.is-large){display:inline-block!important;width:auto!important;max-width:100%;min-height:0!important;height:22px;padding:0 8px;border:1px dashed var(--border-color)!important;border-radius:6px;font:500 12px/20px var(--font-sans)!important;color:var(--ink-muted);background:0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.img-unavailable:not(.is-large)::before{display:inline-block;width:11px!important;height:9px!important;margin-right:6px;vertical-align:-1px}.files .tree-name{display:block!important;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vb-artifact{display:inline-flex;align-items:baseline;gap:8px;min-width:0;margin-left:4px;padding-left:12px;border-left:1px solid var(--border-color);font-size:13px;color:var(--ink-muted);white-space:nowrap}.vb-artifact-id{font:500 13px var(--font-mono);color:var(--color);overflow:hidden;text-overflow:ellipsis;max-width:260px}.app-header.is-signin .nav-signin-item,.app-header.is-signin .nav-signin-m{display:none!important}@media (min-width:992px){.auth-page .auth-layout{align-items:center!important;min-height:min(460px,calc(100vh - 200px))}}select.form-control:not([multiple]):not([size]){-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M0 0h10L5 6z' fill='%234A4641'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important;background-position:right 14px center!important;background-size:9px 5px!important;padding-right:34px!important}.dark-mode select.form-control:not([multiple]):not([size]){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M0 0h10L5 6z' fill='%23D6D1C5'/%3E%3C/svg%3E")!important}.admin-page .admin-nav a{padding-left:0!important;padding-right:0!important}.ov-svc-name{font:600 14px var(--font-sans)!important;letter-spacing:0!important}.repository-task .btn-primary{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important;box-shadow:none!important}.dark-mode .repository-task .btn-primary{background:#1e6b63!important;border-color:#1e6b63!important;color:#fff!important}@media (max-width:767px){.dashboard-page .dashboard-row-meta .status-line .status-word{font-size:13px!important}.dashboard-page .dashboard-row-meta .project-attention-action{flex:0 0 auto!important;align-items:center;padding:0!important;line-height:1.5}}@media (max-width:767px){.paper-feature-tab{height:auto!important}}@media (max-width:639px){.demo-panes .pane-after .pane-header{flex-direction:row;align-items:center!important;height:40px!important;padding:0 14px!important}}.card-files-label{font:500 13px var(--font-sans)}@media (max-width:991px){.file-card-head .card-files-btn,.file-card-head .file-card-path .card-files-btn{width:auto!important;height:44px!important;min-height:44px!important;padding:0 12px 0 10px!important;gap:6px;border:1px solid var(--border-color)!important;border-radius:var(--radius-button)!important;color:var(--color)!important;align-self:center!important;margin-right:8px}.file-card-head .card-files-btn .ui-icon{width:16px!important;height:16px!important}}@media (max-width:767px){.viewer-bar .vb-signin{white-space:nowrap;padding:0 12px!important;display:inline-flex!important;align-items:center}.viewer-bar .vb-signin i{display:block!important;font-size:16px!important;width:16px;text-align:center}.vb-artifact{margin-left:0;padding-left:10px}.vb-artifact-id{max-width:110px;font-size:12px}}@media (max-width:991px){.file-card-head .card-files-btn .card-files-label{display:inline!important}}@media (max-width:480px){.file-card-head .meta-redact-word{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}.user-settings .billing-summary{background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:24px}.user-settings .billing-summary-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px}.user-settings .billing-eyebrow{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);margin:0 0 6px}.user-settings .billing-plan-name{font-size:24px;font-weight:600;line-height:1.2;letter-spacing:-.01em;margin:0}.user-settings .billing-plan-meta{font-size:13px;color:var(--ink-muted);margin:6px 0 0}.user-settings .billing-summary .quota-track{height:6px;border-radius:3px;background:var(--border-color)}.user-settings .billing-summary .quota-unlimited-tag{display:none}.user-settings .billing-summary .quota-usage{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}.user-settings .billing-summary .quota-item:has(.quota-unlimited-tag){display:none}.user-settings .billing-footnote{font-size:12px;line-height:1.6;color:var(--ink-muted);margin:16px 0 0}.user-settings .billing-section-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px}.user-settings .billing-section-title{font-size:18px;font-weight:600;letter-spacing:-.005em;margin:0 0 14px}.user-settings .billing-section-head .settings-text-button{font-size:12px;padding:0;min-height:0}.user-settings .billing-offers{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;padding-top:10px}.user-settings .billing-offer{position:relative;display:flex;flex-direction:column;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:24px 22px 22px;min-width:0}.user-settings .billing-offer.is-recommended{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.user-settings .billing-offer-pill{position:absolute;top:-10px;left:20px;font-size:11px;font-weight:600;line-height:20px;padding:0 9px;border-radius:999px;background:var(--accent);color:#fff}.user-settings .billing-offer-price{margin:8px 0 16px;color:var(--ink-muted);font-size:13px;line-height:40px;height:40px}.user-settings .billing-offer-price strong{font-size:32px;font-weight:600;letter-spacing:-.02em;color:var(--color);vertical-align:-2px}.user-settings .billing-offer-list{list-style:none;margin:0 0 20px;padding:0;font-size:13px;line-height:1.5}.user-settings .billing-offer>.btn{margin-top:auto;width:100%}.user-settings .billing-addon-price{font-size:13px;font-weight:600;white-space:nowrap;line-height:1.35}.billing-toggle{display:inline-flex;flex-shrink:0;padding:2px;border:1px solid var(--border-color);border-radius:8px;background:var(--paper-bg-alt)}.billing-toggle button{border:0;background:0 0;border-radius:6px;padding:3px 10px;font-size:12px;line-height:18px;color:var(--ink-muted);cursor:pointer}.billing-toggle button.is-on{background:var(--paper-card);color:var(--color);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.1)}.billing-toggle button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.billing-toggle-save{margin-left:5px;font-weight:600;color:var(--accent)}.user-settings .billing-offer-head{display:flex;justify-content:space-between;align-items:center;gap:12px;height:26px;margin-bottom:4px}.user-settings .btn-ink.disabled,.user-settings .btn-ink:disabled{background:var(--paper-bg-alt);border-color:var(--border-color);color:var(--ink-muted);opacity:1;cursor:not-allowed}.user-settings .billing-buy{margin-top:10px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;padding:24px}.user-settings .billing-buy-form{display:flex;flex-direction:column;gap:10px;padding-left:32px;border-left:1px solid var(--border-color);align-self:center}.user-settings .billing-buy-form .btn{width:100%}.user-settings .billing-back{font-size:13px;padding:4px 10px;min-height:0;margin-bottom:16px;border-color:transparent;background:0 0;margin-left:-10px}.user-settings .billing-back:hover{background:var(--paper-bg-alt)}.user-settings .billing-buy-desc{font-size:13px;line-height:1.55;color:var(--ink-muted);margin:0}.user-settings .billing-compare{margin-top:16px;font-size:13px}.user-settings .billing-compare summary{cursor:pointer;color:var(--accent);width:max-content;list-style:none;display:flex;align-items:center;gap:6px}.user-settings .billing-compare-card{margin-top:12px;padding:6px 20px 8px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px}.user-settings .billing-compare .settings-comparison{width:100%;margin:0;font-size:13px;border-collapse:separate;border-spacing:0}.user-settings .billing-compare .settings-comparison th[scope=row]{color:var(--ink-muted);font-weight:400}.user-settings .billing-compare .settings-comparison .is-recommended{background:var(--accent-soft)}.user-settings .billing-empty{font-size:13px;color:var(--ink-muted);margin:0}.user-settings .billing-history{list-style:none;margin:0;padding:0;border-top:1px solid var(--border-color)}.user-settings .billing-history-head,.user-settings .billing-history-row{display:grid;grid-template-columns:minmax(0,1fr) 160px 120px 88px;gap:16px}.user-settings .billing-history-head{padding:0 0 8px;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-muted)}.user-settings .billing-history-row{align-items:baseline;padding:14px 0;border-bottom:1px solid var(--border-color);font-size:13px}.user-settings .billing-history-main strong{display:block;font-weight:600;overflow-wrap:anywhere}.user-settings .billing-history-main>span{display:block;font-size:12px;color:var(--ink-muted);margin-top:3px}.user-settings .billing-history-term{color:var(--ink-muted)}.user-settings .billing-history-row.is-ended .billing-history-main strong,.user-settings .billing-history-row.is-ended .billing-history-paid{color:var(--ink-muted)}.user-settings .billing-manage{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:20px;padding:18px 20px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:10px;font-size:13px}.user-settings .billing-manage strong{display:block;font-weight:600}.user-settings .billing-manage .btn{flex-shrink:0}.user-settings .billing-conference{margin:28px 0 0;font-size:13px;color:var(--ink-muted)}.user-settings .billing-subtitle{font-size:13px;font-weight:600;margin:0}.user-settings .billing-addons-head{display:grid;grid-template-columns:minmax(0,1fr) 90px 48px;gap:16px;align-items:baseline;margin-bottom:8px}.user-settings .billing-addons-head span{text-align:right;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-muted)}.user-settings .billing-addon-rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--border-color)}.user-settings .billing-addon-rows strong{font-weight:600;margin-right:8px}.user-settings .billing-addon-rows .billing-addon-price{text-align:right;font-weight:500}.user-settings .billing-addon-rows .settings-text-button{justify-self:end;padding:0;min-height:0;font-size:13px;font-weight:600}body.dark-mode .settings-status.is-active{background:rgba(124,199,190,.16);color:#d2f1ed;box-shadow:inset 0 0 0 1px rgba(124,199,190,.45)}@media (max-width:900px){.user-settings .billing-offers{grid-template-columns:1fr;gap:24px}.user-settings .billing-history-head{display:none}.user-settings .billing-history-row{gap:4px 12px;grid-template-columns:minmax(0,1fr) auto}.user-settings .billing-history-term:empty{display:none}.user-settings .billing-addon-rows strong{display:block}.user-settings .billing-addon-rows .settings-text-button{min-height:44px;padding:0 4px}.user-settings .billing-offer-head{height:auto;flex-wrap:wrap;row-gap:8px}.user-settings .billing-history-term{grid-column:1;grid-row:2;font-size:12px;color:var(--ink-muted)}.user-settings .billing-history-paid{grid-column:2;grid-row:2;text-align:right;color:var(--ink-muted);font-size:12px}.user-settings .billing-buy{grid-template-columns:1fr;gap:20px}.user-settings .billing-buy-form{padding-left:0;border-left:0;padding-top:20px;border-top:1px solid var(--border-color)}.user-settings .billing-history-main{grid-column:1;grid-row:1}.user-settings .billing-history-status{grid-column:2;grid-row:1}.user-settings .billing-manage{flex-direction:column;align-items:stretch}}@media (max-width:600px){.user-settings .billing-summary-head{flex-direction:column;align-items:stretch}.user-settings .billing-summary .quota-usage{grid-template-columns:1fr;gap:16px}.user-settings .billing-summary-actions .btn{width:100%}.settings-nav{overflow-x:auto;gap:20px;scrollbar-width:none;padding-right:16px}}.hosting-options{border:0;padding:0;margin:14px 0 0;min-width:0}.hosting-options-title{font-size:13px;font-weight:600;margin:0 0 8px;padding:0}.hosting-option{display:grid;grid-template-columns:16px minmax(0,1fr) auto;gap:10px;align-items:start;margin:0 0 8px;padding:12px 14px;background:var(--paper-card);border:1px solid var(--border-color);border-radius:8px;cursor:pointer;font-weight:400}.hosting-option:hover:not(.is-selected){border-color:color-mix(in srgb,var(--accent) 45%,var(--border-color))}.hosting-option.is-selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:var(--accent-soft)}.hosting-option input{width:16px;height:16px;margin:1px 0 0;accent-color:var(--accent)}.hosting-subhead{font-size:13px;font-weight:600;margin:22px 0 10px;padding-top:18px;border-top:1px solid var(--border-color)}.hosting-option-body strong{display:block;font-size:13px;font-weight:600;line-height:1.35}.hosting-option-body small{display:block;font-size:12px;line-height:1.45;color:var(--ink-muted);margin-top:2px}.hosting-option-price{text-align:right;white-space:nowrap;line-height:1.2;min-width:64px}.hosting-limit{margin:12px 0 0;padding:10px 12px;border-radius:8px;background:rgba(217,119,6,.08);border:1px solid rgba(217,119,6,.28);font-size:13px;font-weight:500}body.dark-mode .hosting-limit{background:rgba(251,191,36,.1);border-color:rgba(251,191,36,.3)}.hosting-cycle{margin-top:8px}.hosting-option-price strong{display:block;font-size:15px;font-weight:600}.hosting-option-price small{display:block;font-size:12px;color:var(--ink-muted)}.hosting-payment>.hosting-limit:first-child{margin-top:4px}.hosting-payment{margin-bottom:18px}.hosting-payment .capacity-options summary,.inline-hosting .capacity-options summary{list-style:none;display:inline-flex;align-items:center;gap:6px;color:var(--accent)}.hosting-payment .capacity-options summary::-webkit-details-marker{display:none}.hosting-payment .capacity-options summary::before{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);transition:transform .15s}.hosting-payment .capacity-options[open] summary::before{transform:rotate(45deg)}.inline-hosting .hosting-terms{font-size:12px;color:var(--ink-muted);margin:4px 0 0}.user-settings .btn-ink.is-saving:disabled{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important;opacity:.85;cursor:progress}.user-settings .settings-check:last-child{border-bottom:0}.settings-row .settings-checks{max-width:none!important;width:100%!important}@media (max-width:575.98px){.app-header .navbar.navbar-expand-lg{flex-wrap:nowrap!important;min-height:56px;justify-content:flex-start!important}.app-header .navbar.navbar-expand-lg>.navbar-collapse{flex-basis:100%}.navbar .nav-heart-m{display:none!important}.app-header .navbar .nav-heart-m+.nav-theme-m,.app-header .navbar .nav-theme-m{margin-left:auto!important}.navbar .navbar-brand{flex:0 1 auto;min-width:0;margin-right:8px!important}.navbar .navbar-toggler{flex:0 0 44px;width:44px}.navbar .nav-signin-m{flex:none;margin-right:0!important}.navbar .nav-support-item.d-none{display:block!important}}.vb-context{display:none}@media (max-width:767px){.explorer-page>.vb-context{grid-row:2;grid-column:1/-1;display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-width:0;padding:8px 16px;border-bottom:1px solid var(--border-color);background:var(--paper-bg-alt);font:500 13px/1.3 var(--font-sans)}.dark-mode .explorer-page>.vb-context{background:var(--sidebar-bg-color)}.vb-context-id{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 12.5px/1.3 var(--font-mono);color:var(--color)!important;text-decoration:none!important}.vb-context-date{flex:none;font-size:12px;color:var(--ink-muted);font-variant-numeric:tabular-nums}.viewer-bar .vb-artifact,.viewer-bar .vb-support{display:none!important}}.dashboard-page .paper-table-dashboard .anon-sub{display:flex!important;align-items:center;column-gap:8px!important;min-width:0;flex-wrap:wrap;row-gap:2px!important}.dashboard-page .paper-table-dashboard .anon-sub>.anonymous-id{display:inline-flex;flex:0 1 auto;min-width:0;max-width:100%;overflow:hidden;white-space:nowrap}.paper-table-dashboard .anonymous-id .id-head{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-table-dashboard .anonymous-id .id-tail{flex:none;white-space:nowrap}.dashboard-page .paper-table-dashboard .anon-sub>.conf-tag{flex:1 0 100%!important;max-width:100%!important;min-width:0!important;display:flex!important;align-items:flex-start!important;gap:5px!important;overflow:visible!important;white-space:normal!important;font-family:var(--font-sans)}.paper-table-dashboard .cell-status .status-sub-error,.paper-table-dashboard .cell-status .status-sub-warn{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;line-height:1.4!important;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden!important}.paper-table-dashboard .cell-status .project-attention-action{margin-top:4px!important}.paper-table-dashboard .status-line .status-word{color:var(--color)}.paper-table-dashboard .repo-inactive .status-line .status-word{color:var(--ink-soft)}.paper-table-dashboard .cell-actions .dropdown.is-disabled>.btn,.paper-table-dashboard .cell-actions .is-disabled{opacity:.35;cursor:not-allowed!important;background:0 0!important;box-shadow:none!important}.paper-table-dashboard .cell-actions .is-disabled:hover{color:inherit}@media (max-width:767px){.paper-table-dashboard .cell-actions>.row-edit{display:none!important}.paper-table-dashboard .cell-actions>.dropdown>.btn-icon-dots,.paper-table-dashboard .cell-actions>:is(.copy-url,.dropdown){width:44px!important;height:44px!important;min-height:44px!important;align-self:flex-start!important;margin-top:-10px!important}.paper-table-dashboard .cell-actions>.dropdown>.btn-icon-dots{margin-top:0!important}.paper-table-dashboard .cell-anon{padding-right:4px}.dashboard-page .paper-table-dashboard .dashboard-row-meta{padding-left:26px!important}}.page-head{margin:0 0 24px!important;padding:0!important;border:0!important;min-height:0!important;height:auto!important}.page-head>.paper-crumbs{display:block!important;height:var(--crumb-h)!important;min-height:0!important;margin:0 0 var(--crumb-gap)!important;padding:0!important;border:0!important;font:400 13px/var(--crumb-h) var(--font-sans)!important;letter-spacing:0!important;text-transform:none!important;color:var(--ink-muted)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page-head>.paper-crumbs a{color:var(--ink-muted)!important;text-decoration:none}.page-head>.paper-crumbs a:hover{color:var(--color)!important;text-decoration:underline}.page-head>.paper-crumbs .here{color:var(--ink-soft)!important}.page-head:not(:has(>.paper-crumbs)){padding-top:calc(var(--crumb-h) + var(--crumb-gap))!important}.page-head-main,.page-head.page-head-main{display:flex!important;align-items:flex-start!important;justify-content:space-between!important;gap:12px 24px!important;flex-wrap:wrap}.page-head-main>:first-child{min-width:0;flex:1 1 320px}.page-head .paper-page-title,.page-head .settings-title h1,.page-head h1,.user-settings .page-head h1{margin:0!important;padding:0!important;font:600 28px/1.2 var(--font-sans)!important;letter-spacing:-.02em!important;color:var(--color)}.page-head .paper-page-lede,.page-head .task-lede{margin:6px 0 0!important;font-size:15px!important;line-height:1.5!important;color:var(--ink-muted)!important;max-width:640px}.page-head-main>:not(:first-child){flex:none;margin:-3px 0 0!important;align-self:flex-start!important}.page-head .ov-live{height:34px;display:inline-flex;align-items:center;margin:0!important}.page-head .task-trail{margin:0!important;padding:0!important;border:0!important;height:34px;align-items:center;gap:16px!important;font-size:13px}.admin-page.paper-page,.conferences-page.paper-page,.dashboard-page.paper-page,.repository-task.status-page,.user-settings.paper-page{padding-top:var(--page-top)!important}.conferences-page>.row,.dashboard-page>.row{margin-top:0!important}.anonymize-landing-inner{padding-top:var(--page-top)!important;width:100%!important;max-width:calc(var(--page-max) + 2 * var(--page-gutter))!important;margin-left:auto!important;margin-right:auto!important;padding-left:var(--page-gutter)!important;padding-right:var(--page-gutter)!important}.anonymize-landing{padding-top:0!important;margin-top:0!important}.admin-page>.paper-crumbs{font:400 13px/var(--crumb-h) var(--font-sans)!important;letter-spacing:0!important;text-transform:none!important;color:var(--ink-muted)!important;margin:0 0 var(--crumb-gap)!important}@media (max-width:767px){.page-head:not(:has(>.paper-crumbs)){padding-top:0!important}.page-head .paper-page-title,.page-head h1{font-size:24px!important}.page-head .task-trail{height:auto;flex-wrap:wrap;gap:4px 14px!important;font-size:12px}}.admin-page .page-head .ov-header{min-height:0!important;margin:0!important;align-items:flex-start!important}.admin-page .page-head .ov-header .paper-page-title{line-height:1.2!important;display:block!important;min-height:0!important;height:auto!important;flex:1 1 auto}.dashboard-view-tabs button[aria-pressed=true]{border-bottom:2px solid var(--accent)!important;color:var(--color)!important}.settings-nav button[aria-current=page]{box-shadow:inset 0 -2px 0 var(--accent)!important;border-bottom-color:transparent!important}.paper-feature.is-on .paper-feature-tab{border-bottom-color:var(--accent)!important}.page-head+.admin-nav{margin-top:0!important}.dark-mode .demo-output .redact-chip,.dark-mode .markdown-body mark.redact-chip,.dark-mode span.redact,.demo-output .redact-chip,.markdown-body mark.redact-chip,.redact-slot,span.redact{justify-content:center!important}.dark-mode .markdown-body :is(h1,h2,h3,h4) mark.redact-chip,.markdown-body :is(h1,h2,h3,h4) mark.redact-chip{min-width:1.2em!important;padding:0 .3em!important;justify-content:center!important}.markdown-body :is(h1,h2) mark.redact-chip i{font-size:.55em!important}.breadcrumb .redact-slot,.files .redact-slot{justify-content:center!important}.repository-task .page-head{margin-bottom:20px!important}.repository-task .task-columns{align-items:start!important}.repository-task .share-link{margin-top:0!important}.dark-mode .task-summary,.task-summary{background:var(--paper-card)!important;border:1px solid var(--border-color)!important;border-radius:var(--radius-surface)!important;padding:4px 20px 20px!important;box-shadow:none!important}.repo-picker{margin-top:28px;border:1px solid var(--border-color);border-radius:var(--radius-surface);background:var(--paper-card);overflow:hidden;--picker-row:44px;--picker-rows:7}.repo-picker-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:10px 12px 10px 16px;border-bottom:1px solid var(--border-color)}.repo-picker-filter.form-control{width:220px;max-width:55%;height:36px!important;min-height:36px!important;padding:0 10px!important;font-size:13px!important;border-radius:var(--radius-control)!important}.repo-picker-list{list-style:none;margin:0;padding:0;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--scroll-thumb,#cfc7b9) transparent;max-height:calc(var(--picker-row) * var(--picker-rows))!important}.repo-picker-row{display:flex;align-items:center;gap:10px;height:44px;padding:0 12px 0 16px;border-bottom:1px solid var(--border-soft,var(--border-color))}.repo-picker-row:last-child{border-bottom:0}.repo-picker-row:not(.is-skeleton):hover{background:var(--hover-bg-color)}.repo-picker-row>.project-type-svg{flex:none;width:15px;height:15px;color:var(--ink-muted)}.repo-picker-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 14px/1.3 var(--font-sans);color:var(--color)}.repo-picker-owner{color:var(--ink-muted);font-weight:400}.repo-picker-select.btn{flex:none;height:30px!important;min-height:30px!important;padding:0 12px!important;font-size:13px!important;font-weight:500;border-radius:var(--radius-button)!important;border-color:transparent!important;background:0 0!important;color:var(--accent)!important;box-shadow:none!important}.repo-picker-row:hover .repo-picker-select.btn,.repo-picker-select.btn:focus-visible{border-color:var(--border-color)!important;background:var(--paper-card)!important}.repo-picker-row.is-skeleton .skeleton-line{display:block;height:10px;border-radius:4px}.repo-picker-state{margin:0;padding:16px;font-size:13px;color:var(--ink-muted)}.repo-picker .repo-access-details{margin:0!important;border:0!important;border-top:1px solid var(--border-color)!important;border-radius:0!important;background:var(--paper-bg-alt)!important;padding:8px 16px!important}.dark-mode .repo-picker .repo-access-details{background:rgba(255,255,255,.02)!important}.repo-picker .repo-access-details .repo-access-controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center!important}.repo-picker .repo-access-details .btn{height:32px!important;min-height:32px!important;padding:0 10px!important;font-size:13px!important}.repo-picker .repo-access-note{margin-top:6px;font-size:12.5px;color:var(--ink-muted)}@media (max-width:767px){.anonymize-landing{padding-left:0!important;padding-right:0!important}.anonymize-landing-inner{display:flex!important;flex-direction:column}.anonymize-landing .source-url-label-row,.anonymize-landing-inner>.form-group{display:contents!important}.anonymize-landing .source-url-label-row .paper-field-label{margin-bottom:8px!important}.anonymize-landing .source-url-label-row .repo-access{order:1;align-self:flex-start;margin-top:24px!important;margin-bottom:0!important}.repo-picker-filter.form-control{width:150px}}.repo-picker .repo-access-main{min-height:0!important;margin:0!important;padding:0!important}.repo-picker .repo-access-note:empty,.repo-picker .repo-access-note:not(:has(span:not(:empty))){display:none!important}.repo-picker .access-q{font-size:13px;color:var(--ink-muted);display:inline-flex!important;align-items:center;height:32px;margin:0!important;line-height:1}@media (max-width:767px){.anonymize-landing .task-trail{margin:16px 0 20px!important}}.auth-options .btn-hero.auth-continue-github{display:flex!important;width:100%;justify-content:center!important;align-items:center;gap:8px;text-align:center}.auth-options .auth-continue-github .fa-github{font-size:17px;margin:0!important}.admin-page :is(.ov-legend-n,.ov-ebar-n,.ov-spark-x,.ov-spark-xspan,.legend-count,.err-count){font-family:var(--font-sans)!important;font-variant-numeric:tabular-nums;letter-spacing:0!important}.conferences-page .paper-table-empty .empty-icon{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;background:var(--paper-2,var(--hover-bg-color));color:var(--ink-soft);margin-bottom:4px}.conferences-page .paper-table-empty .empty-icon .ui-icon{width:32px!important;height:32px!important;padding:4px}.conferences-page .paper-table-empty .conf-empty-new{display:inline-flex;align-items:center;gap:6px;height:var(--control-h);padding:0 14px;margin-top:8px;border-radius:var(--radius-button);font-size:14px}@media (max-width:767px){.page-head-main>:first-child{flex:0 1 auto!important}}.paper-qa.paper-qa-r3{display:block!important}.paper-qa-r3>.qa-head{position:static!important;display:flex;align-items:last baseline;justify-content:space-between;gap:24px;margin-bottom:28px}.paper-qa-r3>.qa-head .paper-link-arrow{flex:0 0 auto;white-space:nowrap}.paper-qa-r3>.qa-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}.paper-qa-r3 .qa-grid .q,.paper-qa-r3 .qa-grid .q:last-child{border-top:1px solid var(--border-color);border-bottom:0;padding:18px 0 0}@media (max-width:899px){.paper-qa-r3>.qa-head{display:block;margin-bottom:16px}.paper-qa-r3>.qa-head .paper-link-arrow{display:inline-block;margin-top:12px;padding-bottom:0}.paper-qa-r3>.qa-grid{grid-template-columns:minmax(0,1fr);gap:0}.paper-qa-r3 .qa-grid .q{padding:18px 0}.paper-qa-r3 .qa-grid .q:last-child{border-bottom:1px solid var(--border-color);padding-bottom:18px!important}}.anonymize-landing:not([style*="display: none"]){display:block!important;padding-left:0!important;padding-right:0!important}.anonymize-landing-inner>:not(.page-head){max-width:720px}.page-head>.flow-trail{display:flex;flex-wrap:wrap;align-items:center;gap:6px 22px!important;height:auto!important;margin:16px 0 0!important;padding:0!important;border:0!important;font-size:13px;color:var(--ink-muted)}.anonymize-landing .page-head{margin-bottom:28px!important}.status-page>.page-head{margin-bottom:24px!important}@media (max-width:767px){.page-head>.flow-trail{gap:4px 14px!important;font-size:12px;margin-top:12px!important}.anonymize-landing .page-head{margin-bottom:20px!important}}.dashboard-page .paper-table-dashboard .anon-sub>.conf-tag{color:var(--ink-muted)}.dark-mode .status-dot.status-expired,.status-dot.status-expired{background:var(--status-inactive)!important}@media (max-width:767px){.dashboard-page .paper-table-dashboard .dashboard-row-meta{align-items:center!important}.paper-table-dashboard .dashboard-row-meta .status-line{display:inline-flex!important;align-items:center;gap:0!important}.paper-table-dashboard .dashboard-row-meta .status-line .status-dot{width:8px!important;height:8px!important;margin:0 6px!important;flex:none}.paper-table-dashboard .dashboard-row-meta>.cell-views{display:inline-flex!important;align-items:center}.paper-table-dashboard .dashboard-row-meta>.cell-expires{display:inline-flex!important;align-items:center}.dashboard-page .dashboard-row-meta .cell-expires .mobile-meta-icon,.dashboard-page .dashboard-row-meta .cell-views .mobile-meta-icon{width:14px!important;height:14px!important;margin:0 3px!important;flex:none}.paper-table-dashboard .dashboard-row-meta .cell-expires .empty-dash{color:var(--ink-soft)}.paper-table-dashboard .dashboard-row-meta .status-sub:not(.status-sub-date){padding-left:20px;margin-top:2px!important}.dashboard-page .dashboard-row-meta .project-attention-action{margin:0 0 0 20px!important;min-height:0!important}}.dark-mode .fm-actions{border-top-color:var(--border-color)!important}@media (max-width:767px){.repo-picker-row{height:auto!important;min-height:60px;padding:10px 4px 10px 16px!important;align-items:center}.repo-picker-name{display:flex!important;flex-direction:column;gap:2px;white-space:normal!important;overflow:visible!important;text-overflow:clip!important}.repo-picker-owner{font-size:12px;line-height:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.repo-picker-slash{display:none}.repo-picker-repo{font-size:14px;line-height:1.3;overflow-wrap:anywhere}.repo-picker-row>.project-type-svg{align-self:center}.repo-picker-select.btn{height:44px!important;min-height:44px!important;min-width:64px}}.files .tree-name.tree-name-split{display:flex!important;overflow:hidden;text-overflow:clip!important;gap:0!important;column-gap:0!important;position:relative}.files .tree-name-split .tree-name-head{flex:0 1 auto;min-width:1.5em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files .tree-name-split .tree-name-tail{flex:0 0 auto;white-space:pre}@media (max-width:767px){.file-card-head .mobile-sub b{font-size:12px!important;font-weight:500!important;color:var(--ink-muted)!important;display:inline-flex!important;align-items:center;gap:0!important}.file-card-head .meta-redact-word,.mobile-sub .meta-redact-word{position:static!important;width:auto!important;height:auto!important;overflow:visible!important;clip:auto!important;white-space:pre!important}.explorer-page>.viewer-bar,.viewer-bar{min-height:48px!important;padding-top:8px!important;padding-bottom:8px!important;box-sizing:border-box}}.breadcrumb .redact-slot,.demo-output .redact-chip,.files .redact-slot,.redact,.redact-chip,.redact-slot,mark.redact-chip,span.redact{text-align:center!important}@media (max-width:767px){.file-card-head .file-card-path{display:grid!important}.file-card-head .file-card-path>.breadcrumb{align-self:end;grid-column:2!important;grid-row:1!important;min-width:0!important;max-width:100%!important;width:auto!important}.file-card-head .file-card-path>.mobile-sub{grid-column:2;grid-row:2;align-self:start;display:flex!important;line-height:16px;padding-left:0!important;margin-left:0!important;min-width:0;text-overflow:ellipsis}}@media (max-width:767px){.file-card-head .file-card-path>.breadcrumb,.file-card-head .file-card-path>.breadcrumb>li:first-child{padding-left:0!important;margin-left:0!important}}.demo-terms textarea.demo-terms-input{display:block;width:100%;min-height:42px;height:auto;padding:10px 14px;margin:0;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-card);font:14px/20px var(--font-mono);color:var(--color);resize:none;overflow:hidden;field-sizing:content}.flow-trail{list-style:none;display:flex;flex-wrap:wrap;align-items:center;gap:6px 22px!important;margin:0;padding:0!important;border:0!important;font-size:13px;color:var(--ink-muted)}.anonymize-topbar-inner>.flow-trail{margin:6px 0 0!important;height:auto!important}.anonymize-topbar-inner:has(>.flow-trail){flex-direction:column!important;align-items:stretch!important}@media (min-width:1200px){.anonymize-workspace .anonymize-split,.anonymize-workspace .anonymize-topbar-inner{width:100%!important}}@media (max-width:767px){.anonymize-topbar-inner>.flow-trail{gap:4px 14px!important;font-size:12px}}.paper-table .cell-status .status-sub{text-wrap:pretty}.paper-table-dashboard .cell-status .status-action-line{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:0;margin-top:2px;font-size:12px;line-height:1.5}.paper-table-dashboard .cell-status .status-action-line .status-stuck{color:var(--status-progress);white-space:pre}.paper-table-dashboard .cell-status .status-action-line>.project-attention-action{margin:0!important;flex-basis:auto!important}@media (max-width:767px){.dashboard-page .paper-table-dashboard .dashboard-row-meta .status-line .status-dot{width:8px!important;height:8px!important;margin:0 10px 0 4px!important}.dashboard-page .paper-table-dashboard .dashboard-row-meta .cell-expires .mobile-meta-icon,.dashboard-page .paper-table-dashboard .dashboard-row-meta .cell-views .mobile-meta-icon{width:14px!important;height:14px!important;margin:0 7px 0 1px!important}.dashboard-page .paper-table-dashboard .dashboard-row-meta>.cell-status>.project-attention-action{margin:0 0 0 22px!important}.dashboard-page .paper-table-dashboard .dashboard-row-meta .status-action-line{order:5;flex:1 0 100%;padding-left:22px;margin:0!important;font-size:13px}.dashboard-page .paper-table-dashboard .cell-anon>.project-type-icon{align-self:flex-start!important;margin-top:2px!important;grid-area:icon;justify-self:start}.dashboard-page .paper-table-dashboard .project-attention-action::after{content:"";position:absolute;left:-8px;right:-8px;top:-17px;bottom:-7px}}@media (max-width:767px){.dashboard-page .paper-table-dashboard .cell-actions>.dropdown{margin-left:8px!important;left:0!important;right:auto!important}}.repo-picker-title{display:flex;flex-direction:column;gap:2px;min-width:0}.repo-picker-count{font-size:12px;line-height:16px;color:var(--ink-muted);font-variant-numeric:tabular-nums;white-space:nowrap}@media (max-width:767px){.repo-picker-row:not(.is-skeleton){min-height:65px!important;box-sizing:border-box}}.dark-mode .user-settings .btn-ink.is-saving:disabled{background:#237a71!important;border-color:#237a71!important}.files .tree-name-split .tree-name-middle{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.overview-page .ov-spark-col.is-missing{background:repeating-linear-gradient(135deg,var(--ink-faint) 0 1.5px,transparent 1.5px 4px) left bottom/100% 6px no-repeat;opacity:.7}.overview-page .ov-bar-seg{min-width:2px}.overview-page .ov-kpi-value.ov-val-warn{color:inherit}@media (min-width:768px){.auth-intro .paper-page-lede{font-size:19px!important;line-height:1.5!important;max-width:34ch!important;margin-top:24px!important;color:var(--ink-soft)}}@media (max-width:767px){.auth-intro .paper-page-lede{font-size:16px!important;line-height:1.5!important}}@media (min-width:992px){.paper-cta .paper-cta-actions{justify-content:flex-end}}@media (max-width:767px){.paper-features .paper-feature.is-on .paper-feature-more{order:2!important;margin-top:24px!important}}.landing-next{display:none}@media (min-width:1100px){.anonymize-landing-inner{display:grid!important;grid-template-columns:minmax(0,720px) minmax(240px,1fr);column-gap:48px;align-items:start;--landing-next-offset:40px}.anonymize-landing-inner>*{grid-column:1}.anonymize-landing-inner>.landing-next{display:block;grid-column:2;grid-row:2/span 8;align-self:start;max-width:none;padding:20px!important;margin-top:var(--landing-next-offset,32.375px)!important}.anonymize-landing-inner>.form-group{margin-top:0!important}}@media (max-width:767px){.dashboard-page .paper-table.paper-table-dashboard .paper-table-row,.dashboard-page .paper-table.paper-table-dashboard .paper-table-row.repo-inactive{grid-template-columns:26px minmax(0,1fr) auto auto!important;grid-template-areas:"icon name copy more" ". sub sub sub" "meta meta meta meta";column-gap:0!important;row-gap:6px!important}.dashboard-page .paper-table-dashboard .anon-text>.anon-title{grid-area:name;min-width:0;align-self:start;line-height:1.3!important}.dashboard-page .paper-table-dashboard .anon-text>.anon-sub{grid-area:sub;grid-column:2/-1;min-width:0;margin:0!important}.dashboard-page .paper-table-dashboard .cell-actions>.copy-url,.dashboard-page .paper-table-dashboard .cell-actions>.dropdown{align-self:start;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;margin-top:-6px!important;margin-bottom:-6px!important;position:relative}.paper-table-dashboard .repo-name .rn-repo{display:inline-block;max-width:100%;overflow-wrap:anywhere}.dashboard-page .paper-table-dashboard .anon-sub{column-gap:8px!important;row-gap:2px!important}.dashboard-page .paper-table-dashboard .anon-sub>.conf-tag{flex:1 1 100%!important;max-width:100%!important}}.paper-table-dashboard .anon-sub:empty{display:none!important}.paper-table-dashboard .cell-expires .expires-soon{display:inline-flex;align-items:center;gap:0;color:var(--status-progress)!important;font-weight:500;white-space:nowrap}.paper-table-dashboard .cell-expires .expires-soon-icon{width:14px;height:14px;flex:none;margin-right:6px;color:var(--status-progress)}.paper-table-dashboard .cell-expires .expires-soon-prefix{display:none}@media (max-width:767px){.paper-table-dashboard .cell-expires .expires-soon-icon{display:none}.paper-table-dashboard .cell-expires .expires-soon-prefix{display:inline;white-space:pre}.paper-table-dashboard .cell-expires:has(.expires-soon)>.mobile-meta-icon{color:var(--status-progress)!important;opacity:1!important}}.dark-mode .dashboard-page .paper-table-dashboard .paper-table-row.repo-error,.dark-mode .paper-table-dashboard .paper-table-row.repo-error{background:color-mix(in srgb,var(--status-error) 7%,transparent)!important}.overview-page .ov-chart-legends{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.overview-page .ov-legend-missing{display:inline-flex;align-items:center;gap:6px;font:400 12px/1 var(--font-sans);color:var(--ink-soft)}.overview-page .ov-swatch-missing{width:12px;height:6px;flex:none;box-shadow:inset 0 0 0 1px var(--border-color);background:repeating-linear-gradient(135deg,var(--ink-faint) 0 1.5px,transparent 1.5px 4px)}.overview-page .ov-spark-bars{position:relative;box-shadow:inset 0 -1px 0 var(--ink-faint)!important}.overview-page .ov-spark-step{display:block}.overview-page .ov-step-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.overview-page .ov-step-missing{position:absolute;left:0;bottom:0;height:6px;opacity:.7;background:repeating-linear-gradient(135deg,var(--ink-faint) 0 1.5px,transparent 1.5px 4px)}.overview-page .ov-ebar-note{margin:2px 0 0;padding-top:12px;border-top:1px solid var(--border-color);font-size:12px;line-height:1.4;color:var(--ink-muted);font-variant-numeric:tabular-nums}@media (max-width:767px){.explorer-page .viewer-bar{padding-left:16px!important;padding-right:16px!important}.explorer-page .file-card-head{padding-left:16px!important;padding-right:16px!important}.viewer-bar .vb-signin,.viewer-bar .vb-signin:hover{background:var(--accent)!important;color:#fff!important;border:0!important;box-shadow:none!important;height:32px!important}.dark-mode .viewer-bar .vb-signin,.dark-mode .viewer-bar .vb-signin:hover{background:#237a71!important;color:#fff!important}}.dark-mode .markdown-body :is(h1,h2,h3) mark.redact-chip,.markdown-body :is(h1,h2,h3) mark.redact-chip{line-height:1!important;vertical-align:.2em!important}.user-settings .settings-title{display:block!important}.user-settings #settings-billing>.settings-scope,.user-settings .settings-scope{font-size:14px!important;line-height:1.5!important;color:var(--ink-soft)!important;margin:16px 0!important}.user-settings .settings-title .paper-page-lede{margin:6px 0 0!important}@media (max-width:480px){.paper-footer .paper-footer-col{grid-column:auto!important;min-width:0}.paper-footer .paper-footer-col a{font-size:13px!important}}@media (min-width:992px){.overview-page .ov-chart-row.is-three{grid-template-columns:repeat(3,minmax(0,1fr))}}.overview-page .ov-spark-bars.ov-has-axis{background:linear-gradient(color-mix(in srgb,var(--border-color) 70%,transparent),color-mix(in srgb,var(--border-color) 70%,transparent)) 0 calc(50% - .5px)/100% 1px no-repeat}.overview-page .ov-yaxis{position:absolute;left:-28px;top:0;bottom:0;width:22px;pointer-events:none}.overview-page .ov-yaxis>span{position:absolute;right:0;font:400 11px/12px var(--font-sans);color:var(--ink-muted);font-variant-numeric:tabular-nums;white-space:nowrap}@media (min-width:992px){.overview-page .ov-chart-row.is-three .ov-chart-head{flex-direction:column;align-items:flex-start;gap:6px}.overview-page .ov-chart-row.is-three .ov-chart-title{white-space:nowrap}.overview-page .ov-chart-row.is-three .ov-chart-legends{justify-content:flex-start}}@media (max-width:991px){.overview-page .ov-chart-head{flex-direction:column;align-items:flex-start;gap:6px}.overview-page .ov-chart-title{white-space:nowrap}.overview-page .ov-chart-legends{justify-content:flex-start}}@media (max-width:767px){.navbar .nav-signin-m,.navbar .nav-theme-m,.navbar .navbar-toggler,.viewer-bar .vb-icon,.viewer-bar .vb-signin{position:relative;overflow:visible!important}.navbar .nav-signin-m,.navbar .nav-theme-m+.nav-signin-m{margin-left:12px!important}.navbar .navbar-toggler{margin-left:8px!important}.navbar .nav-theme-m+.navbar-toggler,.navbar .nav-theme-m~.navbar-toggler:not(.nav-signin-m~*){margin-left:12px!important}.viewer-bar .vb-icon+.vb-icon,.viewer-bar .vb-icon+.vb-signin,.viewer-bar .vb-icon~.vb-signin{margin-left:13px!important}}@media (max-width:767px){.dashboard-page .paper-table-dashboard .cell-actions>.dropdown>.btn-icon-dots{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center;border-radius:8px;position:relative}}@media (max-width:767px){.paper-table-dashboard .dashboard-row-meta .status-line>.status-dot{position:relative;left:-4px}.paper-table-dashboard .dashboard-row-meta .cell-expires>.mobile-meta-icon{position:relative;left:-1px}}.serif-hy{margin-left:-.055em;margin-right:-.035em}@media (min-width:768px){.paper-table-dashboard .cell-expires .expires-past-prefix{display:inline!important}}.auth-options .auth-card{border:1px solid var(--border-color);border-radius:12px;padding:28px;background:var(--paper-card,#fff)}.auth-options .auth-card>:last-child{margin-bottom:0}@media (max-width:767px){.auth-options .auth-card{padding:20px}}@media (max-width:767px){.paper-features .paper-features-stage>.paper-feature-panel{order:3!important;margin-top:24px!important}}@media (max-width:767px){.pane-header:has(.pane-edit-hint)>.pane-url{display:none!important}.demo-panes .pane-after .pane-header,.demo-panes .pane-header{height:40px!important;min-height:0!important;padding:0 14px!important;flex-direction:row!important;align-items:center!important}}.dark-mode .paper-table-dashboard .is-disabled,.paper-table-dashboard .is-disabled{color:var(--ink-faint)!important;opacity:.55!important}.repository-task .share-link-label{display:block;margin:16px 0 6px;font-size:12px;font-weight:400;color:var(--ink-muted);line-height:12px!important;margin-top:-1px!important;margin-bottom:11px!important}.repository-task .share-link-row{display:flex!important;margin-top:0!important}.repository-task .share-link-buttons{display:flex;flex:0 0 auto;justify-content:flex-start;flex-wrap:wrap;gap:8px!important}.repository-task .share-link-buttons>.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--control-h);white-space:nowrap;min-width:0;padding:0 14px}.repository-task .share-link-note{margin:10px 0 0;font-size:13px;line-height:20px;color:var(--ink-muted);margin-top:12px!important}.repository-task .share-link-note a{color:inherit;text-decoration:underline;text-underline-offset:2px;text-decoration-color:var(--ink-faint)}.repository-task .share-link-next{margin-top:28px;padding-top:20px;border-top:1px solid var(--border-color)}.repository-task .share-link-next>h2{font:600 14px/20px var(--font-sans);letter-spacing:0;margin:0 0 4px;color:var(--color)}.repository-task .share-link-next-actions{display:flex;gap:8px;margin-top:8px!important}.repository-task .share-link-next-actions>span{color:var(--ink-faint)}.repository-task .share-link-next-actions>a{font-weight:500}@media (max-width:767px){.repository-task .share-link-buttons>.btn{flex:1 1 0}}.paper-table-dashboard .copy-url .copy-url-label{display:none}@media (min-width:768px){.dashboard-page .paper-table-dashboard .cell-actions>.copy-url{display:inline-flex!important;align-items:center;gap:6px;width:96px!important;height:32px!important;min-height:32px!important;padding:0 10px!important;margin-right:4px;border:1px solid var(--border-color)!important;border-radius:8px!important;background:0 0!important;font:500 13px/1 var(--font-sans);color:var(--color)!important;white-space:nowrap}.dashboard-page .paper-table-dashboard .cell-actions>.copy-url:not(.is-disabled):hover{background:var(--hover-bg-color)!important;border-color:var(--ink-faint)!important}.dashboard-page .paper-table-dashboard .cell-actions>.dropdown,.dashboard-page .paper-table-dashboard .cell-actions>.row-open{width:32px!important;height:32px!important;flex:0 0 32px}}.dark-mode .paper-stats.is-empty,.paper-stats.is-empty{border-top:0!important;padding-top:0!important;margin-top:48px!important}.paper-stats.is-empty .paper-stats-meta{border-bottom:0!important}.dark-mode .paper-stats-meta-right,.paper-stats-meta-right{font:400 14px/20px var(--font-sans)!important;text-transform:none!important;letter-spacing:0!important;color:var(--ink-soft)!important}.paper-stats.is-empty+.paper-section-head{margin-top:72px!important}@media (max-width:767px){.paper-hero{padding-top:24px!important}.demo-terms label .dt-try{display:none}.paper-hero .hero-mock .hm-opt{display:none!important}.paper-hero .paper-reassure{display:flex!important;flex-direction:row!important;flex-wrap:wrap;column-gap:16px!important;row-gap:4px!important;margin-top:14px!important}.paper-hero .paper-hero-shot{margin-top:0!important}.dark-mode .paper-stats.is-empty,.paper-stats.is-empty{margin-top:28px!important}.paper-stats.is-empty+.paper-section-head{margin-top:48px!important}.paper-cta,.paper-features,.paper-qa,.paper-section-head{margin-top:56px!important}.paper-section-head+.paper-features{margin-top:24px!important}}.faq-section .faq-search>label{display:block;margin:0 0 6px;font:600 14px/20px var(--font-sans);color:var(--color)}.faq-section .faq-search-field{position:relative}.faq-section .faq-search-field>.ui-icon{position:absolute;left:14px;top:50%;width:16px;height:16px;transform:translateY(-50%);color:var(--ink-muted);pointer-events:none}.faq-section .faq-search-field>input{width:100%;height:44px!important;padding:0 14px 0 40px!important;font-size:15px;border-radius:var(--radius-control,8px);background:var(--paper-card,#fff)}.faq-section .faq-search-status{min-height:20px;margin:6px 0 0;font-size:13px;line-height:20px;color:var(--ink-muted)}.faq-section .faq-search-status:empty{display:none}.faq-section .faq-search-empty{padding:24px;border:1px dashed var(--border-color);border-radius:12px;margin-bottom:24px}.faq-section .faq-search-empty>strong{display:block;font-size:15px;color:var(--color);overflow-wrap:anywhere}.faq-section .faq-search-empty>p{margin:4px 0 14px;color:var(--ink-soft);font-size:14px}.faq-section .faq-search-empty-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.faq-section .faq-search-empty-actions .btn-link{color:var(--color);text-decoration:underline;text-underline-offset:3px;border-color:transparent!important;background:0 0!important}.faq-section [hidden]{display:none!important}.faq-section.faq-searching .faq-hit .panel-collapse{display:block!important;height:auto!important}@media (min-width:1400px){.reading-layout{grid-template-columns:minmax(0,640px) 210px!important;gap:48px!important}.readme-toc{width:210px}}.overview-page .ov-triple-row{align-items:stretch!important}.overview-page .ov-triple-row>.ov-panel-card{display:flex;flex-direction:column}.overview-page .ov-triple-row>.ov-panel-card>.ov-error-bars{flex:1 1 auto;display:flex;flex-direction:column}.overview-page .ov-triple-row>.ov-panel-card>.ov-error-bars>.ov-ebar-note{margin-top:auto!important;margin-bottom:0}.overview-page .ov-ehours-bars{display:grid;grid-template-columns:repeat(24,minmax(0,1fr));gap:2px;height:28px;align-items:end;box-shadow:none!important}.overview-page .ov-ehours-bars>span{height:100%;display:flex;align-items:flex-end;flex-direction:column;justify-content:flex-end}.overview-page .ov-ehours-x{display:flex;justify-content:space-between;margin-top:4px;font:400 11px/14px var(--font-sans);color:var(--ink-muted)}.overview-page .ov-triple-row>.ov-panel-card>.ov-routes-table{flex:1 1 auto;display:flex;flex-direction:column}@media (max-width:767px){.dashboard-page .paper-table-dashboard .anon-sub .conf-tag{gap:0!important}}@media (max-width:767px){.anonymize-landing-inner:has(.repo-access)>.repo-picker,.anonymize-landing-inner>.repo-access~.repo-picker{margin-top:8px!important}}body .demo-panes .pane>.pane-header{background:#f3efe8!important;border-bottom:1px solid #e6e1d8!important}body.dark-mode .demo-panes .pane>.pane-header{background:#221f1c!important;border-bottom:1px solid #3a3631!important}.dashboard-page .dropdown-menu .status-preset{font-size:13px}.dashboard-page .dropdown-menu .status-preset.active{background:0 0;color:var(--color);font-weight:600}@media (min-width:768px){.dashboard-page .paper-table-dashboard .cell-actions>.copy-url:not(.is-disabled){border-color:transparent!important;background:0 0!important;color:var(--ink-muted)!important}.dashboard-page .paper-table-dashboard .cell-actions>.copy-url.is-disabled{border-color:transparent!important;background:0 0!important;color:var(--ink-faint)!important}}@media (max-width:640px){.dashboard-page .dashboard-heading-actions{gap:12px!important;justify-content:flex-start!important}.dashboard-page .dashboard-heading-actions>.dashboard-quota{flex:1 1 auto!important;min-width:0}}.files a:has(>.tree-name-wrap){height:auto!important;min-height:26px!important;align-items:flex-start!important;padding-top:4px!important;padding-bottom:4px!important}.files a:has(>.tree-name-wrap)>.tree-name-wrap{display:block!important;flex:1 1 auto;min-width:0;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere;word-break:normal;line-height:18px!important}.files a:has(>.tree-name-wrap)>:is(.tree-toggle,.tree-spacer,.tree-icon-file,.tree-icon-folder){align-self:flex-start!important;margin-top:2px!important}@media (max-width:767px){.file-card-head .breadcrumb.paths>.breadcrumb-item:first-child,.file-card-head .breadcrumb.paths>.breadcrumb-root+.breadcrumb-item{padding-left:0!important}}@media (min-width:768px){.explorer-page .leftCol-body{padding-top:0!important}}.demo-terms label .dt-try{margin-left:0!important}.paper-proof-mobile{display:none}@media (min-width:768px){.dark-mode .paper-stats.is-empty,.paper-stats.is-empty{margin-top:24px!important}.paper-stats.is-empty+.paper-section-head{margin-top:96px!important}}@media (max-width:767px){.paper-hero-shot{display:none!important}.paper-stats.is-empty{display:none!important}.paper-stats .paper-stats-meta-right{display:none!important}.paper-hero+.paper-stats+.paper-section-head{margin-top:28px!important;row-gap:12px!important}.paper-hero+.paper-stats+.paper-section-head h2{margin-top:6px!important}.paper-hero+.paper-stats+.paper-section-head>p{line-height:22px!important}.paper-hero+.paper-stats+.paper-section-head+.demo{margin-top:20px!important}.paper-proof-mobile{display:block;margin:20px auto 0;font-size:13px;line-height:20px;color:var(--ink-muted)}}@media (max-width:480px){.paper-cta .paper-cta-actions{flex-direction:column;align-items:stretch}.paper-cta .paper-cta-actions .btn-hero{width:100%;justify-content:center}.paper-cta .paper-cta-actions .paper-link-arrow{align-self:flex-start}}.repository-task .share-link-url{display:block;padding:10px 14px;border:1px solid var(--border-color);border-radius:var(--radius-control);background:var(--paper-bg-alt);color:var(--color);font:400 13.5px/21px var(--font-mono);font-variant-ligatures:none;font-feature-settings:"liga" 0,"calt" 0;letter-spacing:0;white-space:normal;overflow-wrap:anywhere;word-break:normal;user-select:all;cursor:text}.dark-mode .repository-task .share-link-url{background:rgba(255,255,255,.04)}.repo-picker-list{overflow-y:scroll}.repo-picker-list:has(>:nth-child(-n+7):last-child){overflow-y:auto}.overview-page .ov-ehours-legend{display:flex;align-items:center;margin:0 0 6px;font:400 12px/16px var(--font-sans);color:var(--ink-soft);gap:10px!important}.overview-page .ov-ehours-swatch{width:8px;height:8px;border-radius:2px;background:color-mix(in srgb,var(--status-progress,#8a6116) 70%,transparent)}.repo-picker-more{display:none}@media (max-width:767px){.repo-picker{--picker-row:65px;--picker-rows:6}.repo-picker-more{display:none}}.dark-mode :is(.paper-page,.anonymize-page) input[type=checkbox]:is(:checked,:indeterminate){background:var(--accent)!important;border-color:var(--accent)!important}.overview-page .ov-ehours-key{display:inline-flex;align-items:center;gap:5px}.overview-page .ov-ehours-swatch.is-error{background:#b42318}.overview-page .ov-ehours-swatch.is-warn{background:var(--status-progress)}.dark-mode .overview-page .ov-ehours-swatch.is-error{background:#f08a82}.tb-view{display:contents}@media (min-width:768px){.file-card-head .tb-view{display:inline-flex!important;align-items:stretch;order:1;margin-left:8px;border:1px solid var(--border-color);border-radius:var(--radius-control);overflow:hidden}.file-card-head .tb-view>.btn{width:34px!important;height:30px!important;min-height:30px!important;padding:0!important;margin:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:var(--paper-card)!important;color:var(--ink-soft)!important;display:inline-flex;align-items:center;justify-content:center}.dark-mode .file-card-head .tb-view>.btn{background:0 0!important}.file-card-head .tb-view>.btn+.btn{border-left:1px solid var(--border-color)!important}.file-card-head .tb-view>.btn:hover{background:var(--hover-bg-color)!important;color:var(--color)!important}.file-card-head .tb-view>.btn .ui-icon{width:15px;height:15px}.file-card-head .tb-view>.btn:is(.is-on,[aria-pressed=true]),.file-card:has(.ace_search:not([style*=none])) .file-card-head .tb-view>.btn-find{background:var(--accent-soft)!important;color:var(--accent)!important;box-shadow:none!important}.dark-mode .file-card-head .tb-view>.btn:is(.is-on,[aria-pressed=true]),.dark-mode .file-card:has(.ace_search:not([style*=none])) .file-card-head .tb-view>.btn-find{background:rgba(124,199,190,.14)!important;color:#a8ddd6!important;box-shadow:none!important}.file-card-head .tb-file{margin-left:8px!important}.file-card-head .btn.btn-symbols{height:32px!important;min-height:32px!important;padding:0 12px!important;border:1px solid var(--border-color)!important;border-radius:var(--radius-control)!important;background:var(--paper-card)!important;box-shadow:none!important;color:var(--color)!important;font-weight:500}.dark-mode .file-card-head .btn.btn-symbols{background:0 0!important}.file-card-head .btn.btn-symbols:hover{background:var(--hover-bg-color)!important}.file-card-head .btn.btn-symbols.is-on{background:var(--accent-soft)!important;color:var(--accent)!important}.file-card-head .btn.btn-symbols .ui-icon{color:var(--ink-soft)}}@media (max-width:767px){.paper-hero .paper-proof-mobile{display:block;margin:16px 0 0!important;text-align:left}}@media (min-width:768px){.paper-table-dashboard .cell-expires .expires-past{color:var(--ink-muted)!important}}.fm-row{align-items:start!important}.fm-row .fm-toggles>span{box-sizing:border-box;height:30px!important;display:inline-flex;align-items:center}.fm-row .fm-input.fm-input-sm{box-sizing:border-box;height:30px!important;min-height:30px!important;display:flex;align-items:center;padding-top:0!important;padding-bottom:0!important}@media (max-width:480px){.fm-row .fm-input.fm-input-sm{width:100%!important;max-width:none!important}}.dashboard-page .dashboard-meta:not(:has(.dashboard-count,.dashboard-view-tabs,.dashboard-active-filters>*)){display:none!important}.dashboard-page:has(.dashboard-short-foot) .paper-table-dashboard{margin-top:16px!important}@media (max-width:767px){.repo-picker-more-sep{display:none}}@media (min-width:768px) and (max-width:1180px){.file-card-head .btn.btn-symbols{width:32px!important;padding:0!important;justify-content:center}}.explorer-content .file-card.file-card-media{display:flex;flex-direction:column;min-height:100%}.explorer-content .file-card-media .file-card-head{position:sticky;top:0;z-index:3}.file-card-media .media-stage{flex:1 1 auto;min-height:0;display:flex;justify-content:center;background:var(--main-bg-color);align-items:flex-start!important;padding:32px!important}.file-card-media .media-stage .image-content{display:block;width:auto;height:auto;padding:0;object-fit:contain;background-color:#fff;border-radius:4px;box-shadow:0 0 0 1px var(--border-color),0 2px 10px rgba(40,32,24,.07);max-width:100%!important;max-height:none!important}.file-card-media .media-stage .image-content[src*=".gif"],.file-card-media .media-stage .image-content[src*=".png"],.file-card-media .media-stage .image-content[src*=".svg"],.file-card-media .media-stage .image-content[src*=".webp"]{background:#fff conic-gradient(#f1eee8 25%,#fff 0 50%,#f1eee8 0 75%,#fff 0) 0 0/16px 16px}.file-card-media .media-stage .video-content{display:block;background:#000;border-radius:var(--radius-control);box-shadow:0 0 0 1px var(--border-color),0 2px 10px rgba(40,32,24,.08);width:auto!important;max-width:min(100%,960px)!important;max-height:none!important;height:auto!important}.file-card-media .pdf-viewer{flex:1 1 auto;background:var(--main-bg-color)}.file-card-media .pdf-toolbar{position:sticky;top:46px;z-index:2;min-height:40px;padding:4px 12px;background:var(--main-bg-color);border-bottom:1px solid var(--border-color)}.file-card-media .pdf-toolbar-btn{min-width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-control);color:var(--ink-soft)}.file-card-media .pdf-toolbar-btn:hover:not(:disabled){background:var(--hover-bg-color);color:var(--color)}.file-card-media .pdf-toolbar-page{height:28px;border-radius:var(--radius-control);border-color:var(--border-color);background:var(--paper-card);font-variant-numeric:tabular-nums}.file-card-media .pdf-toolbar-count{color:var(--ink-muted);opacity:1}.file-card-media .pdf-pages{padding:24px 16px}.file-card-media .pdf-viewer-page{margin-bottom:16px}.file-card-media .file-state{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:0;padding:64px 24px 96px;background:0 0}.file-state-icon{width:28px!important;height:28px!important;color:var(--ink-faint);margin-bottom:14px}.file-card-media.view-error .file-state-icon{color:var(--ink-muted)}.file-state-title{margin:0;font:600 18px/1.35 var(--font-sans)!important;letter-spacing:-.01em;color:var(--color)}.file-state-msg{max-width:420px;margin:6px 0 0;font-size:14px;line-height:1.55;color:var(--ink-soft)}.file-state-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:20px}.file-state-actions .btn{height:36px;min-height:36px;display:inline-flex;align-items:center;gap:6px;padding:0 14px;font-size:14px}.file-state-actions .btn .ui-icon{width:16px;height:16px}.file-card-media .notebook-body{flex:1 1 auto;background:0 0}.explorer-content notebook.markdown-body{display:block;max-width:1040px;margin:0;padding:28px 40px 72px 104px!important;background:0 0!important;font-family:var(--font-sans);font-size:15px;line-height:1.6;color:var(--color)}.explorer-content notebook .nb-input,.explorer-content notebook .nb-output{position:relative}.explorer-content notebook .nb-input:before,.explorer-content notebook .nb-output:before{left:-96px;width:84px;top:11px;font:500 12px/20px var(--font-mono);color:var(--ink-faint)}.explorer-content notebook .nb-output:before{top:4px;color:var(--accent);opacity:.75}.explorer-content notebook .nb-output{margin-top:8px;border:0!important;width:auto;overflow:visible!important}.explorer-content notebook .nb-stderr,.explorer-content notebook .nb-stdout{margin:0;padding:4px 0 4px 15px;font:13px/20px var(--font-mono);background:0 0;color:var(--ink-soft)}.explorer-content notebook .nb-stderr{color:var(--status-error)}.explorer-content notebook .nb-output tr:last-child>*{border-bottom:0!important}@media (max-width:767px){.file-card-media .media-stage{padding:16px!important}.file-card-media .media-stage .image-content,.file-card-media .media-stage .video-content{max-height:none!important}.explorer-content notebook.markdown-body{padding:20px 16px 72px!important;font-size:15px}.explorer-content notebook .nb-input:before,.explorer-content notebook .nb-output:before{position:static;display:block;width:auto;text-align:left;margin-bottom:4px}.explorer-content notebook .nb-stdout{padding-left:0}.file-card-media .pdf-toolbar{top:0;position:relative}.file-card-media .pdf-pages{padding:12px 8px}}.files li.tree-empty{padding:3px 0 5px 42px;font-size:12.5px;line-height:18px;color:var(--ink-muted);list-style:none}.redact-chip .redact-src{display:none!important}.explorer-content notebook .nb-stdout{background:0 0!important;border:0!important}.anonymize-preview-col .pr-title{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;font:600 20px/1.3 var(--font-sans);letter-spacing:-.01em;margin:0 0 4px}.anonymize-preview-col .pr-title .badge{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:999px;font:600 12px/1 var(--font-sans);text-transform:none;letter-spacing:0;background:var(--hover-bg-color)!important;color:var(--ink-soft)!important;border:0}.anonymize-preview-col .anonymize-preview-body>.d-flex+small,.anonymize-preview-col .anonymize-preview-body>small{display:block;color:var(--ink-muted);font-size:13px}.anonymize-preview-col .anonymize-preview-body>.d-flex>small{color:var(--ink-muted);font-size:13px}.anonymize-preview-col .pr-body{margin:16px 0 24px;padding:14px 16px;background:var(--main-bg-color);border:1px solid var(--border-color);border-radius:var(--radius-control);font-size:14px}.anonymize-preview-col .pr-body .markdown-body>:last-child,.anonymize-preview-col .pr-body>:last-child{margin-bottom:0}.anonymize-page .repo-access-details .repo-access-controls{gap:8px}.anonymize-page .repo-access-details .repo-access-controls .btn{height:36px;min-height:36px;padding:0 14px!important;font-size:13px!important;font-weight:500;display:inline-flex;align-items:center;border-radius:var(--radius-button,var(--radius-control))}@media (max-width:767px){.anonymize-page .repo-access-details .repo-access-controls{display:grid;grid-template-columns:1fr 1fr}.anonymize-page .repo-access-details .repo-access-controls .btn{height:44px;min-height:44px;justify-content:center;padding:0 8px!important}}.anonymize-page .repo-access-details>.btn{height:36px;min-height:36px;padding:0 14px!important;font-size:13px!important;display:inline-flex;align-items:center;vertical-align:middle}.anonymize-page .repo-access-details>.btn+.btn{margin-left:8px}@media (max-width:767px){.anonymize-workspace .mobile-preview-jump{display:flex;justify-content:center;height:44px;width:calc(100% - 40px)!important;margin:24px 20px 0!important;margin-top:16px!important}.anonymize-workspace .anonymize-form-col .anonymize-submit-bar{padding-left:20px!important;padding-right:20px!important}}.conference-page .paper-crumbs+.d-flex{align-items:flex-start!important}.conference-page .paper-crumbs+.d-flex .btn,.conference-page .paper-crumbs+.d-flex .status-pill{height:36px;min-height:36px;display:inline-flex;align-items:center}.paper-table .paper-table-row.repo-error{padding-left:16px!important}.paper-table .cell-views,.paper-table .cell-views span{font-family:var(--font-sans)!important;font-variant-numeric:tabular-nums;letter-spacing:0}@media (min-width:768px){.admin-page .paper-table .cell-views .mobile-meta-icon,.conference-page .paper-table .cell-views .mobile-meta-icon{display:none!important}}.admin-page .paper-table-row .status-sub{display:-webkit-box!important;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}.admin-page .anon-sub.meta-dots{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 0;min-width:0;white-space:normal!important;column-gap:14px!important;row-gap:2px!important}.admin-page .anon-sub.meta-dots>*{white-space:nowrap}.overview-page .ov-cache .ov-cache-rates,.overview-page .ov-cache .ov-metrics-scroll+.ov-performance-note{margin-top:16px}.overview-page .ov-cache .ov-cache-rates{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}.overview-page .ov-cache .ov-metrics-table .ov-muted{color:var(--ink-faint)}.overview-page .ov-cache .ov-cache-rates+.ov-performance-note{margin-bottom:16px}.overview-page .ov-views~.ov-panel-card{margin-top:0!important}.q-throughput .q-section-label{display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px;padding-right:176px;min-height:30px}.q-throughput .q-section-label .q-section-right{margin-left:auto;float:none;position:static!important;white-space:nowrap}.q-state-badge{display:inline-flex!important;align-items:center;gap:6px;padding:0!important;background:0 0!important;border:0!important;color:var(--color)!important;font:500 13px/20px var(--font-sans)!important}.q-state-badge::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--status-inactive,var(--ink-faint));flex:none}.q-cell-id{display:table-cell!important;white-space:nowrap;vertical-align:middle!important}.q-cell-id .q-job-link{display:inline-block;max-width:132px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;font-size:12.5px}.q-cell-id .q-chevron{vertical-align:middle}.q-cell-num{font-family:var(--font-sans)!important;font-variant-numeric:tabular-nums}.errors-row-main .msg-url{white-space:nowrap!important;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal!important;word-break:normal!important;max-width:100%}@media (max-width:767px){.file-card-media .file-card-head .mobile-sub>span{display:inline!important}}body:not(.dark-mode) .file-state-actions .btn-primary{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}.file-card-media .media-stage.is-audio{align-items:flex-start!important}@media (max-width:767px){.file-card-head .file-card-path>.mobile-sub>span{display:inline!important}.file-card-head .file-card-path>.mobile-sub{overflow:hidden}}@media (max-width:767px){.explorer-content .file-card.is-code .ace_gutter{width:38px!important}.explorer-content .file-card.is-code .ace_scroller{left:38px!important}.explorer-content .file-card.is-code .ace_gutter-layer{width:38px!important}}@media (hover:none),(max-width:767px){.tree-search-kbd{display:none!important}}body:not(.dark-mode) .token.attr-name,body:not(.dark-mode) .token.builtin,body:not(.dark-mode) .token.char,body:not(.dark-mode) .token.inserted,body:not(.dark-mode) .token.selector,body:not(.dark-mode) .token.string{color:#11704f}body:not(.dark-mode) .token.atrule,body:not(.dark-mode) .token.attr-value,body:not(.dark-mode) .token.keyword{color:#b02f22}body:not(.dark-mode) .token.class-name,body:not(.dark-mode) .token.function{color:#5b3dc2}body:not(.dark-mode) .token.boolean,body:not(.dark-mode) .token.constant,body:not(.dark-mode) .token.deleted,body:not(.dark-mode) .token.number,body:not(.dark-mode) .token.property,body:not(.dark-mode) .token.symbol,body:not(.dark-mode) .token.tag{color:#8a4b0f}body:not(.dark-mode) .token.important,body:not(.dark-mode) .token.regex,body:not(.dark-mode) .token.variable{color:#9a5b00}body:not(.dark-mode) .token.cdata,body:not(.dark-mode) .token.comment,body:not(.dark-mode) .token.doctype,body:not(.dark-mode) .token.prolog{color:#6f6a61}body:not(.dark-mode) .token.entity,body:not(.dark-mode) .token.operator,body:not(.dark-mode) .token.punctuation,body:not(.dark-mode) .token.url{color:#5c574f;background:0 0}.anonymize-workspace .anonymize-topbar{padding:32px 0 20px!important;background:0 0!important}.anonymize-workspace .anonymize-topbar .paper-crumbs{display:block!important;margin:0 0 8px!important;font-size:13px;line-height:18px}.anonymize-workspace .anonymize-topbar .paper-page-title,.anonymize-workspace .anonymize-topbar h1{font:600 28px/34px var(--font-sans)!important;margin:0!important;letter-spacing:-.01em}.anonymize-workspace .anonymize-topbar-head{align-items:center!important}.anonymize-workspace .anonymize-topbar-lede{margin:6px 0 0!important;max-width:640px}.anonymize-workspace .anonymize-topbar-inner>.flow-trail{margin:16px 0 0!important}@media (max-width:767px){.anonymize-workspace .anonymize-topbar{padding:24px 20px 16px!important}.anonymize-workspace .anonymize-topbar .paper-page-title,.anonymize-workspace .anonymize-topbar h1{font-size:26px!important;line-height:32px!important}}.user-settings .settings-checks{grid-template-columns:1fr!important;gap:0!important;padding:0!important;max-width:420px}.user-settings .settings-check{min-height:38px;font-size:14px!important;border-bottom:1px solid var(--border-soft,var(--border-color))}input[type=radio]{-webkit-appearance:none;appearance:none;box-sizing:border-box;width:16px;height:16px;flex:none;display:inline-grid;place-content:center;vertical-align:-3px;border-radius:50%;border:1.5px solid #8f887d;background:var(--paper-card,#fff);cursor:pointer;transition:border-color .12s}input[type=radio]:checked{border-color:var(--accent)}input[type=radio]:checked::before{transform:scale(1)}input[type=radio]:hover:not(:disabled){border-color:var(--accent)}input[type=radio]:disabled{opacity:.5;cursor:default}.dark-mode input[type=radio]{background:0 0;border-color:#7a7268}.dark-mode input[type=radio]:checked{border-color:var(--accent)}input[type=date].form-control{font-family:var(--font-sans)!important;font-size:14px;font-variant-numeric:tabular-nums;color:var(--color);position:relative}@media (max-width:480px){.anonymize-page .repo-access-details .repo-access-controls{grid-template-columns:1fr!important}}.anonymize-page .source-summary{display:flex;align-items:center;gap:6px;margin:6px 0 0;font-size:12.5px;line-height:18px;color:var(--ink-soft);font-variant-numeric:tabular-nums;min-width:0;overflow-wrap:anywhere}.anonymize-page .source-summary .ui-icon{width:14px;height:14px;color:var(--status-ready,var(--accent));flex:none}.anonymize-page .repair-disclosure{margin:10px 0 18px}.anonymize-page .repair-disclosure>summary{display:inline-flex;align-items:center;gap:6px;list-style:none;cursor:pointer;font-size:13px;color:var(--ink-soft)}.anonymize-page .repair-disclosure>summary::-webkit-details-marker{display:none}.anonymize-page .repair-disclosure>summary::before{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);margin-right:2px;transition:transform .12s}.anonymize-page .repair-disclosure[open]>summary::before{transform:rotate(45deg)}.anonymize-page .repair-disclosure>summary:hover{color:var(--color)}.anonymize-page .repair-disclosure .repair-step{margin-top:12px;padding:12px 14px;border:1px solid var(--border-color);border-radius:var(--radius-control)}.anonymize-page .repair-disclosure .repair-step p{margin:0 0 10px;font-size:13px;line-height:1.5;color:var(--ink-soft)}.anonymize-page .repair-disclosure .repair-step .btn{height:34px;min-height:34px;padding:0 12px!important;font-size:13px!important;margin:0 8px 0 0;display:inline-flex;align-items:center}.errors-page .errors-list-head>*,.errors-page .errors-row-main>*{min-width:0}.errors-page .col-msg{min-width:0;overflow:hidden}.errors-page .col-msg .msg-url{display:block;max-width:100%;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis}.errors-page .col-mod .pill-module{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:top}.errors-page .errors-group-head{display:flex;align-items:center;gap:8px;font:600 12.5px/18px var(--font-sans);color:var(--color);background:var(--paper-bg-alt);border-bottom:1px solid var(--border-soft);padding:8px 20px!important;min-height:0!important}.errors-page .errors-group-count{color:var(--ink-muted);font-weight:500;font-variant-numeric:tabular-nums;display:inline-block;min-width:18px;padding:0 6px;border-radius:999px;background:var(--paper-bg-alt);text-align:center;font-size:11.5px;line-height:18px}.errors-page .errors-group-note{margin-left:auto;font-weight:400;color:var(--ink-muted)}.anonymize-fields .form-check{padding-left:28px!important}.anonymize-fields .form-check>.form-check-input{margin-left:-28px!important}.dark-mode .anonymize-page .preserve-row{border-top-color:var(--border-color)!important}@media (max-width:767px){.anonymize-workspace .anonymize-fields .paper-settings-section{padding-left:20px!important;padding-right:20px!important}}.status-dot{background:var(--st-off)}.status-dot:is(.st-ready,.st-active,.st-completed,.status-ready,.status-active,.status-completed){background:var(--st-ok)!important}.status-dot:is(.st-preparing,.st-download,.st-downloading,.st-queued,.st-waiting,.st-delayed,.st-expiring,.st-removing,.status-progress,.status-preparing,.status-download,.status-expiring){background:var(--st-progress)!important}.status-dot:is(.st-error,.st-failed,.st-banned,.status-error,.status-banned){background:var(--st-bad)!important}.status-dot:is(.st-expired,.st-removed,.st-inactive,.st-unknown,.status-expired,.status-removed,.status-inactive){background:var(--st-off)!important}.errors-page .status-pill.status-info{background:var(--paper-bg-alt)!important;color:var(--ink-soft)!important;border-color:var(--border-color)!important}.user-detail-card .user-header .user-header-status{display:flex;align-items:center;gap:10px;min-height:28px;font-size:14px}.user-detail-card .user-header .user-actions{margin-top:8px!important;display:flex;flex-wrap:wrap;gap:8px}.dark-mode .overview-page .ov-svc{border:1px solid var(--border-color)!important}.q-card .q-card-failed{font-weight:500;color:var(--st-bad)}.q-throughput .q-chart-wrap{flex:1 1 auto;min-height:220px;position:relative}.overview-page>.page-head{margin-bottom:10px!important}.conference-page .conf-title-row{display:flex;flex-wrap:wrap;gap:6px 14px;min-height:44px;align-items:center!important}.conference-page .conf-status{display:inline-flex;align-items:center;gap:6px;font:500 13px/20px var(--font-sans);color:var(--ink-soft)}.conference-page .conf-status .status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.conference-page .cell-status .project-attention-action{display:inline-block;margin-top:2px}.conference-page .paper-section-eyebrow{border-bottom:0!important;padding-bottom:0!important;margin-bottom:12px!important}.conference-page .dashboard-filter-row{border-bottom:0!important;padding-bottom:0!important}.conference-page .paper-meta-rule{border-top:0!important;padding-top:4px!important;margin-top:20px!important}.ov-metric-bad,.overview-page .ov-metric-bad{color:var(--st-bad)!important;font-weight:600}.dark-mode .markdown-body :is(p,li,td,th,blockquote,dd) mark.redact-chip,.markdown-body :is(p,li,td,th,blockquote,dd) mark.redact-chip{min-width:2em!important;width:auto!important;padding:0 .45em!important;text-align:center!important}.anonymize-page .anonymize-preview-col.reviewer-preview{display:flex;flex-direction:column;min-height:0;overflow:hidden!important;padding:0!important;background:var(--rp-stage)!important;border-left:1px solid var(--rp-line)}.reviewer-preview .rp-caption{flex:none;display:flex;align-items:center;gap:10px;min-height:52px;padding:12px 24px 10px 20px;font-size:13px;color:var(--ink-muted)}.reviewer-preview .rp-title{font-weight:600;color:var(--color);font-size:14px}.reviewer-preview .rp-count{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-soft,var(--ink-muted));font-variant-numeric:tabular-nums}.reviewer-preview .rp-count .redact-slot{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:18px;padding:0 5px;border-radius:4px;background:var(--slot-bg,#e3ded4)}.reviewer-preview .rp-count .redact-slot i{font:700 11px/1 var(--font-sans)!important;color:var(--slot-num,var(--color))!important}.reviewer-preview .rp-count-none{color:var(--ink-muted)}.reviewer-preview .rp-spacer{flex:1}.reviewer-preview .rp-open{background:0 0;border:0;padding:4px 0;font:500 13px/1.4 var(--font-sans);color:var(--accent)!important;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;white-space:nowrap;cursor:pointer}.reviewer-preview .rp-window{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;margin-left:20px;background:var(--rp-window);border:1px solid var(--rp-line);border-right:0;border-bottom:0;border-radius:10px 0 0 0;box-shadow:0 10px 30px -12px rgba(40,32,24,.22),0 2px 6px rgba(40,32,24,.06);overflow:hidden}.reviewer-preview .rp-chrome{flex:none;display:flex;align-items:center;gap:6px;height:34px;padding:0 12px;background:var(--rp-chrome);border-bottom:1px solid var(--rp-line)}.reviewer-preview .rp-chrome i{width:9px;height:9px;border-radius:50%;background:var(--rp-line);flex:none}.reviewer-preview .rp-url{margin-left:10px;flex:0 1 460px;min-width:0;height:22px;display:flex;align-items:center;padding:0 10px;border-radius:6px;background:var(--rp-window);border:1px solid var(--rp-line);font:12px/1 var(--font-sans);color:var(--ink-soft,var(--ink-muted));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:20px}.reviewer-preview .rp-bar{flex:none;display:flex;align-items:center;gap:12px;height:38px;padding:0 14px;border-bottom:1px solid var(--rp-line);background:var(--rp-chrome)}.reviewer-preview .rp-bar .vb-logo{font:400 15px/1 var(--font-serif, 'Instrument Serif', Georgia, serif);color:var(--color);white-space:nowrap}.reviewer-preview .rp-bar-id{padding-left:12px;border-left:1px solid var(--rp-line);font:500 12px/1 var(--font-mono,ui-monospace,monospace);color:var(--color);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reviewer-preview .rp-bar-kind{margin-left:auto;font-size:12px;color:var(--ink-muted)}.reviewer-preview .rp-body{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:minmax(0,1fr)}.reviewer-preview .rp-body.has-tree{grid-template-columns:188px minmax(0,1fr)}.reviewer-preview .rp-tree{min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:2px;padding:10px 8px;background:var(--rp-tree);align-self:start;padding-bottom:56px!important;border-right:0!important;-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 48px),transparent);mask-image:linear-gradient(to bottom,#000 calc(100% - 48px),transparent);box-shadow:inset -1px 0 0 var(--rp-line)}.reviewer-preview .rp-tree-row{display:flex;align-items:center;gap:7px;height:26px;padding:0 8px;border-radius:4px;font-size:13px;color:var(--color);white-space:nowrap;min-width:0}.reviewer-preview .rp-tree-icon{width:14px;height:14px;flex:none;fill:none;stroke:var(--ink-muted);stroke-width:1.2}.reviewer-preview .rp-tree-name{min-width:0;overflow:hidden;text-overflow:ellipsis}.reviewer-preview .rp-tree-row.is-active{background:var(--hover-bg-color,#edeae4);box-shadow:inset 2px 0 0 var(--accent);font-weight:500}.reviewer-preview .rp-doc{min-height:0;min-width:0;overflow:auto;scrollbar-width:thin;position:relative}.reviewer-preview .rp-file-head{position:sticky;top:0;z-index:1;display:flex;align-items:baseline;gap:10px;padding:10px 24px;background:var(--rp-window);border-bottom:1px solid var(--rp-line);font-size:13px}.reviewer-preview .rp-file-name{font-weight:600;color:var(--color)}.reviewer-preview .rp-file-meta{color:var(--ink-muted)}.anonymize-page .reviewer-preview .anonymize-preview-body{background:0 0!important;border:0!important;border-radius:0!important;box-shadow:none!important;min-height:0!important;padding:24px 32px 40px!important;max-width:860px}.reviewer-preview .rp-state{padding:28px 32px;max-width:560px}.reviewer-preview .rp-state strong{display:block;font-size:15px;font-weight:600;color:var(--color);margin:0 0 6px}.reviewer-preview .rp-state p{font-size:13.5px;line-height:1.55;color:var(--ink-soft,var(--ink-muted));margin:0 0 14px}.reviewer-preview .rp-state-actions{display:flex;flex-wrap:wrap;gap:8px}.reviewer-preview .rp-state-actions .btn{min-height:34px;padding:6px 14px;font-size:13px;border-radius:6px}.reviewer-preview .rp-error{margin:24px 32px;padding:18px 20px;border:1px solid var(--rp-line);border-left:3px solid var(--st-bad,#b42318);border-radius:8px;background:var(--rp-window)}.reviewer-preview .rp-empty{margin:24px 32px;padding:18px 20px;border:1px dashed var(--rp-line);border-radius:8px}.reviewer-preview .rp-loading{display:flex;flex-direction:column;gap:10px;max-width:640px}.reviewer-preview .rp-state-text{font-size:13px;color:var(--ink-muted);margin-bottom:8px}.reviewer-preview .rp-skel{display:block;height:10px;border-radius:4px;background:var(--rp-skel)}.reviewer-preview .rp-skel-title{width:42%;height:20px;margin-bottom:8px}.reviewer-preview .rp-skel-block{width:100%;height:96px;margin:8px 0;border-radius:6px}.reviewer-preview .rp-skel-row .rp-skel{height:9px}@keyframes rp-pulse{50%{opacity:.55}}@media (min-width:1200px){.anonymize-page .anonymize-workspace .anonymize-split{max-width:none!important;margin:0!important;grid-template-columns:calc((100% - 1048px)/ 2) 440px minmax(0,1fr)}.reviewer-preview .rp-caption{padding-left:24px}.reviewer-preview .rp-window{margin-left:24px}}@media (min-width:768px) and (max-width:1199px){.anonymize-page .anonymize-preview-col.reviewer-preview{padding:0!important}}@media (max-width:767px){.anonymize-page .anonymize-preview-col.reviewer-preview{border-left:0;padding:0 16px 20px!important}.reviewer-preview .rp-caption{padding:14px 0 10px;flex-wrap:wrap;row-gap:4px}.reviewer-preview .rp-open{display:none}.reviewer-preview .rp-window{margin:0;border:1px solid var(--rp-line);border-radius:10px;min-height:64vh}.reviewer-preview .rp-chrome{height:30px}.reviewer-preview .rp-url{font-size:11px;margin-left:6px}.reviewer-preview .rp-body.has-tree{grid-template-columns:minmax(0,1fr)}.reviewer-preview .rp-tree{display:none}.reviewer-preview .rp-file-head{padding:9px 16px}.anonymize-page .reviewer-preview .anonymize-preview-body{padding:18px 16px 28px!important}.reviewer-preview .rp-state{padding:20px 16px}.reviewer-preview .rp-empty,.reviewer-preview .rp-error{margin:16px}}.reviewer-preview .rp-tree-note{margin:10px 8px 0;font-size:12px;line-height:1.5;color:var(--ink-muted);white-space:normal}.anonymize-page .submit-reason{margin:8px 0 0;font-size:12.5px;line-height:1.45;color:var(--ink-muted);text-align:center}html:root body .ace_editor .ace_keyword,html:root body .ace_editor .ace_keyword.ace_operator.ace_new,html:root body .ace_editor .ace_storage,html:root body .token.atrule,html:root body .token.important,html:root body .token.keyword,html:root body .token.selector{color:var(--syn-kw)!important}html:root body .ace_editor .ace_entity.ace_name.ace_tag,html:root body .ace_editor .ace_meta.ace_tag,html:root body .ace_editor .ace_support.ace_class,html:root body .ace_editor .ace_support.ace_type,html:root body .token.builtin,html:root body .token.class-name,html:root body .token.tag{color:var(--syn-type)!important}html:root body .ace_editor .ace_string,html:root body .ace_editor .ace_string.ace_regexp,html:root body .token.attr-value,html:root body .token.char,html:root body .token.inserted,html:root body .token.regex,html:root body .token.string,html:root body .token.url{color:var(--syn-str)!important}html:root body .ace_editor .ace_entity.ace_name.ace_function,html:root body .ace_editor .ace_support.ace_function,html:root body .token.function{color:var(--syn-fn)!important;font-weight:400!important}html:root body .ace_editor .ace_constant,html:root body .ace_editor .ace_constant.ace_language,html:root body .ace_editor .ace_constant.ace_numeric,html:root body .ace_editor .ace_support.ace_constant,html:root body .token.boolean,html:root body .token.constant,html:root body .token.number,html:root body .token.symbol{color:var(--syn-num)!important}html:root body .ace_editor .ace_entity.ace_other.ace_attribute-name,html:root body .ace_editor .ace_variable.ace_parameter,html:root body .token.attr-name,html:root body .token.property{color:var(--syn-attr)!important}html:root body .ace_editor .ace_comment,html:root body .token.cdata,html:root body .token.comment,html:root body .token.doctype,html:root body .token.prolog{color:var(--syn-cmt)!important;font-style:italic}html:root body .ace_editor .ace_keyword.ace_operator,html:root body .ace_editor .ace_paren,html:root body .ace_editor .ace_punctuation,html:root body .token.entity,html:root body .token.operator,html:root body .token.punctuation{color:var(--syn-punct)!important;background:0 0!important}html:root body .ace_editor .ace_identifier,html:root body .ace_editor .ace_variable,html:root body .token.variable{color:var(--syn-var)!important}html:root body .token.deleted{color:#b42318!important}html:root body.dark-mode .token.deleted{color:#f2897d!important}@media (max-width:767px){.file-card-head .file-card-path>.mobile-sub.ms{display:flex!important;flex-wrap:wrap;align-items:center;height:17px;line-height:17px;overflow:hidden!important;gap:0!important;white-space:nowrap;text-overflow:clip;grid-column:2!important;grid-row:2;width:auto!important;min-width:0!important;max-width:100%!important;flex:none!important;justify-self:stretch}.file-card-head .file-card-path>.mobile-sub.ms>.ms-item{display:inline-flex!important;align-items:center;flex:0 0 auto;height:17px;margin:0!important;padding:0!important}.file-card-head .file-card-path>.mobile-sub.ms>.ms-redact{color:var(--color)!important;font-weight:600!important}.file-card-head .file-card-path>.mobile-sub.ms>.ms-redact,.file-card-head .file-card-path>.mobile-sub.ms>.ms-redact .meta-redact-word{overflow:visible!important;flex-shrink:0!important;max-width:none!important;padding-right:1px!important}}.seg-bar{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px;margin:0 0 14px}.seg-filter{display:inline-flex;align-items:center;flex-wrap:wrap;gap:2px;padding:3px;border:1px solid var(--border-color);border-radius:9px;background:var(--paper-card,#fff)}.seg-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 11px;border:0;border-radius:6px;background:0 0;font:500 13px/1 var(--font-sans);color:var(--ink-soft,var(--ink-muted));white-space:nowrap;cursor:pointer;transition:background-color .12s,color .12s}.seg-chip .count{font-weight:500;font-variant-numeric:tabular-nums;color:var(--ink-muted)}.seg-chip:hover{background:var(--hover-bg-color,#f1eee8);color:var(--color)}.seg-chip.active,.seg-chip.active:hover{background:var(--accent-soft);color:var(--color);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 40%,transparent);font-weight:600}.seg-chip.active .count{color:var(--ink-soft,var(--ink-muted))}.seg-chip.is-empty:not(.active){opacity:.5}.seg-dot{width:7px;height:7px;border-radius:50%;flex:none;background:var(--st-off,#8a847a)}.seg-dot.ok{background:var(--st-ok)}.seg-dot.warn{background:var(--st-progress)}.seg-dot.bad{background:var(--st-bad)}.seg-dot.off{background:var(--st-off)}.dark-mode .seg-chip.active,.dark-mode .seg-chip.active:hover{background:rgba(124,199,190,.16);color:#f2eee7;box-shadow:inset 0 0 0 1px rgba(124,199,190,.45)}.dark-mode .seg-chip:hover{background:rgba(255,255,255,.05)}.seg-countline{margin:0 0 0 auto;font-size:13px;color:var(--ink-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.seg-countline strong{color:var(--color);font-weight:600}.seg-sep{margin:0 7px;color:var(--ink-faint,var(--ink-muted))}.errors-toolbar .seg-filter{flex:none}@media (max-width:767px){.seg-countline{margin-left:0;white-space:normal}.seg-filter{max-width:100%;overflow-x:auto;flex-wrap:nowrap}}.conf-repo-toolbar,.conference-page .conf-repo-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;margin:28px 0 12px;padding:0;border:0!important}.conf-repo-toolbar .search-wrap{flex:1 1 200px;min-width:170px;max-width:280px;margin:0}.conf-repo-toolbar .search-wrap .form-control{height:38px}.conf-repo-toolbar .dashboard-filter-controls{display:flex;gap:8px;margin:0}.conf-repo-toolbar .dashboard-filter-controls .btn{height:38px}@media (max-width:767px){.conf-repo-toolbar .search-wrap{max-width:none;flex-basis:100%}}.errors-page .col-status .status-empty,.errors-row .col-status .status-empty{color:var(--ink-muted);font-variant-numeric:tabular-nums}.dark-mode .errors-group-head+.errors-row,.dark-mode .errors-row+.errors-row{border-top:1px solid var(--border-color)!important}.dark-mode .errors-row{border-bottom:0!important}.dark-mode .errors-group-head{border-top:1px solid var(--border-color)!important}.anon-sub a.mono-hash,.commit-hash,.mono-hash,a.mono-hash{font-family:var(--font-mono)!important;font-size:12px!important;font-weight:400!important;letter-spacing:0!important;color:inherit!important;background:0 0!important;padding:0!important;border:0!important;text-decoration:none!important}a.mono-hash:hover{text-decoration:underline!important;text-underline-offset:2px}.date-echo{margin:6px 0 0;font-size:12.5px;line-height:1.4;color:var(--ink-soft,var(--ink-muted));font-variant-numeric:tabular-nums}.hosting-date .date-echo{grid-column:2;margin-top:-2px}.container.paper-page.paper-settings{padding-top:32px!important}.paper-page.paper-settings>.paper-crumbs{font-size:13px!important;margin:0 0 8px!important}.paper-page.paper-settings>.paper-page-title{margin:0!important}.paper-page.paper-settings>.paper-page-lede{font-size:15px!important;line-height:1.5!important;margin:6px 0 20px!important;max-width:640px}.anonymize-page .anonymize-workspace .anonymize-topbar-head{justify-content:flex-start!important;gap:12px!important}@media (max-width:767px){.anonymize-page .anonymize-workspace .source-url-label-row{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;margin-bottom:8px!important}.anonymize-page .anonymize-workspace .source-url-label-row .paper-field-label{margin:0!important;flex:none}.anonymize-page .anonymize-workspace .source-url-label-row .repo-access{margin:0 0 0 auto!important;min-width:0;flex:0 1 auto}.anonymize-page .anonymize-workspace .source-url-label-row .repo-access-switch{white-space:nowrap;width:auto!important;flex:none!important;max-width:none!important}.anonymize-page .anonymize-workspace .source-url-label-row .connection-badge{font-size:11.5px!important;white-space:nowrap}}.admin-page.admin-page .paper-table .anon-text{min-width:0;overflow:hidden;flex:1 1 auto;width:100%}.admin-page.admin-page .paper-table .anon-sub.anon-sub{display:flex!important;flex-wrap:nowrap;align-items:baseline;gap:0!important;margin-left:0!important;min-width:0;white-space:nowrap!important;overflow:hidden;column-gap:0!important}.admin-page.admin-page .paper-table .anon-sub.anon-sub>*{white-space:nowrap;align-items:baseline;overflow:hidden;text-overflow:ellipsis;display:inline-block!important}.budget-cell .budget-bar{display:block;width:120px;height:4px;margin:6px 0 0 auto;border-radius:2px;background:var(--border-color);overflow:hidden}.budget-cell .budget-bar i{display:block;height:100%;background:var(--st-ok);border-radius:2px}.budget-cell.is-over{color:var(--st-bad)!important;font-weight:600}.budget-cell.is-over .budget-bar i{background:var(--st-bad)}.budget-cell .ov-metric-bad-text{font-weight:600}.settings-row>div:last-child{width:100%;max-width:640px;min-width:0}.csv-table-wrap{overflow:auto;scrollbar-width:thin;border-bottom:0;background:0 0!important;padding:24px!important;max-height:calc(100vh - 96px)}.csv-table{border-collapse:separate;border-spacing:0;font:13px/1.45 var(--font-sans);font-variant-numeric:tabular-nums;color:var(--color);min-width:0;width:auto}.csv-table .csv-rownum{padding:7px 10px 7px 16px;text-align:right;color:var(--ink-muted);font-size:12px;border-right:1px solid var(--border-color);user-select:none}.dark-mode .csv-table thead th{background:var(--paper-card)!important}.file-card-actions .csv-toggle{padding:2px;border-radius:7px;margin-right:6px}.file-card-actions .csv-toggle .seg-chip{height:26px;padding:0 10px;font-size:12.5px}@media (max-width:767px){.csv-table-wrap{padding:16px!important}.file-card-actions .csv-toggle{margin-right:2px;display:none!important}}.csv-table td:last-child,.csv-table th:last-child{padding-right:24px}.tb-menu .tb-csv-view{display:none}@media (max-width:767px){.tb-menu .tb-csv-view{display:flex}}.csv-table-wrap .csv-table{width:auto!important;min-width:0!important;max-width:none!important;display:table!important;border:1px solid var(--border-color);border-radius:8px;background:var(--paper-card);font-variant-numeric:tabular-nums}@media (min-width:768px){.csv-table .csv-rownum{padding:8px 12px 8px 16px}}.ace_editor .ace_text-layer .ace_redacted,.dark-mode .ace_editor .ace_text-layer .ace_redacted,.dark-mode .markdown-body pre code mark.redact-chip,.markdown-body pre code mark.redact-chip,pre code mark.redact-chip{background:repeating-linear-gradient(135deg,var(--slot-bg) 0 2px,color-mix(in srgb,var(--slot-bg) 35%,transparent) 2px 5px)!important}.nb-output .redact-slot,.nb-output mark.redact-chip,.nb-output-text mark.redact-chip,.output_text mark.redact-chip{font-size:inherit!important}.file-card-state{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:999px;background:color-mix(in srgb,var(--st-progress) 12%,transparent);color:var(--color);font-size:12.5px;font-weight:500;white-space:nowrap}.file-card-state .ui-icon{width:14px;height:14px;color:var(--st-progress)}@media (max-width:767px){.file-card-state{display:none}}@media (min-width:768px){.errors-page .errors-toolbar .select-wrap select{width:auto!important;min-width:132px;flex:none}}@media (min-width:768px){.errors-page .errors-toolbar .search-wrap{flex:1 1 240px!important;min-width:240px!important;max-width:none!important}}.admin-page.admin-page .paper-table .anon-sub.anon-sub>*,.admin-page.admin-page .paper-table .anon-sub.anon-sub>:first-child,.admin-page.admin-page .paper-table .anon-sub.meta-dots>a{flex:0 0 auto;min-width:0!important;max-width:none}.admin-page.admin-page .paper-table .anon-sub.anon-sub>:first-child{flex:0 1 auto}.admin-page .user-name-line{display:flex;align-items:center;gap:6px;min-width:0}.admin-page .user-name-line>.repo-name{min-width:0}.admin-page .user-gh-link{display:inline-flex;align-items:center;justify-content:center;flex:none;width:20px;height:20px;border-radius:4px;color:var(--ink-muted)!important;text-decoration:none!important}.admin-page .user-gh-link:hover{color:var(--color)!important;background:var(--hover-bg-color,rgba(0,0,0,.05))}.admin-page .user-gh-link .fa-github{font-size:13px;margin:0!important}@media (min-width:768px){.admin-page:has(.admin-users-row) .paper-table-head,.admin-page:has(.admin-users-row) .paper-table-row{grid-template-columns:28px minmax(280px,1fr) 120px 140px 120px 40px!important;column-gap:24px!important}}@media (min-width:768px){.conference-page .conf-repo-toolbar{display:grid!important;grid-template-columns:minmax(240px,420px) 1fr auto;grid-template-areas:"seg seg count" "search . sort";align-items:center;gap:12px 14px}.conference-page .conf-repo-toolbar .seg-countline{grid-area:count;justify-self:end;margin:0}.conference-page .conf-repo-toolbar .search-wrap{grid-area:search;width:100%}}@media (min-width:768px){.errors-page .errors-toolbar{display:flex!important;flex-wrap:wrap!important;align-items:center;gap:10px 12px!important}}@media (min-width:768px){.errors-page .errors-toolbar>.autoref{order:2;margin-left:auto!important}.errors-page .errors-toolbar>.search-wrap{order:5;flex:0 1 560px!important;margin-right:auto!important}}.container.paper-page.conference-page{padding-top:32px!important}.conference-page>div>.paper-crumbs{font-size:13px!important;margin:0 0 8px!important;line-height:18px!important;min-height:20px}.conference-page .conf-title-row .paper-page-title{margin:0!important;line-height:44px!important}.conference-page .conf-title-row+.paper-page-lede{margin:6px 0 0!important;font-size:15px}.reviewer-preview .rp-open.is-toggle{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px!important;border:1px solid var(--rp-line)!important;border-radius:6px;background:var(--rp-window)!important;color:var(--color)!important;text-decoration:none!important;font-weight:500}.reviewer-preview .rp-open.is-toggle:hover{border-color:var(--control-border,var(--ink-faint))!important}.reviewer-preview .rp-open-icon{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.reviewer-preview .rp-more{position:sticky;bottom:0;z-index:2;height:112px;margin-top:-112px;display:flex;align-items:flex-end;justify-content:center;padding:0 16px 18px;pointer-events:none;opacity:0;visibility:hidden;background:linear-gradient(to bottom,transparent 0,color-mix(in srgb,var(--rp-window) 85%,transparent) 50%,var(--rp-window) 78%)}@keyframes rp-more-fade{0%,96%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}.reviewer-preview .rp-more-btn{pointer-events:auto;display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px;border-radius:999px;border:1px solid var(--rp-line);background:var(--rp-window);box-shadow:0 4px 14px -6px rgba(40,32,24,.25);font:500 13px/1 var(--font-sans);color:var(--color)!important;text-decoration:none!important;cursor:pointer;white-space:nowrap}.reviewer-preview .rp-more-btn:hover{border-color:var(--control-border,var(--ink-faint))}.reviewer-preview .rp-more-btn.is-hint{cursor:default;color:var(--ink-muted)!important;box-shadow:none}.dark-mode .reviewer-preview .rp-more-btn{box-shadow:0 6px 16px -6px rgba(0,0,0,.6)}.anonymize-page .anonymize-workspace .anonymize-form-col .paper-settings-section{background:0 0!important;box-shadow:none!important}.dark-mode .anonymize-page .anonymize-workspace{background:var(--canvas-bg-color)!important}.dark-mode .reviewer-preview .rp-url{background:var(--canvas-bg-color)}.reviewer-preview .anonymize-preview-body>.d-flex:first-child{align-items:baseline!important}.dark-mode .csv-table-wrap .csv-table{background:var(--canvas-bg-color)}@media (max-width:767px){.anonymize-workspace .hosting-settings>.expiration-choices:last-child{margin-bottom:0!important}}.file-card-meta .sep{font-size:inherit!important;width:auto!important;display:inline!important;margin:0 6px!important;color:var(--ink-faint,var(--ink-muted))}.ov-metrics-table th.ov-event-name{color:var(--color)!important;font-size:13px!important;font-weight:500!important;font-family:var(--font-sans)!important}.ov-metrics-table td.ov-event-traffic{color:var(--ink-muted)!important;font-size:12.5px!important}@media (max-width:767px){.anonymize-page .anonymize-workspace .source-url-label-row>.repo-access{display:flex!important;justify-content:flex-end!important;margin-left:auto!important}}@media (max-width:767px){.file-card-head{display:flex!important}.file-card-head>.file-card-path{display:grid!important;grid-template-columns:74px minmax(0,1fr)!important;grid-template-rows:auto auto;column-gap:10px!important;row-gap:0!important;align-items:center;flex:1 1 0%!important;min-width:0!important;width:auto!important;max-width:none!important}.file-card-head>.file-card-actions{flex:0 0 auto!important;margin-left:0!important}.file-card-head .file-card-path .card-files-btn,.file-card-head .file-card-path>.card-files-btn{grid-column:1!important;grid-row:1/3!important;width:74px!important;min-width:74px!important;max-width:74px!important;height:44px!important;padding:0 10px!important;margin:0!important;justify-content:center;justify-self:start;align-self:center!important;flex:none!important;overflow:hidden}.file-card-head .file-card-path>.breadcrumb{overflow:hidden}.file-card-head .file-card-path>.copy-path-btn{display:none!important}}@media (min-width:768px){.reviewer-preview .rp-body.has-tree{display:grid!important;grid-template-columns:188px minmax(0,1fr);align-items:start;overflow:auto;scrollbar-width:thin}.reviewer-preview .rp-body.has-tree>.rp-tree{box-sizing:border-box;padding:10px 8px 14px!important;-webkit-mask-image:none!important;mask-image:none!important;box-shadow:none!important;border-right:1px solid var(--rp-line)!important;border-bottom:1px solid var(--rp-line)!important;border-bottom-right-radius:10px;float:none;position:sticky;top:0;align-self:start;width:auto;margin:0!important;z-index:2}.reviewer-preview .rp-body.has-tree>.rp-doc{min-height:0;overflow:visible!important;min-width:0;margin-top:0!important}.reviewer-preview .rp-body.has-tree .rp-state{margin-left:0!important;padding-left:0!important}}.anonymize-page .source-url-label-row{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:space-between!important;flex-wrap:nowrap!important;gap:12px!important;min-height:32px;margin-bottom:8px!important}.anonymize-page .source-url-label-row>.repo-access{display:flex!important;justify-content:flex-end!important;margin:0 0 0 auto!important;padding:0!important;border:0!important;background:0 0!important;flex:none!important;width:auto!important;order:0!important}.anonymize-page .source-url-label-row .repo-access-switch{display:inline-flex!important;align-items:center;gap:0!important;padding:2px!important;border:1px solid var(--border-color)!important;border-radius:7px!important;background:var(--paper-bg-alt)!important;width:auto!important;flex:none!important;max-width:none!important;margin:0!important}.anonymize-page .source-url-label-row .repo-access-switch button{display:inline-flex!important;align-items:center;min-height:26px!important;height:26px!important;padding:0 10px!important;border-radius:5px!important;border:0!important;text-decoration:none!important;box-shadow:none!important;color:var(--ink-soft,var(--ink-muted))!important;background:0 0!important;font:500 12.5px/1 var(--font-sans)!important;white-space:nowrap;opacity:1!important;margin:0!important}.anonymize-page .source-url-label-row .repo-access-switch button[aria-pressed=true]{background:var(--paper-card)!important;color:var(--color)!important;font-weight:600!important;box-shadow:0 0 0 1px var(--border-color)!important}.anonymize-page .source-url-label-row .repo-access-switch .ui-icon{display:none!important}.admin-page .paper-table.paper-table-repos .cell-status .status-sub{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.overview-page .ov-ebar-label{width:60px!important;min-width:60px!important;flex:none!important;text-transform:none!important}.dashboard-view-tabs .attention-count:not(.has-attention){color:var(--ink-muted)}.status-preset-note{color:var(--ink-muted);font-size:12px}.status-line .status-removed-sep{margin:0 -2px}.status-line .project-attention-action.status-enable{margin:0!important;padding:0!important;min-height:0!important;display:inline!important;font-size:13px;line-height:inherit;white-space:nowrap}@media (max-width:767px){.paper-table-dashboard .status-line .status-removed-sep{display:inline!important;margin:0 6px!important;visibility:visible!important}.paper-table-dashboard .status-line{gap:6px!important}}@media (min-width:768px){.admin-page .paper-table.paper-table-repos .anon-sub:has(.meta-sep)>:first-child{flex:0 1 auto!important;min-width:6ch!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media (min-width:768px){.reviewer-preview .rp-body.has-tree .anonymize-preview-body :is(p,ul,ol,dl,h1,h2,h3,h4,h5,h6,pre,blockquote,hr,.highlight){display:revert}.reviewer-preview .rp-body.has-tree .anonymize-preview-body :is(pre,.highlight){display:block}}.reviewer-preview .diff-file-table .diff-code{padding-left:calc(12px + var(--hang,4ch));text-indent:calc(-1 * var(--hang,4ch))}.explorer-content notebook .nb-code-scroll{position:relative}.explorer-content notebook .nb-code-scroll.is-overflowing::before{content:"";position:absolute;z-index:1;bottom:5px;left:calc(8px + var(--thumb-x,0px));width:var(--thumb-w,40px);height:3px;border-radius:2px;background:var(--ink-faint,#b9b2a6);opacity:.8;pointer-events:none}.overview-page .ov-ehours-legend .ov-ehours-note{margin-left:8px;color:var(--ink-muted);white-space:nowrap}.overview-page .ov-ehours-legend .ov-ehours-note .seg-sep{margin:0 6px}.q-table td.q-cell-duration,.q-table th.q-th-num{text-align:right!important;font-variant-numeric:tabular-nums;padding-right:20px}.seg-dot.done{background:0 0!important;box-shadow:inset 0 0 0 1.5px var(--st-off)}.errors-page .errors-list-head>.col-sev,.errors-page .errors-row-main>.col-sev{display:none!important}.anonymize-page .anon-url-echo .anon-url-id{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}@media (max-width:767px){.anonymize-page .source-url-label-row .repo-access-switch{padding:3px!important;border-radius:8px!important}.anonymize-page .source-url-label-row .repo-access-switch button{min-height:30px!important;height:30px!important;padding:0 12px!important}}.overview-page .ov-performance .ov-metric-name>span{color:var(--color)!important;font-size:13px!important;font-weight:500!important}.overview-page .ov-performance .ov-metric-name>small{font-size:11px!important;font-weight:400!important;color:var(--ink-muted)!important}.overview-page .ov-performance td.num{font-weight:400!important;color:var(--ink-soft,var(--color))!important}.paper-page .dashboard-meta.dashboard-meta{display:flex!important;flex-wrap:nowrap;align-items:flex-end;gap:16px;margin:20px 0 16px!important;padding:0!important;border-bottom:1px solid var(--border-color,var(--border))}.paper-page .dashboard-meta .dashboard-view-tabs{gap:24px;margin-bottom:-1px}.paper-page .dashboard-meta .dashboard-count{margin-left:auto;align-self:center;padding-bottom:1px}.dashboard-page .dashboard-active-filters-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px}.dashboard-page .dashboard-active-filters-row:empty{display:none}.dashboard-title-line{display:flex;align-items:baseline;gap:12px}.dashboard-count-head{display:none;font-size:13px;color:var(--ink-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.dashboard-page .dashboard-filter-row{margin-top:0!important}.conference-page .conf-view-meta{margin-top:28px!important}.conference-page .conf-repo-toolbar.conf-repo-toolbar{display:flex!important;align-items:center;gap:12px;margin:0 0 12px!important}.conference-page .conf-repo-toolbar .search-wrap{flex:0 1 420px;max-width:420px;min-width:0}.conference-page .conf-repo-toolbar .dashboard-filter-controls{margin-left:auto!important}.paper-page .conf-repo-toolbar .dropdown-toggle .filter-btn-label{color:var(--ink-muted);font-weight:500}.paper-page .conf-repo-toolbar .dropdown-toggle .filter-btn-value{font-weight:500}@media (max-width:767px){.dashboard-count-head{display:inline}.paper-page .dashboard-meta .dashboard-count.is-plain{display:none!important}.paper-page .dashboard-meta.dashboard-meta{margin:16px 0 12px!important}.paper-page .dashboard-meta .dashboard-view-tabs{gap:20px}.conference-page .conf-repo-toolbar .search-wrap{flex:1 1 auto;max-width:none}}@media (max-width:767px){.anonymize-page .source-url-label-row .repo-access-switch.repo-access-switch{padding:3px!important;border-radius:8px!important;height:36px;box-sizing:border-box}}@media (min-width:768px){.reviewer-preview .rp-body.has-tree.has-tree{display:block!important;overflow:auto;scrollbar-width:thin}.reviewer-preview .rp-body.has-tree>.rp-tree.rp-tree{position:static!important;float:none;display:flex!important;flex-direction:row;flex-wrap:wrap;align-items:center;box-sizing:border-box;margin:0!important;overflow:visible;background:var(--rp-tree);-webkit-mask-image:none!important;mask-image:none!important;box-shadow:none!important;width:100%!important;max-width:none;padding:7px 32px 7px 24px!important;gap:2px 4px;border:0!important;border-bottom:1px solid var(--rp-line)!important;border-radius:0!important;padding-left:32px!important}.reviewer-preview .rp-body.has-tree>.rp-tree .rp-tree-row{flex:0 0 auto;max-width:220px}.reviewer-preview .rp-body.has-tree>.rp-tree .rp-tree-note{flex:0 1 auto;line-height:1.45;margin:0 0 0 auto!important;padding-left:16px;max-width:480px;font-size:12px!important;text-align:right;color:var(--ink-muted)!important}}.reviewer-preview pre code :is(.md-diff-line,.code-line){line-height:20px!important;vertical-align:top;margin-top:0;margin-bottom:0;border:0;box-shadow:none;outline:0}.status-dot.status-dot:is(.st-expiring,.st-removing,.status-expiring,.status-removing){background:linear-gradient(90deg,var(--st-off) 50%,transparent 50%)!important;box-shadow:inset 0 0 0 1.5px var(--st-off)!important}.errors-page .errors-group-count{margin-left:6px}.dark-mode .errors-page .errors-group-count{background:rgba(255,255,255,.07)}@media (min-width:768px){.admin-page .paper-table-repos .cell-status .status-sub{display:-webkit-box!important;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal!important;overflow:hidden;text-overflow:clip}}@media (min-width:768px){.reviewer-preview .rp-body.has-tree>.rp-tree+.rp-doc .rp-file-head{border-top:0!important}}@media (min-width:768px){.admin-page.admin-page .paper-table.paper-table-repos .anon-sub.anon-sub>*{flex:0 0 auto!important;min-width:0!important;max-width:100%!important;overflow:visible;text-overflow:clip}.paper-table-repos .src-path .src-owner{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-table-repos .src-path .src-repo{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.conference-page .dashboard-page.conf-rows{max-width:none;padding:0!important;margin:0}@media (max-width:767px){.dashboard-status-filter.is-view-hidden{display:none!important}}.dark-mode .q-legend-exec,.q-legend-exec{border-top:2px dashed var(--q-time-series)!important;color:var(--q-time-series)!important}@media (min-width:768px){.dashboard-page .paper-table.paper-table-dashboard .paper-table-row.repo-error{padding-left:12px!important;box-shadow:inset 3px 0 0 var(--status-error)!important;border-left:0!important}}.reviewer-preview .rp-tree-label{display:inline-flex;align-items:center;gap:6px;margin:0;padding:3px 0;font-size:12px;font-weight:500;line-height:18px;color:var(--ink-muted);white-space:nowrap}.reviewer-preview .rp-tree-label .rp-tree-icon{width:14px;height:14px;flex:none;fill:none;stroke:currentColor;stroke-width:1.2}.admin-page.admin-page .paper-table .cell-anon .anon-sub.anon-meta{display:flex!important;flex-wrap:nowrap;align-items:center;min-width:0;max-width:100%;height:auto!important;overflow:hidden;margin-left:0!important;gap:0!important;line-height:18px}.q-table td.q-cell-detail.is-error{color:var(--status-error)}.q-table .q-cell-progress{min-width:148px}.q-table .q-progress-label{font-family:var(--font-sans)!important;font-size:12px!important;font-variant-numeric:tabular-nums;color:var(--ink-muted);min-width:36px}.overview-page .ov-chart-card .ov-dot-legend.ov-dot-user-fill{width:12px!important;height:2px!important;border-radius:1px!important;background:var(--accent)!important;vertical-align:middle}body.dark-mode .errors-page .dot-info,body.dark-mode .errors-page .seg-info,body.dark-mode .errors-page .sev-dot.sev-info{background:var(--ink-faint)!important} \ No newline at end of file diff --git a/public/css/style.css b/public/css/style.css index 4a84c14..4039e8c 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -34,9 +34,7 @@ --accent-soft: rgba(124, 199, 190, 0.12); /* --ink-muted is used for small text: 6.5:1 on the canvas. --ink-faint is for non-text (icons, rules, dots), never for copy. */ - --ink-muted: #A39D92; --ink-faint: #8A857C; - --ink-soft: #B5AFA2; /* Semantic status colours (text/dot/border on canvas ≥ 4.5:1) */ --status-ready: #5FB27A; @@ -56,6 +54,22 @@ background-color: var(--canvas-bg-color); color: var(--color); + --bucket-error-bg: rgba(255, 139, 123, 0.10); + --bucket-error-fg: var(--status-error); + --bucket-error-bd: rgba(255, 139, 123, 0.28); + --bucket-error-dot: var(--status-error); + --bucket-warn-bg: rgba(255, 211, 122, 0.10); + --bucket-warn-fg: var(--status-progress); + --bucket-warn-bd: rgba(255, 211, 122, 0.28); + --bucket-warn-dot: var(--status-progress); + --bucket-info-bg: rgba(152, 200, 168, 0.10); + --bucket-info-fg: #98C8A8; + --bucket-info-bd: rgba(152, 200, 168, 0.28); + --bucket-info-dot: #98C8A8; + --card-shadow: 0 1px 2px rgba(0, 0, 0, 0.35), 0 6px 18px rgba(0, 0, 0, 0.30); + --card-shadow-hover: 0 2px 4px rgba(0, 0, 0, 0.45), 0 12px 28px rgba(0, 0, 0, 0.40); + --ink-soft: #ADA699; + --ink-muted: #A39D92; } body { @@ -121,6 +135,27 @@ body { font-size: 14px; letter-spacing: -0.005em; line-height: 1.5; + overflow-y: hidden; + --bucket-error-bg: #FCEDED; + --bucket-error-fg: #8A1F1F; + --bucket-error-bd: #F0C4C4; + --bucket-error-dot: #B53737; + --bucket-warn-bg: #FFF3DF; + --bucket-warn-fg: #7A4D00; + --bucket-warn-bd: #F0D8A0; + --bucket-warn-dot: #B07A2F; + --bucket-info-bg: #EAF2EC; + --bucket-info-fg: #2C5D3A; + --bucket-info-bd: #C5DCCD; + --bucket-info-dot: #5B8D6B; + --card-shadow: 0 1px 2px rgba(26, 24, 21, 0.04), 0 4px 14px rgba(26, 24, 21, 0.05); + --card-shadow-hover: 0 1px 2px rgba(26, 24, 21, 0.06), 0 8px 24px rgba(26, 24, 21, 0.08); + --page-max: 1048px; + --page-gutter: 32px; + --control-h: 40px; + --page-top: 32px; + --crumb-h: 18px; + --crumb-gap: 8px; } .fadeIn { @@ -187,8 +222,7 @@ select:-webkit-autofill:focus { } input:-internal-autofill-selected, -.form-control, -.custom-select { +.form-control { color: var(--input-color); background-color: var(--input-bg) !important; border-color: var(--border-color); @@ -205,10 +239,6 @@ body { overflow-x: hidden; } -body { - overflow-y: hidden; -} - /* Keep the route view as the scroll container below the header. */ #app { flex: 1 1 auto; min-height: 0; } .app-header { flex: 0 0 auto; } @@ -219,6 +249,9 @@ body { padding-right: max(40px, calc((100% - 1140px) / 2 + 32px)) !important; } } +@media (max-width: 575.98px) { + .app-header .navbar.navbar-expand-lg:has(>.navbar-collapse.show), .app-header .navbar.navbar-expand-lg:has(>.navbar-collapse.collapsing) { flex-wrap: wrap !important; } +} .app-view { display: block; flex: 1 1 auto; @@ -250,7 +283,7 @@ a:hover { .markdown-body .emoji { height: 1.3em; margin: 0; - vertical-align: -0.1em; + vertical-align: text-bottom; } .navbar.navbar-expand-lg { @@ -272,8 +305,9 @@ a:hover { justify-content: center; border-radius: var(--radius-control) !important; } -.navbar-toggler .navbar-toggler-icon { width: 22px; height: 22px; } .navbar-toggler .navbar-toggler-icon { + width: 22px; + height: 22px; background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='%231A1815' stroke-width='2' stroke-linecap='round' d='M4 8h22M4 15h22M4 22h22'/%3E%3C/svg%3E") !important; } @@ -297,11 +331,6 @@ a:hover { color: var(--color) !important; } -.navbar .nav-link.active { - color: var(--color) !important; - border-bottom-color: var(--color); -} - .navbar .nav-link.nav-icon { padding: 0 !important; margin: 0 8px; @@ -354,19 +383,13 @@ a:hover { padding: 0 14px !important; margin-left: 6px; border: 1px solid var(--border-color); - background: var(--paper-card); - color: var(--color) !important; border-radius: var(--radius-control); font-size: 13px; font-weight: 500; line-height: 1; } - -.dark-mode .navbar .btn-signin { border-color: #5A554D; background: transparent; } .navbar .btn-signin:hover { - background: var(--hover-bg-color); - border-color: var(--ink-faint); - color: var(--color) !important; + filter: brightness(.94); } .navbar .nav-support { @@ -381,9 +404,7 @@ a:hover { padding: 0 10px; border: 1px solid transparent; border-radius: var(--radius-control); - color: var(--ink-muted); font-size: 13px; - font-weight: 500; text-decoration: none; } @@ -404,24 +425,17 @@ a:hover { } .navbar .nav-signin-m { display: none; } -@media (min-width: 992px) { .navbar > .nav-support { display: none !important; } } +@media (min-width: 992px) { .navbar > .nav-support { display: none !important; } +} .navbar .nav-support-inline { display: inline-flex !important; align-items: center; gap: 6px; } .navbar .nav-support-inline .ui-icon { width: 15px; height: 15px; } @media (max-width: 991px) { .navbar .nav-signin-m { - display: inline-flex; - align-items: center; order: 0; - height: 40px; - padding: 0 14px; - margin-left: 0; margin-right: 8px; border: 1px solid var(--border-color); border-radius: var(--radius-control); - background: var(--paper-card); - color: var(--color); font-size: 13px; - font-weight: 500; text-decoration: none; } .navbar .nav-support { @@ -475,11 +489,6 @@ a:hover { color: var(--header-color); } -.rgba-gradient { - background: var(--canvas-bg-color); - color: var(--color); -} - /* ===== Paper landing ===== Copy-first hero with the product on the right, a flat proof and stats strip, the before/after example, one screenshot with three tabs, and a @@ -492,7 +501,6 @@ a:hover { .paper-wrap { /* Width instead of padding so section rules end at the content edge. */ - width: min(1076px, calc(100% - 64px)); margin-left: auto; margin-right: auto; padding-left: 0; @@ -500,17 +508,11 @@ a:hover { } .paper-eyebrow { - font-family: var(--font-mono); - font-size: 12.5px; - letter-spacing: 0.06em; text-transform: uppercase; - color: var(--ink-soft); - font-weight: 500; } /* Hero */ .paper-hero { - max-width: 1140px; margin: 0 auto; padding: 40px 32px 0; display: grid; @@ -557,22 +559,16 @@ a:hover { align-items: center; font-family: var(--font-sans); border: 1px solid var(--color); - background: var(--color); - color: var(--canvas-bg-color); - padding: 12px 20px; - font-size: 14px; font-weight: 500; - border-radius: var(--radius-control); letter-spacing: -0.005em; transition: background 0.15s, border-color 0.15s, transform 0.1s; } .btn-hero:hover { - background: var(--primary-hover-bg); border-color: var(--primary-hover-bg); - color: var(--canvas-bg-color); text-decoration: none; transform: translateY(-1px); + filter: brightness(.94); } .btn-hero-ghost { @@ -592,11 +588,9 @@ a:hover { } .paper-link-arrow { - font-size: 14px; - color: var(--ink-soft); text-decoration: underline; text-underline-offset: 4px; - text-decoration-color: var(--border-color); + text-decoration-color: color-mix(in srgb, var(--accent) 55%, transparent) !important; } .paper-link-arrow:hover { @@ -611,48 +605,47 @@ a:hover { display: flex; flex-wrap: wrap; gap: 6px 18px; - font-size: 13px; - color: var(--ink-muted); } .paper-reassure li { white-space: nowrap; } -@media (min-width: 1100px) { .paper-reassure { flex-wrap: nowrap; } } +@media (min-width: 1100px) { + .paper-reassure { flex-wrap: wrap; column-gap: 18px !important; row-gap: 6px !important; } +} .paper-reassure li::before { - content: "\2713"; - color: var(--status-ready); - margin-right: 7px; font-size: 14px; font-weight: 600; + color: var(--ink-soft) !important; + content: "" !important; + display: inline-block; + width: 14px; + height: 14px; + margin-right: 7px; + vertical-align: -2px; + background: var(--accent); + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/contain no-repeat; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/contain no-repeat; } /* Browser frame around screenshots */ .paper-frame { border-radius: var(--radius-surface); background: var(--paper-card); - border: 1px solid var(--border-color); - box-shadow: 0 24px 60px rgba(26, 24, 21, 0.10), 0 2px 6px rgba(26, 24, 21, 0.04); overflow: hidden; -} - -.dark-mode .paper-frame { - box-shadow: 0 24px 60px rgba(0, 0, 0, 0.45); + box-shadow: 0 0 0 1px var(--border-color), 0 12px 32px rgba(40,30,20,.08) !important; } .paper-frame-bar { display: flex; align-items: center; gap: 8px; - height: 34px; padding: 0 12px; border-bottom: 1px solid var(--border-soft); - background: var(--paper-bg-alt); font-family: var(--font-mono); font-size: 11px; - color: var(--ink-muted); + justify-content: flex-start !important; } .paper-frame-bar .dots { - display: flex; gap: 5px; } @@ -660,12 +653,10 @@ a:hover { width: 9px; height: 9px; border-radius: 50%; - background: color-mix(in srgb, var(--ink-faint) 45%, transparent); + background: color-mix(in srgb, var(--ink-muted) 55%, transparent) !important; } .paper-frame-bar .url { - flex: 1; - text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; @@ -697,7 +688,6 @@ a:hover { .hero-mock-tree-title { font-size: 11px; font-weight: 600; - color: var(--ink-muted); padding: 0 8px 8px; } .hero-mock-row { @@ -721,7 +711,6 @@ a:hover { stroke-linejoin: round; } .hero-mock-row.is-active { - background: rgba(128, 128, 128, 0.15); color: var(--color); font-weight: 500; } @@ -735,7 +724,7 @@ a:hover { border-bottom: 1px solid var(--border-soft); font-size: 13px; } -.hero-mock-doc-bar span { font-size: 12px; color: var(--ink-muted); } +.hero-mock-doc-bar span { font-size: 12px; } .hero-mock-doc-body { padding: 18px 22px 22px; font-size: 13.5px; @@ -764,10 +753,6 @@ a:hover { color: var(--color); } .hero-mock .redact { - background: var(--accent-soft); - color: var(--accent); - border-radius: 4px; - padding: 1px 5px; font-family: var(--font-mono); font-size: 0.88em; } @@ -775,39 +760,12 @@ a:hover { .hero-mock { grid-template-columns: 1fr; min-height: 0; } .hero-mock-tree { display: none; } } +.hero-mock .is-active::before { left: 0 !important; } /* Proof strip */ -.paper-proof { - margin-top: 48px; - padding-top: 18px; - padding-bottom: 18px; - border-top: 1px solid var(--border-color); - display: flex; - flex-wrap: wrap; - gap: 12px 30px; - align-items: center; -} - -.paper-proof-venues { - display: flex; - gap: 22px; - align-items: center; - font-family: var(--font-serif); - font-size: 22px; - letter-spacing: -0.01em; - color: var(--ink-soft); -} - -.paper-proof-venues i { - font-style: normal; - font-family: var(--font-sans); - font-size: 14px; - color: var(--ink-faint); -} /* Stats: one hairline strip, no cards */ .paper-stats { - margin-top: 40px; padding-top: 16px; border-top: 1px solid var(--border-color); } @@ -817,11 +775,7 @@ a:hover { display: flex; justify-content: space-between; align-items: center; - font-family: var(--font-mono); - font-size: 12px; - letter-spacing: 0.08em; text-transform: uppercase; - color: var(--ink-soft); margin-bottom: 14px; } @@ -836,15 +790,21 @@ a:hover { width: 6px; height: 6px; border-radius: 50%; - background: var(--status-ready); + box-shadow: 0 0 0 3px var(--accent-soft) !important; } .paper-stats-grid { display: grid; - grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color); + grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } +.paper-stats-grid .paper-stat-card:first-child { padding-left: 0 !important; } +@media (max-width: 767px) { .paper-stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } +} +@media (max-width: 767px) { .paper-stats-grid .paper-stat-card:nth-child(odd) { padding-left: 0 !important; } +} +.dark-mode .paper-stats-grid .paper-stat-card { border-color: #3A3631 !important; } .paper-stat-card { display: flex; @@ -862,54 +822,36 @@ a:hover { } .paper-stat-value { - font-size: 44px; - font-weight: 500; - letter-spacing: -0.04em; line-height: 1; color: var(--color); font-variant-numeric: tabular-nums; + font-size: 40px !important; + font-weight: 400 !important; } .paper-stat-label { margin-top: 6px; font-size: 13px; - color: var(--ink-soft); } .paper-stat-value.is-pending { color: var(--ink-faint); } -.paper-stat-bars { - display: block; - width: 100%; - height: 34px; - margin-top: 18px; - overflow: visible; -} - -.paper-stat-bars rect { - fill: color-mix(in srgb, var(--ink-muted) 55%, transparent); -} - -.paper-stat-bars rect.is-latest { - fill: var(--accent); -} .paper-stat-delta { - margin-top: 10px; - font-family: var(--font-mono); - font-size: 12px; - color: var(--ink-muted); + margin-top: 6px !important; + font-family: var(--font-sans) !important; + font-size: 13px !important; } /* Section heads */ .paper-section-head { - margin-top: 88px; display: grid; grid-template-columns: 1fr 1.4fr; gap: 40px; align-items: start; } .paper-section-head > p { padding-top: 34px; } -@media (max-width: 991px) { .paper-section-head > p { padding-top: 0; } } +@media (max-width: 991px) { .paper-section-head > p { padding-top: 0; } +} .paper-section-head h2, .paper-qa h2 { @@ -939,89 +881,15 @@ a:hover { } /* Before / after example */ -.paper-preview { - margin-top: 28px; - display: grid; - grid-template-columns: 1fr 1fr; - gap: 14px; -} - -.paper-preview .pane { - background: var(--paper-card); - border: 1px solid var(--border-color); - border-radius: var(--radius-surface); - overflow: hidden; - min-width: 0; -} - -.paper-preview .pane-header { - display: flex; - align-items: center; - justify-content: space-between; - gap: 12px; - padding: 10px 14px; - border-bottom: 1px solid var(--border-soft); -} - -.paper-preview .pane-label { - font-family: var(--font-mono); - font-size: 11px; - color: var(--ink-muted); - white-space: nowrap; -} - -.paper-preview .pane-url { - font-family: var(--font-mono); - font-size: 11px; - color: var(--ink-soft); - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - min-width: 0; -} - -.paper-preview .pane-body { - padding: 16px 18px; - font-family: var(--font-mono); - font-size: 13px; - line-height: 1.9; - color: var(--ink-soft); -} - -.paper-preview .pane-body strong { - color: var(--color); - font-weight: 600; -} - -.paper-preview .tok { - color: var(--ink-faint); -} - -.paper-preview .term { - background: color-mix(in srgb, var(--status-error) 9%, transparent); - color: inherit; - border-radius: 4px; - padding: 0 4px; - text-decoration: line-through; - text-decoration-color: color-mix(in srgb, var(--status-error) 60%, transparent); -} -.dark-mode .paper-preview .term { background: color-mix(in srgb, var(--status-error) 16%, transparent); } -.paper-preview .redact { - background: var(--accent-soft); - color: var(--accent); - border-radius: 4px; - padding: 0 5px; -} /* Features: vertical tabs on the left, one screenshot on the right */ .paper-features { - margin-top: 28px; padding-top: 28px; border-top: 1px solid var(--border-color); display: grid; - grid-template-columns: 5fr 7fr; - gap: 48px; align-items: start; + grid-template-columns: 1fr 1.4fr !important; + gap: 40px !important; } .paper-features-list { @@ -1058,6 +926,8 @@ a:hover { border-right: 1.5px solid var(--ink-muted); border-bottom: 1.5px solid var(--ink-muted); transform: rotate(45deg); + border-color: var(--ink-soft) !important; + border-width: 0 2px 2px 0 !important; } .paper-feature:not(.is-on) .paper-feature-tab:hover::after { border-color: var(--color); } .paper-feature.is-on .paper-feature-tab::after { @@ -1080,6 +950,7 @@ a:hover { .paper-feature-tab .paper-eyebrow { display: block; margin-bottom: 6px; + font-size: 12px !important; } .paper-feature-title { @@ -1144,31 +1015,11 @@ a:hover { /* Each crop zooms on the part of the screenshot that carries the message. Source screenshots are 2880x1800. */ -.paper-crop { - position: relative; - height: 380px; - overflow: hidden; - - background: var(--paper-card); -} - -.paper-crop img { - position: absolute; - left: 0; - top: 0; - max-width: none; - height: auto; - display: block; -} /* 1:1 crops (the frame is ~600px wide) so screenshot text stays crisp and legible. */ -.paper-crop-anonymize img { width: 213%; transform: translate(-1.5%, -18%); } -.paper-crop-review img { width: 213%; transform: translate(0, -6.5%); } -.paper-crop-manage img { width: 213%; transform: translate(-12.3%, -6.5%); } /* FAQ teaser */ .paper-qa { - margin-top: 88px; display: grid; grid-template-columns: 1fr 1.4fr; gap: 40px; @@ -1200,7 +1051,7 @@ a:hover { transition: transform 0.15s, border-color 0.15s; } .paper-qa .q a:hover::after { border-color: var(--accent); transform: translate(3px, -2px) rotate(-45deg); } -.paper-qa .q a:hover { text-decoration: underline; text-underline-offset: 3px; } +.paper-qa .q a:hover { text-underline-offset: 3px; color: var(--accent); text-decoration: none; } .paper-qa .q a { display: block; font-weight: 500; @@ -1209,11 +1060,6 @@ a:hover { margin-bottom: 6px; } -.paper-qa .q a:hover { - color: var(--accent); - text-decoration: none; -} - .paper-qa .q p { margin: 0; font-size: 14px; @@ -1225,6 +1071,14 @@ a:hover { @media (max-width: 1100px) { .paper-hero-shot .paper-frame { width: 100%; } } +@media (max-width: 767px) { + .paper-hero-shot { + max-height: none !important; + overflow: visible !important; + -webkit-mask-image: none !important; + mask-image: none !important; + } +} @media (max-width: 991px) { .paper-hero { @@ -1237,9 +1091,6 @@ a:hover { grid-template-columns: 1fr; gap: 16px; } - .paper-stats-grid { - grid-template-columns: 1fr 1fr; - } .paper-stat-card:nth-child(2n) { border-right: 0; margin-right: 0; @@ -1250,12 +1101,18 @@ a:hover { } } +@media (min-width: 992px) { + .paper-qa { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important; column-gap: 20px !important; } +} + +@media (min-width: 900px) { + .paper-qa > div:first-child { position: sticky; top: 96px; align-self: start; } +} + /* Phone */ @media (max-width: 767px) { - .paper-wrap { width: calc(100% - 40px); } .paper-hero { - padding-left: 20px; - padding-right: 20px; + row-gap: 28px !important; } .paper-reassure { flex-direction: column; gap: 6px; } .paper-hero h1.hero-title { @@ -1268,37 +1125,19 @@ a:hover { width: 100%; justify-content: center; } - .paper-proof { - margin-top: 48px; - } .paper-stat-card { padding: 18px 16px 16px 0; margin-right: 16px; } - .paper-stat-value { - font-size: 40px; - } - .paper-section-head, - .paper-qa { - margin-top: 72px; - } - .paper-preview { - grid-template-columns: 1fr; - } - .paper-preview .pane-body { - font-size: 12px; - line-height: 1.8; - } /* Tabs become a strip above the screenshot; the selected description moves below it. display:contents lets the tab, the panel and the description reorder as direct children of the section. */ .paper-features { display: flex; flex-wrap: wrap; - gap: 0; padding-top: 0; border-top: 0; - margin-top: 24px; + row-gap: 0 !important; } .paper-features-list, .paper-feature, @@ -1307,19 +1146,14 @@ a:hover { } .paper-feature-tab { order: 1; - flex: 1 1 0; width: auto; - padding: 12px 0 10px; border-bottom: 2px solid var(--border-color); border-radius: 0; - text-align: left; - } - .paper-feature.is-on .paper-feature-tab { - border-bottom-color: var(--color); + flex: 1 1 0 !important; + text-align: center !important; + align-self: flex-start; } .paper-feature-tab .paper-eyebrow { - margin: 0; - font-size: 11px; letter-spacing: 0.08em; } .paper-feature-tab .paper-feature-title { @@ -1328,22 +1162,12 @@ a:hover { .paper-feature-panel { order: 2; width: 100%; - margin-top: 20px; animation: none; } - .paper-crop { - height: 240px; - } - .paper-crop-anonymize img { width: 230%; transform: translate(-1.5%, -8%); } - .paper-crop-review img { width: 240%; transform: translate(-1%, -8%); } - .paper-crop-manage img { width: 220%; transform: translate(-3%, -9%); } .paper-feature-more { order: 3; width: 100%; } - .paper-feature.is-on .paper-feature-more { - margin-top: 18px; - } .paper-feature-more .paper-feature-title-m { display: block; font-size: 28px; @@ -1357,9 +1181,25 @@ a:hover { } .paper-footer-foot { flex-direction: column; - gap: 6px; } } +/* One chevron style for the feature steps and the FAQ */ +.paper-feature .paper-feature-tab::after { border-width: 0 1.5px 1.5px 0 !important; border-color: var(--ink-soft) !important; } +/* FAQ chevrons a step darker */ +.paper-features .paper-feature:not(.is-on) .paper-feature-tab::after, +.paper-features .paper-feature.is-on .paper-feature-tab::after { + border-width: 0 1.5px 1.5px 0 !important; + border-color: #57524A !important; +} +@media (min-width: 1100px) { .paper-features { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important; column-gap: 20px !important; } +} +.dark-mode .paper-features .paper-feature .paper-feature-tab::after { border-color: #ADA69B !important; } +.paper-feature:not(.is-on) .paper-feature-tab:hover .paper-feature-title { color: var(--accent); } +@media (max-width: 767px) { + .paper-feature .paper-feature-tab::after, .paper-features .paper-feature .paper-feature-tab::after { display: none !important; } +} +@media (min-width: 1100px) { .paper-reassure li { white-space: nowrap; } +} .dropdown-menu { background-color: var(--paper-card, var(--main-bg-color)) !important; @@ -1434,7 +1274,7 @@ a:hover { border-radius: var(--radius-surface); overflow: clip; } -.file-card:not(.is-code) .file-card-head { position: sticky; top: 0; z-index: 2; border-radius: var(--radius-surface) var(--radius-surface) 0 0; } +.file-card:not(.is-code) .file-card-head { top: 0; z-index: 2; border-radius: var(--radius-surface) var(--radius-surface) 0 0; } .file-card.is-code { display: flex; flex-direction: column; @@ -1449,52 +1289,50 @@ a:hover { min-height: 46px; padding: 6px 8px 6px 16px; border-bottom: 1px solid var(--border-color); - background: var(--paper-card); } -.dark-mode .file-card-head { background: var(--paper-card); } .file-card-meta { font-size: 13px; color: var(--ink-soft); white-space: nowrap; - overflow: hidden; text-overflow: ellipsis; font-variant-numeric: tabular-nums; + overflow: visible !important; } -.file-card-meta .sep { margin: 0 8px; color: var(--ink-faint); } .file-card-head .btn { height: 32px; min-height: 32px; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 500; padding: 0 10px; } -.file-card-head .btn-seg:not(.view-switch) { gap: 2px; padding-left: 8px; margin-left: 4px; border-left: 1px solid var(--border-color); } -.file-card-head .btn-seg:not(.view-switch) > .btn { - border: 0 !important; - border-radius: var(--radius-control) !important; - margin: 0 !important; - background: transparent !important; - color: var(--ink-soft); -} -.file-card-head .btn-seg:not(.view-switch) > .btn:hover { background: var(--hover-bg-color) !important; color: var(--color); } -.file-card-head .btn-seg:not(.view-switch):has(> .btn:only-child), -.file-card-actions > .btn-seg:first-child { border-left: 0; padding-left: 0; margin-left: 0; } .file-card-head .btn.btn-icon-only { width: 32px; padding: 0 !important; color: var(--ink-soft); } .file-card-head .btn.btn-icon-only:hover { color: var(--color); background: var(--hover-bg-color) !important; } .file-card .file-card-body { flex: 1 1 auto; min-height: 0; } .file-card-actions { display: inline-flex; align-items: center; gap: 4px; flex-shrink: 0; margin-left: auto; } /* Desktop: the file card header carries the path, so the separate status bar goes away. */ -.file-card-path { display: none; align-items: center; gap: 2px; min-width: 0; } +.file-card-path { align-items: center; gap: 2px; min-width: 0; display: inline-flex; } .file-card-path .paths { overflow: hidden; } .file-card-path + .file-card-meta, .file-card-path + .view-switch { margin-left: 8px; } .status-bar.is-redundant { display: none; } -.file-card-path { display: inline-flex; } @media (max-width: 767px) { - .file-card-head { flex-wrap: wrap; row-gap: 0; } - .file-card-head .file-card-meta { order: 3; flex-basis: 100%; margin: 0 0 6px !important; padding: 0 !important; border: 0 !important; font-size: 12px; color: var(--ink-muted); } - .file-card-head .file-card-meta .meta-extra { display: inline !important; } + .file-card-head { + flex-wrap: wrap; + padding: 6px 8px 6px 16px; + position: sticky; + top: 0; + z-index: 2; + padding-left: 12px !important; + padding-right: 12px !important; + gap: 4px !important; + } + .file-card-head .file-card-meta { + padding: 0 !important; + border: 0 !important; + color: var(--ink-muted); + align-self: center; + font-size: 13px !important; + order: 3; + } .file-card-head .btn-ghost { color: var(--ink-soft); } .file-card-head .breadcrumb-root, .file-card-head .breadcrumb-root + .breadcrumb-item::before { display: none !important; } .file-card-head .breadcrumb-item { padding-left: 0; } - .file-card-head { gap: 6px; padding: 6px 8px 6px 16px; } .file-card-actions { gap: 2px; } - .file-card-actions .btn-seg { margin-left: 4px; } } @media (min-width: 992px) { .file-card-path + .file-card-meta { padding-left: 14px; border-left: 1px solid var(--border-color); } @@ -1502,41 +1340,28 @@ a:hover { .file-card.is-code { height: calc(100% - 36px); } } .card-files-btn { margin-right: 4px; } -.leftCol-zip { - display: inline-flex; - align-items: center; - gap: 8px; - margin-bottom: 6px; - font-size: 13px; - font-weight: 500; - color: var(--ink-soft); - text-decoration: none; -} -.leftCol-zip:hover { color: var(--color); text-decoration: none; } -.leftCol-zip .ui-icon { width: 15px; height: 15px; } -.file-card-actions .btn-seg { margin-left: 6px; } .file-card-head .btn.btn-find, .file-card-head .btn.btn-goto { padding: 0 10px; gap: 6px; font-weight: 400; } -@media (max-width: 1180px) { .file-card-head .btn-goto .btn-find-label, .file-card-head .btn-find .btn-find-label { display: none; } .file-card-head .btn-goto, .file-card-head .btn-find { width: 32px; padding: 0 !important; } } +@media (max-width: 1180px) { .file-card-head .btn-goto .btn-find-label, .file-card-head .btn-find .btn-find-label { display: none; } + .file-card-head .btn-goto, .file-card-head .btn-find { padding: 0 !important; } +} @media (max-width: 991px) { - .file-card-head .btn-find { width: 32px; padding: 0 !important; } + .file-card-head .btn-find { padding: 0 !important; } .file-card-head .btn-find-label { display: none; } } -@media (max-width: 767px) { .file-card-head .btn-find { width: 40px; } } - /* Ace find box, restyled to match the app */ .ace_search { - top: 8px !important; - right: 12px !important; - left: auto !important; - background: var(--paper-card) !important; color: var(--color) !important; - border: 1px solid var(--border-color) !important; - border-radius: var(--radius-surface) !important; - box-shadow: 0 8px 24px rgba(26, 24, 21, 0.14); - padding: 6px !important; font-family: var(--font-sans) !important; font-size: 13px !important; + display: flex; + flex-wrap: nowrap; + max-width: none !important; + width: auto !important; + top: 0 !important; + left: 0 !important; + right: 0 !important; + align-items: center !important; } .ace_search_field { background: var(--input-bg) !important; @@ -1544,11 +1369,11 @@ a:hover { border: 1px solid var(--border-color) !important; border-radius: var(--radius-control) !important; margin-right: 4px !important; - height: 28px !important; padding: 0 8px !important; font-family: var(--font-sans) !important; + width: 200px !important; } -.ace_search_field:focus { border-color: var(--ink-muted) !important; outline: none; box-shadow: 0 0 0 3px var(--hover-bg-color); } +.ace_search_field:focus { outline: none; } .ace_searchbtn, .ace_button { background: transparent !important; color: var(--ink-soft) !important; @@ -1561,29 +1386,39 @@ a:hover { .ace_searchbtn:hover, .ace_button:hover { background: var(--hover-bg-color) !important; color: var(--color) !important; } .ace_button.checked { border-color: var(--accent) !important; color: var(--accent) !important; } -.ace_search_counter { color: var(--ink-soft) !important; font-size: 13px; margin: 0 8px 0 4px !important; font-variant-numeric: tabular-nums; } -.ace_search { display: flex; flex-wrap: nowrap; align-items: center; gap: 6px; max-width: none !important; width: auto !important; } -.dark-mode .ace_search { background: var(--paper-card) !important; } -.ace_search .ace_button.checked { background: var(--accent-soft) !important; color: var(--accent) !important; border-color: var(--accent) !important; } +.ace_search_counter { margin: 0 8px 0 4px !important; align-self: center; } +.ace_search .ace_button.checked { z-index: 1; border-color: var(--accent) !important; } .ace_search .ace_searchbtn[action="findAll"], .ace_search .ace_button[action="searchInSelection"], .ace_search .ace_replace_form, .ace_search .ace_button[action="toggleReplace"] { display: none !important; } -.ace_search_field { width: 200px !important; } +.ace_search { padding: 6px 12px !important; } +.ace_search .ace_search_field { box-sizing: border-box; } .ace_search_form { display: flex; align-items: center; margin: 0 !important; float: none !important; } -.ace_search_options { display: flex !important; align-items: center; gap: 4px; margin: 0 !important; float: none !important; text-align: left !important; } -.ace_search_options .ace_button { width: 28px; height: 28px !important; line-height: 26px !important; padding: 0 !important; border-radius: var(--radius-control) !important; font-size: 12px !important; text-align: center; } -.ace_searchbtn_close { position: static !important; margin-left: 2px; } -.ace_editor .ace_marker-layer .ace_selected-word { background: color-mix(in srgb, #E0A94A 30%, transparent) !important; border: 0 !important; border-radius: 2px; } -.ace_editor.ace-chrome .ace_marker-layer .ace_selection, -.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection { background: #F2B544 !important; box-shadow: 0 0 0 1px #B7791F; border-radius: 2px; } -.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection { background: #B7791F !important; box-shadow: 0 0 0 1px #F2B544; } +.ace_search_options { + display: flex !important; + align-items: center; + margin: 0 !important; + float: none !important; + text-align: left !important; + gap: 0 !important; +} +.ace_search_options .ace_button { + width: 28px; + height: 28px !important; + line-height: 26px !important; + padding: 0 !important; + font-size: 12px !important; + text-align: center; + border-radius: 0 !important; +} +.ace_search_options .ace_button:first-of-type { border-radius: var(--radius-control) 0 0 var(--radius-control) !important; } +.ace_search_options .ace_button:last-of-type { border-radius: 0 var(--radius-control) var(--radius-control) 0 !important; } +.ace_searchbtn_close { position: static !important; filter: none !important; font-size: 0 !important; align-self: center; order: 99; opacity: 1 !important; } .ace_editor .ace_indent-guide-active { background: none !important; box-shadow: inset 1px 0 0 var(--border-color) !important; } -.ace_searchbtn_close { filter: none !important; opacity: 0.6; } .ace_prompt_container { background: var(--paper-card) !important; border: 1px solid var(--border-color) !important; border-radius: var(--radius-surface) !important; box-shadow: 0 12px 32px rgba(26,24,21,0.16) !important; } .btn.btn-ghost { background: transparent !important; border-color: transparent !important; color: var(--ink-muted); } .btn.btn-ghost:hover { background: var(--hover-bg-color) !important; color: var(--color); } -.btn.btn-ghost.is-on { color: var(--color); background: var(--hover-bg-color) !important; box-shadow: none; } +.btn.btn-ghost.is-on { box-shadow: none !important; } .btn.btn-ghost:focus:not(:focus-visible):not(.is-on):not(:hover) { background: transparent !important; box-shadow: none; } -.dark-mode .file-card-head .btn-seg .btn { background: transparent !important; border-color: var(--border-color) !important; color: var(--color); font-weight: 500; } .file-card-head .btn.btn-goto, .file-card-head .btn.btn-find { color: var(--ink-soft); } .file-card-head > .view-switch { gap: 2px; @@ -1609,7 +1444,6 @@ a:hover { cursor: default; } .dark-mode .file-card-head > .view-switch .btn.is-on { background: #3D3934 !important; box-shadow: none; } -.status-bar .btn.btn-ghost.btn-zip { color: var(--ink-soft); } .copy-path-btn { margin-left: -4px; } @media (max-width: 767px) { .file-card-head .btn, .file-card-head .btn.btn-icon-only { height: 40px; min-height: 40px; } @@ -1620,7 +1454,6 @@ a:hover { @media (max-width: 767px) { .file-card { margin: 0; border: 0; border-radius: 0; } .file-card.is-code { height: 100%; } - .file-card-head { position: sticky; top: 0; z-index: 2; padding-left: 16px; } } /* Root file listing above the README, like a repository's front page. */ @@ -1696,14 +1529,13 @@ a:hover { /* Rendered README / markdown in the viewer: a reading column in the app's type. */ .explorer-content .file-card .file-content.markdown-body { - max-width: 920px; - margin: 0; min-height: 0; - padding: 28px 40px 48px; - background: var(--paper-card) !important; font-family: var(--font-sans); font-size: 15px; line-height: 1.65; + max-width: 880px; + background: transparent !important; + margin: 0 auto !important; } .explorer-content .markdown-body h1, .explorer-content .markdown-body h2 { @@ -1743,7 +1575,7 @@ a:hover { font-size: 0.86em; } @media (max-width: 767px) { - .explorer-content .file-card .file-content.markdown-body { padding: 20px 16px 72px; font-size: 15px; } + .explorer-content .file-card .file-content.markdown-body { font-size: 15px; } .explorer-content .markdown-body h1 { font-size: 24px; } } @@ -1760,24 +1592,13 @@ a:hover { border-right: 1px solid var(--border-soft); } .ace_editor .ace_gutter-cell { padding-right: 14px; padding-left: 12px; font-size: 12px; } -@media (max-width: 767px) { .ace_editor .ace_gutter-cell { padding-right: 8px; padding-left: 6px; } } .ace_editor .ace_gutter-active-line { background: transparent !important; } .ace_editor .ace_indent-guide { background: none !important; box-shadow: inset 1px 0 0 var(--border-soft); } .ace_editor .ace_fold-widget { opacity: 0; transition: opacity 0.15s; } .ace_editor .ace_gutter:hover .ace_fold-widget, .ace_editor .ace_fold-widget.ace_closed { opacity: 0.7; } -.ace_editor .ace_marker-layer .ace_selection { background: var(--accent-soft) !important; } -.ace-chrome .ace_keyword, .ace-chrome .ace_storage { color: #B4362A; } -.ace-chrome .ace_string { color: #2B5A3E; } -.ace-chrome .ace_constant.ace_numeric, .ace-chrome .ace_constant.ace_language, .ace-chrome .ace_support.ace_constant { color: #1F6A64; } -.ace-chrome .ace_comment { color: #7A746A; font-style: italic; } -.ace-chrome .ace_entity.ace_name.ace_function, .ace-chrome .ace_support.ace_function { color: #6B45B8; } .ace-chrome .ace_variable.ace_parameter { color: #8A5A12; font-style: normal; } .ace-chrome .ace_meta.ace_tag, .ace-chrome .ace_entity.ace_name.ace_tag { color: #116329; } -.ace-chrome .ace_entity.ace_other.ace_attribute-name { color: #0550AE; } -.ace-chrome .ace_variable, .ace-chrome .ace_identifier, .ace-chrome .ace_paren, .ace-chrome .ace_punctuation { color: var(--color); } .ace-nord-dark .ace_keyword, .ace-nord-dark .ace_storage { color: #F2897D; } -.ace-nord-dark .ace_string { color: #9DD3A8; } -.ace-nord-dark .ace_constant.ace_numeric, .ace-nord-dark .ace_constant.ace_language, .ace-nord-dark .ace_support.ace_constant { color: #7CC7BE; } .ace-nord-dark .ace_comment { color: #9A948A; font-style: italic; } .ace-nord-dark .ace_entity.ace_name.ace_function, .ace-nord-dark .ace_support.ace_function { color: #C9A8F5; } .ace-nord-dark .ace_variable.ace_parameter { color: #E0A94A; font-style: normal; } @@ -1793,13 +1614,6 @@ a:hover { vertical-align: middle; } -.warning-feedback { - width: 100%; - margin-top: 0.25rem; - font-size: 80%; - color: #dc8e35; -} - .dropdown-item:focus, .dropdown-item:hover { background-color: var(--hover-bg-color); @@ -1856,11 +1670,6 @@ a:hover { /* Firefox */ } -.white_border { - border: 1px solid white; - color: white; -} - .leftCol { display: flex; position: relative; @@ -1887,7 +1696,8 @@ a:hover { /* ===== File tree search & header ===== */ .leftCol-search { - padding: 10px 12px 0; + padding: 12px 12px 8px !important; + padding-bottom: 6px !important; } .tree-search-box { display: flex; @@ -1918,14 +1728,13 @@ a:hover { min-width: 0; } .tree-search-input::placeholder { - color: var(--ink-muted); + color: #6E685F !important; + opacity: 1; } +.dark-mode .tree-search-input::placeholder { color: #9C958A !important; } .tree-search-kbd { font-family: var(--font-sans); font-size: 11px; - color: var(--ink-muted); - background: var(--paper-bg-alt); - border: 1px solid var(--border-color); border-radius: 4px; padding: 1px 6px; line-height: 1.4; @@ -1941,14 +1750,6 @@ a:hover { line-height: 1; } .tree-search-clear:hover { color: var(--color); } - -.leftCol-project-header { - display: flex; - align-items: center; - justify-content: space-between; - padding: 12px 14px 4px; - gap: 8px; -} .project-name { font-family: var(--font-sans); font-size: 13px; @@ -1959,14 +1760,6 @@ a:hover { white-space: nowrap; min-width: 0; } -.project-file-count { - font-family: var(--font-sans); - font-size: 12px; - color: var(--ink-muted); - white-space: nowrap; - flex-shrink: 0; - margin-left: auto; -} /* ===== File tree ===== */ .files { @@ -2031,21 +1824,20 @@ a:hover { .files .file.active > a::before { content: ""; position: absolute; - left: 0; - top: 4px; - bottom: 4px; - width: 2px; - border-radius: 0 2px 2px 0; background: var(--accent); + top: 4px !important; + bottom: 4px !important; + width: 3px !important; + border-radius: 0 2px 2px 0 !important; + left: 0 !important; } .files .file.active > a { - border-radius: 0 var(--radius-control) var(--radius-control) 0; - background: rgba(128, 128, 128, 0.12); color: var(--color); font-weight: 500; + border-radius: var(--radius-control) !important; + position: relative; } .files .file.active > a .tree-icon-file { color: var(--color); } -.files .file.active > a .tree-count { color: var(--ink-muted); } /* Tree icon shapes */ .tree-icon-folder, @@ -2105,10 +1897,12 @@ a:hover { border-bottom: 1.5px solid var(--ink-muted); transform: translateX(-1px) rotate(-45deg); transition: transform 0.12s ease; + border-color: #7A746A !important; } .files .folder.open > a .tree-toggle::after { transform: translateY(-2px) rotate(45deg); } +.dark-mode .tree-toggle::after { border-color: #8F887D !important; } /* Spacer for nested files to align with folder contents (replaces the toggle arrow width) */ .tree-spacer { @@ -2126,19 +1920,6 @@ a:hover { white-space: nowrap; } -.files a:not(:hover):not(.tree-focused) .tree-count { opacity: 0; } -.tree-count { - transition: opacity 0.12s; - font-family: var(--font-sans); - font-size: 12px; - font-variant-numeric: tabular-nums; - color: var(--ink-muted); - flex-shrink: 0; - margin-left: auto; - padding-left: 8px; - opacity: 0.7; -} - .files .folder > a { color: var(--color); } @@ -2153,10 +1934,6 @@ a:hover { } /* Search results */ -.tree-search-path { - color: var(--ink-muted); - font-size: 11px; -} .tree-search-empty { padding: 16px 12px; color: var(--ink-muted); @@ -2171,17 +1948,21 @@ a:hover { border: 0; border-right: 1px solid var(--border-color); } -.dark-mode .leftCol { background: var(--paper-bg-alt); } -.dark-mode .explorer-content .markdown-body img { filter: brightness(0.8); } -.dark-mode .hero-mock-tree { background: #1F1D1A; } +.dark-mode .leftCol { border-right: 1px solid var(--border-color) !important; } +.dark-mode .explorer-content .markdown-body img { filter: none !important; } .dark-mode .hero-mock-row.is-active { background: rgba(255, 255, 255, 0.10); } -.dark-mode .files .file.active > a { background: rgba(255, 255, 255, 0.10); } +.dark-mode .files .file.active>a { color: #F2EEE8 !important; } +.files li:not(.active) > a.tree-focused:not(:hover) { background: transparent !important; } +.files:focus-visible a.tree-focused { box-shadow: inset 0 0 0 1px var(--border-color); border-radius: 6px; } +.files li.folder > a.tree-focused:hover { background: var(--hover-bg-color) !important; } .status-bar { background: var(--canvas-bg-color); - border-bottom: 1px solid var(--border-color); - padding: 8px 20px; min-height: 48px; + align-items: center; + background-color: var(--canvas-bg-color); + margin: 0; + border-bottom: 1px solid var(--border-color); } .paths .breadcrumb-item, @@ -2201,13 +1982,12 @@ a:hover { font-weight: 600; letter-spacing: 0; } -.status-files-btn { display: none !important; } -.leftCol-resizer { display: none; } +.status-files-btn { display: none !important; gap: 6px; } +.leftCol-resizer { display: none; top: 44px !important; } @media (min-width: 992px) { .leftCol-resizer { display: block; position: absolute; - top: 0; bottom: 0; left: calc(var(--sidebar-w, 280px) - 3px); width: 6px; @@ -2217,82 +1997,54 @@ a:hover { .leftCol-resizer:hover, body.is-resizing .leftCol-resizer { background: color-mix(in srgb, var(--accent) 35%, transparent); } body.is-resizing { cursor: col-resize; user-select: none; } } -.leftCol-hide { - display: none; - align-items: center; - justify-content: center; - width: 26px; - height: 26px; - margin-right: -6px; - border: 0; - border-radius: var(--radius-control); - background: transparent; - color: var(--ink-muted); - cursor: pointer; -} -.leftCol-hide:hover { background: var(--hover-bg-color); color: var(--color); } -.leftCol-hide .ui-icon { width: 16px; height: 16px; } @media (min-width: 992px) { - .leftCol-hide { display: inline-flex; } .explorer-page.files-hidden .leftCol { display: none !important; } .explorer-page.files-hidden .status-files-btn { display: inline-flex !important; } } @media (max-width: 991px) { - .status-files-btn { display: inline-flex !important; flex-shrink: 0; } + .status-files-btn { + display: inline-flex !important; + flex-shrink: 0; + height: 40px !important; + min-height: 40px !important; + padding: 0 12px; + border-radius: var(--radius-control); + } .explorer-page .sidebar-toggle { display: none !important; } } @media (max-width: 767px) { .status-bar .btn, .status-bar .btn.btn-icon-only { min-height: 40px; } - .status-bar .btn.btn-icon-only { width: 40px; } } .dark-mode .status-bar .btn { background: var(--paper-card); } -.btn-seg { display: inline-flex; } -.btn-seg > .btn { border-radius: 0; margin: 0; } -.btn-seg > .btn + .btn { margin-left: -1px; } -.btn-seg > .btn:first-child { border-radius: var(--radius-control) 0 0 var(--radius-control); } -.btn-seg > .btn:last-child { border-radius: 0 var(--radius-control) var(--radius-control) 0; } -.btn-seg > .btn:hover, .btn-seg > .btn:focus-visible { position: relative; z-index: 1; } .status-bar .btn { height: 32px; min-height: 32px; display: inline-flex; align-items: center; gap: 6px; } .status-bar .btn.btn-icon-only { padding-left: 0; padding-right: 0; width: 32px; justify-content: center; } -.status-files-btn { gap: 6px; } -@media (max-width: 991px) { .status-files-btn { height: 40px !important; min-height: 40px !important; padding: 0 12px; border-radius: var(--radius-control); } } @media (max-width: 767px) { - .file-card.is-code.no-wrap { position: relative; } - .file-card.is-code.no-wrap::after { content: ""; position: absolute; top: 46px; right: 0; bottom: 0; width: 44px; pointer-events: none; background: linear-gradient(to right, transparent, var(--paper-card) 85%); z-index: 20; } - .file-card-head .btn-goto { display: none !important; } + .file-card.is-code.no-wrap::after { + content: ""; + position: absolute; + top: 46px; + right: 0; + bottom: 0; + pointer-events: none; + background: linear-gradient(to right, transparent, var(--paper-card) 85%); + z-index: 20; + width: 64px !important; + display: none !important; + } } @media (max-width: 575px) { - .status-bar .btn-zip { display: none !important; } .navbar .nav-support { display: none !important; } .navbar .nav-signin-m { margin-left: auto; } } .ace_editor .ace_gutter-cell { cursor: pointer; } .ace_editor .ace_gutter-cell:hover { color: var(--color); } -.status-bar .file-meta { - flex: 0 0 auto; - margin-right: auto; - font-size: 12px; - color: var(--ink-muted); - white-space: nowrap; - font-variant-numeric: tabular-nums; -} -@media (max-width: 575px) { .status-bar .file-meta { display: none; } } .paths .breadcrumb-item + .breadcrumb-item::before { content: '/'; color: var(--ink-faint); padding: 0 6px 0 3px; } -.last-update { - font-family: var(--font-mono); - font-size: 11px; - color: var(--ink-muted); - padding: 8px 10px; - border-top: 1px solid var(--border-color); - letter-spacing: 0.02em; -} - .ace_editor { height: 100%; } @@ -2303,12 +2055,8 @@ a:hover { .status-bar { display: flex; - align-items: center; gap: 12px; - background-color: var(--canvas-bg-color); padding: 10px 14px; - margin: 0; - border-bottom: 1px solid var(--border-color); border-radius: 0; flex-shrink: 0; } @@ -2322,14 +2070,9 @@ a:hover { .status-bar-actions .btn { display: inline-flex; align-items: center; - gap: 6px; background: var(--paper-card); border: 1px solid var(--border-color); color: var(--color); - border-radius: 6px; - padding: 4px 10px; - font-size: 13px; - min-height: 30px; } .status-bar-actions .btn:hover { background: var(--hover-bg-color); @@ -2494,9 +2237,7 @@ a:hover { } .file-error { - font-weight: bold; - font-size: 50px; - text-align: center; + text-align: left; } pdfviewer { @@ -2529,50 +2270,29 @@ notebook { /* ===== Paper FAQ (two-col editorial) ===== */ .paper-faq { - max-width: 1140px; margin: 0 auto; padding: 48px 32px 80px; font-family: var(--font-sans); } .paper-faq-hero { - padding-bottom: 40px; border-bottom: 1px solid var(--border-color); - margin-bottom: 36px; -} -.paper-faq-eyebrow { - font-family: var(--font-mono); - font-size: 11px; - color: var(--ink-muted); - letter-spacing: 0.14em; - text-transform: uppercase; - margin-bottom: 32px; } .paper-faq-title { - font-family: var(--font-serif); - font-weight: 400; - font-size: clamp(2.6rem, 5.5vw, 4.6rem); - line-height: 1.03; - letter-spacing: -0.02em; color: var(--color); margin: 0 0 22px; - max-width: 14em; + font-size: clamp(2.2rem, 4vw, 3.1rem) !important; } -.paper-faq-title em { font-style: italic; color: var(--color); } .paper-faq-lede { color: var(--ink-soft); - font-size: 18px; - line-height: 1.55; - max-width: 38em; margin: 0; } -.paper-faq-lede a { color: var(--link-color); border-bottom: 1px solid currentColor; } -.paper-faq-lede a:hover { color: var(--accent); border-bottom-color: var(--accent); } +.paper-faq-lede a { border-bottom: 1px solid var(--ink-faint) !important; } +.paper-faq-lede a:hover { color: var(--accent); border-bottom-color: var(--color) !important; } .paper-faq-body { display: grid; - grid-template-columns: 220px 1fr; - gap: 60px; align-items: start; + grid-template-columns: 180px minmax(0,1fr); } .paper-faq-toc { position: sticky; @@ -2580,13 +2300,7 @@ notebook { font-size: 14px; } .paper-faq-toc-head { - font-family: var(--font-mono); - font-size: 11px; - color: var(--ink-muted); - letter-spacing: 0.14em; - text-transform: uppercase; padding-bottom: 10px; - margin-bottom: 6px; border-bottom: 1px solid var(--border-color); } .paper-faq-toc nav { @@ -2603,7 +2317,7 @@ notebook { .paper-faq-toc nav a:hover, .paper-faq-toc nav a.active { color: var(--color); - border-left-color: var(--color); + border-left-color: var(--accent) !important; } .faq-section { @@ -2613,30 +2327,25 @@ notebook { width: 100%; } .faq-section h4.faq-cat { - font-family: var(--font-serif); - font-weight: 400; - font-size: clamp(1.7rem, 2.6vw, 2.2rem); - letter-spacing: -0.015em; color: var(--color); margin: 0 0 6px; - padding-bottom: 14px; border-bottom: 1px solid var(--border-color); + font: 400 30px/1.15 var(--font-serif); + letter-spacing: -0.015em; + padding-bottom: 12px; } .faq-section h4.faq-cat i { display: none; } -.faq-section .panel-group { margin-bottom: 56px; } .faq-section .panel-default .panel-title a { - display: block; - position: relative; - padding: 22px 0 22px 42px; - font-family: var(--font-serif); - font-weight: 400; - font-size: 20px; - line-height: 1.35; letter-spacing: -0.005em; color: var(--color); text-decoration: none; cursor: pointer; + font: 500 15px/1.5 var(--font-sans); + min-height: 44px; + padding: 16px 32px 16px 0 !important; + padding-right: 40px !important; + position: relative; } .faq-section .panel-default .panel-title a:hover { color: var(--accent); @@ -2662,12 +2371,7 @@ notebook { } .faq-section .panel-default .panel-title a:after { - content: "−"; position: absolute; - left: 0; - right: auto; - top: 22px; - transform: none; font-family: var(--font-mono); font-size: 18px; line-height: 1.35; @@ -2675,10 +2379,22 @@ notebook { float: none; margin: 0; font-weight: 400; + content: ""; + top: 22px; + width: 8px; + height: 8px; + border-right: 1.5px solid var(--ink-soft); + border-bottom: 1.5px solid var(--ink-soft); + transition: transform 0.15s ease; + border-color: var(--ink-soft) !important; + left: auto !important; + right: 6px !important; + transform: rotate(45deg) !important; } .faq-section .panel-default .panel-title a.collapsed:after { - content: "+"; + content: ""; + transform: translateX(2px) rotate(-45deg); } .faq-section .panel-default .panel-body { @@ -2687,7 +2403,8 @@ notebook { font-size: 15px; line-height: 1.65; border-top: none; - max-width: 68ch; + padding-bottom: 18px !important; + max-width: 640px !important; } .table { @@ -2727,21 +2444,7 @@ loc .lang { text-align: center; } -.featurette-divider { - margin: 4.5rem 0; - border-color: var(--border-color); -} - /* Featurette headings */ -.featurette-heading { - font-family: var(--font-serif); - font-weight: 400; - font-size: 2rem; - line-height: 1.15; - letter-spacing: -0.02em; - margin-bottom: 14px; - color: var(--color); -} .dark-mode .shadow { box-shadow: none; @@ -2763,11 +2466,6 @@ loc .lang { background-color: var(--hover-bg-color); } -.dark-mode .rgba-gradient { - background: linear-gradient(135deg, #2a2d4a, #151728); -} - - .section-number { padding-right: 10px; font-weight: bold; @@ -2791,28 +2489,8 @@ code { color: var(--color) } -.diff-lines, -.diff-file, -.diff-index { - background: rgba(172, 172, 172, 0.5); -} - -.diff-add { - background: rgba(100, 200, 100, 0.5); -} - -.diff-remove { - background: rgba(200, 100, 100, 0.5); -} - /* ===== Dashboard & List Styles ===== */ -.dashboard-title { - font-size: 1.375rem; - font-weight: 600; - letter-spacing: -0.01em; -} - /* Quota bars */ .quota-row { display: flex; @@ -3003,13 +2681,7 @@ code { font-size: 0.6875rem; font-weight: 600; text-transform: uppercase; - letter-spacing: 0.3px; - padding: 2px 8px; - border-radius: 4px; white-space: nowrap; -} - -.type-badge { font-family: var(--font-mono); letter-spacing: 0.06em; padding: 2px 8px; @@ -3032,16 +2704,8 @@ code { } .type-badge.type-coauthor { - background: rgba(99, 102, 241, 0.12); - color: #4f46e5; - border-color: rgba(99, 102, 241, 0.35); margin-left: 6px; } -.dark-mode .type-badge.type-coauthor { - background: rgba(129, 140, 248, 0.18); - color: #7CC7BE; - border-color: rgba(165, 180, 252, 0.45); -} /* Type filter button group */ .btn-group .btn:not(.btn-primary) { @@ -3054,6 +2718,12 @@ code { display: flex; flex-direction: column; min-height: 0; + --rp-stage: #ECE9E2; + --rp-window: #FFFFFF; + --rp-chrome: #F4F2ED; + --rp-tree: #F7F6F2; + --rp-line: #DEDAD2; + --rp-skel: #ECE8E0; } /* Landing state: centered URL input */ @@ -3061,14 +2731,9 @@ code { flex: 1 1 0; min-height: min-content; display: flex; - align-items: center; justify-content: center; padding: 20px; -} - -.anonymize-landing-inner { - width: 100%; - max-width: 600px; + align-items: flex-start !important; } .anonymize-landing-inner h2 { @@ -3086,7 +2751,6 @@ code { .anonymize-topbar { background: var(--paper-card); border-bottom: 1px solid var(--border-color); - padding: 18px 28px; flex: 0 0 auto; } .anonymize-topbar-inner { max-width: 1400px; margin: 0 auto; } @@ -3111,55 +2775,30 @@ code { flex: 0 0 auto; width: 100%; min-width: 0; - background: var(--canvas-bg-color); border-right: 1px solid var(--border-color); overflow-y: auto; } .anonymize-form-col .paper-settings-main { max-width: 720px; - padding: 28px 32px 40px; margin: 0; } -.anonymize-form-col .paper-settings-section:first-child { padding-top: 0; } .anonymize-form-col .anonymize-submit-bar { - position: sticky; + padding: 12px 0 16px !important; bottom: 0; - background: var(--canvas-bg-color); - padding: 14px 0 0; - border-top: 1px solid var(--border-color); - margin-top: 20px; } .anonymize-form-col .anonymize-submit-bar .btn { width: 100%; padding: 12px 16px; font-size: 15px; } /* Preview column */ .anonymize-preview-col { flex: 1 1 auto; - min-width: 0; overflow: auto; - background: var(--paper-bg-alt); - padding: 28px 32px; + min-height: 0; + min-width: 0; } -.anonymize-preview-head { - display: flex; - align-items: baseline; - gap: 12px; - padding-bottom: 12px; - border-bottom: 1px solid var(--border-color); - margin-bottom: 20px; -} -.anonymize-preview-head .paper-eyebrow { - font-family: var(--font-mono); - font-size: 11px; - letter-spacing: 0.14em; - text-transform: uppercase; - color: var(--ink-muted); -} -.anonymize-preview-sub { color: var(--ink-soft); font-size: 13px; } .anonymize-preview-body { background: var(--paper-card); border: 1px solid var(--border-color); border-radius: 10px; - padding: 28px 32px; } /* Form grids for paired fields */ @@ -3214,18 +2853,11 @@ code { color: var(--color); margin: 6px 0 4px; } -.paper-plan-price .paper-plan-per { font-family: var(--font-sans); font-size: 12px; color: var(--ink-soft); } .paper-plan-desc { font-size: 13px; color: var(--ink-soft); } .paper-plan-desc ul { padding-left: 18px; margin: 0; } /* New conference: the single paid review package */ .conference-package { padding: 20px 22px; background: var(--paper-card); border: 1px solid var(--border-color); border-radius: 10px; margin: 0 0 12px; } -.conference-package-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin: 0 0 14px; } -.conference-package-head h3 { font-size: 1.05rem; font-weight: 600; margin: 0 0 2px; } -.conference-package-head p { margin: 0; font-size: 13px; color: var(--ink-soft); } -.conference-package-price { display: flex; flex-direction: column; align-items: flex-end; flex: none; } -.conference-package-price strong { font-size: 1.6rem; font-weight: 600; line-height: 1.1; color: var(--color); font-variant-numeric: tabular-nums; } -.conference-package-price small { font-size: 12px; color: var(--ink-muted); } .conference-package .billing-offer-list { list-style: none; margin: 0 0 14px; padding: 0; font-size: 13px; line-height: 1.5; } .conference-package .billing-offer-list li { position: relative; padding-left: 22px; margin: 0 0 6px; } .conference-package .billing-offer-list li::before { content: ""; position: absolute; left: 3px; top: 6px; width: 10px; height: 5px; border-left: 1.5px solid var(--ink-muted); border-bottom: 1.5px solid var(--ink-muted); transform: rotate(-45deg); } @@ -3246,8 +2878,6 @@ code { .conference-tier-per { font-size: 12px; color: var(--ink-muted); } .conference-package-note { margin: 0; padding-top: 12px; border-top: 1px solid var(--border-color); font-size: 12px; color: var(--ink-muted); } -.paper-settings-copy { color: var(--ink-soft); font-size: 13px; margin: 0 0 14px; } - .anonymize-section-title { font-size: 0.875rem; font-weight: 600; @@ -3273,20 +2903,7 @@ code { font-weight: 600; } -.anonymize-page .form-check { - padding-top: 4px; - padding-bottom: 4px; -} - -.anonymize-page .form-check-label { - font-weight: 500; -} - /* Preview column on desktop */ -.anonymize-preview-col { - min-height: 0; - min-width: 0; -} /* PR diff overflow */ .pr-diff pre { @@ -3310,7 +2927,6 @@ code { /* Mobile: stack form above preview, tighten paddings */ @media (max-width: 767px) { .anonymize-workspace { flex: 0 0 auto; min-height: 0; } - .anonymize-topbar { padding: 14px 16px; } .anonymize-topbar-title { font-size: 1.5rem; margin-top: 2px; } .anonymize-split { display: flex; @@ -3319,25 +2935,20 @@ code { min-height: 0; } .anonymize-form-col { - width: 100% !important; - flex: 0 0 auto !important; height: auto !important; - border-right: none; border-bottom: 1px solid var(--border-color); - overflow: visible; + width: 100% !important; + flex: 0 0 100% !important; + border-right: none; + border-top: 1px solid var(--border-color); + overflow: visible !important; } .anonymize-form-col .paper-settings-main { - padding: 18px 16px 24px; max-width: none; } .anonymize-form-col .anonymize-submit-bar { - position: sticky; - bottom: 0; - margin: 20px -16px 0; - padding: 12px 16px; - background: var(--canvas-bg-color); - border-top: 1px solid var(--border-color); - z-index: 10; + position: sticky !important; + bottom: 0 !important; } .anonymize-form-col .anonymize-submit-bar .btn { width: 100%; @@ -3347,13 +2958,11 @@ code { .anonymize-preview-col { width: 100%; flex: 0 0 auto; - height: auto !important; - max-height: none; - padding: 18px 16px 24px; overflow: visible; + height: auto !important; + max-height: none; } .anonymize-preview-body { - padding: 16px; border-radius: 8px; } .anonymize-preview-body pre, @@ -3363,6 +2972,9 @@ code { } .anonymize-landing-inner { padding: 16px; } } +@media (min-width: 1200px) { + .dark-mode .anonymize-workspace .anonymize-form-col .anonymize-submit-bar::before { background: linear-gradient(to bottom, rgba(22,20,18,0), #161412) !important; } +} @media (min-width: 1280px) { .anonymize-form-col { @@ -3386,10 +2998,6 @@ code { padding: 5px 10px; } - .navbar .nav-link { - padding: 8px 12px; - } - .navbar .nav-link .fa, .navbar .nav-link .fab { font-size: 24px; @@ -3434,9 +3042,8 @@ code { margin-bottom: 12px; } - .form-control { - font-size: 16px; /* Prevents iOS zoom */ - } + .form-control { font-size: 16px; + /* Prevents iOS zoom */ } /* Status bar wrapping */ .status-bar { @@ -3462,13 +3069,6 @@ code { } /* Home hero section */ - #home .display-4 { - font-size: 1.75rem; - } - - #home h4.subtext-header { - font-size: 1rem; - } /* Progress bars on dashboard */ .progress:not(.quota-progress) { @@ -3481,42 +3081,16 @@ code { } /* Search & filter toolbar */ - .col-2.input-group { - width: 100% !important; - max-width: 100%; - flex: 0 0 100%; - } /* Metadata spans wrapping */ - .color-text-secondary span { - display: inline-block; - margin-bottom: 2px; - } /* ---- Anonymize page mobile ---- */ - .anonymize-landing { - align-items: flex-start; - padding-top: 60px; - } - .anonymize-page .container-fluid > .row { height: auto !important; min-height: 100%; } - .anonymize-form-col { - width: 100% !important; - flex: 0 0 100% !important; - border-right: none; - border-top: 1px solid var(--border-color); - } - - .anonymize-preview-col { - height: auto !important; - max-height: none; - } - .anonymize-section-title { font-size: 0.8125rem; margin: 12px 0 8px 0; @@ -3541,23 +3115,14 @@ code { /* Compact checkboxes on mobile */ .anonymize-page .form-check { - padding-top: 6px; - padding-bottom: 6px; min-height: 36px; } - .anonymize-page .form-check-label { - font-size: 0.9375rem; - } - .anonymize-page .card-body { padding: 12px; } /* PR preview on mobile */ - .pr-title { - font-size: 1.125rem; - } .pr-diff pre { font-size: 0.75rem; @@ -3589,11 +3154,13 @@ code { /* ===== Explorer page (paper) ===== */ .explorer-page { - display: flex; height: 100%; width: 100%; background: var(--canvas-bg-color); position: relative; + display: grid !important; + grid-template-columns: var(--sidebar-w, 280px) minmax(0, 1fr); + grid-template-rows: 44px minmax(0, 1fr); } .explorer-main { flex: 1 1 auto; @@ -3601,7 +3168,6 @@ code { display: flex; flex-direction: column; overflow: hidden; - background: var(--canvas-bg-color); } .explorer-content { flex: 1 1 auto; @@ -3619,24 +3185,7 @@ code { min-height: 0; overflow: auto; } -.leftCol-foot { - padding: 8px 12px; - border-top: 1px solid var(--border-color); - background: var(--paper-bg-alt); -} -.leftCol-foot .last-update { - display: block; - border-top: none; - padding: 0; - font-family: var(--font-sans); - font-size: 13px; - font-weight: 400; - letter-spacing: 0; - line-height: 1.5; - color: var(--ink-muted); -} -.leftCol-foot { padding: 10px 14px; } -.leftCol-backdrop { display: none; } +.leftCol-backdrop { display: none; -webkit-backdrop-filter: none; backdrop-filter: none; } .paper-inline-warning { display: flex; @@ -3711,9 +3260,8 @@ code { display: flex; align-items: center; justify-content: space-between; - padding: 12px 14px; - border-bottom: 1px solid var(--border-color); - background: var(--paper-bg-alt); + padding: 4px 6px !important; + right: 6px !important; } .leftCol-eyebrow { font-family: var(--font-mono); @@ -3736,16 +3284,13 @@ code { cursor: pointer; } .leftCol-close:hover { color: var(--color); border-color: var(--color); } - .leftCol-foot { display: block; } .leftCol-body { padding: 4px 0; } .leftCol-backdrop { display: block; position: fixed; inset: 0; - background: rgba(0,0,0,0.32); z-index: 1150; - backdrop-filter: blur(2px); } .dark-mode .leftCol-backdrop { background: rgba(0,0,0,0.5); } } @@ -3754,12 +3299,7 @@ code { .admin-nav { display: flex; - gap: 4px; - padding: 4px; margin: 8px 0 20px; - background: var(--paper-card); - border: 1px solid var(--border-color); - border-radius: 10px; flex-wrap: wrap; } @@ -3767,17 +3307,16 @@ code { display: inline-flex; align-items: center; gap: 8px; - padding: 8px 14px; - border-radius: 7px; color: var(--ink-muted); text-decoration: none; - font-family: var(--font-mono); - font-size: 12px; font-weight: 500; - letter-spacing: 0.06em; - text-transform: uppercase; transition: background-color 0.15s, color 0.15s; white-space: nowrap; + font-family: var(--font-sans); + letter-spacing: 0; + text-transform: none; + border-radius: 6px; + min-height: 40px; } .admin-nav a:hover { @@ -3785,11 +3324,6 @@ code { color: var(--color); } -.admin-nav a.active { - background: var(--color); - color: var(--paper-card); -} - .admin-nav a i { font-size: 12px; width: 14px; @@ -3798,44 +3332,19 @@ code { @media (max-width: 767px) { .admin-nav { - flex-direction: column; + flex-direction: row; + display: flex !important; + flex-wrap: nowrap !important; + overflow-x: auto; + scrollbar-width: none; } .admin-nav a { justify-content: flex-start; + white-space: nowrap; } } /* Admin stat cards — compact, denser packing for many KPIs */ -.admin-stats { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); - gap: 8px; - margin-bottom: 16px; -} - -.admin-stat-card { - background: var(--paper-card); - border: 1px solid var(--border-color); - border-radius: 8px; - padding: 10px 12px; -} - -.admin-stat-card .stat-value { - font-family: var(--font-serif); - font-size: 1.375rem; - font-weight: 400; - line-height: 1.1; - color: var(--color); -} - -.admin-stat-card .stat-label { - font-family: var(--font-mono); - font-size: 10px; - color: var(--ink-muted); - text-transform: uppercase; - letter-spacing: 0.08em; - margin-top: 4px; -} /* Admin toolbar — kept as alias to dashboard filter row */ .admin-toolbar { @@ -3887,68 +3396,11 @@ code { } /* Admin list items */ -.admin-list-item { - display: flex; - align-items: flex-start; - gap: 12px; - padding: 12px 0; - border-bottom: 1px solid var(--border-color); -} - -.admin-list-item:last-child { - border-bottom: none; -} - -.admin-list-item .item-main { - flex: 1; - min-width: 0; -} - -.admin-list-item .item-title { - font-size: 1rem; - font-weight: 600; - margin-bottom: 4px; - word-break: break-word; -} - -.admin-list-item .item-meta { - font-size: 0.875rem; - opacity: 0.8; -} - -.admin-list-item .item-meta span { - margin-right: 12px; - display: inline-block; - margin-bottom: 2px; -} - -.admin-list-item .item-actions { - flex-shrink: 0; -} - -@media (max-width: 767px) { - .admin-list-item { - flex-direction: column; - gap: 8px; - } - .admin-list-item .item-actions { - align-self: flex-start; - } -} /* Status badge improvements */ .status-badge { display: inline-block; - font-size: 11px; - font-weight: 600; - padding: 2px 8px; - border-radius: 10px; - text-transform: uppercase; - letter-spacing: 0.3px; vertical-align: middle; -} - -.status-badge { font-family: var(--font-sans); font-weight: 500; letter-spacing: 0.02em; @@ -3993,55 +3445,6 @@ code { } /* Admin queue job cards */ -.queue-job-card { - background: var(--paper-card); - border: 1px solid var(--border-color); - border-radius: 10px; - padding: 16px 18px; - margin-bottom: 10px; -} - -.queue-job-card .job-header { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 8px; - flex-wrap: wrap; - gap: 8px; -} - -.queue-job-card .job-id { - font-family: var(--font-mono); - font-size: 0.9375rem; - color: var(--color); - word-break: break-all; - display: flex; - align-items: center; - gap: 10px; -} - -.queue-job-card .job-timestamps { - font-family: var(--font-mono); - font-size: 12px; - color: var(--ink-muted); - display: flex; - flex-wrap: wrap; - gap: 14px; -} - -.queue-job-card .job-actions { - display: flex; - gap: 8px; - margin-top: 10px; -} - -.queue-job-card .job-actions .btn { - font-size: 12px; - padding: 4px 12px; - background: var(--paper-card); - border: 1px solid var(--border-color); - color: var(--color); -} /* Admin section headers */ .admin-section-header { @@ -4056,12 +3459,12 @@ code { .admin-section-header h2 { margin: 0; - font-family: var(--font-mono); - font-size: 11px; - font-weight: 500; - color: var(--ink-muted); - text-transform: uppercase; - letter-spacing: 0.08em; + font-family: var(--font-sans) !important; + font-size: 15px !important; + font-weight: 600 !important; + letter-spacing: 0 !important; + text-transform: none !important; + color: var(--color) !important; } .admin-section-header h2 i { @@ -4104,13 +3507,11 @@ code { .user-detail-card .user-header h2 { margin: 0; - font-family: var(--font-serif); - font-weight: 400; - font-size: 1.5rem; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; + font: 600 20px/1.4 var(--font-sans); } .user-detail-grid { @@ -4121,10 +3522,6 @@ code { } .user-detail-grid .detail-label { - font-family: var(--font-mono); - font-size: 11px; - text-transform: uppercase; - letter-spacing: 0.08em; color: var(--ink-muted); white-space: nowrap; padding-top: 2px; @@ -4153,29 +3550,20 @@ code { /* ===== Paper empty/error states ===== */ .paper-empty { - min-height: calc(100vh - 60px); display: flex; align-items: center; justify-content: center; padding: 40px 24px; + min-height: min(calc(100vh - 61px), 640px) !important; } .paper-empty-inner { max-width: 560px; text-align: left; } .paper-empty-title { - font-family: var(--font-serif); - font-weight: 400; - font-size: clamp(2.4rem, 6vw, 4.4rem); - line-height: 1.02; - letter-spacing: -0.025em; margin: 18px 0 20px; color: var(--color); } -.paper-empty-title em { - color: var(--accent); - font-style: italic; -} .paper-empty-lede { font-size: 18px; line-height: 1.55; @@ -4191,7 +3579,6 @@ code { /* ===== Paper page chrome ===== */ .paper-page { - max-width: 1100px; margin: 0 auto; padding: 32px 32px 80px; } @@ -4253,10 +3640,6 @@ code { } .navbar .navbar-nav .nav-item:last-child .nav-link, .navbar .navbar-nav > .nav-link:last-child { border-bottom-color: transparent !important; } - .navbar .nav-link.active { - color: var(--color) !important; - border-bottom-color: var(--border-color) !important; - } /* Items without leading icon: reserve the same 28px icon column so text aligns */ .navbar .nav-item > .nav-link:not(.btn-signin):not(.user-chip)::before { content: ''; @@ -4359,14 +3742,9 @@ code { align-items: center; gap: 8px; padding: 6px 12px; - border-radius: 999px; background: var(--paper-bg-alt); border: 1px solid var(--border-color); color: var(--ink-soft); - font-family: var(--font-mono); - font-size: 12px; - letter-spacing: 0.08em; - text-transform: uppercase; } /* Paper progress bar */ @@ -4390,7 +3768,6 @@ code { top: 0; left: 0; height: 8px; - background: var(--color); border-radius: 999px; transition: width 0.4s ease; min-width: 4px; @@ -4400,14 +3777,9 @@ code { justify-content: space-between; align-items: center; margin-top: 10px; - font-family: var(--font-mono); - font-size: 12px; - letter-spacing: 0.06em; - text-transform: uppercase; color: var(--ink-muted); } .paper-progress .paper-progress-pct { color: var(--color); } -.paper-progress.paper-progress-ready .paper-progress-bar { background: var(--color); } /* Status error card */ .paper-error-card { @@ -4429,6 +3801,8 @@ code { border-left: 3px solid var(--status-progress); border-radius: 10px; color: var(--color); + text-align: left; + border-left-color: var(--status-progress); } .dark-mode .paper-ratelimit-card { border-left-color: var(--status-progress); } .paper-ratelimit-head { @@ -4444,9 +3818,7 @@ code { } .dark-mode .paper-ratelimit-head > i { color: var(--status-progress); } .paper-ratelimit-card strong { color: var(--color); } -.paper-ratelimit-card { text-align: left; border-left-color: var(--status-progress); } -.dark-mode .paper-ratelimit-card { border-left-color: var(--status-progress); } -.paper-ratelimit-head > .ui-icon { width: 18px; height: 18px; margin-top: 3px; flex-shrink: 0; color: var(--status-progress); } +.paper-ratelimit-head > .ui-icon { width: 18px; height: 18px; flex-shrink: 0; } .paper-ratelimit-card .paper-error-title { font-family: var(--font-sans); font-size: 17px; font-weight: 600; } .paper-ratelimit-card .paper-error-msg { font-family: var(--font-sans); white-space: normal; margin-left: 32px; } .paper-ratelimit-card .paper-error-eyebrow { font-family: var(--font-sans); font-size: 12px; letter-spacing: 0; text-transform: none; } @@ -4468,16 +3840,9 @@ code { } .dark-mode .paper-error-head > i { color: var(--status-error); } .paper-error-eyebrow { - font-family: var(--font-mono); - font-size: 11px; - letter-spacing: 0.14em; - text-transform: uppercase; color: var(--ink-muted); } .paper-error-title { - font-family: var(--font-serif); - font-size: 1.375rem; - line-height: 1.2; margin-top: 2px; color: var(--color); } @@ -4505,82 +3870,8 @@ code { } /* Detail grid (status page, generic) */ -.paper-detail-grid { - display: grid; - grid-template-columns: 160px 1fr; - gap: 10px 20px; - margin-top: 18px; - font-size: 0.9375rem; -} -.paper-detail-grid .detail-label { - font-family: var(--font-mono); - font-size: 11px; - text-transform: uppercase; - letter-spacing: 0.08em; - color: var(--ink-muted); - white-space: nowrap; - padding-top: 2px; -} -.paper-detail-grid .detail-value { word-break: break-all; color: var(--color); } -.paper-detail-grid .detail-value a { color: var(--color); border-bottom: 1px solid var(--border-color); } -.paper-detail-grid .detail-value a:hover { border-bottom-color: var(--color); } - -@media (max-width: 700px) { - .paper-detail-grid { grid-template-columns: 1fr; gap: 4px 0; } - .paper-detail-grid .detail-label { padding-top: 8px; } -} /* Support cards (Contribute / Feedback / Sponsor) */ -.paper-support-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); - gap: 14px; - margin: 18px 0 28px; -} -.paper-support-card { - display: flex; - flex-direction: column; - gap: 10px; - padding: 20px; - background: var(--paper-card); - border: 1px solid var(--border-color); - border-radius: 10px; - color: var(--color); - text-decoration: none; - transition: border-color 0.15s ease, transform 0.15s ease; -} -.paper-support-card:hover { - border-color: var(--color); - text-decoration: none; - color: var(--color); -} -.paper-support-card .paper-support-eyebrow { - font-family: var(--font-mono); - font-size: 11px; - letter-spacing: 0.14em; - text-transform: uppercase; - color: var(--ink-muted); - display: flex; - align-items: center; - gap: 8px; -} -.paper-support-card p { - margin: 0; - font-size: 14px; - line-height: 1.55; - color: var(--ink-soft); -} -.paper-support-card .paper-support-cta { - margin-top: auto; - font-size: 13px; - font-weight: 500; - color: var(--color); - display: inline-flex; - align-items: center; - gap: 6px; -} -.paper-support-card:hover .paper-support-cta i { transform: translateX(2px); } -.paper-support-card .paper-support-cta i { transition: transform 0.15s ease; } /* ===== Pull request page (paper) ===== */ .pr-page { @@ -4646,6 +3937,7 @@ code { cursor: pointer; transition: color 0.15s ease, border-color 0.15s ease; margin-bottom: -1px; + min-height: 44px; } .paper-tabs .paper-tab:hover { color: var(--color); } .paper-tabs .paper-tab.active { @@ -4897,50 +4189,31 @@ code { letter-spacing: 0; } .paper-crumbs a, .paper-crumbs .here { - color: var(--color); text-decoration: none; } .paper-page-title { - font-family: var(--font-sans); - font-weight: 600; - font-size: 32px; - line-height: 1.2; - letter-spacing: -0.035em; margin: 8px 0 6px; color: var(--color); + overflow-wrap: anywhere; } -.paper-page-title em { color: inherit; font-style: normal; } .paper-page-lede { color: var(--ink-soft); font-size: 16px; - max-width: 640px; line-height: 1.55; } .paper-meta-rule { display: flex; flex-wrap: wrap; - gap: 16px 24px; align-items: center; margin: 22px 0 18px; padding: 12px 0; border-top: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color); - font-family: var(--font-mono); - font-size: 12px; color: var(--ink-muted); - letter-spacing: 0.02em; } .paper-meta-rule b { color: var(--color); font-weight: 500; } -.paper-card { - background: var(--paper-card, #fff); - border: 1px solid var(--border-color); - border-radius: 10px; - padding: 20px 22px; -} -.dark-mode .paper-card { background: var(--admin-stat-bg); } - .paper-section-eyebrow { font-family: var(--font-mono); font-size: 11px; @@ -4952,39 +4225,15 @@ code { display: block; } -.paper-section-title { - font-family: var(--font-serif); - font-weight: 400; - font-size: 22px; - letter-spacing: -0.01em; - margin: 0 0 8px; -} - -.paper-kbd { - display: inline-block; - font-family: var(--font-mono); - font-size: 11px; - padding: 1px 6px; - border: 1px solid var(--border-color); - border-bottom-width: 2px; - border-radius: 3px; - background: var(--paper-card, #fff); - color: var(--color); -} - /* Pill for status / meta */ .paper-pill { display: inline-flex; align-items: center; gap: 6px; - font-family: var(--font-mono); - font-size: 11px; padding: 2px 8px; border: 1px solid var(--border-color); - border-radius: 999px; color: var(--ink-soft); background: var(--paper-card, #fff); - letter-spacing: 0.04em; } .paper-pill.accent { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); } .paper-pill.good { border-color: #2F6B3E; color: #2F6B3E; } @@ -4992,63 +4241,8 @@ code { .paper-pill.bad { border-color: var(--status-error); color: var(--status-error); } /* Editorial list row */ -.paper-row { - display: grid; - grid-template-columns: 1fr auto; - gap: 16px; - align-items: start; - padding: 18px 0; - border-bottom: 1px solid var(--border-color); -} -.paper-row:first-child { border-top: 1px solid var(--border-color); } -.paper-row .row-title { - font-family: var(--font-serif); - font-size: 20px; - letter-spacing: -0.01em; - line-height: 1.2; -} -.paper-row .row-title a { color: var(--color); } -.paper-row .row-meta { - font-family: var(--font-mono); - font-size: 11px; - color: var(--ink-muted); - letter-spacing: 0.03em; - margin-top: 6px; - display: flex; - flex-wrap: wrap; - gap: 14px; -} -.paper-row .row-actions { display: flex; gap: 6px; flex-shrink: 0; } /* Paper form building blocks */ -.paper-form-step { - display: grid; - grid-template-columns: 48px 1fr; - gap: 20px; - padding: 22px 0; - border-bottom: 1px solid var(--border-color); -} -.paper-form-step:first-child { border-top: 1px solid var(--border-color); } -.paper-form-step .step-num { - font-family: var(--font-mono); - font-size: 12px; - color: var(--ink-muted); - padding-top: 4px; - letter-spacing: 0.02em; -} -.paper-form-step .step-title { - font-family: var(--font-serif); - font-size: 22px; - letter-spacing: -0.01em; - line-height: 1.2; - margin-bottom: 4px; -} -.paper-form-step .step-sub { - color: var(--ink-soft); - font-size: 14px; - margin-bottom: 14px; - text-wrap: pretty; -} .paper-field-label { font-family: var(--font-sans); @@ -5061,44 +4255,18 @@ code { display: block; } -.paper-switch-row { - display: flex; - align-items: center; - justify-content: space-between; - padding: 10px 0; - gap: 16px; -} -.paper-switch-row + .paper-switch-row { - border-top: 1px dashed var(--border-soft); -} -.paper-switch-row .sw-label { font-weight: 500; } -.paper-switch-row .sw-sub { - display: block; - font-size: 13px; - color: var(--ink-muted); - margin-top: 2px; -} - /* Paper-style form controls reuse Bootstrap classes */ -.paper-page .form-control, -.paper-page .custom-select { - border-radius: 6px; - border-color: var(--border-color); - font-size: 14px; +.paper-page .form-control { padding: 8px 12px; height: auto; background: var(--input-bg); color: var(--input-color); } -.paper-page .form-control:focus, -.paper-page .custom-select:focus { +.paper-page .form-control:focus { color: var(--input-color); background: var(--input-bg); - border-color: var(--accent); - box-shadow: 0 0 0 2px var(--accent-soft); } .form-control:focus, -.custom-select:focus, input:focus, textarea:focus, select:focus { @@ -5132,14 +4300,6 @@ textarea::selection { color: var(--canvas-bg-color); border-color: var(--primary-hover-bg); } -.btn.btn-accent { - background: var(--accent); - color: #fff; - border: 1px solid var(--accent); - font-weight: 500; - border-radius: 6px; -} -.btn.btn-accent:hover { background: #17544F; border-color: #17544F; color: #fff; } /* Paper-style filter row buttons (Sort / Status / type filter) */ .paper-page .dashboard-filter-row { @@ -5330,11 +4490,8 @@ textarea::selection { .paper-settings .paper-page-title { max-width: 14em; } .paper-settings-body { display: grid; - grid-template-columns: 220px 1fr; - gap: 60px; - margin-top: 32px; - border-top: 1px solid var(--border-color); - padding-top: 28px; + margin-top: 24px; + grid-template-columns: 180px minmax(0, 1fr); } .paper-settings-toc { position: sticky; top: 32px; align-self: start; } .paper-settings-toc-head { @@ -5348,7 +4505,6 @@ textarea::selection { .paper-settings-toc nav { display: flex; flex-direction: column; gap: 2px; } .paper-settings-toc nav a { padding: 8px 0 8px 14px; - border-left: 2px solid transparent; color: var(--ink-soft); font-size: 14px; text-decoration: none; @@ -5373,8 +4529,6 @@ textarea::selection { .paper-settings-section .paper-section-copy { margin: -4px 0 14px; } .paper-settings-footer { padding-top: 24px; display: flex; flex-direction: column; gap: 14px; } .paper-settings-footer .btn-ink { align-self: flex-start; } -.paper-settings-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 14px; } -.paper-settings-hint { font-size: 13px; color: var(--ink-muted); } /* Inline alerts in the paper palette (Bootstrap's .alert colours clash) */ .paper-inline-alert { @@ -5425,6 +4579,7 @@ textarea::selection { padding: 8px 14px; } .btn.btn-outline-danger:hover { background: var(--status-error); color: #fff; border-color: var(--status-error); } +.btn-outline-danger { border: 1px solid color-mix(in srgb, var(--status-error) 45%, transparent) !important; color: var(--status-error) !important; background: transparent !important; } /* Navbar user menu: two-line items (label + hint) */ .navbar .user-menu { min-width: 260px; } @@ -5440,34 +4595,19 @@ textarea::selection { color: var(--ink-muted); padding: 8px 10px 6px; } -.paper-field-label { - font-family: var(--font-sans); - font-size: 13px; - font-weight: 500; - letter-spacing: 0; - text-transform: none; - color: var(--color); - margin-bottom: 6px; - display: block; -} @media (max-width: 900px) { - .paper-settings-body { grid-template-columns: 1fr; gap: 24px; } .paper-settings-toc { position: static; } .paper-settings-toc nav { flex-direction: row; flex-wrap: wrap; gap: 8px; } - .paper-settings-toc nav a { border-left: none; border-bottom: 2px solid transparent; padding: 4px 0; } + .paper-settings-toc nav a { border-bottom: 2px solid transparent; padding: 4px 0; } .paper-settings-toc nav a.active, .paper-settings-toc nav a:hover { border-bottom-color: var(--color); border-left: none; } } /* Paper table (reference grid) */ .paper-table { display: block; - margin-top: 20px; - background: transparent; - border: none; - border-top: 1px solid var(--border-color); - border-radius: 0; - overflow: visible; + margin-top: 12px; + overflow: visible !important; } .paper-table .paper-table-head, .paper-table .paper-table-row { @@ -5497,7 +4637,6 @@ textarea::selection { /* Dashboard: conference folded into the name cell, numbers right-aligned. */ .paper-table.paper-table-dashboard .paper-table-head, .paper-table.paper-table-dashboard .paper-table-row { - grid-template-columns: minmax(320px, 3fr) 190px 90px 170px 52px; gap: 20px; /* Two-line rows land at ~60px, close to Carbon's "large" density. */ padding: 8px 4px; @@ -5505,12 +4644,7 @@ textarea::selection { .paper-table.paper-table-dashboard .cell-anon .anon-text { gap: 2px; } .paper-table.paper-table-dashboard .cell-anon .repo-name { padding: 0; } .paper-table .paper-table-head { - background: transparent; border-bottom: 1px solid var(--border-color); - font-family: var(--font-mono); - font-size: 11px; - letter-spacing: 0.12em; - text-transform: uppercase; color: var(--ink-muted); padding-top: 8px; padding-bottom: 8px; @@ -5554,11 +4688,9 @@ textarea::selection { dropdown menu (z-index) beneath the rows rendered after it, making its items unclickable. Leave the actions column at full opacity so it stays interactive. */ -.paper-table .paper-table-row.repo-inactive > *:not(.cell-actions) { opacity: 0.55; } +.paper-table .paper-table-row.repo-inactive>*:not(.cell-actions) { opacity: 1 !important; } .paper-table .paper-table-row.repo-error { background: var(--status-error-soft); - border-left: 2px solid var(--status-error); - padding-left: 6px; } .paper-table .paper-table-row.repo-error:hover { background: var(--status-error-soft-hover); } .paper-table .cell-status .status-sub-error, @@ -5569,7 +4701,6 @@ textarea::selection { .paper-table .cell-anon { display: flex; align-items: center; - gap: 12px; min-width: 0; } .paper-table .cell-anon .type-badge { @@ -5660,7 +4791,7 @@ textarea::selection { text-overflow: ellipsis; white-space: nowrap; } -.paper-table .cell-views { font-family: var(--font-mono); font-variant-numeric: tabular-nums; color: var(--color); } +.paper-table .cell-views { color: var(--color); } .paper-table .cell-expires { font-family: var(--font-sans); font-size: 13px; color: var(--ink-soft); } .paper-table .cell-expires .expires-never { color: var(--ink-muted); } .paper-table .cell-expires .expires-past { color: var(--ink-muted); } @@ -5675,7 +4806,6 @@ textarea::selection { border-radius: 999px; display: inline-block; flex-shrink: 0; - background: var(--status-inactive); } .status-dot.status-ready { background: var(--status-ready); } .status-dot.status-error { background: var(--status-error); } @@ -5686,7 +4816,14 @@ textarea::selection { /* ---- Dashboard extras ---------------------------------------------- */ /* Room for the fixed Ko-fi pill so it never covers the last row's actions. */ -.dashboard-page { padding-bottom: 96px; } +.dashboard-page { + padding-bottom: 96px; + --dashboard-space-xs: 4px; + --dashboard-space-sm: 8px; + --dashboard-space-md: 12px; + --dashboard-space-lg: 16px; + --dashboard-space-xl: 24px; +} .dashboard-meta { display: flex; @@ -5748,8 +4885,10 @@ textarea::selection { .skeleton-line + .skeleton-line { margin-top: 8px; } .skeleton-line-sm { height: 10px; } .skeleton-badge { width: 52px; height: 22px; border-radius: 999px; flex-shrink: 0; } -@keyframes skeleton-shimmer { to { transform: translateX(100%); } } -@media (prefers-reduced-motion: reduce) { .skeleton::after { animation: none; } } +@keyframes skeleton-shimmer { to { transform: translateX(100%); } +} +@media (prefers-reduced-motion: reduce) { .skeleton::after { animation: none; } +} /* Empty state with a way out */ .paper-table .paper-table-empty { @@ -5777,7 +4916,7 @@ textarea::selection { } /* Tighter admin page header — admin is power-user UI, no need for huge title + lede */ -.paper-page.admin-page .paper-page-title { font-size: 1.5rem; margin: 4px 0; } +.paper-page.admin-page .paper-page-title { margin: 4px 0; } .paper-page.admin-page .paper-page-lede { display: none; } .paper-page.admin-page .paper-crumbs { margin-bottom: 4px; } .paper-page.admin-page .admin-nav { margin: 6px 0 12px; } @@ -5791,9 +4930,6 @@ textarea::selection { position: sticky; top: 0; z-index: 4; - background: var(--canvas-bg-color); - padding: 6px 0; - border-bottom: 1px solid var(--border-soft, var(--border-color)); box-shadow: 0 1px 0 var(--canvas-bg-color); } @media (max-width: 900px) { @@ -5805,21 +4941,15 @@ textarea::selection { gap: 6px; align-items: center; } -.admin-filter-row .search-wrap { flex: 1; min-width: 220px; } -.admin-filter-row .search-wrap .form-control { height: 34px; } +.admin-filter-row .search-wrap { flex: 1; min-width: 220px; position: relative; } +.admin-filter-row .search-wrap .form-control { height: 34px; padding-right: 40px; } .admin-filter-inline { - display: inline-flex; - align-items: center; - gap: 4px; font-size: 12px; color: var(--ink-muted); } .admin-filter-inline > label { - font-family: var(--font-mono); font-size: 10px; - text-transform: uppercase; - letter-spacing: 0.06em; color: var(--ink-muted); margin: 0; white-space: nowrap; @@ -5854,7 +4984,6 @@ textarea::selection { border: 1px solid var(--border-color); border-radius: 999px; background: var(--hover-bg-color); - font-size: 12px; color: var(--color); } .admin-active-chip .key { color: var(--ink-muted); font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.06em; } @@ -5883,105 +5012,21 @@ textarea::selection { padding: 1px 5px; background: var(--paper-card); } -.admin-filter-row .search-wrap { position: relative; } -.admin-filter-row .search-wrap .form-control { padding-right: 40px; } .paper-table-row.row-selected { background: rgba(47, 122, 68, 0.06); } -.queue-state-pills { display: inline-flex; gap: 6px; margin-left: 8px; flex-wrap: wrap; } -.queue-state-pills .pill { - font-size: 11px; - padding: 2px 8px; - border-radius: 999px; - border: 1px solid var(--border-color); - background: var(--paper-card); - color: var(--ink-muted); -} -.queue-state-pills .pill-active { color: var(--status-progress); border-color: rgba(196,138,46,0.4); } -.queue-state-pills .pill-failed { color: #B42318; border-color: rgba(180,35,24,0.4); } -.queue-state-pills .pill-completed { color: #2F7A44; border-color: rgba(47,122,68,0.3); } -.queue-state-pills .pill-waiting { color: var(--ink-soft); } -.queue-state-pills .pill-delayed { color: var(--ink-muted); } - /* Compact summary bar — replaces stat cards. Each pill is also a filter shortcut. */ -.admin-summary { - display: flex; - flex-wrap: wrap; - align-items: center; - gap: 6px; - margin: 8px 0 12px; - font-size: 13px; -} -.admin-summary .summary-total { - font-family: var(--font-serif); - font-size: 1rem; - color: var(--color); - margin-right: 8px; -} -.admin-summary .summary-meta { - color: var(--ink-muted); - font-size: 12px; - margin-right: 8px; -} -.admin-summary .summary-pill { - display: inline-flex; - align-items: center; - gap: 6px; - padding: 3px 10px; - border-radius: 999px; - border: 1px solid var(--border-color); - background: var(--paper-card); - color: var(--ink-muted); - cursor: pointer; - font-size: 12px; - user-select: none; - transition: background-color 0.1s, border-color 0.1s; -} -.admin-summary .summary-pill:hover { background: var(--hover-bg-color); } -.admin-summary .summary-pill .count { - font-family: var(--font-mono); - font-variant-numeric: tabular-nums; - color: var(--color); -} -.admin-summary .summary-pill.active { - background: var(--primary-bg); - color: var(--primary-color); - border-color: var(--primary-bg); -} -.admin-summary .summary-pill.active .count { color: inherit; } -.admin-summary .summary-pill.error .count { color: #B42318; } -.admin-summary .summary-pill.warn .count { color: var(--status-progress); } -.admin-summary .summary-pill.ok .count { color: #2F7A44; } -.dark-mode .admin-summary .summary-pill.error .count { color: #F08A82; } -.dark-mode .admin-summary .summary-pill.warn .count { color: var(--status-progress); } -.dark-mode .admin-summary .summary-pill.ok .count { color: #7DC894; } -.dark-mode .queue-state-pills .pill-active { color: var(--status-progress); border-color: rgba(232,185,112,0.4); } -.dark-mode .queue-state-pills .pill-failed { color: #F08A82; border-color: rgba(240,138,130,0.4); } -.dark-mode .queue-state-pills .pill-completed { color: #7DC894; border-color: rgba(125,200,148,0.3); } - -.job-progress { - flex: 1; - height: 6px; - background: var(--border-soft, var(--border-color)); - border-radius: 999px; - overflow: hidden; - margin-left: 12px; - max-width: 200px; -} -.job-progress-bar { height: 100%; background: #2F7A44; transition: width 0.3s; } .paper-table-empty { - padding: 48px 4px; - text-align: center; color: var(--ink-muted); display: flex; flex-direction: column; align-items: center; gap: 8px; - border-top: 1px solid var(--border-soft, var(--border-color)); } .paper-table-empty > i { font-size: 1.5rem; } +.paper-table-empty > span { max-width: 440px; text-align: center; } /* ===== Queue dashboard (redesigned) ===== */ .q-header { @@ -5999,25 +5044,13 @@ textarea::selection { flex-wrap: wrap; } .q-range-btns { - display: inline-flex; - border: 1px solid var(--border-color); - border-radius: 8px; overflow: hidden; -} -.q-range-btns .btn { - border: none; - border-radius: 0; - padding: 5px 14px; - font-family: var(--font-mono); - font-size: 11px; - color: var(--ink-muted); - background: var(--paper-card); + display: inline-flex !important; + gap: 2px !important; + padding: 3px !important; + border-radius: 9px !important; } .q-range-btns .btn + .btn { border-left: 1px solid var(--border-color); } -.q-range-btns .btn.active { - background: var(--color); - color: var(--paper-card); -} /* Queue overview cards */ .q-cards { display: flex; @@ -6030,16 +5063,11 @@ textarea::selection { min-width: 140px; background: var(--paper-card); border: 1px solid var(--border-color); - border-radius: 10px; padding: 14px 16px; cursor: pointer; transition: border-color 0.15s, box-shadow 0.15s; } .q-card:hover { border-color: var(--ink-muted); } -.q-card.selected { - border-color: var(--color); - box-shadow: 0 0 0 1px var(--color); -} .q-card-head { display: flex; align-items: center; @@ -6057,25 +5085,16 @@ textarea::selection { .dark-mode .q-dot { background: #7DC894; } .dark-mode .q-dot-red { background: #F08A82; } .q-card-name { - font-family: var(--font-mono); - font-size: 12px; font-weight: 500; color: var(--ink-muted); - letter-spacing: 0.04em; } .q-card-count { - font-family: var(--font-serif); - font-size: 2rem; - font-weight: 400; line-height: 1.1; color: var(--color); margin-bottom: 6px; } .q-card-sub { - font-family: var(--font-mono); - font-size: 11px; color: var(--ink-muted); - letter-spacing: 0.04em; } .q-card-bar { height: 4px; @@ -6098,20 +5117,28 @@ textarea::selection { grid-template-columns: 1fr 320px; gap: 16px; margin-bottom: 20px; + align-items: stretch !important; } .q-throughput { background: var(--paper-card); border: 1px solid var(--border-color); border-radius: 10px; padding: 16px 20px; -} -.q-chart-wrap { - position: relative; + flex-direction: column; } .q-throughput canvas { width: 100%; display: block; } +/* Empty throughput chart collapses to a short, honest panel */ +.q-throughput:has(.q-chart-empty) .q-chart-wrap { + flex: 1 1 auto !important; + height: auto !important; + min-height: 160px !important; +} +/* Phone admin summary: count + size on row one, "Show:" heads the pills on its own line */ +.q-throughput:has(.q-chart-empty) .q-chart-wrap canvas { visibility: hidden; } +.q-chart-wrap canvas { max-height: none !important; position: absolute; inset: 0; } .q-chart-tooltip { position: absolute; pointer-events: none; @@ -6153,26 +5180,16 @@ textarea::selection { flex-direction: column; } .q-section-label { - font-family: var(--font-mono); - font-size: 11px; - font-weight: 500; - color: var(--ink-muted); - text-transform: lowercase; - letter-spacing: 0.04em; margin-bottom: 14px; } .q-section-right { float: right; - text-transform: uppercase; - font-size: 10px; - letter-spacing: 0.08em; } .q-legend-completed { color: #1F6A64; } .q-legend-failed { color: #B42318; margin-left: 8px; } -.q-legend-exec { color: var(--status-progress); margin-left: 8px; letter-spacing: 2px; } +.q-legend-exec { margin-left: 8px; } .dark-mode .q-legend-completed { color: #7CC7BE; } .dark-mode .q-legend-failed { color: #F08A82; } -.dark-mode .q-legend-exec { color: var(--status-progress); } .q-chart-tooltip .q-tip-exec { color: var(--status-progress); } .dark-mode .q-chart-tooltip .q-tip-exec { color: var(--status-progress); } .q-stats-grid { @@ -6182,26 +5199,18 @@ textarea::selection { flex: 1; } .q-stat-label { - font-family: var(--font-mono); - font-size: 10px; - color: var(--ink-muted); - text-transform: uppercase; - letter-spacing: 0.08em; margin-bottom: 2px; } .q-stat-value { - font-family: var(--font-serif); - font-size: 1.25rem; - font-weight: 400; color: var(--color); line-height: 1.2; } .q-stats-actions { - display: flex; - gap: 8px; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--border-color); + display: grid !important; + grid-template-columns: auto auto 1fr; } .q-stats-actions .btn { font-family: var(--font-mono); @@ -6219,6 +5228,7 @@ textarea::selection { border: 1px solid var(--border-color); border-radius: 10px; padding: 16px 20px; + overflow-x: auto; } .q-jobs-header { display: flex; @@ -6235,41 +5245,27 @@ textarea::selection { flex-wrap: wrap; } .q-state-toggle { - cursor: pointer; display: inline-flex; align-items: center; } .q-state-toggle input { display: none; } .q-state-chip { - font-family: var(--font-mono); - font-size: 11px; padding: 3px 10px; border-radius: 10px; - border: 1px solid var(--border-color); - background: var(--paper-card); - color: var(--ink-muted); transition: opacity 0.15s, background 0.15s; - text-transform: capitalize; } .q-state-toggle input:checked + .q-state-chip { opacity: 1; } .q-state-toggle input:not(:checked) + .q-state-chip { - opacity: 0.4; - text-decoration: line-through; + opacity: .45; } /* State badge colors */ .q-state-badge, .q-state-chip { - font-family: var(--font-mono); - font-size: 10px; font-weight: 600; - text-transform: uppercase; - letter-spacing: 0.3px; } .q-state-badge { - display: inline-block; - padding: 2px 8px; border-radius: 8px; } .q-state-active { background: #dbeafe; color: #1d4ed8; } @@ -6288,7 +5284,6 @@ textarea::selection { font-size: 10px; color: var(--ink-muted); margin-top: 2px; - font-family: var(--font-mono); } .q-search-row { display: flex; @@ -6301,7 +5296,6 @@ textarea::selection { height: 34px; } .q-auto-refresh { - font-family: var(--font-mono); font-size: 11px; color: var(--ink-muted); display: inline-flex; @@ -6342,10 +5336,6 @@ textarea::selection { .q-cell-id { font-family: var(--font-mono); font-size: 12px; - white-space: nowrap; -} -.q-cell-id { - display: flex; align-items: center; gap: 8px; } @@ -6359,16 +5349,7 @@ textarea::selection { transform: rotate(90deg); } .q-cell-id a { color: var(--color); } -.q-cell-payload { - font-family: var(--font-mono); - font-size: 12px; - color: var(--color); -} -.q-payload-detail { - color: var(--ink-muted); -} .q-cell-num { - font-family: var(--font-mono); font-size: 12px; text-align: center; white-space: nowrap; @@ -6413,11 +5394,6 @@ textarea::selection { .q-cell-actions .btn:hover { color: var(--color); } .q-row-failed { background: rgba(180,35,24,0.04); } .dark-mode .q-row-failed { background: rgba(240,138,130,0.06); } - -.q-error-detail { - padding: 4px 10px 12px; - font-size: 12px; -} .q-error-reason { color: #B42318; font-size: 0.8125rem; @@ -6480,12 +5456,8 @@ textarea::selection { gap: 2px; } .q-job-detail-label { - font-family: var(--font-mono); - font-size: 10px; font-weight: 500; color: var(--ink-muted); - text-transform: uppercase; - letter-spacing: 0.08em; } .q-job-detail-value { font-family: var(--font-mono); @@ -6505,8 +5477,6 @@ textarea::selection { border-top: 1px solid var(--border-color); } .q-job-detail-actions .btn { - font-family: var(--font-mono); - font-size: 11px; padding: 5px 12px; border-radius: 6px; background: var(--paper-card); @@ -6519,7 +5489,6 @@ textarea::selection { .q-cards { flex-direction: column; } .q-card { min-width: 100%; } .q-jobs-header { flex-direction: column; align-items: flex-start; } - .q-tabs { flex-wrap: wrap; } .q-search-row { flex-wrap: wrap; } .q-search-row .form-control { max-width: 100%; flex: 1; } .q-table { font-size: 12px; } @@ -6578,18 +5547,14 @@ textarea::selection { .paper-table .paper-table-skeleton .cell-views, .paper-table .paper-table-skeleton .cell-expires { flex: 1 1 30%; } .paper-table .cell-views::before { - content: '\f06e'; font-family: 'Font Awesome 5 Free'; font-weight: 900; font-size: 10px; - color: var(--ink-muted); } .paper-table .cell-expires::before { - content: '\f017'; font-family: 'Font Awesome 5 Free'; font-weight: 400; font-size: 10px; - color: var(--ink-muted); } .paper-table .cell-conf::before { content: '\f51c'; @@ -6705,18 +5670,12 @@ textarea::selection { background: var(--paper-bg-alt); color: var(--color); border: 1px solid var(--border-color); - font-family: var(--font-mono); - font-size: 11px; - letter-spacing: 0.08em; - text-transform: uppercase; padding: 4px 10px; - border-radius: 999px; } @media (max-width: 768px) { - .paper-page .paper-page-title { font-size: clamp(1.4rem, 6vw, 1.9rem); margin: 4px 0 2px; } - .paper-page .paper-page-lede { font-size: 13px; line-height: 1.4; margin-bottom: 0; } - .paper-page .btn-ink { padding: 6px 12px; font-size: 13px; } + .paper-page .paper-page-title { margin: 4px 0 2px; } + .paper-page .btn-ink { font-size: 13px; } /* Quotas stack in one column on phones so labels and values keep the same 11px / 13px sizes as desktop instead of shrinking to 9px. */ @@ -6749,25 +5708,12 @@ textarea::selection { @media (max-width: 480px) { .paper-page .paper-page-lede { - display: -webkit-box; - -webkit-line-clamp: 2; -webkit-box-orient: vertical; - overflow: hidden; + -webkit-line-clamp: unset; } } /* Empty state */ -.empty-state { - text-align: center; - padding: 40px 20px; - opacity: 0.6; -} - -.empty-state i { - font-size: 2rem; - margin-bottom: 10px; - display: block; -} /* ===== Paper profile / settings ===== */ .paper-page .progress { @@ -6865,10 +5811,6 @@ textarea::selection { } @media (max-width: 820px) { - .paper-faq-body { - grid-template-columns: 1fr; - gap: 24px; - } .paper-faq-toc { position: static; } @@ -6882,6 +5824,12 @@ textarea::selection { background: var(--canvas-bg-color); font-family: var(--font-sans); } +@media (max-width: 480px) { + .paper-footer .paper-footer-inner { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; column-gap: 12px !important; } +} +@media (max-width: 480px) { + .paper-footer .paper-footer-brand { grid-column: 1 / -1 !important; } +} .paper-footer-inner { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; @@ -6905,11 +5853,6 @@ textarea::selection { max-width: 340px; } .paper-footer-head { - font-family: var(--font-mono); - font-size: 12px; - color: var(--ink-soft); - letter-spacing: 0.1em; - text-transform: uppercase; margin-bottom: 14px; } .paper-footer-col a { @@ -6949,6 +5892,8 @@ textarea::selection { grid-template-columns: 1fr 1fr; } } +@media (min-width: 1100px) { .paper-footer-inner { grid-template-columns: calc(50% - 10px) repeat(3, minmax(0, 1fr)) !important; column-gap: 20px !important; } +} .file.folder.truncated .truncated-warning { color: var(--status-progress); margin-left: 4px; @@ -6964,40 +5909,6 @@ textarea::selection { --primary-bg, etc.) so light + dark themes are picked up automatically. Bucket colors are exposed as their own tokens with light/dark overrides below so status pills stay legible against the dark canvas. */ -body { - --bucket-error-bg: #FCEDED; - --bucket-error-fg: #8A1F1F; - --bucket-error-bd: #F0C4C4; - --bucket-error-dot: #B53737; - --bucket-warn-bg: #FFF3DF; - --bucket-warn-fg: #7A4D00; - --bucket-warn-bd: #F0D8A0; - --bucket-warn-dot: #B07A2F; - --bucket-info-bg: #EAF2EC; - --bucket-info-fg: #2C5D3A; - --bucket-info-bd: #C5DCCD; - --bucket-info-dot: #5B8D6B; - /* Subtle elevation tokens — gives cards weight without losing the paper - palette. Single soft shadow + a 1px hairline to keep the editorial feel. */ - --card-shadow: 0 1px 2px rgba(26, 24, 21, 0.04), 0 4px 14px rgba(26, 24, 21, 0.05); - --card-shadow-hover: 0 1px 2px rgba(26, 24, 21, 0.06), 0 8px 24px rgba(26, 24, 21, 0.08); -} -.dark-mode { - --bucket-error-bg: rgba(255, 139, 123, 0.10); - --bucket-error-fg: var(--status-error); - --bucket-error-bd: rgba(255, 139, 123, 0.28); - --bucket-error-dot: var(--status-error); - --bucket-warn-bg: rgba(255, 211, 122, 0.10); - --bucket-warn-fg: var(--status-progress); - --bucket-warn-bd: rgba(255, 211, 122, 0.28); - --bucket-warn-dot: var(--status-progress); - --bucket-info-bg: rgba(152, 200, 168, 0.10); - --bucket-info-fg: #98C8A8; - --bucket-info-bd: rgba(152, 200, 168, 0.28); - --bucket-info-dot: #98C8A8; - --card-shadow: 0 1px 2px rgba(0, 0, 0, 0.35), 0 6px 18px rgba(0, 0, 0, 0.30); - --card-shadow-hover: 0 2px 4px rgba(0, 0, 0, 0.45), 0 12px 28px rgba(0, 0, 0, 0.40); -} .errors-page .errors-header { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin: 4px 0 8px; } .errors-page .errors-actions { display: flex; gap: 6px; } @@ -7011,36 +5922,24 @@ body { .errors-page .kpi-card { background: var(--paper-card); border: 1px solid var(--border-color); - border-radius: 12px; padding: 18px 20px; display: flex; flex-direction: column; gap: 4px; - box-shadow: var(--card-shadow); transition: box-shadow 160ms ease, transform 160ms ease; } -.errors-page .kpi-card:hover { box-shadow: var(--card-shadow-hover); } .errors-page .kpi-label { - font-family: var(--font-mono); - font-size: 0.6875rem; - text-transform: uppercase; - letter-spacing: 0.08em; color: var(--ink-muted); + font-family: var(--font-sans) !important; } .errors-page .kpi-value { - font-family: var(--font-serif); - font-size: 2.6rem; - font-weight: 400; line-height: 1; margin-top: 2px; color: var(--color); } -.errors-page .kpi-card.kpi-error .kpi-value { color: var(--bucket-error-fg); } -.errors-page .kpi-card.kpi-warn .kpi-value { color: var(--bucket-warn-fg); } -.errors-page .kpi-card.kpi-info .kpi-value { color: var(--bucket-info-fg); } -.errors-page .kpi-sub { font-size: 0.75rem; color: var(--ink-muted); font-style: italic; } -.errors-page .kpi-sub.up { color: var(--bucket-error-fg); font-style: normal; } -.errors-page .kpi-sub.down { color: var(--bucket-info-fg); font-style: normal; } +.errors-page .kpi-sub { font-size: 0.75rem; font-style: normal !important; } +.errors-page .kpi-sub.up { font-style: normal; } +.errors-page .kpi-sub.down { font-style: normal; } .errors-page .dropped-warn { color: var(--bucket-error-fg); font-weight: 600; font-style: normal; } .errors-page .volume-chart { @@ -7049,13 +5948,12 @@ body { border-radius: 12px; padding: 18px 22px; margin-bottom: 18px; - box-shadow: var(--card-shadow); } .errors-page .volume-head { - display: flex; justify-content: space-between; align-items: center; - font-family: var(--font-mono); - font-size: 0.6875rem; color: var(--ink-muted); - text-transform: uppercase; letter-spacing: 0.08em; + display: flex; + justify-content: space-between; + align-items: center; + color: var(--ink-muted); margin-bottom: 10px; } .errors-page .volume-legend { display: flex; gap: 14px; align-items: center; text-transform: none; letter-spacing: 0; font-family: var(--font-sans); } @@ -7068,44 +5966,29 @@ body { .errors-page .volume-bar .seg { display: block; width: 100%; } .errors-page .seg.seg-error { background: var(--bucket-error-dot); } .errors-page .seg.seg-warn { background: var(--bucket-warn-dot); } -.errors-page .seg.seg-info { background: var(--bucket-info-dot); opacity: 0.7; } +.errors-page .seg.seg-info { opacity: 1 !important; } -.errors-page .errors-toolbar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 12px; } -.errors-page .seg-tabs { - display: inline-flex; - border: 1px solid var(--border-color); - border-radius: 8px; - overflow: hidden; - background: var(--paper-card); -} -.errors-page .seg-tabs button { - background: transparent; border: none; - padding: 6px 14px; font-size: 0.875rem; cursor: pointer; - color: var(--color); font-family: var(--font-sans); -} -.errors-page .seg-tabs button + button { border-left: 1px solid var(--border-color); } -.errors-page .seg-tabs button.active { background: var(--primary-bg); color: var(--primary-color); } -.errors-page .errors-toolbar .search-wrap { position: relative; flex: 1 1 320px; min-width: 220px; } +.errors-page .errors-toolbar { display: flex; align-items: center; margin-bottom: 12px; flex-wrap: nowrap !important; gap: 8px !important; } +.errors-page .errors-toolbar .search-wrap { position: relative; } .errors-page .errors-toolbar .search-wrap input { width: 100%; padding: 6px 10px 6px 32px; border: 1px solid var(--border-color); border-radius: 8px; - font-family: var(--font-mono); font-size: 0.8125rem; + font-family: var(--font-mono); + font-size: 0.8125rem; background: var(--input-bg); color: var(--input-color); } .errors-page .errors-toolbar .search-icon { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); color: var(--ink-muted); font-size: 0.875rem; } .errors-page .errors-toolbar .filter-count { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); font-size: 0.75rem; color: var(--ink-muted); } .errors-page .errors-toolbar .select-wrap { display: inline-flex; align-items: center; gap: 6px; } -.errors-page .errors-toolbar .select-wrap label { - font-family: var(--font-mono); - font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.08em; - color: var(--ink-muted); margin: 0; -} +.errors-page .errors-toolbar .select-wrap label { color: var(--ink-muted); margin: 0; } .errors-page .errors-toolbar .select-wrap select { - background: var(--input-bg); color: var(--input-color); - border: 1px solid var(--border-color); border-radius: 8px; + background: var(--input-bg); + color: var(--input-color); + border: 1px solid var(--border-color); + border-radius: 8px; } .errors-page .errors-toolbar .autoref { display: inline-flex; gap: 6px; align-items: center; font-size: 0.8125rem; color: var(--color); cursor: pointer; margin: 0; } .errors-page .btn-icon { width: 32px; padding: 4px 0; } @@ -7115,48 +5998,55 @@ body { border: 1px solid var(--border-color); border-radius: 12px; overflow: hidden; - box-shadow: var(--card-shadow); } .errors-page .errors-list-head, .errors-page .errors-row-main { display: grid; - grid-template-columns: 110px 100px 100px 1fr 60px 70px; gap: 16px; padding: 18px 20px; - align-items: start; + grid-template-columns: 120px 104px 120px minmax(0, 1fr) 64px 72px !important; } -.errors-page .errors-list-head { padding: 12px 20px; align-items: center; } .errors-page .errors-list-head { + padding: 12px 20px; + align-items: center; font-family: var(--font-mono); - font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.08em; + font-size: 0.6875rem; + text-transform: uppercase; + letter-spacing: 0.08em; color: var(--ink-muted); border-bottom: 1px solid var(--border-color); - background: var(--paper-bg-alt); } .errors-page .errors-row { border-bottom: 1px solid var(--border-soft); } .errors-page .errors-row:last-child { border-bottom: none; } .errors-page .errors-row.open { background: var(--paper-bg-alt); } -.errors-page .errors-row-main { cursor: pointer; } +.errors-page .errors-row-main { + cursor: pointer; + align-items: center !important; + padding-top: 8px !important; + padding-bottom: 8px !important; + min-height: 44px !important; +} .errors-page .errors-row-main:hover { background: var(--hover-bg-color); } -.errors-page .col-when .when-rel { font-size: 0.9375rem; color: var(--color); font-variant-numeric: tabular-nums; } +.errors-page .col-when .when-rel { color: var(--color); font-variant-numeric: tabular-nums; } .errors-page .col-when .when-abs { font-family: var(--font-mono); font-size: 0.75rem; color: var(--ink-muted); font-variant-numeric: tabular-nums; margin-top: 2px; } .errors-page .col-sev { display: flex; align-items: center; gap: 8px; } .errors-page .sev-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; } .errors-page .sev-dot.sev-error { background: var(--bucket-error-dot); } .errors-page .sev-dot.sev-warn { background: var(--bucket-warn-dot); } -.errors-page .sev-dot.sev-info { background: var(--bucket-info-dot); } -.errors-page .sev-label { font-family: var(--font-mono); font-size: 0.75rem; letter-spacing: 0.08em; color: var(--color); } +.errors-page .sev-label { color: var(--color); } .errors-page .pill-module { display: inline-block; - font-family: var(--font-mono); font-size: 0.75rem; - background: var(--paper-bg-alt); color: var(--ink-soft); + font-family: var(--font-mono); + font-size: 0.75rem; + background: var(--paper-bg-alt); + color: var(--ink-soft); border: 1px solid var(--border-color); - padding: 3px 10px; border-radius: 6px; + padding: 3px 10px; + border-radius: 6px; } .errors-page .col-msg .msg-code { font-family: var(--font-mono); - font-size: 1rem; color: var(--color); font-weight: 600; } @@ -7172,36 +6062,47 @@ body { font-family: var(--font-mono); font-size: 0.8125rem; margin-top: 6px; - word-break: break-all; + word-break: normal !important; } .errors-page .count-pill { display: inline-block; - padding: 2px 8px; border-radius: 4px; - background: var(--primary-bg); color: var(--primary-color); - font-family: var(--font-mono); font-size: 0.75rem; font-variant-numeric: tabular-nums; + padding: 2px 8px; + border-radius: 4px; + background: var(--primary-bg); + color: var(--primary-color); + font-family: var(--font-mono); + font-size: 0.75rem; + font-variant-numeric: tabular-nums; } .errors-page .count-pill.count-pill-muted { - background: transparent; color: var(--ink-muted); + background: transparent; + color: var(--ink-muted); border: 1px solid var(--border-color); } .errors-page .status-pill { display: inline-block; - padding: 2px 10px; border-radius: 4px; - font-family: var(--font-mono); font-size: 0.8125rem; font-variant-numeric: tabular-nums; + padding: 2px 10px; + border-radius: 4px; + font-family: var(--font-mono); + font-size: 0.8125rem; + font-variant-numeric: tabular-nums; border: 1px solid transparent; } .errors-page .status-pill.status-error { background: var(--bucket-error-bg); color: var(--bucket-error-fg); border-color: var(--bucket-error-bd); } .errors-page .status-pill.status-warn { background: var(--bucket-warn-bg); color: var(--bucket-warn-fg); border-color: var(--bucket-warn-bd); } -.errors-page .status-pill.status-info { background: var(--bucket-info-bg); color: var(--bucket-info-fg); border-color: var(--bucket-info-bd); } .errors-page .errors-row-detail { padding: 0 16px 16px; } .errors-page .detail-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--border-color); margin-bottom: 12px; } .errors-page .detail-tabs button { - background: transparent; border: 0; + background: transparent; + border: 0; border-bottom: 2px solid transparent; - padding: 8px 12px; font-size: 0.875rem; cursor: pointer; - color: var(--ink-muted); font-family: var(--font-sans); + padding: 8px 12px; + font-size: 0.875rem; + cursor: pointer; + color: var(--ink-muted); + font-family: var(--font-sans); } .errors-page .detail-tabs button.active { color: var(--color); border-bottom-color: var(--color); } .errors-page .detail-body { display: grid; grid-template-columns: 1fr 260px; gap: 20px; } @@ -7216,7 +6117,7 @@ body { color: var(--color); max-height: 26em; overflow: auto; - /* pre-wrap honors leading-space indentation (so aligned columns survive) + /* Pre-wrap honors leading-space indentation (so aligned columns survive) while still wrapping long string values; overflow-wrap forces the break mid-word for unbroken URLs / encoded JSON detail strings. */ white-space: pre-wrap; @@ -7228,7 +6129,8 @@ body { background: var(--paper-card); border: 1px solid var(--border-color); border-radius: 12px; - max-height: 22em; overflow: auto; + max-height: 22em; + overflow: auto; box-shadow: var(--card-shadow); } .errors-page .stack-pre { @@ -7239,7 +6141,10 @@ body { overflow-x: auto; } .errors-page .related-row { - display: flex; gap: 10px; padding: 6px 12px; align-items: center; + display: flex; + gap: 10px; + padding: 6px 12px; + align-items: center; border-bottom: 1px solid var(--border-soft); font-size: 0.8125rem; } @@ -7257,8 +6162,11 @@ body { .errors-page .aside-block + .aside-block { margin-top: 16px; } .errors-page .aside-label { font-family: var(--font-mono); - font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.08em; - color: var(--ink-muted); margin-bottom: 4px; + font-size: 0.6875rem; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--ink-muted); + margin-bottom: 4px; } .errors-page .aside-value { font-family: var(--font-serif); @@ -7273,8 +6181,6 @@ body { .errors-page .errors-pager { display: flex; justify-content: space-between; align-items: center; padding: 10px 0; color: var(--ink-muted); font-size: 0.875rem; } @media (max-width: 720px) { - .errors-page .errors-list-head, - .errors-page .errors-row-main { grid-template-columns: 80px 80px 1fr 60px; } .errors-page .errors-list-head .col-mod, .errors-page .errors-row-main .col-mod, .errors-page .errors-list-head .col-sev, @@ -7294,13 +6200,6 @@ body { } /* Status dot */ -.overview-page .ov-dot { - display: inline-block; - width: 8px; height: 8px; - border-radius: 50%; - margin-left: 6px; - vertical-align: middle; -} .overview-page .ov-dot-ok { background: #2F7A44; } .overview-page .ov-dot-warn { background: var(--status-progress); } .overview-page .ov-dot-idle { background: var(--ink-muted); } @@ -7317,36 +6216,27 @@ body { .overview-page .ov-kpi-card { background: var(--paper-card, #fff); border: 1px solid var(--border-color); - border-radius: 12px; padding: 18px 22px; display: flex; flex-direction: column; gap: 4px; - box-shadow: var(--card-shadow); transition: box-shadow 160ms ease; } .overview-page .ov-kpi-card:hover { box-shadow: var(--card-shadow-hover); } .overview-page .ov-kpi-label { - font-family: var(--font-mono); - font-size: 0.6875rem; - text-transform: uppercase; - letter-spacing: 0.08em; color: var(--ink-muted); } .overview-page .ov-kpi-value { - font-family: var(--font-serif); - font-size: 2.6rem; - font-weight: 400; line-height: 1; margin-top: 2px; color: var(--color); } -.overview-page .ov-kpi-value.ov-val-warn { color: #B42318; } .dark-mode .overview-page .ov-kpi-value.ov-val-warn { color: #F08A82; } .overview-page .ov-kpi-sub { font-size: 0.75rem; color: var(--ink-muted); margin-top: 2px; + text-overflow: ellipsis; } /* ── Daily highlights ─────────────────────────────────────────── */ @@ -7357,25 +6247,14 @@ body { margin: -4px 0 22px; } .overview-page .ov-daily-card { - background: var(--primary-bg); border: 1px solid var(--border-color); - border-radius: 12px; padding: 16px 20px; - box-shadow: var(--card-shadow); } .overview-page .ov-daily-label { - font-family: var(--font-mono); - font-size: 0.6875rem; - text-transform: uppercase; - letter-spacing: 0.08em; color: var(--ink-muted); } .overview-page .ov-daily-value { - font-family: var(--font-serif); - font-size: 2.5rem; - font-weight: 400; line-height: 1; - color: var(--accent, #1F6A64); margin-top: 6px; } .overview-page .ov-daily-sub { @@ -7386,9 +6265,6 @@ body { .dark-mode .overview-page .ov-daily-card { background: var(--paper-card); } -.dark-mode .overview-page .ov-daily-value { - color: #7CC7BE; -} /* ── Chart cards ─────────────────────────────────────────────── */ .overview-page .ov-chart-row { @@ -7402,7 +6278,6 @@ body { border: 1px solid var(--border-color); border-radius: 12px; padding: 18px 22px 14px; - box-shadow: var(--card-shadow); } .overview-page .ov-chart-head { display: flex; @@ -7410,12 +6285,7 @@ body { align-items: center; margin-bottom: 14px; } -.overview-page .ov-chart-title { - font-family: var(--font-serif); - font-size: 1rem; -} .overview-page .ov-chart-legend { - font-family: var(--font-mono); font-size: 0.6875rem; color: var(--ink-muted); display: flex; @@ -7424,16 +6294,11 @@ body { } .overview-page .ov-dot-legend { display: inline-block; - width: 8px; height: 8px; + width: 8px; + height: 8px; border-radius: 50%; } .overview-page .ov-dot-accent { background: var(--accent, #1F6A64); } -.overview-page .ov-dot-ok-fill { background: #2F7A44; } -.overview-page .ov-dot-user-fill { background: #8B5E2E; } -.overview-page .ov-dot-new-user-fill { background: var(--status-progress); } -.dark-mode .overview-page .ov-dot-ok-fill { background: #7DC894; } -.dark-mode .overview-page .ov-dot-user-fill { background: var(--status-progress); } -.dark-mode .overview-page .ov-dot-new-user-fill { background: var(--status-progress); } /* Spark bar chart */ .overview-page .ov-spark-bars { @@ -7456,12 +6321,6 @@ body { transition: height 300ms ease; opacity: 0.55; } -.overview-page .ov-spark-fill-alt { background: #2F7A44; } -.overview-page .ov-spark-fill-user { background: #8B5E2E; } -.overview-page .ov-spark-fill-new-user { background: var(--status-progress); } -.dark-mode .overview-page .ov-spark-fill-alt { background: #7DC894; } -.dark-mode .overview-page .ov-spark-fill-user { background: var(--status-progress); } -.dark-mode .overview-page .ov-spark-fill-new-user { background: var(--status-progress); } .overview-page .ov-spark-col:hover .ov-spark-fill { opacity: 1; } .overview-page .ov-spark-col.has-tip::after { content: attr(data-tip); @@ -7521,7 +6380,6 @@ body { border: 1px solid var(--border-color); border-radius: 12px; padding: 18px 20px; - box-shadow: var(--card-shadow); } .overview-page .ov-panel-head { display: flex; @@ -7529,15 +6387,7 @@ body { align-items: baseline; margin-bottom: 14px; } -.overview-page .ov-panel-title { - font-family: var(--font-serif); - font-size: 1rem; -} .overview-page .ov-panel-meta { - font-family: var(--font-mono); - font-size: 0.6875rem; - text-transform: uppercase; - letter-spacing: 0.06em; color: var(--ink-muted); } .overview-page .ov-panel-foot { @@ -7578,11 +6428,6 @@ body { color: var(--ink-muted); } .overview-page .ov-performance-window select { width: auto; } -.overview-page .ov-performance-tabs { - margin: 0 0 16px; - gap: 4px; -} -.overview-page .ov-performance-tabs .paper-tab { white-space: nowrap; } .overview-page .ov-metrics-scroll { max-width: 100%; overflow-x: auto; @@ -7668,7 +6513,6 @@ body { .overview-page .ov-performance { padding: 16px 12px; } .overview-page .ov-performance-window { width: 100%; } .overview-page .ov-performance-window select { flex: 1; min-width: 0; } - .overview-page .ov-performance-tabs .paper-tab { flex: 1; padding: 10px 8px; } } /* Stacked horizontal bar (repo status) */ @@ -7679,11 +6523,11 @@ body { overflow: hidden; margin-bottom: 14px; } -.overview-page .ov-bar-seg { min-width: 2px; transition: width 400ms ease; } +.overview-page .ov-bar-seg { transition: width 400ms ease; } .overview-page .ov-bar-ready { background: #2F7A44; } .overview-page .ov-bar-preparing { background: var(--status-progress); } .overview-page .ov-bar-error { background: #B42318; } -.overview-page .ov-bar-expired { background: #8A857C; } +.overview-page .ov-bar-expired { background: var(--ink-faint); } .overview-page .ov-bar-removed { background: #B5AFA2; } .dark-mode .overview-page .ov-bar-ready { background: #7DC894; } .dark-mode .overview-page .ov-bar-preparing { background: var(--status-progress); } @@ -7703,7 +6547,8 @@ body { .overview-page .ov-legend-item:hover { text-decoration: none; color: inherit; } .overview-page .ov-swatch { display: inline-block; - width: 12px; height: 12px; + width: 12px; + height: 12px; border-radius: 3px; flex-shrink: 0; } @@ -7718,11 +6563,7 @@ body { .overview-page .ov-error-bars { display: flex; flex-direction: column; gap: 12px; } .overview-page .ov-ebar-row { display: flex; align-items: center; gap: 10px; } .overview-page .ov-ebar-label { - width: 30px; - flex-shrink: 0; - font-family: var(--font-mono); font-size: 0.75rem; - text-transform: uppercase; color: var(--ink-muted); } .overview-page .ov-ebar-track { @@ -7739,7 +6580,6 @@ body { } .overview-page .ov-ebar-error { background: #B42318; } .overview-page .ov-ebar-warn { background: var(--status-progress); } -.overview-page .ov-ebar-info { background: var(--accent, #1F6A64); } .dark-mode .overview-page .ov-ebar-error { background: #F08A82; } .dark-mode .overview-page .ov-ebar-warn { background: var(--status-progress); } .overview-page .ov-ebar-n { @@ -7775,12 +6615,10 @@ body { } .overview-page .ov-route-head:hover { background: transparent; } .overview-page .ov-route-name { - font-family: var(--font-mono); font-size: 0.8125rem; } .overview-page .ov-route-n { text-align: right; - font-family: var(--font-mono); font-size: 0.8125rem; } .overview-page .ov-route-lat { color: var(--ink-muted); } @@ -7816,7 +6654,8 @@ body { border-radius: 10px; } .overview-page .ov-svc-dot { - width: 10px; height: 10px; + width: 10px; + height: 10px; border-radius: 50%; margin-top: 3px; flex-shrink: 0; @@ -7831,11 +6670,6 @@ body { font-size: 0.75rem; color: var(--ink-muted); } -.overview-page .ov-svc-detail { - font-size: 0.75rem; - color: var(--ink-muted); - white-space: nowrap; -} /* ── Responsive ───────────────────────────────────────────────── */ @media (max-width: 900px) { @@ -7849,20 +6683,17 @@ body { .overview-page .ov-chart-row { grid-template-columns: 1fr; } .overview-page .ov-header { flex-direction: column; gap: 8px; } } +.admin-page .ov-header .paper-page-title, .admin-page .q-header .paper-page-title, .admin-page .errors-header .paper-page-title { margin-bottom: 0 !important; } @media (max-width: 480px) { .overview-page .ov-kpi-row { grid-template-columns: 1fr 1fr; } .overview-page .ov-services-grid { grid-template-columns: 1fr 1fr; } } /* Keep account access secondary to creating an anonymization. */ -.dashboard-heading-actions { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; padding-bottom: 12px; } +.dashboard-heading-actions { flex-direction: column; padding-bottom: 12px; } .dashboard-heading-actions .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; } -.dashboard-connections-link { display: inline-flex; align-items: center; gap: 7px; min-height: 32px; color: var(--ink-muted); font-size: 12px; line-height: 1.5; } -.dashboard-connections-link:hover { color: var(--accent); text-decoration: none; } -.dashboard-connections-link:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; border-radius: 2px; } @media (max-width: 767px) { - .dashboard-heading-actions { align-items: flex-start; padding-bottom: 0; gap: 4px; } - .dashboard-connections-link { min-height: 44px; } + .dashboard-heading-actions { padding-bottom: 0; } } .paper-settings-connection-link { display: flex; align-items: center; gap: 12px; padding: 18px 0; color: var(--color); font-size: 14px; } @@ -7873,11 +6704,18 @@ body { .paper-settings-connection-link:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; } /* GitHub connections use the same open sections as account settings. */ -.connections-heading { margin-bottom: 36px; } .connections-heading .paper-page-title { font-size: clamp(38px, 4.5vw, 56px); margin-bottom: 12px; } .connections-heading .paper-page-lede { font-size: 15px; } -.connections-grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: 56px; align-items: start; border-top: 1px solid var(--border-color); padding-top: 28px; } -.connections-grid > section { min-width: 0; } +.connections-grid { border-top: 1px solid var(--border-color); padding-top: 28px; display: grid !important; grid-template-columns: 1fr 1fr !important; } +.connections-grid>section { + min-width: 0; + background: var(--paper-card); + border: 1px solid var(--border-color); + border-radius: var(--radius-surface); + padding: 20px; + display: flex; + flex-direction: column; +} .connection-top, .connection-title { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; } .connection-top { margin-bottom: 24px; min-height: 28px; } .connection-top > i { color: var(--ink-muted); font-size: 24px; } @@ -7887,7 +6725,7 @@ body { .connections-page p { font-size: 14px; line-height: 1.65; color: var(--ink-muted); } .connection-badge { background: var(--accent-soft); color: var(--accent); font-size: 11px; font-weight: 600; border-radius: 5px; padding: 4px 8px; white-space: nowrap; } .connection-badge-muted { background: var(--paper-bg-alt); color: var(--ink-muted); } -.connection-status { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; color: var(--ink-muted); } +.connection-status { display: inline-flex; align-items: center; gap: 6px; color: var(--ink-muted); } .connection-status::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: currentColor; } .connection-status.is-connected { color: var(--status-ready); } .connection-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; margin: 22px 0 16px; } @@ -7897,8 +6735,16 @@ body { .connection-link:hover { color: var(--link-hover-color); text-decoration: underline; } .connection-link:disabled { color: var(--ink-muted); opacity: .65; cursor: not-allowed; text-decoration: none; } .connection-link:focus-visible { outline: 2px solid var(--accent); outline-offset: 5px; } -.connection-installations { list-style: none; padding: 0; margin: 18px 0; border-top: 1px solid var(--border-soft); } -.connection-installations li { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 14px 0; font-size: 12px; border-bottom: 1px solid var(--border-soft); } +.connection-installations { list-style: none; padding: 0; margin: 18px 0; } +.connection-installations li { + display: flex; + justify-content: space-between; + gap: 12px; + flex-wrap: wrap; + padding: 14px 0; + font-size: 12px; + padding-top: 0 !important; +} .connection-revoke { border-top: 1px solid var(--border-soft); padding-top: 18px; margin-top: 24px; } .connection-danger { color: var(--status-error); } .connection-resources { margin-top: 36px; padding-top: 28px; border-top: 1px solid var(--border-color); } @@ -7915,7 +6761,7 @@ body { .connection-resource-actions .connection-help { flex-basis: 100%; } .connections-page .connection-footnote { display: flex; align-items: baseline; gap: 10px; margin-top: 22px; font-size: 12px; } @media (max-width: 767px) { - .connections-grid { grid-template-columns: 1fr; gap: 28px; } + .connections-grid { grid-template-columns: 1fr !important; } .connections-grid > section + section { border-top: 1px solid var(--border-color); padding-top: 28px; } .connection-empty { flex-wrap: wrap; } .connection-empty > div { flex: 1; min-width: 180px; } @@ -7925,16 +6771,14 @@ body { .paper-table-empty-actions .btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; } .paper-table-empty-actions .btn > i { font-size: 1em; line-height: 1; color: inherit; margin-right: 0 !important; } -.auth-back { display: inline-flex; align-items: center; gap: 10px; font-size: 13px; color: var(--ink-muted); margin-bottom: 48px; } .auth-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: start; } .auth-intro, .auth-options { padding-top: 28px; } .auth-title-mobile { display: none; } -.auth-intro .paper-page-title { font-size: clamp(48px, 5vw, 76px); line-height: 1.06; margin: 18px 0 24px; } +.auth-intro .paper-page-title { margin: 18px 0 24px; } .auth-intro .paper-page-lede { max-width: 330px; } .auth-options { display: grid; gap: 28px; } .auth-options h2 { font-family: inherit; font-size: 22px; font-weight: 600; margin: 0 0 10px; } .auth-options p { font-size: 14px; line-height: 1.65; color: var(--ink-muted); } -.auth-options .auth-existing { font-size: 12px; border-left: 2px solid var(--accent); padding-left: 14px; margin: 0; } .auth-permissions { padding: 6px 0 12px; list-style: none; font-size: 13px; line-height: 1.6; } .auth-permissions li { display: flex; gap: 10px; margin: 12px 0; } .auth-permissions i { color: var(--status-ready); margin-top: 4px; } @@ -7965,16 +6809,25 @@ body { .repo-access-switch button[aria-pressed="true"] { background: var(--accent-soft); color: var(--accent); opacity: 1; cursor: default; font-weight: 600; } .repo-access-switch button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } .repo-access-details .btn { font-size: 12px; padding: 8px 12px; } -.repo-access-note { display: flex; gap: 6px 16px; flex-wrap: wrap; padding: 0; color: var(--ink-muted); font-size: 11px; line-height: 1.6; } +.repo-access-note { + display: flex; + gap: 6px 16px; + flex-wrap: wrap; + padding: 0; + color: var(--ink-muted); + font-size: 11px; + line-height: 1.6; + max-width: none !important; +} @media (max-width: 767px) { .auth-page { max-width: 480px; } - .auth-back, .auth-intro .paper-eyebrow, .auth-title-desktop { display: none; } + .auth-intro .paper-eyebrow, .auth-title-desktop { display: none; } .auth-title-mobile { display: inline; } .auth-layout { grid-template-columns: 1fr; gap: 24px; } .auth-intro, .auth-options { padding-top: 0; } - .auth-intro .paper-page-title { font-size: 40px; line-height: 1.15; margin: 6px 0 12px; } - .auth-intro .paper-page-lede { max-width: none; font-size: 14px; margin: 0; } + .auth-intro .paper-page-title { margin: 6px 0 12px; } + .auth-intro .paper-page-lede { max-width: none; margin: 0; } .auth-options { gap: 24px; } .auth-options .connection-top { margin-bottom: 16px; } .auth-options h2 { font-size: 18px; } @@ -7989,27 +6842,30 @@ body { .repo-access-controls { width: 100%; gap: 12px; } } +/* Section labels: sans small caps instead of tiny tracked mono */ +.paper-eyebrow, .paper-faq-eyebrow, .paper-stats-meta { + font-family: var(--font-sans) !important; + font-size: 12.5px !important; + font-weight: 600 !important; + letter-spacing: 0.06em !important; + color: var(--ink-soft) !important; +} + /* Bootstrap's muted utility must use the same accessible colors as our copy. */ .text-muted { color: var(--ink-muted) !important; } -.draft-status, -.anonymize-review-note { font-size: 13px; color: var(--ink-muted); } -.anonymize-review-note { padding: 12px 0; margin: 0; } +.draft-status { font-size: 13px; color: var(--ink-muted); display: flex; align-items: center; flex-wrap: wrap; gap: 6px 12px; padding: 10px 0; } .anonymize-preview-status { padding: 20px 32px; color: var(--ink-muted); } .anonymize-preview-status p { margin: 0 0 12px; } @media (max-width: 575px) { .dashboard-page .paper-page-lede { margin-bottom: 8px; } - .dashboard-page .dashboard-heading-actions { gap: 4px; } - .dashboard-page .dashboard-connections-link { min-height: 32px; } - .dashboard-page .dashboard-filter-row { margin-top: 12px; } .anonymize-preview-status { padding: 16px; } } /* Working screens: readable typography and clear groups on the warm canvas. */ -.paper-page .paper-page-title { font-size: 32px; } .paper-page.admin-page .paper-page-title { font-size: 28px; } -.paper-page .paper-page-lede { font-size: 14px; line-height: 1.5; } +.paper-page .paper-page-lede { font-size: 14px; line-height: 1.5; overflow-wrap: anywhere; } .paper-settings { padding-top: 32px; } -.paper-settings-body { grid-template-columns: 180px minmax(0, 1fr); gap: 40px; margin-top: 24px; padding-top: 24px; border-top: 0; } +.paper-settings-body { gap: 40px; padding-top: 24px; border-top: 0; } .paper-settings-main .paper-settings-section { background: var(--paper-card); border: 1px solid var(--border-color); border-radius: var(--radius-surface); padding: 20px; margin-bottom: 16px; } .paper-settings .paper-section-eyebrow, .anonymize-page .paper-section-eyebrow { font-family: var(--font-sans); font-size: 16px; font-weight: 600; color: var(--color); text-transform: none; letter-spacing: -0.01em; margin-bottom: 12px; } @@ -8026,36 +6882,50 @@ body { .paper-page .btn-ink:hover, .anonymize-page .btn-ink:hover, .explorer-page .btn-ink:hover { background: var(--accent); border-color: var(--accent); color: #fff; filter: brightness(.94); } .dark-mode .paper-page .btn-ink:hover, .dark-mode .anonymize-page .btn-ink:hover, .dark-mode .explorer-page .btn-ink:hover { color: #1A1815; } .paper-page .btn-ink:active, .anonymize-page .btn-ink:active, .explorer-page .btn-ink:active { filter: brightness(.9); } +.explorer-page > .explorer-main { grid-row: 2; grid-column: 2; min-height: 0; } +.explorer-page.files-hidden > .explorer-main { grid-column: 1 / -1; } +/* Sidebar: search sits flush at the top */ +.explorer-page > .leftCol .leftCol-search { padding-top: 12px !important; } +@media (max-width: 991px) { + .explorer-page { grid-template-columns: minmax(0, 1fr); } +} +@media (max-width: 991px) { + .explorer-page > .explorer-main { grid-column: 1 / -1; } +} +@media (max-width: 991px) { + .explorer-page > .leftCol .leftCol-close { width: 44px !important; height: 44px !important; } +} +@media (max-width: 767px) { + .explorer-page { grid-template-rows: auto auto minmax(0, 1fr); } +} +@media (max-width: 767px) { + .explorer-page > .viewer-bar { grid-row: 1; } +} +@media (max-width: 767px) { + .explorer-page > .leftCol, .explorer-page > .explorer-main { grid-row: 3 !important; } +} input[type="date"], select { color-scheme: light; } .dark-mode input[type="date"], .dark-mode select { color-scheme: dark; } -.draft-status { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 12px; padding: 10px 0; } .draft-discard { padding: 0; border: 0; color: var(--accent); font: inherit; font-size: 13px; text-decoration: underline; background: transparent; cursor: pointer; } .conference-feedback { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px; margin-top: 16px; background: var(--paper-card); border: 1px solid var(--border-color); border-radius: var(--radius-surface); width: 100%; } -.paper-table { background: var(--paper-card); border: 1px solid var(--border-color); border-radius: var(--radius-surface); margin-top: 12px; } +.paper-table { background: var(--paper-card); border: 1px solid var(--border-color); border-radius: var(--radius-surface); } .dashboard-page .paper-table-dashboard { width: 100%; } .paper-account-email { margin: 20px 0; } .paper-account-email .form-control { max-width: 420px; } .paper-settings .paper-account-email .btn[type="submit"] { min-height: 36px; padding: 7px 18px; white-space: nowrap; } -.paper-table .paper-table-head { font-family: var(--font-sans); text-transform: none; letter-spacing: 0; font-size: 12px; background: var(--paper-bg-alt); border-radius: var(--radius-surface) var(--radius-surface) 0 0; } +.paper-table .paper-table-head { font-family: var(--font-sans); text-transform: none; letter-spacing: 0; font-size: 12px; border-radius: var(--radius-surface) var(--radius-surface) 0 0; } .paper-table .paper-table-head, .paper-table .paper-table-row { padding-left: 16px; padding-right: 16px; } /* Dashboard: a compact header, quiet controls, and fixed row actions. */ .dashboard-page { - --dashboard-space-xs: 4px; - --dashboard-space-sm: 8px; - --dashboard-space-md: 12px; - --dashboard-space-lg: 16px; - --dashboard-space-xl: 24px; padding-top: var(--dashboard-space-xl); } -.project-icon-definitions { position: absolute; width: 0; height: 0; overflow: hidden; } .project-type-svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; } .project-empty-icon { width: 28px; height: 28px; color: var(--ink-faint); } .project-type-icon { display: inline-flex; color: var(--ink-muted); flex-shrink: 0; } .dashboard-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--dashboard-space-lg); } .dashboard-heading .paper-page-title { font-size: 28px; margin-bottom: var(--dashboard-space-xs); } -.dashboard-heading .paper-page-lede { display: none; } .dashboard-heading .btn { min-height: 40px; display: inline-flex; gap: var(--dashboard-space-sm); align-items: center; } .dashboard-new-mobile { display: none; } .dashboard-quota { position: relative; margin: 0; padding: 0; border: 0; background: transparent; } @@ -8064,9 +6934,14 @@ input[type="date"], select { color-scheme: light; } .dashboard-quota > summary:hover, .dashboard-quota[open] > summary { background: var(--paper-bg-alt); border-color: var(--ink-faint); } .quota-summary-label { font-weight: 600; } .quota-summary-value { color: var(--ink-muted); font-variant-numeric: tabular-nums; } -.quota-summary-ring { width: 18px; height: 18px; flex-shrink: 0; fill: none; stroke-width: 2.5; } -.quota-ring-track { stroke: var(--border-color); } -.quota-ring-fill { stroke: var(--accent); transform: rotate(-90deg); transform-origin: 50% 50%; } +.quota-summary-ring { flex-shrink: 0; fill: none; stroke-width: 2.5; } +.quota-ring-track { stroke: var(--border-color) !important; stroke-width: 3 !important; } +.quota-ring-fill { + stroke: var(--accent) !important; + stroke-width: 3 !important; + transform: rotate(-90deg); + transform-origin: 12px 12px; +} .quota-summary-ring.quota-warn .quota-ring-fill { stroke: var(--status-progress); } .quota-summary-ring.quota-danger .quota-ring-fill { stroke: var(--status-error); } .quota-ring-unlimited { stroke: var(--accent); stroke-width: 1.7; } @@ -8093,7 +6968,7 @@ input[type="date"], select { color-scheme: light; } .quota-loading { font-size: 12px; color: var(--ink-muted); margin: 12px 0 0; } .dashboard-page .dashboard-filter-row { display: flex; align-items: center; gap: var(--dashboard-space-md); padding: 0; margin: var(--dashboard-space-lg) 0 0; border: 0; background: transparent; } .dashboard-page .dashboard-filter-row .search-wrap { flex: 1 1 240px; min-width: 0; } -.dashboard-page .dashboard-filter-row .form-control { height: 40px; padding: 8px 12px; font-size: 13px; background: var(--paper-card); } +.dashboard-page .dashboard-filter-row .form-control { padding: 8px 12px; font-size: 13px; background: var(--paper-card); } .dashboard-page .dashboard-filter-controls { display: flex; flex-wrap: nowrap; align-items: center; gap: var(--dashboard-space-sm); } .dashboard-extra-filters { display: flex; gap: var(--dashboard-space-sm); } .dashboard-filters-toggle { display: none; } @@ -8107,9 +6982,8 @@ input[type="date"], select { color-scheme: light; } .sort-direction.ascending { transform: rotate(180deg); } .dashboard-page .dashboard-meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--dashboard-space-sm) var(--dashboard-space-md); margin: var(--dashboard-space-md) 0 0; padding: 0; } .dashboard-view-tabs { display: flex; align-items: center; gap: var(--dashboard-space-lg); } -.dashboard-view-short { display: none; } .dashboard-view-tabs button { min-height: 36px; border: 0; border-bottom: 2px solid transparent; border-radius: 0; background: transparent; font: inherit; font-size: 13px; color: var(--ink-muted); padding: 4px 0; } -.dashboard-view-tabs button[aria-pressed="true"] { color: var(--color); border-bottom-color: var(--color); font-weight: 600; } +.dashboard-view-tabs button[aria-pressed="true"] { font-weight: 600; } .attention-count { padding: 1px 5px; margin-left: 4px; border-radius: 4px; background: var(--paper-bg-alt); font-size: 11px; font-variant-numeric: tabular-nums; } .attention-count.has-attention { color: var(--status-error); } .dashboard-count { margin-left: auto; font-size: 12px; color: var(--ink-muted); } @@ -8132,12 +7006,22 @@ input[type="date"], select { color-scheme: light; } .dashboard-page .conf-tag .project-type-svg { width: 14px; height: 14px; } .dashboard-row-meta { display: contents; } .dashboard-page .cell-actions { gap: 0; align-items: center; } -.copy-link-inline, .dashboard-page .btn-icon-dots, .project-close { display: inline-flex; align-items: center; justify-content: center; border: 0; border-radius: 6px; background: transparent; color: var(--ink-muted); padding: 0; width: 32px; height: 32px; min-width: 32px; cursor: pointer; } -.copy-link-inline:hover, .copy-link-inline:focus-visible, .dashboard-page .btn-icon-dots:hover, .project-close:hover { background: var(--accent-soft); color: var(--accent); } -.copy-link-inline:disabled { opacity: .5; cursor: wait; } +.dashboard-page .btn-icon-dots, .project-close { display: inline-flex; align-items: center; justify-content: center; border: 0; border-radius: 6px; background: transparent; color: var(--ink-muted); padding: 0; width: 32px; height: 32px; min-width: 32px; cursor: pointer; } +.dashboard-page .btn-icon-dots:hover, .project-close:hover { background: var(--accent-soft); color: var(--accent); } .mobile-meta-icon { display: none; } -.project-attention-action { display: inline-block; color: var(--accent); border: 0; background: transparent; padding: 0; font: inherit; font-size: 12px; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; } -.project-attention-action { text-align: left; } +.project-attention-action { + display: inline-block; + color: var(--accent); + border: 0; + background: transparent; + padding: 0; + font: inherit; + font-size: 12px; + cursor: pointer; + text-decoration: underline; + text-underline-offset: 3px; + text-align: left; +} .dashboard-page .cell-status .project-attention-action { flex-basis: 100%; } .project-details-row { width: 100%; border-bottom: 1px solid var(--border-color); } .project-details { padding: var(--dashboard-space-xl); background: var(--paper-bg-alt); } @@ -8154,23 +7038,16 @@ input[type="date"], select { color-scheme: light; } .project-name-controls .form-control { min-width: 0; font-size: 14px; } .project-name-controls .btn { flex-shrink: 0; min-height: 40px; } .project-name-form .project-name-error { color: var(--status-error); } -.project-details-button { min-height: 44px; padding: 0 8px; border: 0; border-radius: 6px; background: transparent; font: inherit; font-size: 12px; color: var(--ink-muted); cursor: pointer; } /* Anonymization: distinct settings and reviewer panes, with a mobile switch. */ -.anonymize-page .anonymize-topbar-title { font-family: var(--font-sans); font-size: 28px; font-weight: 600; } .anonymize-topbar { padding: 16px 24px; } .anonymize-form-col { background: var(--paper-bg-alt); } .anonymize-form-col .paper-settings-main { padding: 20px 24px; } .anonymize-form-col .paper-settings-section { padding: 18px; } .anonymize-form-col .paper-settings-section:first-child { padding-top: 18px; } -.anonymize-form-col .anonymize-submit-bar { background: var(--paper-bg-alt); padding: 12px 0; } -.anonymize-preview-head .paper-eyebrow { font-family: var(--font-sans); font-size: 14px; font-weight: 600; color: var(--color); text-transform: none; letter-spacing: 0; } .anonymize-preview-col { background: var(--canvas-bg-color); padding: 24px; } -.anonymize-preview-head { flex-wrap: wrap; gap: 6px 12px; margin-bottom: 16px; } .anonymize-preview-body { padding: 24px; } -.anonymize-mobile-tabs, .mobile-preview-jump, .anonymize-preview-empty { display: none; } -.anonymize-page .repo-access-note { font-size: 12px; } - +.anonymize-mobile-tabs, .mobile-preview-jump { display: none; } @media (max-width: 900px) { .paper-settings-body { grid-template-columns: 1fr; gap: 18px; } @@ -8179,19 +7056,15 @@ input[type="date"], select { color-scheme: light; } .paper-table .paper-table-row { padding-left: 14px; padding-right: 14px; } } @media (max-width: 767px) { - .paper-page .paper-page-title, .anonymize-page .paper-page-title { font-size: 24px; } .paper-settings { padding: 20px 16px 40px; } .paper-settings-main .paper-settings-section { padding: 16px; } .anonymize-topbar { padding: 12px 16px; } - .anonymize-topbar .paper-crumbs { display: none; } .anonymize-mobile-tabs { display: flex; gap: 4px; padding: 8px 16px; border-bottom: 1px solid var(--border-color); background: var(--paper-card); } .anonymize-mobile-tabs button { flex: 1; font: inherit; font-size: 13px; padding: 10px; border: 0; border-radius: 6px; background: transparent; color: var(--ink-muted); } .anonymize-mobile-tabs button[aria-selected="true"] { background: var(--accent-soft); color: var(--accent); font-weight: 600; } .anonymize-page:not(.mobile-preview-active) .anonymize-preview-col { display: none; } .mobile-preview-active .anonymize-form-col { display: none; } - .mobile-preview-active .anonymize-preview-empty { display: block; padding: 24px 16px; color: var(--ink-muted); } .anonymize-form-col .paper-settings-main { padding: 16px; } - .anonymize-form-col .anonymize-submit-bar { background: var(--paper-bg-alt); } .mobile-preview-jump { display: block; width: 100%; min-height: 44px; } .anonymize-preview-col { padding: 16px; } .anonymize-preview-body { padding: 16px; } @@ -8200,8 +7073,6 @@ input[type="date"], select { color-scheme: light; } .paper-settings .quota-header { flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; } } - - @media (max-width: 1100px) and (min-width: 901px) { .dashboard-page .dashboard-filter-row { flex-wrap: wrap; } .dashboard-page .dashboard-filter-row .search-wrap { flex-basis: 100%; } @@ -8225,15 +7096,13 @@ input[type="date"], select { color-scheme: light; } @media (max-width: 767px) { .container.dashboard-page { padding-top: 12px; } .dashboard-heading .paper-page-title { font-size: 24px; } - .dashboard-heading-actions .btn-ink { min-height: 44px; } .dashboard-new-label { display: none; } .dashboard-new-mobile { display: inline; } .dashboard-quota > summary { min-height: 44px; gap: 6px; padding: 10px; font-size: 12px; line-height: 20px; } .dashboard-quota .quota-panel { max-height: calc(100dvh - 184px); overflow-y: auto; overscroll-behavior: contain; } - .dashboard-page .dashboard-filter-row { flex-wrap: wrap; gap: 8px; margin-top: 12px; } + .dashboard-page .dashboard-filter-row { flex-wrap: wrap; gap: 8px; } .dashboard-page .dashboard-filter-row .search-wrap { flex: 1 1 0; } - .dashboard-page .dashboard-filter-row .form-control { height: 44px; } - .dashboard-page .dashboard-filters-toggle { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; padding: 8px; min-height: 44px; background: transparent; border: 0; } + .dashboard-page .dashboard-filters-toggle { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; min-height: 44px; background: transparent; border: 0; } .dashboard-page .dashboard-filter-controls { display: none; width: 100%; } .dashboard-page .dashboard-filter-controls.expanded { display: flex; flex-wrap: wrap; gap: 8px; } .dashboard-page .dashboard-filter-controls .btn-group { width: 100%; display: flex; } @@ -8246,11 +7115,15 @@ input[type="date"], select { color-scheme: light; } .dashboard-page .dashboard-meta { margin-top: 8px; gap: 4px 8px; } .dashboard-view-tabs { gap: 16px; } .dashboard-view-tabs button { min-width: 44px; min-height: 44px; font-size: 12px; } - .dashboard-count { font-size: 11px; } - .dashboard-count { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; } - .dashboard-view-long { display: none; } - .dashboard-view-short { display: inline; } - .dashboard-active-filters { display: contents; } + .dashboard-count { + padding: 0; + white-space: nowrap; + position: static !important; + margin: 0 0 0 auto !important; + overflow: visible !important; + clip: auto !important; + } + .dashboard-active-filters { display: contents; flex-basis: 100%; } .dashboard-page .filter-chip { font-size: 11px; padding: 0 8px; min-height: 44px; gap: 4px; } .dashboard-page .filter-chip-close { min-width: 44px; min-height: 44px; margin: 0; } .dashboard-page .btn-link-inline { min-height: 44px; font-size: 12px; } @@ -8268,6 +7141,7 @@ input[type="date"], select { color-scheme: light; } .project-name-controls .form-control { flex-basis: 100%; } .project-name-controls .btn { min-height: 44px; } } +.dashboard-quota summary { border: 0 !important; box-shadow: none !important; background: transparent !important; padding-left: 0 !important; } @media (max-width: 360px) { .dashboard-attention-prefix { display: none; } @@ -8286,18 +7160,22 @@ input[type="date"], select { color-scheme: light; } .btn-icon-dots .ui-icon { width: 18px; height: 18px; } .paper-page .paper-page-title, .anonymize-page .paper-page-title { font-size: 28px; } .paper-page, .paper-faq { padding-top: 24px; } -.paper-page .paper-page-lede { margin-bottom: 16px; overflow-wrap: anywhere; } -.paper-page-title { overflow-wrap: anywhere; } -.paper-page .form-control, .anonymize-page .form-control { min-height: 40px; font-family: var(--font-sans); font-size: 14px; border-radius: var(--radius-control); } +.paper-page .paper-page-lede { margin-bottom: 16px; } +.paper-page .form-control, .anonymize-page .form-control { min-height: 40px; font-family: var(--font-sans); font-size: 14px; } .paper-page textarea.form-control, .anonymize-page textarea.form-control { height: auto; } /* Regular actions use 14px labels; table tools use the compact size. */ .paper-page .btn, .anonymize-page .btn, .status-bar-actions .btn { - min-height: var(--button-height); padding: 7px var(--button-padding-x); + min-height: var(--button-height); + padding: 7px var(--button-padding-x); font: 500 var(--button-font-size)/var(--button-line-height) var(--font-sans); - border-radius: var(--radius-button); gap: 6px; + border-radius: var(--radius-button); + gap: 6px; } .paper-page .btn.btn-sm, .anonymize-page .btn.btn-sm, .status-bar-actions .btn { - min-height: var(--button-compact-height); padding: 5px 10px; font-size: 13px; border-radius: 6px; + min-height: var(--button-compact-height); + padding: 5px 10px; + font-size: 13px; + border-radius: 6px; } .paper-page .btn-ink, .anonymize-page .btn-ink { min-height: 40px; padding: 9px 15px; } .btn > .ui-icon, .btn > .project-type-svg, .btn > i, .btn-hero > i { width: 16px; height: 16px; margin: 0 !important; flex-shrink: 0; } @@ -8312,55 +7190,61 @@ input[type="date"], select { color-scheme: light; } .paper-page .btn-group .btn-primary:hover, .paper-page .btn-group .btn-primary:active { background: var(--accent-soft) !important; color: var(--accent); } .paper-page .paper-section-eyebrow { font-family: var(--font-sans); font-size: 16px; font-weight: 600; color: var(--color); text-transform: none; letter-spacing: 0; margin-bottom: 12px; } .paper-page .paper-field-label { font-family: var(--font-sans); font-size: 13px; letter-spacing: 0; } -.paper-tabs .paper-tab { min-height: 44px; } .paper-pill, .status-pill { font-family: var(--font-sans); font-size: 12px; letter-spacing: 0; text-transform: none; border-radius: 6px; } .paper-meta-rule { font-family: var(--font-sans); font-size: 12px; letter-spacing: 0; text-transform: none; gap: 12px 24px; } .paper-meta-rule b:not(.commit-hash) { font-family: var(--font-sans); font-weight: 500; } .connections-grid { gap: 16px; } -.connections-grid > section { background: var(--paper-card); border: 1px solid var(--border-color); border-radius: var(--radius-surface); padding: 20px; } +/* Connections: one body size and one inline action pattern in both cards */ +.connections-grid > section p { font-size: 13.5px !important; line-height: 1.55 !important; } +.connections-grid > section > .btn, .connections-grid > section > a.btn { width: auto !important; align-self: flex-start; } .connections-heading { margin-bottom: 24px; } .status-page > .paper-settings-section, .claim-page .claim-form { padding: 20px; margin-top: 24px; border: 1px solid var(--border-color); border-radius: var(--radius-surface); background: var(--paper-card); } .claim-page .claim-form { max-width: 640px; } .status-page .anonymize-submit-bar { background: transparent; gap: 8px; flex-wrap: wrap; } -.anonymize-landing { padding-top: 32px; } .paper-settings .quota-usage { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 24px; } .paper-settings .quota-usage .quota-item + .quota-item { padding-top: 0; border-top: 0; padding-left: 16px; border-left: 1px solid var(--border-color); } .paper-settings .quota-usage .quota-header { flex-direction: row; align-items: center; flex-wrap: wrap; } .paper-settings .quota-usage .quota-value { white-space: normal; flex-wrap: wrap; } .paper-faq-hero { padding-bottom: 24px; margin-bottom: 24px; } -.paper-faq-toc-head { font-family: var(--font-sans); font-size: 12px; text-transform: none; letter-spacing: 0; margin-bottom: 8px; } -.paper-faq-eyebrow { font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-soft); margin-bottom: 14px; } -.paper-faq-title { font-family: var(--font-serif); font-weight: 400; font-size: clamp(2.4rem, 4.6vw, 3.6rem); line-height: 1.05; letter-spacing: -0.02em; max-width: 13em; margin-bottom: 16px; text-wrap: balance; } +.paper-faq-toc-head { margin-bottom: 8px; } +.paper-faq-eyebrow { text-transform: uppercase; margin-bottom: 14px; } +.paper-faq-title { font-family: var(--font-serif); font-weight: 400; line-height: 1.05; letter-spacing: -0.02em; max-width: 13em; margin-bottom: 16px; } .paper-faq-title em { font-style: italic; color: var(--accent); } -.paper-faq-lede { font-size: 14px; } -.paper-faq-body { grid-template-columns: 180px minmax(0,1fr); gap: 40px; } -.faq-section h4.faq-cat { font: 400 30px/1.15 var(--font-serif); letter-spacing: -0.015em; padding-bottom: 12px; } +/* Headings wrap balanced */ +.paper-faq-title, .paper-section-head h2, .paper-hero h1 { text-wrap: balance; } +@media (min-width: 1100px) { + .paper-hero { + grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr) !important; + column-gap: 40px !important; + overflow: visible; + } + .paper-section-head { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important; column-gap: 20px !important; } +} +@media (min-width: 1100px) { + .paper-section-head > p { max-width: 500px; } +} +@media (max-width: 767px) { + .paper-hero .paper-cta-row { row-gap: 14px !important; } +} +@media (max-width: 767px) { + .paper-hero .paper-reassure li { white-space: nowrap; margin: 0 !important; } +} +/* Secondary text one step darker on the landing */ +.paper-reassure, .paper-stat-delta, .paper-stat-label { color: var(--ink-soft) !important; } +@media (min-width: 1100px) { .paper-reassure { max-width: 100%; } +} +.paper-faq-body { gap: 40px; } .faq-section h4.faq-cat .ui-icon { display: none; } .faq-section .panel-group { margin-bottom: 32px; } -.faq-section .panel-default .panel-title a { font: 500 15px/1.5 var(--font-sans); padding: 16px 0 16px 28px; min-height: 44px; } -.faq-section .panel-default .panel-body { padding-left: 28px !important; } -.faq-section .panel-default .panel-title a:after { - content: ""; - top: 22px; - width: 8px; - height: 8px; - border-right: 1.5px solid var(--ink-soft); - border-bottom: 1.5px solid var(--ink-soft); - transform: translateX(4px) rotate(45deg); - transition: transform 0.15s ease; -} -.faq-section .panel-default .panel-title a.collapsed:after { - content: ""; - transform: translateX(2px) rotate(-45deg); -} .faq-section .panel-default .panel-title a:hover:after { border-color: var(--color); } +/* One accordion chevron language: down when closed, up when open */ +.faq-section .panel-default .panel-title a[aria-expanded="true"]:after { transform: rotate(-135deg) !important; } +.faq-section.faq-searching .faq-hit .panel-title a:after { transform: rotate(-135deg) !important; } .paper-faq-toc nav a.active { color: var(--color); font-weight: 500; } -.paper-empty-title { font: 600 32px/1.2 var(--font-sans); letter-spacing: -.025em; } -.paper-empty-title em { font-style: normal; } +.paper-empty-title { font: 600 32px/1.2 var(--font-sans); } .btn-hero { justify-content: center; gap: 8px; min-height: 48px; padding: 13px 20px; font-size: 15px; line-height: 20px; background: var(--accent); border-color: var(--accent); color: #fff; border-radius: var(--radius-button); } /* Solid fills keep a 600-700 shade with white text in both themes. */ -.dark-mode .btn-hero { background: #1F6A64; border-color: #1F6A64; color: #fff; } -.btn-hero:hover { background: var(--accent); color: #fff; filter: brightness(.94); } +.btn-hero:hover { background: var(--accent); color: #fff; } .dark-mode .btn-hero:hover { background: #24786F; border-color: #24786F; color: #fff; filter: none; } .paper-table:not(.paper-table-dashboard) { border-left: 0; border-right: 0; border-radius: 0; } .paper-table:not(.paper-table-dashboard) .paper-table-head { border-radius: 0; } @@ -8372,36 +7256,26 @@ input[type="date"], select { color-scheme: light; } .paper-page .filter-chip { font-family: var(--font-sans); font-size: 12px; letter-spacing: 0; text-transform: none; border-radius: 6px; } .paper-page .filter-chip-close .ui-icon { width: 12px; height: 12px; } .admin-nav { gap: 4px; border: 0; border-bottom: 1px solid var(--border-color); border-radius: 0; padding: 0 0 8px; background: transparent; } -.admin-nav a { font-family: var(--font-sans); font-size: 13px; letter-spacing: 0; text-transform: none; border-radius: 6px; min-height: 40px; padding: 8px 12px; } -.admin-nav a.active { background: var(--accent-soft); color: var(--accent); } +.admin-nav a { font-size: 13px; padding: 8px 12px; } .admin-nav .ui-icon { width: 16px; height: 16px; } .admin-filter-toolbar { background: transparent; border: 0; padding: 0; } +@media (max-width: 767px) { + .admin-filter-toolbar .admin-filter-inline label { margin: 0; } +} .admin-filter-inline > label, .admin-filter-inline > span { font-family: var(--font-sans); text-transform: none; letter-spacing: 0; } -.admin-summary .summary-total { font-family: var(--font-sans); font-size: 18px; font-weight: 600; } -.admin-summary .summary-pill { font: 500 13px/20px var(--font-sans); min-height: 32px; padding: 5px 10px; border-radius: 6px; } -.admin-summary .summary-pill.active { background: var(--accent-soft); border-color: var(--accent); color: var(--accent); } -.admin-summary .summary-pill .count { font-family: var(--font-sans); } .admin-active-chip { font-family: var(--font-sans); font-size: 12px; } .admin-active-chip button .ui-icon { width: 12px; height: 12px; } -.user-detail-card .user-header h2 { font: 600 20px/1.4 var(--font-sans); } -.user-detail-grid .detail-label, .paper-detail-grid .detail-label, .paper-progress .paper-progress-label, .status-page .paper-error-eyebrow, .errors-page .volume-head, .errors-page .errors-toolbar .select-wrap label, .overview-page .ov-panel-meta { font-family: var(--font-sans); font-size: 12px; letter-spacing: 0; text-transform: none; } +.user-detail-grid .detail-label, .paper-progress .paper-progress-label, .status-page .paper-error-eyebrow, .errors-page .volume-head, .errors-page .errors-toolbar .select-wrap label, .overview-page .ov-panel-meta { font-family: var(--font-sans); font-size: 12px; letter-spacing: 0; text-transform: none; } .paper-error-title, .overview-page .ov-chart-title, .overview-page .ov-panel-title { font: 600 16px/1.4 var(--font-sans); } .paper-error-head > .ui-icon, .paper-ratelimit-head > .ui-icon { margin-top: 3px; color: var(--status-error); } .paper-ratelimit-head > .ui-icon { color: var(--status-progress); } -.errors-page .seg-tabs { border-radius: var(--radius-control); } -.errors-page .seg-tabs button { min-height: 36px; padding: 7px 12px; font: 500 14px/20px var(--font-sans); } -.errors-page .seg-tabs button.active { background: var(--accent-soft); color: var(--accent); } .overview-page .ov-chart-card, .overview-page .ov-panel-card, .errors-page .volume-chart, .errors-page .errors-list, .errors-page .kpi-card:hover { box-shadow: none; } -.overview-page .ov-kpi-value, .overview-page .ov-daily-value, .errors-page .kpi-value, .q-card-count, .user-hero-name { font-family: var(--font-sans); font-size: 28px; font-weight: 600; font-variant-numeric: tabular-nums; letter-spacing: -.02em; } -.overview-page .ov-kpi-label, .overview-page .ov-daily-label, .errors-page .kpi-label, .q-card-name, .q-section-label, .user-hero-details .detail-label { font-family: var(--font-sans); font-size: 12px; letter-spacing: 0; text-transform: none; } +.overview-page .ov-kpi-value, .overview-page .ov-daily-value, .errors-page .kpi-value, .q-card-count { font-family: var(--font-sans); font-size: 28px; font-weight: 600; font-variant-numeric: tabular-nums; letter-spacing: -.02em; } +.overview-page .ov-kpi-label, .overview-page .ov-daily-label, .errors-page .kpi-label, .q-card-name, .q-section-label { font-family: var(--font-sans); font-size: 12px; letter-spacing: 0; text-transform: none; } .overview-page .ov-daily-card { background: var(--paper-card); box-shadow: none; border-radius: var(--radius-surface); } -.overview-page .ov-daily-value, .dark-mode .overview-page .ov-daily-value { color: var(--accent); } .overview-page .ov-kpi-card, .errors-page .kpi-card { box-shadow: none; border-radius: var(--radius-surface); } .q-card { border-radius: var(--radius-surface); } -.q-card.selected { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); } -.q-range-btns { border-radius: var(--radius-control); } .q-range-btns .btn, .q-job-detail-actions .btn { font-family: var(--font-sans); font-size: 13px; } -.q-range-btns .btn.active { background: var(--accent-soft); color: var(--accent); } @media (max-width: 900px) { .paper-settings .quota-usage { grid-template-columns: 1fr; gap: 16px; } .paper-settings .quota-usage .quota-item + .quota-item { padding-left: 0; border-left: 0; border-top: 1px solid var(--border-color); padding-top: 16px; } @@ -8420,21 +7294,23 @@ input[type="date"], select { color-scheme: light; } .paper-page, .paper-faq { padding-top: 20px; } .paper-settings .paper-account-email .btn[type="submit"] { min-height: 40px; padding: 9px 18px; } .paper-page .paper-page-title, .paper-page.admin-page .paper-page-title, .anonymize-page .paper-page-title { font-size: 24px; } - .paper-faq-title { font-size: 40px; } .paper-page .form-control, .anonymize-page .form-control { min-height: 44px; } .paper-page .btn, .anonymize-page .btn, .paper-settings-toc nav a, .connection-link, .draft-discard, .paper-faq-toc a { min-height: 44px; } .paper-page .btn, .anonymize-page .btn, .status-bar-actions .btn { - min-height: 44px; padding: 11px 14px; font-size: 14px; line-height: 20px; white-space: normal; + min-height: 44px; + padding: 11px 14px; + font-size: 14px; + line-height: 20px; + white-space: normal; } .paper-page .btn.btn-sm, .anonymize-page .btn.btn-sm { min-height: 44px; padding: 11px 12px; font-size: 14px; } - .paper-page .btn.btn-icon, .anonymize-page .btn.btn-icon, .paper-page .btn.btn-icon-dots, .copy-link-inline, .project-close { width: 44px; height: 44px; min-width: 44px; min-height: 44px; padding: 0; } + .paper-page .btn.btn-icon, .anonymize-page .btn.btn-icon, .paper-page .btn.btn-icon-dots, .project-close { width: 44px; height: 44px; min-width: 44px; min-height: 44px; padding: 0; } .dashboard-page .dashboard-filter-row .btn-group .btn, .dashboard-page .dashboard-filter-row .dropdown-toggle { height: auto; min-height: 44px; font-size: 14px; padding: 11px 10px; } .dashboard-heading-actions .btn-ink { padding: 11px 16px; } .dashboard-page .dashboard-filters-toggle { padding: 11px 10px; } .pr-title-row .btn, .status-bar-actions .btn, .errors-page .btn-icon { min-width: 44px; min-height: 44px; padding: 0; } .status-bar-actions .btn { width: 44px; height: 44px; } - .errors-page .seg-tabs button, .paper-tab { min-height: 44px; } - .errors-page .seg-tabs button { padding: 11px 12px; } + .paper-tab { min-height: 44px; } .status-bar-actions { flex-wrap: wrap; max-width: 100%; } .leftCol-close, .tree-search-clear { min-width: 44px; min-height: 44px; } .anonymize-landing { padding: 20px 18px; } @@ -8442,46 +7318,202 @@ input[type="date"], select { color-scheme: light; } .paper-settings-body { margin-top: 16px; padding-top: 0; gap: 16px; } .paper-settings-toc nav { gap: 0 12px; } .paper-settings-toc nav a { display: inline-flex; align-items: center; } - .paper-faq { padding-left: 18px; padding-right: 18px; } .paper-faq-toc nav { display: flex; flex-direction: row; flex-wrap: wrap; gap: 0 16px; } .paper-faq-toc a { display: inline-flex; align-items: center; padding: 8px 0; border-left: 0; border-bottom: 2px solid transparent; margin-left: 0; } .paper-faq-toc nav a:hover, .paper-faq-toc nav a.active { border-bottom-color: var(--accent); color: var(--accent); } .status-page > .paper-settings-section, .claim-page .claim-form { padding: 16px; margin-top: 16px; } - .admin-nav { flex-direction: row; flex-wrap: nowrap; overflow-x: auto; gap: 4px; max-width: 100%; margin: 8px 0 16px; } - .admin-nav a { flex-shrink: 0; min-height: 44px; } - .admin-summary .summary-pill { min-height: 44px; padding: 11px 12px; font-size: 14px; } + .admin-nav { max-width: 100%; margin: 8px 0 16px; } + .admin-nav a { min-height: 44px; } .admin-active-chip button { min-width: 44px; min-height: 44px; } - .admin-filter-row { gap: 8px; } - .admin-filter-row .admin-filter-inline { gap: 8px; flex-wrap: wrap; } + .admin-filter-row { gap: 8px !important; } + .admin-filter-row .admin-filter-inline { flex-wrap: wrap; min-width: 0; } .errors-page .kpi-grid { grid-template-columns: 1fr 1fr; gap: 12px; } .q-cards { flex-direction: row; } .q-card { min-width: 130px; } .q-header-actions { flex-wrap: wrap; gap: 8px; } } +@media (max-width: 575px) { .source-url-label-row { flex-direction: column; align-items: flex-start !important; gap: 8px; } +} +.admin-page .admin-nav { margin-top: 0 !important; gap: 24px !important; } +@media (max-width: 767px) { + .admin-page .paper-page-title, .admin-page .ov-header { text-align: left !important; justify-content: flex-start !important; } +} +/* Admin filter labels and selects */ +.admin-filter-inline label, .admin-page label { font-size: 12px !important; color: var(--ink-soft) !important; } +@media (max-width: 767px) { + .admin-filter-row .admin-filter-inline input { width: 100% !important; } +} +/* One inline-link treatment */ +.paper-faq details a:not(.btn) { + text-decoration: underline; + text-underline-offset: 3px; + text-decoration-color: color-mix(in srgb, currentColor 35%, transparent) !important; + text-decoration-thickness: 1px !important; +} +/* FAQ questions heavier */ +.paper-faq summary, .paper-faq details > summary { font-weight: 600 !important; } +/* FAQ answers use the row width */ +.paper-faq details>:not(summary), .paper-faq details p { max-width: none !important; } +.dashboard-page .show-hidden, .dashboard-page .dashboard-count button { font-size: 13px !important; } +@media (max-width: 767px) { + .dashboard-page .dashboard-row-meta .cell-status { flex: 0 0 auto !important; } +} +@media (max-width: 767px) { + .dashboard-page .dashboard-row-meta .cell-views::before, + .dashboard-page .dashboard-row-meta .cell-expires::before { + color: var(--ink-muted); + margin: 0 7px !important; + width: auto !important; + content: none !important; + } +} +.dashboard-page .dashboard-quota>summary::before { + content: ""; + border-radius: 2px; + flex: 0 0 28px; + height: 5px; + background: linear-gradient(to right, var(--accent) 0 max(3px, var(--quota-pct, 5%)), #D9D3C8 0) !important; + width: 44px !important; + flex-basis: 44px !important; +} +.dark-mode .dashboard-page .dashboard-quota > summary::before { background: linear-gradient(to right, #7CC7BE 0 max(3px, var(--quota-pct, 5%)), #3A352F 0) !important; } +@media (min-width: 768px) { + .dashboard-page .paper-table.paper-table-dashboard .paper-table-head, + .dashboard-page .paper-table.paper-table-dashboard .paper-table-row { + grid-template-columns: minmax(240px, 3fr) 210px 64px 160px 172px !important; + } +} +@media (max-width: 767px) { + .dashboard-page .dashboard-row-meta .status-sub::before, .dashboard-page .dashboard-row-meta .project-attention-action::before { content: none; } +} +.dashboard-page .paper-table-dashboard .anon-sub > .anonymous-id:has(.id-head) { min-width: 12ch; } +.dashboard-page .paper-table-dashboard .anon-sub > .conf-tag > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.dashboard-page .paper-table-dashboard .anon-sub>.conf-tag svg { flex: none; margin-top: 2px; width: 13px; height: 13px; } +/* Conference tag: its own line under ID/commit, full name, wrapping when needed. */ +.dashboard-page .paper-table-dashboard .anon-sub > .anonymous-id:has(~ .commit-hash) { max-width: calc(100% - 9ch - 8px); } +.dashboard-page .paper-table-dashboard .anon-sub>.conf-tag>.conf-name { + overflow: visible !important; + text-overflow: clip !important; + white-space: normal !important; + overflow-wrap: anywhere; + line-height: 1.4; +} +@media (max-width: 767px) { + /* An empty expiry ("Expires —") is noise next to a problem: hide it. Real dates and "No expiry" stay. */ + .dashboard-page .paper-table-dashboard .dashboard-row-meta > .cell-expires:has(> .empty-dash) { display: none !important; } +} +@media (max-width: 767px) { + /* Recovery actions: 44px hit area without extra visible space. */ + .dashboard-page .paper-table-dashboard .project-attention-action { position: relative; } +} +@media (max-width: 767px) { + .dashboard-page .paper-table-dashboard .dashboard-row-meta .project-attention-action { line-height: 20px !important; } +} +@media (max-width: 767px) { + .dashboard-page .paper-table-dashboard .dashboard-row-meta > .cell-expires, + .dashboard-page .paper-table-dashboard .dashboard-row-meta > .cell-views { gap: 0 !important; column-gap: 0 !important; } +} +@media (max-width: 767px) { + /* The meta block spans the whole card under the title (a later rule had reset it to the first column). */ + .dashboard-page .paper-table.paper-table-dashboard .paper-table-row>.dashboard-row-meta { + grid-area: meta !important; + grid-column: 1 / -1 !important; + } +} +@media (max-width: 767px) { + .dashboard-page .paper-table-dashboard .dashboard-row-meta .status-action-line .project-attention-action { font-size: 13px; } +} +/* Dashboard Usage meter: amber from 80% of the quota, red from 95%, teal below. */ +.dashboard-page .dashboard-quota > summary.quota-level-warn::before { background: linear-gradient(to right, #B7791F 0 max(3px, var(--quota-pct, 5%)), #D9D3C8 0) !important; } +.dark-mode .dashboard-page .dashboard-quota > summary.quota-level-warn::before { background: linear-gradient(to right, #E0A84A 0 max(3px, var(--quota-pct, 5%)), #3A352F 0) !important; } +.dashboard-page .dashboard-quota > summary.quota-level-danger::before { background: linear-gradient(to right, var(--status-error) 0 max(3px, var(--quota-pct, 5%)), #D9D3C8 0) !important; } +.dark-mode .dashboard-page .dashboard-quota > summary.quota-level-danger::before { background: linear-gradient(to right, #F08A82 0 max(3px, var(--quota-pct, 5%)), #3A352F 0) !important; } +@media (max-width: 767px) { + .dashboard-page .paper-table-dashboard .anon-title .repo-name { line-height: 1.3 !important; } +} +@media (max-width: 767px) { + .dashboard-page .paper-table-dashboard .anon-sub > .anonymous-id:has(~ .commit-hash) { max-width: calc(100% - 9ch - 17px) !important; } +} +@media (max-width: 767px) { + .dashboard-page .paper-table-dashboard .anon-sub > .anonymous-id + .commit-hash { padding-left: 8px; border-left: 1px solid var(--border-color); line-height: 14px !important; } +} +@media (max-width: 767px) { + .dashboard-page .paper-table-dashboard .cell-actions > .dropdown > .btn-icon-dots::after { content: ""; display: block !important; position: absolute; top: -6px; bottom: -6px; left: 0; right: -12px; } +} +@media (min-width: 768px) { + .dashboard-page .paper-table-dashboard .cell-actions > .row-edit:not(.row-open) { display: none !important; } +} +@media (min-width: 768px) { + .dashboard-page .paper-table-dashboard .cell-actions > .copy-url .copy-url-label { display: inline; } +} +@media (min-width: 768px) { + .dashboard-page .paper-table-dashboard .cell-actions>.copy-url.is-disabled { opacity: .7 !important; } +} +@media (min-width: 768px) { + .dashboard-page .paper-table-dashboard .cell-actions > .copy-url.is-disabled > svg { color: inherit; } +} +@media (min-width: 768px) { + .dashboard-page .paper-table-dashboard .cell-actions > .dropdown > .btn-icon-dots { width: 32px !important; height: 32px !important; } +} +@media (max-width: 767px) { + .dashboard-page .paper-table-dashboard .anon-sub .conf-tag > svg { width: 14px !important; height: 14px !important; flex: 0 0 14px; margin: 0 7px 0 1px !important; } +} +@media (min-width: 768px) { + .dashboard-page .paper-table-dashboard .cell-actions > .copy-url:not(.is-disabled) > svg { color: inherit !important; } +} +@media (min-width: 768px) { + .dashboard-page .paper-table-dashboard .paper-table-row:is(:hover, :focus-within) .cell-actions > .copy-url:not(.is-disabled) { border-color: var(--border-color) !important; color: var(--color) !important; } +} +@media (max-width: 640px) { + .dashboard-page .dashboard-heading-actions > .dashboard-quota > summary { width: 100%; } +} +@media (max-width: 640px) { + .dashboard-page .dashboard-heading-actions > .btn { flex: 0 0 auto !important; } +} +@media (max-width: 767px) { + .repo-access-switch button { flex: 1 1 0 !important; white-space: nowrap !important; justify-content: center; } +} +.admin-filter-inline label { margin: 0 !important; } +@media (max-width: 767px) { + .admin-page .admin-nav { + scrollbar-width: none; + scroll-snap-type: x proximity; + flex-wrap: wrap !important; + overflow: visible !important; + -webkit-mask-image: none !important; + mask-image: none !important; + padding: 0 !important; + } +} +@media (max-width: 767px) { + .admin-page .admin-nav::-webkit-scrollbar { display: none; } +} +@media (max-width: 767px) { + .admin-page .admin-nav a { flex-shrink: 0; scroll-snap-align: start; min-height: 34px !important; font-size: 13.5px !important; } +} +@media (max-width: 767px) { + .admin-nav::-webkit-scrollbar { display: none; } +} +@media (max-width: 767px) { + .admin-nav a { flex: none; } +} +@media (max-width: 767px) { + .admin-page .admin-nav a .ui-icon { display: none !important; } +} /* ===== UI polish: explorer, errors, page alignment ===== */ /* One content column for every app page, aligned with settings and the FAQ. */ /* The sign-in page keeps its own narrow width. */ .paper-page.container:not(.auth-page) { max-width: 1180px; } -.paper-page > .row { margin-left: 0; margin-right: 0; } .paper-page > .row > .w-100, .paper-page > .row > [class*='col'] { padding-left: 0; padding-right: 0; } -.anonymize-landing { align-items: flex-start; } -.status-page .paper-support-grid { margin-bottom: 0; } /* Explorer: readable code and Markdown. */ .explorer-content .ace_editor { font-family: var(--font-mono); line-height: 1.6; } .dark-mode .explorer-content .ace-nord-dark, .dark-mode .explorer-content .ace-nord-dark .ace_gutter { background: var(--main-bg-color); } .explorer-content .file-content.markdown-body { max-width: 960px; padding: 32px 40px 96px; } -.leftCol-project-header .project-name { white-space: normal; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } /* Error states inside the explorer use the same card as the status page. */ -.file-error { font-size: inherit; font-weight: inherit; text-align: left; } +.file-error { font-size: inherit; font-weight: inherit; } .file-error-card { width: 100%; max-width: 520px; margin-top: 0; } -.file-error-msg { margin: 12px 0 0; font-size: 14px; line-height: 1.55; color: var(--ink-soft); } -.file-error-actions { display: flex; gap: 8px; margin-top: 16px; } .file-error .paper-empty-title { font-size: 20px; text-align: center; } -@media (min-width: 992px) { - /* Keep the sidebar footer clear of the floating Ko-fi button. */ - .leftCol-foot { padding-bottom: 72px; } -} .explorer-content .ace-chrome, .explorer-content .ace-chrome .ace_gutter { background: var(--main-bg-color); } @media (max-width: 991px) { .explorer-content .file-content.markdown-body { padding: 20px 16px 96px; } @@ -8489,59 +7521,110 @@ input[type="date"], select { color-scheme: light; } .anonymize-landing { padding: 20px 18px; } .anonymize-landing-inner { padding: 0; } /* Section links scroll in one row instead of wrapping under a lone underline. */ - .paper-settings-toc nav, .paper-faq-toc nav { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; } - .paper-settings-toc nav a, .paper-faq-toc nav a { flex-shrink: 0; white-space: nowrap; } + .paper-settings-toc nav, .paper-faq-toc nav { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; display: flex; flex-direction: row; gap: 0 16px; } + .paper-settings-toc nav a, .paper-faq-toc nav a { + flex-shrink: 0; + white-space: nowrap; + display: inline-flex; + align-items: center; + padding: 8px 0; + margin-left: 0; + border-left: 0; + border-bottom: 2px solid transparent; + } .paper-settings-body, .paper-faq-body { grid-template-columns: minmax(0, 1fr); } /* The TOC stacks above the content at the same breakpoint as the grid. */ .paper-settings-toc, .paper-faq-toc { position: static; } - .paper-settings-toc nav, .paper-faq-toc nav { display: flex; flex-direction: row; gap: 0 16px; } - .paper-settings-toc nav a, .paper-faq-toc nav a { display: inline-flex; align-items: center; padding: 8px 0; margin-left: 0; border-left: 0; border-bottom: 2px solid transparent; } .paper-settings-toc nav a.active, .paper-settings-toc nav a:hover, .paper-faq-toc nav a.active, .paper-faq-toc nav a:hover { border-bottom-color: var(--accent); } .paper-page .dashboard-filter-controls .dropdown .dropdown-toggle { justify-content: flex-start; gap: 6px; } .paper-page .dashboard-filter-controls .dropdown .dropdown-toggle::after { margin-left: auto; } } +/* "On this page" rail: continuous line, indigo active segment */ +.paper-settings-toc nav, .paper-faq-toc nav { border-left: 1px solid var(--border-color); } +@media (min-width: 992px) { + .anonymize-landing { justify-content: flex-start !important; align-items: flex-start !important; } + .anonymize-landing-inner { margin-top: 0 !important; } +} +/* The publish warning appears once a source is loaded, not on the empty first step */ +.anonymize-landing .repo-access-note > span:has(.ui-icon) { display: none !important; } +@media (max-width: 767px) { + .anonymize-landing-inner > .repo-picker { order: 2; } +} +@media (min-width: 1100px) { + .anonymize-landing-inner > .page-head { grid-column: 1 / -1; } +} +.repo-picker:has(.repo-picker-list > .repo-picker-row:not(.is-skeleton):nth-child(8)) .repo-picker-more { display: inline; } +@media (max-width: 767px) { + .repo-picker:has(.repo-picker-list>.repo-picker-row:not(.is-skeleton):nth-child(7)) .repo-picker-more { + display: block; + } +} + +/* Repository picker: a deliberate partial next row (40% of a row) under a 32px fade, so the list reads as "more below". + The fade drops steeply, so the partial row's Select button dissolves rather than looking clipped. No fade at the end or when all rows fit. */ +.repo-picker-list.is-end, .repo-picker-list:has(> :nth-child(-n+7):last-child) { -webkit-mask-image: none !important; mask-image: none !important; } +@media (max-width: 767px) { + .repo-picker-list:has(> :nth-child(7)) { -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 32px), rgba(0,0,0,.1) 100%); mask-image: linear-gradient(to bottom, #000 calc(100% - 32px), rgba(0,0,0,.1) 100%); } +} +@media (max-width: 767px) { + .repo-picker-list:has(> :nth-child(-n+6):last-child) { -webkit-mask-image: none !important; mask-image: none !important; } +} +/* Picker: the partial next row stays at full contrast; a thin, always-visible scrollbar shows there is more */ +.repo-picker-list, .repo-picker-list:has(> :nth-child(8)), .repo-picker-list.is-end { -webkit-mask-image: none !important; mask-image: none !important; } +.dark-mode .repo-picker-list { --scroll-thumb: #4A453F; } +.repo-picker-list::-webkit-scrollbar { width: 6px; } +/* Settings / create-conference: form uses the full grid width */ +.paper-settings-body > :not(aside) { max-width: none !important; } + +/* Dark: selected segment clearly lifted */ +.dark-mode .dashboard-filter-controls .btn-group[aria-label="Type"] > .btn.btn-primary { background: #3A3631 !important; color: #F2EEE8 !important; box-shadow: 0 0 0 1px rgba(255,255,255,.14) !important; } +@media (min-width: 1100px) { .paper-faq-body { grid-template-columns: 180px minmax(0, 1fr) 220px !important; gap: 48px !important; } +} + +/* Admin/signed-in: one left edge for every page */ +.paper-settings-body section { max-width: none !important; } +.paper-settings-body .form-text, .paper-settings-body small { max-width: none !important; } +.paper-settings-toc nav a { margin-left: -1px; border-left: 2px solid transparent; } +.paper-settings-toc nav a.active { border-left-color: var(--accent) !important; color: var(--color); } +@media (max-width: 767px) { + .paper-settings-toc nav, .paper-faq-toc nav { border-left: 0 !important; scroll-padding-inline: 20px; -webkit-mask-image: linear-gradient(to right, #000 82%, transparent); mask-image: linear-gradient(to right, #000 82%, transparent); padding-right: 32px; } +} +@media (max-width: 767px) { + .paper-settings-toc nav a, .paper-faq-toc nav a { margin-left: 0 !important; border-left: 0 !important; } +} +@media (max-width: 767px) { + .paper-settings-toc nav a.active { border-left: 0 !important; } +} @media (max-width: 480px) { - .paper-page .paper-page-lede { display: block; -webkit-line-clamp: unset; overflow: visible; } + .paper-page .paper-page-lede { display: block; overflow: visible; } } /* ===== Design refinements ===== */ /* One primary colour: accent for actions and progress; amber/red stay for states. */ .navbar .btn-signin, .navbar .btn-signin:hover { background: var(--accent); border-color: var(--accent); color: #fff !important; } .dark-mode .navbar .btn-signin, .dark-mode .navbar .btn-signin:hover { background: #237A71; border-color: #237A71; color: #fff !important; } -.navbar .btn-signin:hover { filter: brightness(.94); } .paper-progress .paper-progress-bar, .paper-progress.paper-progress-ready .paper-progress-bar { background: var(--accent); } .paper-progress .paper-progress-label { font-family: var(--font-sans); font-size: 12px; letter-spacing: 0; text-transform: none; } /* Mono is for IDs, hashes and paths; labels use the sans face. */ -.paper-error-eyebrow, .paper-support-card .paper-support-eyebrow { font-family: var(--font-sans); font-size: 12px; font-weight: 500; letter-spacing: 0; text-transform: none; } -.leftCol-foot .last-update { font-family: var(--font-sans); font-size: 11px; letter-spacing: 0; } -.paper-proof-venues span { font-family: var(--font-sans); font-size: 18px; font-weight: 600; letter-spacing: .02em; color: var(--ink-soft); } +.paper-error-eyebrow { font-family: var(--font-sans); font-size: 12px; font-weight: 500; letter-spacing: 0; text-transform: none; } /* Redacted terms, in rendered documents and in code. */ .markdown-body mark.redaction { background: var(--accent-soft); color: var(--accent); border-radius: 3px; padding: 0 2px; } .ace_marker-layer .ace_redaction { position: absolute; background: var(--accent-soft); border-radius: 3px; } /* Explorer chrome. */ -.leftCol-project-header { flex-wrap: wrap; row-gap: 2px; } -.project-expiry { flex: 1 0 100%; display: flex; align-items: center; gap: 4px; font-size: 12px; color: var(--ink-muted); } -.project-expiry .ui-icon { width: 12px; height: 12px; } .status-bar-actions .btn-icon-only { width: 32px; padding: 0; justify-content: center; } /* Status page: the share link leads; support links sit flat inside their section. */ .share-link-row { display: flex; gap: 8px; margin-top: 4px; } -.share-link-input { flex: 1; min-width: 0; font-family: var(--font-mono); font-size: 14px; background: var(--paper-bg-alt); } .share-link-row .btn { flex-shrink: 0; display: inline-flex; align-items: center; gap: 6px; min-width: 112px; justify-content: center; } -.share-link-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; } -.share-link-actions .btn { display: inline-flex; align-items: center; gap: 6px; } -.status-page .paper-support-grid { gap: 0 32px; } -.status-page .paper-support-card { padding: 16px 0 0; border: 0; border-top: 1px solid var(--border-color); border-radius: 0; background: transparent; } -.status-page .paper-support-card:hover { border-color: var(--color); } -@media (min-width: 992px) { .paper-table .cell-expires { white-space: nowrap; } } +@media (min-width: 992px) { .paper-table .cell-expires { white-space: nowrap; } +} /* Settings: plain sections separated by rules rather than a stack of cards. */ .paper-settings .paper-settings-main .paper-settings-section { background: transparent; border: 0; border-bottom: 1px solid var(--border-color); border-radius: 0; padding: 0 0 28px; margin-bottom: 28px; } .paper-settings .paper-settings-main .paper-settings-section:last-of-type { border-bottom: 0; } @media (max-width: 991px) { .paper-settings .paper-settings-main .paper-settings-section { padding: 0 0 20px; margin-bottom: 20px; } .share-link-row { flex-direction: column; } - .share-link-actions { flex-direction: column; } - .share-link-actions .btn { justify-content: center; } - .status-page .paper-support-grid { row-gap: 20px; } +} +@media (max-width: 480px) { .paper-settings .paper-settings-footer #send { display: flex; width: 100% !important; min-height: 46px; justify-content: center; align-items: center; } } /* Segmented control: one outlined group, borderless segments, tinted selection. */ .paper-page .q-range-btns { display: inline-flex; gap: 2px; padding: 2px; border: 1px solid var(--border-color); border-radius: var(--radius-control); background: var(--paper-card); overflow: visible; } @@ -8550,51 +7633,390 @@ input[type="date"], select { color-scheme: light; } .paper-page .q-range-btns .btn.active { background: var(--accent-soft); color: var(--accent); } .q-header-actions > .btn { height: 34px; min-height: 34px; } /* Destructive actions are outlined in red rather than filled. */ -.paper-page .btn.btn-danger-soft { background: transparent; border-color: var(--status-error); color: var(--status-error); } -.paper-page .btn.btn-danger-soft:hover { background: var(--status-error-soft-hover); border-color: var(--status-error); color: var(--status-error); } .q-section-label, .q-state-chip, .q-auto-refresh { font-family: var(--font-sans); letter-spacing: 0; text-transform: none; } -.q-state-chip { font-size: 12px; text-transform: capitalize; } +.q-state-chip { font-size: 12px; } +.q-state-chip::before { content: ""; display: inline-block; width: 7px; height: 7px; margin-right: 6px; border-radius: 50%; background: var(--ink-faint); } /* ===== Admin consistency ===== */ /* The error bar fills are spans: without display:block their width is ignored. */ .overview-page .ov-ebar-fill { display: block; } /* Error rows mark themselves with an inset edge so their content stays aligned. */ -.paper-table .paper-table-row.repo-error { border-left: 0; box-shadow: inset 2px 0 0 var(--status-error); padding-left: 16px; } /* Labels, headers and chips use the sans face like the rest of the app. */ -.admin-page th, .admin-page .q-table th, .errors-page .col-when, .errors-page .col-sev, .errors-page .col-mod, .errors-page .col-msg, .errors-page .col-count, .errors-page .col-status, -.overview-page .ov-ebar-label, .overview-page .ov-route-n, .overview-page .ov-route-name, .overview-page .ov-chart-legend, -.q-section-right, .q-legend-completed, .q-legend-failed, .q-legend-exec, .q-stat-label, .q-card-sub, .q-delay-hint, -.admin-page .type-badge, .user-detail-grid .detail-label, .admin-page .user-detail-section h2, .admin-page > h2, .admin-page section > h2 { - font-family: var(--font-sans); letter-spacing: 0; text-transform: none; +.admin-page th, +.admin-page .q-table th, +.errors-page .col-when, +.errors-page .col-sev, +.errors-page .col-mod, +.errors-page .col-msg, +.errors-page .col-count, +.errors-page .col-status, +.overview-page .ov-ebar-label, +.overview-page .ov-route-n, +.overview-page .ov-route-name, +.overview-page .ov-chart-legend, +.q-section-right, +.q-legend-completed, +.q-legend-failed, +.q-legend-exec, +.q-stat-label, +.q-card-sub, +.q-delay-hint, +.admin-page .type-badge, +.user-detail-grid .detail-label, +.admin-page>h2, +.admin-page section>h2 { + font-family: var(--font-sans); + letter-spacing: 0; + text-transform: none; } +.q-table tbody + tbody { border-top: 1px solid var(--border-color) !important; } +.q-table thead + tbody { border-top: 1px solid var(--border-color); } +.q-table td.q-cell-id .q-job-link { max-width: calc(100% - 22px) !important; font-size: 12.5px; } .admin-page th, .errors-page [class^="col-"] { font-size: 12px; font-weight: 500; color: var(--ink-muted); } .q-stat-label, .q-card-sub, .user-detail-grid .detail-label { font-size: 12px; } -.q-stat-value { font-family: var(--font-sans); font-size: 20px; font-weight: 600; font-variant-numeric: tabular-nums; } -.q-state-badge { font-family: var(--font-sans); font-size: 12px; letter-spacing: 0; text-transform: capitalize; } +.q-stat-value { font-size: 20px; } +.q-state-badge { letter-spacing: 0; text-transform: capitalize; } +.q-state-badge.q-state-completed::before { box-shadow: inset 0 0 0 1.5px var(--st-off); } .admin-page .type-badge { font-size: 12px; text-transform: none; } .errors-page .sev-label, .errors-page .col-sev span { text-transform: capitalize; } /* One accent for overview numbers and charts; colour is kept for states. */ .overview-page .ov-daily-value, .dark-mode .overview-page .ov-daily-value { color: var(--color); } -.overview-page .ov-spark-fill-alt, .overview-page .ov-spark-fill-user, .overview-page .ov-spark-fill-new-user, -.dark-mode .overview-page .ov-spark-fill-alt, .dark-mode .overview-page .ov-spark-fill-user, .dark-mode .overview-page .ov-spark-fill-new-user { background: var(--accent); } +.overview-page .ov-spark-fill-alt, +.overview-page .ov-spark-fill-new-user, +.dark-mode .overview-page .ov-spark-fill-alt, +.dark-mode .overview-page .ov-spark-fill-new-user { background: var(--accent); } .overview-page .ov-dot-ok-fill, .overview-page .ov-dot-user-fill, .overview-page .ov-dot-new-user-fill, .dark-mode .overview-page .ov-dot-ok-fill, .dark-mode .overview-page .ov-dot-user-fill, .dark-mode .overview-page .ov-dot-new-user-fill { background: var(--accent); } +@media (max-width: 767px) { + .overview-page .ov-header { + text-align: left !important; + flex-wrap: nowrap !important; + justify-content: space-between !important; + align-items: center !important; + } +} +@media (max-width: 767px) { + .overview-page .ov-header .paper-page-title { width: 100%; justify-content: flex-start !important; text-align: left !important; } +} +/* Memory/disk captions on one line */ +.overview-page .ov-kpi-sub { white-space: nowrap; overflow: hidden; } +@media (max-width: 767px) { + .overview-page .ov-daily-card, .overview-page .ov-kpi-card { padding-left: 14px !important; padding-right: 14px !important; } +} +@media (max-width: 767px) { + .overview-page .ov-header .ov-live { margin: 0 0 0 auto !important; align-self: center; } +} +.dark-mode .overview-page .ov-views { background: rgba(255,255,255,.06); } +.dark-mode .overview-page .ov-views button.active { background: rgba(255,255,255,.1); box-shadow: none; } +@media (max-width: 767px) { + .overview-page .ov-views button { flex: 1 1 0; } +} +@media (max-width: 767px) { + /* Charts and tables need the full width on a phone. */ + .admin-page.overview-page section.ov-chart-row, .admin-page.overview-page section.ov-triple-row { grid-template-columns: minmax(0, 1fr) !important; } +} +.overview-page .ov-kpi-card:has(.ov-meter.warn):not(:has(.ov-meter.crit)) .ov-flag { color: #B7791F !important; } +.dark-mode .overview-page .ov-kpi-card:has(.ov-meter.warn):not(:has(.ov-meter.crit)) .ov-flag { color: #E0A84A !important; } +.overview-page .ov-spark-bars[data-zero]::before { content: attr(data-zero); position: absolute; left: -14px; bottom: -6px; font: 400 11px/12px var(--font-sans); color: var(--ink-muted); font-variant-numeric: tabular-nums; } +.overview-page .ov-step-area { fill: color-mix(in srgb, var(--accent) 16%, transparent); } +.overview-page .ov-step-line { fill: none; stroke: var(--accent); stroke-width: 2; } +/* Value scale: 0 / mid / max in a 28px left gutter, with one faint midpoint rule behind the bars. */ +.overview-page .ov-spark-bars.ov-has-axis, +.overview-page .ov-has-axis + .ov-spark-x { margin-left: 28px; } +.overview-page .ov-yaxis > span:nth-child(1) { top: -6px; } +.overview-page .ov-yaxis > span:nth-child(2) { top: calc(50% - 6px); } +.overview-page .ov-yaxis > span:nth-child(3) { bottom: -6px; } +.overview-page .ov-triple-row > .ov-panel-card > .ov-panel-foot { margin-top: auto; } +.overview-page .ov-triple-row > .ov-panel-card > .ov-error-bars:not(:last-child) { flex: 0 0 auto; } +.overview-page .ov-ehours-bars>span>i { + display: block; + width: 100%; + background: color-mix(in srgb, var(--status-progress, #8a6116) 70%, transparent); + flex: none; + border-radius: 0 !important; +} +.overview-page .ov-ehours-bars > span.is-bad > i { background: color-mix(in srgb, var(--danger, #b42318) 75%, transparent); } +.overview-page .ov-triple-row > .ov-panel-card > .ov-routes-table > .ov-route-row:not(.ov-route-head) { flex: 1 1 auto; align-items: center; } +.overview-page .ov-ehours-bars > span.is-zero > i { height: 1px !important; border-radius: 0; background: var(--border-strong, #CFC7B9) !important; } +.dark-mode .overview-page .ov-ehours-bars > span.is-zero > i { background: #4A453F !important; } +.overview-page .ov-ehours-bars > span > i:first-child { border-radius: 1px 1px 0 0 !important; } +.overview-page .ov-ehours-bars > span > i.ov-ehours-e { min-height: 2px; background: #B42318 !important; } +.overview-page .ov-ehours-bars > span > i.ov-ehours-w { min-height: 2px; background: var(--status-progress) !important; } +.dark-mode .overview-page .ov-ehours-bars > span > i.ov-ehours-e { background: #F08A82 !important; } +.overview-page .ov-cache .ov-metrics-table td.num, .overview-page .ov-cache .ov-metrics-table th.num { text-align: right; font-variant-numeric: tabular-nums; } +.overview-page .page-head .ov-header.page-head-main { min-height: 48px !important; align-items: center !important; } +.page-head h1 em { font-style: normal !important; color: inherit !important; } +.page-head > .flow-trail li[aria-current]::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); } +.flow-trail li { display: inline-flex; align-items: center; gap: 6px; } /* Errors filter uses the same segmented control as the queue range. */ -.errors-page .seg-tabs { display: inline-flex; gap: 2px; padding: 2px; border: 1px solid var(--border-color); border-radius: var(--radius-control); background: var(--paper-card); } -.errors-page .seg-tabs button, .errors-page .seg-tabs button + button { min-height: 0; height: 30px; padding: 0 10px; border: 0; border-radius: 4px; background: transparent; color: var(--ink-muted); font: 500 13px/1 var(--font-sans); } -.errors-page .seg-tabs button:hover { background: var(--hover-bg-color); color: var(--color); } -.errors-page .seg-tabs button.active { background: var(--accent-soft); color: var(--accent); } /* User detail: status reads as metadata next to the name; actions are spaced. */ .user-detail-card .user-header .status-dot-wrap { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 400; color: var(--ink-soft); } +/* Admin user: spacing, empty values, one heading style */ +.user-header h2 { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; } .user-detail-card .user-actions { display: flex; flex-wrap: wrap; gap: 8px; } /* Row metadata wraps instead of truncating every item to a few letters. */ .admin-page .paper-table .cell-anon .anon-sub { flex-wrap: wrap; row-gap: 2px; } .admin-page .paper-table .anon-sub > span, .admin-page .paper-table .anon-sub > a { flex: 0 1 auto; max-width: 100%; white-space: nowrap; } .admin-page .paper-table .cell-views .mobile-meta-icon { margin-right: 4px; } -.q-jobs { overflow-x: auto; } +/* Dashboard table spans its container */ +.paper-table.paper-table-dashboard { width: 100%; } .q-job-detail-label { font-family: var(--font-sans); font-size: 12px; letter-spacing: 0; text-transform: none; } -.admin-section-header h2 { font-family: var(--font-sans); font-size: 16px; font-weight: 600; letter-spacing: 0; text-transform: none; color: var(--color); } .errors-page .sev-label { font-family: var(--font-sans); font-size: 13px; letter-spacing: 0; } +/* Native selects and checkboxes match the custom controls */ +.paper-page select, .admin-page select, .errors-page select, .anonymize-page select, .paper-table select { + height: 34px; + padding: 0 30px 0 10px; + border: 1px solid var(--border-color); + border-radius: var(--radius-control); + background: var(--input-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236F6A61' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center; + -webkit-appearance: none; + appearance: none; + font: inherit; + font-size: 13px; + color: var(--input-color); +} +.errors-page .kpi-card.kpi-error .kpi-value { color: var(--color) !important; } +@media (max-width: 767px) { + .paper-table.paper-table-dashboard .paper-table-row { flex-wrap: wrap; align-items: flex-start !important; } +} +@media (max-width: 767px) { + .paper-table.paper-table-dashboard .paper-table-row > :first-child { grid-area: name; } +} +@media (max-width: 767px) { + .paper-table.paper-table-dashboard .paper-table-row > :last-child { grid-area: actions; align-self: start; } +} +@media (max-width: 767px) { + .paper-table.paper-table-dashboard .paper-table-row > :not(:first-child):not(:last-child) { grid-column: 1 / -1; } +} +@media (max-width: 767px) { + .paper-table.paper-table-dashboard .paper-table-row>.cell-anon { + flex: 1 1 0 !important; + order: 1; + grid-area: name !important; + grid-column: auto !important; + min-width: 0; + } +} +@media (max-width: 767px) { + .paper-table.paper-table-dashboard .paper-table-row > .cell-actions { flex: 0 0 auto !important; order: 2; width: auto !important; margin: 0 !important; } +} +.cell-anon { padding-left: 0 !important; } +@media (max-width: 767px) { + .paper-table.paper-table-dashboard .paper-table-row>.dashboard-row-meta { + flex: 1 1 100% !important; + order: 3; + grid-area: meta !important; + grid-column: auto !important; + } +} +@media (max-width: 767px) { + .admin-page .paper-table-row [class*="meta"], .admin-page .paper-table-row .text-muted { white-space: normal !important; } +} +.paper-table-dashboard .cell-status .status-sub-date { white-space: normal !important; overflow: visible !important; text-overflow: clip !important; } +.paper-table-dashboard .copy-url:hover { box-shadow: inset 0 0 0 1px var(--border-color) !important; } +@media (max-width: 767px) { + .paper-table-dashboard .cell-actions>.copy-url { + align-self: start; + justify-self: auto !important; + grid-area: copy !important; + } +} +.copy-url:disabled { cursor: progress; } +.copy-url:hover .project-type-svg { opacity: 1; } +@media (max-width: 767px) { + .paper-table-dashboard .cell-actions>.dropdown { grid-area: more !important; } +} +@media (max-width: 767px) { + .paper-table-dashboard .cell-actions>.row-edit { grid-area: edit; } +} +@media (max-width: 767px) { + .paper-table .anon-sub > span, .paper-table .anon-sub > a { overflow: visible !important; text-overflow: clip !important; white-space: nowrap; } +} +@media (max-width: 767px) { + .paper-table .cell-anon .repo-name { white-space: normal !important; overflow-wrap: anywhere; overflow: visible !important; text-overflow: clip !important; } +} +@media (max-width: 767px) { + /* Admin repo cards: actions top-right */ + .admin-page .paper-table:not(.paper-table-dashboard) .paper-table-row { position: relative; padding-right: 44px !important; } +} +@media (max-width: 767px) { + .admin-page .paper-table:not(.paper-table-dashboard) .paper-table-row > :last-child { position: absolute !important; top: 10px; right: 4px; } +} +@media (max-width: 767px) { + .admin-page .paper-table .anon-sub > span { white-space: nowrap; } + .paper-table-dashboard .cell-views.num::after { color: var(--ink-soft); content: "views" !important; margin-left: 4px; } +} +@media (max-width: 767px) { + .admin-page .paper-table input[type="checkbox"], .admin-page .paper-table [role="cell"]:has(> input[type="checkbox"]), .admin-page .paper-table-head [role="columnheader"]:has(> input[type="checkbox"]) { display: none !important; } + .anon-sub { column-gap: 0 !important; } + .paper-table-dashboard .cell-expires > span:not(.expires-never):not(.expires-past)::before { content: "Expires "; color: var(--ink-soft); } +} + +/* Meta line: a dot that lands at a line start is clipped away */ +.admin-page .paper-table .cell-anon .anon-text:has(.meta-sep) { overflow: hidden; } +/* Dashboard: actions column has a visible header like the others */ +.paper-table-dashboard .paper-table-head .col-link { font-size: inherit; color: inherit; margin-left: -16px; } +@media (min-width: 768px) { .paper-table-dashboard .cell-views.num::after { content: none !important; } +} +/* Dashboard row actions: 32px targets with breathing room from the link chip */ +.paper-table-dashboard .cell-actions { gap: 4px !important; } +@media (min-width: 768px) { + .paper-table-dashboard .cell-actions > .row-edit:not(.row-open) { grid-column: 3; } +} +@media (min-width: 768px) { + .paper-table-dashboard .cell-actions>.dropdown { grid-column: 4; grid-row: 1; } +} +.paper-table-dashboard .cell-status .project-attention-action { display: inline-block; } +@media (max-width: 767px) { + .paper-table-dashboard .dashboard-row-meta .status-line { order: 1; } +} +@media (max-width: 767px) { + .paper-table-dashboard .dashboard-row-meta>.cell-expires { order: 3; flex: 1 0 100% !important; } +} +.paper-table-dashboard .cell-actions .dropdown.is-disabled { opacity: 1; } +@media (min-width: 768px) { + .paper-table-dashboard .cell-actions > .row-edit.row-open, .paper-table-dashboard .cell-actions > button.row-edit.row-open { grid-column: 2; grid-row: 1; } +} +@media (min-width: 768px) { + .paper-table-dashboard .cell-actions > .row-edit:not(.row-open) { grid-row: 1; } +} +@media (max-width: 767px) { + .row-edit { display: none !important; } +} +.paper-table-dashboard .cell-expires .expires-soon::before { content: none !important; } +@media (max-width: 767px) { + .paper-table-dashboard .cell-views.num[data-unit]::after, + .admin-page .paper-table .cell-views.num[data-unit]::after { content: attr(data-unit) !important; } +} +.paper-table-dashboard .row-edit:hover, .paper-table-dashboard .btn-icon-dots:hover { opacity: 1; } +.admin-page .paper-table .anon-sub:has(.meta-sep) > * { white-space: nowrap; } +@media (max-width: 767px) { .admin-page .paper-table .cell-views.num::after { content: " views"; color: var(--ink-soft); } +} +.admin-page .anon-sub.meta-dots > .meta-email { max-width: 100%; overflow: hidden; text-overflow: ellipsis; } +.admin-page .anon-sub.meta-dots .fa-github { margin-right: 3px; } +@media (max-width: 767px) { .admin-page .paper-table:not(.users-table) .cell-views.num::after { margin-left: 4px; } +} +@media (max-width: 767px) { .paper-table .cell-views { gap: 0 !important; } +} +.paper-table .paper-table-row .repo-name-static { font-style: normal; } +.admin-page.admin-page .paper-table .anon-text > .repo-name { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } +.admin-page.admin-page .paper-table .anon-sub.anon-sub > * > * { vertical-align: baseline; } +.admin-page.admin-page .paper-table .anon-sub.anon-sub > :first-child { display: inline-block; } +.admin-page.admin-page .paper-table .anon-sub.anon-sub > :last-child:not(:first-child) { flex-shrink: 0; } +.admin-page.admin-page .paper-table .anon-sub .ui-icon { width: 13px; height: 13px; margin-right: 4px; vertical-align: -2px; } +.admin-page.admin-page .paper-table .anon-sub .fa-github { margin-right: 4px; } +.admin-page.admin-page .paper-table .anon-sub.anon-sub > .meta-tail.meta-tail { flex: 0 1000 auto !important; } +@media (min-width: 768px) { + .admin-page .paper-table.paper-table-repos.has-bulk .paper-table-row, + .admin-page .paper-table.paper-table-repos.has-bulk .paper-table-head { + grid-template-columns: 28px minmax(280px, 1fr) minmax(150px, 200px) 80px 130px 40px !important; + } +} +@media (min-width: 768px) { + .admin-page .paper-table.paper-table-repos .cell-anon .anon-sub:has(.meta-sep) { flex-wrap: nowrap; min-width: 0; } +} +@media (min-width: 768px) { + .admin-page .paper-table.paper-table-repos .anon-sub:has(.meta-sep) > * { flex: none !important; max-width: none !important; } +} +.admin-page .paper-table.paper-table-repos .cell-status { min-width: 0; } +@media (min-width: 768px) { + .admin-page.admin-page .paper-table.paper-table-repos .anon-sub.anon-sub > .meta-tail.meta-tail { flex: none !important; } +} +@media (min-width: 768px) { + .admin-page.admin-page .paper-table.paper-table-repos .anon-sub.anon-sub>.meta-tail.meta-tail:last-child:has(>a) { + text-overflow: ellipsis; + white-space: nowrap; + flex: 0 0 auto !important; + min-width: 0 !important; + overflow: visible; + } +} +@media (min-width: 768px) { + .admin-page.admin-page .paper-table.paper-table-repos .anon-sub.anon-sub > .meta-tail.meta-tail:last-child:has(> a) > a { overflow: hidden; text-overflow: ellipsis; } +} +@media (min-width: 768px) { + .admin-page.admin-page .paper-table.paper-table-repos .cell-anon .anon-sub.anon-sub:has(.meta-sep) { flex-wrap: wrap; height: 18px; line-height: 18px; overflow: hidden; align-content: flex-start; } +} +@media (min-width: 768px) { + .admin-page.admin-page .paper-table.paper-table-repos .anon-sub.anon-sub > a.src-path { display: inline-flex !important; flex: 0 1 auto !important; min-width: 0 !important; overflow: hidden; } +} +@media (min-width: 768px) { + .admin-page.admin-page .paper-table.paper-table-repos .anon-sub.anon-sub > a.src-path::before { flex: none; } +} +html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta > * { flex: none !important; min-width: 0 !important; max-width: none !important; white-space: nowrap; overflow: visible; text-overflow: clip; } +html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta > .src-path { display: inline-flex !important; flex: 0 1 auto !important; min-width: 8ch !important; overflow: hidden; } +html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta > .meta-item { display: inline-flex; align-items: center; gap: 4px; } +html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta > .meta-item .ui-icon { width: 12px; height: 12px; flex: none; } +html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta > .meta-more[hidden] { display: none !important; } +html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta>.meta-more { + display: inline-flex; + align-items: center; + height: 18px; + padding: 0 6px; + border-radius: 9px; + background: var(--paper-bg-alt); + border: 1px solid var(--border-color); + color: var(--ink-soft); + font-size: 11.5px; + font-weight: 500; + font-variant-numeric: tabular-nums; + line-height: 16px; + cursor: help; + margin-left: 8px; +} +html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta > .meta-more::before { content: none !important; } +html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta.is-fitting > .src-path { flex: none !important; } +html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta > .src-path .src-repo { flex: none; } +html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta.is-fitting > .src-path .src-owner, +html body .admin-page.admin-page.admin-page .paper-table.paper-table .anon-sub.anon-meta.anon-meta.is-fitting > .src-path .src-repo { flex: none; overflow: visible; } +html body .admin-page .paper-table .anon-sub.anon-meta > [data-meta-hidden] { display: none !important; } +@media (min-width: 768px) { + html body .admin-page .paper-table.paper-table-repos.has-bulk .paper-table-row, html body .admin-page .paper-table.paper-table-repos.has-bulk .paper-table-head { grid-template-columns: 28px minmax(280px, 1fr) minmax(160px, 236px) 72px 124px 40px !important; } +} +@media (min-width: 768px) { + html body .admin-page .paper-table .cell-status .status-sub { max-width: none !important; width: auto; } +} +.errors-page .kpi-card.kpi-error:has(.kpi-value:not(:empty)) .kpi-value { color: var(--color) !important; } +.errors-page .col-msg { font-family: var(--font-mono) !important; font-size: 13px !important; } +.errors-page .errors-list>div:not(.errors-list-head) { padding-top: 10px !important; padding-bottom: 10px !important; min-height: 56px !important; } +.errors-page .col-count::before, .errors-page .col-count::after { content: none !important; display: none !important; } +.errors-page .col-count .count-pill { width: auto !important; min-width: 0 !important; } +.errors-page .col-sev .sev-info::before { background: var(--ink-faint) !important; } +.errors-page input[type="search"] { font-family: var(--font-sans) !important; } +.errors-page .errors-toolbar .search-wrap, .errors-page .errors-toolbar input[type="search"] { flex: 1 1 220px !important; max-width: 340px !important; min-width: 0 !important; } +.errors-page .kpi-filter:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } +@media (max-width: 767px) { + .errors-page .errors-toolbar .select-wrap select { flex: 1 1 auto; min-width: 0 !important; width: 100% !important; max-width: none !important; } +} +@media (max-width: 767px) { + .errors-page .errors-toolbar .autoref { grid-column: 1; } +} +@media (max-width: 767px) { + .errors-page .errors-toolbar > .btn-icon { grid-column: 2; justify-self: end; } +} +.errors-page .col-msg .msg-detail, .errors-page .col-msg .msg-context { overflow-wrap: anywhere; } +.errors-toolbar .select-wrap label { white-space: nowrap; } +.errors-page .col-status { text-align: center; } +@media (max-width: 900px) { .errors-page .errors-list-head, .errors-page .errors-row-main { grid-template-columns: 80px minmax(0, 1fr) 56px 64px !important; } +} +@media (min-width: 768px) { .errors-page .errors-toolbar .select-wrap { flex: none !important; } +} +@media (min-width: 768px) { + .errors-page .errors-toolbar > .seg-filter { order: 1; } +} +@media (min-width: 768px) { + .errors-page .errors-toolbar > .btn-icon { order: 3; } +} +@media (min-width: 768px) { + .errors-page .errors-toolbar > .select-wrap { order: 6; } +} +@media (min-width: 768px) { + .errors-page .errors-toolbar > .select-wrap + .select-wrap { order: 7; } +} +@media (min-width: 768px) { .errors-page .errors-toolbar .search-wrap input[type="search"] { max-width: none !important; width: 100% !important; } +} +@media (min-width: 901px) { .errors-page .errors-list-head, .errors-page .errors-row-main { grid-template-columns: 120px 120px minmax(0, 1fr) 64px 72px !important; } +} /* Email setup after sign-in. Native dialog traps focus and makes the page inert. */ .email-prompt { @@ -8643,7 +8065,7 @@ body.dark-mode .markdown-alert-tip { --alert-color: #7ee787; } body.dark-mode .markdown-alert-important { --alert-color: #d2a8ff; } body.dark-mode .markdown-alert-warning { --alert-color: #e3b341; } body.dark-mode .markdown-alert-caution { --alert-color: #ff7b72; } -.markdown-body .emoji { display: inline; vertical-align: text-bottom; } +.markdown-body .emoji { display: inline; } .markdown-body .footnotes { margin-top: 2rem; border-top: 1px solid var(--border-color, #d0d7de); padding-top: 1rem; font-size: .875em; } .markdown-body .katex-display { overflow-x: auto; overflow-y: hidden; padding: .25rem 0; } .markdown-body .markdown-diagram { margin: 1rem 0; border: 1px solid var(--border-color, #d0d7de); padding: .75rem; } @@ -8665,106 +8087,54 @@ body.dark-mode .markdown-body .hljs-comment { color: #b1bac4; } body:not(.dark-mode) .markdown-body .gh-dark-mode-only, body.dark-mode .markdown-body .gh-light-mode-only { display: none; } /* Billing follows the settings page's typography and section rules. */ -.billing-plan { padding: 1.5rem 0; border-bottom: 1px solid var(--paper-border, #d8d4cd); } -.billing-plan h3 { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; justify-content: space-between; } -.billing-price { font-variant-numeric: tabular-nums; font-weight: normal; } -.billing-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1rem; } #settings-billing p { max-width: 72ch; } /* Task-local hosting choices inherit the repository form's paper palette. */ .repository-hosting { border-top: 1px solid var(--border-color); margin-top: 24px; } .repository-hosting h2 { font-size: 1.5rem; } -.hosting-choices { border: 0; padding: 0; margin: 20px 0; min-width: 0; } -.hosting-choices legend { font-size: 1rem; font-weight: 600; } -.hosting-choice { display: flex; align-items: flex-start; gap: 12px; padding: 16px; border: 1px solid var(--border-color); background: var(--paper-card); cursor: pointer; } -.hosting-choice + .hosting-choice { border-top: 0; } -.hosting-choice input { margin-top: 5px; accent-color: var(--accent); } -.hosting-choice strong, .hosting-choice small { display: block; } -.hosting-choice small { margin-top: 6px; color: var(--ink-muted); } -.hosting-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; margin: 20px 0; } .repository-pass { margin: 20px 0; } -.repository-pass summary { cursor: pointer; color: var(--link-color); } -.repository-pass p { margin-top: 12px; } +.repository-pass summary { color: var(--link-color); } /* Approved task-based payment flow: review content and a persistent summary. */ -.task-review-active.anonymize-page { height: auto !important; min-height: 100%; overflow: visible; } -.task-review-active .anonymize-workspace { flex: 0 0 auto; overflow: visible; } -.repository-task { width: 100%; max-width: 1020px; margin: 0 auto; padding: 32px 24px 42px; color: var(--color); font-size: 15px; line-height: 1.55; } +.repository-task { margin: 0 auto; padding: 32px 24px 42px; color: var(--color); font-size: 15px; line-height: 1.55; scroll-margin-top: 70px; } .repository-task .paper-crumbs { margin-bottom: 24px; } +.admin-page .paper-crumbs { min-height: 20px; margin-bottom: 4px !important; } .repository-task h1 { font: normal 40px/1.15 'Iowan Old Style', Georgia, serif; margin: 8px 0 10px; } .repository-task h2 { font: normal 27px/1.25 'Iowan Old Style', Georgia, serif; margin: 0 0 12px; } .repository-task h3 { font: 600 17px/1.5 var(--font-sans); margin: 0 0 10px; } .repository-task p { margin: 0 0 16px; } -.task-lede, .task-muted { color: var(--ink-muted); } +.task-lede { color: var(--ink-muted); } .task-trail { list-style: none; display: flex; flex-wrap: wrap; gap: 24px; margin: 30px 0; padding: 18px 0; border-bottom: 1px solid var(--border-color); color: var(--ink-muted); font-size: 13px; } .task-trail [aria-current] { color: var(--color); font-weight: 600; } .task-trail button { color: inherit; padding: 0; border: 0; background: none; font: inherit; cursor: pointer; } -.task-columns { display: grid; grid-template-columns: minmax(0,1.6fr) minmax(245px,1fr); gap: 34px; align-items: start; } -.task-section-title { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; } +.task-columns { display: grid; grid-template-columns: minmax(0,1.6fr) minmax(245px,1fr); gap: 34px; align-items: stretch; } .task-text-button { border: 0; padding: 7px 0; background: transparent; color: var(--link-color); cursor: pointer; font: inherit; text-align: left; } .task-text-button:focus-visible, .task-trail button:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; } -.task-summary { background: var(--paper-bg-alt); padding: 24px; border-radius: 5px; } -.task-summary dt { margin-top: 18px; font-size: 12px; font-weight: 400; color: var(--ink-muted); } +.task-summary dt { font-size: 12px; font-weight: 400; color: var(--ink-muted); margin-top: 16px !important; } .task-summary dd { margin: 3px 0; overflow-wrap: anywhere; } -.task-summary h3, .task-redactions { overflow-wrap: anywhere; } +.task-summary h3 { overflow-wrap: anywhere; } .task-summary dl { margin-bottom: 0; } -.task-summary-foot { border-top: 1px solid var(--border-color); margin-top: 28px; padding-top: 24px; } -.task-summary-foot p { color: var(--ink-muted); margin: 0; } -.task-hosting { border-top: 1px solid var(--border-color); margin-top: 22px; padding-top: 20px; } -.repository-task .hosting-choices { margin: 18px 0; } -.repository-task .hosting-choice { padding: 18px; gap: 13px; font-weight: 400; margin: 0; } -.repository-task .hosting-choice:first-of-type { border-radius: 6px 6px 0 0; } -.repository-task .hosting-choice:last-of-type { border-radius: 0 0 6px 6px; } -.repository-task .hosting-choice small { margin-top: 0; font-size: 13px; line-height: 1.55; } -.task-terms { font-size: 13px; color: var(--ink-soft); } -.task-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; margin: 24px 0 16px; } -.repository-task .btn { padding: 10px 16px; border-radius: 5px; font-size: 15px; } .task-status { background: var(--accent-soft); padding: 16px 20px; margin: 20px 0; } .task-status p:last-child { margin: 0; } -@media(max-width:650px) { +@media (max-width:650px) { .repository-task { padding: 24px 18px; } .repository-task h1 { font-size: 32px; } .task-columns { display: block; } .task-summary { margin-top: 28px; } .task-trail { gap: 15px; font-size: 12px; } } -.repository-task { scroll-margin-top: 70px; } -.task-columns { align-items: stretch; } -.repository-task .btn-ink { background: var(--color); border-color: var(--color); color: var(--canvas-bg-color); box-shadow: none; } -.repository-task .btn-ink:hover { background: var(--ink-soft); border-color: var(--ink-soft); } -.task-field { margin-bottom: 24px; } -.task-field > label { display: block; font-weight: 600; margin-bottom: 8px; } -.task-field input, .task-field select, .task-field textarea { width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 4px; background: var(--paper-card); color: var(--color); font: inherit; } -.task-field textarea { resize: vertical; } -.task-field small { display: block; margin-top: 8px; font-size: 13px; color: var(--ink-muted); } -.task-field :is(input, select, textarea):focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; } - -.task-paybox { background: var(--paper-card); border: 1px solid var(--border-color); border-radius: 5px; padding: 22px; margin-top: 20px; } - -.task-ready { border-left: 3px solid var(--success, #2f7a44); padding: 16px 20px; background: var(--paper-bg-alt); margin-bottom: 22px; } .repository-task.status-page .paper-progress { margin-top: 24px; } -.task-date-options summary { cursor: pointer; color: var(--link-color); font-size: 13px; } -.task-date-options[open] summary { margin-bottom: 12px; } - -.task-result { padding: 18px; background: var(--paper-bg-alt); overflow-wrap: anywhere; } -.task-result .detail-label { font-size: 12px; color: var(--ink-muted); margin-bottom: 6px; } +/* Status page: the last step of the flow looks like the rest of the app. */ +.repository-task > h1 { margin: 4px 0 8px; } +.repository-task .btn-primary:hover { filter: brightness(.94); } +@media (min-width: 992px) { + .repository-task .task-columns:has(.share-link) { grid-template-columns: minmax(0, 2fr) minmax(300px, 1fr) !important; } +} +.repository-task .share-link-url:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } /* Step one keeps redaction feedback beside the fields being edited. */ -.task-configure-columns { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; } -.task-live-preview { min-width: 0; border: 1px solid var(--border-color); border-radius: 5px; background: var(--paper-card); } -.task-preview-head { padding: 20px 24px; border-bottom: 1px solid var(--border-color); } -.task-preview-head h2 { font-size: 23px; margin-bottom: 6px; } -.task-preview-head p { margin: 0; font-size: 13px; } -.task-preview-message, .task-preview-content { padding: 24px; } -.task-preview-content { overflow: auto; max-height: 650px; overflow-wrap: anywhere; } -.repository-task .task-preview-content h1 { font: 600 28px/1.3 var(--font-sans); } -.repository-task .task-preview-content h2 { font: 600 22px/1.3 var(--font-sans); } -@media(max-width:650px) { - .task-live-preview { margin-top: 28px; } - .task-preview-content { max-height: none; } -} /* Anonymization workspace: visible configuration and contextual hosting (mock v8). */ .anonymize-page .anonymize-topbar { padding: 14px 22px; background: var(--canvas-bg-color); } @@ -8781,25 +8151,39 @@ body.dark-mode .markdown-body .gh-light-mode-only { display: none; } .anonymize-page .paper-field-label { font: 500 13px/1.5 var(--font-sans); margin-bottom: 8px; } .anonymize-page .form-group { margin-bottom: 16px; } .anonymize-page .form-group:last-child { margin-bottom: 0; } -.anonymize-page .form-control { font-size: 14px; min-height: 40px; padding: 9px 10px; border-radius: 4px; } +.anonymize-page .form-control { font-size: 14px; min-height: 40px; padding: 9px 10px; } .anonymize-page textarea.form-control { line-height: 1.6; } .anonymize-page .form-grid-2 { gap: 12px; } -.anonymize-page .form-check { padding-top: 10px; padding-bottom: 10px; font-size: 14px; } -.anonymize-page .form-check-label { font-size: 14px; line-height: 1.5; } +.anonymize-page .form-check { padding-top: 10px; padding-bottom: 10px; font-size: 14px; padding-left: 26px; } +.anonymize-page .form-check-label { font-size: 14px; line-height: 1.5; font-weight: 400; } .anonymize-page .form-text { font-size: 12px; line-height: 1.6; } .anonymize-page .repo-access-details { margin: 12px 0 16px; } .anonymize-page .repo-access-note { font-size: 11px; } +.repo-access-note>span:has(.ui-icon) .ui-icon { flex-shrink: 0; margin-top: 2px; color: #9A6416 !important; } +.repo-access-note > span:last-child .ui-icon { color: #9A6416; flex: none; margin-top: 2px; } +.dark-mode .repo-access-note>span:has(.ui-icon) { + background: rgba(224,176,112,.10) !important; + box-shadow: inset 3px 0 0 #E0B070 !important; +} +.dark-mode .repo-access-note>span:has(.ui-icon) .ui-icon { color: #E0B070 !important; } +.repo-access-note { width: 100%; } .anonymize-page .anonymize-submit-bar { flex: none; position: static; margin: 0; padding: 16px 20px; background: var(--paper-card); border-top: 1px solid var(--border-color); } -.anonymize-page .anonymize-submit-bar .btn { width: 100%; font-size: 14px; padding: 10px 12px; min-height: 43px; } +.anonymize-page .anonymize-submit-bar .btn { width: 100%; font-size: 14px; padding: 10px 12px; min-height: 43px; font-weight: 600; } .checkout-return-note { font-size: 11px; line-height: 1.5; color: var(--ink-muted); margin: 8px 0 0; text-align: center; } -.anonymize-fields > .alert, .anonymize-fields > .draft-status, .anonymize-fields > .anonymize-review-note { margin: 12px 20px; } +.anonymize-fields>.alert, .anonymize-fields>.draft-status { margin: 12px 20px; } .anonymize-page .anonymize-preview-col { min-height: 0; padding: 20px; position: relative; background: var(--canvas-bg-color); } -.anonymize-page .anonymize-preview-head { border: 0; padding: 0; min-height: 32px; margin-bottom: 14px; display: flex; align-items: center; justify-content: space-between; } -.anonymize-preview-head strong, .anonymize-preview-head button { font-size: 13px; } -.anonymize-page .anonymize-preview-body { padding: 24px; border-radius: 6px; min-height: 480px; overflow-wrap: anywhere; font: 14px/1.7 var(--font-sans); } -.anonymize-page .anonymize-preview-body h1 { font-size: 27px; line-height: 1.2; margin: 0 0 20px; padding-bottom: 14px; } -.anonymize-page .anonymize-preview-body h2 { font-size: 18px; margin: 28px 0 12px; } -.anonymize-page .anonymize-preview-body pre { font-size: 12px; padding: 15px; } +.anonymize-page .anonymize-preview-body { + padding: 24px; + border-radius: 6px; + min-height: 480px; + overflow-wrap: anywhere; + font: 14px/1.7 var(--font-sans); + --main-bg-color: var(--paper-card); + background: var(--paper-card); +} +.anonymize-page .anonymize-preview-body h1 { font-size: 27px; line-height: 1.2; margin: 0 0 20px; padding-bottom: 14px; font-weight: 700; } +.anonymize-page .anonymize-preview-body h2 { font-size: 18px; margin: 28px 0 12px; border: 0; padding: 0; font-weight: 700; } +.anonymize-page .anonymize-preview-body pre { font-size: 12px; padding: 15px; background: var(--paper-bg-alt); line-height: 1.7; } .anonymize-page.preview-expanded .anonymize-split { grid-template-columns: 1fr; } .anonymize-page.preview-expanded .anonymize-form-col { display: none; } .hosting-usage { font-size: 12px; color: var(--ink-muted); margin: 0 0 4px; } @@ -8812,25 +8196,17 @@ body.dark-mode .markdown-body .gh-light-mode-only { display: none; } .hosting-property { margin-bottom: 0; } .hosting-property label, .hosting-date .paper-field-label { font-size: 12px; font-weight: 400; margin: 0; } .hosting-date .invalid-feedback { grid-column: 1/-1; } +.hosting-date > input.form-control[type="date"] { justify-self: stretch; } .anonymize-page .conference-field { border-bottom: 1px solid var(--border-color); padding: 0 0 16px; margin: 0 0 14px; } .anonymize-page .conference-hosting { margin: 8px 0 0; padding: 8px 12px; border-radius: 8px; font-size: 13px; line-height: 1.45; color: var(--ink-soft); background: color-mix(in srgb, var(--ink-muted) 8%, transparent); } .anonymize-page .conference-hosting.is-covered { color: var(--color); background: var(--accent-soft); } .anonymize-page .conference-hosting a { font-weight: 600; } -.subscription-choice { padding: 16px; background: var(--paper-bg-alt); border-radius: 6px; margin-top: 4px; } -.subscription-choice h3 { font-size: 13px; font-weight: 600; margin: 0 0 10px; } -.billing-cycle { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; border: 0; padding: 0; margin: 0 0 12px; min-width: 0; } -.cycle-option { display: flex; align-items: center; gap: 7px; padding: 10px 8px; border: 1px solid var(--border-color); border-radius: 4px; background: var(--paper-card); font-size: 12px; cursor: pointer; margin: 0; } -.cycle-option.selected { border-color: var(--accent); background: var(--accent-soft); } -.cycle-option input { accent-color: var(--accent); margin: 0; flex: none; } -.subscription-choice p { font-size: 12px; line-height: 1.5; margin: 0 0 8px; } -.subscription-choice p:last-child { margin: 0; } .hosting-terms { font-size: 12px; line-height: 1.5; color: var(--ink-muted); } -.capacity-reason { font-size: 13px; } .capacity-options, .repository-pass { margin-top: 12px; font-size: 12px; } .capacity-options summary, .repository-pass summary { cursor: pointer; } .capacity-options p, .repository-pass p { margin: 8px 0; } .capacity-options .task-text-button { display: block; } -@media(max-width:767px) { +@media (max-width:767px) { .anonymize-page .anonymize-split { display: block; overflow: visible; } .anonymize-page .anonymize-form-col .paper-settings-main { height: auto; } .anonymize-fields { overflow: visible; } @@ -8839,20 +8215,26 @@ body.dark-mode .markdown-body .gh-light-mode-only { display: none; } .anonymize-page .anonymize-preview-col { padding: 16px; } .anonymize-page .anonymize-preview-body { padding: 20px; } .anonymize-page .anonymize-submit-bar { padding: 16px; } - .anonymize-page .preview-expand { display: none; } .anonymize-page .anonymize-mobile-tabs { padding: 0; gap: 0; background: var(--paper-card); } .anonymize-mobile-tabs button { border-radius: 0; padding: 12px; min-height: 44px; } .anonymize-mobile-tabs button[aria-selected=true] { background: none; box-shadow: inset 0 -2px var(--accent); } - .cycle-option { min-height: 44px; } } -/* Match the mock's typography and document rendering without changing the app shell. */ -.anonymize-page { --font-sans: system-ui, -apple-system, sans-serif; font-family: var(--font-sans); } +/* Settings checkboxes sit in the 28px gutter left of their label; the reset above zeroes that offset. */ +.paper-settings-section .form-check > input.form-check-input[type="checkbox"] { position: absolute; margin: 3px 0 0 -28px; } +/* Dark preview: README heading rules use the theme border */ +.dark-mode .anonymize-preview-col .markdown-body h1, .dark-mode .anonymize-preview-col .markdown-body h2, .dark-mode .anonymize-preview-col .markdown-body hr { border-color: var(--border-color) !important; } +.anonymize-preview-col .pr-title .badge::before { content: ""; width: 6px; height: 6px; border-radius: 50%; margin-right: 6px; background: var(--status-inactive, var(--ink-faint)); } +.anonymize-preview-col .pr-title .badge.badge-success::before { background: var(--status-ready); } +.anonymize-preview-col .pr-title .badge.badge-warning::before { background: var(--status-progress); } +.anonymize-preview-col .pr-title .badge.badge-danger::before { background: var(--status-error); } +/* Config: the last line of the form clears the sticky bar's fade */ +.anonymize-form-col form { padding-bottom: 0 !important; } +/* The anonymize flow uses the app's sans token like every other app page. */ +.anonymize-page { font-family: var(--font-sans); } body:not(.dark-mode) .anonymize-page { --paper-card: #fff; --canvas-bg-color: #faf9f6; --paper-bg-alt: #f5f4f0; --border-color: #dedbd4; --color: #242320; --ink-muted: #68655e; } .anonymize-page .repo-access-controls .btn { font-size: 12px; padding: 8px 12px; min-height: 36px; } -.anonymize-page .form-check-label { font-weight: 400; } -.anonymize-page .form-check { padding-left: 26px; } .anonymize-page .form-check input { width: 16px; height: 16px; margin-left: -26px; accent-color: var(--accent); } -.anonymize-page .form-check small { margin-top: 6px; } +.anonymize-page .form-check small { margin-top: 6px; margin-left: -26px; } .anonymize-page .btn.btn-icon.refresh-branches { display: inline-flex; align-items: center; justify-content: center; width: 40px; min-width: 40px; height: 100%; min-height: 40px; padding: 0; } @media (max-width: 767px) { .anonymize-page #branch, .anonymize-page #commit { min-height: 44px; } @@ -8889,43 +8271,154 @@ body.dark-mode .anonymize-page .term-hint { background: #3a2f1c; color: #f3dcb4; .preserve-dialog .preserve-count { font-size: 13px; color: var(--ink-muted); } .preserve-dialog .preserve-actions { display: flex; gap: 8px; margin-left: auto; } body.dark-mode .preserve-dialog { background: #242320; color: #faf9f6; } -.anonymize-page .anonymize-preview-body h2 { border: 0; padding: 0; font-weight: 700; } -.anonymize-page .anonymize-preview-body h1 { font-weight: 700; } -.anonymize-page .anonymize-preview-body pre { background: var(--paper-bg-alt); line-height: 1.7; } .anonymize-page .anonymize-preview-body pre code { font: 12px/1.7 ui-monospace, monospace; background: none; padding: 0; } - -.anonymize-page .anonymize-preview-body { --main-bg-color: var(--paper-card); background: var(--paper-card); } -.anonymize-page .anonymize-submit-bar .btn { font-weight: 600; } .anonymize-page .form-grid-2 .form-group { margin-bottom: 0; } -.anonymize-page .form-check small { margin-left: -26px; } /* User settings: one sheet, with labels aligned beside their controls. */ .user-settings { max-width: 1060px; padding: 28px 26px 40px; } -.user-settings .settings-title { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 22px; } -.user-settings .settings-title h1 { font: 650 26px/1.3 var(--font-sans); letter-spacing: -.025em; margin: 0; } +.user-settings .settings-title { align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 22px; } +.user-settings .settings-title h1 { margin: 0; } .settings-title > span { color: var(--ink-muted); font-size: 12px; } .settings-nav { display: flex; gap: 28px; border-bottom: 1px solid var(--border-color); } .settings-nav button { border: 0; border-radius: 0; background: transparent; color: var(--ink-muted); padding: 12px 0; min-height: 44px; font: 13px/1.4 var(--font-sans); } .settings-nav button[aria-current=page] { color: var(--color); font-weight: 600; box-shadow: inset 0 -2px var(--accent); } .settings-nav button:hover { color: var(--accent); } -.user-settings .settings-scope { color: var(--ink-muted); font-size: 12px; margin: 20px 0 4px; } .user-settings .settings-row { display: grid; grid-template-columns: 210px minmax(0,1fr); gap: 32px; padding: 22px 0; border-bottom: 1px solid var(--border-color); } .user-settings .settings-row > h2, .user-settings .settings-label { font-size: 13px; font-weight: 600; line-height: 1.5; margin: 8px 0 0; display: block; } .user-settings .settings-help { font-size: 12px; color: var(--ink-muted); margin: 7px 0 0; line-height: 1.6; } .user-settings .form-control { font-size: 14px; min-height: 40px; padding: 9px 10px; border-radius: 4px; background: var(--paper-card); } .user-settings textarea.form-control { line-height: 1.6; } +/* Inputs: visible borders and one radius */ +.paper-page .form-control, .anonymize-page .form-control, .paper-page input[type="text"], .paper-page input[type="date"], .paper-page textarea { + border: 1px solid color-mix(in srgb, var(--ink-faint) 55%, var(--border-color)) !important; + border-radius: var(--radius-control) !important; +} +.paper-page code, .paper-page kbd, .anonymize-page code { font-family: var(--font-mono) !important; } +.anonymize-page .repo-access-switch button + button::before { content: "·"; margin-right: 8px; color: var(--ink-muted); } +.anonymize-page .repo-access-switch button:not([aria-pressed="true"]):hover { color: var(--accent) !important; text-decoration: underline; } +.anonymize-page input[type="checkbox"]:disabled { opacity: .45; cursor: not-allowed; } +/* Commit SHA reads as an identifier */ +.anonymize-page #commit { font-family: var(--font-mono, "JetBrains Mono", monospace) !important; font-size: 13px !important; text-overflow: ellipsis; } +/* The images/PDF reminder belongs with the submit action */ +.anonymize-page .form-check-input[type="checkbox"] { position: absolute !important; margin-left: -28px !important; margin-top: 3px !important; } +.anonymize-page .repo-access-main:not(:has(button, a)), .anonymize-page .repo-access-controls:not(:has(button, a)) { display: none !important; } +.anonymize-page .repo-access-note:not(:has(span + span)) { margin-top: 0 !important; } +@media (max-width: 767px) { .anonymize-page .form-group+.form-group { margin-top: 0 !important; } +} +.anonymize-page #sourceUrl-landing:focus, .anonymize-page #sourceUrl:focus { border-color: var(--accent) !important; } +@media (min-width: 768px) { + #conf-basics .form-group { max-width: 600px; } +} +@media (hover: none) { .anonymize-page .repo-access-switch button:not([aria-pressed="true"]):hover { color: var(--ink-soft) !important; text-decoration: none !important; } +} +@media (max-width: 767px) { .anonymize-page .form-grid-2 { gap: 0 !important; } +} +.dark-mode :is(.paper-page, .anonymize-page) input[type="checkbox"]:is(:checked, :indeterminate)::before { background: #161412 !important; } +.anonymize-page .repair-disclosure .repair-step p[role="status"] { margin: 10px 0 0; } +.dark-mode .anonymize-page { + --rp-stage: var(--sidebar-bg-color); + --rp-window: var(--canvas-bg-color); + --rp-chrome: var(--paper-card); + --rp-tree: var(--sidebar-bg-color); + --rp-line: var(--border-color); + --rp-skel: var(--paper-card); +} +.anonymize-page .reviewer-preview .anonymize-preview-body.markdown-body h1 { font-size: 24px; } +@media (prefers-reduced-motion: no-preference) { .reviewer-preview .rp-loading .rp-skel, .reviewer-preview .rp-skel-row .rp-skel { animation: rp-pulse 1.4s ease-in-out infinite; } +} +@media (min-width: 1200px) { + .anonymize-page .anonymize-workspace .anonymize-split > .anonymize-form-col { grid-column: 2; padding-right: 24px !important; } +} +@media (min-width: 1200px) { + .anonymize-page .anonymize-workspace .anonymize-split > .reviewer-preview { grid-column: 3; } +} +@media (min-width: 1200px) { + .anonymize-page.preview-expanded .anonymize-workspace .anonymize-split > .reviewer-preview { grid-column: 1 / -1; } +} +@supports (animation-timeline: scroll()) { + .reviewer-preview .rp-more { animation: rp-more-fade linear both; animation-timeline: scroll(nearest block); } +} +@media (max-width: 767px) { + .anonymize-workspace .hosting-settings > .expiration-choices:last-child > .expiration-choice:last-child { padding-bottom: 0 !important; } +} +.anonymize-page .source-url-label-row > label { margin: 0 !important; align-self: center !important; } +.anonymize-page .source-url-label-row .repo-access-switch button::after, .anonymize-page .source-url-label-row .repo-access-switch button::before { content: none !important; display: none !important; } +.anonymize-page .anon-url-echo { overflow-wrap: normal !important; word-break: normal; } +@media (max-width: 767px) { + .anonymize-page .source-url-label-row .repo-access-switch.repo-access-switch button { min-height: 28px !important; height: 28px !important; padding: 0 12px !important; font-size: 12.5px !important; } +} +@media (max-width: 767px) { .anonymize-workspace .anonymize-fields > .paper-settings-section:has(+ .paper-settings-section[style*="display: none"]):not(:has(~ .paper-settings-section:not([style*="display: none"]))) { padding-bottom: 8px !important; } +} +@media (min-width: 1200px) { + .anonymize-workspace .anonymize-form-col .anonymize-submit-bar::before { + background: linear-gradient(to bottom, rgba(250,249,246,0), #FAF9F6) !important; + } +} +.reviewer-preview pre, .reviewer-preview .markdown-body pre, .reviewer-preview .pr-diff pre, .reviewer-preview .pr-diff table { max-width: 100%; } +.reviewer-preview pre { overflow-x: hidden !important; white-space: pre-wrap !important; overflow-wrap: anywhere !important; word-break: normal !important; } +.reviewer-preview pre code, .reviewer-preview pre code span { white-space: pre-wrap !important; overflow-wrap: anywhere !important; word-break: normal !important; } +@media (min-width: 768px) { + .reviewer-preview .rp-body.has-tree .anonymize-preview-body { + padding-left: 32px !important; + padding-right: 32px !important; + max-width: none; + } +} +@media (min-width: 768px) { + /* Each paragraph, list, heading or code block sits wholly beside the rail or wholly below it (none changes width + mid-way); wrapper divs are not boxed, so the blocks after the rail use the full width. */ + .reviewer-preview .rp-body.has-tree .anonymize-preview-body li > :is(p, ul, ol) { display: block; } +} +.reviewer-preview pre code .code-line { display: inline-block; width: 100%; box-sizing: border-box; padding-left: var(--hang, 4ch); text-indent: calc(-1 * var(--hang, 4ch)); vertical-align: top; } +.reviewer-preview pre code .md-diff-line { padding-left: calc(var(--diff-pad) + var(--hang, 4ch)); text-indent: calc(-1 * var(--hang, 4ch)); vertical-align: top; } +@media (min-width: 768px) { + .reviewer-preview .rp-body.has-tree > .rp-tree .rp-tree-row.rp-skel-row { width: 120px; } +} +@media (min-width: 768px) { + .reviewer-preview .rp-body.has-tree .anonymize-preview-body :is(p, ul, ol, dl, h1, h2, h3, h4, h5, h6, blockquote, hr) { display: revert; } +} +.reviewer-preview pre, .reviewer-preview pre code { font-family: var(--font-mono) !important; font-size: 12px !important; line-height: 20px !important; } +.reviewer-preview pre code { display: block; } +.dark-mode .reviewer-preview pre code .md-diff-line.is-add { background: #1E2A20; } +.dark-mode .reviewer-preview pre code .md-diff-line.is-remove { background: #33201D; } +.reviewer-preview .rp-open:hover { text-decoration-thickness: 2px; } +pre code .md-diff-line { display: inline-block; box-sizing: border-box; margin: 0 calc(-1 * var(--diff-pad)); padding: 0 var(--diff-pad); width: calc(100% + 2 * var(--diff-pad)); } +pre code .md-diff-line.is-add { background: rgba(47,107,62,0.10); color: #1F4A2A; } +pre code .md-diff-line.is-remove { background: rgba(161,58,46,0.10); color: #6E1F1A; } +pre code .md-diff-line.is-hunk { color: var(--ink-muted); } +.dark-mode pre code .md-diff-line.is-add { background: rgba(167,226,167,0.10); color: #C9F0C9; } +.dark-mode pre code .md-diff-line.is-remove { background: rgba(255,139,123,0.10); color: #FFC9C0; } +.dark-mode .reviewer-preview .rp-window { box-shadow: 0 12px 32px -10px rgba(0,0,0,.6); } +.reviewer-preview .rp-bar .vb-logo em { font-style: italic; } +@media (min-width: 768px) { + #conf-window .form-grid-2 { max-width: 600px; } +} +.admin-page select.form-control, .admin-page select { padding-right: 30px !important; background: var(--input-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236F6A61' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center !important; -webkit-appearance: none !important; appearance: none !important; } +/* Inputs: one border tone across forms */ +.paper-page .form-control, .paper-page input[type="text"], .paper-page textarea, .paper-page input[type="date"] { border-color: var(--border-color) !important; } +.paper-page .form-control:focus, .paper-page textarea:focus { border-color: var(--accent) !important; box-shadow: 0 0 0 3px var(--accent-soft) !important; } +/* One input border token (≥3:1 against the card) on every form */ +.paper-page input.form-control, .paper-page select.form-control, .paper-page textarea.form-control, +.paper-page input[type="text"], .paper-page input[type="search"], .paper-page input[type="url"], .paper-page input[type="date"], .paper-page textarea, +.claim-page input, .admin-page input:not([type="checkbox"]) { border: 1px solid var(--border-color) !important; } +.dark-mode .paper-page input.form-control, .dark-mode .paper-page textarea, .dark-mode .claim-page input, .dark-mode .admin-page input:not([type="checkbox"]) { border-color: #5A554D !important; } +.admin-page select.form-control { height: 36px !important; border: 1px solid var(--border-color) !important; } +/* One placeholder tone everywhere: clearly lighter than entered text */ +input::placeholder, textarea::placeholder, .form-control::placeholder, #sourceUrl-landing::placeholder, #terms::placeholder { color: #A39B8E !important; opacity: 1 !important; } +input.form-control[type="date"]::-webkit-date-and-time-value { text-align: left; margin: 0; min-height: 1.25em; } +input.form-control[type="date"]::-webkit-datetime-edit { padding: 0; } +/* Dark placeholders one step down (ink-faint), so they never pass for a typed value. */ +body.dark-mode .form-control::placeholder, body.dark-mode input::placeholder, body.dark-mode textarea::placeholder, body.dark-mode #sourceUrl-landing::placeholder, body.dark-mode #terms::placeholder { color: var(--ink-faint) !important; opacity: 1; } .settings-syntax { font-size: 12px; margin-top: 8px; } .settings-syntax summary { cursor: pointer; color: var(--link-color); min-height: 26px; } .settings-syntax p { margin: 8px 0; } .settings-checks { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 18px; padding: 4px 0; margin-bottom: 12px; } -.user-settings .settings-check { display: flex; gap: 9px; align-items: center; font-size: 13px; font-weight: 400; margin: 0; } +.user-settings .settings-check { display: flex; gap: 9px; align-items: center; font-weight: 400; margin: 0; } .user-settings .settings-check .form-check-input { position: static; width: 16px; height: 16px; margin: 0; flex: none; accent-color: var(--accent); } .settings-save { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; padding: 18px 0 22px; } .settings-save-status { color: var(--ink-muted); font-size: 12px; } .settings-save #save { margin-left: auto; min-width: 125px; } .settings-save-error { color: var(--status-error); flex-basis: 100%; } -.user-settings .settings-inline { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; } .user-settings .btn { font-size: 13px; min-height: 40px; padding: 9px 13px; } -.settings-inline .btn { flex-shrink: 0; } .user-settings #settings-quota { margin: 22px 0 16px; } .user-settings .quota-row { gap: 20px; } .user-settings .quota-item { padding: 0; background: transparent; border: 0; } @@ -8933,36 +8426,15 @@ body.dark-mode .preserve-dialog { background: #242320; color: #faf9f6; } .user-settings .quota-value { font-size: 13px; margin: 6px 0; } .user-settings .quota-value strong { font-size: 14px; } .user-settings .quota-percent, .user-settings .quota-remaining { font-size: 11px; } -.user-settings .settings-plan { background: var(--paper-card); border: 1px solid var(--border-color); border-radius: 6px; padding: 20px; margin: 20px 0 0; } -.user-settings .settings-plan h3 { font-size: 15px; margin: 0 0 10px; } -.user-settings .settings-plan > p { font-size: 13px; } -.settings-cycles { display: flex; flex-wrap: wrap; gap: 10px; border: 0; padding: 0; margin: 16px 0; } -.settings-cycles label { display: flex; align-items: center; gap: 8px; border: 1px solid var(--border-color); background: var(--paper-card); border-radius: 5px; padding: 12px; font-size: 13px; margin: 0; cursor: pointer; flex: 1; } -.settings-cycles label.selected { border-color: var(--accent); background: var(--accent-soft); } -.settings-cycles input { accent-color: var(--accent); } -.settings-addons { flex-direction: column; } -.settings-addons label { align-items: flex-start; } -.settings-addons small { color: var(--ink-muted); font-size: 12px; } .settings-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 16px; } .settings-notice { background: var(--paper-bg-alt); border: 1px solid var(--border-color); border-radius: 5px; padding: 14px 16px; margin: 16px 0; font-size: 13px; } .settings-notice p { margin: 6px 0 12px; } .settings-text-button { border: 0; background: transparent; color: var(--link-color); padding: 8px 0; font-size: 12px; } -.settings-pass { margin-top: 18px; } -.settings-pass label { display: block; font-size: 13px; margin-bottom: 8px; } -.settings-pass .btn { margin-top: 12px; } -.settings-purchase { padding: 12px 0; border-bottom: 1px solid var(--border-color); font-size: 13px; overflow-wrap: anywhere; } -.settings-purchase:last-child { border: 0; } -.settings-purchase > span { display: block; color: var(--ink-muted); margin-top: 4px; } -.settings-purchase-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; } -.settings-purchase-parts { margin: 6px 0 0; padding-left: 18px; font-size: 12px; color: var(--ink-muted); } .settings-status { display: inline-block; font-size: 12px; font-weight: 500; line-height: 18px; border-radius: 999px; padding: 1px 9px; background: var(--paper-bg-alt); color: var(--ink-muted); white-space: nowrap; } .settings-status.is-active { background: var(--accent-soft); color: var(--accent); box-shadow: inset 0 0 0 1px rgba(31, 106, 100, .3); } .settings-status.is-overdue, .settings-status.is-refunded, .settings-status.is-disputed { background: rgba(185, 28, 28, .08); color: #b91c1c; } body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-refunded, body.dark-mode .settings-status.is-disputed { background: rgba(248, 113, 113, .16); color: #f87171; } -.settings-badge { display: inline-block; margin-left: 6px; font-size: 10px; font-weight: 600; letter-spacing: .02em; border-radius: 999px; padding: 1px 7px; background: var(--accent-soft); border: 1px solid var(--accent); vertical-align: middle; } .user-settings .settings-comparison th:first-child { width: 22%; } -.settings-comparison thead .settings-badge { display: table; margin: 6px 0 0; white-space: nowrap; } -.user-settings .settings-subhead { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-muted); margin: 18px 0 4px; } .user-settings .paper-account-card { padding: 24px 0; border: 0; background: none; } .user-settings .paper-danger-zone { margin-top: 24px; } @media (max-width: 767px) { @@ -8971,12 +8443,13 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r .user-settings .settings-row > h2, .user-settings .settings-label { margin-top: 0; } .settings-nav { gap: 18px; justify-content: space-between; } .settings-nav button { text-align: left; font-size: 12px; max-width: 124px; } - .user-settings .settings-check { font-size: 12px; min-height: 28px; } .settings-save { gap: 8px; } .settings-save-status { font-size: 11px; } .settings-save #save { min-width: 120px; } .user-settings .quota-row { grid-template-columns: 1fr; } - .settings-cycles label { flex-basis: 100%; } +} +@media (max-width: 600px) { + .settings-nav button { white-space: nowrap; flex-shrink: 0; } } .user-settings .settings-save .draft-status { margin: 0; padding: 0; } .settings-delete-confirm { max-width: 480px; margin-top: 18px; } @@ -8984,20 +8457,155 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r .user-settings .quota-usage { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); } .user-settings .quota-usage .quota-item + .quota-item { border: 0; padding: 0; } .user-settings .quota-percent, .user-settings .quota-remaining { display: none; } -@media (max-width: 767px) { .user-settings .quota-usage { grid-template-columns: 1fr; } } -.settings-header-actions { display: flex; align-items: center; gap: 16px; } -.settings-header-actions > span { color: var(--ink-muted); font-size: 12px; } -.user-settings .settings-upgrade { color: var(--accent); border-color: var(--accent); background: transparent; } +@media (max-width: 767px) { .user-settings .quota-usage { grid-template-columns: 1fr; } +} .user-settings .settings-comparison { width: 100%; table-layout: fixed; margin: 16px 0 20px; font-size: 12px; } .settings-comparison th, .settings-comparison td { padding: 10px 8px; border-bottom: 1px solid var(--border-color); text-align: left; overflow-wrap: anywhere; vertical-align: top; } .settings-comparison th:first-child { width: 42%; padding-left: 0; } .settings-comparison tbody th { font-weight: 400; } .settings-comparison thead th { font-weight: 600; } -@media(max-width: 580px) { .settings-header-actions > span { display: none; } .settings-header-actions { gap: 8px; } .user-settings .settings-comparison { font-size: 11px; } } +@media (max-width: 580px) { .user-settings .settings-comparison { font-size: 11px; } +} +.user-settings .billing-summary .quota-track .quota-fill { border-radius: 3px; } +.user-settings .billing-summary .settings-notice { margin: 18px 0 0; } +.user-settings .billing-section { margin-top: 44px; } +.user-settings .billing-section-title:focus { outline: none; } +body.dark-mode .user-settings .billing-offer-pill { color: #1A1815; } +.user-settings .billing-offer h3 { font-size: 16px; font-weight: 600; margin: 0; } +.user-settings .billing-offer-list li { position: relative; padding-left: 22px; margin: 0 0 6px; } +.user-settings .billing-offer-list li::before { content: ""; position: absolute; left: 3px; top: 6px; width: 10px; height: 5px; border-left: 1.5px solid var(--ink-muted); border-bottom: 1.5px solid var(--ink-muted); transform: rotate(-45deg); } +.user-settings .billing-offer-head .billing-eyebrow { margin: 0; } +.user-settings .billing-buy-info .billing-offer-price { margin: 4px 0 8px; } +.user-settings .billing-buy-form .paper-field-label { margin: 0; } +.user-settings .billing-buy-form .billing-footnote { margin: 0; } +.user-settings .billing-buy:focus { outline: none; } +.user-settings .billing-buy h3 { font-size: 18px; font-weight: 600; margin: 0; } +.user-settings .billing-buy h3 span { font-size: 14px; font-weight: 400; color: var(--ink-muted); margin-left: 8px; } +.user-settings .billing-compare summary::-webkit-details-marker { display: none; } +.user-settings .billing-compare summary::before { content: ""; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(-45deg); transition: transform .15s; margin-right: 2px; } +.user-settings .billing-compare[open] summary::before { transform: rotate(45deg); } +.user-settings .billing-compare .settings-comparison td.is-recommended { border-bottom-color: transparent; } +.user-settings .billing-compare .settings-comparison th, .user-settings .billing-compare .settings-comparison td { padding: 10px 14px; border-bottom: 1px solid var(--border-color); } +.user-settings .billing-compare .settings-comparison tr > :first-child { padding-left: 0; } +.user-settings .billing-compare .settings-comparison thead th { font-size: 14px; font-weight: 600; vertical-align: bottom; } +.user-settings .billing-compare .settings-comparison thead th small { display: block; font-size: 12px; font-weight: 400; color: var(--ink-muted); margin-top: 2px; } +.user-settings .billing-compare .settings-comparison thead th.is-recommended { border-radius: 8px 8px 0 0; } +.user-settings .billing-compare .settings-comparison tbody tr:last-child td.is-recommended { border-radius: 0 0 8px 8px; } +.user-settings .billing-compare .settings-comparison tbody tr:last-child > * { border-bottom: 0; } +.user-settings .billing-history-head span:nth-child(n+3) { text-align: right; } +.user-settings .billing-history-main strong a { font-weight: 500; } +.user-settings .billing-history-term:empty::before { content: "—"; } +.user-settings .billing-history-paid { text-align: right; } +.user-settings .billing-history-paid small { display: block; color: var(--ink-muted); font-size: 12px; margin-top: 2px; } +.user-settings .billing-history-status { text-align: right; } +.user-settings .billing-manage p { margin: 3px 0 0; color: var(--ink-muted); font-size: 12px; line-height: 1.55; } +.user-settings .billing-addons { margin-top: 40px; } +.user-settings .billing-addon-rows li { display: grid; grid-template-columns: minmax(0, 1fr) 90px 48px; gap: 16px; align-items: center; padding: 11px 0; border-bottom: 1px solid var(--border-color); font-size: 13px; } +.user-settings .billing-addon-rows div span { color: var(--ink-muted); } +body.dark-mode .user-settings .billing-offer.is-recommended { border-color: rgba(124, 199, 190, .6); box-shadow: none; } +body.dark-mode .user-settings .billing-summary .quota-track { background: rgba(255, 255, 255, .2); } +@media (max-width: 900px) { + .user-settings .billing-addon-rows li { grid-template-columns: minmax(0, 1fr) auto auto; gap: 12px; } +} +.user-settings .settings-save #save:disabled:not(.is-saving), +.dark-mode .user-settings .settings-save #save:disabled:not(.is-saving) { background: var(--paper-bg-alt) !important; border-color: var(--border-color) !important; color: var(--ink-muted) !important; opacity: 1; cursor: not-allowed; box-shadow: none !important; } +.user-settings .settings-scope + form > .settings-row:first-child { padding-top: 0 !important; border-top: 0 !important; } +body .btn:is(:disabled,.disabled,[aria-disabled="true"]):not(.is-saving):not(.btn-link):not(.btn-icon-dots):not(.task-text-button), +body.dark-mode .btn:is(:disabled,.disabled,[aria-disabled="true"]):not(.is-saving):not(.btn-link):not(.btn-icon-dots):not(.task-text-button), +body .user-settings .settings-save #save:disabled:not(.is-saving), +body.dark-mode .user-settings .settings-save #save:disabled:not(.is-saving), +body .landing-url-row:has(>input:placeholder-shown)>.landing-continue, +body.dark-mode .landing-url-row:has(>input:placeholder-shown)>.landing-continue, +body .landing-url-row>.landing-continue[aria-disabled="true"]:not(:is(.landing-url-row:has(>input:not(:placeholder-shown))>*)), +body.dark-mode .landing-url-row>.landing-continue[aria-disabled="true"]:not(:is(.landing-url-row:has(>input:not(:placeholder-shown))>*)) { + background: var(--btn-disabled-bg) !important; + border-color: var(--btn-disabled-border) !important; + color: var(--btn-disabled-ink) !important; + opacity: 1 !important; + box-shadow: none !important; + filter: none !important; + cursor: not-allowed; +} +@media (max-width: 575px) { .landing-url-row { flex-direction: column; } +} +.landing-continue:disabled { box-shadow: none !important; } +.landing-continue:not(:disabled) { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; } +/* Settings: selects size to their options, textareas keep the full column */ +.settings-row select.form-control { max-width: 360px; } +input[type="date"].form-control::-webkit-datetime-edit { padding: 0; } +.settings-row > div:last-child > .settings-check, .settings-row > div:last-child > textarea { max-width: none !important; width: 100%; } +input[type="date"].form-control::-webkit-datetime-edit-fields-wrapper { padding: 0; } +input[type="date"].form-control::-webkit-calendar-picker-indicator { + width: 16px; + height: 16px; + padding: 0; + margin: 0 0 0 8px; + cursor: pointer; + opacity: 1; + background: none; + -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.4' stroke-linecap='round'%3E%3Crect x='2.2' y='3.2' width='11.6' height='10.6' rx='1.8'/%3E%3Cpath d='M2.2 6.6h11.6M5.4 1.8v2.6M10.6 1.8v2.6'/%3E%3C/svg%3E") center / 16px 16px no-repeat; + mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.4' stroke-linecap='round'%3E%3Crect x='2.2' y='3.2' width='11.6' height='10.6' rx='1.8'/%3E%3Cpath d='M2.2 6.6h11.6M5.4 1.8v2.6M10.6 1.8v2.6'/%3E%3C/svg%3E") center / 16px 16px no-repeat; + background-color: var(--ink-muted); +} +input[type="date"].form-control:hover::-webkit-calendar-picker-indicator { background-color: var(--accent); } +.dark-mode input[type="date"].form-control { color-scheme: dark; } +@media (max-width: 480px) { input#name.form-control, input#name.form-control::placeholder { text-overflow: ellipsis; } +} .navbar .nav-link.nav-upgrade { border: 1px solid var(--accent); border-radius: 5px; color: var(--accent) !important; padding: 7px 12px !important; margin-right: 12px; font-size: 12px; line-height: 1.5; } .navbar .nav-link.nav-upgrade:hover { background: var(--accent-soft); } -@media(max-width:991px) { .navbar .nav-link.nav-upgrade { display: inline-block; min-height: 44px; padding: 11px 14px !important; margin: 8px 0; } } - +@media (max-width:991px) { .navbar .nav-link.nav-upgrade { display: inline-block; min-height: 44px; padding: 11px 14px !important; margin: 8px 0; } +} +/* Secondary text a step darker */ +.navbar .nav-link:not(.active):not(.btn-signin) { color: var(--ink-soft) !important; } +@media (max-width: 991px) { + .navbar .nav-signin-m .fa-github { font-size: 15px; } +} +@media (max-width: 991.98px) { + .navbar .navbar-collapse .nav-link::before, .navbar .navbar-collapse .nav-link::after { display: none !important; } +} +@media (max-width: 991.98px) { + .navbar .navbar-collapse .user-chip img { width: 24px !important; height: 24px !important; margin: -3px 0 !important; } +} +@media (max-width: 991.98px) { + .navbar .navbar-collapse .user-menu .dropdown-item small { display: none !important; } +} +@media (max-width: 991.98px) { + .navbar .navbar-collapse .user-menu .dropdown-item span { display: inline !important; } +} +@media (max-width: 991.98px) { + .navbar .navbar-collapse .user-menu .dropdown-divider { margin: 6px 12px !important; } +} +@media (min-width: 992px) { .navbar .navbar-collapse .navbar-nav:last-child > .nav-item:last-child > .nav-link { margin-right: 0 !important; } +} +@media (max-width: 767px) { + .navbar .nav-theme-m::after, .navbar .nav-signin-m::after, .navbar .navbar-toggler::after, + .viewer-bar .vb-icon::after, .viewer-bar .vb-signin::after { content: ""; position: absolute; left: 50%; top: 50%; width: max(100%, 44px); height: 44px; transform: translate(-50%, -50%); } +} +.viewer-bar .acct { margin-left: 6px; } +@media (max-width: 767px) { + .vb-signin { padding: 0 10px !important; } +} +.viewer-bar .acct-menu { bottom: auto; left: auto; right: 0; top: calc(100% + 12px) !important; } +@media (max-width: 767px) { + .viewer-bar .vb-signin { gap: 6px !important; } +} +@media (min-width: 1280px) { + .viewer-bar a.vb-icon[href="/faq"] { gap: 6px; width: 32px !important; padding: 0 !important; } +} +@media (min-width: 1280px) { + .viewer-bar a.vb-icon[href="/faq"]::after { font: 500 13px var(--font-sans); color: var(--ink-soft); content: none !important; } +} +/* Viewer */ +.viewer-bar .vb-right { gap: 4px !important; } +@media (max-width: 767px) { .viewer-bar .vb-right { gap: 8px !important; } +} +.viewer-bar .vb-signin:hover { filter: brightness(.94); } +@media (min-width: 768px) { + .viewer-bar .vb-right { gap: 8px !important; } +} +@media (min-width: 768px) { + .viewer-bar .vb-icon { width: 32px !important; } +} @media (max-width: 600px) { .ov-cache .ov-performance-window { @@ -9052,17 +8660,14 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r -webkit-backdrop-filter: saturate(1.2) blur(8px); backdrop-filter: saturate(1.2) blur(8px); } -.dark-mode .explorer-content .file-card-head { background: color-mix(in srgb, var(--paper-card) 90%, transparent); } .explorer-content .file-card .file-content.markdown-body { - max-width: 880px; padding: 36px 32px 96px; - background: transparent !important; } .explorer-content .file-card .ace_editor { border-radius: 0; } .explorer-content .ace_editor.ace-chrome .ace_gutter, .explorer-content .ace_editor.ace-nord-dark .ace_gutter { background: var(--paper-card) !important; - border-right: 0; + border-right: 1px solid var(--border-soft) !important; } .explorer-content .ace_editor .ace_gutter-cell { padding-left: 20px; } .explorer-content .dir-card { border-bottom: 1px solid var(--border-soft); } @@ -9070,103 +8675,469 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r .explorer-content .dir-row { padding: 0 32px; } .explorer-content .dir-card + .file-card { margin-top: 0 !important; } @media (max-width: 767px) { - .explorer-content .file-card-head { padding: 6px 8px 6px 16px; min-height: 0; } + .explorer-content .file-card-head { + padding: 6px 8px 6px 16px; + row-gap: 6px; + flex-wrap: nowrap !important; + min-height: 52px !important; + padding-top: 6px !important; + padding-bottom: 6px !important; + } .explorer-content .file-card .file-content.markdown-body { padding: 20px 16px 72px; } - .explorer-content .ace_editor .ace_gutter-cell { padding-left: 8px; } + .explorer-content .ace_editor .ace_gutter-cell { + padding-left: 6px !important; + padding-right: 6px !important; + } .explorer-content .dir-card-head, .explorer-content .dir-row { padding-left: 16px; padding-right: 16px; } } +.file-card-head .btn.btn-symbols { gap: 6px; padding: 0 10px; color: var(--ink-soft); font-weight: 500; } +@media (max-width: 767px) { + .file-card.is-code.no-wrap .ace_scroller { + -webkit-mask-image: none !important; + mask-image: none !important; + } +} +@media (min-width: 768px) { + .explorer-content .file-card .file-content.markdown-body { + margin: 0 auto !important; + padding-left: 40px !important; + padding-right: 40px !important; + max-width: 920px; + } +} +.ace_editor .ace_marker-layer .ace_redacted { + position: absolute; + mix-blend-mode: multiply; +} +.dark-mode .ace_editor .ace_marker-layer .ace_redacted { mix-blend-mode: screen; } +.dark-mode .ace_editor .ace_marker-layer .ace_redacted, .dark-mode .ace-nord-dark .ace_marker-layer .ace_redacted { background: rgba(124, 199, 190, .32) !important; box-shadow: inset 0 0 0 1px rgba(124, 199, 190, .65) !important; } +/* Find matches: warm yellow (teal now means redaction only) */ +.ace_editor .ace_marker-layer .ace_selected-word { border-radius: 2px; } +.ace_editor.ace-chrome .ace_marker-layer .ace_selection { background: #F2CC60 !important; } +.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection { background: rgba(242, 204, 96, .55) !important; } +/* Redaction marker now sits in front of the text: translucent teal turns the term teal */ +.ace_editor .ace_marker-layer .ace_redacted { border-radius: 3px; } +.dark-mode .ace_editor .ace_marker-layer .ace_redacted { background: rgba(124,199,190,.26) !important; box-shadow: inset 0 0 0 1px rgba(124,199,190,.6) !important; } +.ace_editor .ace_text-layer .ace_redacted::after { + position: absolute; + top: 50%; + font: 700 9.5px/1 var(--font-sans, Inter, sans-serif); + color: var(--slot-num); + text-align: center !important; + left: 50% !important; + right: auto !important; + transform: translate(-50%, -50%) !important; + padding: 1px 5px !important; + border-radius: 3px; + background: var(--slot-bg); + font-size: 11px !important; + line-height: 1.2 !important; +} +.dark-mode .ace_editor .ace_marker-layer .ace_selection.ace_br15 { box-shadow: inset 0 0 0 1px rgba(240, 200, 90, .7) !important; } +.ace_editor.ace-chrome .ace_marker-layer .ace_selection.ace_br15 { box-shadow: inset 0 0 0 1px rgba(170, 115, 15, .75) !important; border-radius: 3px !important; } +.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection.ace_br15 { box-shadow: inset 0 0 0 1px rgba(240, 200, 90, .7) !important; border-radius: 3px !important; } +@media (max-width: 767px) { + .file-card.is-code.no-wrap { position: relative; } + .explorer-content .file-card-head .file-card-meta { display: none !important; } +} +@media (max-width: 767px) { + .file-card.is-code.no-wrap::before { + position: absolute; + right: 12px; + bottom: 14px; + z-index: 25; + padding: 5px 10px; + border-radius: 999px; + background: color-mix(in srgb, var(--color) 82%, transparent); + color: var(--canvas-bg-color); + font: 600 12px/1 var(--font-sans); + pointer-events: none; + box-shadow: 0 4px 14px rgba(0,0,0,.18); + } +} +.explorer-content .file-card .reading-layout .file-content.markdown-body { padding-left: 0 !important; padding-right: 0 !important; } +.reading-layout .markdown-body h1 { + font-weight: 600 !important; + border-bottom: 0 !important; + margin-bottom: 12px !important; + letter-spacing: -.015em; + font-size: 34px !important; +} +.reading-layout .markdown-body h2 { font-size: 24px !important; font-weight: 600 !important; letter-spacing: -0.01em; border-bottom: 0 !important; margin-top: 44px !important; padding-bottom: 0 !important; scroll-margin-top: 72px; } +.reading-layout .markdown-body h3 { font-size: 18px !important; margin-top: 28px !important; scroll-margin-top: 72px; } +.reading-layout .markdown-body>p:first-of-type { font-size: inherit !important; color: inherit !important; } +@media (max-width: 767px) { .reading-layout .markdown-body h2 { font-size: 20px !important; } +} +/* Markdown: more space above headings than below */ +.markdown-body h2 { margin-bottom: 12px !important; } +.explorer-content .file-card-media .file-card-path + .file-card-meta { margin-left: 8px; } +.file-card-media .tb-file { margin-left: 0; } +.explorer-content notebook .nb-cell + .nb-cell { margin-top: 16px; } +.explorer-content notebook .nb-markdown-cell > :first-child { margin-top: 0; } +.explorer-content notebook .nb-markdown-cell > :last-child { margin-bottom: 0; } +.explorer-content notebook .nb-markdown-cell + .nb-markdown-cell, .explorer-content notebook .nb-code-cell + .nb-markdown-cell { margin-top: 28px; } +.explorer-content notebook.markdown-body h1 { font-size: 26px; border: 0; padding: 0; margin: 0 0 8px; } +.explorer-content notebook.markdown-body h2 { font-size: 20px; border: 0; padding: 0; margin: 0 0 6px; } +.explorer-content notebook .nb-input pre { + margin: 0; + padding: 10px 14px; + font: 13px/20px var(--font-mono); + background: var(--main-bg-color) !important; + border: 1px solid var(--border-color); + border-radius: var(--radius-control); + overflow-x: auto; + scrollbar-width: none; +} +.explorer-content notebook .nb-input pre code { font: inherit; background: none; padding: 0; } +.explorer-content notebook .nb-output table { display: table; width: auto; margin: 0; border: 1px solid var(--border-color) !important; border-collapse: collapse; font-size: 13px; font-variant-numeric: tabular-nums; } +.explorer-content notebook .nb-output th, .explorer-content notebook .nb-output td { border: 0 !important; border-bottom: 1px solid var(--border-color) !important; padding: 6px 12px !important; } +.explorer-content notebook .nb-output td { text-align: right; } +.explorer-content notebook .nb-output thead th { background: var(--main-bg-color); color: var(--ink-soft); font-weight: 600; text-align: right; } +.explorer-content notebook .nb-output thead th:first-child, .explorer-content notebook .nb-output tbody th { text-align: left; } +.explorer-content notebook .nb-output img { display: block; max-width: min(100%, 720px); height: auto; background: #fff; border-radius: 4px; box-shadow: 0 0 0 1px var(--border-color); } +/* Notebook: prompts sit outside the output box, so the box must not clip them. */ +.explorer-content notebook .nb-html-output, .explorer-content notebook .nb-image-output { overflow-x: auto; } +/* The metadata follows the file name whatever actions the type has. */ +.explorer-content .file-card-media .file-card-actions { margin-left: auto; } +@media (max-width: 767px) { + .explorer-content .file-card.is-code .ace_gutter-cell { padding-left: 8px !important; padding-right: 10px !important; text-align: right; } +} +.explorer-content notebook .nb-input pre::-webkit-scrollbar { display: none; } +.explorer-content notebook .nb-code-scroll.is-overflowing > pre { padding-bottom: 14px; } +.explorer-content notebook .nb-code-scroll::after { + content: ""; + position: absolute; + top: 1px; + right: 1px; + bottom: 1px; + width: 48px; + pointer-events: none; + opacity: 0; + transition: opacity .15s; + border-radius: 0 var(--radius-control) var(--radius-control) 0; + background: linear-gradient(to right, transparent, var(--main-bg-color) 80%); +} +.explorer-content notebook .nb-code-scroll.is-overflowing:not(.is-at-end)::after { opacity: 1; } +.file-card-media .media-stage.is-audio audio { width: min(100%, 560px); } +.dark-mode .file-card-media .media-stage .image-content { box-shadow: 0 0 0 1px var(--border-color), 0 2px 12px rgba(0, 0, 0, .4); } +/* PDF: the page toolbar is a second, quieter row under the file header. */ +.file-card-media pdfviewer { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; padding: 0; } +.file-card-media .pdf-viewer-page canvas { border-radius: 2px; box-shadow: 0 0 0 1px var(--border-color), 0 2px 10px rgba(40, 32, 24, .08); } +@media (max-width: 767px) { + .file-card-media .file-card-head .mobile-sub > span + span::before { content: "·"; margin: 0 6px; color: var(--ink-muted); } +} +/* Viewer bar: FAQ and Report a bug are icon-only ghost buttons (tooltips carry the label) */ +.markdown-body h3 { margin-top: 32px !important; margin-bottom: 8px !important; } +.markdown-body h4 { margin-top: 24px !important; margin-bottom: 6px !important; color: var(--ink-soft) !important; } +.markdown-body h1 mark.redact-chip i, .markdown-body h2 mark.redact-chip i, .markdown-body h3 mark.redact-chip i { font-size: .62em !important; } +/* A slot in a code block keeps the width of the XXXX-n it replaces and sits on the text line. */ +.markdown-body pre code mark.redact-chip, +.dark-mode .markdown-body pre code mark.redact-chip, +pre code mark.redact-chip { + display: inline-block !important; + box-sizing: border-box !important; + overflow: hidden !important; + width: var(--slot-ch, 6ch) !important; + min-width: 0 !important; + height: 1.2em !important; + margin: 0 !important; + vertical-align: -.24em !important; + font-size: inherit !important; + line-height: 1.2em !important; + text-align: center !important; + padding: 0 !important; +} +.markdown-body pre code mark.redact-chip i, pre code mark.redact-chip i { + line-height: inherit !important; + vertical-align: top !important; + display: inline-block; + padding: 0 5px; + border-radius: 3px; + background: var(--slot-bg); + font-size: 11px !important; + line-height: 1.35; +} + +/* Phones: drop the scroll pill; the edge fade is the cue */ +.file-card.is-code.no-wrap::before { content: none !important; display: none !important; } +@media (max-width: 767px) { + .file-card.is-code.no-wrap .file-card-body { position: relative; } +} +@media (max-width: 767px) { + .file-card.is-code.no-wrap .file-card-body::after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + z-index: 8; + pointer-events: none; + transition: opacity .15s; + border-right: 0 !important; + width: 26px; + background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(250,249,246,.92) 60%, #EAE5DC 100%) !important; + box-shadow: inset -1px 0 0 rgba(40,32,24,.2) !important; + } +} +@media (max-width: 767px) { + .dark-mode .file-card.is-code.no-wrap .file-card-body::after { + border-right-color: rgba(255,255,255,.1); + background: linear-gradient(to right, rgba(20,19,17,0) 0%, rgba(20,19,17,.9) 55%, #2A2622 100%) !important; + box-shadow: inset -2px 0 0 rgba(255,255,255,.18) !important; + } +} +@media (max-width: 767px) { + .file-card.is-code.no-wrap .file-card-body::before { + content: "Scroll \2192"; + position: absolute; + right: 10px; + bottom: 14px; + z-index: 9; + font: 500 12px/1 var(--font-sans); + color: var(--ink-soft); + background: var(--paper-card); + box-shadow: 0 0 0 1px var(--border-color), 0 2px 6px rgba(0,0,0,.06); + border-radius: 999px; + padding: 6px 10px; + pointer-events: none; + animation: scrollHintOut .4s ease 2.6s forwards; + display: none !important; + } +} +@media (max-width: 767px) { + .file-card.is-code .ace_scroller { left: 30px !important; } +} +.file-card:has(.md-find-bar) .readme-toc { top: 120px !important; } +@media (min-width: 1200px) { .readme-toc, .file-card:has(.md-find-bar) .readme-toc { top: 120px !important; } +} +@media (max-width: 767px) { .file-card.at-right-edge .file-card-body::after { opacity: 0 !important; } +} +.file-card:not(.is-code) .file-card-head { position: sticky; } +.dark-mode .readme-toc a.lvl-3:not(.is-active) { color: #ADA69B !important; } +.readme-toc a.lvl-3 { opacity: .9; font-weight: 400 !important; } +/* Outline: active section */ +.readme-toc a.is-active { box-shadow: inset 2px 0 0 var(--accent) !important; } +@media (min-width: 1200px) { + .readme-toc { padding-top: 0 !important; } +} +/* Outline: parent/child hierarchy */ +.readme-toc a.lvl-2 + a.lvl-2, .readme-toc a.lvl-3 + a.lvl-2 { margin-top: 4px; } +@media (max-width: 1180px) { .file-card-head .btn-symbols .btn-find-label { display: none; } +} +@media (max-width: 1180px) { .file-card-head .btn-symbols { width: 32px; padding: 0 !important; } +} +@media (max-width: 767px) { + .file-card-head .btn.btn-icon-only { color: var(--color) !important; } +} +@media (max-width: 767px) { + .file-card-head .file-card-meta .meta-extra { display: none !important; } +} +@media (max-width: 767px) { + .file-card-head .tb-file, + .file-card-head .symbols, + .file-card-head .btn-find, + .file-card-head .btn-goto, + .file-card-head .btn-toggle, + .file-card-head .view-switch + .file-card-actions .tb-file { display: none !important; } +} +.symbols { position: relative; } +@media (max-width: 767px) { + .file-card-head>.view-switch { + order: 5 !important; + display: grid !important; + grid-template-columns: 1fr 1fr; + } +} +@media (max-width: 767px) { + .file-card-head .file-card-meta { flex-basis: auto !important; flex: 1 1 auto; margin: 0 !important; } +} +@media (max-width: 767px) { + .file-card-head .file-card-path { + flex: 1 1 auto !important; + grid-template-rows: auto auto; + flex-wrap: nowrap !important; + gap: 8px !important; + grid-template-columns: auto minmax(0, 1fr); + column-gap: 12px !important; + row-gap: 0 !important; + } +} +@media (max-width: 767px) { + .file-card-head .file-card-actions { order: 1; } +} +/* Breadcrumb root is navigation, not status: neutral */ +.file-card-path .breadcrumb-root a { color: var(--ink-soft) !important; } +/* Snapshot pill in the UI face */ +.file-card-path .breadcrumb-root a:hover { color: var(--color) !important; text-decoration: underline; } +/* Toolbar path aligns with the content's left edge; no "repository" root */ +.breadcrumb-root { display: none !important; } +.breadcrumb-root + .breadcrumb-item::before { display: none !important; } +.file-card-head .card-files-btn .ui-icon { width: 19px; height: 19px; } +@media (max-width: 767px) { + .file-card-actions > .tb-toc-m, .file-card-head .tb-toc-m { order: 1 !important; } +} +@media (max-width: 767px) { + .tb-toc-m:has(.tb-menu)::before { position: fixed; inset: 0; z-index: 40; } +} +.tb-toc-m:has(.tb-menu)::before, .tb-more:has(.tb-menu)::before { pointer-events: none; background: rgba(26,24,21,.1) !important; content: none !important; } +.dark-mode .tb-toc-m:has(.tb-menu)::before, .dark-mode .tb-more:has(.tb-menu)::before { background: rgba(0,0,0,.3) !important; } +@media (max-width: 767px) { + .file-card-actions > .tb-copy-m, .file-card-head .tb-copy-m { order: 2 !important; } +} +@media (max-width: 767px) { + .file-card-actions > .tb-more, .file-card-head .tb-more { order: 3 !important; } +} +.file-card-actions>.tb-file:first-child { border-left: 0; padding-left: 0; margin-left: 0; } +.tb-more { position: relative; display: none; } +@media (max-width: 767px) { + .tb-more { display: inline-flex; } +} +@media (max-width: 767px) { .tb-more:has(.tb-menu)::before { position: fixed; inset: 0; z-index: 40; } +} +@media (max-width: 767px) { .tb-menu { z-index: 41 !important; } +} +.tb-menu > button.tb-menu-toc.lvl-2 { padding-left: 40px !important; } +.tb-menu > button.tb-menu-toc.lvl-3 { padding-left: 56px !important; } +.tb-menu [role="menuitemcheckbox"][aria-checked="true"] .ui-icon { color: var(--accent); } +/* Toggles: one "on" treatment */ +.file-card-head .btn-find:focus:not(:focus-visible) { background: transparent !important; } +body .btn:is(:disabled, .disabled, [aria-disabled="true"]):not(.is-saving) .ui-icon { opacity: .8; } + +/* Tool icons: same size and hit area as the group */ +.file-card-head .btn-find, .file-card-head .btn-goto, .file-card-head .btn-toggle { width: 32px !important; height: 32px !important; } +@media (max-width: 767px) { + .file-card-head .file-card-path .paths { grid-column: 2; } +} +@media (max-width: 767px) { .file-card-head>button:first-child { margin-top: 2px !important; } +} +@media (min-width: 768px) { .file-card-head .btn-goto { order: 1; } +} +@media (min-width: 768px) { .file-card-head .btn-toggle { order: 2; } +} +@media (min-width: 768px) { .file-card-head .btn-find { order: 3; } +} +@media (min-width: 768px) { .file-card-head .tb-file { order: 4; } +} +@media (min-width: 768px) { .file-card-head .tb-copy-m, .file-card-head .tb-more-btn { order: 5; } +} +.tb-copy-m { display: none !important; } +@media (max-width: 767px) { + .tb-copy-m { display: inline-flex !important; width: 36px !important; height: 34px !important; } +} +@media (max-width: 767px) { + .file-card-head .mobile-sub b::before { content: none !important; display: none !important; } +} +@media (max-width: 767px) { + .file-card-head .file-card-path > .copy-path-btn { grid-column: 3; grid-row: 1 / 3; } +} +@media (min-width: 768px) { + .file-card-head .tb-view > .btn:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; } +} +@media (min-width: 768px) { + .file-card-head .tb-file::before { display: none !important; } +} + +.tb-file { + display: inline-flex !important; + align-items: stretch; + gap: 0 !important; + margin-left: 8px; + padding-left: 0 !important; + border: 1px solid var(--border-color) !important; + border-radius: var(--radius-control); + overflow: hidden; +} +@media (max-width: 767px) { + .file-card-head .file-card-path > .mobile-sub > span + span::before { content: "·" !important; margin: 0 6px !important; color: var(--ink-muted); } +} +@media (max-width: 767px) { + .file-card-head .file-card-path > .mobile-sub > span:has(+ b)::after { content: "·" !important; margin: 0 6px !important; color: var(--ink-muted); opacity: 1 !important; } +} +@media (max-width: 767px) { + .file-card-head .file-card-path > .mobile-sub.ms > .ms-item::after { content: none !important; display: none; } +} +@media (max-width: 767px) { + .file-card-head .file-card-path > .mobile-sub.ms > .ms-item::before { content: none !important; display: none !important; } +} +@media (max-width: 767px) { + .file-card-head .file-card-path > .mobile-sub.ms > .ms-item + .ms-item::before { content: "·" !important; display: inline !important; margin: 0 6px !important; color: var(--ink-muted); width: auto !important; height: auto !important; background: none !important; box-shadow: none !important; } +} +@media (max-width: 767px) { + .file-card-head .file-card-path>.mobile-sub.ms>.ms-item:first-child:not(.ms-redact) { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + flex-shrink: 0 !important; + } +} +@media (max-width: 767px) { + .mobile-sub b { + height: 18px; + border-radius: 999px; + display: inline-flex !important; + align-items: center; + gap: 6px !important; + margin-left: 0 !important; + font-size: 12.5px !important; + } +} +@media (max-width: 767px) { + .mobile-sub > b::before { display: none; } +} +@media (max-width: 767px) { + .mobile-sub b::before { + content: "" !important; + display: inline-block !important; + width: 14px !important; + height: 8px !important; + margin: 0 !important; + } +} +@media (max-width: 767px) { + .mobile-sub span:has(+b)::after { opacity: .7; content: none !important; } +} +@media (max-width: 767px) { + .mobile-sub > span + span::before, .mobile-sub span:has(+ b)::after { margin: 0 6px !important; } +} +@media (max-width: 767px) { + .file-card-head .file-card-path > .breadcrumb > li:last-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +} +@media (max-width: 767px) { + .file-card-path .paths .breadcrumb-item:last-child { font-size: 15px; overflow: hidden; text-overflow: ellipsis; } +} +@media (max-width: 767px) { + /* Toolbar: Files + name on row 1; view switch and meta on row 2 */ + .file-card-path { flex: 1 1 auto; gap: 10px; } +} +@media (max-width: 767px) { + .file-card-path .paths { flex: 1 1 auto; min-width: 0; } +} /* ===== Viewer app shell ===== No site header on repository pages: the sidebar carries the brand, search, tree and site links; the main pane has a single sticky toolbar. */ -.leftCol-brand { - display: flex; - align-items: center; - justify-content: space-between; - gap: 8px; - min-height: 52px; - padding: 0 14px; - border-bottom: 1px solid var(--border-soft); -} -.leftCol-logo { - font-family: var(--font-serif); - font-size: 19px; - letter-spacing: -0.01em; - color: var(--color) !important; - text-decoration: none !important; - white-space: nowrap; -} -.leftCol-logo em { font-style: italic; } -.leftCol-badge { - display: inline-flex; - align-items: center; - gap: 5px; - padding: 2px 8px 2px 6px; - border-radius: 999px; - background: var(--hover-bg-color); - font-size: 11.5px; - font-weight: 500; - color: var(--ink-soft); - white-space: nowrap; -} -.leftCol-badge .ui-icon { width: 13px; height: 13px; color: var(--status-ready); } -.leftCol-search { padding-top: 12px; } -.leftCol-links { - display: flex; - align-items: center; - gap: 14px; - margin: 0 0 10px; - font-size: 13px; -} -.leftCol-links a { color: var(--ink-soft); text-decoration: none; } -.leftCol-links a:hover { color: var(--color); text-decoration: underline; text-underline-offset: 3px; } -.leftCol-theme { - display: inline-flex; - align-items: center; - justify-content: center; - width: 28px; - height: 28px; - margin-left: auto; - border: 0; - border-radius: var(--radius-control); - background: none; - color: var(--ink-soft); - cursor: pointer; -} -.leftCol-theme:hover { background: var(--hover-bg-color); color: var(--color); } -.leftCol-theme .ui-icon { width: 16px; height: 16px; } -.leftCol-foot .leftCol-zip { display: flex; } /* Files button in the toolbar: phones/tablets always, desktop only when the tree is hidden. */ .card-files-btn { display: none !important; } -@media (max-width: 991px) { .card-files-btn { display: inline-flex !important; } } -.card-files-btn.is-needed { display: inline-flex !important; } +@media (max-width: 991px) { .card-files-btn { display: inline-flex !important; } +} +.card-files-btn.is-needed { display: none !important; } @media (max-width: 991px) { - .leftCol-brand { padding-right: 60px; } - .leftCol-head { position: absolute; top: 0; right: 0; z-index: 2; padding: 4px 6px !important; border: 0 !important; background: transparent !important; } + .leftCol-head { position: absolute; top: 0; z-index: 2; border: 0 !important; background: transparent !important; } .leftCol-head .leftCol-eyebrow { display: none; } } @media (max-width: 991px) { .leftCol-head .leftCol-close { width: 40px; height: 40px; border: 0 !important; background: transparent !important; border-radius: var(--radius-control); color: var(--ink-soft); } .leftCol-head .leftCol-close:hover { background: var(--hover-bg-color) !important; color: var(--color); } - .leftCol-brand { min-height: 52px; } } - -.leftCol-links .leftCol-donate { display: inline-flex; align-items: center; gap: 5px; } -.leftCol-links .leftCol-donate .ui-icon { width: 14px; height: 14px; } -.leftCol-links .leftCol-donate:hover { color: var(--status-error); text-decoration: none; } -.leftCol-links .leftCol-donate:hover .ui-icon { fill: currentColor; } /* Selection marker sits inside the row's fill, not on its edge. */ -.files .file.active > a { border-radius: var(--radius-control) !important; } -.files .file.active > a::before { left: 4px !important; top: 7px !important; bottom: 7px !important; width: 3px !important; border-radius: 2px !important; } /* Drawer scrim: flat, no blur behind the code. */ -.leftCol-backdrop { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; background: rgba(20, 18, 16, 0.45) !important; } -@media (max-width: 991px) { .leftCol-head { right: 6px !important; } } +.leftCol-backdrop { background: rgba(20, 18, 16, 0.45) !important; } -/* ===== Round 18 ===== - Symbols outline, docked find bar, one-row sidebar footer, stronger syntax - contrast, one dark surface family, equal stat columns. */ -.symbols { position: relative; } -.file-card-head .btn.btn-symbols { gap: 6px; padding: 0 10px; color: var(--ink-soft); font-weight: 500; } +/* ===== Component refinements ===== + Rules below depend on cascade order: they refine the sections above at + equal specificity, so they must stay after them. Grouped by area. */ + +/* ----- File viewer ----- */ .symbols-menu { position: absolute; top: calc(100% + 6px); @@ -9206,174 +9177,34 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r .dark-mode .symbols-kind.is-class { color: #F2897D; } .symbols-name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: var(--font-mono); font-size: 12.5px; } .symbols-line { font-size: 12px; color: var(--ink-muted); font-variant-numeric: tabular-nums; } -@media (max-width: 1180px) { .file-card-head .btn-symbols .btn-find-label { display: none; } .file-card-head .btn-symbols { width: 32px; padding: 0 !important; } } /* Find: docked strip under the toolbar, full width of the code */ .ace_search { - top: 0 !important; - left: 0 !important; - right: 0 !important; border: 0 !important; - border-bottom: 1px solid var(--border-soft) !important; border-radius: 0 !important; - box-shadow: none !important; - padding: 8px 12px 8px 8px !important; - background: var(--paper-card) !important; } .ace_search_field { border-color: var(--border-color) !important; } -.ace_search .ace_button { border: 1px solid transparent !important; } -.ace_search .ace_button.checked { background: var(--accent-soft) !important; color: var(--accent) !important; border-color: color-mix(in srgb, var(--accent) 40%, transparent) !important; } -.ace_search_counter { color: var(--ink-soft) !important; font-size: 13px !important; } -.ace_editor .ace_marker-layer .ace_selected-word { background: var(--accent-soft) !important; } -.ace_editor.ace-chrome .ace_marker-layer .ace_selection { background: color-mix(in srgb, var(--accent) 28%, transparent) !important; box-shadow: 0 0 0 1px var(--accent) !important; } -.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection { background: color-mix(in srgb, var(--accent) 34%, transparent) !important; box-shadow: 0 0 0 1px var(--accent) !important; } - -/* Sidebar footer: one row of links, then the snapshot date */ -.leftCol-foot { padding: 10px 14px 12px; } -.leftCol-links { margin: 0 0 6px; gap: 12px; } -.leftCol-repo-actions { display: inline-flex; } -.leftCol-project-header .leftCol-hide { display: inline-flex; } -@media (max-width: 991px) { .leftCol-project-header button.leftCol-hide { display: none; } } - -/* Syntax: clearer separation between token types in light mode */ -.ace-chrome .ace_string { color: #11704F !important; } -.ace-chrome .ace_entity.ace_name.ace_function, .ace-chrome .ace_support.ace_function { color: #5B3DC2 !important; } -.ace-chrome .ace_keyword, .ace-chrome .ace_storage { color: #B02F22 !important; } -.ace-chrome .ace_comment { color: #6F6A61 !important; } -.ace-chrome .ace_paren, .ace-chrome .ace_punctuation, .ace-chrome .ace_keyword.ace_operator { color: #5C574F !important; } +.ace_search .ace_button { + width: 28px !important; + border: 1px solid var(--border-color) !important; + font-weight: 600 !important; +} /* Dark: the viewer uses the same surfaces as the rest of the site */ .dark-mode .explorer-main, .dark-mode .explorer-content, .dark-mode .ace_editor.ace-nord-dark, .dark-mode .explorer-content .ace_editor.ace-nord-dark .ace_gutter { background: var(--canvas-bg-color) !important; } + +/* Syntax: clearer separation between token types in light mode */ .dark-mode .explorer-content .file-card-head, .dark-mode .ace_search { background: color-mix(in srgb, var(--canvas-bg-color) 92%, transparent) !important; } -.dark-mode .leftCol { background: var(--sidebar-bg-color); } + +/* Sidebar footer: one row of links, then the snapshot date */ .dark-mode .symbols-menu { background: #22201C; } - -/* Landing stats: four equal columns, calmer numerals */ -.paper-stats-grid { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } -.paper-stats-grid .paper-stat-card { padding-left: 24px !important; padding-right: 24px !important; } -.paper-stats-grid .paper-stat-card:first-child { padding-left: 0 !important; } -.paper-stat-value { font-size: 40px !important; } -.paper-stats-grid .paper-stat-card { margin-right: 0 !important; } -.paper-stats-grid .paper-stat-card:last-child { border-right: 0; padding-right: 0 !important; } -@media (max-width: 767px) { .paper-stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } .paper-stats-grid .paper-stat-card:nth-child(odd) { padding-left: 0 !important; } } - -.leftCol-foot, .dark-mode .leftCol-foot { background: transparent !important; } -.paper-faq-toc nav a:hover, .paper-faq-toc nav a.active { border-left-color: var(--accent) !important; } - -/* ===== Round 19 ===== */ -.card-files-label { display: none; } -@media (max-width: 991px) { - .file-card-head .card-files-btn { width: auto !important; padding: 0 10px !important; gap: 6px; border: 1px solid var(--border-color) !important; color: var(--color) !important; } - .card-files-label { display: inline; font-size: 13px; font-weight: 500; } -} -@media (max-width: 767px) { - .file-card-head .btn.btn-icon-only { color: var(--color) !important; } - .file-card-head .file-card-meta .meta-extra { display: none !important; } - .file-card.is-code.no-wrap::after { width: 64px !important; } -} -/* Toggles: an accent pressed state, distinct from hover */ -.btn.btn-ghost.is-on { color: var(--accent) !important; background: var(--accent-soft) !important; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent) !important; } -/* Gutter: hairline divider so numbers sit in their own column */ -.explorer-content .ace_editor.ace-chrome .ace_gutter, -.explorer-content .ace_editor.ace-nord-dark .ace_gutter { border-right: 1px solid var(--border-soft) !important; } +.card-files-label { display: none !important; } /* Find: visible toggle states, GitHub-style yellow matches */ -.ace_search .ace_button { width: 28px !important; height: 28px !important; border: 1px solid var(--border-color) !important; color: var(--ink-soft) !important; font-size: 12px !important; } -.ace_search .ace_button.checked { background: var(--accent-soft) !important; color: var(--accent) !important; border-color: var(--accent) !important; } .ace_search_counter { margin-left: 2px !important; } -.ace_editor .ace_marker-layer .ace_selected-word { background: rgba(242, 204, 96, 0.38) !important; box-shadow: none !important; } -.ace_editor.ace-chrome .ace_marker-layer .ace_selection, -.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection { background: #F2CC60 !important; box-shadow: 0 0 0 1px #C69026 !important; } -.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection { background: rgba(242, 204, 96, 0.55) !important; } -/* README: centred reading column in the pane */ -.explorer-content .file-card .file-content.markdown-body { margin: 0 auto !important; } -/* Sidebar ZIP: labelled */ -.leftCol-project-header .leftCol-zipbtn { width: auto !important; gap: 4px; padding: 0 6px; font-size: 11.5px; font-weight: 600; letter-spacing: .02em; } -.leftCol-project-header .leftCol-zipbtn .ui-icon { width: 13px; height: 13px; } - -/* ===== Round 20: repository panel, labelled toolbar, phone overflow menu ===== */ -.leftCol-brand { justify-content: space-between; } -.repo-panel { - display: grid; - gap: 8px; - padding: 14px 14px 12px; - border-bottom: 1px solid var(--border-soft); -} -.repo-panel-title { - display: flex; - align-items: center; - gap: 8px; - min-width: 0; - font-size: 14px; - font-weight: 600; - color: var(--color); -} -.repo-panel-title span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.repo-panel-title .ui-icon { width: 16px; height: 16px; flex-shrink: 0; color: var(--ink-muted); } -.repo-panel-meta { - display: flex; - flex-wrap: wrap; - align-items: center; - gap: 4px 10px; - font-size: 12.5px; - color: var(--ink-soft); -} -.repo-panel-meta .last-update { font: inherit !important; color: inherit !important; padding: 0; border: 0; } -.repo-panel-meta > span + span::before { content: "·"; margin-right: 10px; color: var(--ink-faint); } -.repo-panel-meta > .repo-panel-badge + span::before { content: none; } -.repo-panel-badge { - display: inline-flex; - align-items: center; - gap: 4px; - padding: 1px 8px 1px 6px; - border-radius: 999px; - background: color-mix(in srgb, var(--status-ready) 12%, transparent); - color: var(--status-ready); - font-size: 11.5px; - font-weight: 600; -} -.repo-panel-badge .ui-icon { width: 12px; height: 12px; } -.repo-panel-zip { - display: inline-flex; - align-items: center; - justify-content: center; - gap: 6px; - height: 32px; - border: 1px solid var(--border-color); - border-radius: var(--radius-control); - background: var(--paper-card); - font-size: 13px; - font-weight: 500; - color: var(--color) !important; - text-decoration: none !important; -} -.repo-panel-zip:hover { background: var(--hover-bg-color); border-color: var(--ink-faint); } -.repo-panel-zip .ui-icon { width: 15px; height: 15px; } -.dark-mode .repo-panel-zip { background: transparent; } -.leftCol-project-header { display: none !important; } -.leftCol-search { padding-top: 12px; padding-bottom: 4px; } - -.tb-file { display: inline-flex; align-items: center; gap: 4px; margin-left: 6px; padding-left: 10px; border-left: 1px solid var(--border-color); } -.file-card-head .btn.tb-btn { - height: 32px; - gap: 6px; - padding: 0 12px !important; - border: 1px solid var(--border-color) !important; - border-radius: var(--radius-control) !important; - background: var(--paper-card) !important; - color: var(--color) !important; - font-size: 13px; - font-weight: 500; -} -.file-card-head .btn.tb-btn:hover { background: var(--hover-bg-color) !important; border-color: var(--ink-faint) !important; } -.file-card-head .btn.tb-btn .ui-icon { width: 15px; height: 15px; } -.file-card-head .btn.tb-btn-icon { width: 32px; padding: 0 !important; justify-content: center; } -.dark-mode .file-card-head .btn.tb-btn { background: transparent !important; } -.file-card-actions > .tb-file:first-child { border-left: 0; padding-left: 0; margin-left: 0; } -.tb-more { position: relative; display: none; } .tb-menu { position: absolute; top: calc(100% + 6px); @@ -9384,8 +9215,11 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r background: var(--paper-card); border: 1px solid var(--border-color); border-radius: var(--radius-surface); - box-shadow: 0 12px 32px rgba(26, 24, 21, 0.18); + max-height: calc(100dvh - 120px); + overflow-y: auto; + overscroll-behavior: contain; } +/* Sidebar ZIP: labelled */ .tb-menu > button, .tb-menu > a { display: flex; align-items: center; @@ -9402,35 +9236,30 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r text-align: left; text-decoration: none !important; } +/* README: centred reading column in the pane */ .tb-menu > button:hover, .tb-menu > a:hover { background: var(--hover-bg-color); } +/* Gutter: hairline divider so numbers sit in their own column */ .tb-menu .ui-icon { width: 16px; height: 16px; color: var(--ink-soft); } +/* Toggles: an accent pressed state, distinct from hover */ .tb-menu-check { margin-left: auto; color: var(--accent); font-weight: 600; } .tb-menu-sep { height: 1px; margin: 6px 4px; background: var(--border-soft); } -@media (max-width: 767px) { - .tb-more { display: inline-flex; } - .file-card-head .tb-file, - .file-card-head .symbols, - .file-card-head .btn-find, - .file-card-head .btn-goto, - .file-card-head .btn-toggle, - .file-card-head .view-switch + .file-card-actions .tb-file { display: none !important; } - .file-card-head .tb-more-btn { width: 40px !important; height: 40px !important; } - .file-card-head .card-files-btn { height: 40px !important; } - .file-card-path .paths .breadcrumb-item:last-child { font-size: 15px; } -} - -/* ===== Round 20: landing — HTML feature mocks, calmer stats and labels ===== */ -.feat-mock { height: 380px; overflow: hidden; background: var(--paper-card); font-family: var(--font-sans); color: var(--color); } .fm-form { padding: 22px 26px; display: grid; gap: 8px; } -.fm-label { font-size: 12px; font-weight: 600; color: var(--ink-soft); margin-top: 6px; } +.fm-label { font-size: 12px; font-weight: 600; margin-top: 6px; } .fm-input { height: 36px; display: flex; align-items: center; padding: 0 12px; border: 1px solid var(--border-color); border-radius: var(--radius-control); background: var(--input-bg); font-size: 13.5px; } .fm-input-sm { width: 150px; } .fm-chips { display: flex; flex-wrap: wrap; gap: 6px; } -.fm-chips span { padding: 4px 10px; border-radius: 999px; background: color-mix(in srgb, var(--status-error) 9%, transparent); color: var(--color); font-size: 12.5px; text-decoration: line-through; text-decoration-color: color-mix(in srgb, var(--status-error) 55%, transparent); } +.fm-chips span { padding: 4px 10px; border-radius: 999px; font-size: 12.5px; text-decoration: none !important; } .fm-chips .fm-chip-add { background: transparent; border: 1px dashed var(--border-color); color: var(--ink-muted); text-decoration: none; } -.fm-row { display: grid; grid-template-columns: 1fr auto; gap: 16px; align-items: end; } +.fm-row { display: grid; grid-template-columns: 1fr auto; gap: 16px; } .fm-toggles { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 2px; } -.fm-toggles span { padding: 5px 10px; border: 1px solid var(--border-color); border-radius: var(--radius-control); font-size: 12.5px; color: var(--ink-muted); } +.fm-toggles span { + padding: 5px 10px; + border: 1px solid var(--border-color); + border-radius: var(--radius-control); + font-size: 12.5px; + align-items: center; + gap: 6px; +} .fm-toggles .is-on { border-color: color-mix(in srgb, var(--accent) 45%, transparent); background: var(--accent-soft); color: var(--accent); } .fm-actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--border-soft); } .fm-share { font-family: var(--font-mono); font-size: 12px; color: var(--ink-soft); } @@ -9446,8 +9275,13 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r .fm-code-bar b { color: var(--color); font-weight: 600; } .fm-code pre { margin: 0; padding: 12px 16px; font-family: var(--font-mono); font-size: 12.5px; line-height: 1.75; color: var(--color); background: transparent; white-space: pre; } .fm-code .ln { display: inline-block; width: 22px; margin-right: 14px; text-align: right; color: var(--ink-faint); } -.fm-code .k { color: #B02F22; } .fm-code .f { color: #5B3DC2; } .fm-code .s { color: #11704F; } .fm-code .c { color: var(--ink-muted); font-style: italic; } -.dark-mode .fm-code .k { color: #F2897D; } .dark-mode .fm-code .f { color: #C9A8F5; } .dark-mode .fm-code .s { color: #9DD3A8; } +.fm-code .k { color: #B02F22; } +.fm-code .f { color: #5B3DC2; } +.fm-code .s { color: #11704F; } +.fm-code .c { color: var(--ink-muted); font-style: italic; } +.dark-mode .fm-code .k { color: #F2897D; } +.dark-mode .fm-code .f { color: #C9A8F5; } +.dark-mode .fm-code .s { color: #9DD3A8; } .fm-code .redact { padding: 0 4px; border-radius: 3px; background: var(--accent-soft); color: var(--accent); font-style: normal; } .fm-dash { padding: 12px 18px; font-size: 13px; } .fm-dash-head, .fm-dash-row { display: grid; grid-template-columns: 1.7fr .9fr .5fr .9fr; gap: 12px; align-items: center; } @@ -9458,202 +9292,20 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r .fm-dash-row.is-muted { color: var(--ink-muted); } .fm-dash .st { display: inline-flex; align-items: center; gap: 6px; } .fm-dash .st::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; } -.fm-dash .st.is-ready { color: var(--status-ready); } .fm-dash .st.is-progress { color: var(--status-progress); } .fm-dash .st.is-expired { color: var(--ink-muted); } -@media (max-width: 767px) { .feat-mock { height: auto; min-height: 260px; } .fm-viewer { grid-template-columns: 1fr; } .fm-tree { display: none; } .fm-dash-head span:nth-child(4), .fm-dash-row span:nth-child(4) { display: none; } .fm-dash-head, .fm-dash-row { grid-template-columns: 1.6fr 1fr .5fr; } .fm-row { grid-template-columns: 1fr; } } - -/* Stats: numbers only, no decorative sparklines */ -.paper-stat-delta { margin-top: 6px !important; font-family: var(--font-sans) !important; font-size: 13px !important; color: var(--ink-muted) !important; } -.paper-stats-grid .paper-stat-card { padding-top: 22px !important; padding-bottom: 22px !important; } - -/* Section labels: sans small caps instead of tiny tracked mono */ -.paper-eyebrow, .paper-faq-eyebrow, .paper-stats-meta { - font-family: var(--font-sans) !important; - font-size: 12.5px !important; - font-weight: 600 !important; - letter-spacing: 0.06em !important; - color: var(--ink-soft) !important; +.fm-dash .st.is-ready { color: var(--status-ready); } +.fm-dash .st.is-progress { color: var(--status-progress); } +.fm-dash .st.is-expired { color: var(--ink-muted); } +@media (max-width: 767px) { .fm-viewer { grid-template-columns: 1fr; } + .fm-tree { display: none; } + .fm-dash-head span:nth-child(4), .fm-dash-row span:nth-child(4) { display: none; } + .fm-dash-head, .fm-dash-row { grid-template-columns: 1.6fr 1fr .5fr; } + .fm-row { grid-template-columns: 1fr; } } -.paper-feature-tab .paper-eyebrow { font-size: 12px !important; } -/* Hero checks: neutral ink, not a third accent colour */ -.paper-reassure li::before { color: var(--ink-soft) !important; } -.feat-mock { height: auto !important; min-height: 300px; } - -/* ===== Round 21 ===== */ -/* Phones: code that scrolls sideways fades at the edge (mask works regardless of stacking) */ -@media (max-width: 767px) { - .file-card.is-code.no-wrap::after { display: none !important; } - .file-card.is-code.no-wrap .ace_scroller { - -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 48px), transparent); - mask-image: linear-gradient(to right, #000 calc(100% - 48px), transparent); - } - /* Toolbar: Files + name on row 1; view switch and meta on row 2 */ - .explorer-content .file-card-head { row-gap: 6px; padding-top: 8px; padding-bottom: 8px; } - .file-card-path { flex: 1 1 auto; gap: 10px; } - .file-card-path .paths { flex: 1 1 auto; min-width: 0; } - .file-card-path .paths .breadcrumb-item:last-child { overflow: hidden; text-overflow: ellipsis; } - .file-card-head .card-files-btn { height: 32px !important; border-radius: var(--radius-control) !important; padding: 0 10px !important; } - .file-card-head .tb-more-btn { width: 36px !important; height: 32px !important; } - .file-card-head > .view-switch { order: 4; margin-left: auto !important; } - .file-card-head .file-card-meta { order: 3; flex-basis: auto !important; flex: 1 1 auto; margin: 0 !important; align-self: center; } -} -/* Toolbar left edge lines up with the code gutter; README column follows it */ @media (min-width: 768px) { .explorer-content .file-card-head { padding-left: 20px; } - .explorer-content .file-card .file-content.markdown-body { margin: 0 !important; padding-left: 20px !important; padding-right: 40px !important; max-width: 900px; } } -/* Dark: clearer selection and pressed states */ -.dark-mode .files .file.active > a { background: rgba(255, 255, 255, 0.13) !important; } -.dark-mode .btn.btn-ghost.is-on { background: rgba(124, 199, 190, 0.18) !important; box-shadow: inset 0 0 0 1px rgba(124, 199, 190, 0.45) !important; } -.dark-mode .leftCol { background: #1E1B18 !important; } /* Find: larger close, indigo focus */ -.ace_searchbtn_close { width: 24px !important; height: 24px !important; background-size: 12px !important; opacity: .7; } .ace_search_field:focus { border-color: var(--accent) !important; box-shadow: 0 0 0 3px var(--accent-soft) !important; } -/* Secondary text a step darker */ -.navbar .nav-link:not(.active):not(.btn-signin) { color: var(--ink-soft) !important; } -.navbar .nav-support-inline { color: var(--ink-soft) !important; } -.paper-stat-delta { color: var(--ink-soft) !important; } -/* Footer + FAQ micro-labels use the shared label style */ -.paper-footer-head, .paper-faq-toc-head { - font-family: var(--font-sans) !important; - font-size: 12px !important; - font-weight: 600 !important; - letter-spacing: 0.06em !important; - text-transform: uppercase; - color: var(--ink-soft) !important; -} -/* Collapsed feature steps: visible chevrons */ -.paper-feature:not(.is-on) .paper-feature-tab::after { border-color: var(--ink-soft) !important; border-width: 0 2px 2px 0 !important; } -/* FAQ: wider answers */ -.faq-section .panel-default .panel-body { max-width: 720px !important; } -.repo-panel-meta .last-update { flex-basis: 100%; } -.repo-panel-meta .last-update::before { content: none !important; } -@media (max-width: 767px) { - .file-card-head .file-card-path { flex: 1 1 calc(100% - 56px) !important; } - .file-card-head .file-card-actions { order: 1; } - .file-card-head .file-card-meta { order: 3; } - .file-card-head > .view-switch { order: 4; } -} - -/* ===== Round 22: sidebar identity + account bar, sidebar toggle ===== */ -.repo-panel { display: none !important; } -.repo-id { - display: flex; - align-items: center; - gap: 10px; - padding: 14px 14px 6px; -} -.repo-id-tile { - display: inline-flex; - align-items: center; - justify-content: center; - width: 34px; - height: 34px; - flex-shrink: 0; - border-radius: 9px; - background: linear-gradient(140deg, color-mix(in srgb, var(--accent) 16%, var(--paper-card)), color-mix(in srgb, var(--accent) 6%, var(--paper-card))); - box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 22%, transparent); - color: var(--accent); -} -.repo-id-tile .ui-icon { width: 17px; height: 17px; } -.repo-id-text { min-width: 0; } -.repo-id-title { font-size: 14px; font-weight: 600; color: var(--color); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } -.repo-id-sub { margin-top: 1px; font-size: 12.5px; color: var(--ink-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } -.repo-id-actions { - display: flex; - align-items: center; - justify-content: space-between; - gap: 8px; - padding: 4px 14px 12px 58px; - border-bottom: 1px solid var(--border-soft); - font-size: 12.5px; -} -.repo-id-count { color: var(--ink-muted); font-variant-numeric: tabular-nums; } -.repo-id-zip { - display: inline-flex; - align-items: center; - gap: 5px; - padding: 3px 8px; - border-radius: var(--radius-control); - color: var(--link-color) !important; - font-weight: 500; - text-decoration: none !important; -} -.repo-id-zip:hover { background: var(--accent-soft); } -.repo-id-zip .ui-icon { width: 14px; height: 14px; } -.leftCol-foot .leftCol-links { display: none !important; } - -.acct-bar { display: flex; align-items: center; justify-content: space-between; gap: 8px; } -.acct { position: relative; min-width: 0; } -.acct-chip { - display: inline-flex; - align-items: center; - gap: 8px; - max-width: 150px; - height: 34px; - padding: 0 8px 0 4px; - border: 0; - border-radius: var(--radius-control); - background: none; - font: inherit; - font-size: 13px; - font-weight: 500; - color: var(--color); - cursor: pointer; -} -.acct-chip:hover, .acct-chip[aria-expanded="true"] { background: var(--hover-bg-color); } -.acct-chip img, .acct-initial { width: 24px; height: 24px; border-radius: 50%; flex-shrink: 0; } -.acct-initial { display: inline-flex; align-items: center; justify-content: center; background: var(--accent-soft); color: var(--accent); font-size: 12px; font-weight: 700; } -.acct-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.acct-caret { width: 12px; height: 12px; color: var(--ink-muted); transform: rotate(-90deg); } -.acct-menu { - position: absolute; - bottom: calc(100% + 6px); - left: 0; - z-index: 40; - width: 190px; - padding: 6px; - background: var(--paper-card); - border: 1px solid var(--border-color); - border-radius: var(--radius-surface); - box-shadow: 0 12px 32px rgba(26, 24, 21, 0.18); -} -.acct-menu a { display: flex; align-items: center; gap: 10px; height: 36px; padding: 0 10px; border-radius: var(--radius-control); font-size: 13.5px; color: var(--color) !important; text-decoration: none !important; } -.acct-menu a:hover { background: var(--hover-bg-color); } -.acct-menu .ui-icon { width: 16px; height: 16px; color: var(--ink-soft); } -.acct-signin { - display: inline-flex; - align-items: center; - gap: 7px; - height: 32px; - padding: 0 12px; - border: 1px solid var(--border-color); - border-radius: var(--radius-control); - background: var(--paper-card); - font-size: 13px; - font-weight: 500; - color: var(--color) !important; - text-decoration: none !important; -} -.acct-signin:hover { background: var(--hover-bg-color); border-color: var(--ink-faint); } -.dark-mode .acct-signin { background: transparent; } -.acct-icons { display: inline-flex; align-items: center; gap: 2px; } -.acct-icons a, .acct-icons button { - display: inline-flex; - align-items: center; - justify-content: center; - width: 32px; - height: 32px; - border: 0; - border-radius: var(--radius-control); - background: none; - color: var(--ink-soft) !important; - cursor: pointer; -} -.acct-icons a:hover, .acct-icons button:hover { background: var(--hover-bg-color); color: var(--color) !important; } -.acct-icons .acct-donate:hover { color: var(--status-error) !important; } -.acct-icons .ui-icon { width: 17px; height: 17px; } -.leftCol-foot { padding: 8px 10px 10px 14px !important; } -.leftCol-foot .last-update { display: none; } /* Sidebar toggle in the toolbar (phones/tablets, or when the tree is hidden) */ .file-card-head .card-files-btn, @@ -9666,89 +9318,18 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r color: var(--ink-soft) !important; } .file-card-head .card-files-btn:hover { background: var(--hover-bg-color) !important; color: var(--color) !important; } -.file-card-head .card-files-btn .ui-icon { width: 19px; height: 19px; } -.card-files-label { display: none !important; } -.tb-copy-m { display: none !important; } -@media (max-width: 767px) { - .tb-copy-m { display: inline-flex !important; width: 36px !important; height: 34px !important; } - .file-card-head .file-card-path { flex: 1 1 calc(100% - 96px) !important; gap: 6px !important; } -} /* Find bar: close on the right, readable controls */ .ace_search { flex-direction: row; } -.ace_searchbtn_close { order: 99; margin-left: auto !important; width: 28px !important; height: 28px !important; } .ace_search .ace_button, .ace_searchbtn { color: var(--ink-soft) !important; } -/* Toggles: one "on" treatment */ -.file-card-head .btn-find:focus:not(:focus-visible) { background: transparent !important; } -/* Dark mode README images: gentle dim + frame */ -.dark-mode .explorer-content .markdown-body img { filter: brightness(0.92) !important; } @media (max-width: 767px) { - .file-card.is-code.no-wrap .ace_scroller { - -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 80px), rgba(0,0,0,.15) calc(100% - 8px), transparent) !important; - mask-image: linear-gradient(to right, #000 calc(100% - 80px), rgba(0,0,0,.15) calc(100% - 8px), transparent) !important; - } -} -.acct-menu-head { padding: 6px 10px 8px; margin-bottom: 4px; border-bottom: 1px solid var(--border-soft); font-size: 12px; color: var(--ink-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.acct-menu-head b { color: var(--color); font-weight: 600; } - -/* ===== Round 23 ===== */ -/* Phones: explicit sideways-scroll cue on unwrapped code */ -@media (max-width: 767px) { - .file-card.is-code.no-wrap { position: relative; } - .file-card.is-code.no-wrap::before { - content: "Scroll \2194"; - position: absolute; - right: 12px; - bottom: 14px; - z-index: 25; - padding: 5px 10px; - border-radius: 999px; - background: color-mix(in srgb, var(--color) 82%, transparent); - color: var(--canvas-bg-color); - font: 600 12px/1 var(--font-sans); - pointer-events: none; - box-shadow: 0 4px 14px rgba(0,0,0,.18); - } - /* README toolbar: Preview/Source on its own full-width row */ - .file-card-head > .view-switch { order: 5 !important; flex: 1 1 100%; margin-left: 0 !important; display: grid !important; grid-template-columns: 1fr 1fr; } + .file-card-head > .view-switch { flex: 1 1 100%; margin-left: 0 !important; } .file-card-head > .view-switch .btn { height: 36px !important; min-height: 36px !important; justify-content: center; font-size: 14px; } - .file-card-head .file-card-meta { font-size: 13px !important; } } -/* Account menu shows the full handle */ -.acct-menu { width: 240px; } -.acct-menu-head { white-space: normal; overflow-wrap: anywhere; } -/* One chevron style for the feature steps and the FAQ */ -.paper-feature .paper-feature-tab::after { border-width: 0 1.5px 1.5px 0 !important; border-color: var(--ink-soft) !important; } -/* Hero mock: readable secondary text, visible window controls */ -.hero-mock-tree-title, .hero-mock-doc-bar span { color: var(--ink-soft) !important; } -.paper-frame-bar { color: var(--ink-soft) !important; } -.paper-frame-bar .dots i { background: color-mix(in srgb, var(--ink-muted) 55%, transparent) !important; } -.dark-mode .paper-frame, .dark-mode .hero-mock-doc { background: #24211D !important; } -.dark-mode .hero-mock-tree { background: #1C1A17 !important; } -.dark-mode .paper-stats-grid .paper-stat-card { border-color: #3A3631 !important; } -.dark-mode .paper-stats-grid, .dark-mode .paper-stats { border-color: #3A3631 !important; } -/* FAQ: open item padding matches the rows */ -.faq-section .panel-default .panel-body { padding-bottom: 18px !important; } -/* Wrap toggle: quiet pressed state — neutral fill, indigo icon */ -.btn.btn-ghost.is-on { background: var(--hover-bg-color) !important; color: var(--accent) !important; box-shadow: none !important; } -.dark-mode .btn.btn-ghost.is-on { background: rgba(255,255,255,.08) !important; color: #7CC7BE !important; box-shadow: none !important; } -/* Account bar: avatar only; the menu carries the full handle */ -.acct-chip .acct-name, .acct-chip .acct-caret { display: none; } -.acct-chip { padding: 0 5px !important; } -.acct-chip img, .acct-initial { width: 26px !important; height: 26px !important; } -/* README: centred reading column */ -@media (min-width: 768px) { - .explorer-content .file-card .file-content.markdown-body { margin: 0 auto !important; padding-left: 40px !important; padding-right: 40px !important; max-width: 920px; } -} -/* Tree selection marker nearly full row height */ -.files .file.active > a::before { top: 5px !important; bottom: 5px !important; } +.leftCol-search { display: flex; align-items: center; gap: 6px; } /* Phones: slimmer gutter */ -@media (max-width: 767px) { .explorer-content .ace_editor .ace_gutter-cell { padding-left: 6px !important; padding-right: 6px !important; } } - -/* ===== Round 24: lean sidebar, joined file actions, visible support ===== */ -.repo-id, .repo-id-actions { display: none !important; } -.leftCol-search { display: flex; align-items: center; gap: 6px; padding: 12px 12px 8px !important; } .leftCol-search .tree-search-box { flex: 1 1 auto; min-width: 0; } +/* Tree selection marker nearly full row height */ .search-zip { display: inline-flex; align-items: center; @@ -9761,33 +9342,12 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r background: var(--canvas-bg-color); color: var(--ink-soft) !important; } +/* README: centred reading column */ .search-zip:hover { background: var(--hover-bg-color); color: var(--color) !important; border-color: var(--ink-faint); } -.search-zip .ui-icon { width: 17px; height: 17px; } +/* README toolbar: Preview/Source on its own full-width row */ .dark-mode .search-zip { background: transparent; } -.support-cta { - display: flex; - align-items: center; - gap: 10px; - margin: 0 0 10px; - padding: 9px 12px; - border-radius: var(--radius-surface); - background: color-mix(in srgb, #E5484D 9%, var(--paper-card)); - box-shadow: inset 0 0 0 1px color-mix(in srgb, #E5484D 22%, transparent); - color: var(--color) !important; - text-decoration: none !important; - transition: background .15s, box-shadow .15s; -} -.support-cta:hover { background: color-mix(in srgb, #E5484D 14%, var(--paper-card)); box-shadow: inset 0 0 0 1px color-mix(in srgb, #E5484D 40%, transparent); } -.support-cta .ui-icon { width: 18px; height: 18px; flex-shrink: 0; color: #E5484D; fill: #E5484D; } -.support-cta span { display: grid; min-width: 0; } -.support-cta b { font-size: 13px; font-weight: 600; } -.support-cta small { font-size: 12px; color: var(--ink-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } -.dark-mode .support-cta { background: color-mix(in srgb, #E5484D 12%, var(--sidebar-bg-color)); } -.leftCol-foot { padding: 10px 12px 10px !important; } - /* File actions: one joined group, quiet like GitHub's Raw | copy | download */ -.tb-file { display: inline-flex !important; align-items: stretch; gap: 0 !important; margin-left: 8px; padding-left: 0 !important; border: 1px solid var(--border-color) !important; border-radius: var(--radius-control); overflow: hidden; } .tb-seg-btn { display: inline-flex; align-items: center; @@ -9807,76 +9367,350 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r .tb-seg-btn:hover { background: var(--hover-bg-color); } .tb-seg-icon { width: 34px; padding: 0; color: var(--ink-soft) !important; } .tb-seg-icon:hover { color: var(--color) !important; } -.tb-seg-icon .ui-icon { width: 15px; height: 15px; } .dark-mode .tb-seg-btn { background: transparent; } -.file-card-actions > .tb-file:first-child { margin-left: 0; } - -/* Tool icons: same size and hit area as the group */ -.file-card-head .btn-find, .file-card-head .btn-goto, .file-card-head .btn-toggle { width: 32px !important; height: 32px !important; } - -/* Phones: drop the scroll pill; the edge fade is the cue */ -.file-card.is-code.no-wrap::before { content: none !important; display: none !important; } - -/* Avatar: round, no resting fill */ -.acct-chip { width: 34px; height: 34px; padding: 0 !important; justify-content: center; border-radius: 50% !important; background: none !important; } -.acct-chip:hover, .acct-chip[aria-expanded="true"] { background: var(--hover-bg-color) !important; } - -/* Find: close sits right after the option toggles */ -.ace_searchbtn_close { margin-left: 4px !important; } -.dark-mode .explorer-content .markdown-body img { filter: brightness(.9) !important; } +@media (max-width: 767px) { + .file-card-head .card-files-btn, .file-card-head .tb-copy-m, .file-card-head .tb-more-btn { + height: 36px !important; + border-radius: var(--radius-control) !important; + } +} +/* Find: compact bar, joined toggles, real close button, accent-tinted matches */ +.ace_search { min-height: 40px; } +/* Phones: one-row toolbar, 40px targets */ +.ace_search_field { height: 28px !important; } +.ace_search_options { margin-left: 4px !important; } /* Snapshot date under the search */ -.snapshot-line { - display: flex; - align-items: center; - gap: 6px; - padding: 0 14px 8px; - font-size: 12.5px; - color: var(--ink-soft); - white-space: nowrap; - overflow: hidden; -} -.snapshot-line span { overflow: hidden; text-overflow: ellipsis; } -.snapshot-line .ui-icon { width: 14px; height: 14px; flex-shrink: 0; color: var(--ink-muted); } -.leftCol-search { padding-bottom: 6px !important; } +.ace_search_options .ace_button { margin: 0 !important; } -/* ===== Round 25 ===== */ -/* Phones: one-row toolbar, 40px targets */ -@media (max-width: 767px) { - .explorer-content .file-card-head .file-card-meta { display: none !important; } - .explorer-content .file-card-head { flex-wrap: nowrap !important; min-height: 52px !important; } - .file-card-head .card-files-btn, .file-card-head .tb-copy-m, .file-card-head .tb-more-btn { width: 40px !important; height: 40px !important; } - .file-card-head .card-files-btn { background: var(--hover-bg-color) !important; color: var(--color) !important; border-radius: var(--radius-control) !important; } - .file-card-head .file-card-path { flex: 1 1 auto !important; } -} -/* Account menu: clear elevation; avatar matches the icon buttons */ -.acct-menu { box-shadow: 0 16px 40px rgba(26, 24, 21, 0.22), 0 0 0 1px var(--border-color) !important; border: 0 !important; } -.dark-mode .acct-menu { background: #26231F; box-shadow: 0 16px 40px rgba(0,0,0,.55), 0 0 0 1px #3A3631 !important; } -.acct-chip { width: 32px !important; height: 32px !important; } -.acct-chip img, .acct-initial { width: 30px !important; height: 30px !important; font-size: 13px !important; } -/* Find: compact bar, joined toggles, real close button, accent-tinted matches */ -.ace_search { padding: 6px 12px 6px 8px !important; min-height: 40px; } -.ace_search_field { height: 28px !important; } -.ace_search_options { gap: 0 !important; margin-left: 4px !important; } -.ace_search_options .ace_button { border-radius: 0 !important; margin: 0 !important; } +/* Find: close sits right after the option toggles */ .ace_search_options .ace_button + .ace_button { margin-left: -1px !important; } -.ace_search_options .ace_button:first-of-type { border-radius: var(--radius-control) 0 0 var(--radius-control) !important; } -.ace_search_options .ace_button:last-of-type { border-radius: 0 var(--radius-control) var(--radius-control) 0 !important; } -.ace_searchbtn_close { width: 28px !important; height: 28px !important; border-radius: var(--radius-control) !important; margin-left: 8px !important; background-color: transparent !important; opacity: .65; } -.ace_searchbtn_close:hover { background-color: var(--hover-bg-color) !important; opacity: 1; } -.ace_search_counter { color: var(--ink-soft) !important; } -.ace_editor .ace_marker-layer .ace_selected-word { background: color-mix(in srgb, var(--accent) 16%, transparent) !important; } -.ace_editor.ace-chrome .ace_marker-layer .ace_selection, -.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection { background: color-mix(in srgb, var(--accent) 34%, transparent) !important; box-shadow: 0 0 0 1px var(--accent) !important; } -/* Dark: pressed toggles read as "on" */ -.dark-mode .btn.btn-ghost.is-on { background: rgba(124, 199, 190, 0.16) !important; color: #A8DDD6 !important; } -/* Landing: features share the FAQ teaser's column line */ -.paper-features { grid-template-columns: 1fr 1.4fr !important; gap: 40px !important; } -/* FAQ chevrons a step darker */ -.faq-section .panel-default .panel-title a:after { border-color: var(--ink-soft) !important; } -.paper-features .paper-feature:not(.is-on) .paper-feature-tab::after, .paper-features .paper-feature.is-on .paper-feature-tab::after { border-width: 0 1.5px 1.5px 0 !important; border-color: var(--ink-muted) !important; } -/* ===== Round 26: redaction is the signature element ===== */ +/* Avatar: round, no resting fill */ +.ace_searchbtn_close { background-color: transparent !important; } +.ace_searchbtn_close:hover { opacity: 1; } +.explorer-page > .leftCol { grid-row: 2; grid-column: 1; width: auto !important; flex: none !important; height: auto !important; min-height: 0; border-top: 0; } +.explorer-page.files-hidden { grid-template-columns: minmax(0, 1fr); } +.vb-logo em { font-style: italic; } +.vb-support:hover { + box-shadow: inset 0 0 0 1px color-mix(in srgb, #E5484D 40%, var(--border-color)) !important; +} +.dark-mode .vb-support { background: transparent !important; color: var(--color) !important; } +@media (max-width: 991px) { + .explorer-page > .leftCol { grid-row: auto; } +} +@media (max-width: 575px) { + .vb-support span { display: none; } +} +@media (max-width: 991px) { + .explorer-page > .leftCol .leftCol-head { + position: static !important; + display: flex !important; + align-items: center; + justify-content: space-between; + min-height: 52px; + padding: 6px 8px 6px 16px !important; + border-bottom: 1px solid var(--border-soft) !important; + background: transparent !important; + } + .explorer-page > .leftCol .leftCol-head .leftCol-eyebrow { display: inline !important; font: 600 15px/1 var(--font-sans); letter-spacing: 0; text-transform: none; color: var(--color); } +} +/* Find bar: own surface, consistent 28px controls, close as a button at the end */ +.ace_search { gap: 6px !important; } +.dark-mode .ace_search { background: #1E1B18 !important; } +.ace_search .ace_searchbtn { width: 28px !important; border-radius: var(--radius-control) !important; border: 1px solid var(--border-color) !important; background: var(--paper-card) !important; } +.ace_searchbtn_close { border: 1px solid transparent !important; background-position: center !important; } +/* Find toggles: readable, with a visible pressed state */ +.ace_search .ace_button { background: var(--paper-card) !important; } +.ace_search .ace_button.checked { position: relative; } +@media (max-width: 767px) { + .vb-icon[href="/faq"] { display: none !important; } +} +/* Find close: icon only, centred, no stray glyph */ +.ace_searchbtn_close { background-size: 10px 10px !important; } +.readme-toc a:hover { color: var(--color) !important; border-left-color: var(--ink-muted); box-shadow: inset 1px 0 0 var(--ink-muted); } +.ace_search { justify-content: flex-start; } +.ace_searchbtn_close::before { + content: "\00d7"; + font: 400 20px/1 var(--font-sans); + color: var(--ink-soft); + font-size: 18px !important; + font-weight: 300 !important; +} +/* Find bar: close sits with the other controls */ +.ace_searchbtn_close { margin-left: 4px !important; } +/* Outline: one continuous rail, active segment overlays it */ +.readme-toc .toc-rail { border-left: 1px solid var(--border-color); } +.readme-toc a, .readme-toc a.is-active { border-left: 0 !important; margin-left: -1px !important; padding: 5px 0 5px 13px !important; line-height: 1.4; } +@media (max-width: 767px) { + header.viewer-bar .vb-icon, header.viewer-bar .vb-support { + box-shadow: none !important; + background: transparent !important; + } +} +.ace_search_form .ace_searchbtn.prev { border-radius: var(--radius-control) 0 0 var(--radius-control) !important; margin-left: 8px !important; } +.ace_search_form .ace_searchbtn.next { border-radius: 0 var(--radius-control) var(--radius-control) 0 !important; margin-left: -1px !important; } +.fm-toggles span::before { content: ""; width: 12px; height: 12px; flex: none; } +.fm-toggles .is-on::before { background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-7'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-7'/%3E%3C/svg%3E") center/contain no-repeat; } +/* Landing mock: unchecked toggle has no empty icon slot */ +.fm-toggles span:not(.is-on)::before { display: none !important; } +/* Outline: wrapped items hang-indent */ +.readme-toc a { padding-left: 13px !important; } +/* Viewer: toggle "on" = teal icon only (no fill on a default-on tool) */ +.file-card-head .btn.btn-toggle.is-on:hover { background: var(--hover-bg-color) !important; } +/* Outline: inactive in secondary ink, sections 500 */ +.readme-toc a.lvl-2 { color: var(--ink-soft) !important; font-weight: 500 !important; } +/* Syntax strings: cooler muted slate */ +.readme-toc a.is-active { color: var(--accent) !important; } +/* Viewer */ +.readme-toc a.is-active { font-weight: 600 !important; } +.ace_search .ace_button.checked { opacity: 1; } +.dark-mode .file-card-head .btn.btn-toggle.is-on, .dark-mode .file-card:has(.ace_search:not([style*="none"])) .btn-find { background: transparent !important; color: #A8DDD6 !important; box-shadow: inset 0 0 0 1px rgba(124,199,190,.5) !important; } +.md-find-nav button:first-child { border-radius: var(--radius-control) 0 0 var(--radius-control); } +.md-find-nav button:last-child { border-radius: 0 var(--radius-control) var(--radius-control) 0; margin-left: -1px; } +.md-find-nav button:disabled { opacity: .45; } +mark.md-find { color: inherit; border-radius: 2px; padding: 0; box-shadow: none !important; background: rgba(246,224,138,.7) !important; } +.md-find-input::-webkit-search-cancel-button { -webkit-appearance: none; display: none; } +.md-find-opt.is-on { color: var(--accent); box-shadow: inset 0 0 0 1px var(--accent); } +.md-find-nav button { color: var(--ink-soft) !important; } +.md-find-input:focus, .ace_search .ace_search_field:focus { outline: none !important; } +@media (min-width: 768px) { .file-card .ace_search .ace_search_form { margin-left: 0 !important; } +} +/* Blackout: win over the older teal rules */ +.ace_editor .ace_text-layer .ace_redacted, .dark-mode .ace_editor .ace_text-layer .ace_redacted { + position: relative; +} +.redact-slot i, .markdown-body mark.redact-chip i, span.redact i { font: 700 .66em/1 var(--font-sans, Inter, sans-serif) !important; font-style: normal !important; color: var(--slot-num) !important; } +.vb-help-menu small { display: block; font-size: 12px; color: var(--ink-soft); font-weight: 400; margin-top: 1px; } +.file-card-head .tb-file::before { content: ""; position: absolute; left: -9px; top: 6px; bottom: 6px; width: 1px; background: var(--border-color); } +@media (min-width: 1100px) { .fm-row { gap: 12px !important; } + .fm-toggles { flex-wrap: nowrap !important; } +} +.files .file.active > a .tree-name { font-weight: 500; color: var(--color); } +.dark-mode .tb-menu-label { color: #ADA69B; } +.tb-menu .tb-menu-toc.lvl-3 { color: #57524A; } +.dark-mode .tb-menu .tb-menu-toc.lvl-3 { color: #ADA69B; } +.tb-toc-menu > button.tb-menu-toc.lvl-2 { padding-left: 16px !important; } +.tb-toc-menu > button.tb-menu-toc.lvl-3 { padding-left: 32px !important; } +.dark-mode .goto-pop { box-shadow: 0 12px 32px rgba(0, 0, 0, .5); } +@media (max-width: 639px) { + .fm-row { grid-template-columns: minmax(0, 1fr) !important; gap: 4px !important; } + .fm-toggles { flex-wrap: wrap; } + .fm-share { overflow-wrap: anywhere; } +} +.vb-artifact, .vb-artifact:hover { text-decoration: none; } + +/* Tree middle truncation: head and tail meet at a separator; the ellipsis is flush with both. */ +.files .tree-name-split .tree-name-head.is-cut::after { content: "\2026"; color: var(--ink-muted); } +.fm-row > div > .fm-label { margin-top: 6px !important; margin-bottom: 0 !important; } +.fm-row > div > .fm-toggles, .fm-row > div > .fm-input { margin-top: 6px !important; } +.csv-table th, .csv-table td { padding: 7px 14px; border-bottom: 1px solid var(--border-color); white-space: nowrap; text-align: left; } +.csv-table thead th { + position: sticky; + z-index: 1; + background: var(--paper-bg-alt, #F3F1EC); + font-weight: 600; + font-size: 12.5px; + color: var(--ink-soft, var(--color)); + border-bottom: 1px solid var(--border-color); + top: 0; +} +.csv-table td.is-num { text-align: right; } +.csv-table tbody tr:nth-child(even) td { background: transparent !important; } +.csv-table tbody tr:hover td { background: var(--hover-bg-color) !important; } +.csv-table thead .csv-rownum { border-right: 1px solid var(--border-color); } +@media (max-width: 767px) { .csv-table th, .csv-table td { padding: 6px 10px; } +} +.csv-table th.is-num { text-align: right; } +@media (min-width: 768px) { .csv-table th, .csv-table td { padding: 8px 22px; } +} +.nb-output mark.redact-chip i, .output_text mark.redact-chip i { font-size: 11px !important; } +.csv-table thead th:first-child { border-top-left-radius: 7px; } +.csv-table thead th:last-child { border-top-right-radius: 7px; } +.csv-table tbody tr:last-child td { border-bottom: 0 !important; } +.csv-table tbody tr:last-child td:first-child { border-bottom-left-radius: 7px; } +.csv-table tbody tr:last-child td:last-child { border-bottom-right-radius: 7px; } + +/* Landing stats: four equal columns, calmer numerals */ + +/* ----- Landing and FAQ ----- */ +.paper-stats-grid .paper-stat-card { + padding-left: 24px !important; + padding-right: 24px !important; + margin-right: 0 !important; + padding-top: 22px !important; + padding-bottom: 22px !important; +} +.paper-stats-grid .paper-stat-card:last-child { border-right: 0; padding-right: 0 !important; } +.feat-mock { overflow: hidden; background: var(--paper-card); font-family: var(--font-sans); color: var(--color); height: auto !important; min-height: 300px; } +/* Hero mock: readable secondary text, visible window controls */ +.hero-mock-tree-title, .hero-mock-doc-bar span { color: var(--ink-soft) !important; } +/* Account menu shows the full handle */ +.paper-frame-bar { color: var(--ink-soft) !important; } +/* Phones: explicit sideways-scroll cue on unwrapped code */ +.dark-mode .paper-stats-grid, .dark-mode .paper-stats { border-color: #3A3631 !important; } +/* Landing mock: same selection style as the real tree */ +.hero-mock-row.is-active { background: rgba(128,128,128,.12) !important; } +.demo-terms label { font-size: 13px; font-weight: 600; color: var(--color); margin: 0; } +.demo-terms label span { font-weight: 400; margin-left: 6px; } +@media (min-width: 992px) { + .demo-panes { grid-template-columns: 1fr 1fr !important; gap: 20px !important; } +} +.demo-input-wrap { position: relative; } +.demo-input-wrap .demo-input::selection { color: var(--color); background: color-mix(in srgb, var(--accent) 25%, transparent); } +/* FAQ: chevron on the right, like every other disclosure */ +.faq-section .panel-default .panel-title a { display: block; } +/* FAQ: rows share the answer measure so the chevron stays with its question */ +.faq-section .panel-group, .faq-section .faq-cat { max-width: 720px; } +/* Blackout → tonal: a warm-stone bar from the app's neutral scale */ +.meta-redact::before, .hero-mock-count::before, .mobile-sub b::before { + border-radius: 2px !important; + box-shadow: inset 0 0 0 1px rgba(40,32,24,.12) !important; + background: #D9D1C3 !important; +} +.paper-faq-help-card p { color: var(--ink-soft); margin: 0 0 12px; font-size: 14px !important; line-height: 1.55 !important; } +.dark-mode .meta-redact::before, .dark-mode .hero-mock-count::before, .dark-mode .mobile-sub b::before { background: #4A443D !important; box-shadow: inset 0 0 0 1px rgba(255,255,255,.14) !important; } +.dark-mode .demo-panes > :last-child .pane-header { background: #1F1C19 !important; } +.dark-mode .pane-edit-hint { color: #9C958A; } +.paper-cta h2 { font-family: var(--font-serif); font-size: 40px; line-height: 1.05; letter-spacing: -0.01em; margin: 0 0 10px; color: var(--color); font-weight: 400; } +.paper-cta p { margin: 0; color: var(--ink-soft); font-size: 16px; max-width: 440px; } +@media (max-width: 991px) { .paper-cta h2 { font-size: 32px; } +} +@media (min-width: 1100px) { + .paper-landing { overflow-x: clip; } +} +@media (max-width: 639px) { + .demo-terms label span { display: block; margin: 2px 0 0 !important; font-size: 12.5px; } +} +@media (max-width: 767px) { + .demo-terms label > span { display: inline !important; margin-left: 6px !important; } +} + +/* FAQ search: a labeled 44px field over the question column, a live result count, a no-results state. */ +.faq-section .faq-search { margin: 0 0 28px; } +/* Home */ +.demo-terms label > span { margin-left: 6px; } + +/* Stats: numbers only, no decorative sparklines */ +/* Hero checks: neutral ink, not a third accent colour */ +/* Phones: code that scrolls sideways fades at the edge (mask works regardless of stacking) */ +/* Toolbar left edge lines up with the code gutter; README column follows it */ +/* Dark: clearer selection and pressed states */ + +/* ----- Buttons and controls ----- */ +.dark-mode .btn.btn-ghost.is-on { + box-shadow: none !important; + color: #A8DDD6 !important; + background: rgba(124, 199, 190, 0.16) !important; +} +/* Wrap toggle: quiet pressed state — neutral fill, indigo icon */ +.btn.btn-ghost.is-on { background: var(--hover-bg-color) !important; color: var(--accent) !important; } +/* Admin primaries in indigo; no black buttons */ +.admin-page .btn-primary { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; } +.repo-access-note>span:has(.ui-icon) { + display: flex; + gap: 8px; + align-items: flex-start; + margin-top: 10px; + padding: 9px 12px; + border-radius: var(--radius-control); + font-size: 13.5px; + background: color-mix(in srgb, #B7791F 8%, transparent) !important; + box-shadow: inset 3px 0 0 #B7791F !important; +} +.dark-mode .btn-toggle.is-on { background: rgba(124,199,190,.14) !important; } +/* Footer + FAQ micro-labels use the shared label style */ + +/* ----- App chrome ----- */ +.paper-footer-head, .paper-faq-toc-head { + font-family: var(--font-sans) !important; + font-size: 12px !important; + font-weight: 600 !important; + letter-spacing: 0.06em !important; + text-transform: uppercase; + color: var(--ink-soft) !important; +} +.acct { position: relative; min-width: 0; } +/* FAQ: wider answers */ +.acct-chip { + display: inline-flex; + align-items: center; + gap: 8px; + max-width: 150px; + border: 0; + font: inherit; + font-size: 13px; + font-weight: 500; + color: var(--color); + cursor: pointer; + padding: 0 !important; + justify-content: center; + border-radius: 50% !important; + background: none !important; + width: 32px !important; + height: 32px !important; +} +/* Collapsed feature steps: visible chevrons */ +.acct-chip:hover, .acct-chip[aria-expanded="true"] { background: var(--hover-bg-color) !important; } +.acct-chip img, .acct-initial { border-radius: 50%; flex-shrink: 0; width: 30px !important; height: 30px !important; font-size: 13px !important; } +.acct-initial { + display: inline-flex; + align-items: center; + justify-content: center; + font-weight: 700; + background: var(--hover-bg-color) !important; + color: var(--color) !important; +} +.acct-menu { + position: absolute; + bottom: calc(100% + 6px); + left: 0; + z-index: 40; + padding: 6px; + background: var(--paper-card); + border-radius: var(--radius-surface); + width: 240px; + box-shadow: 0 16px 40px rgba(26, 24, 21, 0.22), 0 0 0 1px var(--border-color) !important; + border: 0 !important; +} +.acct-menu a { display: flex; align-items: center; gap: 10px; height: 36px; padding: 0 10px; border-radius: var(--radius-control); font-size: 13.5px; color: var(--color) !important; text-decoration: none !important; } +.acct-menu a:hover { background: var(--hover-bg-color); } +.acct-menu .ui-icon { width: 16px; height: 16px; color: var(--ink-soft); } +/* Dark mode README images: gentle dim + frame */ +.acct-menu-head { + padding: 6px 10px 8px; + margin-bottom: 4px; + border-bottom: 1px solid var(--border-soft); + font-size: 12px; + overflow: hidden; + text-overflow: ellipsis; + white-space: normal; + overflow-wrap: anywhere; +} +.acct-menu-head b { color: var(--color); font-weight: 600; } +/* Account menu: clear elevation; avatar matches the icon buttons */ +.dark-mode .acct-menu { background: #26231F; box-shadow: 0 16px 40px rgba(0,0,0,.55), 0 0 0 1px #3A3631 !important; } +.acct-chip[aria-expanded="true"] .acct-initial { background: var(--accent-soft) !important; color: var(--accent) !important; } +/* Admin headers: title row is a fixed 44px so the tab bar lands at the same y everywhere */ +.admin-page .paper-page-title { min-height: 44px; display: flex; align-items: center; margin-bottom: 8px !important; } +/* Page head: CTA on the title row */ +.page-head-row > a.btn { margin-top: 6px; } +/* One header rhythm on every admin page: title row is always 44px */ +.admin-page h1.paper-page-title { margin: 0 !important; line-height: 44px !important; min-height: 44px; } +.admin-page > h1.paper-page-title { margin-bottom: 12px !important; } +@media (min-width: 1100px) { .paper-footer-brand { max-width: 420px; } +} +@media (max-width: 991px) { + .nav-heart-m + .nav-theme-m { margin-left: 2px; } +} +.paper-page-title em { font-style: normal; color: inherit; } +.page-head > .flow-trail li { display: inline-flex; align-items: center; gap: 6px; } +.page-head > .flow-trail li[aria-current] { color: var(--color); font-weight: 600; } +/* FAQ: open item padding matches the rows */ +/* Account bar: avatar only; the menu carries the full handle */ +.search-zip .ui-icon { width: 17px; height: 17px; } +/* Dark: pressed toggles read as "on" */ +/* Landing: features share the FAQ teaser's column line */ .markdown-body mark.redact-chip, .redact-chip { display: inline-block; @@ -9895,23 +9729,134 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r transition: background .1s; } .redact-chip:hover { background: color-mix(in srgb, var(--accent) 22%, transparent); } -.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip { font-size: 0.7em; vertical-align: 0.18em; } -.dark-mode .redact-chip { background: rgba(124, 199, 190, .14); color: #A8DDD6; } -.ace_editor .ace_marker-layer .ace_redacted { - position: absolute; - background: var(--accent-soft); - box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 30%, transparent); - border-radius: 3px; -} -.dark-mode .ace_editor .ace_marker-layer .ace_redacted { background: rgba(124, 199, 190, .16); } -.meta-redact { color: var(--accent); font-weight: 500; } -/* ===== Round 26: viewer top bar; sidebar is search + tree only ===== */ -.explorer-page { - display: grid !important; - grid-template-columns: var(--sidebar-w, 280px) minmax(0, 1fr); - grid-template-rows: 44px minmax(0, 1fr); +/* ----- Shared ----- */ +.meta-redact { + height: 20px; + border-radius: 999px; + font-size: 12px; + cursor: default; + box-shadow: none !important; + padding: 0 !important; + display: inline-flex !important; + font-weight: 500 !important; } +/* Redaction count reads as status, not a link */ +.dark-mode .meta-redact { background: rgba(124, 199, 190, .14); } + +.mobile-sub { display: none; } + +@media (max-width: 767px) { + .mobile-sub { + grid-column: 2; + overflow: hidden; + text-overflow: ellipsis; + display: flex !important; + line-height: 1.4; + gap: 0 !important; + column-gap: 0 !important; + flex: 0 0 auto; + } +} +input[type="checkbox"] { accent-color: var(--accent); width: 15px; height: 15px; } +/* Admin tabs sit at the same height on every page */ +.admin-page>header { min-height: 92px; } +@media (max-width: 767px) { + .admin-page form[class*="filter"] input, .admin-page form[class*="filter"] select { width: 100% !important; } + .admin-page form[class*="filter"] > * { width: 100%; } + .admin-page form[class*="filter"] label { font-size: 12px !important; } +} +/* Textarea + date inputs */ +.paper-page textarea { resize: vertical; } +/* One container width for signed-in pages */ +.paper-page input[type="date"] { height: 38px; padding: 0 10px; color: var(--input-color); font-family: var(--font-sans); } +.paper-page > .row > [class*="w-100"], .paper-page > .row > [class*="col"] { padding-left: 0 !important; padding-right: 0 !important; } +@media (max-width: 767px) { + .mobile-sub > * + *::before { content: "·"; margin-right: 6px; color: var(--ink-muted); font-weight: 400; } +} +/* Native checkboxes take the accent */ +.admin-page input[type="checkbox"] { accent-color: var(--accent); width: 14px !important; height: 14px !important; } +.dark-mode .repo-access-note > span:last-child { background: rgba(224,176,112,.10); box-shadow: inset 3px 0 0 #E0B070; } +.paper-page input[type="checkbox"]::before { content: ""; width: 9px; height: 9px; transform: scale(0); background: #fff; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat; } +.paper-page input[type="checkbox"]:checked { background: var(--accent); border-color: var(--accent); } +.paper-page input[type="checkbox"]:checked::before { transform: scale(1); } +.paper-page input[type="checkbox"]:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } +.dark-mode .paper-page input[type="checkbox"] { border-color: #6E6860; background: transparent; } +.paper-page textarea::placeholder, .paper-page input::placeholder { color: #A39B8E !important; } +/* The first-step URL field shares the app's input border */ +#sourceUrl-landing, #sourceUrl { border-color: #CFC7B9 !important; } + +/* ===== Redaction slots ===== */ +:root { + --redact-deboss: inset 0 1px 2px rgba(60,48,32,.18), inset 0 0 0 1px rgba(60,48,32,.06); + --slot-bg: #E3DCD0; + --slot-bg-sel: #D3CBBD; + --control-border: #CFC7B9; + --redact-bar: #EEEAE2; + --redact-ink: #8C8478; + --redact-reveal: #2B2824; + --slot-num: #0F4F4A; +} +.meta-redact::before { content: ""; width: 14px; height: 8px; } +.dark-mode { --redact-bar: #0E0D0B; --redact-ink: #7A746A; --redact-reveal: #F1ECE3; --redact-deboss: inset 0 1px 2px rgba(0,0,0,.7), inset 0 0 0 1px rgba(255,255,255,.05); } +.dark-mode { --slot-bg-sel: #4A443C; } +/* One control border: inputs, selects and toolbar buttons share the input stone */ +.dark-mode { --control-border: #48433C; } +/* Quieter dark slots with a brighter number */ +.dark-mode { --slot-bg: #3D3833; --slot-num: #8FDACD; } +.meta-redact::before, .mobile-sub b::before { box-shadow: inset 0 0 0 1px rgba(40,32,24,.22) !important; } +@media (max-width: 767px) { + body { --page-gutter: 20px; --page-top: 24px; } +} +.paper-qa-r3 > .qa-head h2 { margin-bottom: 0 !important; } +.flow-trail li[aria-current] { color: var(--color); font-weight: 600; } +.flow-trail li[aria-current]::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); } +/* One disabled look for every button, in both themes: a flat muted fill, a border the same tone as the fill, a muted label. + Light: #F3F1EC / #E6E1D8 / #6F6A61 (unchanged). Dark: a flat chip one step above the page, no visible outline, ink-faint label. */ +:root, body { + --btn-disabled-bg: #F3F1EC; + --btn-disabled-border: #E6E1D8; + --btn-disabled-ink: #6F6A61; + --st-ok: var(--status-ready); + --st-progress: var(--status-progress); + --st-bad: var(--status-error); + --st-off: var(--status-inactive); + --syn-kw: #8E2F6A; + --syn-str: #17694C; + --syn-fn: #4A3FB0; + --syn-num: #8A4B0F; + --syn-cmt: #6F6A61; + --syn-punct: #5C574F; + --syn-var: #2B2824; + --syn-type: #8E2F6A; + --syn-attr: #8A4B0F; + --q-time-series: #946512; +} +body.dark-mode { + --syn-kw: #D7A6CB; + --syn-str: #9DCBA8; + --syn-fn: #BDB4F2; + --syn-num: #E0B07A; + --syn-cmt: #8F897F; + --syn-punct: #A39D92; + --syn-var: #E6E1D8; + --syn-type: #D7A6CB; + --syn-attr: #E0B07A; + --q-time-series: #E0A94A; + --btn-disabled-bg: #312D29; + --btn-disabled-border: #312D29; + --btn-disabled-ink: #A39D92; +} +@media (min-width: 768px) { + #conf-basics #conferenceID { max-width: 240px; } +} +.admin-page .anon-sub.meta-dots>*+*::before { margin: 0 6px; color: var(--ink-faint); content: none !important; } +input[type="radio"]::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--accent); transform: scale(0); transition: transform .12s; } +input[type="radio"]:focus-visible { outline: 2px solid color-mix(in srgb, var(--accent) 45%, transparent); outline-offset: 2px; } +body.dark-mode code[class*="language-"], body.dark-mode pre[class*="language-"] { text-shadow: none !important; color: var(--syn-var); } +pre { --diff-pad: 15px; } + +/* ----- File viewer ----- */ .viewer-bar { grid-column: 1 / -1; grid-row: 1; @@ -9924,16 +9869,8 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r background: var(--paper-bg-alt); z-index: 20; } -.dark-mode .viewer-bar { background: var(--sidebar-bg-color); } -.explorer-page > .leftCol { grid-row: 2; grid-column: 1; width: auto !important; flex: none !important; height: auto !important; min-height: 0; border-top: 0; } -.explorer-page > .explorer-main { grid-row: 2; grid-column: 2; min-height: 0; } -.explorer-page.files-hidden { grid-template-columns: minmax(0, 1fr); } -.explorer-page.files-hidden > .explorer-main { grid-column: 1 / -1; } -.leftCol-resizer { top: 44px !important; } -.card-files-btn.is-needed { display: none !important; } .vb-left, .vb-right { display: flex; align-items: center; gap: 4px; min-width: 0; } -.vb-logo { font-family: var(--font-serif); font-size: 18px; letter-spacing: -0.01em; color: var(--color) !important; text-decoration: none !important; white-space: nowrap; margin-right: 10px; } -.vb-logo em { font-style: italic; } +.vb-logo { font-family: var(--font-serif); letter-spacing: -0.01em; color: var(--color) !important; text-decoration: none !important; white-space: nowrap; margin-right: 10px; } .vb-icon { display: inline-flex; align-items: center; @@ -9955,14 +9892,16 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r gap: 6px; height: 26px; padding: 0 10px; - margin-right: 6px; border-radius: 999px; - background: var(--hover-bg-color); - font-family: var(--font-mono); - font-size: 12px; - color: var(--ink-soft); white-space: nowrap; cursor: help; + font-family: var(--font-sans) !important; + font-variant-numeric: tabular-nums; + box-shadow: none !important; + padding-left: 4px !important; + padding-right: 4px !important; + margin-right: 8px !important; + opacity: 1 !important; } .vb-snapshot .ui-icon { width: 13px; height: 13px; color: var(--ink-muted); } .vb-support { @@ -9973,16 +9912,12 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r padding: 0 12px; margin-right: 4px; border-radius: 999px; - background: color-mix(in srgb, #E5484D 10%, transparent); - box-shadow: inset 0 0 0 1px color-mix(in srgb, #E5484D 28%, transparent); font-size: 13px; - font-weight: 600; - color: #C2353A !important; text-decoration: none !important; + font-weight: 400 !important; + box-shadow: none !important; } -.vb-support:hover { background: color-mix(in srgb, #E5484D 16%, transparent); } -.vb-support .ui-icon { width: 15px; height: 15px; fill: currentColor; } -.dark-mode .vb-support { color: #FF8A8E !important; background: rgba(229, 72, 77, .14); } +.vb-support .ui-icon { width: 15px; height: 15px; } .vb-signin { display: inline-flex; align-items: center; @@ -10000,215 +9935,192 @@ body.dark-mode .settings-status.is-overdue, body.dark-mode .settings-status.is-r } .vb-signin:hover { background: var(--hover-bg-color); } .dark-mode .vb-signin { background: transparent; } -.viewer-bar .acct { margin-left: 6px; } -.viewer-bar .acct-menu { top: calc(100% + 8px); bottom: auto; left: auto; right: 0; } -/* Sidebar: search sits flush at the top */ -.explorer-page > .leftCol .leftCol-search { padding-top: 12px !important; } @media (max-width: 991px) { - .explorer-page { grid-template-columns: minmax(0, 1fr); } - .explorer-page > .explorer-main { grid-column: 1 / -1; } .vb-sidebar { display: none; } - .explorer-page > .leftCol { grid-row: auto; } } @media (max-width: 575px) { - .vb-snapshot, .vb-bug { display: none; } - .vb-support span { display: none; } - .vb-support { width: 32px; padding: 0; justify-content: center; } + .vb-snapshot { display: none; } + .vb-support { width: 32px; padding: 0; justify-content: center; border-radius: var(--radius-control) !important; } } - -/* ===== Round 27 ===== */ /* Phone drawer: its own header row (Files + close), above search */ @media (max-width: 991px) { - .explorer-page > .leftCol .leftCol-head { - position: static !important; - display: flex !important; - align-items: center; - justify-content: space-between; - min-height: 52px; - padding: 6px 8px 6px 16px !important; - border-bottom: 1px solid var(--border-soft) !important; - background: transparent !important; - } - .explorer-page > .leftCol .leftCol-head .leftCol-eyebrow { display: inline !important; font: 600 15px/1 var(--font-sans); letter-spacing: 0; text-transform: none; color: var(--color); } - .explorer-page > .leftCol .leftCol-close { width: 44px !important; height: 44px !important; } .files a { min-height: 38px !important; font-size: 15px; } } /* Support: still visible, but neutral with a red heart */ -.vb-support { background: var(--paper-card) !important; box-shadow: inset 0 0 0 1px var(--border-color) !important; color: var(--color) !important; font-weight: 500 !important; } -.vb-support .ui-icon { color: #E5484D; fill: #E5484D; } -.vb-support:hover { background: var(--hover-bg-color) !important; box-shadow: inset 0 0 0 1px color-mix(in srgb, #E5484D 40%, var(--border-color)) !important; } -.dark-mode .vb-support { background: transparent !important; color: var(--color) !important; } -/* Snapshot pill in the UI face */ -.vb-snapshot { font-family: var(--font-sans) !important; font-variant-numeric: tabular-nums; font-size: 12.5px !important; } -/* Breadcrumb root is navigation, not status: neutral */ -.file-card-path .breadcrumb-root a { color: var(--ink-soft) !important; } -.file-card-path .breadcrumb-root a:hover { color: var(--color) !important; text-decoration: underline; } /* Phones: 40px targets in the top bar; sidebar toggle matches other icon buttons */ @media (max-width: 767px) { - .viewer-bar { padding: 0 6px 0 12px; } - .vb-icon, .vb-support { width: 40px !important; height: 40px !important; } - .vb-signin { height: 36px; } - .file-card-head .card-files-btn { background: transparent !important; color: var(--ink-soft) !important; } + .viewer-bar { padding: 0 6px 0 12px; padding-left: 12px !important; padding-right: 12px !important; } } -/* Find bar: own surface, consistent 28px controls, close as a button at the end */ -.ace_search { background: var(--paper-bg-alt) !important; border-bottom: 1px solid var(--border-color) !important; gap: 6px !important; } -.dark-mode .ace_search { background: #1E1B18 !important; } -.ace_search .ace_searchbtn { width: 28px !important; height: 28px !important; border-radius: var(--radius-control) !important; border: 1px solid var(--border-color) !important; background: var(--paper-card) !important; } -.ace_searchbtn_close { order: 99; margin-left: 6px !important; border: 1px solid transparent !important; background-position: center !important; opacity: .8 !important; } /* Phones: a visible right-edge fade on unwrapped code */ -@media (max-width: 767px) { - .file-card.is-code.no-wrap .ace_scroller { -webkit-mask-image: none !important; mask-image: none !important; } - .file-card.is-code.no-wrap .file-card-body { position: relative; } - .file-card.is-code.no-wrap .file-card-body::after { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - width: 36px; - z-index: 8; - pointer-events: none; - background: linear-gradient(to right, color-mix(in srgb, var(--paper-card) 0%, transparent), var(--paper-card) 85%); - } - .dark-mode .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, transparent, var(--canvas-bg-color) 85%); } -} /* Dark code redactions: clearly indigo */ -.dark-mode .ace_editor .ace_marker-layer .ace_redacted { background: rgba(124, 199, 190, .24) !important; box-shadow: inset 0 0 0 1px rgba(124, 199, 190, .5) !important; } -/* Secondary text one step darker on the landing */ -.paper-reassure, .paper-stat-delta, .paper-stat-label { color: var(--ink-soft) !important; } /* FAQ heading one step smaller */ -.paper-faq-title { font-size: clamp(2.2rem, 4vw, 3.1rem) !important; } -@media (max-width: 767px) { .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, transparent, var(--paper-card) 80%) !important; } .dark-mode .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, transparent, var(--canvas-bg-color) 80%) !important; } } - -/* ===== Round 28 ===== */ -@media (max-width: 575px) { - .vb-support { box-shadow: none !important; background: transparent !important; border-radius: var(--radius-control) !important; } - .vb-support:hover { background: var(--hover-bg-color) !important; } -} -/* Redaction count reads as status, not a link */ -.meta-redact { - display: inline-flex; - align-items: center; - height: 20px; - padding: 0 7px; - border-radius: 999px; - background: var(--accent-soft); - color: var(--accent) !important; - font-size: 12px; - font-weight: 600; - cursor: default; -} -.dark-mode .meta-redact { background: rgba(124, 199, 190, .14); color: #A8DDD6 !important; } /* Chips in headings sit lighter than the heading */ -.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip, .markdown-body h3 .redact-chip { font-size: 0.6em !important; padding: 1px 6px !important; vertical-align: 0.25em !important; } -/* Find toggles: readable, with a visible pressed state */ -.ace_search .ace_button { color: var(--ink-soft) !important; font-size: 12.5px !important; font-weight: 600 !important; background: var(--paper-card) !important; } -.ace_search .ace_button.checked { background: var(--accent-soft) !important; color: var(--accent) !important; border-color: var(--accent) !important; position: relative; z-index: 1; } -.ace_search { align-items: center !important; } -.ace_search_counter { align-self: center; line-height: 28px; } -/* Landing mock: same selection style as the real tree */ -.hero-mock-row.is-active { background: rgba(128,128,128,.12) !important; box-shadow: inset 3px 0 0 var(--accent); } - -.mobile-sub { display: none; } -@media (max-width: 767px) { - .file-card-head .file-card-path { display: grid !important; grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto auto; column-gap: 8px; align-items: center; } - .file-card-head .file-card-path .card-files-btn { grid-row: 1 / span 2; } - .file-card-head .file-card-path .paths { grid-column: 2; } - .mobile-sub { display: block; grid-column: 2; margin-top: 1px; font-size: 12px; color: var(--ink-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } - .mobile-sub b { color: var(--accent); font-weight: 600; } - .dark-mode .mobile-sub b { color: #A8DDD6; } - .vb-icon[href="/faq"] { display: none !important; } +.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip, .markdown-body h3 .redact-chip { + vertical-align: baseline !important; + text-underline-offset: 6px; + text-decoration: none !important; + vertical-align: .1em; + font-family: inherit !important; } -/* Find close: icon only, centred, no stray glyph */ -.ace_searchbtn_close { font-size: 0 !important; color: transparent !important; background-size: 10px 10px !important; align-self: center; } +.ace_search_counter { line-height: 28px; } /* Avatar: neutral until pressed */ -.acct-initial { background: var(--hover-bg-color) !important; color: var(--color) !important; box-shadow: inset 0 0 0 1px var(--border-color); } -.acct-chip[aria-expanded="true"] .acct-initial { background: var(--accent-soft) !important; color: var(--accent) !important; } -.viewer-bar .acct-menu { top: calc(100% + 12px) !important; } +.acct-initial { box-shadow: inset 0 0 0 1px var(--border-color); } /* Dark landing mock: visible edge */ -.dark-mode .paper-frame { box-shadow: 0 0 0 1px #3F3A34, 0 24px 60px rgba(0,0,0,.5) !important; } /* FAQ answers: comfortable measure */ -.faq-section .panel-default .panel-body { max-width: 640px !important; } -/* ===== Auth pages round A1 ===== */ +/* ===== Auth pages ===== */ /* New anonymization: top-aligned, with a visible primary action */ -.anonymize-landing { align-items: flex-start !important; padding-top: clamp(32px, 9vh, 88px) !important; } + +/* ----- Anonymize workspace ----- */ .landing-url-row { display: flex; gap: 8px; align-items: stretch; } .landing-url-row .form-control { flex: 1 1 auto; min-width: 0; } .landing-continue { flex-shrink: 0; height: auto; min-height: 46px; padding: 0 20px; font-weight: 600; } -@media (max-width: 575px) { .landing-url-row { flex-direction: column; } .landing-continue { min-height: 44px; } .source-url-label-row { flex-direction: column; align-items: flex-start !important; gap: 8px; } } -/* Dashboard table spans its container */ -.paper-table.paper-table-dashboard { width: 100%; } +@media (max-width: 575px) { .landing-continue { min-height: 44px; } +} +.anonymize-page .repo-access-switch::before { content: "Access:"; margin-right: 6px; color: var(--ink-soft); } +.anonymize-page input[type="checkbox"]::before { content: ""; width: 9px; height: 9px; transform: scale(0); background: #fff; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat; } +.anonymize-page input[type="checkbox"]:checked { background: var(--accent); border-color: var(--accent); } +.anonymize-page input[type="checkbox"]:checked::before { transform: scale(1); } +.anonymize-page input[type="checkbox"]:indeterminate { background: var(--accent); border-color: var(--accent); } +.anonymize-page input[type="checkbox"]:indeterminate::before { width: 8px; height: 2px; border-radius: 1px; -webkit-mask: none; mask: none; transform: scale(1); } +.dark-mode .anonymize-page input[type="checkbox"] { border-color: #6E6860; background: transparent; } +.anonymize-form-col .anonymize-submit-bar::before { + content: ""; + position: absolute; + left: 0; + right: 0; + top: -25px; + height: 24px; + background: linear-gradient(to bottom, transparent, var(--paper-bg-alt)); + pointer-events: none; + display: none !important; +} +@media (min-width: 1200px) { + .dark-mode .anonymize-workspace .anonymize-form-col .anonymize-submit-bar { background: #161412 !important; } +} +.repository-task .task-preparation > h2 { font: 600 20px/1.3 var(--font-sans); letter-spacing: -0.01em; overflow-wrap: anywhere; margin: 0 0 10px; } +.repo-picker-head h2 { margin: 0; font: 600 14px/1.3 var(--font-sans); letter-spacing: 0; color: var(--color); } +@media (max-width: 767px) { + .anonymize-landing .landing-help { margin-top: 8px; } +} +@media (min-width: 1100px) { + .landing-next h2 { margin: 0 0 4px; font: 600 15px/1.4 var(--font-sans); letter-spacing: 0; color: var(--color); } + .landing-next ol { list-style: none; counter-reset: next; margin: 0; padding: 0; } + .landing-next li { counter-increment: next; position: relative; padding: 12px 0 0 32px; font-size: 13px; line-height: 1.5; color: var(--ink-muted); } + .landing-next li + li { border-top: 0; } + .landing-next li::before { content: counter(next); position: absolute; left: 0; top: 12px; width: 22px; height: 22px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font: 600 12px/1 var(--font-sans); color: var(--accent); background: var(--accent-soft); font-variant-numeric: tabular-nums; } + .landing-next li b { display: block; font-weight: 600; font-size: 14px; color: var(--color); } +} +.repo-picker-list::-webkit-scrollbar-track { background: transparent; } +.repo-picker-list::-webkit-scrollbar-thumb { background: var(--scroll-thumb, #CFC7B9); border-radius: 3px; } +@media (min-width: 768px) { + .reviewer-preview .rp-body.has-tree .rp-file-head { + margin-left: 0; + position: relative; + padding-left: 32px !important; + padding-right: 32px !important; + border-top: 1px solid var(--rp-line); + border-bottom: 1px solid var(--rp-line); + } +} +.anonymize-page .source-url-label-row .repo-access-switch::before { content: none !important; display: none !important; } +.dark-mode .anonymize-page .source-url-label-row .repo-access-switch { background: var(--canvas-bg-color) !important; } /* Admin: numerals in Inter, readable small labels, honest colours */ + +/* ----- Admin ----- */ .q-stat-value, .q-card-count { font-family: var(--font-sans) !important; font-variant-numeric: tabular-nums; font-weight: 600; } .q-stat-label, .paper-table .paper-table-head [role="columnheader"], .paper-table-head > div { font-family: var(--font-sans) !important; font-size: 12px !important; letter-spacing: .02em !important; color: var(--ink-soft) !important; } -.errors-page .kpi-card.kpi-info .kpi-value { color: var(--color) !important; } .errors-page .col-msg, .errors-page .col-msg * { font-weight: 400 !important; } .errors-page .col-msg .msg-code, .errors-page .msg-code { font-size: 13px !important; } -/* Native selects and checkboxes match the custom controls */ -.paper-page select, .admin-page select, .errors-page select, .anonymize-page select, .paper-table select { - height: 34px; - padding: 0 30px 0 10px; - border: 1px solid var(--border-color); - border-radius: var(--radius-control); - background: var(--input-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236F6A61' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center; - -webkit-appearance: none; - appearance: none; - font: inherit; - font-size: 13px; - color: var(--input-color); -} -input[type="checkbox"] { accent-color: var(--accent); width: 15px; height: 15px; } -/* Inputs: visible borders and one radius */ -.paper-page .form-control, .anonymize-page .form-control, .paper-page input[type="text"], .paper-page input[type="date"], .paper-page textarea { - border: 1px solid color-mix(in srgb, var(--ink-faint) 55%, var(--border-color)) !important; - border-radius: var(--radius-control) !important; -} -.paper-page code, .paper-page kbd, .anonymize-page code { font-family: var(--font-mono) !important; } -/* Filter chips: selection is a fill; counts stay neutral */ -.paper-chip.is-active .count, .filter-chip.is-active .count, .status-chip.active .count { color: inherit !important; } -/* Admin user: spacing, empty values, one heading style */ -.user-header h2 { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; } -.status-dot-wrap { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 500; color: var(--ink-soft); } -.user-actions { display: flex; flex-wrap: wrap; gap: 8px; } .user-detail-grid .detail-value.is-empty { color: var(--ink-muted); font-style: normal; font-family: var(--font-sans) !important; } -.admin-section-header h2 { font-family: var(--font-sans) !important; font-size: 15px !important; font-weight: 600 !important; letter-spacing: 0 !important; text-transform: none !important; color: var(--color) !important; } -/* Errors: the delta is neutral; only a non-zero error count is red */ -.errors-page .kpi-sub.up, .errors-page .kpi-sub.down { color: var(--ink-soft) !important; } -.errors-page .kpi-card.kpi-error .kpi-value { color: var(--color) !important; } -.errors-page .kpi-card.kpi-error:has(.kpi-value:not(:empty)) .kpi-value { color: var(--color) !important; } -.errors-page .kpi-label { font-family: var(--font-sans) !important; } -.errors-page .col-msg { font-family: var(--font-mono) !important; font-size: 13px !important; } -/* Admin tabs sit at the same height on every page */ -.admin-page .paper-page-head, .admin-page .admin-head, .admin-page > header { min-height: 92px; } -/* Admin headers: title row is a fixed 44px so the tab bar lands at the same y everywhere */ -.admin-page .paper-page-title { min-height: 44px; display: flex; align-items: center; margin-bottom: 8px !important; } -.admin-page .ov-header, .admin-page .q-header, .admin-page .errors-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 44px; margin-bottom: 8px !important; } -.admin-page .ov-header .paper-page-title, .admin-page .q-header .paper-page-title, .admin-page .errors-header .paper-page-title { margin-bottom: 0 !important; } -.admin-page .admin-nav { margin-top: 0 !important; } -.admin-page .paper-crumbs { min-height: 20px; margin-bottom: 4px !important; } -/* One container width for author pages */ -.paper-page.container, .paper-faq, .anonymize-page .anonymize-landing-inner { } -.dashboard-page, .paper-page { max-width: 1112px; } -.landing-continue:disabled { background: var(--hover-bg-color) !important; border-color: var(--border-color) !important; color: var(--ink-muted) !important; opacity: 1 !important; box-shadow: none !important; } -.landing-continue:not(:disabled) { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; } +.admin-page .ov-header, .admin-page .q-header, .admin-page .errors-header { gap: 12px; min-height: 44px; } +/* Mono only for IDs; admin badge lighter */ +.user-detail-grid .detail-value:first-of-type { font-family: var(--font-mono); font-size: 13px; } +/* Queues / errors: sentence-case sans headings everywhere */ +.q-section-label, .errors-list-head, .errors-list-head > span { font-family: var(--font-sans) !important; text-transform: none !important; letter-spacing: 0 !important; font-size: 12.5px !important; font-weight: 600 !important; color: var(--ink-soft) !important; } +.errors-list-head>span { background: transparent !important; font-weight: 600 !important; } +@media (max-width: 767px) { + .admin-filter-toolbar > :first-child { grid-column: 1 / -1; } + .admin-filter-toolbar .admin-filter-inline { display: grid !important; gap: 4px; } + .admin-filter-toolbar > :last-child { grid-column: 1 / -1; display: flex; justify-content: space-between; align-items: center; } + .admin-filter-row > :first-child { grid-column: 1 / -1; } + .admin-filter-row .admin-filter-inline { display: grid !important; gap: 4px; } + .admin-filter-row > :last-child { grid-column: 1 / -1; display: flex !important; justify-content: space-between; align-items: center; flex-direction: row !important; } + .admin-filter-row > :last-child .btn { width: auto !important; } +} +/* Filter bar: search grows */ +.admin-filter-row>:first-child, .admin-filter-row input[type="search"], .admin-filter-row input[placeholder^="Search"] { flex: 1 1 320px !important; min-width: 280px; } +@media (max-width: 767px) { + .overview-page .ov-kpi-row, .overview-page .ov-daily-row, .overview-page [class*="ov-"][class*="-row"] { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 10px !important; } +} +.user-detail-grid .detail-value:nth-of-type(1) { font-family: var(--font-mono) !important; } +.ov-meter { height: 4px; margin: 6px 0 2px; border-radius: 4px; background: var(--hover-bg-color); overflow: hidden; } +.ov-meter > span { display: block; height: 100%; border-radius: 4px; background: var(--ink-faint); } +.ov-meter.warn > span { background: var(--status-progress); } +.ov-meter.crit > span { background: var(--status-error); } +@media (max-width: 767px) { + .admin-filter-toolbar .admin-filter-row:not(.is-open) > :not(:first-child) { display: none !important; } + .admin-filter-toolbar .admin-filter-row:not(.is-open) { grid-template-columns: 1fr !important; } +} +.dark-mode .ov-health .ui-icon { color: #F08A82; } +@media (max-width: 767px) { + .overview-page .ov-kpi-row { grid-template-columns: 1fr 1fr !important; } +} +/* Errors: info is neutral */ +.errors-page .seg.seg-info { background: var(--ink-faint) !important; } +@media (max-width: 767px) { + .admin-page .admin-nav a { padding: 0 10px !important; } + .overview-page .ov-kpi-row > :last-child:nth-child(odd) { grid-column: 1 / -1; } +} +.errors-page .col-when .when-rel { font-size: 13.5px !important; } +.q-stats-actions { flex-wrap: wrap; } +.ov-live-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); } -/* ===== Auth pages round A2 ===== */ -/* Admin status pills: neutral until selected; colour lives in a dot; zero counts dim */ -.admin-summary .summary-pill { border-color: var(--border-color) !important; color: var(--color) !important; background: var(--paper-card) !important; } -.admin-summary .summary-pill::before { content: ""; display: inline-block; width: 7px; height: 7px; margin-right: 6px; border-radius: 50%; background: var(--ink-faint); vertical-align: 1px; } -.admin-summary .summary-pill.ok::before { background: var(--status-ready); } -.admin-summary .summary-pill.warn::before, .admin-summary .summary-pill.progress::before { background: var(--status-progress); } -.admin-summary .summary-pill.err::before, .admin-summary .summary-pill.error::before { background: var(--status-error); } -.admin-summary .summary-pill .count { color: var(--ink-soft) !important; font-weight: 600; } -.admin-summary .summary-pill.active { background: var(--accent-soft) !important; border-color: color-mix(in srgb, var(--accent) 45%, transparent) !important; color: var(--accent) !important; } -.admin-summary .summary-pill.active .count { color: var(--accent) !important; } -.admin-summary .summary-pill:has(.count:is(:empty)) { opacity: .6; } -/* Admin primaries in indigo; no black buttons */ -.admin-page .btn-primary, .admin-page .btn-dark { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; } -.btn-outline-danger { border: 1px solid color-mix(in srgb, var(--status-error) 45%, transparent) !important; color: var(--status-error) !important; background: transparent !important; } +.q-chart-wrap { position: relative; } +.q-chart-empty strong { font-size: 14px; font-weight: 500; color: var(--color); } +.q-chart-empty span { font-size: 12.5px; color: var(--ink-soft); } +.dark-mode .ov-meter .fill.critical { background: #F08A82 !important; } +@media (max-width: 767px) { .admin-page .admin-filters-toggle::before { content: ""; width: 14px; height: 14px; margin-right: 6px; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 6h16M7 12h10M10 18h4'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 6h16M7 12h10M10 18h4'/%3E%3C/svg%3E") center/contain no-repeat; } +} +.q-state-toggle input:focus-visible + .q-state-chip { outline: 2px solid var(--accent); outline-offset: 2px; } +.admin-page .admin-section-header h2 .ui-icon { width: 16px; height: 16px; color: var(--ink-soft); } +.ov-meter span { background: var(--accent); } +/* Destructive group is labelled so it reads as separate from the safe actions */ +.q-danger-group::before { content: "Clear jobs"; flex-basis: 100%; font-size: 12px; color: var(--ink-soft); margin-bottom: 2px; } +.overview-page .ov-views button { border: 0; background: transparent; padding: 6px 14px; border-radius: 7px; font: 500 13.5px var(--font-sans); color: var(--ink-soft); cursor: pointer; } +.overview-page .ov-views button:hover { color: var(--color); } +.overview-page .ov-views button.active { background: var(--paper-card, #fff); color: var(--color); box-shadow: 0 1px 2px rgba(0,0,0,.08); } +/* Errors · 24h: hourly real errors fill the card's free space (amber = 4xx only, red = hour with a 5xx). */ +.overview-page .ov-ehours { margin: 0; } +.overview-page .ov-cache .ov-cache-rates > div { padding: 12px 14px; border: 1px solid var(--border-color); border-radius: var(--radius-control); background: var(--admin-stat-bg, var(--main-bg-color)); } +.overview-page .ov-cache .ov-cache-rates dt { font-size: 12px; font-weight: 500; color: var(--ink-muted); margin: 0 0 4px; } +.overview-page .ov-cache .ov-cache-rates dd { margin: 0; font: 600 20px/1.2 var(--font-sans); font-variant-numeric: tabular-nums; color: var(--color); } +.q-state-badge.q-state-active::before, .q-state-badge.q-state-completed::before { background: var(--st-ok) !important; } +.q-state-badge.q-state-waiting::before, .q-state-badge.q-state-delayed::before { background: var(--st-progress) !important; } +.q-state-badge.q-state-failed::before { background: var(--st-bad) !important; } +.q-state-chip.q-state-active::before, .q-state-chip.q-state-completed::before { background: var(--st-ok) !important; } +.q-state-chip.q-state-waiting::before, .q-state-chip.q-state-delayed::before { background: var(--st-progress) !important; } +.q-state-chip.q-state-failed::before { background: var(--st-bad) !important; } +.seg-chip:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; } +.q-jobs-header .seg-filter { margin-left: auto; } +@media (min-width: 768px) { + .errors-page .errors-toolbar::before { content: ""; order: 4; flex: 0 0 100%; height: 0; } +} +.q-state-badge.q-state-completed::before { background: transparent !important; } +.q-table td.q-cell-id { width: 32%; max-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } +.q-table td.q-cell-detail { width: 30%; max-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 13px; color: var(--ink-muted); } +.q-table .q-progress-wrap.is-indeterminate .q-progress-bar { + background-image: repeating-linear-gradient(-45deg, color-mix(in srgb, var(--accent) 55%, transparent) 0 4px, var(--border-color) 4px 8px) !important; +} +/* Filter chips: selection is a fill; counts stay neutral */ + +/* ----- Dashboard ----- */ +.filter-chip.is-active .count, .status-chip.active .count { color: inherit !important; } +.status-dot-wrap { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 500; color: var(--ink-soft); } +/* One container width for author pages */ +.dashboard-page, .paper-page { max-width: 1112px; } /* Queues + errors headers: one sans sentence-case style */ -.admin-page .paper-table-head > *, .admin-page [role="columnheader"], .errors-page th, .q-card-title, .q-panel-title, .admin-page h3, .q-header-label { +.admin-page .paper-table-head>*, .admin-page [role="columnheader"], .errors-page th, .admin-page h3 { font-family: var(--font-sans) !important; text-transform: none !important; letter-spacing: 0 !important; @@ -10216,301 +10128,25 @@ input[type="checkbox"] { accent-color: var(--accent); width: 15px; height: 15px; font-weight: 600 !important; color: var(--ink-soft) !important; } -.ov-flag { color: var(--status-error); font-weight: 600; } -.overview-page .ov-daily-value { color: var(--color) !important; } -/* Mobile dashboard: symmetric gutter; chip row wraps */ @media (max-width: 767px) { .paper-table.paper-table-dashboard { margin-left: 0 !important; margin-right: 0 !important; width: 100% !important; } .dashboard-meta { flex-wrap: wrap; row-gap: 8px; } - .dashboard-active-filters { flex-basis: 100%; flex-wrap: wrap; } - .anonymize-landing { padding-top: 20px !important; } - .anonymize-landing .paper-page-lede { font-size: 15px !important; } + .dashboard-active-filters { flex-wrap: wrap; } } -/* Anonymize: privacy note as a callout; Manage access as a quieter action */ -.anonymize-landing .text-muted:has(.ui-icon), .anonymize-landing .source-privacy-note { - display: flex; gap: 8px; align-items: flex-start; padding: 10px 12px; margin-top: 12px; - border-radius: var(--radius-control); background: color-mix(in srgb, var(--status-progress) 9%, transparent); - color: var(--color) !important; font-size: 13px; -} -.repo-access-note > span:has(.ui-icon) { - display: flex; gap: 8px; align-items: flex-start; margin-top: 10px; padding: 9px 12px; - border-radius: var(--radius-control); background: color-mix(in srgb, var(--status-progress) 10%, transparent); - box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--status-progress) 25%, transparent); - color: var(--color) !important; font-size: 13px; -} -.repo-access-note > span:has(.ui-icon) .ui-icon { color: var(--status-progress); flex-shrink: 0; margin-top: 2px; } -/* Status pills are include/exclude toggles: included = solid neutral, excluded = faded + struck */ -.admin-summary .summary-pill.active { background: var(--paper-card) !important; border-color: var(--border-color) !important; color: var(--color) !important; } -.admin-summary .summary-pill.active .count { color: var(--ink-soft) !important; } -.admin-summary .summary-pill:not(.active) { background: transparent !important; border-style: dashed !important; color: var(--ink-muted) !important; } -.admin-summary .summary-pill:not(.active) > :not(.count) , .admin-summary .summary-pill:not(.active) { text-decoration: line-through; text-decoration-color: var(--ink-faint); } -.admin-summary .summary-pill:not(.active) .count { text-decoration: none; } -.admin-summary .summary-pill:not(.active)::before { opacity: .45; } - -/* ===== Auth pages round A3 ===== */ -/* Strike-through "excluded" style only for multi-select status toggles (repositories, conferences) */ -.admin-page:has(.admin-users-row) .admin-summary .summary-pill:not(.active), -.user-detail-card ~ * .admin-summary .summary-pill:not(.active) { border-style: solid !important; text-decoration: none !important; color: var(--color) !important; background: var(--paper-card) !important; } -.admin-page:has(.admin-users-row) .admin-summary .summary-pill:not(.active)::before { opacity: 1; } -.admin-page:has(.admin-users-row) .admin-summary .summary-pill.active { background: var(--accent-soft) !important; border-color: color-mix(in srgb, var(--accent) 45%, transparent) !important; color: var(--accent) !important; } -/* Dashboard: labelled copy action */ -.copy-link-inline { display: inline-flex !important; align-items: center; gap: 6px; height: 30px; padding: 0 10px !important; border: 1px solid var(--border-color) !important; border-radius: var(--radius-control); background: var(--paper-card) !important; color: var(--color) !important; font-size: 13px; font-weight: 500; } -.copy-link-inline:hover { background: var(--hover-bg-color) !important; } -.copy-link-inline .project-type-svg { width: 14px; height: 14px; } -@media (max-width: 767px) { .copy-link-label { display: none; } .copy-link-inline { width: 36px; justify-content: center; padding: 0 !important; } } -/* Overview: amber under 90%, red only above; numerals stay neutral */ -.overview-page .ov-val-warn { color: var(--color) !important; } -.ov-flag { color: var(--status-progress) !important; } -/* Mobile admin: scrollable tabs with edge fade, left-aligned titles, full-width last tile */ -@media (max-width: 767px) { - .admin-page .admin-nav { flex-wrap: nowrap !important; overflow-x: auto; scrollbar-width: none; -webkit-mask-image: linear-gradient(to right, #000 85%, transparent); mask-image: linear-gradient(to right, #000 85%, transparent); } - .admin-page .admin-nav::-webkit-scrollbar { display: none; } - .admin-page .admin-nav a { flex-shrink: 0; } - .admin-page .paper-page-title, .admin-page .ov-header { text-align: left !important; justify-content: flex-start !important; } - .overview-page .ov-kpi-row > :last-child:nth-child(odd) { grid-column: 1 / -1; } - .admin-summary { flex-wrap: nowrap !important; overflow-x: auto; scrollbar-width: none; } - .admin-summary > * { flex-shrink: 0; } -} -/* Mono only for IDs; admin badge lighter */ -.user-detail-grid .detail-value:first-of-type { font-family: var(--font-mono); font-size: 13px; } -.user-header .type-badge { font-family: var(--font-sans) !important; letter-spacing: 0 !important; text-transform: none !important; font-weight: 600; } -.errors-page .count-badge, .errors-page .msg-count, .errors-page [class*="count"] { background: var(--hover-bg-color) !important; color: var(--color) !important; } -.ov-flag.critical { color: var(--status-error) !important; } -.paper-table.paper-table-dashboard .paper-table-head, -.paper-table.paper-table-dashboard .paper-table-row { grid-template-columns: minmax(280px, 3fr) 180px 70px 150px 150px !important; } .paper-table.paper-table-dashboard .paper-table-row > :last-child { display: flex; justify-content: flex-end; align-items: center; gap: 4px; } -.copy-link-inline { white-space: nowrap; } -@media (max-width: 767px) { - .admin-filter-row, .admin-page form[class*="filter"] { display: grid !important; grid-template-columns: 1fr; gap: 8px; } - .admin-page form[class*="filter"] input, .admin-page form[class*="filter"] select { width: 100% !important; } - .admin-page form[class*="filter"] > * { width: 100%; } - .admin-page form[class*="filter"] label { font-size: 12px !important; } -} -@media (min-width: 768px) { .copy-link-inline { width: auto !important; min-width: 0 !important; } } -@media (max-width: 767px) { .copy-link-inline { width: 44px !important; height: 44px !important; } } - -/* ===== Auth pages round A4 ===== */ -/* Queues / errors: sentence-case sans headings everywhere */ -.q-section-label, .errors-list-head, .errors-list-head > span { font-family: var(--font-sans) !important; text-transform: none !important; letter-spacing: 0 !important; font-size: 12.5px !important; font-weight: 600 !important; color: var(--ink-soft) !important; } -.errors-list-head > span { background: transparent !important; } -.q-state-chip { background: var(--paper-card) !important; color: var(--color) !important; border: 1px solid var(--border-color) !important; text-transform: none !important; font-family: var(--font-sans) !important; letter-spacing: 0 !important; } -.q-state-chip::before { content: ""; display: inline-block; width: 7px; height: 7px; margin-right: 6px; border-radius: 50%; background: var(--ink-faint); } -.q-state-chip.q-state-active::before { background: var(--accent); } -.q-state-chip.q-state-waiting::before, .q-state-chip.q-state-delayed::before { background: var(--status-progress); } -.q-state-chip.q-state-failed::before { background: var(--status-error); } -.q-state-chip.q-state-completed::before { background: var(--status-ready); } -/* Role pill in Inter */ -.role-pill { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 999px; background: var(--hover-bg-color); font: 600 12px/1 var(--font-sans); color: var(--color); } -.user-header .type-badge { background: var(--hover-bg-color) !important; border: 0 !important; } -/* Admin filter labels and selects */ -.admin-filter-inline label, .admin-page label { font-size: 12px !important; color: var(--ink-soft) !important; } -.admin-page select.form-control, .admin-page select { padding-right: 30px !important; background: var(--input-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236F6A61' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center !important; -webkit-appearance: none !important; appearance: none !important; } -/* Row metadata a step darker */ -.admin-page .paper-table-row .text-muted, .admin-page .paper-table-row [class*="meta"] { color: var(--ink-soft) !important; } -/* One container width for signed-in pages */ -.paper-page.container, .dashboard-page.container, .paper-page { max-width: 1112px !important; padding-left: 32px !important; padding-right: 32px !important; } -@media (max-width: 767px) { .paper-page.container, .dashboard-page.container, .paper-page { padding-left: 18px !important; padding-right: 18px !important; } } -/* Page head: CTA on the title row */ -.page-head-row > a.btn { margin-top: 6px; } -/* "On this page" rail: continuous line, indigo active segment */ -.paper-settings-toc nav, .paper-faq-toc nav { border-left: 1px solid var(--border-color); } -.paper-settings-toc nav a { margin-left: -1px; border-left: 2px solid transparent; } -.paper-settings-toc nav a.active { border-left-color: var(--accent) !important; color: var(--color); } -/* Textarea + date inputs */ -.paper-page textarea { resize: vertical; } -.paper-page input[type="date"] { height: 38px; padding: 0 10px; color: var(--input-color); font-family: var(--font-sans); } -/* Mobile: dashboard row = title line with actions on the right, meta below */ -@media (max-width: 767px) { - .paper-table.paper-table-dashboard .paper-table-row { grid-template-columns: minmax(0, 1fr) auto !important; grid-template-areas: "name actions" "meta meta"; row-gap: 6px; } - .paper-table.paper-table-dashboard .paper-table-row > :first-child { grid-area: name; } - .paper-table.paper-table-dashboard .paper-table-row > :last-child { grid-area: actions; align-self: start; } - .paper-table.paper-table-dashboard .paper-table-row > :not(:first-child):not(:last-child) { grid-column: 1 / -1; } - .copy-link-inline { width: 36px !important; height: 36px !important; } - /* Admin filters: two columns, pager and export on one row */ - .admin-filter-toolbar { display: grid !important; grid-template-columns: 1fr 1fr; gap: 8px; } - .admin-filter-toolbar > :first-child { grid-column: 1 / -1; } - .admin-filter-toolbar .admin-filter-inline { display: grid !important; gap: 4px; } - .admin-filter-toolbar .admin-filter-inline label { margin: 0; } - .admin-filter-toolbar > :last-child { grid-column: 1 / -1; display: flex; justify-content: space-between; align-items: center; } - .overview-page .ov-header { align-items: flex-start !important; text-align: left !important; } - .overview-page .ov-header .paper-page-title { width: 100%; justify-content: flex-start !important; text-align: left !important; } -} -/* Mobile dashboard row is flex: title + actions on line 1, meta wraps below */ -@media (max-width: 767px) { - .paper-table.paper-table-dashboard .paper-table-row { flex-wrap: wrap !important; align-items: flex-start !important; row-gap: 6px; } - .paper-table.paper-table-dashboard .paper-table-row > .cell-anon { flex: 1 1 0 !important; min-width: 0; order: 1; } - .paper-table.paper-table-dashboard .paper-table-row > .cell-actions { flex: 0 0 auto !important; order: 2; width: auto !important; margin: 0 !important; } - .paper-table.paper-table-dashboard .paper-table-row > .dashboard-row-meta { flex: 1 1 100% !important; order: 3; } - /* Admin filter row: two columns */ - .admin-filter-toolbar { display: block !important; } - .admin-filter-row { display: grid !important; grid-template-columns: 1fr 1fr; gap: 8px !important; } - .admin-filter-row > :first-child { grid-column: 1 / -1; } - .admin-filter-row .admin-filter-inline { display: grid !important; gap: 4px; min-width: 0; } - .admin-filter-row .admin-filter-inline input { width: 100% !important; } - .admin-filter-row > :last-child { grid-column: 1 / -1; display: flex !important; justify-content: space-between; align-items: center; flex-direction: row !important; } - .admin-filter-row > :last-child .btn { width: auto !important; } -} -/* Primary buttons on author pages: indigo */ -.paper-page .btn-primary, .page-head-row .btn-primary { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; } -.dark-mode .paper-page .btn-primary { background: #1F6A64 !important; border-color: #1F6A64 !important; } -/* Queue stat labels + legend in the shared label style */ -.q-stat-label, .q-section-right, .q-section-right * { font-family: var(--font-sans) !important; text-transform: none !important; letter-spacing: 0 !important; font-size: 12px !important; color: var(--ink-soft) !important; } -.q-card .q-card-sub, [class*="q-card"] small { font-family: var(--font-sans) !important; } - -/* ===== Auth pages round A5 ===== */ /* Usage ring reads as a meter: clear track, minimum visible arc, accent fill */ -.quota-ring-track { stroke: var(--border-color) !important; stroke-width: 3 !important; fill: none; } -.quota-ring-fill { stroke: var(--accent) !important; stroke-width: 3 !important; fill: none; stroke-linecap: round; transform: rotate(-90deg); transform-origin: 12px 12px; min-width: 0; } +.quota-ring-track { fill: none; } +.quota-ring-fill { fill: none; stroke-linecap: round; min-width: 0; } .quota-summary-ring { width: 18px !important; height: 18px !important; } -/* Errors table: one header style, plain count pills, compact rows */ -.errors-list-head .col-count, .errors-list-head .col-msg { background: transparent !important; font-family: var(--font-sans) !important; font-weight: 600 !important; } -.errors-page .col-count > * { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 999px; background: var(--hover-bg-color) !important; color: var(--color) !important; font: 600 12px/1 var(--font-sans); box-shadow: none !important; } -.errors-page .col-count > * > * { background: transparent !important; } -.errors-page .col-when { display: flex; flex-direction: column; gap: 0; line-height: 1.3; } -.errors-page .errors-list > div:not(.errors-list-head) { padding-top: 10px !important; padding-bottom: 10px !important; min-height: 0 !important; } -.errors-page .kpi-sub { font-style: normal !important; color: var(--ink-soft) !important; } -/* Queues legend line instead of "- -" */ -.q-legend-exec { display: inline-block; width: 14px; height: 0; border-top: 2px dashed var(--ink-muted); vertical-align: middle; margin-right: 4px; } -/* Filter bar: search grows */ -.admin-filter-row > :first-child, .admin-filter-row .admin-search, .admin-filter-row input[type="search"], .admin-filter-row input[placeholder^="Search"] { flex: 1 1 320px !important; min-width: 280px; } -/* Publish note: neutral information, not a warning */ -.repo-access-note > span:has(.ui-icon) { background: var(--hover-bg-color) !important; box-shadow: none !important; } -.repo-access-note > span:has(.ui-icon) .ui-icon { color: var(--ink-soft) !important; } /* Dark: rows sit on the page tone; one accent */ -.dark-mode .paper-table-row { background: transparent !important; } .dark-mode .paper-table-row:hover { background: rgba(255,255,255,.04) !important; } -.dark-mode .btn-primary, .dark-mode .dashboard-page .btn-primary, .dark-mode .paper-page .btn-primary { background: #1F6A64 !important; border-color: #1F6A64 !important; color: #fff !important; } -.dark-mode .dashboard-type-filter.btn-primary { background: rgba(124, 199, 190,.16) !important; border-color: transparent !important; color: #A8DDD6 !important; } -/* Inputs: one border tone across forms */ -.paper-page .form-control, .paper-page input[type="text"], .paper-page textarea, .paper-page input[type="date"] { border-color: var(--border-color) !important; } -.paper-page .form-control:focus, .paper-page textarea:focus { border-color: var(--accent) !important; box-shadow: 0 0 0 3px var(--accent-soft) !important; } -.errors-page .col-count { background: none !important; box-shadow: none !important; display: flex; align-items: center; } -.errors-page .col-count::before, .errors-page .col-count::after { content: none !important; display: none !important; } -.errors-page .col-count .count-pill { width: auto !important; min-width: 0 !important; } -.paper-page .dashboard-type-filter.btn-primary { background: var(--accent-soft) !important; border-color: transparent !important; color: var(--accent) !important; } - -/* ===== Auth pages round A6 ===== */ -/* Same left edge everywhere: drop Bootstrap row gutters inside paper pages */ -.paper-page > .row { margin-left: 0 !important; margin-right: 0 !important; } -.paper-page > .row > [class*="w-100"], .paper-page > .row > [class*="col"] { padding-left: 0 !important; padding-right: 0 !important; } -/* Queues table header: shared sans sentence case */ -.q-table th { font-family: var(--font-sans) !important; text-transform: none !important; letter-spacing: 0 !important; font-size: 12.5px !important; font-weight: 600 !important; color: var(--ink-soft) !important; } -/* One input border token (≥3:1 against the card) on every form */ -.paper-page input.form-control, .paper-page select.form-control, .paper-page textarea.form-control, -.paper-page input[type="text"], .paper-page input[type="search"], .paper-page input[type="url"], .paper-page input[type="date"], .paper-page textarea, -.claim-page input, .admin-page input:not([type="checkbox"]) { border: 1px solid var(--border-color) !important; } -.dark-mode .paper-page input.form-control, .dark-mode .paper-page textarea, .dark-mode .claim-page input, .dark-mode .admin-page input:not([type="checkbox"]) { border-color: #5A554D !important; } -/* Disabled primary: reduced-opacity indigo, not grey */ -.landing-continue:disabled { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; opacity: .45 !important; } -/* Memory/disk captions on one line */ -.overview-page .ov-kpi-sub { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } -/* Mobile: tabs and pills wrap instead of clipping */ -@media (max-width: 767px) { - .admin-page .admin-nav { flex-wrap: wrap !important; overflow: visible !important; -webkit-mask-image: none !important; mask-image: none !important; row-gap: 4px; } - .admin-summary { flex-wrap: wrap !important; overflow: visible !important; row-gap: 8px; } - .admin-page .paper-table-row [class*="meta"], .admin-page .paper-table-row .text-muted { white-space: normal !important; } -} -.summary-total small { font-size: 13px; font-weight: 500; color: var(--ink-soft); margin-left: 2px; } -@media (max-width: 767px) { - .overview-page .ov-kpi-row, .overview-page .ov-daily-row, .overview-page [class*="ov-"][class*="-row"] { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 10px !important; } - .overview-page .ov-kpi-card, .overview-page [class*="ov-daily-card"] { min-width: 0 !important; width: auto !important; } - .overview-page .ov-kpi-row > :last-child:nth-child(odd) { grid-column: 1 / -1; } -} -.user-detail-grid .detail-value:nth-of-type(1) { font-family: var(--font-mono) !important; } - -/* ===== Auth pages round A7 ===== */ -.paper-table-empty .empty-title { display: block; font-size: 15px; font-weight: 600; color: var(--color); margin-bottom: 4px; } -.paper-table-empty > span { max-width: 440px; text-align: center; } .paper-table-empty-actions { margin-top: 12px; display: flex; gap: 8px; justify-content: center; } -.q-action-sep { display: inline-block; width: 1px; height: 22px; margin: 0 6px; background: var(--border-color); vertical-align: middle; } -.hidden-toggle { padding: 0; border: 0; background: none; color: var(--link-color); font: inherit; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; } -.ov-meter { height: 4px; margin: 6px 0 2px; border-radius: 4px; background: var(--hover-bg-color); overflow: hidden; } -.ov-meter > span { display: block; height: 100%; border-radius: 4px; background: var(--ink-faint); } -.ov-meter.warn > span { background: var(--status-progress); } -.ov-meter.crit > span { background: var(--status-error); } -.admin-filters-toggle { display: none; } -@media (max-width: 767px) { - .admin-filters-toggle { display: inline-flex; margin: 8px 0; } - .admin-filter-toolbar .admin-filter-row:not(.is-open) > :not(:first-child) { display: none !important; } - .admin-filter-toolbar .admin-filter-row:not(.is-open) { grid-template-columns: 1fr !important; } -} -/* Settings pages: rail + content fill the shared container */ -.paper-settings-layout, .settings-layout { max-width: none !important; } -.paper-settings-layout > :last-child, .settings-layout > :last-child { max-width: none !important; flex: 1 1 auto; } -/* Errors: compact rows, equal header weight */ -.errors-list-head > span { font-weight: 600 !important; } -.errors-page .errors-list > div:not(.errors-list-head) { min-height: 56px !important; } - -/* ===== Round 29: README reading mode (reference: Mintlify / Stripe docs) ===== */ -.reading-layout { display: grid; grid-template-columns: minmax(0, 720px) 220px; justify-content: center; gap: 48px; padding: 0 32px; } -.reading-layout .file-content.markdown-body { max-width: none !important; margin: 0 !important; padding: 40px 0 96px !important; font-size: 16px !important; line-height: 1.7 !important; } -.reading-layout .markdown-body h1 { font-size: 34px !important; font-weight: 600 !important; letter-spacing: -0.02em; border-bottom: 0 !important; margin-bottom: 12px !important; } -.reading-layout .markdown-body h2 { font-size: 24px !important; font-weight: 600 !important; letter-spacing: -0.01em; border-bottom: 0 !important; margin-top: 44px !important; padding-bottom: 0 !important; scroll-margin-top: 72px; } -.reading-layout .markdown-body h3 { font-size: 18px !important; margin-top: 28px !important; scroll-margin-top: 72px; } -.reading-layout .markdown-body > p:first-of-type { font-size: 18px; color: var(--ink-soft); } -.readme-toc { position: sticky; top: 68px; align-self: start; margin-top: 44px; max-height: calc(100% - 100px); overflow: auto; display: grid; gap: 2px; font-size: 13px; } -.readme-toc-head { font-size: 12px; font-weight: 600; color: var(--color); margin-bottom: 8px; } -.readme-toc a { display: block; padding: 4px 0 4px 12px; border-left: 1px solid var(--border-color); color: var(--ink-soft) !important; text-decoration: none !important; line-height: 1.35; } -.readme-toc a:hover { color: var(--color) !important; border-left-color: var(--ink-muted); } -.readme-toc a.lvl-3 { padding-left: 24px; font-size: 12.5px; } -@media (max-width: 1199px) { .reading-layout { grid-template-columns: minmax(0, 760px); } .readme-toc { display: none; } } -@media (max-width: 767px) { .reading-layout { padding: 0 16px; } .reading-layout .file-content.markdown-body { padding: 20px 0 72px !important; } .reading-layout .markdown-body h1 { font-size: 26px !important; } .reading-layout .markdown-body h2 { font-size: 20px !important; } } - -/* ===== Round 29: live redaction demo ===== */ -.demo { margin-top: 28px; display: grid; gap: 14px; } -.demo-terms { display: grid; gap: 6px; } -.demo-terms label { font-size: 13px; font-weight: 600; color: var(--color); margin: 0; } -.demo-terms label span { font-weight: 400; color: var(--ink-soft); margin-left: 6px; } -.demo-terms input { height: 42px; padding: 0 14px; border: 1px solid var(--border-color); border-radius: var(--radius-control); background: var(--paper-card); font: 14px var(--font-mono); color: var(--color); } -.demo-terms input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); } -.demo-panes { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; } -.demo .pane { border: 1px solid var(--border-color); border-radius: var(--radius-surface); background: var(--paper-card); overflow: hidden; display: flex; flex-direction: column; } -.demo .pane-header { display: flex; justify-content: space-between; gap: 12px; padding: 10px 14px; border-bottom: 1px solid var(--border-soft); font-size: 12px; color: var(--ink-soft); } -.demo .pane-label { font-weight: 600; color: var(--color); } -.demo .pane-url { font-family: var(--font-mono); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.demo .pane-after { box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 30%, transparent); border-color: color-mix(in srgb, var(--accent) 35%, var(--border-color)); } -.demo .pane-body { min-height: 150px; padding: 14px 16px; font: 13px/1.75 var(--font-mono); color: var(--color); white-space: pre-wrap; } -.demo-input { border: 0; resize: vertical; background: transparent; outline: none; width: 100%; } -.demo-input:focus { background: color-mix(in srgb, var(--accent) 3%, transparent); } -.demo-output .redact-chip { font-size: 0.92em; } -@media (max-width: 767px) { .demo-panes { grid-template-columns: 1fr; } } -/* Mocks without fake browser chrome: a plain card with the URL as a caption */ -.paper-frame-bar .dots { display: none !important; } -.paper-frame-bar { justify-content: flex-start !important; height: 32px !important; background: transparent !important; } -.paper-frame-bar .url { text-align: left !important; flex: none !important; } - -/* ===== Round 30 ===== */ -.reading-layout .markdown-body > p:first-of-type { font-size: inherit !important; color: inherit !important; } -@media (max-width: 767px) { - .mobile-sub b { display: inline-flex; align-items: center; height: 18px; padding: 0 6px; border-radius: 999px; background: var(--accent-soft); font-size: 11.5px; } - .explorer-content .file-card-head { min-height: 52px !important; padding-top: 6px !important; padding-bottom: 6px !important; } - .file-card-head .file-card-path { gap: 4px !important; column-gap: 4px !important; } - .file-card.is-code.no-wrap .file-card-body::after { width: 48px !important; background: linear-gradient(to right, transparent, var(--paper-card) 60%) !important; } - .dark-mode .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, transparent, var(--canvas-bg-color) 60%) !important; } -} -.ace_search { justify-content: flex-start; } -.ace_searchbtn_close { margin-left: auto !important; order: 99; } -.fm-chips span, .paper-preview .term { background: var(--hover-bg-color) !important; color: var(--ink-soft) !important; text-decoration-color: var(--ink-muted) !important; } -.dark-mode .files .file.active > a { background: rgba(255,255,255,.06) !important; } -.dark-mode .ace_editor .ace_marker-layer .ace_redacted, .dark-mode .ace-nord-dark .ace_marker-layer .ace_redacted { background: rgba(124, 199, 190, .32) !important; box-shadow: inset 0 0 0 1px rgba(124, 199, 190, .65) !important; } -.paper-link-arrow { font-size: 15px !important; } -.paper-reassure { font-size: 14px !important; } -.dark-mode .acct-menu-head, .acct-menu-head { color: var(--ink-soft) !important; } -.reading-layout { grid-template-columns: minmax(0, 720px) 200px !important; gap: 40px !important; padding: 0 24px !important; } -.vb-snapshot { color: var(--ink-soft) !important; background: var(--paper-card) !important; box-shadow: inset 0 0 0 1px var(--border-color); } -.paper-faq-lede a { color: var(--color) !important; border-bottom: 1px solid var(--ink-faint) !important; text-decoration: none !important; } -.paper-faq-lede a:hover { border-bottom-color: var(--color) !important; } -.paper-section-head, .paper-qa { margin-top: 96px !important; } - -.ace-chrome .ace_constant.ace_numeric, .ace-chrome .ace_constant.ace_language, .ace-chrome .ace_support.ace_constant { color: #0550AE !important; } -.ace-nord-dark .ace_constant.ace_numeric, .ace-nord-dark .ace_constant.ace_language, .ace-nord-dark .ace_support.ace_constant { color: #79C0FF !important; } /* Dashboard: the anonymous link itself is the copy control */ .copy-url { display: inline-flex; align-items: center; gap: 8px; - max-width: 230px; height: 30px; padding: 0 8px 0 10px; border: 0; @@ -10520,345 +10156,523 @@ input[type="checkbox"] { accent-color: var(--accent); width: 15px; height: 15px; color: var(--ink-soft); cursor: pointer; transition: background .12s, color .12s; + max-width: 280px !important; } .copy-url:hover { background: var(--accent-soft); color: var(--accent); } -.copy-url:disabled { cursor: progress; } -.copy-url-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.copy-url .project-type-svg { width: 14px; height: 14px; flex-shrink: 0; opacity: .75; } -.copy-url:hover .project-type-svg { opacity: 1; } -.paper-table.paper-table-dashboard .paper-table-head, -.paper-table.paper-table-dashboard .paper-table-row { grid-template-columns: minmax(260px, 3fr) 170px 64px 140px 280px !important; } @media (max-width: 767px) { - .copy-url { max-width: 44px; padding: 0; justify-content: center; width: 40px; height: 40px; } - .copy-url-text { display: none; } + .copy-url { padding: 0; justify-content: center; width: 40px; height: 40px; } } .dashboard-page .btn.dashboard-type-filter.btn-primary, .paper-page .btn.dashboard-type-filter.btn-primary { background: var(--accent-soft) !important; border-color: transparent !important; color: var(--accent) !important; } +/* Dashboard: status date on its own wrapping line, visible edit action */ +.paper-table.paper-table-dashboard .paper-table-head, .paper-table.paper-table-dashboard .paper-table-row { grid-template-columns: minmax(240px, 3fr) 190px 60px 120px 300px !important; } +.cell-actions { display: flex; align-items: center; gap: 4px; justify-content: flex-end; } +/* Type filter: one contained segmented control */ +.dashboard-filter-controls .btn-group[aria-label="Type"] { + background: var(--hover-bg-color); + border-radius: calc(var(--radius-control) + 3px); + gap: 2px; + height: 36px; + align-items: center; +} +.dashboard-filter-controls .btn-group[aria-label="Type"]>.btn { + border: 0 !important; + background: transparent !important; + color: var(--ink-soft) !important; + border-radius: var(--radius-control) !important; + box-shadow: none !important; + margin: 3px 0; +} +.dashboard-filter-controls .btn-group[aria-label="Type"] > .btn.btn-primary { background: var(--paper-card) !important; color: var(--color) !important; box-shadow: 0 1px 2px rgba(0,0,0,.08), 0 0 0 1px var(--border-color) !important; } +/* One input border everywhere */ +.dashboard-page .dashboard-filter-row .form-control, +.admin-filter-row .form-control, +.paper-page .search-wrap .form-control { + border: 1px solid #A39D92 !important; + height: 36px !important; +} +.dark-mode .dashboard-page .dashboard-filter-row .form-control, .dark-mode .admin-filter-row .form-control, .dark-mode .paper-page .search-wrap .form-control { border-color: #4A443D !important; } +/* Admin tables: no per-cell type icon, cells align with headers */ +.cell-anon .record-type-icon { display: none !important; } +/* Dashboard: usage chip sits beside the primary action */ +.dashboard-heading-actions { display: flex; align-items: center; gap: 10px; } +.dashboard-heading-actions .quota-panel { right: 0; left: auto !important; } +@media (max-width: 767px) { + .paper-table .anon-sub { flex-wrap: wrap; white-space: normal !important; row-gap: 2px; } +} +/* Row metadata wraps instead of truncating */ +.dashboard-page .dashboard-heading-actions { flex-direction: row !important; align-items: center !important; gap: 10px !important; } +@media (max-width: 767px) { + .dashboard-page .dashboard-heading { flex-direction: column !important; align-items: stretch !important; gap: 12px; } +} +/* One control height and border in filter rows */ +.dashboard-page .dashboard-filter-row .form-control, .admin-filter-row .form-control, .paper-page .search-wrap .form-control { border-color: var(--border-color) !important; } +.dashboard-page .dashboard-filter-row .form-control:focus, .admin-filter-row .form-control:focus { border-color: var(--accent) !important; } +.dashboard-page .dashboard-filter-controls .btn, .dashboard-page .dashboard-filter-controls .dropdown-toggle { height: 36px; } +/* Plain data in neutral text */ +.paper-table [role="cell"].num a { color: var(--color) !important; font-family: var(--font-sans) !important; } +.admin-page .paper-table .anon-sub { gap: 0 !important; column-gap: 0 !important; } +.admin-page .paper-table .anon-sub > a { border-bottom: 0 !important; text-decoration: none; } +.paper-table:not(.paper-table-dashboard) .paper-table-row, .paper-table:not(.paper-table-dashboard) .paper-table-head { column-gap: 24px !important; } +.connection-label { font-size: 12.5px; color: var(--ink-soft); margin-right: 4px; } +@media (max-width: 767px) { + .paper-table.paper-table-dashboard .paper-table-row { display: grid !important; } + .paper-table.paper-table-dashboard .paper-table-row > .cell-actions { display: contents !important; } + .paper-table.paper-table-dashboard .paper-table-row { padding-right: 16px !important; } +} +.admin-page .paper-table .anon-sub:has(.meta-sep) { display: flex !important; flex-wrap: wrap; margin-left: -14px !important; gap: 0 !important; } +.admin-page .paper-table .anon-sub:has(.meta-sep) > *::before { content: "\00b7"; display: inline-block; width: 14px; text-align: center; color: var(--ink-muted); } +/* Users: no per-row repo icon, more gap */ +.admin-page .paper-table .cell-views .ui-icon { display: none !important; } +@media (max-width: 767px) { + .dashboard-page .paper-table-dashboard .dashboard-row-meta { + font-size: 12.5px; + color: var(--ink-soft); + grid-area: meta !important; + flex-wrap: wrap; + gap: 2px 12px !important; + column-gap: 0 !important; + row-gap: 4px !important; + } + .dashboard-page .dashboard-row-meta .cell-status .status-line { gap: 6px; } + .dashboard-page .dashboard-row-meta .cell-views svg, .dashboard-page .dashboard-row-meta .cell-views .ui-icon { display: none !important; } +} +.dashboard-page .dashboard-quota .quota-summary-ring { width: 16px; height: 16px; } +.connections-page .connection-actions .connection-link { white-space: nowrap; } +.connections-page .connection-actions .btn { white-space: nowrap; } +/* Dashboard row: open, edit, more share one 32px rhythm */ +.paper-table-dashboard .row-open { margin-right: 2px; } +@media (max-width: 767px) { + .paper-table-dashboard .cell-anon .anon-title, .paper-table-dashboard .cell-anon .anon-title>a { + word-break: normal !important; + display: block; + white-space: normal !important; + overflow: visible !important; + text-overflow: clip !important; + overflow-wrap: anywhere !important; + } +} +/* Profile: the Files tile gets a caption like its neighbours */ +.quota-panel .quota-item:has(.quota-unlimited)::after { content: "No limit on file count"; display: block; font-size: 12.5px; color: var(--ink-soft); margin-top: 6px; } +@media (max-width: 767px) { + .paper-table.paper-table-dashboard .anon-title .repo-name { + min-width: 0 !important; + word-break: normal !important; + display: inline !important; + white-space: normal !important; + overflow: visible !important; + text-overflow: clip !important; + overflow-wrap: anywhere !important; + } +} +@media (min-width: 768px) { + .dashboard-page .paper-table-dashboard .paper-table-row>.cell-actions { + display: grid !important; + grid-template-columns: repeat(4, 36px); + gap: 4px !important; + justify-content: end; + align-items: center; + } +} +@media (max-width: 767px) { + .dashboard-page .dashboard-row-meta .cell-views .mobile-meta-icon, + .dashboard-page .dashboard-row-meta .cell-expires .mobile-meta-icon { + display: inline-block !important; + color: var(--ink-muted); + } + /* Phone rows: no empty "Expires —" line, one baseline for status and counts, recovery link right under its reason. */ + .dashboard-page .dashboard-row-meta>.cell-expires:has(>.empty-dash) { display: inline-flex !important; } +} +/* Icons instead of "·" separators, so a wrapped line never starts with a dot. */ +.dashboard-page .paper-table-dashboard .anon-sub > .commit-hash { display: inline !important; flex: 0 0 auto !important; overflow: visible !important; text-overflow: clip !important; white-space: nowrap; min-width: 8ch; } +@media (min-width: 768px) { + .paper-table-dashboard .cell-actions > button.row-edit { border: 0; background: transparent; padding: 0; display: inline-flex; align-items: center; justify-content: center; } +} +.paper-table-dashboard .cell-status .status-action-line .status-stuck > span { color: var(--ink-faint); } +@media (max-width: 767px) { + .dashboard-page .paper-table-dashboard .dashboard-row-meta .status-sub:not(.status-sub-date) { padding-left: 22px !important; } + /* Equal 16px gutters: the type icon starts 16px in, the ⋯ glyph ends 16px from the edge (its 44px target overhangs the padding). */ + .dashboard-page .paper-table.paper-table-dashboard .paper-table-row, + .dashboard-page .paper-table.paper-table-dashboard .paper-table-row.repo-error { padding-left: 16px !important; padding-right: 16px !important; } + .dashboard-page .paper-table.paper-table-dashboard .paper-table-row > .cell-anon, + .dashboard-page .paper-table-dashboard .cell-anon > .anon-text { display: contents !important; } + .dashboard-page .paper-table-dashboard .cell-actions > .copy-url { display: inline-flex !important; align-items: center; justify-content: center; padding: 0 !important; border-radius: 8px; } + .dashboard-page .paper-table-dashboard .cell-actions > .copy-url::after { content: ""; position: absolute; top: -6px; bottom: -6px; left: -12px; right: 0; } +} +.repository-task .share-link-next > p { margin: 0; font-size: 14px; line-height: 21px; color: var(--ink-soft); } +@media (min-width: 768px) { + .dashboard-page .paper-table-dashboard .cell-actions:not(:empty) { display: flex !important; align-items: center; justify-content: flex-end; gap: 4px !important; } + .dashboard-page .paper-table-dashboard .cell-actions > .copy-url > svg { width: 15px !important; height: 15px !important; flex: 0 0 15px; color: var(--ink-soft); } +} +.dashboard-page .dropdown-menu .status-preset.active::after { content: "✓"; float: right; margin-left: 12px; color: var(--accent); } +.admin-page.admin-page .paper-table .anon-sub.anon-sub > *::before { content: none !important; } +.admin-page.admin-page .paper-table .anon-sub.anon-sub > * + *::before { content: "·" !important; display: inline !important; width: auto !important; margin: 0 6px !important; color: var(--ink-faint, var(--ink-muted)); text-align: center; } +.dashboard-view-tabs button[aria-pressed="true"] .attention-count:not(.has-attention) { color: var(--color); } +@media (min-width: 768px) { + .admin-page.admin-page .paper-table.paper-table-repos .anon-sub.anon-sub>:first-child { + overflow: hidden; + text-overflow: ellipsis; + flex: 0 1 auto !important; + min-width: 0 !important; + padding-right: 0 !important; + margin-right: 0 !important; + } +} +.paper-page .dashboard-meta .dashboard-view-tabs button { min-height: 40px; padding: 8px 0 10px; } +.dashboard-status-filter.is-view-hidden { visibility: hidden; pointer-events: none; } +.user-actions { display: flex; flex-wrap: wrap; gap: 8px; } +/* Errors: the delta is neutral; only a non-zero error count is red */ +.errors-page .kpi-sub.up, .errors-page .kpi-sub.down { color: var(--ink-soft) !important; } +/* Admin status pills: neutral until selected; colour lives in a dot; zero counts dim */ +.ov-flag { font-weight: 600; color: var(--status-progress) !important; } +.overview-page .ov-daily-value { color: var(--color) !important; } +/* Mobile dashboard: symmetric gutter; chip row wraps */ +@media (max-width: 767px) { + .anonymize-landing .paper-page-lede { font-size: 15px !important; } +} +/* Anonymize: privacy note as a callout; Manage access as a quieter action */ +.anonymize-landing .text-muted:has(.ui-icon) { + display: flex; + gap: 8px; + align-items: flex-start; + padding: 10px 12px; + margin-top: 12px; + border-radius: var(--radius-control); + background: color-mix(in srgb, var(--status-progress) 9%, transparent); + color: var(--color) !important; + font-size: 13px; +} +/* Status pills are include/exclude toggles: included = solid neutral, excluded = faded + struck */ +/* Strike-through "excluded" style only for multi-select status toggles (repositories, conferences) */ +/* Dashboard: labelled copy action */ +/* Overview: amber under 90%, red only above; numerals stay neutral */ +.overview-page .ov-val-warn { color: var(--color) !important; } +/* Mobile admin: scrollable tabs with edge fade, left-aligned titles, full-width last tile */ +.user-header .type-badge { + font-family: var(--font-sans) !important; + letter-spacing: 0 !important; + text-transform: none !important; + font-weight: 600; + border: 0 !important; +} -/* ===== Round 32 ===== */ -/* Find matches: warm yellow (teal now means redaction only) */ -.ace_editor .ace_marker-layer .ace_selected-word { background: rgba(242, 204, 96, .42) !important; box-shadow: none !important; border-radius: 2px; } -.ace_editor.ace-chrome .ace_marker-layer .ace_selection { background: #F2CC60 !important; box-shadow: 0 0 0 1px #C69026 !important; } -.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection { background: rgba(242, 204, 96, .55) !important; box-shadow: 0 0 0 1px #F2CC60 !important; } -/* Find close: a real 28px button with a visible × */ -.ace_searchbtn_close { background-image: none !important; width: 28px !important; height: 28px !important; display: inline-flex !important; align-items: center; justify-content: center; border-radius: var(--radius-control) !important; opacity: 1 !important; color: var(--ink-soft) !important; } -.ace_searchbtn_close::before { content: "\00d7"; font: 400 20px/1 var(--font-sans); color: var(--ink-soft); } -.ace_searchbtn_close:hover { background-color: var(--hover-bg-color) !important; } -.ace_search { padding: 6px 12px !important; } -/* Outline: active section */ -.readme-toc a.is-active { color: var(--color) !important; border-left: 2px solid var(--accent) !important; margin-left: -0.5px; font-weight: 500; } -/* Demo: no false focus on the output pane; tighter panes */ +/* ----- Admin ----- */ +.errors-page [class*="count"] { background: var(--hover-bg-color) !important; color: var(--color) !important; } +.ov-flag.critical { color: var(--status-error) !important; } +@media (max-width: 767px) { + .admin-filter-row, .admin-page form[class*="filter"] { display: grid !important; grid-template-columns: 1fr; gap: 8px; } +} +.q-state-chip { background: var(--paper-card) !important; color: var(--color) !important; border: 1px solid var(--border-color) !important; text-transform: none !important; font-family: var(--font-sans) !important; letter-spacing: 0 !important; } +/* Role pill in Inter */ +.role-pill { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 999px; background: var(--hover-bg-color); font: 600 12px/1 var(--font-sans); color: var(--color); } +.user-header .type-badge { background: var(--hover-bg-color) !important; } +/* Row metadata a step darker */ +.admin-page .paper-table-row .text-muted, .admin-page .paper-table-row [class*="meta"] { color: var(--ink-soft) !important; } +/* Mobile: dashboard row = title line with actions on the right, meta below */ +@media (max-width: 767px) { + /* Admin filters: two columns, pager and export on one row */ + .admin-filter-toolbar { grid-template-columns: 1fr 1fr; gap: 8px; display: block !important; } +} +/* Mobile dashboard row is flex: title + actions on line 1, meta wraps below */ +@media (max-width: 767px) { + /* Admin filter row: two columns */ + .admin-filter-row { display: grid !important; grid-template-columns: 1fr 1fr; } +} +/* Primary buttons on author pages: indigo */ +.paper-page .btn-primary, .page-head-row .btn-primary { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; } +/* Queue stat labels + legend in the shared label style */ +.q-stat-label, .q-section-right, .q-section-right * { font-family: var(--font-sans) !important; text-transform: none !important; letter-spacing: 0 !important; font-size: 12px !important; color: var(--ink-soft) !important; } +.q-card .q-card-sub, [class*="q-card"] small { font-family: var(--font-sans) !important; } +/* Errors table: one header style, plain count pills, compact rows */ +.errors-list-head .col-count, .errors-list-head .col-msg { background: transparent !important; font-family: var(--font-sans) !important; font-weight: 600 !important; } +.errors-page .col-count > * { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 999px; background: var(--hover-bg-color) !important; color: var(--color) !important; font: 600 12px/1 var(--font-sans); box-shadow: none !important; } +.errors-page .col-count > * > * { background: transparent !important; } +.errors-page .col-when { flex-direction: column; line-height: 1.3; display: flex; gap: 8px; align-items: baseline; } +.errors-page .kpi-sub { color: var(--ink-soft) !important; } +/* Queues legend line instead of "- -" */ +.q-legend-exec { display: inline-block; width: 14px; height: 0; vertical-align: middle; margin-right: 4px; } +/* Publish note: neutral information, not a warning */ +.dark-mode .btn-primary, .dark-mode .dashboard-page .btn-primary, .dark-mode .paper-page .btn-primary { background: #1F6A64 !important; border-color: #1F6A64 !important; color: #fff !important; } +.dark-mode .dashboard-type-filter.btn-primary { background: rgba(124, 199, 190,.16) !important; border-color: transparent !important; color: #A8DDD6 !important; } +.errors-page .col-count { + background: none !important; + box-shadow: none !important; + display: flex; + align-items: center; + font-weight: inherit !important; + color: inherit !important; + text-align: right; +} +.paper-page .dashboard-type-filter.btn-primary { background: var(--accent-soft) !important; border-color: transparent !important; color: var(--accent) !important; } +/* Same left edge everywhere: drop Bootstrap row gutters inside paper pages */ +.paper-page > .row { margin-left: 0 !important; margin-right: 0 !important; } +/* Queues table header: shared sans sentence case */ +.q-table th { font-family: var(--font-sans) !important; text-transform: none !important; letter-spacing: 0 !important; font-size: 12.5px !important; font-weight: 600 !important; color: var(--ink-soft) !important; } +/* Disabled primary: reduced-opacity indigo, not grey */ +/* Mobile: tabs and pills wrap instead of clipping */ +@media (max-width: 767px) { + .overview-page .ov-kpi-card, .overview-page [class*="ov-daily-card"] { min-width: 0 !important; width: auto !important; } +} +.paper-table-empty .empty-title { display: block; font-size: 15px; font-weight: 600; color: var(--color); margin-bottom: 4px; } +.admin-filters-toggle { display: none; } +@media (max-width: 767px) { + .admin-filters-toggle { display: inline-flex; margin: 8px 0; } +} +/* Settings pages: rail + content fill the shared container */ +/* Errors: compact rows, equal header weight */ + +/* ----- File viewer ----- */ +.reading-layout { + display: grid; + justify-content: center; + grid-template-columns: minmax(0, 720px) 200px !important; + gap: 40px !important; + padding: 0 24px !important; +} +.reading-layout .file-content.markdown-body { max-width: none !important; margin: 0 !important; padding: 40px 0 96px !important; font-size: 16px !important; line-height: 1.7 !important; } +.readme-toc { position: sticky; top: 68px; align-self: start; margin-top: 44px; max-height: calc(100% - 100px); overflow: auto; display: grid; gap: 2px; font-size: 13px; } +.readme-toc-head { font-weight: 600; color: var(--color); margin-bottom: 8px; font-size: 12.5px !important; } +.readme-toc a { + display: block; + text-decoration: none !important; + font-size: 13.5px !important; + text-indent: 0; + white-space: normal !important; + overflow: visible !important; + text-overflow: clip !important; +} +@media (max-width: 1199px) { .readme-toc { display: none; } +} +@media (max-width: 767px) { .reading-layout .file-content.markdown-body { padding: 20px 0 72px !important; } +} + +/* ----- Landing and FAQ ----- */ +.demo { margin-top: 28px; display: grid; gap: 14px; margin-bottom: 0 !important; } +.demo-terms { display: grid; gap: 6px; } +.demo-terms input { height: 42px; padding: 0 14px; border: 1px solid var(--border-color); border-radius: var(--radius-control); background: var(--paper-card); font: 14px var(--font-mono); color: var(--color); } +.demo-panes { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; } +.demo .pane { border: 1px solid var(--border-color); border-radius: var(--radius-surface); background: var(--paper-card); overflow: hidden; display: flex; flex-direction: column; } +.demo .pane-header { display: flex; justify-content: space-between; gap: 12px; padding: 10px 14px; border-bottom: 1px solid var(--border-soft); font-size: 12px; color: var(--ink-soft); } +.demo .pane-label { font-weight: 600; color: var(--color); } +.demo .pane-url { font-family: var(--font-mono); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .demo .pane-after { box-shadow: none !important; border-color: var(--border-color) !important; } -.demo .pane-body { min-height: 120px !important; } -.demo-input { resize: none !important; } +.demo .pane-body { padding: 14px 16px; font: 13px/1.75 var(--font-mono); color: var(--color); white-space: pre-wrap; min-height: 120px !important; } +.demo-input { border: 0; background: transparent; outline: none; width: 100%; resize: none !important; } +.demo-input:focus { background: color-mix(in srgb, var(--accent) 3%, transparent); } +@media (max-width: 767px) { .demo-panes { grid-template-columns: 1fr; } +} +/* Mocks without fake browser chrome: a plain card with the URL as a caption */ +.paper-frame-bar .dots { display: none !important; } +.paper-frame-bar { height: 32px !important; background: transparent !important; } +.paper-frame-bar .url { text-align: left !important; flex: none !important; } +.fm-chips span { background: var(--hover-bg-color) !important; } +.paper-link-arrow { font-size: 15px !important; } +.paper-reassure { font-size: 14px !important; } +.dark-mode .acct-menu-head, .acct-menu-head { color: var(--ink-soft) !important; } +.paper-faq-lede a { color: var(--color) !important; text-decoration: none !important; } + +.ace-chrome .ace_constant.ace_numeric, .ace-chrome .ace_constant.ace_language, .ace-chrome .ace_support.ace_constant { color: #0550AE !important; } +.ace-nord-dark .ace_constant.ace_numeric, .ace-nord-dark .ace_constant.ace_language, .ace-nord-dark .ace_support.ace_constant { color: #79C0FF !important; } +.copy-url .project-type-svg { width: 14px; height: 14px; flex-shrink: 0; opacity: .75; } +/* Find close: a real 28px button with a visible × */ +.ace_searchbtn_close { background-image: none !important; width: 28px !important; height: 28px !important; display: inline-flex !important; align-items: center; justify-content: center; border-radius: var(--radius-control) !important; color: var(--ink-soft) !important; } +.ace_searchbtn_close:hover { background-color: var(--hover-bg-color) !important; } +/* Demo: no false focus on the output pane; tighter panes */ /* Snapshot pill spacing */ -.vb-snapshot .vb-dot { margin: 0 2px; color: var(--ink-faint); } /* Dark: primary CTA lighter teal so it stands off the page */ -.dark-mode .btn-hero, .dark-mode .btn-primary, .dark-mode .landing-continue:not(:disabled) { background: #2B8A80 !important; border-color: #2B8A80 !important; color: #fff !important; } +.dark-mode .btn-hero, .dark-mode .btn-primary, .dark-mode .landing-continue:not(:disabled) { + color: #fff !important; + background: #237A71 !important; + border-color: #237A71 !important; +} /* Hero checks as drawn icons */ -.paper-reassure li::before { content: "" !important; display: inline-block; width: 14px; height: 14px; margin-right: 7px; vertical-align: -2px; background: var(--accent); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E") center/contain no-repeat; } -.nav-support-inline .nav-heart { width: 14px; height: 14px; color: #E5484D; fill: #E5484D; } +.nav-support-inline .nav-heart { width: 14px; height: 14px; } /* Mock term chips readable */ .fm-chips span { color: var(--color) !important; } /* Mobile top bar: uniform 36px controls */ -@media (max-width: 767px) { .vb-icon, .vb-support { width: 36px !important; height: 36px !important; } .vb-signin { height: 36px !important; } .navbar .nav-signin-m, .navbar-toggler { height: 36px !important; border-radius: var(--radius-control) !important; } } - -/* ===== Admin round 9 ===== */ -.overview-page .ov-spark-fill, .overview-page .ov-spark-fill-alt, .overview-page .ov-spark-fill-user, .overview-page .ov-spark-fill-new-user { background: color-mix(in srgb, var(--accent) 70%, transparent) !important; } -.overview-page .ov-dot-legend { background: var(--accent) !important; } -.errors-page .errors-chart [class*="info"], .errors-page .bucket-info, .errors-page .col-sev .sev-info::before { background: var(--ink-faint) !important; } -.errors-header .btn-danger { background: transparent !important; color: var(--status-error) !important; border: 1px solid color-mix(in srgb, var(--status-error) 45%, transparent) !important; margin-left: 10px; } -.conferences-page .paper-table:has(.paper-table-empty) .paper-table-head { display: none !important; } -.copy-url { max-width: 280px !important; } -.paper-table.paper-table-dashboard .paper-table-head, .paper-table.paper-table-dashboard .paper-table-row { grid-template-columns: minmax(240px, 3fr) 150px 60px 130px 320px !important; } -.dark-mode .paper-table-dashboard .paper-table-row { background: transparent !important; } - -/* ===== Round 33: chip contrast in code, find bar grouping, quieter heart, outline rail, dark surfaces ===== */ -.ace_editor .ace_marker-layer .ace_redacted { background: color-mix(in srgb, var(--accent) 18%, transparent) !important; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 60%, transparent) !important; } -/* find bar: close sits with the other controls */ -.ace_searchbtn_close { margin-left: 4px !important; } -.ace_search .ace_button { font-size: 12px !important; } -/* heart: muted at rest, full red on hover */ -.vb-support .ui-icon, .nav-support-inline .nav-heart, .support-cta .ui-icon { color: #C25B5E !important; fill: #C25B5E !important; } -.vb-support:hover .ui-icon, .nav-support-inline:hover .nav-heart, .support-cta:hover .ui-icon { color: #E5484D !important; fill: #E5484D !important; } -.vb-support { background: transparent !important; box-shadow: inset 0 0 0 1px var(--border-color) !important; } -.dark-mode .vb-support .ui-icon, .dark-mode .nav-support-inline .nav-heart { color: #D9787B !important; fill: #D9787B !important; } -/* outline: one continuous rail, active segment overlays it */ -.readme-toc .toc-rail { border-left: 1px solid var(--border-color); } -.readme-toc a, .readme-toc a.is-active { border-left: 0 !important; margin-left: -1px !important; padding: 5px 0 5px 13px !important; line-height: 1.4; } -.readme-toc a.lvl-3 { padding-left: 25px !important; } -.readme-toc a:hover { box-shadow: inset 1px 0 0 var(--ink-muted); } -.readme-toc a.is-active { box-shadow: inset 2px 0 0 var(--accent) !important; } -/* demo panes follow the section head grid */ -@media (min-width: 992px) { .demo-panes { grid-template-columns: 1fr 1.4fr; gap: 40px; } } -/* mock form chips: no strikethrough */ -.fm-chips span { text-decoration: none !important; } -/* dark: stronger CTA contrast, hairline hero frame, sidebar one step up, readable selection, untouched images */ -.dark-mode .btn-hero, .dark-mode .btn-primary, .dark-mode .landing-continue:not(:disabled) { background: #237A71 !important; border-color: #237A71 !important; } -.dark-mode .paper-frame { box-shadow: 0 0 0 1px #34302B, 0 24px 60px rgba(0,0,0,.5) !important; } -.dark-mode .leftCol { background: #1D1A17 !important; } -.dark-mode .files .file.active > a { background: rgba(255,255,255,.09) !important; } -.dark-mode .explorer-content .markdown-body img { filter: none !important; } -/* phone viewer bar: same 12px inline padding both ends */ -@media (max-width: 767px) { - .viewer-bar { padding-left: 12px !important; padding-right: 12px !important; } - .vb-signin { height: 30px !important; padding: 0 10px !important; } +@media (max-width: 767px) { .vb-icon, .vb-support { width: 36px !important; height: 36px !important; } + .navbar .nav-signin-m, .navbar-toggler { height: 36px !important; border-radius: var(--radius-control) !important; } } +.overview-page .ov-spark-fill, .overview-page .ov-spark-fill-alt, .overview-page .ov-spark-fill-new-user { background: color-mix(in srgb, var(--accent) 70%, transparent) !important; } +.overview-page .ov-dot-legend { background: var(--accent) !important; } -/* ===== Round 33 admin ===== */ -/* dashboard: status date on its own wrapping line, visible edit action */ -.paper-table.paper-table-dashboard .paper-table-head, .paper-table.paper-table-dashboard .paper-table-row { grid-template-columns: minmax(240px, 3fr) 190px 60px 120px 300px !important; } -.paper-table-dashboard .cell-status .status-sub-date { white-space: normal !important; overflow: visible !important; text-overflow: clip !important; } -.row-edit { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: var(--radius-control); color: var(--ink-soft) !important; } -.row-edit:hover { background: var(--hover-bg-color); color: var(--color) !important; } +/* ----- Conferences ----- */ +.conferences-page .paper-table:has(.paper-table-empty) .paper-table-head { display: none !important; } +.conferences-page .paper-table-empty .conf-empty-new .ui-icon { width: 15px; height: 15px; } +.conference-page .paper-crumbs + .d-flex > .d-flex { margin-top: 2px; } +.conference-page > div > p[role="alert"] { display: flex; align-items: center; gap: 8px; margin: 16px 0 0; padding: 10px 14px; font-size: 14px; color: var(--color); background: var(--status-error-soft); border: 1px solid var(--border-color); border-radius: var(--radius-control); } +.conf-repo-toolbar .seg-countline { margin-left: auto; } +@media (max-width: 767px) { .conf-repo-toolbar .seg-countline { margin-left: 0; } +} +@media (min-width: 768px) { + .conference-page .conf-repo-toolbar .seg-filter { grid-area: seg; justify-self: start; } + .conference-page .conf-repo-toolbar .dashboard-filter-controls { grid-area: sort; justify-self: end; } +} +.paper-page .conf-repo-toolbar .dropdown-toggle .filter-btn-label::after { content: "·"; margin-left: 6px; color: var(--ink-faint); } +/* Heart: muted at rest, full red on hover */ + +/* ----- File viewer ----- */ +.vb-support .ui-icon, .nav-support-inline .nav-heart { color: #C25B5E !important; fill: #C25B5E !important; } +.vb-support:hover .ui-icon, .nav-support-inline:hover .nav-heart { color: #E5484D !important; fill: #E5484D !important; } +.dark-mode .vb-support .ui-icon, .dark-mode .nav-support-inline .nav-heart { color: #D9787B !important; fill: #D9787B !important; } +/* Demo panes follow the section head grid */ +/* Mock form chips: no strikethrough */ +/* Dark: stronger CTA contrast, hairline hero frame, sidebar one step up, readable selection, untouched images */ +/* Phone viewer bar: same 12px inline padding both ends */ +@media (max-width: 767px) { + .vb-signin { height: 30px !important; } +} +.row-edit { display: inline-flex; align-items: center; justify-content: center; color: var(--ink-soft) !important; } +.row-edit:hover { color: var(--color) !important; } .row-edit .ui-icon { width: 16px; height: 16px; } -.cell-actions { display: flex; align-items: center; gap: 4px; justify-content: flex-end; } -/* type filter: one contained segmented control */ -.dashboard-filter-controls .btn-group[aria-label="Type"] { background: var(--hover-bg-color); padding: 3px; border-radius: calc(var(--radius-control) + 3px); gap: 2px; } -.dashboard-filter-controls .btn-group[aria-label="Type"] > .btn { border: 0 !important; background: transparent !important; color: var(--ink-soft) !important; border-radius: var(--radius-control) !important; height: 32px; box-shadow: none !important; } -.dashboard-filter-controls .btn-group[aria-label="Type"] > .btn.btn-primary { background: var(--paper-card) !important; color: var(--color) !important; box-shadow: 0 1px 2px rgba(0,0,0,.08), 0 0 0 1px var(--border-color) !important; } -/* one input border everywhere */ -.dashboard-page .dashboard-filter-row .form-control, .admin-filter-row .form-control, .paper-page .search-wrap .form-control { border: 1px solid #A39D92 !important; } -.dark-mode .dashboard-page .dashboard-filter-row .form-control, .dark-mode .admin-filter-row .form-control, .dark-mode .paper-page .search-wrap .form-control { border-color: #4A443D !important; } -/* admin overview health banner */ -.ov-health { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; margin: 0 0 20px; border-radius: var(--radius-control); background: color-mix(in srgb, var(--status-error, #B42318) 8%, transparent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--status-error, #B42318) 30%, transparent); font-size: 14px; color: var(--color); } +/* Admin overview health banner */ + +/* ----- Admin ----- */ +.ov-health { + display: flex; + gap: 10px; + align-items: flex-start; + padding: 12px 14px; + margin: 0 0 20px; + border-radius: var(--radius-control); + font-size: 14px; + color: var(--color); + background: var(--paper-card) !important; + box-shadow: inset 3px 0 0 var(--status-error, #B42318), inset 0 0 0 1px var(--border-color) !important; +} .ov-health .ui-icon { width: 18px; height: 18px; flex: none; margin-top: 1px; color: var(--status-error, #B42318); } -.dark-mode .ov-health { background: rgba(240,138,130,.10); box-shadow: inset 0 0 0 1px rgba(240,138,130,.35); } -.dark-mode .ov-health .ui-icon { color: #F08A82; } -/* admin tables: no per-cell type icon, cells align with headers */ -.cell-anon .record-type-icon { display: none !important; } -.cell-anon { padding-left: 0 !important; } -/* errors: compact rows, sans message */ -.errors-page .errors-row-main { padding-top: 10px !important; padding-bottom: 10px !important; min-height: 46px; align-items: center !important; } -.errors-page .col-when { display: flex; gap: 8px; align-items: baseline; } +.dark-mode .ov-health { + background: var(--paper-card) !important; + box-shadow: inset 3px 0 0 #F08A82, inset 0 0 0 1px var(--border-color) !important; +} +/* Errors: compact rows, sans message */ .errors-page .when-abs { font-size: 12px; } .errors-page .msg-code { font-family: var(--font-sans) !important; font-weight: 500 !important; font-size: 13.5px !important; } - -/* ===== Round 34: mobile chrome, toggles, heading chips ===== */ @media (max-width: 767px) { - /* one button style in the phone top bar */ + /* One button style in the phone top bar */ .viewer-bar .vb-support, .viewer-bar .vb-icon, .viewer-bar .vb-signin { height: 36px !important; border-radius: var(--radius-control) !important; background: transparent !important; box-shadow: inset 0 0 0 1px var(--border-color) !important; border: 0 !important; } .viewer-bar .vb-support, .viewer-bar .vb-icon { width: 36px !important; } - .viewer-bar .vb-signin { padding: 0 12px !important; } - /* toolbar icons: 36px ghost hit areas */ - .file-card-head .card-files-btn, .file-card-head .tb-copy-m, .file-card-head .tb-more-btn { width: 36px !important; height: 36px !important; border-radius: var(--radius-control) !important; background: transparent !important; box-shadow: inset 0 0 0 1px var(--border-color) !important; color: var(--color) !important; } - /* stronger code scroll cue */ - .file-card.is-code.no-wrap .file-card-body::after { width: 64px !important; background: linear-gradient(to right, transparent, var(--paper-card) 70%) !important; } - .dark-mode .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, transparent, var(--canvas-bg-color) 75%) !important; } + /* Toolbar icons: 36px ghost hit areas */ + .file-card-head .card-files-btn, .file-card-head .tb-copy-m, .file-card-head .tb-more-btn { width: 36px !important; color: var(--color) !important; } + /* Stronger code scroll cue */ } -/* active toggle = accent icon, distinct from hover */ +/* Active toggle = accent icon, distinct from hover */ .btn-toggle.is-on, .btn-toggle[aria-pressed="true"] { color: var(--accent) !important; background: var(--accent-soft) !important; } -.dark-mode .btn-toggle.is-on { background: rgba(124,199,190,.14) !important; } -/* chips in headings scale with the heading, lighter */ -.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip, .markdown-body h3 .redact-chip { font-size: 0.78em !important; padding: 0 6px !important; vertical-align: 0.08em !important; font-weight: 600 !important; } -/* outline: wider, top aligned with H1 */ -@media (min-width: 1200px) { .readme-toc { padding-top: 10px; } } -/* landing mock toggles: off state is outlined dark text, on has a check */ +/* Chips in headings scale with the heading, lighter */ +/* Outline: wider, top aligned with H1 */ +/* Landing mock toggles: off state is outlined dark text, on has a check */ .fm-toggles span { color: var(--color) !important; } -/* dark hero frame: single 1px edge */ -.dark-mode .paper-frame { border: 0 !important; box-shadow: 0 0 0 1px #34302B, 0 24px 60px rgba(0,0,0,.45) !important; } - -/* ===== Round 34 admin ===== */ +/* Dark hero frame: single 1px edge */ +.dark-mode .paper-frame { border: 0 !important; box-shadow: 0 0 0 1px #34302B, 0 12px 32px rgba(0,0,0,.4) !important; } .q-section-right .q-legend-completed { color: #2F7D4F !important; } .q-section-right .q-legend-failed { color: #B42318 !important; } .dark-mode .q-section-right .q-legend-completed { color: #6FBF8A !important; } .dark-mode .q-section-right .q-legend-failed { color: #F08A82 !important; } -.q-chart-wrap canvas { max-height: 180px; } .avatar-fallback { width: 28px; height: 28px; flex: none; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--hover-bg-color); color: var(--ink-soft); font-size: 12px; font-weight: 600; } .mono-id { font-family: var(--font-mono) !important; font-size: 13px !important; } - -.landing-continue:disabled { background: var(--hover-bg-color) !important; border-color: var(--border-color) !important; color: var(--ink-soft) !important; opacity: 1 !important; cursor: not-allowed; } .paper-table .anon-sub, .paper-table .anon-sub * { font-size: 12px; } -/* dashboard: usage chip sits beside the primary action */ -.dashboard-heading-actions { display: flex; align-items: center; gap: 10px; } .dashboard-heading-actions .dashboard-quota { position: relative; margin: 0 !important; } -.dashboard-heading-actions .quota-panel { right: 0; left: auto !important; } @media (max-width: 767px) { - /* admin nav + status pills: one horizontally scrolling row each */ - .admin-nav { display: flex !important; flex-wrap: nowrap !important; overflow-x: auto; scrollbar-width: none; gap: 4px; margin-left: -16px; margin-right: -16px; padding: 0 16px 4px; } - .admin-nav::-webkit-scrollbar, .admin-summary::-webkit-scrollbar { display: none; } - .admin-nav a { flex: none; white-space: nowrap; } - .admin-summary { display: flex !important; flex-wrap: nowrap !important; overflow-x: auto; scrollbar-width: none; gap: 6px; margin-left: -16px; margin-right: -16px; padding: 0 16px 4px; } - .admin-summary > * { flex: none; white-space: nowrap; } - /* row metadata wraps instead of truncating */ - .paper-table .anon-sub { flex-wrap: wrap !important; white-space: normal !important; row-gap: 2px; } - .paper-table .anon-sub > span, .paper-table .anon-sub > a { overflow: visible !important; text-overflow: clip !important; white-space: nowrap; } - .paper-table .cell-anon .repo-name { white-space: normal !important; overflow-wrap: anywhere; overflow: visible !important; text-overflow: clip !important; } - /* overview cards: details wrap, uptime does not sit alone */ - .overview-page .ov-kpi-sub { white-space: normal !important; overflow: visible !important; text-overflow: clip !important; } - .overview-page .ov-kpi-row { grid-template-columns: 1fr 1fr !important; } -} -.dashboard-page .dashboard-heading-actions { flex-direction: row !important; align-items: center !important; gap: 10px !important; } -@media (max-width: 767px) { - .admin-page .admin-nav { flex-wrap: nowrap !important; overflow-x: auto !important; margin-left: -16px; margin-right: -16px; padding: 0 16px 4px; } - header.viewer-bar .vb-icon, header.viewer-bar .vb-support { box-shadow: inset 0 0 0 1px var(--border-color) !important; background: transparent !important; } + /* Admin nav + status pills: one horizontally scrolling row each */ + .admin-nav { gap: 4px; margin-left: -16px; margin-right: -16px; padding: 0 16px 4px; } + /* Overview cards: details wrap, uptime does not sit alone */ + .overview-page .ov-kpi-sub { + text-overflow: clip !important; + overflow: visible !important; + padding-right: 4px; + white-space: nowrap !important; + font-size: 11.5px !important; + } } @media (max-width: 767px) { - .dashboard-page .dashboard-heading { flex-direction: column !important; align-items: stretch !important; gap: 12px; } .dashboard-page .dashboard-heading-actions { justify-content: space-between !important; width: 100%; } - .row-edit { display: none !important; } } -@media (max-width: 767px) { .paper-table-dashboard .copy-url { background: transparent !important; box-shadow: inset 0 0 0 1px var(--border-color) !important; } } - -/* ===== Round 35: quieter phone chrome, summary spacing, heading chips, outline gap ===== */ @media (max-width: 767px) { - .mobile-sub { display: flex !important; align-items: center; gap: 6px; margin-top: 3px !important; } - .mobile-sub > * + *::before { content: "·"; margin-right: 6px; color: var(--ink-muted); font-weight: 400; } - .mobile-sub > b::before { display: none; } - /* phone chrome: ghost icons, only Sign in keeps a border */ - header.viewer-bar .vb-icon, header.viewer-bar .vb-support { box-shadow: none !important; background: transparent !important; } + .mobile-sub { align-items: center; } + /* Phone chrome: ghost icons, only Sign in keeps a border */ .file-card-head .card-files-btn, .file-card-head .tb-copy-m, .file-card-head .tb-more-btn { box-shadow: none !important; background: transparent !important; } .file-card-head .card-files-btn:active, .file-card-head .tb-copy-m:active, .file-card-head .tb-more-btn:active { background: var(--hover-bg-color) !important; } - .file-card-head { padding-top: 6px !important; padding-bottom: 6px !important; } } -/* chips inside headings: a tint, not a box */ -.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip, .markdown-body h3 .redact-chip { box-shadow: none !important; border: 0 !important; padding: 0 5px !important; font-weight: 500 !important; } -/* outline closer to the column */ -@media (min-width: 1200px) { .reading-layout { gap: 40px !important; } } -/* find input: lighter focus ring */ +/* Chips inside headings: a tint, not a box */ +/* Outline closer to the column */ +@media (min-width: 1200px) { + .reading-layout { padding: 0 24px !important; justify-content: center !important; } +} +/* Find input: lighter focus ring */ .ace_search_field:focus, .ace_search .ace_search_field:focus { box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 22%, transparent) !important; border-color: color-mix(in srgb, var(--accent) 70%, transparent) !important; } -/* muted small text one step darker */ +/* Muted small text one step darker */ .paper-eyebrow, .demo-terms label span, .paper-footer, .paper-footer a { color: var(--ink-soft) !important; } - -/* ===== Round 35 admin ===== */ -/* dark primary: one token, white text */ +/* Dark primary: one token, white text */ .dark-mode .paper-page .btn-ink, .dark-mode .anonymize-page .btn-ink, .dark-mode .paper-page .btn-primary, .dark-mode .page-head-row .btn-primary, .dark-mode .btn-primary, .dark-mode .btn-hero, .dark-mode .landing-continue { background: #237A71 !important; border-color: #237A71 !important; color: #fff !important; } .dark-mode .paper-page .btn-ink:hover, .dark-mode .anonymize-page .btn-ink:hover, .dark-mode .btn-primary:hover { background: #1E6B63 !important; color: #fff !important; filter: none !important; } /* Continue stays a real primary; empty input just does nothing */ .landing-continue, .landing-continue:disabled { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; opacity: 1 !important; cursor: pointer; } -/* errors: info is neutral */ -.errors-page .seg.seg-info { background: var(--ink-faint) !important; opacity: 1 !important; } .errors-page .sev-dot.sev-info, .errors-page .dot-info { background: var(--ink-muted) !important; } -/* phone admin tabs/pills: edge fade as scroll cue */ +/* Phone admin tabs/pills: edge fade as scroll cue */ @media (max-width: 767px) { - .admin-page .admin-nav, .admin-summary { -webkit-mask-image: linear-gradient(to right, #000 82%, transparent) !important; mask-image: linear-gradient(to right, #000 82%, transparent) !important; scroll-snap-type: x proximity; } - .admin-page .admin-nav a, .admin-summary > * { scroll-snap-align: start; } .admin-page .dashboard-filters-toggle, .admin-page .admin-filters-toggle { width: auto !important; } } - -/* ===== Round 36 admin ===== */ -/* filters: label binds to its own field, groups spaced apart */ +/* Filters: label binds to its own field, groups spaced apart */ .admin-filter-inline { display: inline-flex; align-items: center; gap: 6px; margin-left: 14px; } -.admin-filter-inline label { margin: 0 !important; font-size: 12.5px; color: var(--ink-soft); } -/* one control height and border in filter rows */ -.dashboard-page .dashboard-filter-row .form-control, .admin-filter-row .form-control, .paper-page .search-wrap .form-control { border-color: var(--border-color) !important; height: 36px !important; } -.dashboard-page .dashboard-filter-row .form-control:focus, .admin-filter-row .form-control:focus { border-color: var(--accent) !important; } -.dashboard-page .dashboard-filter-controls .btn, .dashboard-page .dashboard-filter-controls .dropdown-toggle { height: 36px; } -/* plain data in neutral text */ -.paper-table [role="cell"].num a, .admin-page .cell-repos a { color: var(--color) !important; font-family: var(--font-sans) !important; } -/* errors: consistent header weight, tighter rows */ -.errors-page .col-count { font-weight: inherit !important; color: inherit !important; } -.errors-page .errors-row-main { min-height: 52px !important; padding-top: 8px !important; padding-bottom: 8px !important; } -/* connections: equal columns */ -.connections-grid { display: grid !important; grid-template-columns: 1fr 1fr !important; align-items: stretch; } -@media (max-width: 767px) { .connections-grid { grid-template-columns: 1fr !important; } } -/* mobile dashboard: show the link text */ +/* Errors: consistent header weight, tighter rows */ +/* Connections: equal columns */ +/* Mobile dashboard: show the link text */ .admin-page .admin-filter-row .form-control, .admin-page .admin-filter-inline .form-control, .admin-page .search-wrap .form-control { height: 36px !important; min-height: 36px !important; border: 1px solid var(--border-color) !important; font-size: 13.5px !important; padding-top: 0 !important; padding-bottom: 0 !important; } .admin-page .admin-filter-row .form-control:focus, .admin-page .admin-filter-inline .form-control:focus { border-color: var(--accent) !important; } -.admin-page select.form-control { height: 36px !important; border: 1px solid var(--border-color) !important; } -.admin-page .paper-table .anon-sub { gap: 0 !important; column-gap: 0 !important; } .admin-page .paper-table .anon-sub > a { border-bottom: 0 !important; text-decoration: none; } -/* ===== Round 36 viewer ===== */ -.tb-menu-note { display: flex; align-items: center; gap: 10px; padding: 8px 12px; font-size: 13px; color: var(--ink-soft); } +/* ----- File viewer ----- */ +.tb-menu-note { display: flex; align-items: center; gap: 10px; padding: 8px 12px; } .tb-menu-note .ui-icon { width: 16px; height: 16px; } -/* outline: darker inactive items, active item in accent text */ -.readme-toc a { color: var(--ink-soft) !important; font-size: 13.5px !important; } -.readme-toc a.lvl-3 { font-size: 13px !important; } -.readme-toc a.is-active { color: var(--accent) !important; font-weight: 500 !important; } +/* Outline: darker inactive items, active item in accent text */ +.readme-toc a { color: var(--ink-soft) !important; } .dark-mode .readme-toc a.is-active { color: #A8DDD6 !important; } -/* find: prev/next joined like Raw | Copy | Download */ +/* Find: prev/next joined like Raw | Copy | Download */ .ace_search_form .ace_searchbtn { border-radius: 0 !important; margin: 0 !important; } -.ace_search_form .ace_searchbtn.prev { border-radius: var(--radius-control) 0 0 var(--radius-control) !important; margin-left: 8px !important; } -.ace_search_form .ace_searchbtn.next { border-radius: 0 var(--radius-control) var(--radius-control) 0 !important; margin-left: -1px !important; } .ace_search .ace_searchbtn.next, .ace_search .ace_searchbtn.prev { box-shadow: none !important; } -/* current find match: no border, so it can't be confused with a redaction chip */ +/* Current find match: no border, so it can't be confused with a redaction chip */ .ace_editor .ace_marker-layer .ace_selected-word, .ace_editor .ace_marker-layer .ace_selection { box-shadow: none !important; border: 0 !important; } -/* phone toolbar aligns to the content gutter */ -@media (max-width: 767px) { - .file-card-head { padding-left: 12px !important; padding-right: 12px !important; } - .file-card-head .file-card-path { column-gap: 8px !important; } -} -/* dark selected tree row a touch lighter */ -.dark-mode .files .file.active > a { background: rgba(255,255,255,.07) !important; } - -/* ===== Round 37: reading measure, string hue, find toggles, quieter snapshot, hero scale ===== */ -/* reading column actually reaches ~700px beside the outline */ -@media (min-width: 1200px) { .reading-layout { grid-template-columns: minmax(0, 700px) 190px !important; gap: 40px !important; padding: 0 24px !important; } } -/* strings move to ink-blue so teal redaction chips stand apart (GitHub-like) */ -.ace-chrome .ace_string { color: #0A3069 !important; } +/* Phone toolbar aligns to the content gutter */ +/* Dark selected tree row a touch lighter */ +/* Reading column actually reaches ~700px beside the outline */ +/* Strings move to ink-blue so teal redaction chips stand apart (GitHub-like) */ .dark-mode .ace_editor .ace_string, .ace-nord-dark .ace_string { color: #A5C8FF !important; } -.ace_editor .ace_marker-layer .ace_redacted { background: color-mix(in srgb, var(--accent) 20%, transparent) !important; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 55%, transparent) !important; border-radius: 3px; } -/* find toggles: 28px, 12px text, clear on state */ -.ace_search .ace_button { height: 28px !important; min-width: 30px !important; font-size: 12px !important; color: var(--ink-soft) !important; display: inline-flex !important; align-items: center; justify-content: center; } -.ace_search .ace_button.checked { background: var(--accent-soft) !important; color: var(--accent) !important; box-shadow: inset 0 0 0 1px var(--accent) !important; } -.ace_search_counter { font-size: 12.5px !important; color: var(--ink-soft) !important; } -.ace_searchbtn_close::before { font-size: 18px !important; font-weight: 300 !important; } -/* wrap toggle on: tint + accent ring */ +/* Find toggles: 28px, 12px text, clear on state */ +.ace_search .ace_button { min-width: 30px !important; font-size: 12px !important; } +.ace_search_counter { font-size: 12.5px !important; } +/* Wrap toggle on: tint + accent ring */ .btn-toggle.is-on { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent) !important; } -/* snapshot: plain text, no capsule, so Support and Sign in lead */ -.vb-snapshot { background: transparent !important; box-shadow: none !important; color: var(--ink-soft) !important; padding-left: 4px !important; padding-right: 4px !important; } -/* dark tree selection readable */ -.dark-mode .files .file.active > a { background: rgba(255,255,255,.10) !important; color: #F2EEE8 !important; } -/* headings wrap balanced */ -.paper-faq-title, .paper-section-head h2, .paper-hero h1 { text-wrap: balance; } -/* demo panes equal */ -@media (min-width: 992px) { .demo-panes { grid-template-columns: 1fr 1fr !important; gap: 20px !important; } } -/* one inline-link treatment */ -.paper-faq-a a, .paper-faq details a:not(.btn) { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; text-decoration-color: color-mix(in srgb, currentColor 40%, transparent); } -/* phone code: tighter gutter */ -@media (max-width: 767px) { .file-card.is-code .ace_gutter-cell { padding-left: 8px !important; padding-right: 8px !important; } } - -/* ===== Round 37 admin ===== */ -.auto-refresh-label { font-family: var(--font-sans) !important; } -.errors-page .status-pill.status-warn:not(.is-error), .errors-page .status-pill { } +/* Snapshot: plain text, no capsule, so Support and Sign in lead */ +.vb-snapshot { background: transparent !important; } +/* Dark tree selection readable */ +/* Demo panes equal */ +/* Phone code: tighter gutter */ +@media (max-width: 767px) { + .file-card.is-code .ace_gutter-cell { padding-left: 4px !important; padding-right: 6px !important; } +} +.auto-refresh-label { font-family: var(--font-sans) !important; white-space: nowrap !important; } .ov-spark-fill { opacity: 1 !important; background: color-mix(in srgb, var(--accent) 70%, transparent) !important; } -.connections-grid .connection-link:not(.connection-danger) { display: inline-flex; align-items: center; height: 34px; padding: 0 12px; border: 1px solid var(--border-color); border-radius: var(--radius-control); color: var(--color) !important; text-decoration: none !important; } +.connections-grid .connection-link:not(.connection-danger) { padding: 0 12px; border: 1px solid var(--border-color); border-radius: var(--radius-control); color: var(--color) !important; text-decoration: none !important; } .reading-layout .file-content.markdown-body, .reading-layout .markdown-body { padding-left: 0 !important; padding-right: 0 !important; } -.explorer-content .file-card .reading-layout .file-content.markdown-body { padding-left: 0 !important; padding-right: 0 !important; } - -/* ===== Round 38 admin ===== */ -/* one header rhythm on every admin page: title row is always 44px */ -.admin-page h1.paper-page-title { margin: 0 !important; line-height: 44px !important; min-height: 44px; } -.admin-page .ov-header, .admin-page .q-header, .admin-page .errors-header { min-height: 44px; margin: 0 0 12px !important; display: flex; align-items: center; justify-content: space-between; } -.admin-page > h1.paper-page-title { margin-bottom: 12px !important; } -/* active single-select pill: filled teal, white text, no dot */ -.admin-page:has(.admin-users-row) .admin-summary .summary-pill.active { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; } -.admin-page:has(.admin-users-row) .admin-summary .summary-pill.active .count { color: rgba(255,255,255,.8) !important; } -.admin-page:has(.admin-users-row) .admin-summary .summary-pill.active::before { display: none !important; } -/* native checkboxes take the accent */ -.admin-page input[type="checkbox"] { accent-color: var(--accent); width: 16px; height: 16px; } -/* alert: neutral surface, red only on the edge and icon */ -.ov-health { background: var(--paper-card) !important; box-shadow: inset 3px 0 0 var(--status-error, #B42318), inset 0 0 0 1px var(--border-color) !important; } -.dark-mode .ov-health { background: var(--paper-card) !important; box-shadow: inset 3px 0 0 #F08A82, inset 0 0 0 1px var(--border-color) !important; } -/* usage chip: plain text, no ring that reads as loading */ +.admin-page .ov-header, .admin-page .q-header, .admin-page .errors-header { margin: 0 0 12px !important; display: flex; align-items: center; justify-content: space-between; } +/* Active single-select pill: filled teal, white text, no dot */ +/* Alert: neutral surface, red only on the edge and icon */ +/* Usage chip: plain text, no ring that reads as loading */ .dashboard-quota .quota-summary-ring { display: none !important; } -/* errors: one-line time, compact rows */ -.errors-page .errors-row-main { min-height: 44px !important; } +/* Errors: one-line time, compact rows */ .errors-page .when-abs { display: none !important; } @media (max-width: 767px) { - /* status pills wrap compactly; tabs wrap into tidy rows */ - .admin-summary { flex-wrap: wrap !important; overflow: visible !important; -webkit-mask-image: none !important; mask-image: none !important; margin-left: 0 !important; margin-right: 0 !important; padding: 0 !important; } - .admin-summary .summary-pill { height: 30px !important; padding: 0 10px !important; font-size: 13px !important; } - .admin-page .admin-nav { flex-wrap: wrap !important; overflow: visible !important; -webkit-mask-image: none !important; mask-image: none !important; margin-left: 0 !important; margin-right: 0 !important; padding: 0 !important; gap: 2px !important; } - .admin-page .admin-nav a { min-height: 34px !important; padding: 0 10px !important; font-size: 13.5px !important; } - .admin-page .admin-nav a .ui-icon { display: none !important; } + /* Status pills wrap compactly; tabs wrap into tidy rows */ + .admin-page .admin-nav { margin-left: 0 !important; margin-right: 0 !important; } } - -/* ===== Round 38 viewer/landing ===== */ -.fm-toggles span { display: inline-flex; align-items: center; gap: 6px; } -.fm-toggles span::before { content: ""; width: 12px; height: 12px; flex: none; } -.fm-toggles .is-on::before { background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-7'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-7'/%3E%3C/svg%3E") center/contain no-repeat; } -.paper-faq-toc a, .faq-toc a, .paper-faq nav a { text-decoration: none !important; } -@media (max-width: 991px) { .navbar .navbar-toggler { border-color: transparent !important; background: transparent !important; box-shadow: none !important; } } -.ace-chrome .ace_gutter-cell { color: #8A847A !important; } -.dark-mode .ace_editor .ace_gutter-cell { color: #7A746B !important; } - -/* ===== Round 39: one-system code palette, redaction tint in front of text ===== */ -/* warm, low-saturation syntax so teal stays the only accent */ +.fm-toggles span { display: inline-flex; } +.paper-faq-toc a, .paper-faq nav a { text-decoration: none !important; } +@media (max-width: 991px) { + .navbar .navbar-toggler { border-color: transparent !important; background: transparent !important; box-shadow: none !important; margin-right: -6px; } +} +/* Warm, low-saturation syntax so teal stays the only accent */ .ace-chrome .ace_keyword, .ace-chrome .ace_storage, .ace-chrome .ace_keyword.ace_operator.ace_new { color: #7A3E6E !important; } -.ace-chrome .ace_string { color: #6B5A1E !important; } .ace-chrome .ace_entity.ace_name.ace_function, .ace-chrome .ace_support.ace_function { color: #2B2824 !important; font-weight: 500; } .ace-chrome .ace_constant.ace_numeric, .ace-chrome .ace_constant.ace_language, .ace-chrome .ace_constant { color: #8A4B12 !important; } .ace-chrome .ace_comment { color: #8A847A !important; font-style: italic; } @@ -10867,1619 +10681,1133 @@ input[type="checkbox"] { accent-color: var(--accent); width: 15px; height: 15px; .ace-chrome .ace_support.ace_type, .ace-chrome .ace_support.ace_class, .ace-chrome .ace_entity.ace_name.ace_tag { color: #7A3E6E !important; } .ace-chrome .ace_entity.ace_other.ace_attribute-name { color: #8A4B12 !important; } .dark-mode .ace_editor .ace_keyword, .dark-mode .ace_editor .ace_storage, .dark-mode .ace_editor .ace_support.ace_type, .dark-mode .ace_editor .ace_entity.ace_name.ace_tag { color: #D7A6CB !important; } -.dark-mode .ace_editor .ace_string { color: #D9C08A !important; } .dark-mode .ace_editor .ace_entity.ace_name.ace_function, .dark-mode .ace_editor .ace_support.ace_function, .dark-mode .ace_editor .ace_variable, .dark-mode .ace_editor .ace_identifier { color: #ECE7DF !important; } .dark-mode .ace_editor .ace_constant.ace_numeric, .dark-mode .ace_editor .ace_constant, .dark-mode .ace_editor .ace_entity.ace_other.ace_attribute-name { color: #E0B070 !important; } .dark-mode .ace_editor .ace_comment { color: #8A847A !important; font-style: italic; } .dark-mode .ace_editor .ace_paren, .dark-mode .ace_editor .ace_punctuation, .dark-mode .ace_editor .ace_keyword.ace_operator { color: #A39D92 !important; } -/* redaction marker now sits in front of the text: translucent teal turns the term teal */ -.ace_editor .ace_marker-layer .ace_redacted { background: rgba(31,106,100,.22) !important; box-shadow: inset 0 0 0 1px rgba(31,106,100,.55) !important; border-radius: 3px; mix-blend-mode: multiply; } -.dark-mode .ace_editor .ace_marker-layer .ace_redacted { background: rgba(124,199,190,.26) !important; box-shadow: inset 0 0 0 1px rgba(124,199,190,.6) !important; mix-blend-mode: screen; } -/* line numbers readable */ -.ace-chrome .ace_gutter-cell { color: #77716A !important; } -.dark-mode .ace_editor .ace_gutter-cell { color: #8A847A !important; } -/* reading pair centred in the pane */ -@media (min-width: 1200px) { .reading-layout { justify-content: center !important; } } -/* landing mock: unchecked toggle has no empty icon slot */ -.fm-toggles span:not(.is-on)::before { display: none !important; } -/* demo card header: URL truncates */ -.demo-panes .pane-header { display: flex; gap: 10px; min-width: 0; } +/* Line numbers readable */ +/* Reading pair centred in the pane */ +/* Demo card header: URL truncates */ +.demo-panes .pane-header { gap: 10px; min-width: 0; min-height: 40px !important; box-sizing: border-box; display: flex; } .demo-panes .pane-url { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -@media (max-width: 767px) { .mobile-sub { font-size: 12.5px !important; line-height: 1.4; } } - -/* ===== Round 39 admin ===== */ -.ov-live { font-size: 12.5px; color: var(--ink-soft); } -.admin-summary .summary-pill:not(.active) .count { text-decoration: none !important; } -.paper-table:not(.paper-table-dashboard) .paper-table-row, .paper-table:not(.paper-table-dashboard) .paper-table-head { column-gap: 24px !important; } -.connection-label { font-size: 12.5px; color: var(--ink-soft); margin-right: 4px; } -.paper-table-dashboard .copy-url:hover { background: var(--hover-bg-color) !important; box-shadow: inset 0 0 0 1px var(--border-color) !important; } -.dashboard-page .show-hidden, .dashboard-page .dashboard-count button { font-size: 13px !important; } -.q-legend-active, .q-dot-active, .status-active { } - -/* ===== Round 40: phone dashboard row = title + menu / meta / full-width link chip ===== */ -@media (max-width: 767px) { - .paper-table.paper-table-dashboard .paper-table-row { display: grid !important; grid-template-columns: minmax(0, 1fr) auto !important; grid-template-areas: "name more" "meta meta" "link link" !important; row-gap: 8px !important; } - .paper-table.paper-table-dashboard .paper-table-row > .cell-anon { grid-area: name !important; grid-column: auto !important; min-width: 0; } - .paper-table.paper-table-dashboard .paper-table-row > .dashboard-row-meta { grid-area: meta !important; grid-column: auto !important; } - .paper-table.paper-table-dashboard .paper-table-row > .cell-actions { display: contents !important; } - .paper-table-dashboard .cell-actions > .copy-url { grid-area: link; width: 100% !important; height: 36px !important; padding: 0 12px !important; justify-content: space-between !important; background: var(--hover-bg-color) !important; box-shadow: none !important; } - .paper-table-dashboard .cell-actions > .copy-url .copy-url-text { display: inline !important; min-width: 0; overflow: hidden; text-overflow: ellipsis; } - .paper-table-dashboard .cell-actions > .dropdown { grid-area: more; align-self: start; } - .paper-table-dashboard .cell-actions > .row-edit, .paper-table-dashboard .cell-actions > .project-details-button { display: none !important; } -} - -@media (max-width: 767px) { .paper-table.paper-table-dashboard .paper-table-row { padding-right: 12px !important; } } - -/* ===== Round 40 viewer/landing ===== */ +.ov-live { font-size: 12.5px; color: var(--ink-soft); display: inline-flex; align-items: center; gap: 6px; } /* Support: ghost, heart + label carry it; Sign in is the only bordered control */ -.vb-support { background: transparent !important; box-shadow: none !important; border: 0 !important; } +.vb-support { background: transparent !important; border: 0 !important; } .vb-support:hover { background: var(--hover-bg-color) !important; } -.vb-snapshot { margin-right: 8px !important; } -/* eyebrows and stat captions one step darker */ -.paper-eyebrow, .paper-stat-sub, .paper-stats .sub, .paper-stat small { color: #5E5950 !important; } -.dark-mode .paper-eyebrow, .dark-mode .paper-stat-sub { color: #B5AEA3 !important; } -/* one landing section rhythm */ -.paper-section-head, .paper-qa { margin-top: 80px !important; } -.demo { margin-bottom: 0 !important; } -/* softer current find match */ -.ace_editor .ace_marker-layer .ace_selected-word { background: rgba(242,204,96,.35) !important; } -.ace_editor .ace_marker-layer .ace_selection { background: rgba(232,184,58,.55) !important; } +/* Eyebrows and stat captions one step darker */ +/* One landing section rhythm */ +/* Softer current find match */ /* FAQ answers use the column */ -.paper-faq details > :not(summary), .paper-faq-a { max-width: 720px !important; } - -/* ===== Round 40 admin ===== */ -.q-state-chip.q-state-active::before { background: var(--color) !important; } -.q-state-chip.q-state-delayed::before { background: var(--ink-muted) !important; } .repo-access-note > span:last-child { display: flex; gap: 8px; align-items: flex-start; padding: 10px 12px; border-radius: var(--radius-control); background: color-mix(in srgb, #B7791F 8%, transparent); box-shadow: inset 3px 0 0 #B7791F; color: var(--color) !important; } -.repo-access-note > span:last-child .ui-icon { color: #9A6416; flex: none; margin-top: 2px; } -.dark-mode .repo-access-note > span:last-child { background: rgba(224,176,112,.10); box-shadow: inset 3px 0 0 #E0B070; } -.repo-access-note > span:has(.ui-icon) { background: color-mix(in srgb, #B7791F 8%, transparent) !important; box-shadow: inset 3px 0 0 #B7791F !important; color: var(--color) !important; } -.repo-access-note > span:has(.ui-icon) .ui-icon { color: #9A6416 !important; } -.dark-mode .repo-access-note > span:has(.ui-icon) { background: rgba(224,176,112,.10) !important; box-shadow: inset 3px 0 0 #E0B070 !important; } -.dark-mode .repo-access-note > span:has(.ui-icon) .ui-icon { color: #E0B070 !important; } - -/* ===== Round 41 viewer/landing ===== */ -@media (min-width: 1200px) { .reading-layout { grid-template-columns: minmax(0, 680px) 190px !important; padding: 0 40px !important; } } -/* syntax: same warm family, more separation */ +/* Syntax: same warm family, more separation */ .ace-chrome .ace_keyword, .ace-chrome .ace_storage, .ace-chrome .ace_support.ace_type, .ace-chrome .ace_entity.ace_name.ace_tag { color: #93306A !important; } -.ace-chrome .ace_string { color: #7A5300 !important; } .ace-chrome .ace_constant.ace_numeric, .ace-chrome .ace_constant { color: #A14A0F !important; } -.dark-mode .ace_editor .ace_string { color: #CDB98E !important; } .ace_editor .ace_marker-layer .ace_redacted { background: rgba(31,106,100,.28) !important; box-shadow: inset 0 0 0 1px rgba(31,106,100,.65) !important; } -/* find bar: own surface, 32px controls */ -.ace_search { background: var(--paper-card) !important; box-shadow: inset 0 1px 0 var(--border-color), inset 0 -1px 0 var(--border-color) !important; } -.ace_search .ace_search_field { height: 32px !important; border-radius: var(--radius-control) !important; } -.ace_search .ace_searchbtn { height: 32px !important; } -/* live dot in the accent, not green */ -.paper-stats-dot { background: var(--accent) !important; box-shadow: 0 0 0 3px var(--accent-soft) !important; } -.paper-stats-meta-right { color: var(--ink-soft) !important; font-weight: 400 !important; } -/* hero mock: crisp edge + short shadow */ -.paper-frame { box-shadow: 0 0 0 1px var(--border-color), 0 12px 32px rgba(40,30,20,.08) !important; border: 0 !important; } -.dark-mode .paper-frame { box-shadow: 0 0 0 1px #34302B, 0 12px 32px rgba(0,0,0,.4) !important; } -/* FAQ questions heavier */ -.paper-faq summary, .paper-faq details > summary { font-weight: 600 !important; } -/* phone: toolbar breathing room, stronger code fade */ -@media (max-width: 767px) { - .file-card-head .file-card-path { column-gap: 12px !important; } - .file-card.is-code.no-wrap .file-card-body::after { width: 72px !important; background: linear-gradient(to right, rgba(255,255,255,0), var(--paper-card) 65%) !important; } -} - -/* ===== Round 41 admin ===== */ -.dashboard-page .hidden-toggle { font-size: 13px !important; color: var(--color) !important; } -.paper-table-dashboard .btn-icon-dots { width: 32px !important; height: 32px !important; } +/* Find bar: own surface, 32px controls */ +.ace_search { background: var(--paper-card) !important; } +/* Live dot in the accent, not green */ +.paper-stats-dot { background: var(--accent) !important; } +/* Hero mock: crisp edge + short shadow */ +.paper-frame { border: 0 !important; } +/* Phone: toolbar breathing room, stronger code fade */ .access-q { display: block; font-size: 13px; color: var(--ink-soft); margin: 4px 0 6px; } -.repo-access-note { max-width: none !important; width: 100%; } .repo-access-note > span:has(.ui-icon) { width: 100%; } -@media (max-width: 767px) { .anonymize-page .repo-access-switch, .anonymize-page [role="group"][aria-label*="onnection"] { width: 100% !important; display: flex !important; } .anonymize-page .repo-access-switch button { flex: 1 1 0; } } -/* one empty-state card everywhere */ +@media (max-width: 767px) { .anonymize-page .repo-access-switch, .anonymize-page [role="group"][aria-label*="onnection"] { width: 100% !important; display: flex !important; } +} +/* One empty-state card everywhere */ .paper-table-empty, .admin-empty { border: 1px solid var(--border-color) !important; border-radius: var(--radius-surface, 12px) !important; background: var(--paper-card) !important; padding: 40px 24px !important; text-align: center; } -.dark-mode .paper-table-head { background: #26221E !important; } -.dark-mode .paper-table-row { background: #1E1B18; } *:has(> .paper-table-empty:only-child), .paper-table:has(.paper-table-empty) { border-top: 0 !important; border-bottom: 0 !important; box-shadow: none !important; } - -/* ===== Round 42: code redactions are real tokens styled exactly like the Markdown chip ===== */ -.ace_editor .ace_text-layer .ace_redacted { color: var(--accent) !important; background: var(--accent-soft) !important; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 30%, transparent); border-radius: 3px; font-weight: 500; } -.dark-mode .ace_editor .ace_text-layer .ace_redacted { color: #A8DDD6 !important; background: rgba(124,199,190,.16) !important; box-shadow: inset 0 0 0 1px rgba(124,199,190,.35); } +.ace_editor .ace_text-layer .ace_redacted { font-weight: 500; } .ace_editor .ace_marker-layer .ace_redacted { display: none !important; } -/* heading chips: a tint at the heading's own scale, not two buttons */ -.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip, .markdown-body h3 .redact-chip { font-size: .82em !important; padding: 0 .2em !important; background: color-mix(in srgb, var(--accent) 9%, transparent) !important; box-shadow: none !important; border: 0 !important; line-height: 1.1 !important; vertical-align: baseline !important; font-weight: 500 !important; } -/* snapshot: one step darker text */ -.vb-snapshot { color: var(--color) !important; opacity: .78; } -/* no double rule between toolbar and find bar */ -.ace_search { box-shadow: inset 0 -1px 0 var(--border-color) !important; } -/* tool toggle "on": teal icon + fill, distinct from hover */ +/* Heading chips: a tint at the heading's own scale, not two buttons */ +.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip, .markdown-body h3 .redact-chip { border: 0 !important; line-height: 1.1 !important; } +/* Snapshot: one step darker text */ +/* No double rule between toolbar and find bar */ +/* Tool toggle "on": teal icon + fill, distinct from hover */ .btn-find.is-on, .btn-toggle.is-on { color: var(--accent) !important; background: var(--accent-soft) !important; } -/* outline: wrapped items hang-indent */ -.readme-toc a { text-indent: 0; padding-left: 13px !important; } -.readme-toc a.lvl-3 { padding-left: 25px !important; } - -/* ===== Round 42 admin ===== */ @media (max-width: 767px) { .anonymize-page .repo-access, .repo-access { flex-wrap: wrap; width: 100%; } .repo-access-switch { display: flex !important; width: 100% !important; } - .repo-access-switch button { flex: 1 1 0 !important; white-space: nowrap !important; justify-content: center; } } -.q-card.selected { box-shadow: none !important; border-color: color-mix(in srgb, var(--accent) 60%, transparent) !important; } -.dark-mode .paper-table-head { background: #2E2A25 !important; } -.dark-mode .paper-table-row { background: #1C1A17 !important; } .ov-chart-legend { font-family: var(--font-sans) !important; font-size: 12px !important; color: var(--ink-soft) !important; } - -/* ===== Round 43 ===== */ -/* outline: parent/child hierarchy */ -.readme-toc a.lvl-2 { font-weight: 500 !important; color: var(--color) !important; } -.readme-toc a.lvl-3 { font-size: 12.5px !important; color: var(--ink-soft) !important; font-weight: 400 !important; } -.readme-toc a.is-active { color: var(--accent) !important; } -.readme-toc a.lvl-2 + a.lvl-2, .readme-toc a.lvl-3 + a.lvl-2 { margin-top: 4px; } -/* dark chips brighter */ -.dark-mode .redact-chip, .dark-mode .ace_editor .ace_text-layer .ace_redacted { color: #9FE0D7 !important; background: rgba(124,199,190,.20) !important; box-shadow: inset 0 0 0 1px rgba(124,199,190,.38) !important; } -/* wrap toggle "on": teal icon + inset ring (beats any ghost/hover rule) */ -.file-card-head .btn.btn-toggle.is-on, .file-card-head .btn.btn-toggle[aria-pressed="true"] { color: var(--accent) !important; background: var(--accent-soft) !important; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent) !important; } -.dark-mode .file-card-head .btn.btn-toggle.is-on { color: #A8DDD6 !important; background: rgba(124,199,190,.14) !important; } -/* phone: toolbar toggle aligned with file name line */ -@media (max-width: 767px) { .file-card-head .file-card-path .card-files-btn { align-self: start !important; } } -/* phone hero mock fades out instead of being cut */ -@media (max-width: 767px) { .paper-hero-shot { max-height: 300px; overflow: hidden; -webkit-mask-image: linear-gradient(#000 70%, transparent); mask-image: linear-gradient(#000 70%, transparent); } } +/* Dark chips brighter */ +.dark-mode .redact-chip, .dark-mode .ace_editor .ace_text-layer .ace_redacted { color: #9FE0D7 !important; background: rgba(124,199,190,.20) !important; } +/* Wrap toggle "on": teal icon + inset ring (beats any ghost/hover rule) */ +.file-card-head .btn.btn-toggle.is-on, .file-card-head .btn.btn-toggle[aria-pressed="true"] { + box-shadow: none !important; +} +/* Phone: toolbar toggle aligned with file name line */ +/* Phone hero mock fades out instead of being cut */ .dark-mode .hero-mock-doc, .dark-mode .paper-frame { background: #24211D !important; } -.paper-stats-meta-right { color: #5E5950 !important; } -.dark-mode .paper-stats-meta-right { color: #B5AEA3 !important; } -/* admin */ +/* Admin */ .errors-page .status-pill.status-neutral { background: var(--hover-bg-color) !important; color: var(--ink-soft) !important; border-color: var(--border-color) !important; } .connections-grid .btn, .connections-grid .connection-link:not(.connection-danger) { height: 36px !important; min-height: 36px !important; padding-top: 0 !important; padding-bottom: 0 !important; display: inline-flex !important; align-items: center; } .claim-page input, .claim-page .form-control { border: 1px solid var(--border-color) !important; } -@media (max-width: 767px) { - .overview-page .ov-kpi-sub { white-space: nowrap !important; font-size: 12px !important; overflow: visible !important; } - .overview-page .ov-kpi-row > :last-child:nth-child(odd) { grid-column: 1 / -1; } - .admin-summary .summary-pill { height: 28px !important; } - .admin-summary .summary-total { flex-basis: 100%; } - /* admin repo cards: actions top-right */ - .admin-page .paper-table:not(.paper-table-dashboard) .paper-table-row { position: relative; padding-right: 44px !important; } - .admin-page .paper-table:not(.paper-table-dashboard) .paper-table-row > :last-child { position: absolute !important; top: 10px; right: 4px; } - .admin-page .paper-table .anon-sub > span { white-space: nowrap; } -} - -/* ===== Round 44 ===== */ -/* viewer: toggle "on" = teal icon only (no fill on a default-on tool) */ -.file-card-head .btn.btn-toggle.is-on, .file-card-head .btn.btn-toggle[aria-pressed="true"] { background: transparent !important; box-shadow: none !important; color: var(--accent) !important; } -.file-card-head .btn.btn-toggle.is-on:hover { background: var(--hover-bg-color) !important; } -.dark-mode .file-card-head .btn.btn-toggle.is-on { background: transparent !important; color: #A8DDD6 !important; } -/* syntax strings: cooler muted slate */ -.ace-chrome .ace_string { color: #3D5A73 !important; } -.dark-mode .ace_editor .ace_string { color: #AFC4D6 !important; } -.ace-chrome .ace_gutter-cell { color: #6B655D !important; } -/* outline: inactive in secondary ink, sections 500 */ -.readme-toc a.lvl-2 { color: var(--ink-soft) !important; font-weight: 500 !important; } -.readme-toc a.lvl-3 { color: var(--ink-soft) !important; opacity: .9; } -.readme-toc a.is-active { color: var(--accent) !important; } -.readme-toc-head { font-size: 12.5px !important; } -/* top bar */ -.vb-snapshot { opacity: 1 !important; color: var(--ink-soft) !important; } -@media (max-width: 767px) { .viewer-bar .vb-signin { height: 32px !important; } } +.auth-options .auth-continue-github + small { display: block; text-align: left !important; margin-top: 10px; } +.auth-options .auth-card > h2 { margin-top: 0; } +/* Top bar */ .paper-footer-meta { font-size: 15px !important; color: var(--ink-soft) !important; } -.dark-mode .files .file.active > a { background: rgba(255,255,255,.07) !important; } - -/* admin/signed-in: one left edge for every page */ -@media (min-width: 992px) { - .anonymize-landing { justify-content: flex-start !important; align-items: flex-start !important; } - .anonymize-landing-inner { margin-left: max(4px, calc((100vw - 1048px) / 2 - 20px)) !important; margin-right: auto !important; max-width: 640px !important; } -} -/* settings / create-conference: form uses the full grid width */ -.paper-settings-body > :not(aside) { max-width: none !important; } -.paper-settings-body .paper-card, .paper-settings-body section { max-width: none !important; } -/* dark: rows sit on the page, header lifted */ +/* Dark: rows sit on the page, header lifted */ .dark-mode .paper-table-row { background: transparent !important; } -.dark-mode .paper-table-head { background: #26231F !important; } -/* phone: KPI sub-lines wrap inside padding; hidden count visible */ +/* Phone: KPI sub-lines wrap inside padding; hidden count visible */ @media (max-width: 767px) { - .overview-page .ov-kpi-sub { white-space: normal !important; font-size: 12px !important; padding-right: 4px; } - .dashboard-count { position: static !important; width: auto !important; height: auto !important; margin: 0 0 0 auto !important; overflow: visible !important; clip: auto !important; font-size: 12.5px !important; } + .dashboard-count { width: auto !important; height: auto !important; font-size: 12.5px !important; } } -.errors-page input[type="search"] { font-family: var(--font-sans) !important; } -.paper-settings-body .form-text, .paper-settings-body small, .paper-settings-body .paper-field-help { max-width: none !important; } - -/* ===== Round 45 ===== */ -.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip { font-size: .7em !important; vertical-align: .12em !important; } +.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip { vertical-align: .12em !important; } .ace_search { border-bottom: 1px solid var(--border-color) !important; box-shadow: none !important; border-top: 0 !important; } -.ace_search .ace_button, .ace_search .ace_searchbtn { height: 32px !important; } -.file-card-head .btn.btn-toggle.is-on, .file-card-head .btn.btn-toggle[aria-pressed="true"] { background: var(--accent-soft) !important; color: var(--accent) !important; box-shadow: none !important; } -.dark-mode .file-card-head .btn.btn-toggle.is-on { background: rgba(124,199,190,.14) !important; } @media (max-width: 767px) { .file-card-head .card-files-btn { width: 32px !important; height: 32px !important; } - .file-card-head .file-card-path { column-gap: 8px !important; } } -.dark-mode .leftCol { background: #1C1A17 !important; } .dark-mode .explorer-content, .dark-mode .file-card { background: #141311 !important; } .nav-support-inline { color: var(--color) !important; font-weight: 500 !important; } -/* admin */ -@media (min-width: 992px) { .anonymize-landing { padding-top: 24px !important; } .anonymize-landing-inner { padding-top: 0 !important; margin-top: 0 !important; } } -.repo-access-note + *, .anonymize-page .btn-outline-ink { } +/* Admin */ .anonymize-page .access-q + .btn-outline-ink { height: 30px !important; padding: 0 10px !important; font-size: 13px !important; } -.admin-summary .summary-pill:not(.active) { color: var(--ink-soft) !important; } .volume-legend > span { display: inline-flex; align-items: center; gap: 5px; margin-left: 12px; } - -/* ===== Round 46 ===== */ -/* viewer */ -.dark-mode .leftCol { background: #221F1B !important; } -@media (max-width: 767px) { .file-card.is-code.no-wrap .file-card-body::after { box-shadow: inset -1px 0 0 var(--border-color), inset -10px 0 10px -10px rgba(0,0,0,.18) !important; } } -.readme-toc a.is-active { font-weight: 600 !important; } -.paper-stats-meta-right { color: var(--ink-soft) !important; font-weight: 500 !important; letter-spacing: inherit; } -.paper-faq-a a, .paper-faq details a:not(.btn), .paper-section a { text-decoration-color: color-mix(in srgb, currentColor 35%, transparent) !important; text-decoration-thickness: 1px !important; } -/* admin */ +/* Admin */ .volume-axis { display: flex; justify-content: space-between; font-size: 11.5px; color: var(--ink-soft); margin-top: 6px; } .errors-page .seg.seg-info { background: color-mix(in srgb, var(--ink-muted) 55%, transparent) !important; } .paper-crumbs a { color: var(--ink-soft) !important; } .paper-crumbs .here { color: var(--color) !important; } + +/* ----- Dashboard ----- */ .paper-table .mobile-meta-icon, .paper-table [role="cell"] > .ui-icon { opacity: .45; } -@media (min-width: 768px) { .paper-table-dashboard .cell-expires { padding-left: 24px !important; } } .dark-mode .paper-table-dashboard .paper-table-head, .dark-mode .paper-table-head { background: transparent !important; box-shadow: inset 0 -1px 0 var(--border-color) !important; } @media (max-width: 767px) { - .paper-table-dashboard .cell-actions > .copy-url { max-width: none !important; justify-self: stretch; } - .paper-table.paper-table-dashboard .paper-table-row { padding-right: 16px !important; } - .dashboard-filters-toggle { border: 1px solid var(--border-color) !important; border-radius: var(--radius-control) !important; height: 44px; padding: 0 12px !important; } - .overview-page .ov-kpi-card { padding-left: 14px !important; padding-right: 14px !important; } - .overview-page .ov-kpi-sub { white-space: nowrap !important; font-size: 11.5px !important; } + .dashboard-filters-toggle { border: 1px solid var(--border-color) !important; padding: 0 12px !important; } .search-wrap .kbd, .search-wrap kbd, .admin-filter-row kbd { display: none !important; } } - -/* ===== Round 47 ===== */ -/* heading chips: teal text only */ -.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip, .markdown-body h3 .redact-chip { background: transparent !important; padding: 0 !important; font-size: .78em !important; color: var(--accent) !important; text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 6px; text-decoration-color: color-mix(in srgb, var(--accent) 30%, transparent); } -.dark-mode .markdown-body h1 .redact-chip, .dark-mode .markdown-body h2 .redact-chip { color: #9FE0D7 !important; } -/* phone code: unmistakable edge */ -@media (max-width: 767px) { .file-card.is-code.no-wrap .file-card-body::after { width: 56px !important; background: linear-gradient(to right, rgba(255,255,255,0), var(--paper-card) 55%) !important; } } -/* outline long items truncate */ -.readme-toc a { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } -/* admin */ +/* Heading chips: teal text only */ +/* Phone code: unmistakable edge */ +/* Outline long items truncate */ +/* Admin */ @media (min-width: 768px) { .paper-table-dashboard .cell-expires, .paper-table-dashboard .paper-table-head > :nth-child(4) { text-align: left !important; justify-content: flex-start !important; padding-left: 24px !important; } } .anonymize-page .form-control-lg, .anonymize-page #sourceUrl-landing { border: 1px solid var(--border-color) !important; } .anonymize-page .form-control-lg:focus { border-color: var(--accent) !important; } -.repo-access-note > span:has(.ui-icon) { background: var(--accent-soft) !important; box-shadow: inset 3px 0 0 var(--accent) !important; color: var(--color) !important; font-size: 13.5px; } -.repo-access-note > span:has(.ui-icon) .ui-icon { color: var(--accent) !important; } -.dark-mode .repo-access-note > span:has(.ui-icon) { background: rgba(124,199,190,.10) !important; box-shadow: inset 3px 0 0 #7CC7BE !important; } -.dark-mode .repo-access-note > span:has(.ui-icon) .ui-icon { color: #7CC7BE !important; } - -.readme-toc a { white-space: normal !important; overflow: visible !important; text-overflow: clip !important; } - -/* ===== Round 48 ===== */ -/* viewer: explicit scroll hint on phone code */ -@media (max-width: 767px) { - .file-card.is-code.no-wrap .file-card-body::before { content: "Scroll \2192"; position: absolute; right: 10px; bottom: 14px; z-index: 9; font: 500 12px/1 var(--font-sans); color: var(--ink-soft); background: var(--paper-card); box-shadow: 0 0 0 1px var(--border-color), 0 2px 6px rgba(0,0,0,.06); border-radius: 999px; padding: 6px 10px; pointer-events: none; } -} -/* syntax: more separation in both themes */ +.repo-access-note > span:has(.ui-icon) { color: var(--color) !important; } +/* Viewer: explicit scroll hint on phone code */ +/* Syntax: more separation in both themes */ .ace-chrome .ace_string { color: #2D5F86 !important; } -.ace-chrome .ace_keyword, .ace-chrome .ace_storage { color: #9A2B6B !important; } .dark-mode .ace_editor .ace_string { color: #9CC3E6 !important; } -.dark-mode .ace_editor .ace_keyword, .dark-mode .ace_editor .ace_storage { color: #E3A6D2 !important; } /* README H1 scale */ -.reading-layout .markdown-body h1 { font-size: 34px !important; letter-spacing: -.015em; } -/* admin: one control height per density */ +/* Admin: one control height per density */ .errors-page select, .errors-page .form-control, .errors-page .btn-group > .btn, .errors-page .btn-icon { height: 36px !important; min-height: 36px !important; } -.errors-page .col-when .when-rel { font-size: 13.5px !important; } -.q-danger-group { display: inline-flex; gap: 6px; margin-left: auto; padding-left: 12px; border-left: 1px solid var(--border-color); } -.q-stats-actions { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; } -/* privacy notice back to calm amber */ -.repo-access-note > span:has(.ui-icon) { background: color-mix(in srgb, #B7791F 8%, transparent) !important; box-shadow: inset 3px 0 0 #B7791F !important; } -.repo-access-note > span:has(.ui-icon) .ui-icon { color: #9A6416 !important; } -.dark-mode .repo-access-note > span:has(.ui-icon) { background: rgba(224,176,112,.10) !important; box-shadow: inset 3px 0 0 #E0B070 !important; } -.dark-mode .repo-access-note > span:has(.ui-icon) .ui-icon { color: #E0B070 !important; } -@media (max-width: 767px) { - .admin-page .paper-table input[type="checkbox"], .admin-page .paper-table [role="cell"]:has(> input[type="checkbox"]), .admin-page .paper-table-head [role="columnheader"]:has(> input[type="checkbox"]) { display: none !important; } - .admin-page .dashboard-filters-toggle, .admin-page .admin-filters-toggle { width: auto !important; } +.q-danger-group { + border-left: 0 !important; + grid-column: 1 / -1; + justify-self: start; + margin: 4px 0 0 !important; + padding: 10px 0 0 !important; + border-top: 1px solid var(--border-color) !important; + width: 100%; + display: flex !important; + gap: 8px; + align-items: center; + flex-wrap: wrap; +} +/* Privacy notice back to calm amber */ +@keyframes scrollHintOut { to { opacity: 0; visibility: hidden; } } -.q-danger-group { border-left: 0 !important; padding-left: 0 !important; } -/* ===== Round 49 ===== */ -@media (max-width: 767px) { - .file-card.is-code.no-wrap .file-card-body::before { animation: scrollHintOut .4s ease 2.6s forwards; } -} -@keyframes scrollHintOut { to { opacity: 0; visibility: hidden; } } -.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip, .markdown-body h3 .redact-chip { text-decoration: none !important; background: color-mix(in srgb, var(--accent) 8%, transparent) !important; padding: 0 .15em !important; border-radius: 4px; } +/* ----- File viewer ----- */ .readme-toc a.lvl-3 { padding-left: 29px !important; } .ace_search .ace_button { color: var(--color) !important; opacity: .8; } -.ace_search .ace_button.checked { opacity: 1; } .dark-mode .files .file > a, .dark-mode .files .folder > a { color: #D8D2C8 !important; } -.ov-live { display: inline-flex; align-items: center; gap: 6px; } -.ov-live-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); } -.anon-sub .meta-sep { display: inline-flex; align-items: center; white-space: nowrap; } -@media (max-width: 767px) { .anon-sub { column-gap: 0 !important; } } -.connection-status-legacy { color: var(--ink-soft) !important; } -.connection-status-legacy::before { background: var(--ink-muted) !important; } -.q-detail { align-items: start !important; } -.q-chart-wrap canvas { max-height: 200px; } - -/* meta line: a dot that lands at a line start is clipped away */ -.admin-page .paper-table .cell-anon .anon-text:has(.meta-sep) { overflow: hidden; } -.admin-page .paper-table .anon-sub:has(.meta-sep) { display: flex !important; flex-wrap: wrap !important; margin-left: -14px !important; gap: 0 !important; } -.admin-page .paper-table .anon-sub:has(.meta-sep) > * { white-space: nowrap; } -.admin-page .paper-table .anon-sub:has(.meta-sep) > *::before { content: "\00b7"; display: inline-block; width: 14px; text-align: center; color: var(--ink-muted); } - -/* ===== Round 50 ===== */ .ace-chrome .ace_gutter-cell, .dark-mode .ace_editor .ace_gutter-cell { font-size: 12px !important; } -.q-stats-actions { display: grid !important; grid-template-columns: auto auto 1fr; gap: 8px; align-items: center; } -.q-danger-group { grid-column: 1 / -1; justify-self: start; margin: 4px 0 0 !important; padding: 10px 0 0 !important; border-top: 1px solid var(--border-color) !important; width: 100%; display: flex !important; gap: 8px; } +.q-stats-actions { gap: 8px; align-items: center; } @media (max-width: 767px) { - .overview-page .ov-header { flex-wrap: nowrap !important; align-items: center !important; } - .ov-live { font-size: 12px; } - .ov-live .ov-live-text-extra { display: none; } - .overview-page .ov-daily-card, .overview-page .ov-kpi-card { padding-left: 14px !important; padding-right: 14px !important; } + .ov-live { font-size: 12px; margin-left: 0 !important; } } -.admin-page input[type="checkbox"] { width: 14px !important; height: 14px !important; } - -/* ===== Round 51: demo source highlights + phone code edge shadow ===== */ -.demo-input-wrap { position: relative; } -.demo-input-wrap .demo-backdrop { position: absolute; inset: 0; margin: 0; overflow: hidden; color: var(--color); pointer-events: none; overflow-wrap: break-word; } -.demo-input-wrap .demo-input { position: relative; color: transparent !important; caret-color: var(--color); background: transparent !important; overflow-wrap: break-word; } -.demo-input-wrap .demo-input::selection { color: var(--color); background: color-mix(in srgb, var(--accent) 25%, transparent); } -.demo-match { background: transparent; color: inherit; padding: 0; border-radius: 2px; box-shadow: inset 0 -2px 0 color-mix(in srgb, var(--accent) 55%, transparent); background-color: color-mix(in srgb, var(--accent) 10%, transparent); } -.demo-output .redact-chip { font-size: 12.5px !important; } -@media (max-width: 767px) { - .file-card.is-code.no-wrap .file-card-body::before { display: none !important; } - .file-card.is-code.no-wrap .file-card-body::after { width: 36px !important; background: linear-gradient(to right, rgba(0,0,0,0), rgba(60,45,30,.10)) !important; box-shadow: inset -1px 0 0 rgba(60,45,30,.18) !important; } - .dark-mode .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, rgba(0,0,0,0), rgba(0,0,0,.45)) !important; box-shadow: inset -1px 0 0 rgba(255,255,255,.12) !important; } +.demo-input-wrap .demo-backdrop { + margin: 0; + overflow: hidden; + color: var(--color); + pointer-events: none; + overflow-wrap: break-word; + position: relative !important; + inset: auto !important; } -@media (max-width: 767px) { - .file-card.is-code.no-wrap .file-card-body::after { width: 44px !important; background: linear-gradient(to right, rgba(255,255,255,0), var(--paper-card) 70%) !important; box-shadow: inset -8px 0 10px -6px rgba(40,30,20,.28), inset -1px 0 0 rgba(40,30,20,.16) !important; } - .dark-mode .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, rgba(0,0,0,0), var(--canvas-bg-color) 70%) !important; box-shadow: inset -8px 0 10px -6px rgba(0,0,0,.6), inset -1px 0 0 rgba(255,255,255,.1) !important; } +.demo-input-wrap .demo-input { + color: transparent !important; + caret-color: var(--color); + background: transparent !important; + overflow-wrap: break-word; + position: absolute !important; + inset: 0; + overflow: hidden; +} +.demo-match { + background: transparent; + color: inherit; + padding: 0; + border-radius: 2px; + background-color: color-mix(in srgb, var(--accent) 10%, transparent); + box-shadow: inset 0 -1px 0 color-mix(in srgb, var(--accent) 50%, transparent) !important; +} +.q-chart-empty { + position: absolute; + inset: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 4px; + background: var(--paper-card); + text-align: center; + border-bottom: 0 !important; + border-radius: 8px; } - -.q-chart-wrap { position: relative; } -.q-chart-empty { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; background: var(--paper-card); border-bottom: 1px solid var(--border-color); text-align: center; } -.q-chart-empty strong { font-size: 14px; font-weight: 500; color: var(--color); } -.q-chart-empty span { font-size: 12.5px; color: var(--ink-soft); } .q-danger-group .btn { margin-left: 0 !important; } /* H1/H2 chips: teal text only */ -.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip, .markdown-body h3 .redact-chip { background: transparent !important; padding: 0 !important; border-radius: 0 !important; } -/* settings/create forms: same input token */ +/* Settings/create forms: same input token */ .paper-settings-body .form-control, .paper-settings-body textarea, .paper-settings-body input[type="text"], .paper-settings-body input[type="date"], .paper-settings-body input[type="url"] { border: 1px solid var(--border-color) !important; border-radius: var(--radius-control) !important; } -/* users: no per-row repo icon, more gap */ -.admin-page .paper-table .cell-views .ui-icon { display: none !important; } -.admin-page:has(.admin-users-row) .paper-table-row, .admin-page:has(.admin-users-row) .paper-table-head { column-gap: 40px !important; } -@media (max-width: 767px) { .overview-page .ov-header { justify-content: space-between !important; } .ov-live { margin-left: 0 !important; } } +.admin-page:has(.admin-users-row) .paper-table-row, +.admin-page:has(.admin-users-row) .paper-table-head { + column-gap: 40px !important; + grid-template-columns: 28px minmax(220px, 320px) 120px 140px 1fr 40px !important; +} .dark-mode .paper-table-dashboard .paper-table-row { background: transparent !important; } -.mono-hash { font-family: var(--font-mono) !important; font-size: 11.5px; } .nav-heart-m { display: none; } -@media (max-width: 991px) { .nav-heart-m { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; margin-left: auto; color: #C25B5E; } .nav-heart-m .ui-icon { width: 18px; height: 18px; fill: currentColor; } .nav-heart-m + .nav-signin-m { margin-left: 4px !important; } } - -/* ===== Round 52 ===== */ -/* find button pressed while the find bar is open */ -.file-card:has(.ace_search:not([style*="none"])) .btn-find { color: var(--accent) !important; background: var(--accent-soft) !important; } -.paper-link-arrow { color: var(--color) !important; text-decoration-color: color-mix(in srgb, var(--accent) 55%, transparent) !important; } -/* FAQ answers use the row width */ -.paper-faq details > :not(summary), .paper-faq-a, .paper-faq details p { max-width: none !important; } -/* stats in the display serif */ -.paper-stat-value { font-family: var(--font-display, var(--font-serif)) !important; font-weight: 400 !important; letter-spacing: -.01em; } -/* admin */ +@media (max-width: 991px) { .nav-heart-m { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; margin-left: auto; color: #C25B5E; } + .nav-heart-m .ui-icon { width: 18px; height: 18px; fill: currentColor; } + .nav-heart-m + .nav-signin-m { margin-left: 4px !important; } +} +/* Find button pressed while the find bar is open */ +.paper-link-arrow { color: var(--color) !important; } +/* Stats in the display serif */ +.paper-stat-value { font-family: var(--font-display, var(--font-serif)) !important; letter-spacing: -.01em; } +/* Admin */ @media (max-width: 767px) { .ov-live-extra { display: none; } - .paper-table-dashboard .cell-views.num::after { content: " views"; color: var(--ink-soft); } - .paper-table-dashboard .cell-expires > span:not(.expires-never):not(.expires-past)::before { content: "Expires "; color: var(--ink-soft); } - .admin-page .admin-filters-toggle { width: auto !important; height: 36px !important; padding: 0 12px !important; } + .admin-page .admin-filters-toggle { + width: auto !important; + height: 36px !important; + padding: 0 12px !important; + display: inline-flex !important; + align-items: center; + } } -.dashboard-quota summary { border: 0 !important; box-shadow: none !important; background: transparent !important; padding-left: 0 !important; } -.q-card.selected { background: var(--accent-soft) !important; } -.dark-mode .q-card.selected { background: rgba(124,199,190,.08) !important; } -.dark-mode .ov-meter .fill.critical, .dark-mode .ov-meter-fill.critical { background: #F08A82 !important; } - -/* ===== Round 53 (locked decisions + alignment) ===== */ -/* heading chips: chip look, heading font + weight */ -.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip, .markdown-body h3 .redact-chip { font-family: inherit !important; font-weight: inherit !important; font-size: .9em !important; background: var(--accent-soft) !important; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 30%, transparent) !important; padding: 0 .25em !important; border-radius: 6px !important; color: var(--accent) !important; text-decoration: none !important; } +/* Heading chips: chip look, heading font + weight */ +.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip, .markdown-body h3 .redact-chip { background: var(--accent-soft) !important; border-radius: 6px !important; color: var(--accent) !important; } .dark-mode .markdown-body h1 .redact-chip, .dark-mode .markdown-body h2 .redact-chip, .dark-mode .markdown-body h3 .redact-chip { background: rgba(124,199,190,.16) !important; color: #9FE0D7 !important; } /* "on" tools: teal icon + thin teal border, no fill */ .file-card-head .btn.btn-toggle.is-on, .file-card-head .btn.btn-toggle[aria-pressed="true"], .file-card:has(.ace_search:not([style*="none"])) .btn-find { background: transparent !important; color: var(--accent) !important; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 50%, transparent) !important; } -.dark-mode .file-card-head .btn.btn-toggle.is-on, .dark-mode .file-card:has(.ace_search:not([style*="none"])) .btn-find { background: transparent !important; color: #A8DDD6 !important; box-shadow: inset 0 0 0 1px rgba(124,199,190,.5) !important; } -/* toolbar path aligns with the content's left edge; no "repository" root */ -@media (min-width: 768px) { .file-card-head { padding-left: 46px !important; } } -.breadcrumb-root { display: none !important; } -.breadcrumb-root + .breadcrumb-item::before { display: none !important; } -/* find: current match clearly stronger, counter darker */ -.ace_editor .ace_marker-layer .ace_selection { background: rgba(232,170,40,.65) !important; box-shadow: 0 0 0 1px rgba(160,100,10,.6) !important; } +/* Find: current match clearly stronger, counter darker */ .ace_search_counter { color: var(--color) !important; opacity: .75; } -/* dark selection */ -.dark-mode .files .file.active > a { background: rgba(255,255,255,.12) !important; } -.dark-mode .leftCol { box-shadow: inset -1px 0 0 rgba(255,255,255,.08) !important; } -/* landing secondary text darker */ -.paper-stat-sub, .paper-stats .sub, .paper-stat-delta, .hero-mock-doc-bar span { color: #5E5950 !important; } -.dark-mode .paper-stat-sub, .dark-mode .paper-stat-delta { color: #B5AEA3 !important; } -.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip, .markdown-body h3 .redact-chip { font-size: .72em !important; font-weight: 600 !important; vertical-align: .1em; padding: .05em .3em !important; } - -/* ===== Round 54 ===== */ +/* Dark selection */ +/* Landing secondary text darker */ +.paper-stats .sub, .paper-stat-delta, .hero-mock-doc-bar span { color: #5E5950 !important; } +.dark-mode .paper-stat-delta { color: #B5AEA3 !important; } +.markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip, .markdown-body h3 .redact-chip { font-size: .72em !important; font-weight: 600 !important; padding: .05em .3em !important; } .is-unsynced { color: var(--ink-muted) !important; font-size: 12.5px; font-family: var(--font-sans) !important; } -.q-dot.q-dot-idle { background: var(--ink-muted) !important; } -/* dark dashboard: header and rows clearly different */ +/* Dark dashboard: header and rows clearly different */ .dark-mode .paper-table, .dark-mode .paper-table-dashboard { background: transparent !important; } -.dark-mode .paper-table .paper-table-head { background: #24211D !important; } -.dark-mode .paper-table .paper-table-row { background: #141311 !important; } -/* viewer: inset only in reading mode; code view aligns with gutter */ +.dark-mode .paper-table .paper-table-row { background: #1E1B18 !important; } +/* Viewer: inset only in reading mode; code view aligns with gutter */ @media (min-width: 768px) { - .file-card.is-code .file-card-head { padding-left: 16px !important; } .readme-toc { margin-left: 16px; } .reading-layout { grid-template-columns: minmax(0, 660px) 190px !important; gap: 56px !important; } } -.dark-mode .leftCol { box-shadow: none !important; border-right: 1px solid var(--border-color) !important; } -.dark-mode .leftCol-resizer, .dark-mode .sidebar-resizer { background: transparent !important; } +.dark-mode .leftCol { box-shadow: none !important; } +.dark-mode .leftCol-resizer { background: transparent !important; } .markdown-body h1 .redact-chip, .markdown-body h2 .redact-chip, .markdown-body h3 .redact-chip { box-shadow: none !important; } -.files .file.active > a::before { left: 4px !important; top: 6px !important; bottom: 6px !important; width: 3px !important; border-radius: 2px !important; } .hero-mock-row.is-active { box-shadow: inset 3px 0 0 var(--accent) !important; border-radius: 6px; } .paper-eyebrow, .paper-stats-meta-left, .paper-stats-meta-right, .fm-label { color: #57524A !important; } -.dark-mode .paper-eyebrow, .dark-mode .paper-stats-meta-left, .dark-mode .paper-stats-meta-right { color: #BDB6AB !important; } -.demo-match { box-shadow: inset 0 -1px 0 color-mix(in srgb, var(--accent) 50%, transparent) !important; } - -/* ===== Round 55 ===== */ +.dark-mode .paper-eyebrow, .dark-mode .paper-stats-meta-left, .dark-mode .paper-stats-meta-right, .dark-mode .fm-label { color: #BDB6AB !important; } .redact-glue { white-space: nowrap; } -/* one toolbar inset for README and code */ -@media (min-width: 768px) { .file-card-head, .file-card.is-code .file-card-head { padding-left: 20px !important; } } -.dark-mode .files .file.active > a { background: rgba(255,255,255,.08) !important; } -.files .file.active > a { position: relative; } -.files .file.active > a::before { left: 0 !important; top: 4px !important; bottom: 4px !important; width: 3px !important; border-radius: 0 2px 2px 0 !important; } -/* admin */ -.paper-table .cell-expires .mobile-meta-icon, .admin-page .paper-table [role="cell"] > svg.ui-icon[aria-hidden] { display: none !important; } -@media (max-width: 767px) { .admin-page .paper-table .cell-views.num::after { content: " views"; color: var(--ink-soft); } } -.dark-mode .paper-table .paper-table-row { background: #1E1B18 !important; } -.dark-mode .paper-table .paper-table-head { background: #26231F !important; } - -/* ===== Round 56 ===== */ -/* one input token on every page */ -.paper-page input.form-control, .paper-page textarea.form-control, .paper-page select.form-control, .paper-page input[type="text"], .paper-page input[type="url"], .paper-page input[type="date"], .paper-page input[type="email"], .paper-page textarea { border: 1px solid var(--border-color) !important; border-radius: var(--radius-control) !important; } -.paper-page input:focus, .paper-page textarea:focus, .paper-page select:focus { border-color: var(--accent) !important; } -/* queues: equal-height cards, compact empty state */ -.q-detail { align-items: stretch !important; } -.q-throughput { display: flex; flex-direction: column; } -.q-throughput .q-chart-wrap { flex: 1; min-height: 180px; } -/* admin search width shared */ -.admin-page .search-wrap { flex: 0 1 420px !important; max-width: 420px !important; } -/* phone overview: Live sits right of the title */ -@media (max-width: 767px) { - .overview-page .ov-header { display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; justify-content: space-between !important; align-items: center !important; } - .overview-page .ov-header .ov-live { margin: 0 0 0 auto !important; align-self: center; } +/* One toolbar inset for README and code */ +@media (min-width: 768px) { .file-card-head, .file-card.is-code .file-card-head { padding-left: 20px !important; } } - -/* ===== Round 56 viewer ===== */ -.hero-mock-count { display: inline-flex; align-items: center; height: 20px; padding: 0 8px; border-radius: 999px; background: var(--accent-soft); color: var(--accent) !important; font-weight: 600; font-size: 11.5px; } -.dark-mode .hero-mock-count { background: rgba(124,199,190,.16); color: #A8DDD6 !important; } -.vb-support { color: var(--ink-soft) !important; font-weight: 400 !important; } +/* Admin */ +.paper-table .cell-expires .mobile-meta-icon, .admin-page .paper-table [role="cell"] > svg.ui-icon[aria-hidden] { display: none !important; } +/* One input token on every page */ +.paper-page input.form-control, .paper-page textarea.form-control, .paper-page select.form-control, .paper-page input[type="text"], .paper-page input[type="url"], .paper-page input[type="date"], .paper-page input[type="email"], .paper-page textarea { border: 1px solid var(--border-color) !important; border-radius: var(--radius-control) !important; } +/* Queues: equal-height cards, compact empty state */ +.q-throughput { display: flex; } +/* Admin search width shared */ +.admin-page .search-wrap { flex: 0 1 420px !important; max-width: 420px !important; } +/* Phone overview: Live sits right of the title */ +@media (max-width: 767px) { + .overview-page .ov-header { display: flex !important; flex-direction: row !important; } +} +.hero-mock-count { display: inline-flex; align-items: center; height: 20px; border-radius: 999px; font-size: 11.5px; } +.vb-support { color: var(--ink-soft) !important; } .vb-support:hover { color: var(--color) !important; } @media (max-width: 767px) { - .file-card.is-code .ace_gutter-cell { padding-left: 4px !important; padding-right: 6px !important; } - .file-card.is-code .ace_scroller { left: 30px !important; } .file-card.is-code .ace_gutter { width: 30px !important; } } - -/* ===== Round 57: find on rendered Markdown ===== */ -.md-find-bar { position: sticky; top: 52px; z-index: 5; display: flex; align-items: center; gap: 10px; padding: 8px 20px; background: var(--paper-card); border-bottom: 1px solid var(--border-color); } -.md-find-input { width: 260px; height: 32px; padding: 0 10px; border: 1px solid var(--border-color); border-radius: var(--radius-control); background: var(--paper-card); color: var(--color); font: 14px var(--font-sans); } -.md-find-input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); } -.md-find-count { font-size: 12.5px; color: var(--ink-soft); min-width: 64px; font-variant-numeric: tabular-nums; } +.md-find-bar { + position: sticky; + top: 52px; + z-index: 5; + display: flex; + align-items: center; + gap: 10px; + padding: 8px 20px; + border-bottom: 1px solid var(--border-color); + min-height: 47px !important; + padding-top: 7px !important; + padding-bottom: 7px !important; + padding-left: 20px !important; +} +.md-find-input { + padding: 0 10px; + border: 1px solid var(--border-color); + background: var(--paper-card); + color: var(--color); + font: 14px var(--font-sans); + width: 240px !important; + height: 30px !important; +} +.md-find-count { min-width: 64px; } .md-find-nav { display: inline-flex; } -.md-find-nav button, .md-find-close { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--border-color); background: var(--paper-card); color: var(--color); } -.md-find-nav button:first-child { border-radius: var(--radius-control) 0 0 var(--radius-control); } -.md-find-nav button:last-child { border-radius: 0 var(--radius-control) var(--radius-control) 0; margin-left: -1px; } -.md-find-nav button:disabled { opacity: .45; } -.md-find-close { border: 0; background: transparent; font-size: 20px; border-radius: var(--radius-control); } +.md-find-nav button, .md-find-close { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--border-color); background: var(--paper-card); } +.md-find-close { + border: 0; + background: transparent; + border-radius: var(--radius-control); + font-size: 18px !important; + font-weight: 300 !important; + color: var(--ink-soft) !important; +} .md-find-close:hover { background: var(--hover-bg-color); } -mark.md-find { background: rgba(242,204,96,.45); color: inherit; border-radius: 2px; padding: 0; } -mark.md-find.is-current { background: rgba(232,170,40,.8); box-shadow: 0 0 0 1px rgba(160,100,10,.6); } /* FAQ icon carries a text label on wide screens */ -@media (min-width: 1280px) { .viewer-bar a.vb-icon[href="/faq"] { width: auto !important; padding: 0 10px !important; gap: 6px; } .viewer-bar a.vb-icon[href="/faq"]::after { content: "FAQ"; font: 500 13px var(--font-sans); color: var(--ink-soft); } } .file-card-head .btn-md-find.is-on { background: transparent !important; color: var(--accent) !important; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 50%, transparent) !important; } -.md-find-input::-webkit-search-cancel-button { -webkit-appearance: none; display: none; } - -/* ===== Round 58: one find geometry; outline clears the find bar ===== */ -@media (min-width: 768px) { .md-find-bar { padding-left: 63px !important; } } -.md-find-input { width: 240px !important; } -.file-card:has(.md-find-bar) .readme-toc { top: 120px !important; } .claim-page input, .claim-page textarea { border-color: var(--border-color) !important; } .connection-status { font-size: 12.5px !important; } -@media (max-width: 767px) { .admin-page .admin-filters-toggle::before { content: ""; width: 14px; height: 14px; margin-right: 6px; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 6h16M7 12h10M10 18h4'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 6h16M7 12h10M10 18h4'/%3E%3C/svg%3E") center/contain no-repeat; } .admin-page .admin-filters-toggle { display: inline-flex !important; align-items: center; } } .paper-faq-title { text-wrap: balance; } -/* sticky toolbar + find bar must be opaque (content was showing through) */ +/* Sticky toolbar + find bar must be opaque */ .file-card-head, .md-find-bar { background: var(--paper-card) !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; opacity: 1 !important; } .dark-mode .file-card-head, .dark-mode .md-find-bar { background: #141311 !important; } - -/* ===== Round 59 ===== */ /* README: column + outline centred as one group; tighter top */ -@media (min-width: 1200px) { .reading-layout { grid-template-columns: minmax(0, 640px) 190px !important; gap: 56px !important; justify-content: center !important; padding: 0 24px !important; } } .reading-layout .file-content.markdown-body { padding-top: 32px !important; } -/* find input aligns with the content edge in both views */ -@media (min-width: 1200px) { .md-find-bar { padding-left: calc((100% - 886px) / 2) !important; } } -/* top bar: one label rule on wide screens */ -@media (min-width: 1280px) { .viewer-bar a.vb-bug { width: auto !important; padding: 0 10px !important; gap: 6px; } .viewer-bar a.vb-bug::after { content: "Report a bug"; font: 500 13px var(--font-sans); color: var(--ink-soft); } } +/* Find input aligns with the content edge in both views */ +/* Top bar: one label rule on wide screens */ .vb-snapshot { font-size: 13px !important; color: var(--ink-soft) !important; } -/* dashboard: one control height */ +/* Dashboard: one control height */ .dashboard-page .dashboard-filter-row .form-control, .dashboard-filter-controls .btn-group[aria-label="Type"] > .btn, .dashboard-page .dashboard-filter-controls .dropdown-toggle { height: 36px !important; min-height: 36px !important; } -.dashboard-filter-controls .btn-group[aria-label="Type"] { padding: 0 !important; height: 36px; align-items: center; } -.dashboard-filter-controls .btn-group[aria-label="Type"] > .btn { height: 30px !important; min-height: 30px !important; margin: 3px 0; } -/* errors: keep auto-refresh on the first row */ -.errors-page .errors-toolbar { flex-wrap: nowrap !important; } -.errors-page .errors-toolbar input[type="search"] { min-width: 0; flex: 1 1 260px; } -/* tables: lighter header band */ -.paper-table .paper-table-head { background: color-mix(in srgb, var(--hover-bg-color) 60%, transparent) !important; } - -/* ===== Round 60 ===== */ -/* viewer */ -@media (min-width: 1200px) { .reading-layout { grid-template-columns: minmax(0, 700px) 190px !important; gap: 48px !important; } } -.md-find-bar { padding-top: 4px !important; padding-bottom: 4px !important; } -.md-find-input { height: 30px !important; } -.md-find-input:focus { box-shadow: 0 0 0 1px var(--accent) !important; } -mark.md-find.is-current, .ace_editor .ace_marker-layer .ace_selection { background: rgba(240,190,80,.6) !important; box-shadow: 0 0 0 1px rgba(170,110,20,.5) !important; } -.viewer-bar .vb-right { gap: 12px !important; } +.dashboard-filter-controls .btn-group[aria-label="Type"] { padding: 0 !important; } +.dashboard-filter-controls .btn-group[aria-label="Type"] > .btn { height: 30px !important; min-height: 30px !important; } +/* Errors: keep auto-refresh on the first row */ +/* Tables: lighter header band */ .viewer-bar .vb-right > * { margin: 0 !important; } -/* admin */ -.auto-refresh-label { white-space: nowrap !important; } -.errors-page .errors-toolbar { flex-wrap: wrap !important; } -.paper-table .paper-table-head, .errors-page .errors-thead, .errors-page .errors-row-head, .q-table thead th { background: #F3F1EC !important; } -.dark-mode .paper-table .paper-table-head, .dark-mode .errors-page .errors-thead, .dark-mode .q-table thead th { background: #24211D !important; } -.summary-show-label { font-size: 12.5px; color: var(--ink-soft); margin-right: 2px; align-self: center; } -.mono-hash, .anon-sub a.mono-hash { text-decoration: none !important; border-bottom: 0 !important; } -.errors-page .errors-list-head { background: #F3F1EC !important; } .dark-mode .errors-page .errors-list-head { background: #24211D !important; } -.errors-page .errors-toolbar .search-wrap, .errors-page .errors-toolbar input[type="search"] { flex: 1 1 220px !important; max-width: 340px !important; min-width: 0 !important; } .errors-page .errors-toolbar { flex-wrap: nowrap !important; gap: 8px !important; } - -/* ===== Round 61 ===== */ -/* FAQ: chevron on the right, like every other disclosure */ -.faq-section .panel-default .panel-title a { padding: 16px 32px 16px 0 !important; position: relative; display: block; } +/* Admin */ +.paper-table .paper-table-head, .q-table thead th { background: #F3F1EC !important; } +.dark-mode .paper-table .paper-table-head, .dark-mode .q-table thead th { background: #24211D !important; } +.errors-page .errors-list-head { background: #F3F1EC !important; } +.dark-mode .errors-page .errors-list-head { background: #24211D !important; } .faq-section .panel-default .panel-body { padding-left: 0 !important; } -.faq-section .panel-default .panel-title a:after { left: auto !important; right: 6px !important; } -/* find bar aligned to the toolbar edge, close beside the arrows */ -.md-find-bar { padding-left: 20px !important; } -/* viewer wordmark a touch larger */ +/* Find bar aligned to the toolbar edge, close beside the arrows */ +/* Viewer wordmark a touch larger */ .vb-logo { font-size: 19px !important; } -@media (max-width: 767px) { .vb-logo { font-size: 18px !important; } .admin-summary .summary-show-label { flex-basis: 100%; } } -/* quiet destructive text button */ -.btn-ghost-danger { background: transparent !important; border: 1px solid transparent !important; color: #B42318 !important; display: inline-flex; align-items: center; gap: 6px; } -.btn-ghost-danger:hover { background: color-mix(in srgb, #B42318 8%, transparent) !important; } -.dark-mode .btn-ghost-danger { color: #F08A82 !important; } - -/* ===== Round 62: one find design ===== */ -mark.md-find { background: rgba(242,204,96,.32) !important; box-shadow: none !important; } -mark.md-find.is-current { background: rgba(232,160,30,.85) !important; box-shadow: 0 0 0 1px rgba(150,90,10,.7) !important; color: #2B2824 !important; } +@media (max-width: 767px) { .vb-logo { font-size: 18px !important; } +} +/* Quiet destructive text button */ .md-find-opt { height: 30px; min-width: 32px; padding: 0 8px; border: 1px solid var(--border-color); border-radius: var(--radius-control); background: var(--paper-card); color: var(--ink-soft); font: 600 12px var(--font-sans); } -.md-find-opt.is-on { color: var(--accent); box-shadow: inset 0 0 0 1px var(--accent); } -.md-find-nav button { color: var(--ink-soft) !important; } -.md-find-close { font-size: 18px !important; font-weight: 300 !important; color: var(--ink-soft) !important; } -/* code find bar: input on the same left edge as the toolbar */ -@media (min-width: 768px) { .file-card .ace_search { left: 0 !important; right: 0 !important; padding-left: 20px !important; margin: 0 !important; max-width: none !important; } } -@media (min-width: 768px) { .md-find-bar { padding-left: 71px !important; } } - -/* ===== Round 63: both find inputs on the toolbar edge; outline never jumps ===== */ +/* Code find bar: input on the same left edge as the toolbar */ @media (min-width: 768px) { - .md-find-bar { padding-left: 71px !important; } - .file-card } -@media (min-width: 1200px) { .readme-toc, .file-card:has(.md-find-bar) .readme-toc { top: 120px !important; } } - -/* dark: selected segment clearly lifted */ -.dark-mode .dashboard-filter-controls .btn-group[aria-label="Type"] > .btn.btn-primary { background: #3A3631 !important; color: #F2EEE8 !important; box-shadow: 0 0 0 1px rgba(255,255,255,.14) !important; } -/* usernames in the UI face, IDs stay mono */ -.admin-page .paper-table .user-name, .admin-page .paper-table .username, .admin-users-row .repo-name, .admin-page:has(.admin-users-row) .cell-anon .repo-name { font-family: var(--font-sans) !important; font-weight: 600; } - -/* ===== Round 64 ===== */ -/* themed checkbox everywhere in admin + dashboard */ + .file-card .ace_search { right: 0 !important; margin: 0 !important; max-width: none !important; left: 0 !important; padding-left: 16px !important; } +} +/* Usernames in the UI face, IDs stay mono */ +.admin-page .paper-table .username, .admin-users-row .repo-name, .admin-page:has(.admin-users-row) .cell-anon .repo-name { font-family: var(--font-sans) !important; font-weight: 600; } +/* Themed checkbox everywhere in admin + dashboard */ .paper-page input[type="checkbox"] { -webkit-appearance: none; appearance: none; width: 16px !important; height: 16px !important; margin: 0; border: 1.5px solid #A39D92; border-radius: 4px; background: var(--paper-card); display: inline-grid; place-content: center; cursor: pointer; vertical-align: middle; } -/* Settings checkboxes sit in the 28px gutter left of their label; the reset above zeroes that offset. */ -.paper-settings-section .form-check > input.form-check-input[type="checkbox"] { position: absolute; margin: 3px 0 0 -28px; } -.paper-page input[type="checkbox"]::before { content: ""; width: 9px; height: 9px; transform: scale(0); background: #fff; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat; } -.paper-page input[type="checkbox"]:checked { background: var(--accent); border-color: var(--accent); } -.paper-page input[type="checkbox"]:checked::before { transform: scale(1); } -.paper-page input[type="checkbox"]:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } -.dark-mode .paper-page input[type="checkbox"] { border-color: #6E6860; background: transparent; } /* "none" values share one muted style */ .detail-value.is-empty, .admin-page .detail-value:is(:empty) { color: var(--ink-muted) !important; font-style: italic; } -/* dashboard row icon buttons: 32px hit area */ +/* Dashboard row icon buttons: 32px hit area */ .paper-table-dashboard .btn-icon-dots, .row-edit { width: 32px !important; height: 32px !important; border-radius: var(--radius-control); } .paper-table-dashboard .btn-icon-dots:hover, .row-edit:hover { background: var(--hover-bg-color) !important; } - -/* ===== Round 65 ===== */ -/* queue state filters: pill shows state, no checkbox square */ +/* Queue state filters: pill shows state, no checkbox square */ .q-state-toggle input[type="checkbox"] { position: absolute; opacity: 0; width: 1px !important; height: 1px !important; pointer-events: none; } .q-state-toggle { position: relative; cursor: pointer; } -.q-state-toggle input:not(:checked) + .q-state-chip { opacity: .45; text-decoration: line-through; } -.q-state-toggle input:focus-visible + .q-state-chip { outline: 2px solid var(--accent); outline-offset: 2px; } +.q-state-toggle input:not(:checked) + .q-state-chip { text-decoration: line-through; } /* README find aligned to the reading column */ -@media (min-width: 768px) { .md-find-bar { padding-left: 31px !important; } } - -/* ===== Round 66 ===== */ .paper-page input.form-control, .paper-page textarea, .paper-page select.form-control, .paper-page input[type="text"], .paper-page input[type="url"], .paper-page input[type="date"], .anonymize-page .form-control, .md-find-input, .ace_search .ace_search_field { border-radius: 8px !important; } .paper-page .btn-primary, .paper-page .btn-ink, .page-head-row .btn-primary { min-height: 40px !important; } .paper-table .paper-table-head [role="columnheader"], .paper-table .paper-table-head > div, .errors-page .errors-list-head > * { font-weight: 500 !important; font-size: 12.5px !important; letter-spacing: 0 !important; text-transform: none !important; color: var(--ink-soft) !important; } - -/* ===== Round 67 ===== */ /* API tokens heading matches the other section headings */ .admin-page .admin-section-header h2 { font: 600 18px/1.3 var(--font-sans) !important; display: inline-flex; align-items: center; gap: 8px; } -.admin-page .admin-section-header h2 .ui-icon { width: 16px; height: 16px; color: var(--ink-soft); } -/* tree selection: marker inside the row, fill a step darker */ -.files .file.active > a { background: #E2DED7 !important; } -.files .file.active > a::before { left: 3px !important; } -.dark-mode .files .file.active > a { background: rgba(255,255,255,.09) !important; } - -/* ===== Round 68 ===== */ -.admin-page:has(.admin-users-row) .paper-table-row, .admin-page:has(.admin-users-row) .paper-table-head { grid-template-columns: 28px minmax(220px, 320px) 120px 140px 1fr 40px !important; } -@media (max-width: 767px) { .mobile-sub { margin-top: 3px !important; } } +/* Tree selection: marker inside the row, fill a step darker */ .paper-page-lede, .paper-faq-lede { text-wrap: pretty; max-width: 640px; } .errors-page .status-pill.status-neutral:not([title=""])[title] { background: transparent !important; border-color: transparent !important; color: var(--ink-muted) !important; } - -/* ===== Round 69 ===== */ -.md-find-bar { min-height: 47px !important; padding-top: 7px !important; padding-bottom: 7px !important; } -.md-find-input:focus, .ace_search .ace_search_field:focus { border-color: var(--accent) !important; box-shadow: 0 0 0 3px var(--accent-soft) !important; } -mark.md-find { background: rgba(246,224,138,.7) !important; } .ace_editor .ace_marker-layer .ace_selected-word { background: rgba(246,224,138,.7) !important; } -.files .file.active > a { background: #E6E3DC !important; } -@media (min-width: 1200px) { .readme-toc { margin-top: 32px !important; padding-top: 0 !important; } } - -/* ===== Round 70 ===== */ -.errors-page .kpi-card.kpi-info .kpi-value { color: var(--ink-soft) !important; font-weight: 500 !important; font-size: 26px !important; } -.errors-page .kpi-card.kpi-info { background: color-mix(in srgb, var(--paper-card) 70%, transparent) !important; } -.ov-meter span { background: var(--accent); } +.errors-page .kpi-card.kpi-info { background: var(--paper-card) !important; } .ov-meter.warn span { background: #B7791F !important; } .ov-meter.crit span { background: #B42318 !important; } -@media (max-width: 767px) { .admin-summary .summary-show-label { flex-basis: auto !important; } } - -/* ===== Round 71: phone row meta on one line, visible edit, usage pill, reading balance ===== */ @media (max-width: 767px) { - .paper-table.paper-table-dashboard .paper-table-row { grid-template-columns: minmax(0, 1fr) auto auto !important; grid-template-areas: "name edit more" "meta meta meta" "link link link" !important; column-gap: 2px !important; } - .paper-table-dashboard .cell-actions > .row-edit { display: inline-flex !important; grid-area: edit; align-self: start; align-items: center; justify-content: center; } - .dashboard-page .paper-table-dashboard .dashboard-row-meta { display: flex !important; flex-wrap: nowrap !important; align-items: center !important; gap: 0 !important; padding-left: 26px; font-size: 12.5px; color: var(--ink-soft); } - .dashboard-page .dashboard-row-meta .cell-status { flex: 0 0 auto !important; } - .dashboard-page .dashboard-row-meta .cell-status .status-line { gap: 6px; } - .dashboard-page .dashboard-row-meta .cell-views, .dashboard-page .dashboard-row-meta .cell-expires { display: inline-flex !important; align-items: center; font-family: var(--font-sans, Inter, sans-serif) !important; font-size: 12.5px !important; color: var(--ink-soft) !important; white-space: nowrap; margin: 0 !important; padding: 0 !important; text-align: left !important; justify-content: flex-start !important; } - .dashboard-page .dashboard-row-meta .cell-views::before, .dashboard-page .dashboard-row-meta .cell-expires::before { content: "·"; margin: 0 8px; color: var(--ink-muted); } - .dashboard-page .dashboard-row-meta .cell-views svg, .dashboard-page .dashboard-row-meta .cell-views .ui-icon { display: none !important; } - .dashboard-page .dashboard-row-meta .cell-expires .cell-label, .dashboard-page .dashboard-row-meta .cell-expires small { font-size: inherit !important; color: inherit !important; margin-right: 4px; } + .dashboard-page .dashboard-row-meta .cell-views, .dashboard-page .dashboard-row-meta .cell-expires { display: inline-flex !important; align-items: center; font-family: var(--font-sans, Inter, sans-serif) !important; font-size: 12.5px !important; color: var(--ink-soft) !important; white-space: nowrap; text-align: left !important; justify-content: flex-start !important; } + .dashboard-page .dashboard-row-meta .cell-expires small { font-size: inherit !important; color: inherit !important; margin-right: 4px; } } /* Usage reads as a control: quiet bordered pill with its ring */ -.dashboard-page .dashboard-quota > summary { border: 1px solid var(--border-color) !important; border-radius: 999px !important; padding: 0 12px 0 10px !important; height: 36px; min-height: 36px !important; display: inline-flex !important; align-items: center; gap: 8px; background: var(--paper-card) !important; } +.dashboard-page .dashboard-quota > summary { border: 1px solid var(--border-color) !important; padding: 0 12px 0 10px !important; display: inline-flex !important; align-items: center; gap: 8px; background: var(--paper-card) !important; } .dashboard-page .dashboard-quota > summary:hover { background: var(--hover-bg-color) !important; } -.dashboard-page .dashboard-quota .quota-summary-ring { display: inline-block !important; width: 16px; height: 16px; } -/* reading mode: narrower measure so the column has real margins beside sidebar and outline */ -@media (min-width: 1200px) { .reading-layout { grid-template-columns: minmax(0, 660px) 176px !important; gap: 56px !important; justify-content: center !important; } } -/* phone admin summary: count + size on row one, "Show:" heads the pills on its own line */ -@media (max-width: 767px) { - .admin-summary .summary-show-label { flex-basis: 100% !important; margin: 4px 0 -2px !important; } - .admin-summary .summary-meta { flex: 1 1 auto; } +/* Reading mode: narrower measure so the column has real margins beside sidebar and outline */ +/* One find-bar inset for README and code: the toolbar's 20px */ +@media (min-width: 768px) { .md-find-bar { padding-left: 20px !important; } } -/* empty throughput chart collapses to a short, honest panel */ -.q-throughput:has(.q-chart-empty) .q-chart-wrap { flex: 0 0 auto !important; min-height: 120px !important; height: 120px; } -.q-throughput:has(.q-chart-empty) .q-chart-wrap canvas { visibility: hidden; } -.q-chart-empty { border-bottom: 0 !important; border-radius: 8px; } -/* one find-bar inset for README and code: the toolbar's 20px */ -@media (min-width: 768px) { .md-find-bar { padding-left: 20px !important; } .file-card .ace_search { padding-left: 20px !important; } .file-card .ace_search .ace_search_form { margin-left: 0 !important; } } -@media (min-width: 768px) { .file-card .ace_search { left: 0 !important; padding-left: 0 !important; } } -@media (min-width: 1200px) { .md-find-bar { padding-left: max(20px, calc((100% - 892px) / 2)) !important; } } -/* empty throughput: message centred in the full card rather than floating near the top */ -.q-throughput:has(.q-chart-empty) .q-chart-wrap { flex: 1 1 auto !important; height: auto !important; min-height: 160px !important; } -/* destructive group is labelled so it reads as separate from the safe actions */ -.q-danger-group { align-items: center; flex-wrap: wrap; } -.q-danger-group::before { content: "Clear jobs"; flex-basis: 100%; font-size: 12px; color: var(--ink-soft); margin-bottom: 2px; } -/* queue legend chips legible */ -.q-legend span, .q-legend .q-legend-item, .q-legend button { font-size: 12px !important; } -.q-state-filters .q-state-toggle, .q-state-filters .q-state-toggle * { font-size: 12px !important; } +/* Empty throughput: message centred in the full card rather than floating near the top */ +/* Queue legend chips legible */ -/* ===== Round 72 admin: underline tabs, neutral selected queue card, neutral KPI values ===== */ +/* ----- Admin ----- */ +.q-state-filters .q-state-toggle, .q-state-filters .q-state-toggle * { font-size: 12px !important; } .admin-nav a.active, .admin-nav a.router-link-active { background: transparent !important; color: var(--accent) !important; box-shadow: inset 0 -2px 0 var(--accent) !important; border-radius: 0 !important; } .admin-nav a:not(.active):hover { background: transparent !important; color: var(--color) !important; box-shadow: inset 0 -2px 0 var(--border-color) !important; } .q-card.selected, .dark-mode .q-card.selected { background: var(--paper-card) !important; border-color: var(--accent) !important; box-shadow: inset 0 0 0 1px var(--accent) !important; } .errors-page .kpi-card .kpi-value, .errors-page .kpi-card.kpi-info .kpi-value, .errors-page .kpi-card.kpi-warn .kpi-value { color: var(--color) !important; font-weight: 600 !important; font-size: 28px !important; } -.errors-page .kpi-card.kpi-info { background: var(--paper-card) !important; } -/* empty throughput: card sizes to content instead of stretching to the stats column */ -/* dashboard row icons: darker glyphs so they read as controls */ -.paper-table-dashboard .row-edit, .paper-table-dashboard .btn-icon-dots { color: var(--color) !important; opacity: .72; } -.paper-table-dashboard .row-edit:hover, .paper-table-dashboard .btn-icon-dots:hover { opacity: 1; } -@media (max-width: 767px) { .paper-table-dashboard .cell-actions > .row-edit, .paper-table-dashboard .cell-actions > .dropdown { margin-top: -6px; } } - -/* ===== Round 73 ===== */ -/* viewer bar: FAQ and Report a bug are icon-only ghost buttons (tooltips carry the label) */ -@media (min-width: 1280px) { .viewer-bar a.vb-icon[href="/faq"], .viewer-bar a.vb-bug { width: 32px !important; padding: 0 !important; } .viewer-bar a.vb-icon[href="/faq"]::after, .viewer-bar a.vb-bug::after { content: none !important; } } -/* markdown: more space above headings than below */ -.markdown-body h2 { margin-bottom: 12px !important; } -.markdown-body h3 { margin-top: 32px !important; margin-bottom: 8px !important; } -.markdown-body h4 { margin-top: 24px !important; margin-bottom: 6px !important; color: var(--ink-soft) !important; } -/* code find input clears the gutter rule and lines up with code text */ -@media (min-width: 768px) { .file-card .ace_search { padding-left: 16px !important; } } -/* phone: clearer sideways-scroll cue */ -@media (max-width: 767px) { - .file-card.is-code.no-wrap .file-card-body::after { width: 48px !important; background: linear-gradient(to right, rgba(255,255,255,0), var(--paper-card) 55%) !important; box-shadow: inset -1px 0 0 var(--border-color); } - .dark-mode .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, rgba(20,19,17,0), #141311 55%) !important; } +/* Empty throughput: card sizes to content instead of stretching to the stats column */ +/* Dashboard row icons: darker glyphs so they read as controls */ +.paper-table-dashboard .row-edit, .paper-table-dashboard .btn-icon-dots { + color: var(--color) !important; + opacity: .72; + width: 32px !important; + justify-content: center; + border-radius: 8px; } -/* connections: App actions on one row */ +/* Code find input clears the gutter rule and lines up with code text */ +/* Phone: clearer sideways-scroll cue */ +/* Connections: App actions on one row */ .connections-page .connection-actions { flex-wrap: nowrap !important; align-items: center; gap: 12px !important; } -.connections-page .connection-actions .connection-link { white-space: nowrap; } -/* dashboard: actions column has a visible header like the others */ -.paper-table-dashboard .paper-table-head .col-link { font-size: inherit; color: inherit; } -@media (max-width: 767px) { - .file-card.is-code.no-wrap .file-card-body::after { width: 40px !important; background: linear-gradient(to right, rgba(40,32,24,0), rgba(40,32,24,.07)), linear-gradient(to right, rgba(255,255,255,0), #fff 70%) !important; border-right: 2px solid rgba(40,32,24,.12); } - .dark-mode .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, rgba(0,0,0,0), rgba(0,0,0,.35)), linear-gradient(to right, rgba(20,19,17,0), #141311 70%) !important; border-right-color: rgba(255,255,255,.08); } -} -.connections-page .connection-actions .btn { white-space: nowrap; } -.connections-page .connection-refresh { width: 36px; height: 36px; justify-content: center; padding: 0 !important; border-radius: var(--radius-control, 8px); margin-left: auto; } - -/* ===== Round 74 ===== */ -/* FAQ: rows share the answer measure so the chevron stays with its question */ -.faq-section .panel-group, .faq-section .faq-cat { max-width: 720px; } -/* code line numbers one step darker */ -.ace-chrome .ace_gutter-cell { color: #5F5A52 !important; } -/* connection cards size to their content */ -.connections-grid { align-items: start !important; } -.connection-installations { border-bottom: 0 !important; margin-bottom: 0 !important; padding-bottom: 0 !important; } -/* form inputs: a border that holds against white cards */ +.connections-page .connection-refresh { width: 36px; height: 36px; justify-content: center; padding: 0 !important; border-radius: var(--radius-control, 8px); } +/* Code line numbers one step darker */ +/* Connection cards size to their content */ +/* Form inputs: a border that holds against white cards */ .paper-page input.form-control, .paper-page textarea.form-control, .paper-page select.form-control, .paper-page input[type="text"], .paper-page input[type="url"], .paper-page input[type="date"], .paper-page textarea, .anonymize-page .form-control { border-color: #C2BAAC !important; } .dark-mode .paper-page input.form-control, .dark-mode .paper-page textarea, .dark-mode .paper-page select.form-control, .dark-mode .paper-page input[type="text"], .dark-mode .paper-page input[type="url"], .dark-mode .paper-page input[type="date"], .dark-mode .anonymize-page .form-control { border-color: #4A453E !important; } -.paper-page textarea::placeholder, .paper-page input::placeholder { color: #A39B8E !important; } -/* phone dashboard row: edit and more share one 36px centre line with the title */ +/* Phone dashboard row: edit and more share one 36px centre line with the title */ @media (max-width: 767px) { - .paper-table-dashboard .cell-actions > .row-edit, .paper-table-dashboard .cell-actions > .dropdown, .paper-table-dashboard .cell-actions > .dropdown > .btn-icon-dots { width: 36px !important; height: 36px !important; margin-top: -4px !important; align-self: start !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; } + .paper-table-dashboard .cell-actions>.row-edit, + .paper-table-dashboard .cell-actions>.dropdown, + .paper-table-dashboard .cell-actions>.dropdown>.btn-icon-dots { + margin-top: -4px !important; + align-self: start !important; + display: inline-flex !important; + align-items: center !important; + justify-content: center !important; + width: 40px !important; + } } +/* Connection choice: a quiet text control, not a competing segmented toggle */ -/* ===== Round 75 ===== */ -/* connection choice: a quiet text control, not a competing segmented toggle */ +/* ----- Anonymize workspace ----- */ .anonymize-page .repo-access-switch { border: 0 !important; background: transparent !important; padding: 0 !important; box-shadow: none !important; gap: 0 !important; display: inline-flex !important; align-items: center; width: auto !important; font-size: 12.5px; color: var(--ink-soft); } -.anonymize-page .repo-access-switch::before { content: "Access:"; margin-right: 6px; color: var(--ink-soft); } .anonymize-page .repo-access-switch button { background: transparent !important; border: 0 !important; box-shadow: none !important; padding: 2px 4px !important; height: auto !important; min-height: 0 !important; font-size: 12.5px !important; font-weight: 500 !important; color: var(--ink-soft) !important; flex: 0 0 auto !important; border-radius: 4px !important; } -.anonymize-page .repo-access-switch button + button::before { content: "·"; margin-right: 8px; color: var(--ink-muted); } -.anonymize-page .repo-access-switch button[aria-pressed="true"] { color: var(--color) !important; font-weight: 600 !important; opacity: 1 !important; } -.anonymize-page .repo-access-switch button:not([aria-pressed="true"]):hover { color: var(--accent) !important; text-decoration: underline; } +.anonymize-page .repo-access-switch button[aria-pressed="true"] { + font-weight: 600 !important; + opacity: 1 !important; + color: var(--accent) !important; + box-shadow: inset 0 -2px 0 var(--accent) !important; + border-radius: 0 !important; +} .anonymize-page .repo-access-switch button .ui-icon { display: none !important; } -/* find: current match is a deeper yellow with an ink outline (no orange) */ -mark.md-find.is-current, .ace_editor .ace_marker-layer .ace_selection { background: rgba(240,206,90,.95) !important; box-shadow: 0 0 0 1.5px #5C4A12 !important; color: inherit !important; } -.dark-mode mark.md-find.is-current, .dark-mode .ace_editor .ace_marker-layer .ace_selection { background: rgba(214,178,60,.55) !important; box-shadow: 0 0 0 1.5px #F2D77A !important; } -/* one input border everywhere (forms, search, selects, admin) */ +/* Find: current match is a deeper yellow with an ink outline (no orange) */ + +/* ----- File viewer ----- */ +mark.md-find.is-current, .ace_editor .ace_marker-layer .ace_selection { color: inherit !important; } +/* One input border everywhere (forms, search, selects, admin) */ .paper-page input:not([type="checkbox"]):not([type="radio"]):not([type="range"]), .paper-page select, .paper-page textarea, .md-find-input, .ace_search .ace_search_field { border-color: #CFC7B9 !important; } .dark-mode .paper-page input:not([type="checkbox"]):not([type="radio"]):not([type="range"]), .dark-mode .paper-page select, .dark-mode .paper-page textarea, .dark-mode .md-find-input { border-color: #48433C !important; } .paper-page input:focus, .paper-page select:focus, .paper-page textarea:focus, .md-find-input:focus, .ace_search .ace_search_field:focus { border-color: var(--accent) !important; box-shadow: 0 0 0 3px var(--accent-soft) !important; } -/* queue health dots: idle = healthy green, problems = red */ -.q-dot.q-dot-idle { background: #2F7D4F !important; } -.dark-mode .q-dot.q-dot-idle { background: #6FBF8A !important; } -/* outline's first row lines up with the H1 */ -@media (min-width: 1200px) { .readme-toc { margin-top: 0 !important; padding-top: 0 !important; } } -@media (min-width: 1200px) { .readme-toc { margin-top: -30px !important; } } +/* Queue health dots: idle = healthy green, problems = red */ +/* Outline's first row lines up with the H1 */ +/* Header band sits on the page paper, not a white slab */ -/* ===== Round 76: anonymize configuration workspace ===== */ -/* header band sits on the page paper, not a white slab */ -.anonymize-workspace .anonymize-topbar { background: var(--paper-bg, var(--background)) !important; border-bottom: 1px solid var(--border-color) !important; } +/* ----- Anonymize workspace ----- */ +.anonymize-workspace .anonymize-topbar { border-bottom: 1px solid var(--border-color) !important; } .anonymize-workspace .type-badge { font-family: var(--font-sans) !important; letter-spacing: 0 !important; text-transform: none !important; font-size: 12px !important; font-weight: 600 !important; padding: 2px 8px !important; border-radius: 999px !important; background: var(--hover-bg-color) !important; color: var(--ink-soft) !important; border: 0 !important; vertical-align: middle; } -/* themed checkboxes in the form, same as admin and dashboard */ +/* Themed checkboxes in the form, same as admin and dashboard */ .anonymize-page input[type="checkbox"] { -webkit-appearance: none; appearance: none; width: 16px !important; height: 16px !important; margin: 2px 0 0; border: 1.5px solid #A39D92; border-radius: 4px; background: var(--paper-card); display: inline-grid; place-content: center; cursor: pointer; flex: 0 0 16px; } -.anonymize-page input[type="checkbox"]::before { content: ""; width: 9px; height: 9px; transform: scale(0); background: #fff; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5'/%3E%3C/svg%3E") center/contain no-repeat; } -.anonymize-page input[type="checkbox"]:checked { background: var(--accent); border-color: var(--accent); } -.anonymize-page input[type="checkbox"]:checked::before { transform: scale(1); } -.anonymize-page input[type="checkbox"]:indeterminate { background: var(--accent); border-color: var(--accent); } -.anonymize-page input[type="checkbox"]:indeterminate::before { width: 8px; height: 2px; border-radius: 1px; -webkit-mask: none; mask: none; transform: scale(1); } -.anonymize-page input[type="checkbox"]:disabled { opacity: .45; cursor: not-allowed; } .anonymize-page input[type="checkbox"]:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } -.dark-mode .anonymize-page input[type="checkbox"] { border-color: #6E6860; background: transparent; } -/* commit SHA reads as an identifier */ -.anonymize-page #commit { font-family: var(--font-mono, "JetBrains Mono", monospace) !important; font-size: 13px !important; } -/* one input border in the workspace too */ +/* One input border in the workspace too */ .anonymize-page .form-control, .anonymize-page select, .anonymize-page textarea { border-color: #CFC7B9 !important; } .dark-mode .anonymize-page .form-control, .dark-mode .anonymize-page select, .dark-mode .anonymize-page textarea { border-color: #48433C !important; } .anonymize-page .form-control:focus, .anonymize-page textarea:focus, .anonymize-page select:focus { border-color: var(--accent) !important; box-shadow: 0 0 0 3px var(--accent-soft) !important; } -/* the images/PDF reminder belongs with the submit action */ -.anonymize-review-note { font-size: 12.5px !important; color: var(--ink-soft) !important; margin: 0 0 8px !important; } -.anonymize-page .form-check-input[type="checkbox"] { position: absolute !important; margin-left: -28px !important; margin-top: 3px !important; } -.anonymize-page .repo-access-main:not(:has(button, a)), .anonymize-page .repo-access-controls:not(:has(button, a)) { display: none !important; } -.anonymize-page .repo-access-note:not(:has(span + span)) { margin-top: 0 !important; } - -/* ===== Round 77: config workspace polish ===== */ -/* sticky submit: a real bar with a divider and a fade, so clipped cards look intentional */ -.anonymize-form-col .anonymize-submit-bar { position: sticky; bottom: 0; z-index: 3; background: var(--paper-bg-alt) !important; border-top: 1px solid var(--border-color); padding: 12px 0 16px !important; margin-top: 8px; } -.anonymize-form-col .anonymize-submit-bar::before { content: ""; position: absolute; left: 0; right: 0; top: -25px; height: 24px; background: linear-gradient(to bottom, transparent, var(--paper-bg-alt)); pointer-events: none; } -/* closing notes grouped as one quiet footer above the bar */ -.anonymize-form-col .draft-status, .anonymize-form-col .anonymize-review-note { font-size: 12.5px !important; color: var(--ink-soft) !important; margin: 0 0 6px !important; padding: 0 2px; } -.anonymize-form-col .anonymize-review-note::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--status-progress, #B7791F); margin-right: 8px; vertical-align: 1px; } +/* Sticky submit: a real bar with a divider and a fade, so clipped cards look intentional */ +.anonymize-form-col .anonymize-submit-bar { position: sticky; z-index: 3; background: var(--paper-bg-alt) !important; margin-top: 8px; } +/* Closing notes grouped as one quiet footer above the bar */ +.anonymize-form-col .draft-status { font-size: 12.5px !important; margin: 0 0 6px !important; padding: 0 2px; } /* Access choice: the active option carries a teal underline so it reads as a control */ -.anonymize-page .repo-access-switch button[aria-pressed="true"] { color: var(--accent) !important; box-shadow: inset 0 -2px 0 var(--accent) !important; border-radius: 0 !important; } -/* branch refresh matches the select height */ +/* Branch refresh matches the select height */ .anonymize-page .input-group-append .btn-icon { height: 40px !important; width: 40px !important; min-height: 40px !important; display: inline-flex !important; align-items: center; justify-content: center; border: 1px solid #CFC7B9 !important; border-radius: 8px !important; margin-left: 8px !important; background: var(--paper-card) !important; } .dark-mode .anonymize-page .input-group-append .btn-icon { border-color: #48433C !important; } -/* one input border for every form control in the app */ -input.form-control, select.form-control, textarea.form-control, .custom-select { border-color: #CFC7B9 !important; } -.dark-mode input.form-control, .dark-mode select.form-control, .dark-mode textarea.form-control, .dark-mode .custom-select { border-color: #48433C !important; } +/* One input border for every form control in the app */ +input.form-control, select.form-control, textarea.form-control { border-color: #CFC7B9 !important; } +.dark-mode input.form-control, .dark-mode select.form-control, .dark-mode textarea.form-control { border-color: #48433C !important; } input.form-control:focus, select.form-control:focus, textarea.form-control:focus { border-color: var(--accent) !important; box-shadow: 0 0 0 3px var(--accent-soft) !important; } /* "62 views": one normal space */ -@media (max-width: 767px) { .paper-table-dashboard .cell-views.num::after { content: "views" !important; margin-left: 4px; } } -@media (min-width: 768px) { .paper-table-dashboard .cell-views.num::after { content: none !important; } } -@media (max-width: 767px) { .admin-page .paper-table:not(.users-table) .cell-views.num::after { margin-left: 4px; } } -/* inline redaction chips keep the paragraph's line rhythm */ +/* Inline redaction chips keep the paragraph's line rhythm */ .markdown-body p .redact-chip, .markdown-body li .redact-chip { line-height: 1 !important; padding-top: 1px !important; padding-bottom: 1px !important; vertical-align: baseline; } -/* dark: sidebar a step apart from the reading pane */ -.dark-mode .explorer-sidebar, .dark-mode .leftCol { background: #1E1C19 !important; } +/* Dark: sidebar a step apart from the reading pane */ +/* One segmented control everywhere: grey track, white raised active segment */ -/* ===== Round 78 ===== */ -/* one segmented control everywhere: grey track, white raised active segment */ -.q-range-btns, .errors-page .seg-tabs { display: inline-flex !important; gap: 2px !important; padding: 3px !important; background: var(--hover-bg-color) !important; border: 0 !important; border-radius: 9px !important; } -.q-range-btns .btn, .errors-page .seg-tabs button { border: 0 !important; background: transparent !important; color: var(--ink-soft) !important; border-radius: 7px !important; height: 28px !important; min-height: 28px !important; padding: 0 10px !important; font-size: 13px !important; font-weight: 500 !important; box-shadow: none !important; } -.q-range-btns .btn.active, .errors-page .seg-tabs button.active { background: var(--paper-card) !important; color: var(--color) !important; box-shadow: 0 1px 2px rgba(40,32,24,.12), 0 0 0 1px rgba(40,32,24,.06) !important; } -.dark-mode .q-range-btns .btn.active, .dark-mode .errors-page .seg-tabs button.active { background: #2C2925 !important; box-shadow: 0 0 0 1px rgba(255,255,255,.06) !important; } -/* find input: thin teal ring, never a heavy dark border */ +/* ----- Admin ----- */ +.q-range-btns { background: var(--hover-bg-color) !important; border: 0 !important; } +.q-range-btns .btn { border: 0 !important; background: transparent !important; color: var(--ink-soft) !important; border-radius: 7px !important; height: 28px !important; min-height: 28px !important; padding: 0 10px !important; font-size: 13px !important; font-weight: 500 !important; box-shadow: none !important; } +.q-range-btns .btn.active { background: var(--paper-card) !important; color: var(--color) !important; box-shadow: 0 1px 2px rgba(40,32,24,.12), 0 0 0 1px rgba(40,32,24,.06) !important; } +.dark-mode .q-range-btns .btn.active { background: #2C2925 !important; box-shadow: 0 0 0 1px rgba(255,255,255,.06) !important; } +/* Find input: thin teal ring, never a heavy dark border */ .md-find-input, .ace_search .ace_search_field { border-width: 1px !important; } -.md-find-input:focus, .ace_search .ace_search_field:focus { outline: none !important; border-color: var(--accent) !important; box-shadow: 0 0 0 3px var(--accent-soft) !important; } -/* the images/PDF warning is the important note: amber text */ -.anonymize-form-col .anonymize-review-note { color: #8A5A12 !important; font-weight: 500; } -.dark-mode .anonymize-form-col .anonymize-review-note { color: #E3B062 !important; } -/* phones: the submit bar stays pinned at the bottom of the screen */ -@media (max-width: 767px) { .anonymize-form-col .anonymize-submit-bar { position: sticky !important; bottom: 0 !important; padding: 12px 0 calc(12px + env(safe-area-inset-bottom)) !important; } } - -/* ===== Round 79 ===== */ -/* phones: the form column is not a scroller, so the sticky submit pins to the screen */ -@media (max-width: 767px) { .anonymize-form-col { overflow: visible !important; } .anonymize-page .form-group + .form-group, .anonymize-page .form-row > [class*="col"] + [class*="col"] { margin-top: 0 !important; } .anonymize-page .input-group-append .btn-icon { height: 44px !important; width: 44px !important; } } -/* the first-step URL field shares the app's input border */ -#sourceUrl-landing, #sourceUrl { border-color: #CFC7B9 !important; } +/* The images/PDF warning is the important note: amber text */ +/* Phones: the submit bar stays pinned at the bottom of the screen */ +/* Phones: the form column is not a scroller, so the sticky submit pins to the screen */ +@media (max-width: 767px) { .anonymize-page .input-group-append .btn-icon { height: 44px !important; width: 44px !important; } +} .dark-mode #sourceUrl-landing, .dark-mode #sourceUrl { border-color: #48433C !important; } #sourceUrl-landing:focus, #sourceUrl:focus { border-color: var(--accent) !important; box-shadow: 0 0 0 3px var(--accent-soft) !important; } -/* amber note at AA on the warm panel */ -.anonymize-form-col .anonymize-review-note { color: #6E470C !important; } -/* dark preview: README heading rules use the theme border */ -.dark-mode .anonymize-preview-col .markdown-body h1, .dark-mode .anonymize-preview-col .markdown-body h2, .dark-mode .anonymize-preview-col .markdown-body hr { border-color: var(--border-color) !important; } -/* idle queue = neutral dot; red only for paused or failing */ +/* Amber note at AA on the warm panel */ +/* Idle queue = neutral dot; red only for paused or failing */ .q-dot.q-dot-idle, .dark-mode .q-dot.q-dot-idle { background: var(--ink-muted) !important; } -.md-find-count, .ace_search .ace_search_counter { color: var(--color) !important; font-weight: 500 !important; font-variant-numeric: tabular-nums; font-size: 12.5px !important; } -.readme-toc a:not(.is-active) { color: #57524A !important; } -.dark-mode .readme-toc a:not(.is-active) { color: #B8B1A6 !important; } -.viewer-bar .vb-support { margin-right: 8px !important; } -/* ===== Blackout redactions: terms read like a redacted document ===== */ -:root { --redact-bar: #1F1C19; --redact-ink: #5A544C; --redact-reveal: #F4EFE6; } -.dark-mode { --redact-bar: #000000; --redact-ink: #3E3A35; --redact-reveal: #F4EFE6; } -.markdown-body mark.redact-chip, .markdown-body h1 mark.redact-chip, .markdown-body h2 mark.redact-chip, .markdown-body h3 mark.redact-chip, .markdown-body h4 mark.redact-chip, -.demo-output .redact-chip, .hero-mock .redact, .hero .redact, span.redact { - background: var(--redact-bar) !important; color: var(--redact-ink) !important; box-shadow: none !important; border: 0 !important; - border-radius: 2px !important; padding: 0 .28em !important; text-decoration: none !important; font-weight: inherit; letter-spacing: .02em; - -webkit-box-decoration-break: clone; box-decoration-break: clone; transition: color .12s ease; cursor: help; +/* ----- File viewer ----- */ +.md-find-count, .ace_search .ace_search_counter { color: var(--color) !important; font-weight: 500 !important; font-variant-numeric: tabular-nums; font-size: 12.5px !important; } +.markdown-body mark.redact-chip, +.markdown-body h1 mark.redact-chip, +.markdown-body h2 mark.redact-chip, +.markdown-body h3 mark.redact-chip, +.markdown-body h4 mark.redact-chip, +.demo-output .redact-chip, +.hero-mock .redact, +span.redact { + background: var(--redact-bar) !important; + color: var(--redact-ink) !important; + box-shadow: none !important; + border: 0 !important; + border-radius: 2px !important; + padding: 0 .28em !important; + text-decoration: none !important; + font-weight: inherit; + letter-spacing: .02em; + -webkit-box-decoration-break: clone; + box-decoration-break: clone; + transition: color .12s ease; + cursor: help; } -.dark-mode .markdown-body mark.redact-chip, .dark-mode .demo-output .redact-chip, .dark-mode span.redact { box-shadow: inset 0 0 0 1px rgba(255,255,255,.16) !important; } -.markdown-body mark.redact-chip:hover, .demo-output .redact-chip:hover, span.redact:hover { color: var(--redact-reveal) !important; } -.markdown-body h1 mark.redact-chip, .markdown-body h2 mark.redact-chip, .markdown-body h3 mark.redact-chip { font-size: inherit !important; vertical-align: baseline !important; padding: 0 .2em !important; } -/* code: same bar; Ace's text layer ignores hover, the faint label keeps terms distinguishable */ +/* Code: same bar; Ace's text layer ignores hover, the faint label keeps terms distinguishable */ .ace_text-layer .ace_redacted { background: var(--redact-bar) !important; color: var(--redact-ink) !important; border-radius: 2px; box-shadow: none !important; text-decoration: none !important; } .dark-mode .ace_text-layer .ace_redacted { box-shadow: inset 0 0 0 1px rgba(255,255,255,.16) !important; } -/* toolbar count: neutral text with a tiny blackout swatch */ -.meta-redact { background: transparent !important; color: var(--ink-soft) !important; box-shadow: none !important; padding: 0 !important; display: inline-flex !important; align-items: center; gap: 6px; font-weight: 500 !important; } -.meta-redact::before { content: ""; width: 14px; height: 8px; border-radius: 1.5px; background: var(--redact-bar); box-shadow: inset 0 0 0 1px rgba(255,255,255,.12); } -/* blackout: win over the older teal rules */ -.ace_editor .ace_text-layer .ace_redacted, .dark-mode .ace_editor .ace_text-layer .ace_redacted { background: var(--redact-bar) !important; color: var(--redact-ink) !important; border-radius: 2px !important; } -.ace_editor .ace_text-layer .ace_redacted { box-shadow: none !important; } -.dark-mode .ace_editor .ace_text-layer .ace_redacted { box-shadow: inset 0 0 0 1px rgba(255,255,255,.16) !important; } -.dark-mode .markdown-body h1 mark.redact-chip, .dark-mode .markdown-body h2 mark.redact-chip, .dark-mode .markdown-body h3 mark.redact-chip, .dark-mode .markdown-body mark.redact-chip, .dark-mode .demo-output .redact-chip, .dark-mode span.redact { background: var(--redact-bar) !important; color: var(--redact-ink) !important; box-shadow: inset 0 0 0 1px rgba(255,255,255,.16) !important; } +/* Toolbar count: neutral text with a tiny blackout swatch */ +.meta-redact { background: transparent !important; color: var(--ink-soft) !important; align-items: center; gap: 6px; } .dark-mode .markdown-body mark.redact-chip:hover, .dark-mode .demo-output .redact-chip:hover { color: var(--redact-reveal) !important; } -.markdown-body h1 mark.redact-chip, .markdown-body h2 mark.redact-chip { color: #3E3933 !important; } .dark-mode .meta-redact { color: var(--ink-soft) !important; } .hero-mock-count, .dark-mode .hero-mock-count { background: transparent !important; color: var(--ink-soft) !important; padding: 0 !important; gap: 6px; font-weight: 500 !important; } -.hero-mock-count::before { content: ""; width: 12px; height: 7px; border-radius: 1.5px; background: var(--redact-bar); box-shadow: inset 0 0 0 1px rgba(255,255,255,.12); } -@media (max-width: 767px) { .mobile-sub b, .dark-mode .mobile-sub b { background: transparent !important; color: var(--ink-soft) !important; padding: 0 !important; gap: 5px; font-weight: 500 !important; } .mobile-sub b::before { content: ""; width: 12px; height: 7px; border-radius: 1.5px; background: var(--redact-bar); box-shadow: inset 0 0 0 1px rgba(255,255,255,.12); } } -/* blackout → tonal: a warm-stone bar from the app's neutral scale */ -:root { --redact-bar: #E4DED3; --redact-ink: #8A8378; --redact-reveal: #2B2824; } -.dark-mode { --redact-bar: #34302A; --redact-ink: #8F887D; --redact-reveal: #F1ECE3; } -.markdown-body mark.redact-chip, .demo-output .redact-chip, span.redact, .ace_editor .ace_text-layer .ace_redacted, -.dark-mode .markdown-body mark.redact-chip, .dark-mode .demo-output .redact-chip, .dark-mode span.redact, .dark-mode .ace_editor .ace_text-layer .ace_redacted { box-shadow: none !important; border-radius: 3px !important; } -.markdown-body h1 mark.redact-chip, .markdown-body h2 mark.redact-chip { color: var(--redact-ink) !important; } -.dark-mode .markdown-body h1 mark.redact-chip, .dark-mode .markdown-body h2 mark.redact-chip, .dark-mode .markdown-body h3 mark.redact-chip { box-shadow: none !important; } -.meta-redact::before, .hero-mock-count::before, .mobile-sub b::before { box-shadow: none !important; } - -/* ===== Redactions, option 2b: a debossed slot with a small mono "redacted-N" tag ===== */ -:root { --redact-bar: #EEEAE2; --redact-ink: #8C8478; --redact-reveal: #2B2824; --redact-deboss: inset 0 1px 2px rgba(60,48,32,.18), inset 0 0 0 1px rgba(60,48,32,.06); } -.dark-mode { --redact-bar: #0E0D0B; --redact-ink: #7A746A; --redact-reveal: #F1ECE3; --redact-deboss: inset 0 1px 2px rgba(0,0,0,.7), inset 0 0 0 1px rgba(255,255,255,.05); } -.markdown-body mark.redact-chip, .dark-mode .markdown-body mark.redact-chip, .demo-output .redact-chip, .dark-mode .demo-output .redact-chip, span.redact, .dark-mode span.redact { - background: var(--redact-bar) !important; color: var(--redact-ink) !important; box-shadow: var(--redact-deboss) !important; - border-radius: 4px !important; padding: .05em .45em !important; font-family: var(--font-mono, "JetBrains Mono", monospace) !important; - font-size: .78em !important; font-weight: 500 !important; letter-spacing: .02em !important; line-height: 1.4 !important; vertical-align: .08em !important; white-space: nowrap; +.hero-mock-count::before { content: ""; width: 12px; height: 7px; } +@media (max-width: 767px) { .mobile-sub b, .dark-mode .mobile-sub b { background: transparent !important; color: var(--ink-soft) !important; padding: 0 !important; gap: 5px; font-weight: 500 !important; } +} +.markdown-body mark.redact-chip, +.dark-mode .markdown-body mark.redact-chip, +.demo-output .redact-chip, +.dark-mode .demo-output .redact-chip, +span.redact, +.dark-mode span.redact { + font-family: var(--font-mono, "JetBrains Mono", monospace) !important; + font-weight: 500 !important; } -.markdown-body h1 mark.redact-chip, .markdown-body h2 mark.redact-chip, .markdown-body h3 mark.redact-chip, -.dark-mode .markdown-body h1 mark.redact-chip, .dark-mode .markdown-body h2 mark.redact-chip, .dark-mode .markdown-body h3 mark.redact-chip { font-size: .55em !important; vertical-align: .3em !important; color: var(--redact-ink) !important; padding: .15em .5em !important; } .markdown-body mark.redact-chip:hover, .demo-output .redact-chip:hover, span.redact:hover { color: var(--redact-reveal) !important; } -/* code keeps the raw text but sits in the same debossed slot */ -.ace_editor .ace_text-layer .ace_redacted, .dark-mode .ace_editor .ace_text-layer .ace_redacted { background: var(--redact-bar) !important; color: var(--redact-ink) !important; box-shadow: var(--redact-deboss) !important; border-radius: 3px !important; } -.meta-redact::before, .hero-mock-count::before, .mobile-sub b::before { background: var(--redact-bar) !important; box-shadow: var(--redact-deboss) !important; border-radius: 2px !important; } - -/* ===== Redaction slot (option B): a blank stone slot with the term number tucked inside ===== */ -:root { --slot-bg: #E3DCD0; --slot-bg-sel: #D3CBBD; --slot-num: #1F5F5A; } -.dark-mode { --slot-bg: #3A352F; --slot-bg-sel: #4A443C; --slot-num: #7CC7BE; } +/* Code keeps the raw text but sits in the same debossed slot */ .redact-slot, -.markdown-body mark.redact-chip, .dark-mode .markdown-body mark.redact-chip, -.markdown-body h1 mark.redact-chip, .markdown-body h2 mark.redact-chip, .markdown-body h3 mark.redact-chip, .markdown-body h4 mark.redact-chip, -.dark-mode .markdown-body h1 mark.redact-chip, .dark-mode .markdown-body h2 mark.redact-chip, .dark-mode .markdown-body h3 mark.redact-chip, -.demo-output .redact-chip, .dark-mode .demo-output .redact-chip, span.redact, .dark-mode span.redact { - display: inline-flex !important; align-items: center !important; justify-content: flex-end !important; - min-width: 2.5em !important; height: 1.12em !important; padding: 0 .32em !important; margin: 0 .06em !important; - background: var(--slot-bg) !important; color: var(--slot-num) !important; box-shadow: none !important; border: 0 !important; - border-radius: 3px !important; vertical-align: -.2em !important; line-height: 1 !important; font-size: inherit !important; - letter-spacing: 0 !important; text-decoration: none !important; cursor: help; white-space: nowrap; +.markdown-body mark.redact-chip, +.dark-mode .markdown-body mark.redact-chip, +.markdown-body h1 mark.redact-chip, +.markdown-body h2 mark.redact-chip, +.markdown-body h3 mark.redact-chip, +.markdown-body h4 mark.redact-chip, +.dark-mode .markdown-body h1 mark.redact-chip, +.dark-mode .markdown-body h2 mark.redact-chip, +.dark-mode .markdown-body h3 mark.redact-chip, +.demo-output .redact-chip, +.dark-mode .demo-output .redact-chip, +span.redact, +.dark-mode span.redact { + display: inline-flex !important; + align-items: center !important; + justify-content: flex-end !important; + min-width: 2.5em !important; + height: 1.12em !important; + padding: 0 .32em !important; + margin: 0 .06em !important; + background: var(--slot-bg) !important; + color: var(--slot-num) !important; + box-shadow: none !important; + border: 0 !important; + border-radius: 3px !important; + vertical-align: -.2em !important; + line-height: 1 !important; + font-size: inherit !important; + letter-spacing: 0 !important; + text-decoration: none !important; + cursor: help; + white-space: nowrap; } -.redact-slot i, .markdown-body mark.redact-chip i, span.redact i { font: 700 .66em/1 var(--font-sans, Inter, sans-serif) !important; font-style: normal !important; color: var(--slot-num) !important; } -.demo-output .redact-chip { font: 700 .66em/1 var(--font-sans, Inter, sans-serif) !important; min-width: 3.8em !important; height: 1.7em !important; vertical-align: -.35em !important; } -/* headings: a slightly shorter slot so it doesn't read as a block */ -.markdown-body h1 mark.redact-chip, .markdown-body h2 mark.redact-chip { height: .95em !important; vertical-align: -.1em !important; border-radius: 4px !important; } -/* tree: compact, and a step darker on the selected row */ +.demo-output .redact-chip { font: 700 .66em/1 var(--font-sans, Inter, sans-serif) !important; font-size: 12px !important; } +/* Headings: a slightly shorter slot so it doesn't read as a block */ +.markdown-body h1 mark.redact-chip, .markdown-body h2 mark.redact-chip { border-radius: 4px !important; } +/* Tree: compact, and a step darker on the selected row */ .files .redact-slot { min-width: 2.3em !important; height: 1.08em !important; vertical-align: -.18em !important; } .files .file.active > a .redact-slot, .files a[aria-current] .redact-slot { background: var(--slot-bg-sel) !important; } .breadcrumb .redact-slot { vertical-align: -.22em !important; } -/* code: keep the raw text's width (columns stay aligned), hide it, show the number */ -.ace_editor .ace_text-layer .ace_redacted, .dark-mode .ace_editor .ace_text-layer .ace_redacted { position: relative; color: transparent !important; background: var(--slot-bg) !important; box-shadow: none !important; border-radius: 3px !important; } -.ace_editor .ace_text-layer .ace_redacted::after { position: absolute; right: .35em; top: 50%; transform: translateY(-50%); font: 700 9.5px/1 var(--font-sans, Inter, sans-serif); color: var(--slot-num); } -/* toolbar and mock counts: a tiny matching slot */ -.meta-redact::before, .hero-mock-count::before, .mobile-sub b::before { background: var(--slot-bg) !important; box-shadow: none !important; border-radius: 2px !important; } -.files .tree-name { display: inline-flex; align-items: center; gap: 0; min-width: 0; } +/* Code: keep the raw text's width (columns stay aligned), hide it, show the number */ +.ace_editor .ace_text-layer .ace_redacted, .dark-mode .ace_editor .ace_text-layer .ace_redacted { color: transparent !important; background: var(--slot-bg) !important; box-shadow: none !important; border-radius: 3px !important; } +/* Toolbar and mock counts: a tiny matching slot */ +.files .tree-name { align-items: center; gap: 0; } .files .tree-name .redact-slot { vertical-align: middle !important; margin: 0 .08em !important; } -.markdown-body p mark.redact-chip, .markdown-body li mark.redact-chip { vertical-align: -.16em !important; } - -/* ===== Round 80 ===== */ -/* current find match: deeper amber with an amber ring, no black */ +/* Current find match: deeper amber with an amber ring, no black */ mark.md-find.is-current, .ace_editor .ace_marker-layer .ace_selection { background: rgba(240,196,70,.95) !important; box-shadow: 0 0 0 2px rgba(196,140,20,.55) !important; } .dark-mode mark.md-find.is-current, .dark-mode .ace_editor .ace_marker-layer .ace_selection { background: rgba(214,170,50,.6) !important; box-shadow: 0 0 0 2px rgba(240,200,90,.55) !important; } -/* slot numbers legible at small sizes */ -span.redact i, .demo-output .redact-chip { font-size: 10px !important; } -.dark-mode { --slot-num: #8FD6CC; } -/* heading slots: shorter and narrower so a slot-only title doesn't read as two blocks */ -.markdown-body h1 mark.redact-chip, .markdown-body h2 mark.redact-chip, .dark-mode .markdown-body h1 mark.redact-chip, .dark-mode .markdown-body h2 mark.redact-chip { min-width: 1.9em !important; height: .78em !important; vertical-align: 0 !important; padding: 0 .22em !important; } -/* viewer top bar: one even rhythm for the icon group */ -.viewer-bar .vb-right { gap: 4px !important; } +/* Slot numbers legible at small sizes */ +/* Heading slots: shorter and narrower so a slot-only title doesn't read as two blocks */ +.markdown-body h1 mark.redact-chip, .markdown-body h2 mark.redact-chip, .dark-mode .markdown-body h1 mark.redact-chip, .dark-mode .markdown-body h2 mark.redact-chip { height: .78em !important; vertical-align: 0 !important; } +/* Viewer top bar: one even rhythm for the icon group */ .viewer-bar .vb-right .vb-icon { width: 34px !important; height: 34px !important; margin: 0 !important; } .viewer-bar .vb-support { margin-right: 10px !important; } -.viewer-bar .vb-snapshot { margin-right: 14px !important; } -/* phone summary line readable */ -@media (max-width: 767px) { .mobile-sub { font-size: 13px !important; color: #5F5A52 !important; } .dark-mode .mobile-sub { color: #B3ACA1 !important; } } -.file-card-meta { overflow: visible !important; } - -/* ===== Round 81 ===== */ -/* one control border: inputs, selects and toolbar buttons share the input stone */ -:root { --control-border: #CFC7B9; } .dark-mode { --control-border: #48433C; } -.anonymize-page #sourceUrl-landing, .anonymize-page #sourceUrl, .anonymize-page .form-control-lg, .anonymize-page select.form-control, .anonymize-page #branch, -.dashboard-page .filter-btn, .dashboard-page .dropdown-toggle, .dashboard-page .dashboard-quota > summary, -.admin-page .btn:not(.btn-ink):not(.btn-primary):not(.btn-outline-danger):not(.summary-pill), .admin-page select, .errors-page select, .q-range-btns + .btn { border-color: var(--control-border) !important; } -.anonymize-page #sourceUrl-landing:focus, .anonymize-page #sourceUrl:focus { border-color: var(--accent) !important; } -/* toolbars: one 36px control height */ -.errors-page .seg-tabs { height: 36px !important; align-items: center; } -.errors-page .seg-tabs button { height: 30px !important; } -.admin-page .admin-toolbar .btn, .admin-page .btn-export, .admin-page a.btn[href*="export"], .admin-page button[title*="xport"] { height: 36px !important; min-height: 36px !important; } -/* phones: "62 views" is one run */ -@media (max-width: 767px) { .paper-table .cell-views { gap: 0 !important; } } -/* config workspace shares the site container edge */ +.viewer-bar .vb-snapshot { margin-right: 14px !important; gap: 5px !important; font-size: 12px !important; } +/* Phone summary line readable */ +@media (max-width: 767px) { .mobile-sub { font-size: 13px !important; color: #5F5A52 !important; } + .dark-mode .mobile-sub { color: #B3ACA1 !important; } +} +.anonymize-page #sourceUrl-landing, +.anonymize-page #sourceUrl, +.anonymize-page .form-control-lg, +.anonymize-page select.form-control, +.anonymize-page #branch, +.dashboard-page .dropdown-toggle, +.dashboard-page .dashboard-quota>summary, +.admin-page .btn:not(.btn-ink):not(.btn-primary):not(.btn-outline-danger):not(.summary-pill), +.admin-page select, +.errors-page select, +.q-range-btns+.btn { border-color: var(--control-border) !important; } +/* Toolbars: one 36px control height */ +.admin-page .admin-toolbar .btn, .admin-page a.btn[href*="export"], .admin-page button[title*="xport"] { height: 36px !important; min-height: 36px !important; } +/* Phones: "62 views" is one run */ +/* Config workspace shares the site container edge */ @media (min-width: 1200px) { - .anonymize-workspace .anonymize-topbar-inner, .anonymize-workspace .anonymize-split { max-width: 1048px; margin-left: auto !important; margin-right: auto !important; } - .anonymize-workspace .anonymize-topbar { padding-left: 0 !important; padding-right: 0 !important; } - .anonymize-workspace .anonymize-form-col { padding-left: 0 !important; } + .anonymize-workspace .anonymize-topbar-inner, .anonymize-workspace .anonymize-split { + margin-left: auto !important; + margin-right: auto !important; + max-width: var(--page-max) !important; + } + .anonymize-workspace .anonymize-form-col { + background: transparent !important; + padding-right: 24px !important; + } +} +/* Phones: the sticky submit sits inside the gutters with the desktop radius */ +@media (max-width: 767px) { .anonymize-form-col .anonymize-submit-bar { margin: 8px 0 0 !important; padding: 10px 0 calc(10px + env(safe-area-inset-bottom)) !important; } + .anonymize-form-col .anonymize-submit-bar .btn { border-radius: 10px !important; } +} +/* Failed README image */ +.img-unavailable { + padding: 6px 10px; + border-radius: 8px; + display: flex !important; + justify-content: center; + width: 100%; + min-height: 72px; + font: 500 12.5px var(--font-sans, Inter, sans-serif) !important; } -/* phones: the sticky submit sits inside the gutters with the desktop radius */ -@media (max-width: 767px) { .anonymize-form-col .anonymize-submit-bar { margin: 8px 0 0 !important; padding: 10px 0 calc(10px + env(safe-area-inset-bottom)) !important; } .anonymize-form-col .anonymize-submit-bar .btn { border-radius: 10px !important; } } -/* failed README image */ -.img-unavailable { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border: 1px dashed var(--control-border); border-radius: 8px; font-size: 12.5px; color: var(--ink-soft); background: var(--hover-bg-color); } .anonymize-form-col .draft-status { color: var(--ink-soft) !important; } .errors-page .errors-toolbar select, .errors-page .errors-toolbar .form-control, .errors-page form select { border-color: var(--control-border) !important; } @media (min-width: 1200px) { - .anonymize-workspace .anonymize-form-col, .anonymize-workspace .anonymize-form-col form, .anonymize-workspace .anonymize-form-col .paper-section { padding-left: 0 !important; } - .anonymize-workspace .anonymize-form-col { background: transparent !important; padding-right: 24px !important; } - .anonymize-workspace .anonymize-form-col .anonymize-submit-bar, .anonymize-workspace .anonymize-form-col .anonymize-submit-bar::before { background: var(--paper-bg, var(--background)) !important; } - .anonymize-workspace .anonymize-form-col .anonymize-submit-bar::before { background: linear-gradient(to bottom, transparent, var(--paper-bg, #FAF9F6)) !important; } + .anonymize-workspace .anonymize-form-col, .anonymize-workspace .anonymize-form-col form { padding-left: 0 !important; } } -@media (max-width: 767px) { .anonymize-page .form-row > [class*="col"] .form-group, .anonymize-page .form-row > .form-group { margin-bottom: 14px !important; } .anonymize-page .form-row > [class*="col"] { margin-bottom: 0 !important; padding-bottom: 0 !important; } } @media (min-width: 1200px) { .anonymize-workspace .anonymize-form-col .anonymize-submit-bar { background: #FAF9F6 !important; } - .anonymize-workspace .anonymize-form-col .anonymize-submit-bar::before { background: linear-gradient(to bottom, rgba(250,249,246,0), #FAF9F6) !important; } - .dark-mode .anonymize-workspace .anonymize-form-col .anonymize-submit-bar { background: #161412 !important; } - .dark-mode .anonymize-workspace .anonymize-form-col .anonymize-submit-bar::before { background: linear-gradient(to bottom, rgba(22,20,18,0), #161412) !important; } } - -/* ===== Round 82: slot legibility and line rhythm ===== */ -:root { --slot-num: #0F4F4A; } .dark-mode { --slot-num: #A8E6DD; --slot-bg: #3F3A33; } -.markdown-body p mark.redact-chip, .markdown-body li mark.redact-chip, .markdown-body td mark.redact-chip, span.redact { - display: inline-block !important; height: 1.08em !important; line-height: 1.08em !important; vertical-align: -.17em !important; - min-width: 2.5em !important; text-align: right !important; padding: 0 .34em !important; +.markdown-body p mark.redact-chip, +.markdown-body li mark.redact-chip, +.markdown-body td mark.redact-chip, +span.redact { + display: inline-block !important; + height: 1.08em !important; + line-height: 1.08em !important; + min-width: 2.5em !important; + text-align: right !important; + padding: 0 .34em !important; } -.markdown-body p mark.redact-chip i, .markdown-body li mark.redact-chip i, .markdown-body td mark.redact-chip i, span.redact i, .files .redact-slot i, .breadcrumb .redact-slot i { - font-size: max(10.5px, .72em) !important; line-height: inherit !important; vertical-align: top !important; font-weight: 700 !important; +.markdown-body p mark.redact-chip i, +.markdown-body li mark.redact-chip i, +.markdown-body td mark.redact-chip i, +span.redact i, +.files .redact-slot i, +.breadcrumb .redact-slot i { + line-height: inherit !important; + vertical-align: top !important; + font-weight: 700 !important; + letter-spacing: .01em; + font-size: max(11px, .8em) !important; } -.markdown-body h1 mark.redact-chip i, .markdown-body h2 mark.redact-chip i, .markdown-body h3 mark.redact-chip i { font-size: .62em !important; } -.ace_editor .ace_text-layer .ace_redacted::after { font-size: 10.5px !important; } -.demo-output .redact-chip { font-size: 11px !important; } - -/* ===== Round 83 ===== */ -/* errors chart: info is a faint background band */ -.errors-page .vol-info, .errors-page .bar-info, .errors-page [class*="seg-info"] { opacity: .45; } -/* connection cards: equal height, actions pinned to the bottom, one rule */ +/* Errors chart: info is a faint background band */ +.errors-page [class*="seg-info"] { opacity: .45; } +/* Connection cards: equal height, actions pinned to the bottom, one rule */ .connections-grid { align-items: stretch !important; } -.connections-grid > section { display: flex; flex-direction: column; } -.connections-grid > section .connection-installations { margin-top: auto !important; border-top: 1px solid var(--border-color); border-bottom: 0 !important; } -/* one active-state language: the site nav uses the teal underline like the admin tabs */ -.navbar .nav-link.active, .site-nav .nav-link.active, header .nav-link.active { color: var(--color) !important; box-shadow: inset 0 -2px 0 var(--accent) !important; border-bottom-color: transparent !important; } -/* config: keep the way back on phones, and a clear quiet Discard */ -@media (max-width: 767px) { .anonymize-topbar .paper-crumbs { display: block !important; margin-bottom: 4px; font-size: 13px; } } +.connections-grid>section .connection-installations { + border-bottom: 0 !important; + margin-top: 16px !important; + border-top: 0 !important; + padding-top: 0 !important; +} +/* One active-state language: the site nav uses the teal underline like the admin tabs */ +.navbar .nav-link.active, header .nav-link.active { color: var(--color) !important; box-shadow: inset 0 -2px 0 var(--accent) !important; border-bottom-color: transparent !important; } +/* Config: keep the way back on phones, and a clear quiet Discard */ +@media (max-width: 767px) { .anonymize-topbar .paper-crumbs { display: block !important; margin-bottom: 4px; font-size: 13px; } +} .anonymize-form-col .draft-discard { background: none; border: 0; padding: 0 0 0 6px; font-size: 12.5px; font-weight: 500; color: var(--color) !important; text-decoration: underline; text-underline-offset: 3px; } .anonymize-form-col .draft-discard:hover { color: #B42318 !important; } - -/* ===== Round 84 ===== */ -/* phone summary: same "· [swatch] N redacted" pattern as desktop */ +/* Phone summary: same "· [swatch] N redacted" pattern as desktop */ @media (max-width: 767px) { - .mobile-sub b { display: inline-flex !important; align-items: center; gap: 5px; font-weight: 400 !important; color: inherit !important; } - .mobile-sub b::before { content: "" !important; display: inline-block !important; width: 12px; height: 7px; border-radius: 2px; background: var(--slot-bg) !important; } - .mobile-sub span:has(+ b)::after { content: "·"; margin: 0 6px; opacity: .7; } + .mobile-sub b { font-weight: 400 !important; color: inherit !important; } } -/* landing demo + hero mock: slots on the text baseline */ -.demo-output .redact-chip, span.redact { display: inline-block !important; height: 1.15em !important; line-height: 1.15em !important; vertical-align: -.2em !important; text-align: right !important; } -.demo-output .redact-chip { font-size: 11px !important; min-width: 3.4em !important; } -/* code line numbers at AA */ -.ace-chrome .ace_gutter-cell { color: #5A554D !important; } -.dark-mode .ace_editor .ace_gutter-cell { color: #A39C91 !important; } -/* selected tree row a touch clearer */ -.files .file.active > a { background: #E2DED6 !important; } -/* reading column at the ~720px the brief specifies */ -@media (min-width: 1200px) { .reading-layout { grid-template-columns: minmax(0, 700px) 176px !important; gap: 44px !important; } } - -/* ===== Round 85 ===== */ -/* hover-only styles never stick on touch screens */ -@media (hover: none) { .anonymize-page .repo-access-switch button:not([aria-pressed="true"]):hover { color: var(--ink-soft) !important; text-decoration: none !important; } } -/* connection cards: content flows from the top, one rule above "Installed on", no gap */ -.connections-grid > section .connection-installations { margin-top: 16px !important; } +/* Landing demo + hero mock: slots on the text baseline */ +.demo-output .redact-chip, span.redact { display: inline-block !important; height: 1.15em !important; line-height: 1.15em !important; } +/* Code line numbers at AA */ +/* Selected tree row a touch clearer */ +/* Reading column at the ~720px the brief specifies */ +/* Hover-only styles never stick on touch screens */ +/* Connection cards: content flows from the top, one rule above "Installed on", no gap */ /* Usage: a small progress bar instead of a ring that reads as a spinner */ .dashboard-page .dashboard-quota .quota-summary-ring { display: none !important; } -.dashboard-page .dashboard-quota > summary::before { content: ""; width: 28px; height: 4px; border-radius: 2px; background: linear-gradient(to right, var(--accent) var(--quota-pct, 5%), var(--border-color) 0); flex: 0 0 28px; } -/* empty throughput: a compact panel, the stats card sets the row height no longer */ -/* dashboard row: open, edit, more share one 32px rhythm */ -.paper-table-dashboard .row-open { margin-right: 2px; } -@media (max-width: 767px) { .paper-table-dashboard .cell-actions > .row-open { display: none !important; } } -.dashboard-page .dashboard-quota > summary::before { width: 32px; height: 5px; flex-basis: 32px; background: linear-gradient(to right, var(--accent) 0 max(3px, var(--quota-pct, 5%)), #D9D3C8 0) !important; } -.dark-mode .dashboard-page .dashboard-quota > summary::before { background: linear-gradient(to right, #7CC7BE 0 max(3px, var(--quota-pct, 5%)), #3A352F 0) !important; } - -/* ===== Round 86 ===== */ -/* reading column: 680 + outline, ~50px each side at 1280 */ -@media (min-width: 1200px) { .reading-layout { grid-template-columns: minmax(0, 680px) 176px !important; gap: 44px !important; } .md-find-bar { padding-left: max(20px, calc((100% - 900px) / 2)) !important; } } -/* slot numbers carry identity: larger */ -.markdown-body p mark.redact-chip i, .markdown-body li mark.redact-chip i, .markdown-body td mark.redact-chip i, span.redact i, .files .redact-slot i, .breadcrumb .redact-slot i { font-size: max(11px, .8em) !important; letter-spacing: .01em; } -/* selected tree row lighter than the slot stone so slots stay visible inside it */ -.files .file.active > a { background: #EBE7E0 !important; } -.files .file.active > a .redact-slot { background: #D6CEC0 !important; } -/* landing demo slot: same geometry as the viewer's */ -.demo-output .redact-chip { font-size: 12px !important; height: 1.3em !important; line-height: 1.3em !important; min-width: 3em !important; vertical-align: -.28em !important; padding: 0 .4em !important; } -/* dashboard row actions: 32px targets with breathing room from the link chip */ -.paper-table-dashboard .cell-actions { gap: 4px !important; } -.paper-table-dashboard .cell-actions > .copy-url { margin-right: 6px !important; } -.paper-table-dashboard .row-edit, .paper-table-dashboard .btn-icon-dots { width: 32px !important; height: 32px !important; display: inline-flex !important; align-items: center; justify-content: center; border-radius: 8px; } +/* Empty throughput: a compact panel, the stats card sets the row height no longer */ +@media (max-width: 767px) { + .paper-table-dashboard .cell-actions>.row-open { + grid-area: open; + width: 40px !important; + align-self: start; + margin-top: -4px; + display: none !important; + } +} +/* Reading column: 680 + outline, ~50px each side at 1280 */ +/* Slot numbers carry identity: larger */ +/* Selected tree row lighter than the slot stone so slots stay visible inside it */ +/* Landing demo slot: same geometry as the viewer's */ +.demo-output .redact-chip { height: 1.3em !important; line-height: 1.3em !important; min-width: 3em !important; padding: 0 .4em !important; } +.paper-table-dashboard .cell-actions>.copy-url { + display: inline-flex !important; + align-items: center !important; + justify-content: center !important; + height: 36px !important; + min-width: 0 !important; + max-width: none !important; + border-radius: 8px !important; + box-shadow: none !important; +} +.paper-table-dashboard .row-edit, .paper-table-dashboard .btn-icon-dots { height: 32px !important; display: inline-flex !important; align-items: center; } .paper-table-dashboard .row-edit:hover, .paper-table-dashboard .btn-icon-dots:hover { background: var(--hover-bg-color) !important; } -/* config: commit hash ends in an ellipsis; phone fields share one rhythm */ -.anonymize-page #commit { text-overflow: ellipsis; } -@media (max-width: 767px) { .anonymize-page .form-grid-2 { row-gap: 0 !important; gap: 0 !important; } .anonymize-page .form-grid-2 > .form-group { margin-bottom: 16px !important; } } -/* connections: the footer row reads as part of the card, no second rule */ -.connections-grid > section .connection-installations { border-top: 0 !important; padding-top: 0 !important; } - -/* ===== Round 87 ===== */ -/* viewer bar: FAQ + Report a bug live in one labelled Help menu */ +/* Config: commit hash ends in an ellipsis; phone fields share one rhythm */ +@media (max-width: 767px) { .anonymize-page .form-grid-2 > .form-group { margin-bottom: 16px !important; } +} +/* Connections: the footer row reads as part of the card, no second rule */ +/* Viewer bar: FAQ + Report a bug live in one labelled Help menu */ .vb-help { position: relative; display: inline-flex; } .vb-help-btn { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 10px; border: 0; border-radius: 8px; background: transparent; color: var(--ink-soft); font: 500 13px var(--font-sans, Inter, sans-serif); cursor: pointer; } .vb-help-btn:hover, .vb-help-btn[aria-expanded="true"] { background: var(--hover-bg-color); color: var(--color); } .vb-help-menu { position: absolute; top: calc(100% + 8px) !important; right: 0; left: auto; min-width: 250px; z-index: 50; } .vb-help-menu a { display: flex; gap: 10px; align-items: flex-start; } -.vb-help-menu small { display: block; font-size: 12px; color: var(--ink-soft); font-weight: 400; margin-top: 1px; } -@media (max-width: 767px) { .viewer-bar .vb-help { display: none !important; } } -/* dashboard: the Link header starts where the link chip starts */ -.paper-table-dashboard .paper-table-head .col-link { padding-left: 0 !important; margin-left: -16px; } -/* config step: a compact title band so more of the form is visible */ -@media (min-width: 768px) { - .anonymize-workspace .anonymize-topbar { padding-top: 12px !important; padding-bottom: 12px !important; } - .anonymize-workspace .anonymize-topbar .paper-crumbs { margin-bottom: 2px !important; } - .anonymize-workspace .anonymize-topbar h1, .anonymize-workspace .anonymize-topbar .paper-page-title { font-size: 26px !important; margin: 0 !important; } +@media (max-width: 767px) { .viewer-bar .vb-help { display: none !important; } } -/* one placeholder tone everywhere: clearly lighter than entered text */ -input::placeholder, textarea::placeholder, .form-control::placeholder, #sourceUrl-landing::placeholder, #terms::placeholder { color: #A39B8E !important; opacity: 1 !important; } +/* Dashboard: the Link header starts where the link chip starts */ +.paper-table-dashboard .paper-table-head .col-link { padding-left: 0 !important; } +/* Config step: a compact title band so more of the form is visible */ .dark-mode input::placeholder, .dark-mode textarea::placeholder, .dark-mode .form-control::placeholder { color: #6F695F !important; } -/* queue legend: "active" uses the accent, not black */ -.q-state-toggle .q-dot-active, .q-state-filters .q-legend-active, .q-state-filters [class*="active"] > .q-dot, .q-dot-active { background: var(--accent) !important; } - -/* ===== Round 88 ===== */ +/* Queue legend: "active" uses the accent, not black */ +.q-state-filters [class*="active"]>.q-dot { background: var(--accent) !important; } @media (max-width: 767px) { - .mobile-sub b { font-size: inherit !important; gap: 6px !important; margin-left: 0 !important; padding-left: 0 !important; } - .mobile-sub span:has(+ b)::after { margin: 0 6px 0 6px !important; } - .mobile-sub b::before { width: 14px !important; height: 8px !important; background: #D6CEC0 !important; } - .file-card-head { min-height: 56px !important; } + .mobile-sub b { padding-left: 0 !important; } } -/* heading slots: lighter numbers, tighter padding */ +/* Heading slots: lighter numbers, tighter padding */ .markdown-body h1 mark.redact-chip i, .markdown-body h2 mark.redact-chip i { font-weight: 600 !important; font-size: .58em !important; } .markdown-body h1 mark.redact-chip, .markdown-body h2 mark.redact-chip, .dark-mode .markdown-body h1 mark.redact-chip, .dark-mode .markdown-body h2 mark.redact-chip { min-width: 1.6em !important; padding: 0 .18em !important; } -/* outline: nested levels a step smaller and lighter */ +/* Outline: nested levels a step smaller and lighter */ .readme-toc a.lvl-3 { font-size: 12.5px !important; color: #6E685F !important; } .dark-mode .readme-toc a.lvl-3 { color: #9C958A !important; } -/* code toolbar: view tools set apart from Raw | Copy | Download */ -.file-card-head .file-card-tools, .file-card-head .view-tools { margin-right: 10px !important; padding-right: 10px !important; border-right: 1px solid var(--border-color) !important; } -/* selection: visible fill, slot a step darker inside it */ -.files .file.active > a { background: #E5E0D8 !important; } -.files .file.active > a .redact-slot { background: #CEC5B5 !important; } -/* slot baseline */ +/* Code toolbar: view tools set apart from Raw | Copy | Download */ +.file-card-head .view-tools { margin-right: 10px !important; padding-right: 10px !important; border-right: 1px solid var(--border-color) !important; } +/* Selection: visible fill, slot a step darker inside it */ +/* Slot baseline */ .markdown-body p mark.redact-chip, .markdown-body li mark.redact-chip, .markdown-body td mark.redact-chip { vertical-align: -.1em !important; } -/* phone code fade: narrower, and gone at the right edge */ -@media (max-width: 767px) { .file-card.is-code.no-wrap .file-card-body::after { width: 24px !important; transition: opacity .15s; } .file-card.at-right-edge .file-card-body::after { opacity: 0 !important; } } -/* hero mock: selection marker inside the row */ +/* Phone code fade: narrower, and gone at the right edge */ +/* Hero mock: selection marker inside the row */ .hero-mock .is-active, .hero-mock [class*="active"] { position: relative; } -.hero-mock .is-active::before { left: 0 !important; } - -/* ===== Round 89 ===== */ -/* config: the last line of the form clears the sticky bar's fade */ -.anonymize-form-col form { padding-bottom: 36px !important; } -/* connections: one body size and one inline action pattern in both cards */ -.connections-grid > section p { font-size: 13.5px !important; line-height: 1.55 !important; } -.connections-grid > section > .btn, .connections-grid > section > a.btn { width: auto !important; align-self: flex-start; } -/* phone dashboard rows: 40px action targets, even separators */ +/* Phone dashboard rows: 40px action targets, even separators */ @media (max-width: 767px) { - .paper-table-dashboard .cell-actions > .row-edit, .paper-table-dashboard .cell-actions > .dropdown, .paper-table-dashboard .cell-actions > .dropdown > .btn-icon-dots { width: 40px !important; height: 40px !important; } + .paper-table-dashboard .cell-actions > .row-edit, .paper-table-dashboard .cell-actions > .dropdown, .paper-table-dashboard .cell-actions > .dropdown > .btn-icon-dots { height: 40px !important; } .dashboard-page .dashboard-row-meta .cell-status, .dashboard-page .dashboard-row-meta .cell-views, .dashboard-page .dashboard-row-meta .cell-expires { padding: 0 !important; margin: 0 !important; } - .dashboard-page .dashboard-row-meta .cell-views::before, .dashboard-page .dashboard-row-meta .cell-expires::before { margin: 0 7px !important; width: auto !important; } .dashboard-page .dashboard-row-meta .status-line { padding: 0 !important; margin: 0 !important; } - .dashboard-page .dashboard-row-meta .cell-expires .cell-label { margin-right: 4px !important; } } .connection-installations, .connection-installations li { border: 0 !important; padding-bottom: 0 !important; margin-bottom: 0 !important; } -.connection-installations li { padding-top: 0 !important; } .connections-page .connection-refresh { margin-left: 0 !important; } - -/* ===== Round 90 ===== */ -/* config submit: a solid bar with a hairline; no fade over the form */ -.anonymize-form-col .anonymize-submit-bar::before { display: none !important; } +/* Config submit: a solid bar with a hairline; no fade over the form */ .anonymize-form-col .anonymize-submit-bar { border-top: 1px solid var(--border-color) !important; box-shadow: 0 -6px 12px -10px rgba(40,32,24,.18); } -.anonymize-form-col form { padding-bottom: 24px !important; } -/* failed README image: a neutral block in the UI font */ -.img-unavailable { display: flex !important; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 72px; border: 1px solid var(--border-color) !important; border-style: solid !important; background: var(--hover-bg-color); font: 500 12.5px var(--font-sans, Inter, sans-serif) !important; color: var(--ink-soft); } +/* Failed README image: a neutral block in the UI font */ +.img-unavailable { align-items: center; gap: 8px; border: 1px solid var(--border-color) !important; border-style: solid !important; background: var(--hover-bg-color); color: var(--ink-soft); } .img-unavailable::before { content: ""; width: 16px; height: 13px; border: 1.5px solid currentColor; border-radius: 2px; opacity: .7; background: linear-gradient(135deg, transparent 55%, currentColor 55% 62%, transparent 62%); } -/* excluded "Removed" pill: label struck, count stays legible */ -.admin-summary .summary-pill:not(.active) .count { text-decoration: none !important; opacity: 1 !important; color: var(--ink-soft) !important; } -.admin-summary .summary-pill:not(.active)::before { background: #8A8680 !important; } +/* Excluded "Removed" pill: label struck, count stays legible */ /* Usage meter wider with a visible track */ -.dashboard-page .dashboard-quota > summary::before { width: 44px !important; flex-basis: 44px !important; } -/* reading column balanced between sidebar and outline */ -@media (min-width: 1200px) { .reading-layout { grid-template-columns: minmax(0, 664px) 176px !important; gap: 40px !important; } .md-find-bar { padding-left: max(20px, calc((100% - 880px) / 2)) !important; } } -/* toolbar: a hairline before the Raw | Copy | Download group */ -.file-card-head .tb-file { margin-left: 8px !important; position: relative; } -.file-card-head .tb-file::before { content: ""; position: absolute; left: -9px; top: 6px; bottom: 6px; width: 1px; background: var(--border-color); } -/* sidebar search: readable placeholder and key chip */ -.tree-search-input::placeholder { color: #8A8378 !important; } -.tree-search-kbd { color: #6E685F !important; border: 1px solid var(--border-color) !important; background: var(--paper-card) !important; } -@media (max-width: 767px) { - .mobile-sub { gap: 0 !important; column-gap: 0 !important; } - .mobile-sub > span + span::before, .mobile-sub span:has(+ b)::after { margin: 0 6px !important; } - .mobile-sub b::before { margin: 0 !important; } - .file-card-head { min-height: 52px !important; padding-top: 6px !important; padding-bottom: 6px !important; } +/* Reading column balanced between sidebar and outline */ +@media (min-width: 1200px) { .reading-layout { grid-template-columns: minmax(0, 664px) 176px !important; gap: 40px !important; } + .md-find-bar { padding-left: max(20px, calc((100% - 880px) / 2)) !important; } } +/* Toolbar: a hairline before the Raw | Copy | Download group */ +.file-card-head .tb-file { margin-left: 8px !important; position: relative; } +/* Sidebar search: readable placeholder and key chip */ +.tree-search-kbd { border: 1px solid var(--border-color) !important; background: var(--paper-card) !important; } +/* Errors chart: legend swatches are the exact bar fills */ -/* ===== Round 91 ===== */ -/* errors chart: legend swatches are the exact bar fills */ +/* ----- Admin ----- */ .errors-page .seg-info, .errors-page .dot-info { background: #CFC9BF !important; opacity: 1 !important; } .dark-mode .errors-page .seg-info, .dark-mode .errors-page .dot-info { background: #4A453E !important; } .errors-page .seg-error, .errors-page .dot-error { background: #B42318 !important; } .errors-page .seg-warn, .errors-page .dot-warn { background: #B7791F !important; } -/* dark viewer: sidebar and top bar one clear step above the reading pane */ -.dark-mode .leftCol, .dark-mode .viewer-bar { background: #221F1B !important; } -/* copy chip reads as a button */ +/* Dark viewer: sidebar and top bar one clear step above the reading pane */ +/* Copy chip reads as a button */ .paper-table-dashboard .copy-url { box-shadow: inset 0 0 0 1px var(--control-border, #CFC7B9) !important; background: var(--paper-card) !important; } .paper-table-dashboard .copy-url .ui-icon, .paper-table-dashboard .copy-url svg { width: 15px !important; height: 15px !important; color: var(--color) !important; opacity: .75; } .paper-table-dashboard .copy-url:hover { background: var(--hover-bg-color) !important; } -/* config preview reaches the container edge */ -@media (min-width: 1200px) { .anonymize-workspace .anonymize-preview-col { padding-right: 0 !important; } } - -/* ===== Round 92 ===== */ -/* draft note lives inside the sticky bar, above the button */ -.anonymize-submit-bar .draft-status { display: block; margin: 0 0 8px !important; font-size: 12.5px !important; } -/* phone rows: Open is back beside Edit */ -@media (max-width: 767px) { .paper-table-dashboard .cell-actions > .row-open { display: inline-flex !important; grid-area: auto; } .paper-table.paper-table-dashboard .paper-table-row { grid-template-columns: minmax(0, 1fr) auto auto auto !important; grid-template-areas: "name open edit more" "meta meta meta meta" "link link link link" !important; } .paper-table-dashboard .cell-actions > .row-open { grid-area: open; width: 40px !important; height: 40px !important; align-self: start; margin-top: -4px; } } -/* overview: high / critical readings tint their card */ -.overview-page .ov-kpi:has(.ov-meter.crit), .overview-page .ov-card:has(.ov-meter.crit), .overview-page .ov-meter.crit { } +/* Config preview reaches the container edge */ +@media (min-width: 1200px) { .anonymize-workspace .anonymize-preview-col { padding-right: 0 !important; } +} +/* Draft note lives inside the sticky bar, above the button */ +.anonymize-submit-bar .draft-status { + display: block; + margin: 0 0 8px !important; + font-size: 12.5px !important; + white-space: nowrap; + flex: 0 0 auto !important; + max-width: none !important; + order: -1; +} +/* Phone rows: Open is back beside Edit */ +@media (max-width: 767px) { .paper-table-dashboard .cell-actions > .row-open { height: 40px !important; } +} +/* Overview: high / critical readings tint their card */ .overview-page :is(.ov-kpi, .ov-card, .kpi-card):has(.ov-meter.crit) { border-color: rgba(180,35,24,.45) !important; box-shadow: inset 3px 0 0 #B42318 !important; } .overview-page :is(.ov-kpi, .ov-card, .kpi-card):has(.ov-meter.warn):not(:has(.ov-meter.crit)) { border-color: rgba(183,121,31,.45) !important; box-shadow: inset 3px 0 0 #B7791F !important; } -/* dark slots a step lighter */ -.dark-mode { --slot-bg: #46403A; } -/* one accordion chevron language: down when closed, up when open */ -.faq-section .panel-default .panel-title a:after { transform: rotate(45deg) !important; } -.faq-section .panel-default .panel-title a[aria-expanded="true"]:after { transform: rotate(-135deg) !important; } +/* Dark slots a step lighter */ .overview-page .ov-kpi-card:has(.ov-meter.crit) { border-color: rgba(180,35,24,.45) !important; box-shadow: inset 3px 0 0 #B42318 !important; } -.overview-page .ov-kpi-card:has(.ov-meter.warn):not(:has(.ov-meter.crit)) { border-color: rgba(183,121,31,.45) !important; box-shadow: inset 3px 0 0 #B7791F !important; } -@media (max-width: 767px) { .paper-table-dashboard .cell-anon, .paper-table-dashboard .cell-anon > *, .paper-table-dashboard .cell-anon a, .paper-table-dashboard .cell-anon strong { min-width: 0; } .paper-table-dashboard .cell-anon .anon-title, .paper-table-dashboard .cell-anon .anon-title > a, .paper-table-dashboard .cell-anon .anon-name { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; word-break: normal !important; overflow-wrap: normal !important; display: block; } } - -/* ===== Round 93 ===== */ -/* users filter pills: status dots match the row statuses */ -.users-page .summary-pill.ok::before, .admin-page .summary-pill.ok::before { background: var(--status-ready, #2F7D4F) !important; } -.admin-page .summary-pill.error::before { background: var(--status-error, #B42318) !important; } -/* phone rows: the name gets the full row; Open lives in the ⋯ menu on phones */ -@media (max-width: 767px) { - .paper-table-dashboard .cell-actions > .row-open { display: none !important; } - .paper-table.paper-table-dashboard .paper-table-row { grid-template-columns: minmax(0, 1fr) auto auto !important; grid-template-areas: "name edit more" "meta meta meta" "link link link" !important; } - .paper-table-dashboard .cell-anon .anon-title, .paper-table-dashboard .cell-anon .anon-title > a { white-space: normal !important; overflow: visible !important; text-overflow: clip !important; overflow-wrap: anywhere !important; } +.overview-page .ov-kpi-card:has(.ov-meter.warn):not(:has(.ov-meter.crit)) { + border-color: rgba(183,121,31,.45) !important; + box-shadow: inset 3px 0 0 #B7791F !important; } -/* viewer: sidebar header ends on the same line as the toolbar (y=96) */ -/* code: calmer keyword hue, so teal stays the loudest colour */ +@media (max-width: 767px) { .paper-table-dashboard .cell-anon, .paper-table-dashboard .cell-anon > *, .paper-table-dashboard .cell-anon a, .paper-table-dashboard .cell-anon strong { min-width: 0; } +} +/* Users filter pills: status dots match the row statuses */ +/* Phone rows: the name gets the full row; Open lives in the ⋯ menu on phones */ +/* Viewer: sidebar header ends on the same line as the toolbar (y=96) */ +/* Code: calmer keyword hue, so teal stays the loudest colour */ .ace-chrome .ace_keyword, .ace-chrome .ace_storage, .ace-chrome .ace_storage.ace_type { color: #7A3E6B !important; } .dark-mode .ace_editor .ace_keyword, .dark-mode .ace_editor .ace_storage { color: #D3A3C6 !important; } -/* dark slots: lighter fill, light-teal numbers */ -.dark-mode { --slot-bg: #4A443D; --slot-num: #9FE0D6; } +/* Dark slots: lighter fill, light-teal numbers */ /* FAQ display heading wraps without an orphan */ -.faq-page h1, .paper-page-title, .faq-hero h1 { text-wrap: balance; } -/* outline label aligned to the first heading */ -@media (min-width: 1200px) { .readme-toc { margin-top: -18px !important; } } -@media (min-width: 768px) { .leftCol-search { height: 52px !important; min-height: 52px !important; box-sizing: border-box; display: flex !important; align-items: center; padding-top: 0 !important; padding-bottom: 0 !important; border-bottom: 1px solid var(--border-color) !important; margin-bottom: 6px !important; } } -/* phone code: a clear 32px edge cue while more code is to the right */ -@media (max-width: 767px) { .file-card.is-code.no-wrap .file-card-body::after { width: 32px !important; background: linear-gradient(to right, rgba(255,255,255,0), #fff 75%) !important; border-right: 2px solid rgba(40,32,24,.14); } .dark-mode .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, rgba(20,19,17,0), #141311 75%) !important; border-right-color: rgba(255,255,255,.1); } } -/* config: the sticky bar ends flush with the column, so it no longer jumps at the end of the scroll */ -.anonymize-form-col form { padding-bottom: 0 !important; } +.paper-page-title { text-wrap: balance; } +/* Outline label aligned to the first heading */ +@media (min-width: 1200px) { .readme-toc { margin-top: -18px !important; } +} +@media (min-width: 768px) { .leftCol-search { min-height: 52px !important; border-bottom: 1px solid var(--border-color) !important; margin-bottom: 6px !important; } +} +/* Phone code: a clear 32px edge cue while more code is to the right */ +/* Config: the sticky bar ends flush with the column, so it no longer jumps at the end of the scroll */ .anonymize-form-col .anonymize-submit-bar { margin-bottom: 0 !important; } -/* errors: the bucket tiles double as filters */ +/* Errors: the bucket tiles double as filters */ .errors-page .kpi-filter { cursor: pointer; transition: border-color .12s, box-shadow .12s; } .errors-page .kpi-filter:hover { border-color: var(--control-border, #CFC7B9) !important; } .errors-page .kpi-filter.is-selected { border-color: var(--accent) !important; box-shadow: inset 0 0 0 1px var(--accent) !important; } -.errors-page .kpi-filter:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } - -/* ===== Round 94 ===== */ -/* outline: inactive items readable */ +/* Outline: inactive items readable */ .readme-toc a:not(.is-active) { color: #4F4A43 !important; } -.readme-toc a.lvl-3:not(.is-active) { color: #625C53 !important; } -/* find: a 1px ring so it doesn't double up with the toolbar's on-state */ +/* Find: a 1px ring so it doesn't double up with the toolbar's on-state */ .md-find-input:focus, .ace_search .ace_search_field:focus { box-shadow: 0 0 0 2px var(--accent-soft) !important; border-color: var(--accent) !important; } -/* phone toolbar: toggle sits on the file-name line */ -@media (max-width: 767px) { .file-card-head { align-items: flex-start !important; } .file-card-head .btn-sidebar-toggle, .file-card-head .mobile-files-toggle, .file-card-head > button:first-child { margin-top: 2px !important; } } -/* phone dashboard: one 40px control height on both rows */ -@media (max-width: 767px) { .dashboard-page .dashboard-quota > summary, .dashboard-page #search, .dashboard-page .dashboard-heading-actions .btn, .dashboard-page .filters-toggle, .dashboard-page .btn-filters { height: 40px !important; min-height: 40px !important; } } -/* profile: the Files tile gets a caption like its neighbours */ -.quota-panel .quota-item:has(.quota-unlimited)::after, .profile-page .quota-tile:has(.quota-unlimited)::after { content: "No limit on file count"; display: block; font-size: 12.5px; color: var(--ink-soft); margin-top: 6px; } -/* admin user: absent values quieter than real ones */ +/* Phone toolbar: toggle sits on the file-name line */ +/* Phone dashboard: one 40px control height on both rows */ +@media (max-width: 767px) { .dashboard-page .dashboard-quota>summary, .dashboard-page #search, .dashboard-page .dashboard-heading-actions .btn { height: 40px !important; min-height: 40px !important; } +} +/* Admin user: absent values quieter than real ones */ .admin-page .detail-value.is-empty, .admin-page .is-unsynced { color: #9A9389 !important; font-style: normal !important; } - -/* ===== Round 95 ===== */ -/* submit bar: draft note beside the button, one compact row */ +/* Submit bar: draft note beside the button, one compact row */ @media (min-width: 768px) { .anonymize-form-col .anonymize-submit-bar { display: flex !important; align-items: center; gap: 16px; } - .anonymize-submit-bar .draft-status { margin: 0 !important; flex: 0 1 auto; max-width: 46%; line-height: 1.35; } + .anonymize-submit-bar .draft-status { margin: 0 !important; line-height: 1.35; } .anonymize-submit-bar .btn-ink { flex: 1 1 auto; } } -/* the publish warning appears once a source is loaded, not on the empty first step */ -.anonymize-landing .repo-access-note > span:has(.ui-icon) { display: none !important; } -/* sidebar ZIP button uses the same download glyph as the toolbar (CSS mask over the old icon) */ -/* phone code: a shadow edge marks more code to the right */ -@media (max-width: 767px) { .file-card.is-code.no-wrap .file-card-body::after { box-shadow: inset -8px 0 8px -8px rgba(40,32,24,.35) !important; border-right: 0 !important; } } -/* dark: chrome and reading pane closer in tone */ -.dark-mode .leftCol { background: #1C1A17 !important; } +/* Sidebar ZIP button uses the same download glyph as the toolbar (CSS mask over the old icon) */ +/* Phone code: a shadow edge marks more code to the right */ +/* Dark: chrome and reading pane closer in tone */ .dark-mode .viewer-bar { background: #181614 !important; } -@media (max-width: 767px) { - .file-card.is-code.no-wrap .file-card-body::after { width: 44px !important; background: linear-gradient(to right, rgba(250,249,246,0) 0%, rgba(250,249,246,.92) 55%, rgba(226,220,210,.95) 100%) !important; box-shadow: inset -1px 0 0 rgba(40,32,24,.18) !important; } - .dark-mode .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, rgba(20,19,17,0) 0%, rgba(20,19,17,.92) 55%, rgba(44,40,35,.95) 100%) !important; box-shadow: inset -1px 0 0 rgba(255,255,255,.14) !important; } -} - -/* ===== Round 96: structural ===== */ -/* phone toolbar: one 48px row — sidebar toggle, file name, redaction count, Copy, ⋯ */ +/* Phone toolbar: one 48px row — sidebar toggle, file name, redaction count, Copy, ⋯ */ @media (max-width: 767px) { .file-card-head { min-height: 48px !important; align-items: center !important; padding-top: 4px !important; padding-bottom: 4px !important; } - .file-card-head .file-card-path { display: flex !important; flex-direction: row !important; align-items: center !important; flex-wrap: nowrap !important; gap: 8px !important; min-width: 0; } + .file-card-head .file-card-path { flex-direction: row !important; align-items: center !important; min-width: 0; } .file-card-head .file-card-path .breadcrumb { min-width: 0; flex: 0 1 auto; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } - .mobile-sub { margin: 0 !important; flex: 0 0 auto; white-space: nowrap; } + .mobile-sub { margin: 0 !important; white-space: nowrap; } .mobile-sub > span { display: none !important; } - .mobile-sub span:has(+ b)::after { content: none !important; } - .mobile-sub b { font-size: 12.5px !important; } } /* FAQ: contents rail + answers centred as one group in the container */ -/* landing: one section rhythm */ +/* Landing: one section rhythm */ + +/* ----- Landing and FAQ ----- */ .paper-section-head, .paper-qa, .paper-features, .paper-stats { margin-top: 88px !important; } .paper-hero + .paper-stats { margin-top: 40px !important; } - -/* ===== Round 97 ===== */ /* FAQ: contents | answers | a quiet help card, on the site grid */ -@media (min-width: 1100px) { .paper-faq-body { grid-template-columns: 180px minmax(0, 1fr) 220px !important; gap: 48px !important; } .paper-faq-help { display: block; } } +@media (min-width: 1100px) { + .paper-faq-help { display: block !important; } +} .paper-faq-help { display: none; } -.paper-faq-help-card { position: sticky; top: 96px; border: 1px solid var(--border-color); border-radius: 12px; background: var(--paper-card); padding: 18px; } +.paper-faq-help-card { + position: sticky; + top: 96px; + border: 1px solid var(--border-color); + background: var(--paper-card); + padding: 18px; + border-radius: 12px !important; +} .paper-faq-help-card strong { display: block; font-size: 14px; margin-bottom: 6px; } -.paper-faq-help-card p { font-size: 13px; line-height: 1.5; color: var(--ink-soft); margin: 0 0 12px; } -/* submit bar: draft status on one line */ -.anonymize-submit-bar .draft-status { white-space: nowrap; flex: 0 0 auto !important; max-width: none !important; } -/* queues: range control lives in the Throughput card header */ -.q-throughput .q-range-btns { float: right; margin: -4px 0 0 12px; } -/* admin tables share the card shell used on Errors */ +/* Submit bar: draft status on one line */ +/* Queues: range control lives in the Throughput card header */ +.q-throughput .q-range-btns { + position: absolute !important; + top: 12px; + right: 16px; + float: none; + margin: 0 !important; + width: auto !important; + display: inline-flex !important; + z-index: 2; +} +/* Admin tables share the card shell used on Errors */ .admin-page .paper-table { border: 1px solid var(--border-color) !important; border-radius: 12px !important; overflow: hidden; background: var(--paper-card); } -/* dark mode: tertiary text lifted to AA */ -.dark-mode { --ink-soft: #ADA699; --ink-muted: #8C8579; } -/* hero mock swatch = product slot */ -.hero-mock-count::before { background: var(--slot-bg) !important; } -@media (min-width: 1100px) { .paper-faq-help { display: block !important; } } +/* Dark mode: tertiary text lifted to AA */ +/* Hero mock swatch = product slot */ .q-throughput { position: relative; } -.q-throughput .q-range-btns { position: absolute !important; top: 12px; right: 16px; float: none !important; margin: 0 !important; width: auto !important; display: inline-flex !important; z-index: 2; } -.anonymize-submit-bar .draft-status { order: -1; } - -/* Round 93: dark outline contrast after later light overrides; stronger dark selected row */ .dark-mode .readme-toc a:not(.is-active) { color: #B8B1A6 !important; } -.dark-mode .readme-toc a.lvl-3:not(.is-active) { color: #A39C91 !important; } -.dark-mode .files .file.active > a { background: rgba(255,255,255,.13) !important; } -/* Round 94: selection fill distinct from redaction slots; gentler phone scroll cue */ -.files .file.active > a { background: #EBE7E0 !important; } -.files .file.active > a .redact-slot { background: var(--slot-bg) !important; } -@media (max-width: 767px) { - .file-card.is-code.no-wrap .file-card-body::after { width: 28px !important; background: linear-gradient(to right, rgba(250,249,246,0) 0%, rgba(250,249,246,.85) 100%) !important; box-shadow: inset -1px 0 0 rgba(40,32,24,.16) !important; } - .dark-mode .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, rgba(20,19,17,0) 0%, rgba(20,19,17,.85) 100%) !important; box-shadow: inset -1px 0 0 rgba(255,255,255,.12) !important; } +@media (min-width: 1100px) { + .readme-toc { margin-top: -28px !important; top: 92px !important; } } -/* Round 95: outline top aligns with the first heading; clearer dark sidebar depth; visible phone scroll cue */ -@media (min-width: 1100px) { .readme-toc { margin-top: -54px !important; top: 84px !important; } } .dark-mode .leftCol, .dark-mode .leftCol .leftCol-search { background: #1F1D1A !important; } -@media (max-width: 767px) { - .file-card.is-code.no-wrap .file-card-body::after { width: 32px !important; background: linear-gradient(to right, rgba(250,249,246,0) 0%, rgba(250,249,246,.75) 45%, rgba(236,232,225,.98) 100%) !important; box-shadow: inset -1px 0 0 rgba(40,32,24,.2) !important; } - .dark-mode .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, rgba(20,19,17,0) 0%, rgba(20,19,17,.75) 45%, rgba(38,35,31,.98) 100%) !important; box-shadow: inset -1px 0 0 rgba(255,255,255,.16) !important; } -} -/* Round 96: phone Sign in matches the primary teal action; readable FAQ help card */ @media (max-width: 991px) { .navbar .nav-signin-m { display: inline-flex; align-items: center; gap: 6px; background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; padding: 0 12px !important; font-weight: 500; } .dark-mode .navbar .nav-signin-m { background: #237A71 !important; border-color: #237A71 !important; color: #fff !important; } - .navbar .nav-signin-m .fa-github { font-size: 15px; } } -.paper-faq-help-card p { font-size: 14px !important; line-height: 1.55 !important; } -/* Round 97: larger hero product mock; even phone top-bar spacing */ -@media (min-width: 1100px) { .paper-hero { grid-template-columns: minmax(0, 1fr) 500px !important; column-gap: 48px !important; } } -@media (max-width: 767px) { .viewer-bar .vb-right { gap: 8px !important; } .viewer-bar .vb-right > .vb-support, .viewer-bar .vb-right > .vb-icon { margin: 0 !important; } } -@media (min-width: 1100px) { .paper-reassure { flex-wrap: wrap !important; column-gap: 18px !important; row-gap: 6px !important; max-width: 100%; } .paper-reassure li { white-space: nowrap; } } -/* Round 98: one landing split: every two-column block starts its right column at the same x */ -@media (min-width: 1100px) { - .paper-hero { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important; column-gap: 20px !important; } - .paper-section-head { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important; column-gap: 20px !important; } - .paper-section-head > p { max-width: 500px; } +@media (max-width: 767px) { .viewer-bar .vb-right > .vb-support, .viewer-bar .vb-right > .vb-icon { margin: 0 !important; } } -/* Quieter dark slots with a brighter number */ -.dark-mode { --slot-bg: #3D3833; --slot-num: #8FDACD; } /* Sidebar search row centres on the same line as the file toolbar */ -@media (min-width: 768px) { .leftCol-search, .explorer-page > .leftCol .leftCol-search { height: 53px !important; padding: 0 12px !important; display: flex !important; align-items: center !important; box-sizing: border-box; } .leftCol-search .tree-search-box { height: 36px !important; padding-top: 0 !important; padding-bottom: 0 !important; align-items: center; } .leftCol-search .search-zip { height: 36px !important; width: 36px !important; } } -/* Round 99: a clearer phone scroll cue; aligned FAQ help card */ -@media (max-width: 767px) { - .file-card.is-code.no-wrap .file-card-body::after { width: 36px !important; background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(250,249,246,.9) 55%, #ECE7DF 100%) !important; box-shadow: inset -2px 0 0 rgba(40,32,24,.18) !important; } - .dark-mode .file-card.is-code.no-wrap .file-card-body::after { background: linear-gradient(to right, rgba(20,19,17,0) 0%, rgba(20,19,17,.9) 55%, #2A2622 100%) !important; box-shadow: inset -2px 0 0 rgba(255,255,255,.18) !important; } +@media (min-width: 768px) { .leftCol-search, .explorer-page > .leftCol .leftCol-search { height: 53px !important; padding: 0 12px !important; display: flex !important; align-items: center !important; box-sizing: border-box; } + .leftCol-search .tree-search-box { height: 36px !important; padding-top: 0 !important; padding-bottom: 0 !important; align-items: center; } + .leftCol-search .search-zip { height: 36px !important; } +} +@media (min-width: 1100px) { + .paper-faq-help-card { margin-top: 2px !important; } } -@media (min-width: 1100px) { .paper-faq-help-card { margin-top: 7px; } } -/* Round 100: toolbar swatch reads as the slot (edge + slightly darker); one Sign in treatment (filled teal) everywhere */ -.meta-redact::before, .hero-mock-count::before, .mobile-sub b::before { background: #D9D1C3 !important; box-shadow: inset 0 0 0 1px rgba(40,32,24,.12) !important; } -.dark-mode .meta-redact::before, .dark-mode .hero-mock-count::before, .dark-mode .mobile-sub b::before { background: #4A443D !important; box-shadow: inset 0 0 0 1px rgba(255,255,255,.14) !important; } .viewer-bar .vb-signin, .viewer-bar .vb-signin:hover { background: var(--accent) !important; color: #fff !important; box-shadow: none !important; border: 0 !important; } -.viewer-bar .vb-signin:hover { filter: brightness(.94); } .dark-mode .viewer-bar .vb-signin, .dark-mode .viewer-bar .vb-signin:hover { background: #237A71 !important; color: #fff !important; } -/* Round 101: tighter, uniform landing rhythm; sticky FAQ teaser heading; stronger tertiary text */ @media (min-width: 992px) { .paper-section-head, .paper-qa, .paper-features, .paper-stats { margin-top: 72px !important; } .demo { margin-bottom: 0 !important; } - .paper-qa { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important; column-gap: 20px !important; } } .ace-chrome .ace_gutter-cell { color: #57524A !important; } .dark-mode .ace_editor .ace_gutter-cell { color: #ADA69B !important; } .readme-toc a.lvl-3:not(.is-active) { color: #57524A !important; } -.dark-mode .readme-toc a.lvl-3:not(.is-active) { color: #ADA69B !important; } .paper-stat-delta, .paper-stats small { color: #57524A !important; } .nav-heart-m, .nav-heart-m:hover, .nav-heart-m:focus { background: transparent !important; box-shadow: none !important; border: 0 !important; } -@media (min-width: 992px) { .paper-section-head + .paper-features { margin-top: 32px !important; } } -@media (min-width: 1100px) { .paper-features { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important; column-gap: 20px !important; } .paper-features > :first-child { padding-right: 28px; } } -@media (min-width: 1100px) { .fm-input-sm { width: 118px !important; } .fm-row { gap: 12px !important; } .fm-toggles { flex-wrap: nowrap !important; } } -/* Round 102: one height (32px) and one gap (8px) across the viewer bar's right cluster */ +@media (min-width: 992px) { .paper-section-head + .paper-features { margin-top: 32px !important; } +} +@media (min-width: 1100px) { .paper-features > :first-child { padding-right: 28px; } +} +@media (min-width: 1100px) { .fm-input-sm { width: 118px !important; } +} @media (min-width: 768px) { - .viewer-bar .vb-right { gap: 8px !important; } .viewer-bar .vb-right > * { margin: 0 !important; } .viewer-bar .vb-support, .viewer-bar .vb-help-btn, .viewer-bar .vb-icon, .viewer-bar .vb-signin { height: 32px !important; min-height: 32px !important; box-sizing: border-box; } - .viewer-bar .vb-icon { width: 32px !important; } .viewer-bar .vb-snapshot { margin-right: 8px !important; } } /* Dark hero preview gets a lifted surface and a visible edge */ -.dark-mode .hero-mock { background: #221F1C !important; box-shadow: 0 0 0 1px rgba(255,255,255,.1), 0 18px 40px -18px rgba(0,0,0,.7) !important; } -@media (min-width: 768px) { .viewer-bar .vb-right .vb-icon { width: 32px !important; height: 32px !important; } } -.pane-url .meta-redact { display: inline-flex; align-items: center; gap: 6px; font-family: inherit; } -/* Round 103: hairline between view tools and the file-action group; paired demo headers share one height; bolder selected file */ +.dark-mode .hero-mock { border-color: #3A3631 !important; background: #24211D !important; } +@media (min-width: 768px) { .viewer-bar .vb-right .vb-icon { width: 32px !important; height: 32px !important; } +} +.pane-url .meta-redact { + display: inline-flex; + align-items: center; + gap: 6px; + font-family: var(--font-sans, Inter, system-ui, sans-serif) !important; + font-size: 12px; +} @media (min-width: 768px) { .file-card-head .tb-file, .tb-file { margin-left: 16px !important; } } -.demo-panes .pane-header { height: 40px !important; min-height: 40px !important; box-sizing: border-box; display: flex; align-items: center; padding-top: 0 !important; padding-bottom: 0 !important; } -.files .file.active > a .tree-name { font-weight: 500; color: var(--color); } -.files .file.active > a { background: #E8E3DB !important; } +.demo-panes .pane-header { height: 40px !important; align-items: center; padding-top: 0 !important; padding-bottom: 0 !important; } /* Snapshot reads as passive metadata; softer dark selection; neutral tracking on small labels; 14px site nav */ -.viewer-bar .vb-snapshot { font-size: 12px !important; color: var(--ink-soft) !important; gap: 5px !important; } -.dark-mode .files .file.active > a { background: rgba(255,255,255,.08) !important; } +.viewer-bar .vb-snapshot { color: var(--ink-soft) !important; } .pane-label, .demo-terms label, .demo-terms .label, .fm-label { letter-spacing: 0 !important; } -@media (min-width: 992px) { .navbar .nav-link:not(.btn-signin) { font-size: 14px !important; } } -/* Round 104: shared active-outline style (teal text + rail); visible accordion chevrons; dark slot edge; 13px toolbar metadata */ +@media (min-width: 992px) { .navbar .nav-link:not(.btn-signin) { font-size: 14px !important; } +} .paper-faq-toc a.active { color: var(--accent) !important; font-weight: 500; } .dark-mode .paper-faq-toc a.active { color: #7FCFC2 !important; } -.paper-features .paper-feature:not(.is-on) .paper-feature-tab::after, .paper-features .paper-feature.is-on .paper-feature-tab::after { border-color: #57524A !important; } -.dark-mode .paper-features .paper-feature .paper-feature-tab::after { border-color: #ADA69B !important; } -.paper-feature:not(.is-on) .paper-feature-tab:hover .paper-feature-title { color: var(--accent); } + +/* ----- File viewer ----- */ .dark-mode .redact-chip, .dark-mode .redact-slot, .dark-mode .ace_redacted { box-shadow: inset 0 0 0 1px rgba(255,255,255,.1) !important; } -@media (min-width: 768px) { .file-card-meta { font-size: 13px !important; } } -@media (min-width: 768px) { .file-card-head .btn-goto { order: 1; } .file-card-head .btn-toggle { order: 2; } .file-card-head .btn-find { order: 3; } .file-card-head .tb-file { order: 4; } .file-card-head .tb-copy-m, .file-card-head .tb-more-btn { order: 5; } } +@media (min-width: 768px) { .file-card-meta { font-size: 13px !important; } +} .leftCol-search .search-zip { width: auto !important; padding: 0 9px !important; gap: 4px; display: inline-flex !important; align-items: center; justify-content: center; } -.search-zip-label { font-size: 11px; font-weight: 600; letter-spacing: .02em; } -/* Round 106: find row spans the gutter; header labels share one weight; flush selection marker; dark hero mock depth; shared page lead */ +.search-zip-label { letter-spacing: .02em; font-size: 12px !important; font-weight: 500 !important; } .navbar .nav-support, .navbar .nav-support-inline { font-weight: 400 !important; color: var(--ink-soft) !important; } -.files .file.active > a::before { left: 0 !important; } -.dark-mode .hero-mock { border-color: #3A3631 !important; } -.dark-mode .hero-mock-side, .dark-mode .hero-mock .hm-side, .dark-mode .hero-mock-tree { background: #1E1C19 !important; } +.dark-mode .hero-mock-tree { background: #1E1C19 !important; } .paper-faq-lede { font-size: 18px !important; line-height: 1.55 !important; } -/* Round 107: view tools share the file-action group's 32px box; legible search placeholder and footer line */ -@media (min-width: 768px) { .file-card-actions > .btn-ghost.btn-icon-only, .file-card-actions > .btn-toggle { height: 32px !important; width: 32px !important; min-height: 32px !important; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; } } -.tree-search-input::placeholder { color: #6E685F !important; opacity: 1; } -.dark-mode .tree-search-input::placeholder { color: #9C958A !important; } +@media (min-width: 768px) { .file-card-actions > .btn-ghost.btn-icon-only, .file-card-actions > .btn-toggle { height: 32px !important; width: 32px !important; min-height: 32px !important; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; } +} .tree-search-kbd { color: #57524A !important; } .dark-mode .tree-search-kbd { color: #ADA69B !important; } /* Footer link columns start on the landing page's shared axis (right half) */ -@media (min-width: 1100px) { .paper-footer-inner { grid-template-columns: calc(50% - 10px) repeat(3, minmax(0, 1fr)) !important; column-gap: 20px !important; } .paper-footer-brand { max-width: 420px; } } -.ace_search_counter, .md-find-count, .find-count { font-variant-numeric: tabular-nums; } +.ace_search_counter, .md-find-count { font-variant-numeric: tabular-nums; } .demo-panes .pane-label, .demo-panes .pane-url { font-size: 13px !important; } .dark-mode .files .file.active > a { background: rgba(255,255,255,.1) !important; } -/* Round 108: landing slots sit on the same optical line as viewer slots; toolbar group icons at 16px */ .demo-output .redact-chip { vertical-align: -.16em !important; } span.redact, .hero-mock .redact { vertical-align: -.12em !important; } .tb-seg-icon .ui-icon { width: 16px !important; height: 16px !important; } -.files .file.active > a { background: #E3DDD2 !important; } -.files .file.active > a .redact-slot { background: #D0C7B7 !important; } .file-card-actions > .btn-find.is-on { box-shadow: inset 0 0 0 1px rgba(31,106,100,.55) !important; border-color: transparent !important; } -/* Round 109: output card reads as the result; visible focus on the demo terms; README start anchor */ .demo-panes > :last-child .pane-header { background: #F3EFE8 !important; } -.dark-mode .demo-panes > :last-child .pane-header { background: #1F1C19 !important; } .demo-terms input:focus, .demo-terms textarea:focus { outline: none !important; border-color: var(--accent) !important; box-shadow: 0 0 0 3px rgba(31,106,100,.18) !important; } -.markdown-body > h1:first-child { margin-top: 8px !important; margin-bottom: 24px !important; } +.markdown-body>h1:first-child { margin-top: 8px !important; margin-bottom: 18px !important; } /* Phone README outline lives in the ⋯ menu */ -.tb-menu-label { padding: 8px 14px 4px; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: #57524A; } -.dark-mode .tb-menu-label { color: #ADA69B; } -.tb-menu .tb-menu-toc { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 280px; display: block; text-align: left; } -.tb-menu .tb-menu-toc.lvl-3 { padding-left: 28px !important; color: #57524A; } -.dark-mode .tb-menu .tb-menu-toc.lvl-3 { color: #ADA69B; } +.tb-menu-label { + padding: 8px 14px 4px; + font-size: 11px; + font-weight: 600; + letter-spacing: .06em; + text-transform: uppercase; + color: #57524A; + padding-left: 42px !important; +} +.tb-menu .tb-menu-toc { + overflow: hidden; + text-overflow: ellipsis; + display: block; + text-align: left; + white-space: normal !important; + font-size: 14px !important; + line-height: 1.35; + padding-top: 7px !important; + padding-bottom: 7px !important; + max-width: none !important; +} /* Selection stays lighter than the redaction slot (slots are data, selection is chrome) */ -.files .file.active > a { background: #ECE8E1 !important; } .files .file.active > a .redact-slot { background: var(--slot-bg) !important; } -/* Round 110 */ -.tb-menu { max-height: calc(100dvh - 120px); overflow-y: auto; overscroll-behavior: contain; } .tb-menu .tb-menu-toc.is-active { color: var(--accent) !important; font-weight: 500; } .dark-mode .tb-menu .tb-menu-toc.is-active { color: #7FCFC2 !important; } -.markdown-body > h1:first-child { margin-bottom: 18px !important; } -@media (max-width: 767px) { .markdown-body > h1:first-child { margin-top: 0 !important; margin-bottom: 14px !important; } } +@media (max-width: 767px) { .markdown-body > h1:first-child { margin-top: 0 !important; margin-bottom: 14px !important; } +} .files .file.active > a { background: #E8E5DD !important; } -.tree-toggle::after { border-color: #7A746A !important; } -.dark-mode .tree-toggle::after { border-color: #8F887D !important; } -.dark-mode .hero-mock { box-shadow: inset 0 1px 0 rgba(255,255,255,.06), 0 0 0 1px rgba(255,255,255,.1), 0 18px 40px -18px rgba(0,0,0,.7) !important; background: #24211D !important; } + +/* ----- Landing and FAQ ----- */ +.dark-mode .hero-mock { box-shadow: inset 0 1px 0 rgba(255,255,255,.06), 0 0 0 1px rgba(255,255,255,.1), 0 18px 40px -18px rgba(0,0,0,.7) !important; } .paper-faq-lede { text-wrap: balance; max-width: 640px; } .pane-edit-hint { font-weight: 400; color: #6E685F; } -.dark-mode .pane-edit-hint { color: #9C958A; } .demo-panes > :first-child:hover, .demo-panes > :first-child:focus-within { border-color: #CFC7B9 !important; } -/* Round 111: phone menu hierarchy (actions > outline), wrapping outline items, scrim; shared card radius */ -.tb-menu .tb-menu-toc { white-space: normal !important; font-size: 14px !important; line-height: 1.35; padding-top: 7px !important; padding-bottom: 7px !important; max-width: none !important; } -.tb-menu .tb-menu-toc.lvl-3 { padding-left: 24px !important; } -.tb-menu-note { font-size: 13px !important; color: #6E685F !important; } -.dark-mode .tb-menu-note { color: #9C958A !important; } -@media (max-width: 767px) { .tb-more:has(.tb-menu)::before { content: ""; position: fixed; inset: 0; background: rgba(26,24,21,.22); z-index: 40; } .tb-menu { z-index: 41 !important; } } -.paper-faq-help-card { border-radius: 12px !important; } +.tb-menu-note { font-size: 13px !important; } /* Phone home header mirrors the viewer bar: heart, theme, Sign in (32px), then the menu */ .nav-theme-m { display: none; } @media (max-width: 991px) { .nav-theme-m { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border: 0; background: transparent; color: var(--ink-soft); padding: 0; margin-left: 2px; } .nav-theme-m .ui-icon { width: 18px; height: 18px; } .navbar .nav-signin-m { height: 32px !important; margin-left: 6px !important; } - .nav-heart-m + .nav-theme-m { margin-left: 2px; } } -@media (max-width: 767px) { .viewer-bar .vb-signin { height: 32px !important; } } /* Outline items share the action label column in the phone menu */ .tb-menu .tb-menu-toc.lvl-2 { padding-left: 42px !important; } .tb-menu .tb-menu-toc.lvl-3 { padding-left: 58px !important; } -.tb-menu-label { padding-left: 42px !important; } -@media (max-width: 991px) { .navbar-collapse .nav-item:has(> .nav-icon) { display: none !important; } } +@media (max-width: 991px) { .navbar-collapse .nav-item:has(> .nav-icon) { display: none !important; } +} + +/* ----- File viewer ----- */ .tb-menu > button.tb-menu-toc, .file-card-head .tb-menu > button.tb-menu-toc { font-size: 14px !important; min-height: 36px !important; padding-top: 8px !important; padding-bottom: 8px !important; line-height: 1.35 !important; height: auto !important; } .tb-menu > .tb-menu-label { padding-left: 40px !important; } -.tb-menu > button.tb-menu-toc.lvl-2 { padding-left: 40px !important; } -.tb-menu > button.tb-menu-toc.lvl-3 { padding-left: 56px !important; } /* Phone Contents button: its own outline popover (actions stay in ⋯) */ .tb-toc-m { display: none; position: relative; } @media (max-width: 767px) { .tb-toc-m { display: inline-flex; } .file-card-head .tb-toc-btn { box-shadow: none !important; background: transparent !important; width: 36px; height: 36px; } - .tb-toc-m .tb-menu { right: -44px; min-width: 260px; } - .tb-toc-m:has(.tb-menu)::before { content: ""; position: fixed; inset: 0; background: rgba(26,24,21,.22); z-index: 40; } + .tb-toc-m .tb-menu { min-width: 260px; max-width: calc(100vw - 28px); right: -76px !important; } } /* Dark on-state for view tools uses the lighter dark accent */ .dark-mode .file-card-actions > .btn-toggle.is-on, .dark-mode .file-card-actions > .btn-find.is-on { box-shadow: inset 0 0 0 1px #7FCFC2 !important; color: #7FCFC2 !important; } -.tb-toc-m:has(.tb-menu)::before, .tb-more:has(.tb-menu)::before { pointer-events: none; } .tb-toc-menu > .tb-menu-label { padding-left: 16px !important; } -.tb-toc-menu > button.tb-menu-toc.lvl-2 { padding-left: 16px !important; } -.tb-toc-menu > button.tb-menu-toc.lvl-3 { padding-left: 32px !important; } -@media (max-width: 767px) { .tb-toc-m .tb-menu { right: -40px; max-width: calc(100vw - 28px); } } -/* Round 113: one icon box for folders and files; visible find-option state; one separator system in the toolbar */ .files .tree-icon-folder, .files .tree-icon-file { width: 16px !important; min-width: 16px; display: inline-flex; justify-content: center; } .ace_search .ace_button[checked], .ace_search .ace_button.checked, .ace_search .ace_button[aria-checked="true"] { color: var(--accent) !important; box-shadow: inset 0 0 0 1px rgba(31,106,100,.55) !important; background: transparent !important; } .dark-mode .ace_search .ace_button[checked], .dark-mode .ace_search .ace_button.checked, .dark-mode .ace_search .ace_button[aria-checked="true"] { color: #7FCFC2 !important; box-shadow: inset 0 0 0 1px #7FCFC2 !important; } -.file-card-meta .sep { font-size: 0 !important; display: inline-block; width: 0; margin: 0 6px !important; } /* Phone home header: wordmark left, one right-aligned action group with even 4px gaps */ @media (max-width: 991px) { .navbar .nav-heart-m { margin-left: auto !important; } .navbar .nav-heart-m + .nav-theme-m { margin-left: 4px !important; } .navbar .nav-theme-m + .nav-signin-m { margin-left: 4px !important; } - .navbar .navbar-toggler { margin-left: 4px !important; margin-right: -6px; } + .navbar .navbar-toggler { margin-left: 4px !important; } } -.tb-toc-m:has(.tb-menu)::before, .tb-more:has(.tb-menu)::before { background: rgba(26,24,21,.1) !important; } -.dark-mode .tb-toc-m:has(.tb-menu)::before, .dark-mode .tb-more:has(.tb-menu)::before { background: rgba(0,0,0,.3) !important; } -/* Round 115: no partial scrim (shadowed popover + outside-tap close); stateful Wrap row; narrow phone fade; ZIP label scale; firmer swatch edge */ -.tb-toc-m:has(.tb-menu)::before, .tb-more:has(.tb-menu)::before { content: none !important; } .tb-menu { box-shadow: 0 12px 32px -8px rgba(26,24,21,.28), 0 0 0 1px rgba(26,24,21,.08) !important; } .tb-menu [role="menuitemcheckbox"] { position: relative; padding-right: 40px !important; } .tb-menu [role="menuitemcheckbox"][aria-checked="true"]::after { content: ""; position: absolute; right: 18px; top: 50%; width: 10px; height: 5px; border-left: 2px solid var(--accent); border-bottom: 2px solid var(--accent); transform: translateY(-70%) rotate(-45deg); } -.tb-menu [role="menuitemcheckbox"][aria-checked="true"] .ui-icon { color: var(--accent); } -@media (max-width: 767px) { .file-card.is-code.no-wrap .file-card-body::after { width: 20px !important; } } -.search-zip-label { font-size: 12px !important; font-weight: 500 !important; } -.meta-redact::before, .mobile-sub b::before { box-shadow: inset 0 0 0 1px rgba(40,32,24,.22) !important; } -/* Round 116: phone toolbar keeps Copy next to ⋯ on every file type (Contents appears to its left); mid-strength fade */ -@media (max-width: 767px) { - .file-card-actions > .tb-toc-m, .file-card-head .tb-toc-m { order: 1 !important; } - .file-card-actions > .tb-copy-m, .file-card-head .tb-copy-m { order: 2 !important; } - .file-card-actions > .tb-more, .file-card-head .tb-more { order: 3 !important; } - .file-card.is-code.no-wrap .file-card-body::after { width: 26px !important; background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(250,249,246,.92) 60%, #EAE5DC 100%) !important; box-shadow: inset -1px 0 0 rgba(40,32,24,.2) !important; } +@media (max-width: 767px) { .ace_editor .ace_gutter-cell { padding-left: 6px !important; padding-right: 8px !important; } } -@media (max-width: 767px) { .ace_editor .ace_gutter-cell { padding-left: 6px !important; padding-right: 8px !important; } } .files .redact-slot i { font-size: 11px !important; } .tb-menu-meta { padding-top: 0 !important; padding-left: 42px !important; } -.pane-url .meta-redact { font-family: var(--font-sans, Inter, system-ui, sans-serif) !important; font-size: 12px; } -/* Round 117: both phone popovers share one right edge; smaller phone wordmark leaves room for the action group */ -@media (max-width: 767px) { .tb-toc-m .tb-menu { right: -76px !important; } } -@media (max-width: 991px) { .navbar .navbar-brand { font-size: 18px !important; margin-right: 16px !important; } } -.tb-menu .tb-menu-meta { white-space: nowrap; font-size: 12px !important; padding-left: 44px !important; padding-bottom: 8px !important; } -.tb-menu .tb-menu-meta { padding-left: 38px !important; } +@media (max-width: 991px) { .navbar .navbar-brand { font-size: 18px !important; margin-right: 16px !important; } +} +.tb-menu .tb-menu-meta { white-space: nowrap; font-size: 12px !important; padding-bottom: 8px !important; padding-left: 38px !important; } /* Closing call to action before the footer */ -.paper-cta { margin-top: 72px; margin-bottom: 72px; padding: 40px 0; border-top: 1px solid var(--border-color); display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 20px; align-items: center; } -.paper-cta h2 { font-family: var(--font-serif); font-size: 40px; line-height: 1.05; letter-spacing: -0.01em; margin: 0 0 10px; color: var(--color); font-weight: 400; } -.paper-cta p { margin: 0; color: var(--ink-soft); font-size: 16px; max-width: 440px; } + +/* ----- Landing and FAQ ----- */ +.paper-cta { + padding: 40px 0; + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); + column-gap: 20px; + align-items: center; + border-top: 0 !important; + padding-top: 0 !important; + padding-bottom: 0 !important; + margin-top: 96px !important; + margin-bottom: 88px !important; +} .paper-cta-actions { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; } .paper-cta-actions .btn-hero { display: inline-flex; align-items: center; gap: 10px; } -@media (max-width: 991px) { .paper-cta { grid-template-columns: 1fr; row-gap: 20px; margin-top: 56px; margin-bottom: 40px; } .paper-cta h2 { font-size: 32px; } } -/* Round 119 */ +@media (max-width: 991px) { + .paper-cta { grid-template-columns: 1fr; row-gap: 20px; margin-top: 72px !important; margin-bottom: 64px !important; } +} + +/* ----- File viewer ----- */ .tb-menu-note, .tb-menu .tb-menu-meta { color: #57524A !important; } .dark-mode .tb-menu-note, .dark-mode .tb-menu .tb-menu-meta { color: #ADA69B !important; } -.paper-cta { margin-bottom: 40px !important; padding-bottom: 40px !important; } -/* Round 120: find bar on the 32px grid with a neutral input at rest; Contents open = toggle on-state; outline/FAQ top alignment */ -.ace_search .ace_search_field { height: 32px !important; box-sizing: border-box; border: 1px solid var(--control-border, #CFC7B9) !important; box-shadow: none !important; } +.ace_search .ace_search_field { height: 32px !important; border: 1px solid var(--control-border, #CFC7B9) !important; box-shadow: none !important; } .ace_search .ace_search_field:focus-visible { border-color: var(--accent) !important; box-shadow: 0 0 0 3px rgba(31,106,100,.16) !important; } .ace_search .ace_searchbtn, .ace_search .ace_button, .ace_search .ace_searchbtn_close { height: 32px !important; min-height: 32px !important; box-sizing: border-box; display: inline-flex !important; align-items: center; justify-content: center; } .ace_search .ace_searchbtn_close { width: 32px !important; border-radius: 6px; } .ace_search .ace_searchbtn_close:hover { background: var(--hover-bg-color) !important; } .file-card-head .tb-toc-btn.is-on { background: transparent !important; box-shadow: inset 0 0 0 1px rgba(31,106,100,.55) !important; color: var(--accent) !important; } -@media (min-width: 1100px) { .readme-toc { top: 110px !important; margin-top: -28px !important; } } -@media (min-width: 1100px) { .paper-faq-help-card { margin-top: 2px !important; } } -@media (min-width: 1100px) { .readme-toc { top: 92px !important; } } -/* Round 121: hero product shot gets real presence: wider column, bleeds to the viewport edge, larger type */ @media (min-width: 1100px) { - .paper-hero { grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr) !important; column-gap: 40px !important; overflow: visible; } - .paper-hero-shot { margin-right: calc((100vw - 100%) / -2 + 0px); margin-right: min(-24px, calc((1076px - 100vw) / 2)); } - .paper-hero-shot .paper-frame { border-top-right-radius: 0 !important; border-bottom-right-radius: 0 !important; border-right: 0 !important; } - .hero-mock { font-size: 14px; min-height: 420px; } + .paper-hero-shot { margin-right: 0 !important; } + .paper-hero-shot .paper-frame { + border-right: 1px solid var(--border-color) !important; + border-radius: var(--radius-surface) !important; + } + .hero-mock { font-size: 14px; min-height: 0 !important; } .hero-mock-row { font-size: 13.5px !important; } .hero-mock-doc-bar span { font-size: 13px !important; } - .paper-landing { overflow-x: clip; } } -@media (min-width: 1100px) { .hero-mock { min-height: 0 !important; } } - -/* ── Fix round: redaction slots in code blocks, phone reading layout ── */ -/* A slot in a code block keeps the width of the XXXX-n it replaces and sits on the text line. */ -.markdown-body pre code mark.redact-chip, .dark-mode .markdown-body pre code mark.redact-chip, pre code mark.redact-chip { - display: inline-block !important; box-sizing: border-box !important; overflow: hidden !important; - width: var(--slot-ch, 6ch) !important; min-width: 0 !important; height: 1.2em !important; - margin: 0 !important; padding: 0 .4ch !important; vertical-align: -.24em !important; - font-size: inherit !important; line-height: 1.2em !important; text-align: right !important; -} -.markdown-body pre code mark.redact-chip i, pre code mark.redact-chip i { font-size: .8em !important; line-height: inherit !important; vertical-align: top !important; } /* Below the outline breakpoint the outline is hidden: one column that never exceeds the screen. */ -@media (max-width: 1199px) { .reading-layout { grid-template-columns: minmax(0, 760px) !important; } } -@media (max-width: 767px) { .reading-layout { grid-template-columns: minmax(0, 1fr) !important; padding: 0 16px !important; } } +@media (max-width: 1199px) { .reading-layout { grid-template-columns: minmax(0, 760px) !important; } +} +@media (max-width: 767px) { .reading-layout { grid-template-columns: minmax(0, 1fr) !important; padding: 0 16px !important; } +} .reading-layout > .file-content.markdown-body { min-width: 0 !important; max-width: 100% !important; } /* Home closing band: no second divider under the FAQ, and the footer rule sits closer to it. */ -.paper-cta { border-top: 0 !important; padding-top: 0 !important; padding-bottom: 0 !important; margin-top: 96px !important; margin-bottom: 88px !important; } .paper-cta + .paper-footer { margin-top: 0 !important; } -@media (max-width: 991px) { .paper-cta { margin-top: 72px !important; margin-bottom: 64px !important; } } /* Phone usage popover: open from the left edge of the Usage button, inside the screen. */ -@media (max-width: 767px) { .dashboard-heading-actions .dashboard-quota .quota-panel { left: 0 !important; right: auto !important; width: calc(100vw - 36px) !important; } } - -/* ── Fix round: admin errors filters, overview views, phone menu, ended projects ── */ +@media (max-width: 767px) { .dashboard-heading-actions .dashboard-quota .quota-panel { left: 0 !important; right: auto !important; width: calc(100vw - 36px) !important; } +} /* Errors filters on phones: tabs, then search, then the two selects side by side, then refresh. */ @media (max-width: 767px) { .errors-page .errors-toolbar { display: grid !important; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px !important; align-items: center; } - .errors-page .errors-toolbar .seg-tabs { grid-column: 1 / -1; display: flex !important; width: 100%; } - .errors-page .errors-toolbar .seg-tabs button { flex: 1 1 0; } .errors-page .errors-toolbar .search-wrap { grid-column: 1 / -1; max-width: none !important; min-width: 0 !important; width: 100%; } .errors-page .errors-toolbar .select-wrap { display: flex !important; min-width: 0; } - .errors-page .errors-toolbar .select-wrap select { flex: 1 1 auto; min-width: 0 !important; width: 100% !important; max-width: none !important; } - .errors-page .errors-toolbar .autoref { grid-column: 1; } - .errors-page .errors-toolbar > .btn-icon { grid-column: 2; justify-self: end; } } /* Overview views: a quiet segmented control under the admin tabs. */ .overview-page .ov-views { display: inline-flex; gap: 2px; padding: 3px; margin: 4px 0 16px; border-radius: 9px; background: var(--paper-sunk, rgba(0,0,0,.05)); } -.overview-page .ov-views button { border: 0; background: transparent; padding: 6px 14px; border-radius: 7px; font: 500 13.5px var(--font-sans); color: var(--ink-soft); cursor: pointer; } -.overview-page .ov-views button:hover { color: var(--color); } -.overview-page .ov-views button.active { background: var(--paper-card, #fff); color: var(--color); box-shadow: 0 1px 2px rgba(0,0,0,.08); } -.dark-mode .overview-page .ov-views { background: rgba(255,255,255,.06); } -.dark-mode .overview-page .ov-views button.active { background: rgba(255,255,255,.1); box-shadow: none; } @media (max-width: 767px) { .overview-page .ov-views { display: flex; } - .overview-page .ov-views button { flex: 1 1 0; } - /* Charts and tables need the full width on a phone. */ - .admin-page.overview-page section.ov-chart-row, .admin-page.overview-page section.ov-triple-row { grid-template-columns: minmax(0, 1fr) !important; } } /* Phone and tablet menu: one list, same row height and left edge, neutral fill for the current page, account links shown inline (no second tap), no duplicate Sign in. */ @@ -12488,107 +11816,143 @@ span.redact, .hero-mock .redact { vertical-align: -.12em !important; } .navbar .navbar-collapse .navbar-nav { gap: 2px !important; margin: 0 !important; padding: 0 !important; } .navbar .navbar-collapse .nav-item { margin: 0 !important; padding: 0 !important; width: 100% !important; } .navbar .navbar-collapse .nav-link, .navbar .navbar-collapse .user-menu .dropdown-item { - display: flex !important; align-items: center !important; gap: 12px !important; width: 100% !important; - min-height: 44px; padding: 10px 12px !important; margin: 0 !important; border: 0 !important; border-radius: 8px !important; - font: 500 15px/1.2 var(--font-sans) !important; color: var(--color) !important; background: transparent !important; - box-shadow: none !important; text-decoration: none !important; white-space: normal; + display: flex !important; + align-items: center !important; + gap: 12px !important; + width: 100% !important; + min-height: 44px; + padding: 10px 12px !important; + margin: 0 !important; + border: 0 !important; + border-radius: 8px !important; + font: 500 15px/1.2 var(--font-sans) !important; + color: var(--color) !important; + background: transparent !important; + box-shadow: none !important; + text-decoration: none !important; + white-space: normal; } - .navbar .navbar-collapse .nav-link::before, .navbar .navbar-collapse .nav-link::after { display: none !important; } .navbar .navbar-collapse .nav-link:hover, .navbar .navbar-collapse .user-menu .dropdown-item:hover { background: rgba(0, 0, 0, .04) !important; } .navbar .navbar-collapse .nav-link.active { background: rgba(0, 0, 0, .06) !important; font-weight: 600 !important; } .dark-mode .navbar .navbar-collapse .nav-link:hover, .dark-mode .navbar .navbar-collapse .user-menu .dropdown-item:hover { background: rgba(255, 255, 255, .05) !important; } .dark-mode .navbar .navbar-collapse .nav-link.active { background: rgba(255, 255, 255, .08) !important; } - .navbar .navbar-collapse .nav-link .ui-icon, .navbar .navbar-collapse .user-menu .dropdown-item .ui-icon, .navbar .navbar-collapse .user-menu .dropdown-item .fab { - flex: none; width: 18px !important; height: 18px !important; margin: 0 !important; color: var(--ink-soft) !important; font-size: 16px; text-align: center; + .navbar .navbar-collapse .nav-link .ui-icon, + .navbar .navbar-collapse .user-menu .dropdown-item .ui-icon, + .navbar .navbar-collapse .user-menu .dropdown-item .fab { + flex: none; + width: 18px !important; + height: 18px !important; + margin: 0 !important; + color: var(--ink-soft) !important; + font-size: 16px; + text-align: center; } .navbar .navbar-collapse .nav-signin-item { display: none !important; } /* Account block */ .navbar .navbar-collapse .user-chip-wrap { margin-top: 8px !important; padding-top: 8px !important; border-top: 1px solid var(--border-color) !important; } .navbar .navbar-collapse .user-chip { pointer-events: none; font-weight: 600 !important; } - .navbar .navbar-collapse .user-chip img { width: 24px !important; height: 24px !important; margin: -3px 0 !important; } - .navbar .navbar-collapse .user-menu { display: block !important; position: static !important; transform: none !important; float: none !important; - min-width: 0 !important; margin: 0 !important; padding: 0 !important; border: 0 !important; box-shadow: none !important; background: transparent !important; } + .navbar .navbar-collapse .user-menu { + display: block !important; + position: static !important; + transform: none !important; + float: none; + min-width: 0 !important; + margin: 0 !important; + padding: 0 !important; + border: 0 !important; + box-shadow: none !important; + background: transparent !important; + } .navbar .navbar-collapse .user-menu .dropdown-header, .navbar .navbar-collapse .user-menu .um-extra { display: none !important; } - .navbar .navbar-collapse .user-menu .dropdown-item small { display: none !important; } - .navbar .navbar-collapse .user-menu .dropdown-item span { display: inline !important; } - .navbar .navbar-collapse .user-menu .dropdown-divider { margin: 6px 12px !important; } } /* My work: ended projects (removed, expired) read as ended at a glance. */ -.paper-table .paper-table-row.repo-inactive > *:not(.cell-actions) { opacity: 1 !important; } -.paper-table .paper-table-row.repo-inactive .cell-anon, -.paper-table .paper-table-row.repo-inactive .cell-views, -.paper-table .paper-table-row.repo-inactive .cell-expires, -.paper-table .paper-table-row.repo-inactive .status-sub { opacity: .55; } +/* Ended rows stay at full opacity; muted ink carries the "ended" state and keeps text ≥ 4.5:1. */ + +/* ----- Dashboard ----- */ .paper-table .paper-table-row.repo-inactive .repo-name { color: var(--ink-soft) !important; } +.paper-table .paper-table-row.repo-inactive :is(.anonymous-id, .commit-hash, .cell-conf, .cell-views, .cell-expires, .status-sub) { color: var(--ink-muted) !important; } .status-line.status-ended { display: inline-flex !important; align-items: center; gap: 5px; padding: 2px 8px 2px 6px; border-radius: 999px; background: rgba(0, 0, 0, .06); color: var(--ink-soft); } .status-line.status-ended .status-word { font-size: 12.5px !important; font-weight: 600 !important; color: inherit !important; } .status-line.status-ended .status-ended-icon { width: 13px; height: 13px; flex: none; } .status-line.status-ended-expired { background: rgba(245, 158, 11, .1); color: #b45309; } .dark-mode .status-line.status-ended { background: rgba(255, 255, 255, .08); color: var(--ink-soft); } .dark-mode .status-line.status-ended-expired { background: rgba(245, 158, 11, .16); color: #fbbf24; } -.ended-link { font-size: 12.5px; color: var(--ink-muted, var(--ink-soft)); font-style: italic; white-space: nowrap; margin-right: 4px; } -.ended-action { border: 1px solid var(--control-border, var(--border-color)); background: transparent; color: var(--color); border-radius: 7px; padding: 4px 10px; font: 500 12.5px var(--font-sans); cursor: pointer; white-space: nowrap; } -.ended-action:hover { background: rgba(0, 0, 0, .04); } -.dark-mode .ended-action:hover { background: rgba(255, 255, 255, .06); } -.ended-row { display: inline-flex; align-items: center; gap: 8px; margin-right: 6px; } -@media (max-width: 767px) { - .paper-table-dashboard .cell-actions > .ended-row { grid-area: link; display: flex; justify-content: space-between; width: 100%; margin: 0; padding: 6px 6px 6px 12px; border-radius: 8px; border: 1px dashed var(--border-color); } - .paper-table-dashboard .paper-table-row.repo-inactive .cell-expires { display: none !important; } -} -/* ── Fix: date fields on iOS Safari ── +/* ── date fields on iOS Safari ── WebKit draws as a native button with its own height, centred text and an intrinsic min-width, so it ignores width:100% and overflows its column. Make it a plain field. */ input.form-control[type="date"] { - -webkit-appearance: none; appearance: none; - display: block; box-sizing: border-box; width: 100%; min-width: 0; max-width: 100%; - height: 40px; min-height: 40px; line-height: 1.25; text-align: left; + -webkit-appearance: none; + appearance: none; + display: block; + box-sizing: border-box; + width: 100%; + min-width: 0; + max-width: 100%; + height: 40px; + min-height: 40px; + line-height: 1.25; + text-align: left; } -input.form-control[type="date"]::-webkit-date-and-time-value { text-align: left; margin: 0; min-height: 1.25em; } -input.form-control[type="date"]::-webkit-datetime-edit { padding: 0; } -.hosting-date > input.form-control[type="date"] { justify-self: stretch; } /* My work: the copy-link control is an icon button like Open and Edit (the URL is in its tooltip). */ -.paper-table-dashboard .cell-actions > .copy-url { - display: inline-flex !important; align-items: center !important; justify-content: center !important; - width: 36px !important; height: 36px !important; min-width: 0 !important; max-width: none !important; - padding: 0 !important; margin: 0 !important; border: 0 !important; border-radius: 8px !important; - background: transparent !important; color: var(--ink-soft) !important; box-shadow: none !important; +.paper-table-dashboard .cell-actions>.copy-url { + width: 36px !important; + padding: 0 !important; + margin: 0 !important; + border: 0 !important; + background: transparent !important; + color: var(--ink-soft) !important; } .paper-table-dashboard .cell-actions > .copy-url:hover { background: rgba(0, 0, 0, .05) !important; color: var(--color) !important; } .dark-mode .paper-table-dashboard .cell-actions > .copy-url:hover { background: rgba(255, 255, 255, .07) !important; } -.paper-table-dashboard .cell-actions > .copy-url .project-type-svg { width: 18px; height: 18px; margin: 0 !important; } +.paper-table-dashboard .cell-actions>.copy-url .project-type-svg { margin: 0 !important; width: 16px !important; height: 16px !important; } @media (max-width: 767px) { - .paper-table.paper-table-dashboard .paper-table-row { grid-template-columns: minmax(0, 1fr) auto auto auto !important; grid-template-areas: "name copy edit more" "meta meta meta meta" !important; } - .paper-table.paper-table-dashboard .paper-table-row.repo-inactive { grid-template-areas: "name copy edit more" "meta meta meta meta" "link link link link" !important; } - .paper-table-dashboard .cell-actions > .copy-url { grid-area: copy; align-self: start; width: 40px !important; height: 40px !important; margin-top: -4px !important; justify-self: auto !important; } + .paper-table-dashboard .cell-actions > .copy-url { width: 40px !important; height: 40px !important; } } -.paper-table-dashboard .cell-actions > .copy-url .project-type-svg { width: 16px !important; height: 16px !important; } @media (max-width: 767px) { - .paper-table-dashboard .anon-title { min-width: 0; } - .paper-table.paper-table-dashboard .anon-title .repo-name { display: block !important; min-width: 0 !important; overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; word-break: normal !important; overflow-wrap: normal !important; } + .paper-table-dashboard .anon-title { display: block !important; min-width: 0; } } /* Code viewer selection: Ace draws a multi-line selection as several boxes. An outline (box-shadow) on each box overlaps its neighbours and darkens the joins, so multi-line selections are a plain fill; a single-line selection (e.g. the current find match, ace_br15) keeps an inset outline. */ + +/* ----- File viewer ----- */ .ace_editor .ace_marker-layer .ace_selection, .dark-mode .ace_editor .ace_marker-layer .ace_selection { box-shadow: none !important; border-radius: 0 !important; } .ace_editor .ace_marker-layer .ace_selection.ace_br15 { box-shadow: inset 0 0 0 1px rgba(170, 115, 15, .75) !important; border-radius: 3px !important; } -.dark-mode .ace_editor .ace_marker-layer .ace_selection.ace_br15 { box-shadow: inset 0 0 0 1px rgba(240, 200, 90, .7) !important; } .ace_editor.ace-chrome .ace_marker-layer .ace_selection, .ace_editor.ace-nord-dark .ace_marker-layer .ace_selection { box-shadow: none !important; border-radius: 0 !important; } -.ace_editor.ace-chrome .ace_marker-layer .ace_selection.ace_br15 { box-shadow: inset 0 0 0 1px rgba(170, 115, 15, .75) !important; border-radius: 3px !important; } -.ace_editor.ace-nord-dark .ace_marker-layer .ace_selection.ace_br15 { box-shadow: inset 0 0 0 1px rgba(240, 200, 90, .7) !important; border-radius: 3px !important; } /* Go to line popover (replaces Ace's unthemed prompt). */ .file-card .file-card-head { position: relative; } -.file-card:not(.is-code) .file-card-head { position: sticky; } -.goto-pop { position: absolute; z-index: 30; top: calc(100% + 6px); right: 12px; width: 260px; max-width: calc(100vw - 24px); margin: 0; - padding: 12px; display: grid; gap: 6px; background: var(--paper-card, #fff); border: 1px solid var(--border-color); border-radius: 10px; - box-shadow: 0 12px 32px rgba(26, 24, 21, .16); } -.dark-mode .goto-pop { box-shadow: 0 12px 32px rgba(0, 0, 0, .5); } +.goto-pop { + position: absolute; + z-index: 30; + top: calc(100% + 6px); + right: 12px; + width: 260px; + max-width: calc(100vw - 24px); + margin: 0; + padding: 12px; + display: grid; + gap: 6px; + background: var(--paper-card, #fff); + border: 1px solid var(--border-color); + border-radius: 10px; + box-shadow: 0 12px 32px rgba(26, 24, 21, .16); +} .goto-label { margin: 0; font: 600 12.5px var(--font-sans); color: var(--color); } -.goto-input { width: 100%; height: 36px; padding: 0 10px; border: 1px solid var(--control-border, var(--border-color)); border-radius: 7px; - background: var(--bg-color, transparent); color: var(--color); font: 500 14px var(--font-mono, ui-monospace, monospace); outline: none; } +.goto-input { + width: 100%; + height: 36px; + padding: 0 10px; + border: 1px solid var(--control-border, var(--border-color)); + border-radius: 7px; + background: var(--bg-color, transparent); + color: var(--color); + font: 500 14px var(--font-mono, ui-monospace, monospace); + outline: none; +} .goto-input:focus { border-color: var(--accent, #1F6B66); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #1F6B66) 22%, transparent); } .goto-input[aria-invalid="true"] { border-color: #b91c1c; } .goto-hint { font-size: 12px; color: var(--ink-soft); } @@ -12597,51 +11961,290 @@ input.form-control[type="date"]::-webkit-datetime-edit { padding: 0; } .dark-mode .goto-hint.is-error { color: #f87171; } /* Submit bar: the checkout note gets its own line under the button instead of a one-word column. */ -.anonymize-form-col .anonymize-submit-bar:has(> .checkout-return-note) { flex-wrap: wrap !important; row-gap: 6px !important; } +.anonymize-form-col .anonymize-submit-bar:has(> .checkout-return-note) { flex-wrap: wrap; row-gap: 6px !important; } .anonymize-submit-bar .checkout-return-note { order: 3; flex: 1 0 100%; margin: 0 !important; font-size: 12px; text-align: center; white-space: normal; } /* Tables: let row menus escape the rounded container (overflow:hidden clipped them on short lists); the head and last row carry the corner radius instead. */ -.paper-table { overflow: visible !important; } .paper-table > .paper-table-head { border-top-left-radius: inherit; border-top-right-radius: inherit; } .paper-table > :last-child { border-bottom-left-radius: inherit; border-bottom-right-radius: inherit; } + +/* Container: the navbar's inner edges line up with every page's content edges. */ +.app-header .navbar.navbar-expand-lg, +.app-header.is-contained .navbar.navbar-expand-lg { + padding-left: max(var(--page-gutter), calc((100% - var(--page-max)) / 2)) !important; + padding-right: max(var(--page-gutter), calc((100% - var(--page-max)) / 2)) !important; +} +.paper-page.container, .dashboard-page.container, .paper-page, .repository-task, .paper-hero, .paper-faq { + width: 100%; + max-width: calc(var(--page-max) + 2 * var(--page-gutter)) !important; + padding-left: var(--page-gutter) !important; + padding-right: var(--page-gutter) !important; + margin-left: auto; + margin-right: auto; +} +.paper-wrap { width: min(var(--page-max), calc(100% - 2 * var(--page-gutter))) !important; } +.paper-footer { + padding-left: max(var(--page-gutter), calc((100% - var(--page-max)) / 2)) !important; + padding-right: max(var(--page-gutter), calc((100% - var(--page-max)) / 2)) !important; +} +/* Home hero: the product shot stays inside the container instead of bleeding off the right edge. */ + +/* Type: app pages use Inter 600 titles; marketing and auth pages use the serif display. */ +.paper-page-title, .repository-task > h1, .user-settings .settings-title h1 { + font: 600 28px/1.2 var(--font-sans) !important; + letter-spacing: -0.02em !important; +} +@media (max-width: 767px) { + .paper-page-title, .repository-task > h1, .user-settings .settings-title h1 { font-size: 24px !important; } +} +.auth-intro .paper-page-title, .paper-empty-title { + font-family: var(--font-serif) !important; + font-weight: 400 !important; + font-size: clamp(44px, 5vw, 64px) !important; + line-height: 1.04 !important; + letter-spacing: -0.02em !important; + text-wrap: balance; +} +.auth-intro .paper-page-title em, .paper-empty-title em { font-style: italic !important; color: var(--accent) !important; } +@media (max-width: 767px) { + .auth-intro .paper-page-title, .paper-empty-title { font-size: 42px !important; } +} +.repository-task .task-trail { margin: 24px 0 28px; padding: 0 0 14px; } +.repository-task .btn { + display: inline-flex; + align-items: center; + gap: 8px; + height: var(--control-h); + min-height: var(--control-h); + padding: 0 16px; + border-radius: var(--radius-button); + font-size: 14px; + font-weight: 500; +} +.repository-task .btn .ui-icon { width: 16px; height: 16px; margin: 0 !important; } +.repository-task .share-link-row { + align-items: stretch !important; + gap: 12px !important; + flex-direction: column !important; +} +@media (max-width: 767px) { + .repository-task .share-link-row .btn { justify-content: center; } +} + +/* Anonymize landing: a centered column that shows where step 1 sits in the flow. */ + +/* ----- Anonymize workspace ----- */ +.anonymize-landing .task-trail { margin: 20px 0 28px; padding: 0 0 14px; } +.anonymize-landing .source-url-label-row { display: flex; align-items: baseline !important; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; } +.anonymize-landing .source-url-label-row .paper-field-label { margin: 0 !important; } +.anonymize-landing .source-url-label-row .repo-access { margin: 0 !important; align-self: baseline; } + +/* My work: header controls share one height and radius; the lede shows at every width. */ + +/* ----- Dashboard ----- */ +.dashboard-heading .paper-page-lede { display: block !important; margin: 4px 0 0; color: var(--ink-muted); } +.dashboard-page .dashboard-quota>summary, +.dashboard-heading-actions .btn-ink, +.dashboard-page #search, +.dashboard-filter-controls .btn-group, +.dashboard-page #dropdownSort, +.dashboard-page #dropdownStatus, +.dashboard-filters-toggle { + height: var(--control-h) !important; + min-height: var(--control-h) !important; + border-radius: var(--radius-button) !important; + box-sizing: border-box; +} +.dashboard-filter-controls .btn-group { align-items: center; } +.dashboard-filter-controls .btn-group .btn { height: 32px !important; min-height: 32px !important; border-radius: 6px !important; } + +/* My work rows: fixed action slots, the error marker doesn't shift content, sans tabular views. */ +@media (min-width: 768px) { + .paper-table-dashboard .cell-actions>.copy-url { grid-column: 1; margin: 0 !important; grid-row: 1; } +} +.paper-table .paper-table-row.repo-error { border-left: 0 !important; box-shadow: inset 3px 0 0 var(--status-error) !important; } +.paper-table-dashboard .cell-views, .paper-table-dashboard .cell-views * { font-family: var(--font-sans) !important; font-variant-numeric: tabular-nums; } +.type-badge.type-coauthor, .dark-mode .type-badge.type-coauthor { background: var(--accent-soft) !important; color: var(--accent) !important; border-color: transparent !important; } +@media (max-width: 767px) { + .paper-table.paper-table-dashboard .paper-table-row, + .paper-table.paper-table-dashboard .paper-table-row.repo-inactive { + grid-template-columns: minmax(0, 1fr) 44px 44px !important; + grid-template-areas: "name copy more" "meta meta meta"; + column-gap: 0 !important; + row-gap: 6px !important; + } + .paper-table-dashboard .cell-actions > .copy-url { margin: 0 !important; } + .paper-table-dashboard .cell-actions > .row-edit:not(.row-open) { grid-area: edit !important; margin: 0 !important; } + .paper-table-dashboard .cell-actions > .dropdown { margin: 0 !important; } + .paper-table-dashboard .cell-actions > :is(.copy-url, .row-edit, .dropdown) { align-self: start; } + .paper-table-dashboard .type-badge.type-coauthor { display: inline-block; white-space: nowrap; margin-left: 6px; vertical-align: 1px; } + .dashboard-page .paper-table-dashboard .dashboard-row-meta { display: flex !important; min-width: 0 !important; align-self: center; } + .paper-table-dashboard .cell-actions > :is(.copy-url, .row-edit, .dropdown), .paper-table-dashboard .cell-actions > .dropdown > .btn-icon-dots { width: 36px !important; height: 36px !important; min-height: 36px !important; } + .paper-table-dashboard .dashboard-row-meta > .cell-status { display: contents !important; } + .paper-table-dashboard .dashboard-row-meta>.cell-views { order: 2; margin-left: 16px !important; } + .paper-table-dashboard .dashboard-row-meta .status-sub:not(.status-sub-date) { order: 4; flex: 1 0 100%; margin: 0 !important; white-space: normal !important; } + .paper-table-dashboard .dashboard-row-meta .project-attention-action { order: 5; margin: 0 !important; } + .paper-table-dashboard .dashboard-row-meta .status-sub-date { display: none !important; } + .paper-table-dashboard .dashboard-row-meta > * { min-width: 0; margin: 0 !important; } +} + +/* Home, phone: the feature mock reflows instead of clipping. */ +@media (max-width: 639px) { + .fm-form { grid-template-columns: minmax(0, 1fr) !important; padding: 18px 16px !important; } + .fm-form > *, .fm-row > * { min-width: 0; } + .fm-input { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .fm-input-sm { width: auto !important; max-width: 180px; } + .fm-actions { flex-direction: column; align-items: stretch !important; gap: 10px !important; } + .fm-btn { display: block; width: 100%; text-align: center; } +} +/* Home, phone: equal tabs (number above a short label), no chevrons, tighter rhythm. */ + +/* ----- Landing and FAQ ----- */ +@media (max-width: 767px) { + .paper-feature-tab { min-width: 0; min-height: 52px; padding: 8px 4px 10px !important; } + .paper-feature-tab .paper-eyebrow { display: flex !important; flex-direction: column; align-items: center; gap: 2px; margin: 0 !important; } + .paper-feature-tab .pf-sep { display: none; } + .paper-feature-tab .pf-num { font-size: 11px; color: var(--ink-muted); } + .paper-feature-tab .pf-name { font: 600 13px/1.3 var(--font-sans); letter-spacing: 0; text-transform: none; color: var(--ink-soft); } + .paper-feature.is-on .paper-feature-tab .pf-name { color: var(--color); } + .paper-feature-panel { margin-top: 24px !important; } + .paper-feature.is-on .paper-feature-more { margin-top: 24px !important; } +} +/* Home demo: the highlighted copy sets the pane height, so the last line keeps its padding. */ +.demo-input-wrap .demo-backdrop { padding-bottom: 16px !important; } +.demo-input-wrap .demo-input { height: 100% !important; } +@media (max-width: 639px) { + .demo-panes .pane-header { height: auto !important; min-height: 0 !important; flex-direction: column; align-items: flex-start !important; gap: 2px !important; padding: 10px 14px !important; } + .demo-panes .pane-header .pane-url { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +} +/* Home stats: with no data yet, the band collapses to the venue line. */ +.paper-stats.is-empty .paper-stats-meta { justify-content: flex-start; margin: 0; padding: 0 !important; } +@media (max-width: 767px) { + .paper-stats-meta { flex-direction: column; align-items: flex-start !important; gap: 4px !important; } + .paper-stats-daily { display: none; } +} + +/* Explorer: compact placeholder for small failed images, ellipsized tree names, artifact id. */ + +/* ----- File viewer ----- */ +.markdown-body .img-unavailable:not(.is-large), .img-unavailable:not(.is-large) { + display: inline-block !important; + width: auto !important; + max-width: 100%; + min-height: 0 !important; + height: 22px; + padding: 0 8px; + border: 1px dashed var(--border-color) !important; + border-radius: 6px; + font: 500 12px/20px var(--font-sans) !important; + color: var(--ink-muted); + background: transparent; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + vertical-align: middle; +} +.img-unavailable:not(.is-large)::before { display: inline-block; width: 11px !important; height: 9px !important; margin-right: 6px; vertical-align: -1px; } +.files .tree-name { display: block !important; flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.vb-artifact { display: inline-flex; align-items: baseline; gap: 8px; min-width: 0; margin-left: 4px; padding-left: 12px; border-left: 1px solid var(--border-color); font-size: 13px; color: var(--ink-muted); white-space: nowrap; } +.vb-artifact-id { font: 500 13px var(--font-mono); color: var(--color); overflow: hidden; text-overflow: ellipsis; max-width: 260px; } + +/* Sign-in: no header CTA on the sign-in page itself; columns centered vertically. */ +.app-header.is-signin .nav-signin-item, .app-header.is-signin .nav-signin-m { display: none !important; } +@media (min-width: 992px) { + .auth-page .auth-layout { align-items: center !important; min-height: min(460px, calc(100vh - 200px)); } +} + +/* Settings: native selects get the same caret as the dashboard filters. */ +select.form-control:not([multiple]):not([size]) { + -webkit-appearance: none; + appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M0 0h10L5 6z' fill='%234A4641'/%3E%3C/svg%3E") !important; + background-repeat: no-repeat !important; + background-position: right 14px center !important; + background-size: 9px 5px !important; + padding-right: 34px !important; +} +.dark-mode select.form-control:not([multiple]):not([size]) { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M0 0h10L5 6z' fill='%23D6D1C5'/%3E%3C/svg%3E") !important; +} + +/* Admin: tab underline spans the label only; service names are sans like other card titles. */ +.admin-page .admin-nav a { padding-left: 0 !important; padding-right: 0 !important; } +.ov-svc-name { font: 600 14px var(--font-sans) !important; letter-spacing: 0 !important; } +/* The last header control ends exactly on the container edge. */ +/* Task pages: the primary action is the teal accent used across the app, never ink black. */ +.repository-task .btn-primary { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; box-shadow: none !important; } +.dark-mode .repository-task .btn-primary { background: #1E6B63 !important; border-color: #1E6B63 !important; color: #fff !important; } +@media (max-width: 767px) { + .dashboard-page .dashboard-row-meta .status-line .status-word { font-size: 13px !important; } + .dashboard-page .dashboard-row-meta .project-attention-action { flex: 0 0 auto !important; align-items: center; padding: 0 !important; line-height: 1.5; } +} +@media (max-width: 767px) { + .paper-feature-tab { height: auto !important; } +} +@media (max-width: 639px) { + /* Only the source pane stacks its label and URL; the reviewer pane's count stays on the label line. */ + .demo-panes .pane-after .pane-header { flex-direction: row; align-items: center !important; height: 40px !important; padding: 0 14px !important; } +} +/* Explorer, phone: the file-tree toggle says "Files" and is a 44px target; Sign in is secondary for reviewers. */ +.card-files-label { font: 500 13px var(--font-sans); } +@media (max-width: 991px) { + .file-card-head .card-files-btn, .file-card-head .file-card-path .card-files-btn { + width: auto !important; + height: 44px !important; + min-height: 44px !important; + padding: 0 12px 0 10px !important; + gap: 6px; + border: 1px solid var(--border-color) !important; + border-radius: var(--radius-button) !important; + color: var(--color) !important; + align-self: center !important; + margin-right: 8px; + } + .file-card-head .card-files-btn .ui-icon { width: 16px !important; height: 16px !important; } +} +@media (max-width: 767px) { + .viewer-bar .vb-signin { white-space: nowrap; padding: 0 12px !important; display: inline-flex !important; align-items: center; } + .viewer-bar .vb-signin i { + display: block !important; + font-size: 16px !important; + width: 16px; + text-align: center; + } + .vb-artifact { margin-left: 0; padding-left: 10px; } + .vb-artifact-id { max-width: 110px; font-size: 12px; } +} +@media (max-width: 991px) { .file-card-head .card-files-btn .card-files-label { display: inline !important; } +} +@media (max-width: 480px) { .file-card-head .meta-redact-word { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; } +} + /* Hosting & billing tab */ -.user-settings #settings-billing > .settings-scope { margin-bottom: 14px; } + +/* ----- Settings and billing ----- */ .user-settings .billing-summary { background: var(--paper-card); border: 1px solid var(--border-color); border-radius: 10px; padding: 24px; } .user-settings .billing-summary-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 20px; } .user-settings .billing-eyebrow { font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-muted); margin: 0 0 6px; } .user-settings .billing-plan-name { font-size: 24px; font-weight: 600; line-height: 1.2; letter-spacing: -.01em; margin: 0; } .user-settings .billing-plan-meta { font-size: 13px; color: var(--ink-muted); margin: 6px 0 0; } .user-settings .billing-summary .quota-track { height: 6px; border-radius: 3px; background: var(--border-color); } -.user-settings .billing-summary .quota-track .quota-fill { border-radius: 3px; } .user-settings .billing-summary .quota-unlimited-tag { display: none; } .user-settings .billing-summary .quota-usage { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; } .user-settings .billing-summary .quota-item:has(.quota-unlimited-tag) { display: none; } -.user-settings .billing-summary .settings-notice { margin: 18px 0 0; } .user-settings .billing-footnote { font-size: 12px; line-height: 1.6; color: var(--ink-muted); margin: 16px 0 0; } -.user-settings .billing-section { margin-top: 44px; } .user-settings .billing-section-head { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; } .user-settings .billing-section-title { font-size: 18px; font-weight: 600; letter-spacing: -.005em; margin: 0 0 14px; } -.user-settings .billing-section-title:focus { outline: none; } .user-settings .billing-section-head .settings-text-button { font-size: 12px; padding: 0; min-height: 0; } .user-settings .billing-offers { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; padding-top: 10px; } .user-settings .billing-offer { position: relative; display: flex; flex-direction: column; background: var(--paper-card); border: 1px solid var(--border-color); border-radius: 10px; padding: 24px 22px 22px; min-width: 0; } .user-settings .billing-offer.is-recommended { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); } .user-settings .billing-offer-pill { position: absolute; top: -10px; left: 20px; font-size: 11px; font-weight: 600; line-height: 20px; padding: 0 9px; border-radius: 999px; background: var(--accent); color: #fff; } -body.dark-mode .user-settings .billing-offer-pill { color: #1A1815; } -.user-settings .billing-offer h3 { font-size: 16px; font-weight: 600; margin: 0; } .user-settings .billing-offer-price { margin: 8px 0 16px; color: var(--ink-muted); font-size: 13px; line-height: 40px; height: 40px; } .user-settings .billing-offer-price strong { font-size: 32px; font-weight: 600; letter-spacing: -.02em; color: var(--color); vertical-align: -2px; } .user-settings .billing-offer-list { list-style: none; margin: 0 0 20px; padding: 0; font-size: 13px; line-height: 1.5; } -.user-settings .billing-offer-list li { position: relative; padding-left: 22px; margin: 0 0 6px; } -.user-settings .billing-offer-list li::before { content: ""; position: absolute; left: 3px; top: 6px; width: 10px; height: 5px; border-left: 1.5px solid var(--ink-muted); border-bottom: 1.5px solid var(--ink-muted); transform: rotate(-45deg); } .user-settings .billing-offer > .btn { margin-top: auto; width: 100%; } -.user-settings .billing-addon-list { display: flex; flex-direction: column; gap: 2px; margin: 0 -8px 20px; } -.user-settings .billing-addon { display: grid; grid-template-columns: 14px minmax(0, 1fr) auto; gap: 10px; align-items: start; margin: 0; padding: 7px 8px; border-radius: 6px; cursor: pointer; font-weight: 400; } -.user-settings .billing-addon:hover, .user-settings .billing-addon.is-on { background: var(--paper-bg-alt); } -.user-settings .billing-addon input { margin: 3px 0 0; accent-color: var(--accent); } -.user-settings .billing-addon strong { display: block; font-size: 13px; font-weight: 600; line-height: 1.35; } -.user-settings .billing-addon small { display: block; font-size: 12px; color: var(--ink-muted); } .user-settings .billing-addon-price { font-size: 13px; font-weight: 600; white-space: nowrap; line-height: 1.35; } .billing-toggle { display: inline-flex; flex-shrink: 0; padding: 2px; border: 1px solid var(--border-color); border-radius: 8px; background: var(--paper-bg-alt); } .billing-toggle button { border: 0; background: none; border-radius: 6px; padding: 3px 10px; font-size: 12px; line-height: 18px; color: var(--ink-muted); cursor: pointer; } @@ -12649,99 +12252,68 @@ body.dark-mode .user-settings .billing-offer-pill { color: #1A1815; } .billing-toggle button:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; } .billing-toggle-save { margin-left: 5px; font-weight: 600; color: var(--accent); } .user-settings .billing-offer-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; height: 26px; margin-bottom: 4px; } -.user-settings .billing-offer-head .billing-eyebrow { margin: 0; } .user-settings .btn-ink:disabled, .user-settings .btn-ink.disabled { background: var(--paper-bg-alt); border-color: var(--border-color); color: var(--ink-muted); opacity: 1; cursor: not-allowed; } .user-settings .billing-buy { margin-top: 10px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px; background: var(--paper-card); border: 1px solid var(--border-color); border-radius: 10px; padding: 24px; } -.user-settings .billing-buy-info .billing-offer-price { margin: 4px 0 8px; } .user-settings .billing-buy-form { display: flex; flex-direction: column; gap: 10px; padding-left: 32px; border-left: 1px solid var(--border-color); align-self: center; } -.user-settings .billing-buy-form .paper-field-label { margin: 0; } .user-settings .billing-buy-form .btn { width: 100%; } -.user-settings .billing-buy-form .billing-footnote { margin: 0; } -.user-settings .billing-buy:focus { outline: none; } .user-settings .billing-back { font-size: 13px; padding: 4px 10px; min-height: 0; margin-bottom: 16px; border-color: transparent; background: transparent; margin-left: -10px; } .user-settings .billing-back:hover { background: var(--paper-bg-alt); } -.user-settings .billing-buy h3 { font-size: 18px; font-weight: 600; margin: 0; } -.user-settings .billing-buy h3 span { font-size: 14px; font-weight: 400; color: var(--ink-muted); margin-left: 8px; } .user-settings .billing-buy-desc { font-size: 13px; line-height: 1.55; color: var(--ink-muted); margin: 0; } -.user-settings .billing-buy-row { display: flex; gap: 12px; align-items: center; } -.user-settings .billing-buy-row select { flex: 1; min-width: 0; } -.user-settings .billing-buy-row .btn { flex-shrink: 0; } .user-settings .billing-compare { margin-top: 16px; font-size: 13px; } .user-settings .billing-compare summary { cursor: pointer; color: var(--accent); width: max-content; list-style: none; display: flex; align-items: center; gap: 6px; } -.user-settings .billing-compare summary::-webkit-details-marker { display: none; } -.user-settings .billing-compare summary::before { content: ""; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(-45deg); transition: transform .15s; margin-right: 2px; } -.user-settings .billing-compare[open] summary::before { transform: rotate(45deg); } .user-settings .billing-compare-card { margin-top: 12px; padding: 6px 20px 8px; background: var(--paper-card); border: 1px solid var(--border-color); border-radius: 10px; } .user-settings .billing-compare .settings-comparison { width: 100%; margin: 0; font-size: 13px; border-collapse: separate; border-spacing: 0; } -.user-settings .billing-compare .settings-comparison td.is-recommended { border-bottom-color: transparent; } -.user-settings .billing-compare .settings-comparison th, .user-settings .billing-compare .settings-comparison td { padding: 10px 14px; border-bottom: 1px solid var(--border-color); } -.user-settings .billing-compare .settings-comparison tr > :first-child { padding-left: 0; } -.user-settings .billing-compare .settings-comparison thead th { font-size: 14px; font-weight: 600; vertical-align: bottom; } -.user-settings .billing-compare .settings-comparison thead th small { display: block; font-size: 12px; font-weight: 400; color: var(--ink-muted); margin-top: 2px; } -.user-settings .billing-compare .settings-comparison thead th.is-recommended { border-radius: 8px 8px 0 0; } -.user-settings .billing-compare .settings-comparison tbody tr:last-child td.is-recommended { border-radius: 0 0 8px 8px; } -.user-settings .billing-compare .settings-comparison tbody tr:last-child > * { border-bottom: 0; } .user-settings .billing-compare .settings-comparison th[scope=row] { color: var(--ink-muted); font-weight: 400; } .user-settings .billing-compare .settings-comparison .is-recommended { background: var(--accent-soft); } .user-settings .billing-empty { font-size: 13px; color: var(--ink-muted); margin: 0; } .user-settings .billing-history { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border-color); } .user-settings .billing-history-head, .user-settings .billing-history-row { display: grid; grid-template-columns: minmax(0, 1fr) 160px 120px 88px; gap: 16px; } .user-settings .billing-history-head { padding: 0 0 8px; font-size: 11px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--ink-muted); } -.user-settings .billing-history-head span:nth-child(n+3) { text-align: right; } .user-settings .billing-history-row { align-items: baseline; padding: 14px 0; border-bottom: 1px solid var(--border-color); font-size: 13px; } .user-settings .billing-history-main strong { display: block; font-weight: 600; overflow-wrap: anywhere; } -.user-settings .billing-history-main strong a { font-weight: 500; } .user-settings .billing-history-main > span { display: block; font-size: 12px; color: var(--ink-muted); margin-top: 3px; } .user-settings .billing-history-term { color: var(--ink-muted); } -.user-settings .billing-history-term:empty::before { content: "—"; } -.user-settings .billing-history-paid { text-align: right; } -.user-settings .billing-history-paid small { display: block; color: var(--ink-muted); font-size: 12px; margin-top: 2px; } -.user-settings .billing-history-status { text-align: right; } .user-settings .billing-history-row.is-ended .billing-history-main strong, .user-settings .billing-history-row.is-ended .billing-history-paid { color: var(--ink-muted); } .user-settings .billing-manage { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-top: 20px; padding: 18px 20px; background: var(--paper-card); border: 1px solid var(--border-color); border-radius: 10px; font-size: 13px; } .user-settings .billing-manage strong { display: block; font-weight: 600; } -.user-settings .billing-manage p { margin: 3px 0 0; color: var(--ink-muted); font-size: 12px; line-height: 1.55; } .user-settings .billing-manage .btn { flex-shrink: 0; } .user-settings .billing-conference { margin: 28px 0 0; font-size: 13px; color: var(--ink-muted); } -.user-settings .billing-addons { margin-top: 40px; } .user-settings .billing-subtitle { font-size: 13px; font-weight: 600; margin: 0; } .user-settings .billing-addons-head { display: grid; grid-template-columns: minmax(0, 1fr) 90px 48px; gap: 16px; align-items: baseline; margin-bottom: 8px; } -.user-settings .billing-addons-head span { text-align: right; } -.user-settings .billing-addons-head span { font-size: 11px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--ink-muted); } +.user-settings .billing-addons-head span { + text-align: right; + font-size: 11px; + font-weight: 600; + letter-spacing: .05em; + text-transform: uppercase; + color: var(--ink-muted); +} .user-settings .billing-addon-rows { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border-color); } -.user-settings .billing-addon-rows li { display: grid; grid-template-columns: minmax(0, 1fr) 90px 48px; gap: 16px; align-items: center; padding: 11px 0; border-bottom: 1px solid var(--border-color); font-size: 13px; } .user-settings .billing-addon-rows strong { font-weight: 600; margin-right: 8px; } -.user-settings .billing-addon-rows div span { color: var(--ink-muted); } .user-settings .billing-addon-rows .billing-addon-price { text-align: right; font-weight: 500; } .user-settings .billing-addon-rows .settings-text-button { justify-self: end; padding: 0; min-height: 0; font-size: 13px; font-weight: 600; } body.dark-mode .settings-status.is-active { background: rgba(124, 199, 190, .16); color: #d2f1ed; box-shadow: inset 0 0 0 1px rgba(124, 199, 190, .45); } -body.dark-mode .user-settings .billing-offer.is-recommended { border-color: rgba(124, 199, 190, .6); box-shadow: none; } -body.dark-mode .user-settings .billing-summary .quota-track { background: rgba(255, 255, 255, .2); } @media (max-width: 900px) { .user-settings .billing-offers { grid-template-columns: 1fr; gap: 24px; } .user-settings .billing-history-head { display: none; } - .user-settings .billing-history-row { grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; } + .user-settings .billing-history-row { gap: 4px 12px; grid-template-columns: minmax(0, 1fr) auto; } .user-settings .billing-history-term:empty { display: none; } - .user-settings .billing-addon-rows li { grid-template-columns: minmax(0, 1fr) auto auto; gap: 12px; } .user-settings .billing-addon-rows strong { display: block; } .user-settings .billing-addon-rows .settings-text-button { min-height: 44px; padding: 0 4px; } .user-settings .billing-offer-head { height: auto; flex-wrap: wrap; row-gap: 8px; } - .user-settings .billing-history-row { grid-template-columns: minmax(0, 1fr) auto; } - .user-settings .billing-history-term { grid-column: 1; grid-row: 2; } + .user-settings .billing-history-term { grid-column: 1; grid-row: 2; font-size: 12px; color: var(--ink-muted); } .user-settings .billing-history-paid { grid-column: 2; grid-row: 2; text-align: right; color: var(--ink-muted); font-size: 12px; } .user-settings .billing-buy { grid-template-columns: 1fr; gap: 20px; } .user-settings .billing-buy-form { padding-left: 0; border-left: 0; padding-top: 20px; border-top: 1px solid var(--border-color); } .user-settings .billing-history-main { grid-column: 1; grid-row: 1; } .user-settings .billing-history-status { grid-column: 2; grid-row: 1; } - .user-settings .billing-history-term { font-size: 12px; color: var(--ink-muted); } - .user-settings .billing-buy-row, .user-settings .billing-manage { flex-direction: column; align-items: stretch; } + .user-settings .billing-manage { flex-direction: column; align-items: stretch; } } @media (max-width: 600px) { .user-settings .billing-summary-head { flex-direction: column; align-items: stretch; } .user-settings .billing-summary .quota-usage { grid-template-columns: 1fr; gap: 16px; } .user-settings .billing-summary-actions .btn { width: 100%; } .settings-nav { overflow-x: auto; gap: 20px; scrollbar-width: none; padding-right: 16px; } - .settings-nav button { white-space: nowrap; flex-shrink: 0; } } /* Anonymize page: choosing how to host a repository */ .hosting-options { border: 0; padding: 0; margin: 14px 0 0; min-width: 0; } @@ -12767,3 +12339,1848 @@ body.dark-mode .hosting-limit { background: rgba(251, 191, 36, .1); border-color .hosting-payment .capacity-options[open] summary::before { transform: rotate(45deg); } .inline-hosting .hosting-terms { font-size: 12px; color: var(--ink-muted); margin: 4px 0 0; } +/* Settings: Save is disabled (muted) on a clean form; teal while there are changes and while saving. */ +.user-settings .btn-ink.is-saving:disabled { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; opacity: .85; cursor: progress; } +.user-settings .settings-check:last-child { border-bottom: 0; } +.settings-row .settings-checks { max-width: none !important; width: 100% !important; } +/* Phone header: one row (logo, theme, Sign in, menu). The support heart lives in the menu. */ +@media (max-width: 575.98px) { + .app-header .navbar.navbar-expand-lg { flex-wrap: nowrap !important; min-height: 56px; justify-content: flex-start !important; } + .app-header .navbar.navbar-expand-lg > .navbar-collapse { flex-basis: 100%; } + .navbar .nav-heart-m { display: none !important; } + .app-header .navbar .nav-theme-m, .app-header .navbar .nav-heart-m + .nav-theme-m { margin-left: auto !important; } + .navbar .navbar-brand { flex: 0 1 auto; min-width: 0; margin-right: 8px !important; } + .navbar .navbar-toggler { flex: 0 0 44px; width: 44px; } + .navbar .nav-signin-m { flex: none; margin-right: 0 !important; } + .navbar .nav-support-item.d-none { display: block !important; } +} + +/* Explorer, phone: the artifact identity gets its own context row under the bar. */ +.vb-context { display: none; } +@media (max-width: 767px) { + .explorer-page>.vb-context { + grid-row: 2; + grid-column: 1 / -1; + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 12px; + min-width: 0; + padding: 8px 16px; + border-bottom: 1px solid var(--border-color); + background: var(--paper-bg-alt); + font: 500 13px/1.3 var(--font-sans); + } + .dark-mode .explorer-page > .vb-context { background: var(--sidebar-bg-color); } + .vb-context-id { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 500 12.5px/1.3 var(--font-mono); color: var(--color) !important; text-decoration: none !important; } + .vb-context-date { flex: none; font-size: 12px; color: var(--ink-muted); font-variant-numeric: tabular-nums; } + .viewer-bar .vb-artifact, .viewer-bar .vb-support { display: none !important; } +} + +/* My work rows. */ +/* IDs keep their distinguishing end (head ellipsizes, last 6 chars stay); the commit keeps its slot; + the conference tag wraps to its own line and only truncates itself. */ + +/* ----- Dashboard ----- */ +.dashboard-page .paper-table-dashboard .anon-sub { + display: flex !important; + align-items: center; + column-gap: 8px !important; + min-width: 0; + flex-wrap: wrap; + row-gap: 2px !important; +} +.dashboard-page .paper-table-dashboard .anon-sub > .anonymous-id { display: inline-flex; flex: 0 1 auto; min-width: 0; max-width: 100%; overflow: hidden; white-space: nowrap; } +.paper-table-dashboard .anonymous-id .id-head { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.paper-table-dashboard .anonymous-id .id-tail { flex: none; white-space: nowrap; } +.dashboard-page .paper-table-dashboard .anon-sub>.conf-tag { + flex: 1 0 100% !important; + max-width: 100% !important; + min-width: 0 !important; + display: flex !important; + align-items: flex-start !important; + gap: 5px !important; + overflow: visible !important; + white-space: normal !important; + font-family: var(--font-sans); +} +/* Recovery text wraps instead of clipping; the link sits 4px below. */ +.paper-table-dashboard .cell-status .status-sub-error, +.paper-table-dashboard .cell-status .status-sub-warn { + white-space: normal !important; + overflow: visible !important; + text-overflow: clip !important; + line-height: 1.4 !important; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden !important; +} +.paper-table-dashboard .cell-status .project-attention-action { margin-top: 4px !important; } +/* Expired and removed use the same dot + word idiom as every other status. */ +.paper-table-dashboard .status-line .status-word { color: var(--color); } +.paper-table-dashboard .repo-inactive .status-line .status-word { color: var(--ink-soft); } +/* Actions that don't apply stay in their slot, disabled, with a tooltip saying why. */ +.paper-table-dashboard .cell-actions .is-disabled, +.paper-table-dashboard .cell-actions .dropdown.is-disabled>.btn { + opacity: .35; + cursor: not-allowed !important; + background: transparent !important; + box-shadow: none !important; +} +.paper-table-dashboard .cell-actions .is-disabled:hover { color: inherit; } +/* Phone rows: title and ID take the width; Copy and "…" (44px) are pinned top-right; Edit lives in "…". */ +@media (max-width: 767px) { + .paper-table-dashboard .cell-actions > .row-edit { display: none !important; } + .paper-table-dashboard .cell-actions>:is(.copy-url,.dropdown), + .paper-table-dashboard .cell-actions>.dropdown>.btn-icon-dots { + width: 44px !important; + height: 44px !important; + min-height: 44px !important; + align-self: flex-start !important; + margin-top: -10px !important; + } + .paper-table-dashboard .cell-actions > .dropdown > .btn-icon-dots { margin-top: 0 !important; } + .paper-table-dashboard .cell-anon { padding-right: 4px; } + .dashboard-page .paper-table-dashboard .dashboard-row-meta { padding-left: 26px !important; } +} + +/* One page header: optional 13px breadcrumb, Inter 600 28px title, 6px lede, right slot on the + title line. The breadcrumb line is reserved when absent, so every title sits at the same y. */ + +/* ----- App chrome ----- */ +.page-head { margin: 0 0 24px !important; padding: 0 !important; border: 0 !important; min-height: 0 !important; height: auto !important; } +.page-head>.paper-crumbs { + display: block !important; + height: var(--crumb-h) !important; + min-height: 0 !important; + margin: 0 0 var(--crumb-gap) !important; + padding: 0 !important; + border: 0 !important; + font: 400 13px/var(--crumb-h) var(--font-sans) !important; + letter-spacing: 0 !important; + text-transform: none !important; + color: var(--ink-muted) !important; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.page-head > .paper-crumbs a { color: var(--ink-muted) !important; text-decoration: none; } +.page-head > .paper-crumbs a:hover { color: var(--color) !important; text-decoration: underline; } +.page-head > .paper-crumbs .here { color: var(--ink-soft) !important; } +.page-head:not(:has(> .paper-crumbs)) { padding-top: calc(var(--crumb-h) + var(--crumb-gap)) !important; } +.page-head-main, .page-head.page-head-main { + display: flex !important; + align-items: flex-start !important; + justify-content: space-between !important; + gap: 12px 24px !important; + flex-wrap: wrap; +} +.page-head-main > :first-child { min-width: 0; flex: 1 1 320px; } +.page-head h1, +.page-head .paper-page-title, +.page-head .settings-title h1, +.user-settings .page-head h1 { + margin: 0 !important; + padding: 0 !important; + font: 600 28px/1.2 var(--font-sans) !important; + letter-spacing: -0.02em !important; + color: var(--color); +} +.page-head .paper-page-lede, .page-head .task-lede { margin: 6px 0 0 !important; font-size: 15px !important; line-height: 1.5 !important; color: var(--ink-muted) !important; max-width: 640px; } +/* Right slots start on the title line: 34px title box, 40px controls. */ +.page-head-main > :not(:first-child) { flex: none; margin: -3px 0 0 !important; align-self: flex-start !important; } +.page-head .ov-live { height: 34px; display: inline-flex; align-items: center; margin: 0 !important; } +.page-head .task-trail { margin: 0 !important; padding: 0 !important; border: 0 !important; height: 34px; align-items: center; gap: 16px !important; font-size: 13px; } +/* Every app page starts its header at the same distance below the navbar. */ +.dashboard-page.paper-page, .conferences-page.paper-page, .user-settings.paper-page, .admin-page.paper-page, .repository-task.status-page { + padding-top: var(--page-top) !important; +} +.dashboard-page > .row, .conferences-page > .row { margin-top: 0 !important; } +.anonymize-landing-inner { + padding-top: var(--page-top) !important; + width: 100% !important; + max-width: calc(var(--page-max) + 2 * var(--page-gutter)) !important; + margin-left: auto !important; + margin-right: auto !important; + padding-left: var(--page-gutter) !important; + padding-right: var(--page-gutter) !important; +} +.anonymize-landing { padding-top: 0 !important; margin-top: 0 !important; } +/* Admin subpages: the same breadcrumb style. */ +.admin-page > .paper-crumbs { font: 400 13px/var(--crumb-h) var(--font-sans) !important; letter-spacing: 0 !important; text-transform: none !important; color: var(--ink-muted) !important; margin: 0 0 var(--crumb-gap) !important; } +@media (max-width: 767px) { + .page-head:not(:has(> .paper-crumbs)) { padding-top: 0 !important; } + .page-head h1, .page-head .paper-page-title { font-size: 24px !important; } + .page-head .task-trail { height: auto; flex-wrap: wrap; gap: 4px 14px !important; font-size: 12px; } +} +.admin-page .page-head .ov-header { min-height: 0 !important; margin: 0 !important; align-items: flex-start !important; } +.admin-page .page-head .ov-header .paper-page-title { line-height: 1.2 !important; display: block !important; min-height: 0 !important; height: auto !important; flex: 1 1 auto; } + +/* One active-tab rule: a 2px teal underline (header nav, My work views, Settings, Admin, home tabs). */ +.dashboard-view-tabs button[aria-pressed="true"] { border-bottom: 2px solid var(--accent) !important; color: var(--color) !important; } +.settings-nav button[aria-current="page"] { box-shadow: inset 0 -2px 0 var(--accent) !important; border-bottom-color: transparent !important; } +.paper-feature.is-on .paper-feature-tab { border-bottom-color: var(--accent) !important; } +.page-head + .admin-nav { margin-top: 0 !important; } + +/* Redaction masks: the index sits centered in the slot; in headings the slot hugs its number. */ + +/* ----- File viewer ----- */ +.redact-slot, .markdown-body mark.redact-chip, .dark-mode .markdown-body mark.redact-chip, .demo-output .redact-chip, .dark-mode .demo-output .redact-chip, span.redact, .dark-mode span.redact { justify-content: center !important; } +.markdown-body :is(h1, h2, h3, h4) mark.redact-chip, .dark-mode .markdown-body :is(h1, h2, h3, h4) mark.redact-chip { min-width: 1.2em !important; padding: 0 .3em !important; justify-content: center !important; } +.markdown-body :is(h1, h2) mark.redact-chip i { font-size: .55em !important; } + +/* Home: the phone hero mock shows whole, with its full border, instead of fading out. */ +/* Home "Before you sign in": the heading column stays in view while the answers scroll. */ +.files .redact-slot, .breadcrumb .redact-slot { justify-content: center !important; } + +/* Status: one ready message, the link right under it, and a sidebar card like every other card. */ +.repository-task .page-head { margin-bottom: 20px !important; } +.repository-task .task-columns { align-items: start !important; } +.repository-task .share-link { margin-top: 0 !important; } + +/* ----- Anonymize workspace ----- */ +.task-summary, .dark-mode .task-summary { background: var(--paper-card) !important; border: 1px solid var(--border-color) !important; border-radius: var(--radius-surface) !important; padding: 4px 20px 20px !important; box-shadow: none !important; } + +/* Anonymize landing: an import screen with the user's repositories under the URL field. */ +.repo-picker { + margin-top: 28px; + border: 1px solid var(--border-color); + border-radius: var(--radius-surface); + background: var(--paper-card); + overflow: hidden; + --picker-row: 44px; + --picker-rows: 7; +} +.repo-picker-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 56px; padding: 10px 12px 10px 16px; border-bottom: 1px solid var(--border-color); } +.repo-picker-filter.form-control { width: 220px; max-width: 55%; height: 36px !important; min-height: 36px !important; padding: 0 10px !important; font-size: 13px !important; border-radius: var(--radius-control) !important; } +.repo-picker-list { + list-style: none; + margin: 0; + padding: 0; + overscroll-behavior: contain; + scrollbar-width: thin; + scrollbar-color: var(--scroll-thumb, #CFC7B9) transparent; + max-height: calc(var(--picker-row) * var(--picker-rows)) !important; +} +.repo-picker-row { display: flex; align-items: center; gap: 10px; height: 44px; padding: 0 12px 0 16px; border-bottom: 1px solid var(--border-soft, var(--border-color)); } +.repo-picker-row:last-child { border-bottom: 0; } +.repo-picker-row:not(.is-skeleton):hover { background: var(--hover-bg-color); } +.repo-picker-row > .project-type-svg { flex: none; width: 15px; height: 15px; color: var(--ink-muted); } +.repo-picker-name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 500 14px/1.3 var(--font-sans); color: var(--color); } +.repo-picker-owner { color: var(--ink-muted); font-weight: 400; } +.repo-picker-select.btn { flex: none; height: 30px !important; min-height: 30px !important; padding: 0 12px !important; font-size: 13px !important; font-weight: 500; border-radius: var(--radius-button) !important; border-color: transparent !important; background: transparent !important; color: var(--accent) !important; box-shadow: none !important; } +.repo-picker-row:hover .repo-picker-select.btn, .repo-picker-select.btn:focus-visible { border-color: var(--border-color) !important; background: var(--paper-card) !important; } +.repo-picker-row.is-skeleton .skeleton-line { display: block; height: 10px; border-radius: 4px; } +.repo-picker-state { margin: 0; padding: 16px; font-size: 13px; color: var(--ink-muted); } +.repo-picker .repo-access-details { + margin: 0 !important; + border: 0 !important; + border-top: 1px solid var(--border-color) !important; + border-radius: 0 !important; + background: var(--paper-bg-alt) !important; + padding: 8px 16px !important; +} +.dark-mode .repo-picker .repo-access-details { background: rgba(255,255,255,.02) !important; } +.repo-picker .repo-access-details .repo-access-controls { display: flex; gap: 8px; flex-wrap: wrap; align-items: center !important; } +.repo-picker .repo-access-details .btn { height: 32px !important; min-height: 32px !important; padding: 0 10px !important; font-size: 13px !important; } +.repo-picker .repo-access-note { margin-top: 6px; font-size: 12.5px; color: var(--ink-muted); } +/* Phone: the access switch moves under the helper text; 20px gutter like every page. */ +@media (max-width: 767px) { + .anonymize-landing { padding-left: 0 !important; padding-right: 0 !important; } + .anonymize-landing-inner { display: flex !important; flex-direction: column; } + .anonymize-landing-inner > .form-group, .anonymize-landing .source-url-label-row { display: contents !important; } + .anonymize-landing .source-url-label-row .paper-field-label { margin-bottom: 8px !important; } + .anonymize-landing .source-url-label-row .repo-access { order: 1; align-self: flex-start; margin-top: 24px !important; margin-bottom: 0 !important; } + .repo-picker-filter.form-control { width: 150px; } +} +.repo-picker .repo-access-main { min-height: 0 !important; margin: 0 !important; padding: 0 !important; } +.repo-picker .repo-access-note:empty, .repo-picker .repo-access-note:not(:has(span:not(:empty))) { display: none !important; } +.repo-picker .access-q { + font-size: 13px; + color: var(--ink-muted); + display: inline-flex !important; + align-items: center; + height: 32px; + margin: 0 !important; + line-height: 1; +} +@media (max-width: 767px) { .anonymize-landing .task-trail { margin: 16px 0 20px !important; } +} + +/* Sign-in: the same primary GitHub button as home and 404, full width; the note is left-aligned. */ +.auth-options .btn-hero.auth-continue-github { display: flex !important; width: 100%; justify-content: center !important; align-items: center; gap: 8px; text-align: center; } +.auth-options .auth-continue-github .fa-github { font-size: 17px; margin: 0 !important; } +/* Public pages end with the shared footer; the 404 band no longer fills the viewport so it stays in view. */ + +/* Admin: numerals in sans tabular figures; mono is for IDs and hashes only. */ +.admin-page :is(.ov-legend-n, .ov-ebar-n, .ov-spark-x, .ov-spark-x span, .legend-count, .err-count) { font-family: var(--font-sans) !important; font-variant-numeric: tabular-nums; letter-spacing: 0 !important; } +/* Conferences empty state: a 32px icon in a 48px soft circle, and the one useful action. */ +.conferences-page .paper-table-empty .empty-icon { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 50%; background: var(--paper-2, var(--hover-bg-color)); color: var(--ink-soft); margin-bottom: 4px; } +.conferences-page .paper-table-empty .empty-icon .ui-icon { width: 32px !important; height: 32px !important; padding: 4px; } +.conferences-page .paper-table-empty .conf-empty-new { display: inline-flex; align-items: center; gap: 6px; height: var(--control-h); padding: 0 14px; margin-top: 8px; border-radius: var(--radius-button); font-size: 14px; } +@media (max-width: 767px) { .page-head-main > :first-child { flex: 0 1 auto !important; } +} +/* Home "Before you sign in": a full-width heading row, then the answers as three columns. */ +.paper-qa.paper-qa-r3 { display: block !important; } +.paper-qa-r3 > .qa-head { position: static !important; display: flex; align-items: last baseline; justify-content: space-between; gap: 24px; margin-bottom: 28px; } +.paper-qa-r3 > .qa-head .paper-link-arrow { flex: 0 0 auto; white-space: nowrap; } +.paper-qa-r3 > .qa-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; } +.paper-qa-r3 .qa-grid .q, .paper-qa-r3 .qa-grid .q:last-child { border-top: 1px solid var(--border-color); border-bottom: 0; padding: 18px 0 0; } +@media (max-width: 899px) { + .paper-qa-r3 > .qa-head { display: block; margin-bottom: 16px; } + .paper-qa-r3 > .qa-head .paper-link-arrow { display: inline-block; margin-top: 12px; padding-bottom: 0; } + .paper-qa-r3 > .qa-grid { grid-template-columns: minmax(0, 1fr); gap: 0; } + .paper-qa-r3 .qa-grid .q { padding: 18px 0; } + .paper-qa-r3 .qa-grid .q:last-child { border-bottom: 1px solid var(--border-color); padding-bottom: 18px !important; } +} + +/* One frame for the anonymize flow: the landing uses the standard page container + (left edge = navbar logo), the form keeps a ~720px left-aligned column, and the step + trail sits directly under the lede on both step 1 and step 3. */ +.anonymize-landing:not([style*="display: none"]) { display: block !important; padding-left: 0 !important; padding-right: 0 !important; } +.anonymize-landing-inner > :not(.page-head) { max-width: 720px; } +.page-head>.flow-trail { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 6px 22px !important; + height: auto !important; + margin: 16px 0 0 !important; + padding: 0 !important; + border: 0 !important; + font-size: 13px; + color: var(--ink-muted); +} +.anonymize-landing .page-head { margin-bottom: 28px !important; } +.status-page > .page-head { margin-bottom: 24px !important; } +@media (max-width: 767px) { + .page-head > .flow-trail { gap: 4px 14px !important; font-size: 12px; margin-top: 12px !important; } + .anonymize-landing .page-head { margin-bottom: 20px !important; } +} + +/* Dashboard metadata */ +.dashboard-page .paper-table-dashboard .anon-sub>.conf-tag { color: var(--ink-muted); } +/* Expired is an ended state: neutral grey dot. Amber stays for in-progress states. */ +.status-dot.status-expired, .dark-mode .status-dot.status-expired { background: var(--status-inactive) !important; } + +@media (max-width: 767px) { + /* One 20px icon column: status dot, eye and clock icons sit centered in it; labels share a left edge. */ + .dashboard-page .paper-table-dashboard .dashboard-row-meta { align-items: center !important; } + .paper-table-dashboard .dashboard-row-meta .status-line { display: inline-flex !important; align-items: center; gap: 0 !important; } + .paper-table-dashboard .dashboard-row-meta .status-line .status-dot { width: 8px !important; height: 8px !important; margin: 0 6px !important; flex: none; } + .paper-table-dashboard .dashboard-row-meta > .cell-views { display: inline-flex !important; align-items: center; } + .paper-table-dashboard .dashboard-row-meta > .cell-expires { display: inline-flex !important; align-items: center; } + .dashboard-page .dashboard-row-meta .cell-views .mobile-meta-icon, + .dashboard-page .dashboard-row-meta .cell-expires .mobile-meta-icon { width: 14px !important; height: 14px !important; margin: 0 3px !important; flex: none; } + .paper-table-dashboard .dashboard-row-meta .cell-expires .empty-dash { color: var(--ink-soft); } + /* Explanations and the recovery link start at the label edge, 4px apart. */ + .paper-table-dashboard .dashboard-row-meta .status-sub:not(.status-sub-date) { padding-left: 20px; margin-top: 2px !important; } + .dashboard-page .dashboard-row-meta .project-attention-action { margin: 0 0 0 20px !important; min-height: 0 !important; } +} + +/* Dark mode: secondary text at #A39D92 (≥4.5:1 on cards and canvas); the mock card's footer rule is visible. */ +.dark-mode .fm-actions { border-top-color: var(--border-color) !important; } + +/* Repository picker: the footer question shares the button's center line; on phones the + owner sits on its own muted line above a wrapping repo name, and Select stays a 44px target. */ +@media (max-width: 767px) { + .repo-picker-row { height: auto !important; min-height: 60px; padding: 10px 4px 10px 16px !important; align-items: center; } + .repo-picker-name { display: flex !important; flex-direction: column; gap: 2px; white-space: normal !important; overflow: visible !important; text-overflow: clip !important; } + .repo-picker-owner { font-size: 12px; line-height: 16px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .repo-picker-slash { display: none; } + .repo-picker-repo { font-size: 14px; line-height: 1.3; overflow-wrap: anywhere; } + .repo-picker-row > .project-type-svg { align-self: center; } + .repo-picker-select.btn { height: 44px !important; min-height: 44px !important; min-width: 64px; } +} + +/* Explorer */ +/* File tree: middle truncation keeps the end and the extension visible. */ + +/* ----- File viewer ----- */ +.files .tree-name.tree-name-split { + display: flex !important; + overflow: hidden; + text-overflow: clip !important; + gap: 0 !important; + column-gap: 0 !important; + position: relative; +} +.files .tree-name-split .tree-name-head { flex: 0 1 auto; min-width: 1.5em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.files .tree-name-split .tree-name-tail { flex: 0 0 auto; white-space: pre; } +/* Phone toolbar: the redaction count keeps its word, "22 redacted", at 12px. */ +@media (max-width: 767px) { + .file-card-head .mobile-sub b { + font-size: 12px !important; + font-weight: 500 !important; + color: var(--ink-muted) !important; + display: inline-flex !important; + align-items: center; + gap: 0 !important; + } + .file-card-head .meta-redact-word, .mobile-sub .meta-redact-word { position: static !important; width: auto !important; height: auto !important; overflow: visible !important; clip: auto !important; white-space: pre !important; } + /* Header bar: 48px tall with 8px above and below the outlined Sign in. */ + .explorer-page > .viewer-bar, .viewer-bar { min-height: 48px !important; padding-top: 8px !important; padding-bottom: 8px !important; box-sizing: border-box; } +} +/* Redaction masks: the index is centered in its slot in every context and breakpoint. */ +.redact, span.redact, .redact-chip, mark.redact-chip, .demo-output .redact-chip, .redact-slot, .files .redact-slot, .breadcrumb .redact-slot { + text-align: center !important; +} +@media (max-width: 767px) { + /* Filename on the first line, "Markdown · 22 redacted" under it; the Files button spans both. */ + .file-card-head .file-card-path { display: grid !important; } + .file-card-head .file-card-path>.breadcrumb { + align-self: end; + grid-column: 2 !important; + grid-row: 1 !important; + min-width: 0 !important; + max-width: 100% !important; + width: auto !important; + } + .file-card-head .file-card-path>.mobile-sub { + grid-column: 2; + grid-row: 2; + align-self: start; + display: flex !important; + line-height: 16px; + padding-left: 0 !important; + margin-left: 0 !important; + min-width: 0; + text-overflow: ellipsis; + } +} +@media (max-width: 767px) { + .file-card-head .file-card-path > .breadcrumb, .file-card-head .file-card-path > .breadcrumb > li:first-child { padding-left: 0 !important; margin-left: 0 !important; } +} + +/* Home demo: the terms field grows instead of clipping mid-token; on phones the hint gets its own line. */ +.demo-terms textarea.demo-terms-input { + display: block; + width: 100%; + min-height: 42px; + height: auto; + padding: 10px 14px; + margin: 0; + border: 1px solid var(--border-color); + border-radius: var(--radius-control); + background: var(--paper-card); + font: 14px/20px var(--font-mono); + color: var(--color); + resize: none; + overflow: hidden; + field-sizing: content; +} +/* Step 2 shows the same trail under its title; the split keeps the full container width. */ +.flow-trail { list-style: none; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 22px !important; margin: 0; padding: 0 !important; border: 0 !important; font-size: 13px; color: var(--ink-muted); } + +/* ----- Anonymize workspace ----- */ +.anonymize-topbar-inner > .flow-trail { margin: 6px 0 0 !important; height: auto !important; } +.anonymize-topbar-inner:has(> .flow-trail) { flex-direction: column !important; align-items: stretch !important; } +@media (min-width: 1200px) { + .anonymize-workspace .anonymize-topbar-inner, .anonymize-workspace .anonymize-split { width: 100% !important; } +} +@media (max-width: 767px) { .anonymize-topbar-inner > .flow-trail { gap: 4px 14px !important; font-size: 12px; } +} +/* Recovery copy: one-clause explanation, then "May be stuck · Check progress" on the action line. */ + +/* ----- Dashboard ----- */ +.paper-table .cell-status .status-sub { text-wrap: pretty; } +.paper-table-dashboard .cell-status .status-action-line { + display: flex; + flex-wrap: wrap; + align-items: baseline; + column-gap: 0; + margin-top: 2px; + font-size: 12px; + line-height: 1.5; +} +.paper-table-dashboard .cell-status .status-action-line .status-stuck { color: var(--status-progress); white-space: pre; } +.paper-table-dashboard .cell-status .status-action-line > .project-attention-action { margin: 0 !important; flex-basis: auto !important; } + +/* Phone cards: one card system. */ +@media (max-width: 767px) { + /* Every meta icon sits in a 16px box, followed by 6px: all labels start at the same x. */ + .dashboard-page .paper-table-dashboard .dashboard-row-meta .status-line .status-dot { width: 8px !important; height: 8px !important; margin: 0 10px 0 4px !important; } + .dashboard-page .paper-table-dashboard .dashboard-row-meta .cell-views .mobile-meta-icon, + .dashboard-page .paper-table-dashboard .dashboard-row-meta .cell-expires .mobile-meta-icon { width: 14px !important; height: 14px !important; margin: 0 7px 0 1px !important; } + .dashboard-page .paper-table-dashboard .dashboard-row-meta > .cell-status > .project-attention-action { margin: 0 0 0 22px !important; } + .dashboard-page .paper-table-dashboard .dashboard-row-meta .status-action-line { order: 5; flex: 1 0 100%; padding-left: 22px; margin: 0 !important; font-size: 13px; } + /* Repo-type icon aligns with the first title line, not the middle of a tall card. */ + .dashboard-page .paper-table-dashboard .cell-anon>.project-type-icon { + align-self: flex-start !important; + margin-top: 2px !important; + grid-area: icon; + justify-self: start; + } + /* 20px link + 16px above + 8px below = 44px; it stops at the card edge (8px bottom padding), so it never reaches the next card. */ + .dashboard-page .paper-table-dashboard .project-attention-action::after { content: ""; position: absolute; left: -8px; right: -8px; top: -17px; bottom: -7px; } +} +@media (max-width: 767px) { + .dashboard-page .paper-table-dashboard .cell-actions>.dropdown { + margin-left: 8px !important; + left: 0 !important; + right: auto !important; + } +} + +/* Repository picker: a quiet count in the header; the list shows whole rows and fades at the edge. */ +.repo-picker-title { display: flex; flex-direction: column; gap: 2px; min-width: 0; } +.repo-picker-count { font-size: 12px; line-height: 16px; color: var(--ink-muted); font-variant-numeric: tabular-nums; white-space: nowrap; } +@media (max-width: 767px) { + /* 44px Select + 2 x 10px padding + 1px rule = 65px; a rare long name still wraps and grows its row. */ + .repo-picker-row:not(.is-skeleton) { min-height: 65px !important; box-sizing: border-box; } +} +.dark-mode .user-settings .btn-ink.is-saving:disabled { background: #237A71 !important; border-color: #237A71 !important; } +.files .tree-name-split .tree-name-middle { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; } + +/* Truthful charts: zero is 0px on a separate neutral baseline; missing days are hatched, not zero. */ +.overview-page .ov-spark-col.is-missing { + background: repeating-linear-gradient(135deg, var(--ink-faint) 0 1.5px, transparent 1.5px 4px) left bottom / 100% 6px no-repeat; + opacity: .7; +} +.overview-page .ov-bar-seg { min-width: 2px; } +/* One warning tier at ≥75% (amber bar, label and border), mirroring the red Critical tier at >90%. */ +.overview-page .ov-kpi-value.ov-val-warn { color: inherit; } + +/* Sign-in: the lead under the display headline uses the home lead scale. */ +@media (min-width: 768px) { + .auth-intro .paper-page-lede { font-size: 19px !important; line-height: 1.5 !important; max-width: 34ch !important; margin-top: 24px !important; color: var(--ink-soft); } +} +@media (max-width: 767px) { + .auth-intro .paper-page-lede { font-size: 16px !important; line-height: 1.5 !important; } +} +/* Home closing CTA: the action group sits flush with the container's right edge. */ +@media (min-width: 992px) { + .paper-cta .paper-cta-actions { justify-content: flex-end; } +} +/* Home, phone: the open feature's caption sits 40px under its mock card; the last FAQ item keeps the same bottom padding. */ +@media (max-width: 767px) { + .paper-features .paper-feature.is-on .paper-feature-more { + order: 2 !important; + margin-top: 24px !important; + } +} + +/* Anonymize step 1, wide screens: a light "What happens next" rail beside the form, top-aligned with it. */ +.landing-next { display: none; } +@media (min-width: 1100px) { + .anonymize-landing-inner { + display: grid !important; + grid-template-columns: minmax(0, 720px) minmax(240px, 1fr); + column-gap: 48px; + align-items: start; + --landing-next-offset: 40px; + } + .anonymize-landing-inner > * { grid-column: 1; } + .anonymize-landing-inner>.landing-next { + display: block; + grid-column: 2; + grid-row: 2 / span 8; + align-self: start; + max-width: none; + padding: 20px !important; + margin-top: var(--landing-next-offset, 32.375px) !important; + } + /* Grid items do not collapse margins: keep the 28px header gap the block layout had. */ + .anonymize-landing-inner > .form-group { margin-top: 0 !important; } +} +/* Phone cards: the ID / commit / conference line spans the card under the title + actions row. */ +@media (max-width: 767px) { + .dashboard-page .paper-table.paper-table-dashboard .paper-table-row, + .dashboard-page .paper-table.paper-table-dashboard .paper-table-row.repo-inactive { + grid-template-columns: 26px minmax(0, 1fr) auto auto !important; + grid-template-areas: "icon name copy more" ". sub sub sub" "meta meta meta meta"; + column-gap: 0 !important; + row-gap: 6px !important; + } + .dashboard-page .paper-table-dashboard .anon-text > .anon-title { grid-area: name; min-width: 0; align-self: start; line-height: 1.3 !important; } + .dashboard-page .paper-table-dashboard .anon-text > .anon-sub { grid-area: sub; grid-column: 2 / -1; min-width: 0; margin: 0 !important; } + /* The 44px action targets overhang the title row instead of stretching it, so the sub-line follows the title directly. */ + .dashboard-page .paper-table-dashboard .cell-actions>.copy-url, + .dashboard-page .paper-table-dashboard .cell-actions>.dropdown { + align-self: start; + width: 32px !important; + height: 32px !important; + min-width: 32px !important; + min-height: 32px !important; + margin-top: -6px !important; + margin-bottom: -6px !important; + position: relative; + } + /* The repo part of "owner/repo" moves to the next line as a unit, so titles break after the slash, not at a hyphen. */ + .paper-table-dashboard .repo-name .rn-repo { display: inline-block; max-width: 100%; overflow-wrap: anywhere; } + /* ID stays one unit; the commit follows after 8px and a light divider; the conference takes its own full-width line. */ + .dashboard-page .paper-table-dashboard .anon-sub { column-gap: 8px !important; row-gap: 2px !important; } + .dashboard-page .paper-table-dashboard .anon-sub > .conf-tag { flex: 1 1 100% !important; max-width: 100% !important; } +} +.paper-table-dashboard .anon-sub:empty { display: none !important; } + +/* Expiring within a week: amber clock + "Expires in 21 hours", weight 500. The row itself is not tinted. */ +.paper-table-dashboard .cell-expires .expires-soon { display: inline-flex; align-items: center; gap: 0; color: var(--status-progress) !important; font-weight: 500; white-space: nowrap; } +.paper-table-dashboard .cell-expires .expires-soon-icon { width: 14px; height: 14px; flex: none; margin-right: 6px; color: var(--status-progress); } +.paper-table-dashboard .cell-expires .expires-soon-prefix { display: none; } +@media (max-width: 767px) { + .paper-table-dashboard .cell-expires .expires-soon-icon { display: none; } + .paper-table-dashboard .cell-expires .expires-soon-prefix { display: inline; white-space: pre; } + .paper-table-dashboard .cell-expires:has(.expires-soon) > .mobile-meta-icon { color: var(--status-progress) !important; opacity: 1 !important; } +} +/* Dark error rows keep a faint red band, as in light mode. */ +.dark-mode .dashboard-page .paper-table-dashboard .paper-table-row.repo-error, +.dark-mode .paper-table-dashboard .paper-table-row.repo-error { background: color-mix(in srgb, var(--status-error) 7%, transparent) !important; } + +/* Admin overview: honest charts and error counts. */ + +/* ----- Admin ----- */ +.overview-page .ov-chart-legends { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; justify-content: flex-end; } +.overview-page .ov-legend-missing { display: inline-flex; align-items: center; gap: 6px; font: 400 12px/1 var(--font-sans); color: var(--ink-soft); } +.overview-page .ov-swatch-missing { + width: 12px; + height: 6px; + flex: none; + box-shadow: inset 0 0 0 1px var(--border-color); + background: repeating-linear-gradient(135deg, var(--ink-faint) 0 1.5px, transparent 1.5px 4px); +} +/* The 0 baseline: a firmer rule plus a "0" label in the left gutter. */ +.overview-page .ov-spark-bars { position: relative; box-shadow: inset 0 -1px 0 var(--ink-faint) !important; } +/* Cumulative users: a step line over a light area, anchored at 0. */ +.overview-page .ov-spark-step { display: block; } +.overview-page .ov-step-svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; } +.overview-page .ov-step-missing { position: absolute; left: 0; bottom: 0; height: 6px; opacity: .7; background: repeating-linear-gradient(135deg, var(--ink-faint) 0 1.5px, transparent 1.5px 4px); } +/* Under 10 users the total is a number, not a chart. */ +/* Errors: 5xx + 4xx are counted; Info is a neutral footnote. */ +.overview-page .ov-ebar-note { margin: 2px 0 0; padding-top: 12px; border-top: 1px solid var(--border-color); font-size: 12px; line-height: 1.4; color: var(--ink-muted); font-variant-numeric: tabular-nums; } + +/* Explorer: one 16px phone gutter; filled Sign in everywhere; heading chips on the cap-height center. */ +@media (max-width: 767px) { + .explorer-page .viewer-bar { padding-left: 16px !important; padding-right: 16px !important; } + .explorer-page .file-card-head { padding-left: 16px !important; padding-right: 16px !important; } + .viewer-bar .vb-signin, .viewer-bar .vb-signin:hover { background: var(--accent) !important; color: #fff !important; border: 0 !important; box-shadow: none !important; height: 32px !important; } + .dark-mode .viewer-bar .vb-signin, .dark-mode .viewer-bar .vb-signin:hover { background: #237A71 !important; color: #fff !important; } +} +.markdown-body :is(h1, h2, h3) mark.redact-chip, .dark-mode .markdown-body :is(h1, h2, h3) mark.redact-chip { line-height: 1 !important; vertical-align: .2em !important; } + +/* Settings: a lead under the H1 like every top-level page; the tab scope note is a 14px section intro. */ +.user-settings .settings-title { display: block !important; } +.user-settings .settings-scope, +.user-settings #settings-billing > .settings-scope { font-size: 14px !important; line-height: 1.5 !important; color: var(--ink-soft) !important; margin: 16px 0 !important; } +/* Anonymize step 1: the "What happens next" card's top border lines up with the Source URL input's top border. */ +.user-settings .settings-title .paper-page-lede { margin: 6px 0 0 !important; } +/* Phone footer: Product, Project and Contact share one even row of three 13px columns (no orphan). */ +@media (max-width: 480px) { + .paper-footer .paper-footer-col { grid-column: auto !important; min-width: 0; } + .paper-footer .paper-footer-col a { font-size: 13px !important; } +} +/* Admin overview. Under 10 users the Users card is dropped (the total moves to the KPI row) and the other charts share one row. */ +@media (min-width: 992px) { + .overview-page .ov-chart-row.is-three { grid-template-columns: repeat(3, minmax(0, 1fr)); } +} +/* Bottom panels keep their own height: no stretched, empty card bottoms. */ +.overview-page .ov-spark-bars.ov-has-axis { background: linear-gradient(color-mix(in srgb, var(--border-color) 70%, transparent), color-mix(in srgb, var(--border-color) 70%, transparent)) 0 calc(50% - .5px) / 100% 1px no-repeat; } +.overview-page .ov-yaxis { position: absolute; left: -28px; top: 0; bottom: 0; width: 22px; pointer-events: none; } +.overview-page .ov-yaxis > span { position: absolute; right: 0; font: 400 11px/12px var(--font-sans); color: var(--ink-muted); font-variant-numeric: tabular-nums; white-space: nowrap; } +@media (min-width: 992px) { + .overview-page .ov-chart-row.is-three .ov-chart-head { flex-direction: column; align-items: flex-start; gap: 6px; } + .overview-page .ov-chart-row.is-three .ov-chart-title { white-space: nowrap; } + .overview-page .ov-chart-row.is-three .ov-chart-legends { justify-content: flex-start; } +} +@media (max-width: 991px) { + .overview-page .ov-chart-head { flex-direction: column; align-items: flex-start; gap: 6px; } + .overview-page .ov-chart-title { white-space: nowrap; } + .overview-page .ov-chart-legends { justify-content: flex-start; } +} + +/* Anonymize step 1: with an empty URL field, Continue uses the disabled look of Save defaults; it turns teal on the first keystroke. */ + +/* Phone header controls: compact visuals, 44x44 hit areas (a transparent ::after), at least 8px between hit boxes. */ +@media (max-width: 767px) { + .navbar .nav-theme-m, .navbar .nav-signin-m, .navbar .navbar-toggler, + .viewer-bar .vb-icon, .viewer-bar .vb-signin { position: relative; overflow: visible !important; } + /* Visual gaps: 12px after a 36px icon (4px overhang + 8px), 8px after Sign in. */ + .navbar .nav-signin-m, .navbar .nav-theme-m + .nav-signin-m { margin-left: 12px !important; } + .navbar .navbar-toggler { margin-left: 8px !important; } + .navbar .nav-theme-m + .navbar-toggler, .navbar .nav-theme-m ~ .navbar-toggler:not(.nav-signin-m ~ *) { margin-left: 12px !important; } + .viewer-bar .vb-icon + .vb-icon, .viewer-bar .vb-icon + .vb-signin, .viewer-bar .vb-icon ~ .vb-signin { margin-left: 13px !important; } + /* The phone explorer Sign in keeps its GitHub mark: 16px, 6px gap, like the home header. */ +} + +/* Phone cards: Copy and ⋯ are one right-aligned group of 32px visual buttons 8px apart. + Each keeps a 44x44 hit area that extends outward (Copy to the left, ⋯ to the right), so the hit boxes stay 8px apart too. */ +@media (max-width: 767px) { + .dashboard-page .paper-table-dashboard .cell-actions > .dropdown > .btn-icon-dots { width: 32px !important; height: 32px !important; min-width: 32px !important; min-height: 32px !important; padding: 0 !important; display: inline-flex !important; align-items: center; justify-content: center; border-radius: 8px; position: relative; } +} +/* Phone card meta: one left edge. The icon column starts on the title / ID edge (62px); labels and recovery text stay at 84px. */ +@media (max-width: 767px) { + .paper-table-dashboard .dashboard-row-meta .status-line > .status-dot { position: relative; left: -4px; } + .paper-table-dashboard .dashboard-row-meta .cell-expires > .mobile-meta-icon { position: relative; left: -1px; } +} + +/* Instrument Serif's hyphen has 0.08em side bearings, wider than the letters' (0.01–0.02em): fit it tight in display headings. */ +.serif-hy { margin-left: -.055em; margin-right: -.035em; } + +/* Desktop expired rows: Status already says Expired, so the Expires cell is just the muted date. Phones keep "Expired Nov 3, 2026". */ +@media (min-width: 768px) { + .paper-table-dashboard .cell-expires .expires-past-prefix { display: inline !important; } +} + +/* Sign-in: the GitHub option is one bordered card (no detached badge; the checklist already says read-only). */ +.auth-options .auth-card { border: 1px solid var(--border-color); border-radius: 12px; padding: 28px; background: var(--paper-card, #fff); } +.auth-options .auth-card > :last-child { margin-bottom: 0; } +@media (max-width: 767px) { + .auth-options .auth-card { padding: 20px; } +} + +/* Home, phone: the open step's title and copy come right under the tabs, then its mock. */ +@media (max-width: 767px) { + .paper-features .paper-features-stage > .paper-feature-panel { order: 3 !important; margin-top: 24px !important; } +} + +/* Home "Try it", phone: drop the github.com URL from the source pane header so both pane headers are one line, same height. */ +@media (max-width: 767px) { + .pane-header:has(.pane-edit-hint) > .pane-url { display: none !important; } + .demo-panes .pane-header, .demo-panes .pane-after .pane-header { height: 40px !important; min-height: 0 !important; padding: 0 14px !important; flex-direction: row !important; align-items: center !important; } +} +/* Disabled icon-only row actions (dashboard): the same faint ink in both themes. */ + +/* ----- Dashboard ----- */ +.paper-table-dashboard .is-disabled, .dark-mode .paper-table-dashboard .is-disabled { color: var(--ink-faint) !important; opacity: .55 !important; } + +/* Review link: label, one row (field + Copy link + Open repository), a quiet reassurance line, then a short "change" block. */ +.repository-task .share-link-label { + display: block; + margin: 16px 0 6px; + font-size: 12px; + font-weight: 400; + color: var(--ink-muted); + line-height: 12px !important; + margin-top: -1px !important; + margin-bottom: 11px !important; +} +.repository-task .share-link-row { display: flex !important; margin-top: 0 !important; } +.repository-task .share-link-buttons { display: flex; flex: 0 0 auto; justify-content: flex-start; flex-wrap: wrap; gap: 8px !important; } +.repository-task .share-link-buttons > .btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: var(--control-h); white-space: nowrap; min-width: 0; padding: 0 14px; } +.repository-task .share-link-note { margin: 10px 0 0; font-size: 13px; line-height: 20px; color: var(--ink-muted); margin-top: 12px !important; } +.repository-task .share-link-note a { color: inherit; text-decoration: underline; text-underline-offset: 2px; text-decoration-color: var(--ink-faint); } +.repository-task .share-link-next { margin-top: 28px; padding-top: 20px; border-top: 1px solid var(--border-color); } +.repository-task .share-link-next > h2 { font: 600 14px/20px var(--font-sans); letter-spacing: 0; margin: 0 0 4px; color: var(--color); } +.repository-task .share-link-next-actions { display: flex; gap: 8px; margin-top: 8px !important; } +.repository-task .share-link-next-actions > span { color: var(--ink-faint); } +.repository-task .share-link-next-actions > a { font-weight: 500; } +@media (max-width: 767px) { + .repository-task .share-link-buttons>.btn { flex: 1 1 0; } +} + +/* Desktop dashboard actions: a labeled "Copy link" (quiet 32px outline), Open as a secondary icon, then the overflow. + Edit lives in the ⋯ menu only. The group is 164px and right-aligned on the same edge on every row. Phones are unchanged. */ +.paper-table-dashboard .copy-url .copy-url-label { display: none; } +@media (min-width: 768px) { + .dashboard-page .paper-table-dashboard .cell-actions>.copy-url { + display: inline-flex !important; + align-items: center; + gap: 6px; + width: 96px !important; + height: 32px !important; + min-height: 32px !important; + padding: 0 10px !important; + margin-right: 4px; + border: 1px solid var(--border-color) !important; + border-radius: 8px !important; + background: transparent !important; + font: 500 13px/1 var(--font-sans); + color: var(--color) !important; + white-space: nowrap; + } + .dashboard-page .paper-table-dashboard .cell-actions>.copy-url:not(.is-disabled):hover { + background: var(--hover-bg-color) !important; + border-color: var(--ink-faint) !important; + } + .dashboard-page .paper-table-dashboard .cell-actions > .row-open, .dashboard-page .paper-table-dashboard .cell-actions > .dropdown { width: 32px !important; height: 32px !important; flex: 0 0 32px; } +} + +/* Proof strip: no hairlines, just space; venues at body size in secondary ink, sentence case. */ + +/* ----- Landing and FAQ ----- */ +.paper-stats.is-empty, .dark-mode .paper-stats.is-empty { border-top: 0 !important; padding-top: 0 !important; margin-top: 48px !important; } +.paper-stats.is-empty .paper-stats-meta { border-bottom: 0 !important; } +.paper-stats-meta-right, .dark-mode .paper-stats-meta-right { font: 400 14px/20px var(--font-sans) !important; text-transform: none !important; letter-spacing: 0 !important; color: var(--ink-soft) !important; } +.paper-stats.is-empty + .paper-section-head { margin-top: 72px !important; } + +/* Phone home pacing: a purpose-built 230px hero example, compact checklist rows, 48–56px section gaps. */ +@media (max-width: 767px) { + .paper-hero { padding-top: 24px !important; } + .demo-terms label .dt-try { display: none; } + .paper-hero .hero-mock .hm-opt { display: none !important; } + .paper-hero .paper-reassure { display: flex !important; flex-direction: row !important; flex-wrap: wrap; column-gap: 16px !important; row-gap: 4px !important; margin-top: 14px !important; } + .paper-hero .paper-hero-shot { margin-top: 0 !important; } + .paper-stats.is-empty, .dark-mode .paper-stats.is-empty { margin-top: 28px !important; } + .paper-stats.is-empty + .paper-section-head { margin-top: 48px !important; } + .paper-section-head, .paper-qa, .paper-features, .paper-cta { margin-top: 56px !important; } + .paper-section-head + .paper-features { margin-top: 24px !important; } +} +.faq-section .faq-search > label { display: block; margin: 0 0 6px; font: 600 14px/20px var(--font-sans); color: var(--color); } +.faq-section .faq-search-field { position: relative; } +.faq-section .faq-search-field > .ui-icon { position: absolute; left: 14px; top: 50%; width: 16px; height: 16px; transform: translateY(-50%); color: var(--ink-muted); pointer-events: none; } +.faq-section .faq-search-field > input { width: 100%; height: 44px !important; padding: 0 14px 0 40px !important; font-size: 15px; border-radius: var(--radius-control, 8px); background: var(--paper-card, #fff); } +.faq-section .faq-search-status { min-height: 20px; margin: 6px 0 0; font-size: 13px; line-height: 20px; color: var(--ink-muted); } +.faq-section .faq-search-status:empty { display: none; } +.faq-section .faq-search-empty { padding: 24px; border: 1px dashed var(--border-color); border-radius: 12px; margin-bottom: 24px; } +.faq-section .faq-search-empty > strong { display: block; font-size: 15px; color: var(--color); overflow-wrap: anywhere; } +.faq-section .faq-search-empty > p { margin: 4px 0 14px; color: var(--ink-soft); font-size: 14px; } +.faq-section .faq-search-empty-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; } +.faq-section .faq-search-empty-actions .btn-link { + color: var(--color); + text-decoration: underline; + text-underline-offset: 3px; + border-color: transparent !important; + background: none !important; +} +.faq-section [hidden] { display: none !important; } +/* While searching, matching answers read as results: shown open. */ +.faq-section.faq-searching .faq-hit .panel-collapse { display: block !important; height: auto !important; } + +/* Explorer: the outline rail is 210px at ≥1400px so most entries fit on one line; the README keeps a ~640px measure. + (The 320px initial file-tree width at ≥1280px is set in template-state.js; resizing still works.) */ +@media (min-width: 1400px) { + .reading-layout { grid-template-columns: minmax(0, 640px) 210px !important; gap: 48px !important; } + .readme-toc { width: 210px; } +} + +/* Admin bottom row: equal-height cards, each card's last line pinned to one shared bottom line. */ + +/* ----- Admin ----- */ +.overview-page .ov-triple-row { align-items: stretch !important; } +.overview-page .ov-triple-row > .ov-panel-card { display: flex; flex-direction: column; } +.overview-page .ov-triple-row > .ov-panel-card > .ov-error-bars { flex: 1 1 auto; display: flex; flex-direction: column; } +.overview-page .ov-triple-row > .ov-panel-card > .ov-error-bars > .ov-ebar-note { margin-top: auto !important; margin-bottom: 0; } +.overview-page .ov-ehours-bars { + display: grid; + grid-template-columns: repeat(24, minmax(0, 1fr)); + gap: 2px; + height: 28px; + align-items: end; + box-shadow: none !important; +} +.overview-page .ov-ehours-bars>span { height: 100%; display: flex; align-items: flex-end; flex-direction: column; justify-content: flex-end; } +.overview-page .ov-ehours-x { display: flex; justify-content: space-between; margin-top: 4px; font: 400 11px/14px var(--font-sans); color: var(--ink-muted); } +.overview-page .ov-triple-row > .ov-panel-card > .ov-routes-table { flex: 1 1 auto; display: flex; flex-direction: column; } + +/* Phone cards: the conference icon uses the same 16px slot + 6px gap as the status dot and clock, so all meta text starts at x=84. */ +@media (max-width: 767px) { + .dashboard-page .paper-table-dashboard .anon-sub .conf-tag { gap: 0 !important; } +} + +/* Phone /anonymize: the Access switch controls what the picker lists, so it sits 8px above the picker card, + separated from the URL hint by 24px. */ +@media (max-width: 767px) { + .anonymize-landing-inner > .repo-access ~ .repo-picker, .anonymize-landing-inner:has(.repo-access) > .repo-picker { margin-top: 8px !important; } +} + +/* Home "Try it": both pane headers share one treatment (the same subtle tint and a 1px rule); the "N redacted" chip stays the differentiator. */ +body .demo-panes .pane > .pane-header { background: #F3EFE8 !important; border-bottom: 1px solid #E6E1D8 !important; } +body.dark-mode .demo-panes .pane > .pane-header { background: #221F1C !important; border-bottom: 1px solid #3A3631 !important; } + +/* Dashboard with a short active list (≤3 rows) and hidden removed links: one quiet footer line under the table. */ +/* Dashboard */ + +/* ----- Dashboard ----- */ +.dashboard-page .dropdown-menu .status-preset { font-size: 13px; } +.dashboard-page .dropdown-menu .status-preset.active { background: transparent; color: var(--color); font-weight: 600; } +@media (min-width: 768px) { + .dashboard-page .paper-table-dashboard .cell-actions > .copy-url:not(.is-disabled) { border-color: transparent !important; background: transparent !important; color: var(--ink-muted) !important; } + .dashboard-page .paper-table-dashboard .cell-actions > .copy-url.is-disabled { border-color: transparent !important; background: transparent !important; color: var(--ink-faint) !important; } +} +@media (max-width: 640px) { + .dashboard-page .dashboard-heading-actions { gap: 12px !important; justify-content: flex-start !important; } + .dashboard-page .dashboard-heading-actions > .dashboard-quota { flex: 1 1 auto !important; min-width: 0; } +} +/* Explorer: full file names wrap with a hanging indent at the name's first character */ + +/* ----- File viewer ----- */ +.files a:has(> .tree-name-wrap) { height: auto !important; min-height: 26px !important; align-items: flex-start !important; padding-top: 4px !important; padding-bottom: 4px !important; } +.files a:has(> .tree-name-wrap) > .tree-name-wrap { display: block !important; flex: 1 1 auto; min-width: 0; white-space: normal !important; overflow: visible !important; text-overflow: clip !important; overflow-wrap: anywhere; word-break: normal; line-height: 18px !important; } +.files a:has(> .tree-name-wrap) > :is(.tree-toggle, .tree-spacer, .tree-icon-file, .tree-icon-folder) { align-self: flex-start !important; margin-top: 2px !important; } +@media (max-width: 767px) { + .file-card-head .breadcrumb.paths > .breadcrumb-item:first-child, .file-card-head .breadcrumb.paths > .breadcrumb-root + .breadcrumb-item { padding-left: 0 !important; } +} +/* The first tree row sits on the same line as the first line of code */ +@media (min-width: 768px) { .explorer-page .leftCol-body { padding-top: 0 !important; } +} + +/* ----- Landing and FAQ ----- */ +.demo-terms label .dt-try { margin-left: 0 !important; } +.paper-proof-mobile { display: none; } +@media (min-width: 768px) { + .paper-stats.is-empty, .dark-mode .paper-stats.is-empty { margin-top: 24px !important; } + .paper-stats.is-empty + .paper-section-head { margin-top: 96px !important; } +} +@media (max-width: 767px) { + .paper-hero-shot { display: none !important; } + .paper-stats.is-empty { display: none !important; } + .paper-stats .paper-stats-meta-right { display: none !important; } + .paper-hero + .paper-stats + .paper-section-head { margin-top: 28px !important; row-gap: 12px !important; } + .paper-hero + .paper-stats + .paper-section-head h2 { margin-top: 6px !important; } + .paper-hero + .paper-stats + .paper-section-head > p { line-height: 22px !important; } + .paper-hero + .paper-stats + .paper-section-head + .demo { margin-top: 20px !important; } + .paper-proof-mobile { display: block; margin: 20px auto 0; font-size: 13px; line-height: 20px; color: var(--ink-muted); } +} +@media (max-width: 480px) { + .paper-cta .paper-cta-actions { flex-direction: column; align-items: stretch; } + .paper-cta .paper-cta-actions .btn-hero { width: 100%; justify-content: center; } + .paper-cta .paper-cta-actions .paper-link-arrow { align-self: flex-start; } +} +/* Review link: the URL gets its own readable row, the actions sit beneath it */ +.repository-task .share-link-url { display: block; padding: 10px 14px; border: 1px solid var(--border-color); border-radius: var(--radius-control); background: var(--paper-bg-alt); color: var(--color); font: 400 13.5px/21px var(--font-mono); font-variant-ligatures: none; font-feature-settings: "liga" 0, "calt" 0; letter-spacing: 0; white-space: normal; overflow-wrap: anywhere; word-break: normal; user-select: all; cursor: text; } +.dark-mode .repository-task .share-link-url { background: rgba(255, 255, 255, .04); } +.repo-picker-list { overflow-y: scroll; } +.repo-picker-list:has(> :nth-child(-n+7):last-child) { overflow-y: auto; } +/* Admin: every hour has a slot; zero hours draw a baseline tick */ +.overview-page .ov-ehours-legend { + display: flex; + align-items: center; + margin: 0 0 6px; + font: 400 12px/16px var(--font-sans); + color: var(--ink-soft); + gap: 10px !important; +} +.overview-page .ov-ehours-swatch { width: 8px; height: 8px; border-radius: 2px; background: color-mix(in srgb, var(--status-progress, #8a6116) 70%, transparent); } +/* Picker: the scroll box ends exactly on a row border (7 rows desktop, 6 on phones), a text cue says there is more */ +.repo-picker-more { display: none; } +@media (max-width: 767px) { + .repo-picker { --picker-row: 65px; --picker-rows: 6; } + .repo-picker-more { display: none; } +} +/* Dark checked controls fill with the accent like light mode. White on #7CC7BE is only 1.9:1, + so the tick uses the dark canvas color (10:1), the same pairing as the dark primary button. */ +.dark-mode :is(.paper-page, .anonymize-page) input[type="checkbox"]:is(:checked, :indeterminate) { background: var(--accent) !important; border-color: var(--accent) !important; } +/* Admin hourly errors: stacked 5xx over 4xx, in the summary bars' exact colors, with a matching two-swatch legend */ + +/* ----- Admin ----- */ +.overview-page .ov-ehours-key { display: inline-flex; align-items: center; gap: 5px; } +.overview-page .ov-ehours-swatch.is-error { background: #B42318; } +.overview-page .ov-ehours-swatch.is-warn { background: var(--status-progress); } +.dark-mode .overview-page .ov-ehours-swatch.is-error { background: #F08A82; } +/* Explorer file toolbar: Go to line, Wrap and Find form one segmented group that matches Raw | copy | download */ +.tb-view { display: contents; } +@media (min-width: 768px) { + .file-card-head .tb-view { display: inline-flex !important; align-items: stretch; order: 1; margin-left: 8px; border: 1px solid var(--border-color); border-radius: var(--radius-control); overflow: hidden; } + .file-card-head .tb-view > .btn { width: 34px !important; height: 30px !important; min-height: 30px !important; padding: 0 !important; margin: 0 !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; background: var(--paper-card) !important; color: var(--ink-soft) !important; display: inline-flex; align-items: center; justify-content: center; } + .dark-mode .file-card-head .tb-view > .btn { background: transparent !important; } + .file-card-head .tb-view > .btn + .btn { border-left: 1px solid var(--border-color) !important; } + .file-card-head .tb-view > .btn:hover { background: var(--hover-bg-color) !important; color: var(--color) !important; } + .file-card-head .tb-view > .btn .ui-icon { width: 15px; height: 15px; } + .file-card-head .tb-view > .btn:is(.is-on, [aria-pressed="true"]), .file-card:has(.ace_search:not([style*="none"])) .file-card-head .tb-view > .btn-find { background: var(--accent-soft) !important; color: var(--accent) !important; box-shadow: none !important; } + .dark-mode .file-card-head .tb-view > .btn:is(.is-on, [aria-pressed="true"]), .dark-mode .file-card:has(.ace_search:not([style*="none"])) .file-card-head .tb-view > .btn-find { background: rgba(124, 199, 190, .14) !important; color: #A8DDD6 !important; box-shadow: none !important; } + .file-card-head .tb-file { margin-left: 8px !important; } + /* Symbols keeps its label, in the same 32px bordered style as the groups */ + .file-card-head .btn.btn-symbols { height: 32px !important; min-height: 32px !important; padding: 0 12px !important; border: 1px solid var(--border-color) !important; border-radius: var(--radius-control) !important; background: var(--paper-card) !important; box-shadow: none !important; color: var(--color) !important; font-weight: 500; } + .dark-mode .file-card-head .btn.btn-symbols { background: transparent !important; } + .file-card-head .btn.btn-symbols:hover { background: var(--hover-bg-color) !important; } + .file-card-head .btn.btn-symbols.is-on { background: var(--accent-soft) !important; color: var(--accent) !important; } + .file-card-head .btn.btn-symbols .ui-icon { color: var(--ink-soft); } +} +/* Status: the "Review link" text top sits on the summary card's top border (line box trimmed to the glyphs) */ +/* Mobile home: the proof line belongs to the hero, 16px under the trust chips */ +@media (max-width: 767px) { .paper-hero .paper-proof-mobile { display: block; margin: 16px 0 0 !important; text-align: left; } +} +/* Desktop expired rows read "Expired Nov 3" in muted ink, not a bare future-looking date */ +@media (min-width: 768px) { + .paper-table-dashboard .cell-expires .expires-past { color: var(--ink-muted) !important; } +} +/* Home mock: both labels on one line, both controls on one line, the date field as tall as a chip (30px) */ + +/* ----- File viewer ----- */ +.fm-row { align-items: start !important; } +.fm-row .fm-toggles > span { box-sizing: border-box; height: 30px !important; display: inline-flex; align-items: center; } +.fm-row .fm-input.fm-input-sm { box-sizing: border-box; height: 30px !important; min-height: 30px !important; display: flex; align-items: center; padding-top: 0 !important; padding-bottom: 0 !important; } +/* Phones: the date field is full width like every other field */ +@media (max-width: 480px) { .fm-row .fm-input.fm-input-sm { width: 100% !important; max-width: none !important; } +} +/* Sparse dashboard: the count moves into the footer sentence; an empty meta row takes no space */ +.dashboard-page .dashboard-meta:not(:has(.dashboard-count, .dashboard-view-tabs, .dashboard-active-filters > *)) { display: none !important; } +.dashboard-page:has(.dashboard-short-foot) .paper-table-dashboard { margin-top: 16px !important; } +@media (max-width: 767px) { + .repo-picker-more-sep { display: none; } +} +@media (min-width: 768px) and (max-width: 1180px) { .file-card-head .btn.btn-symbols { width: 32px !important; padding: 0 !important; justify-content: center; } +} +.explorer-content .file-card.file-card-media { display: flex; flex-direction: column; min-height: 100%; } +.explorer-content .file-card-media .file-card-head { position: sticky; top: 0; z-index: 3; } +.file-card-media .media-stage { + flex: 1 1 auto; + min-height: 0; + display: flex; + justify-content: center; + background: var(--main-bg-color); + align-items: flex-start !important; + padding: 32px !important; +} +.file-card-media .media-stage .image-content { + display: block; + width: auto; + height: auto; + padding: 0; + object-fit: contain; + background-color: #fff; + border-radius: 4px; + box-shadow: 0 0 0 1px var(--border-color), 0 2px 10px rgba(40, 32, 24, .07); + max-width: 100% !important; + max-height: none !important; +} +/* Transparent images (logos, diagrams) sit on a checkerboard so their edges stay visible. */ +.file-card-media .media-stage .image-content[src*=".png"], .file-card-media .media-stage .image-content[src*=".svg"], .file-card-media .media-stage .image-content[src*=".webp"], .file-card-media .media-stage .image-content[src*=".gif"] { + background: #fff conic-gradient(#f1eee8 25%, #fff 0 50%, #f1eee8 0 75%, #fff 0) 0 0 / 16px 16px; +} +.file-card-media .media-stage .video-content { + display: block; + background: #000; + border-radius: var(--radius-control); + box-shadow: 0 0 0 1px var(--border-color), 0 2px 10px rgba(40, 32, 24, .08); + width: auto !important; + max-width: min(100%, 960px) !important; + max-height: none !important; + height: auto !important; +} +.file-card-media .pdf-viewer { flex: 1 1 auto; background: var(--main-bg-color); } +.file-card-media .pdf-toolbar { position: sticky; top: 46px; z-index: 2; min-height: 40px; padding: 4px 12px; background: var(--main-bg-color); border-bottom: 1px solid var(--border-color); } +.file-card-media .pdf-toolbar-btn { min-width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--radius-control); color: var(--ink-soft); } +.file-card-media .pdf-toolbar-btn:hover:not(:disabled) { background: var(--hover-bg-color); color: var(--color); } +.file-card-media .pdf-toolbar-page { height: 28px; border-radius: var(--radius-control); border-color: var(--border-color); background: var(--paper-card); font-variant-numeric: tabular-nums; } +.file-card-media .pdf-toolbar-count { color: var(--ink-muted); opacity: 1; } +.file-card-media .pdf-pages { padding: 24px 16px; } +.file-card-media .pdf-viewer-page { margin-bottom: 16px; } +/* States inside the card: one compact, centered block instead of a 50px display headline. */ +.file-card-media .file-state { + flex: 1 1 auto; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + gap: 0; + padding: 64px 24px 96px; + background: transparent; +} +.file-state-icon { width: 28px !important; height: 28px !important; color: var(--ink-faint); margin-bottom: 14px; } +.file-card-media.view-error .file-state-icon { color: var(--ink-muted); } +.file-state-title { margin: 0; font: 600 18px/1.35 var(--font-sans) !important; letter-spacing: -.01em; color: var(--color); } +.file-state-msg { max-width: 420px; margin: 6px 0 0; font-size: 14px; line-height: 1.55; color: var(--ink-soft); } +.file-state-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 20px; } +.file-state-actions .btn { height: 36px; min-height: 36px; display: inline-flex; align-items: center; gap: 6px; padding: 0 14px; font-size: 14px; } +.file-state-actions .btn .ui-icon { width: 16px; height: 16px; } +/* Notebook: README-like reading column, prompts in a quiet gutter, framed code, no dotted rules. */ +.file-card-media .notebook-body { flex: 1 1 auto; background: transparent; } +.explorer-content notebook.markdown-body { + display: block; + max-width: 1040px; + margin: 0; + padding: 28px 40px 72px 104px !important; + background: transparent !important; + font-family: var(--font-sans); + font-size: 15px; + line-height: 1.6; + color: var(--color); +} +.explorer-content notebook .nb-input, .explorer-content notebook .nb-output { position: relative; } +.explorer-content notebook .nb-input:before, .explorer-content notebook .nb-output:before { + left: -96px; + width: 84px; + top: 11px; + font: 500 12px/20px var(--font-mono); + color: var(--ink-faint); +} +.explorer-content notebook .nb-output:before { top: 4px; color: var(--accent); opacity: .75; } +.explorer-content notebook .nb-output { margin-top: 8px; border: 0 !important; width: auto; overflow: visible !important; } +.explorer-content notebook .nb-stdout, .explorer-content notebook .nb-stderr { margin: 0; padding: 4px 0 4px 15px; font: 13px/20px var(--font-mono); background: none; color: var(--ink-soft); } +.explorer-content notebook .nb-stderr { color: var(--status-error); } +.explorer-content notebook .nb-output tr:last-child > * { border-bottom: 0 !important; } +@media (max-width: 767px) { + .file-card-media .media-stage { padding: 16px !important; } + .file-card-media .media-stage .image-content, .file-card-media .media-stage .video-content { + max-height: none !important; + } + .explorer-content notebook.markdown-body { padding: 20px 16px 72px !important; font-size: 15px; } + /* Phones: the prompt sits above its cell instead of in a gutter. */ + .explorer-content notebook .nb-input:before, .explorer-content notebook .nb-output:before { position: static; display: block; width: auto; text-align: left; margin-bottom: 4px; } + .explorer-content notebook .nb-stdout { padding-left: 0; } + .file-card-media .pdf-toolbar { top: 0; position: relative; } + .file-card-media .pdf-pages { padding: 12px 8px; } +} +/* Empty open folder in the tree. */ +.files li.tree-empty { padding: 3px 0 5px 42px; font-size: 12.5px; line-height: 18px; color: var(--ink-muted); list-style: none; } +.redact-chip .redact-src { display: none !important; } +.explorer-content notebook .nb-stdout { background: none !important; border: 0 !important; } + +/* ----- Anonymize workspace ----- */ +.anonymize-preview-col .pr-title { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 10px; font: 600 20px/1.3 var(--font-sans); letter-spacing: -.01em; margin: 0 0 4px; } +.anonymize-preview-col .pr-title .badge { + display: inline-flex; + align-items: center; + height: 22px; + padding: 0 8px; + border-radius: 999px; + font: 600 12px/1 var(--font-sans); + text-transform: none; + letter-spacing: 0; + background: var(--hover-bg-color) !important; + color: var(--ink-soft) !important; + border: 0; +} +.anonymize-preview-col .anonymize-preview-body > .d-flex + small, .anonymize-preview-col .anonymize-preview-body > small { display: block; color: var(--ink-muted); font-size: 13px; } +.anonymize-preview-col .anonymize-preview-body > .d-flex > small { color: var(--ink-muted); font-size: 13px; } +.anonymize-preview-col .pr-body { margin: 16px 0 24px; padding: 14px 16px; background: var(--main-bg-color); border: 1px solid var(--border-color); border-radius: var(--radius-control); font-size: 14px; } +.anonymize-preview-col .pr-body > :last-child, .anonymize-preview-col .pr-body .markdown-body > :last-child { margin-bottom: 0; } +/* "Use existing configuration" / "Create a separate one": one row, one height. */ +.anonymize-page .repo-access-details .repo-access-controls { gap: 8px; } +.anonymize-page .repo-access-details .repo-access-controls .btn { height: 36px; min-height: 36px; padding: 0 14px !important; font-size: 13px !important; font-weight: 500; display: inline-flex; align-items: center; border-radius: var(--radius-button, var(--radius-control)); } +@media (max-width: 767px) { + .anonymize-page .repo-access-details .repo-access-controls { display: grid; grid-template-columns: 1fr 1fr; } + .anonymize-page .repo-access-details .repo-access-controls .btn { height: 44px; min-height: 44px; justify-content: center; padding: 0 8px !important; } +} +/* Repair / Manage access: two buttons side by side need a gap, same height as the other workspace buttons. */ +.anonymize-page .repo-access-details > .btn { height: 36px; min-height: 36px; padding: 0 14px !important; font-size: 13px !important; display: inline-flex; align-items: center; vertical-align: middle; } +.anonymize-page .repo-access-details > .btn + .btn { margin-left: 8px; } +/* Phones: the preview jump and the submit bar sit inside the 16px page inset, not edge to edge. */ +@media (max-width: 767px) { + .anonymize-workspace .mobile-preview-jump { + display: flex; + justify-content: center; + height: 44px; + width: calc(100% - 40px) !important; + margin: 24px 20px 0 !important; + margin-top: 16px !important; + } + .anonymize-workspace .anonymize-form-col .anonymize-submit-bar { + padding-left: 20px !important; + padding-right: 20px !important; + } +} +.conference-page .paper-crumbs + .d-flex { align-items: flex-start !important; } +.conference-page .paper-crumbs + .d-flex .btn, .conference-page .paper-crumbs + .d-flex .status-pill { height: 36px; min-height: 36px; display: inline-flex; align-items: center; } +/* Tables of repositories (conference page, admin lists): error rows mark the edge without shifting content; counts in sans tabular figures. */ +.paper-table .paper-table-row.repo-error { padding-left: 16px !important; } +/* Same inset as the other rows: the marker is a shadow, not a border */ +.paper-table .cell-views, .paper-table .cell-views span { font-family: var(--font-sans) !important; font-variant-numeric: tabular-nums; letter-spacing: 0; } +/* Desktop rows: the eye icon is a phone-only meta cue; the column header already says Views. */ +@media (min-width: 768px) { .conference-page .paper-table .cell-views .mobile-meta-icon, .admin-page .paper-table .cell-views .mobile-meta-icon { display: none !important; } +} +.admin-page .paper-table-row .status-sub { display: -webkit-box !important; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; white-space: normal; } +/* Admin users: meta items wrap as whole items; the separator belongs to the item, never starts a line alone. */ +.admin-page .anon-sub.meta-dots { + display: flex; + flex-wrap: wrap; + align-items: baseline; + gap: 2px 0; + min-width: 0; + white-space: normal !important; + column-gap: 14px !important; + row-gap: 2px !important; +} +.admin-page .anon-sub.meta-dots > * { white-space: nowrap; } + +/* ----- Admin ----- */ +.overview-page .ov-cache .ov-metrics-scroll + .ov-performance-note, .overview-page .ov-cache .ov-cache-rates { margin-top: 16px; } +.overview-page .ov-cache .ov-cache-rates { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 16px 0; } +.overview-page .ov-cache .ov-metrics-table .ov-muted { color: var(--ink-faint); } +.overview-page .ov-cache .ov-cache-rates + .ov-performance-note { margin-bottom: 16px; } +/* Same gap between the view switcher and the panel on all three overview views. */ +.overview-page .ov-views ~ .ov-panel-card { margin-top: 0 !important; } +/* The page grid already gives 16px */ +/* The legend no longer runs under the absolutely placed 1h/6h/24h/7d switch. */ +.q-throughput .q-section-label { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 16px; padding-right: 176px; min-height: 30px; } +.q-throughput .q-section-label .q-section-right { margin-left: auto; float: none; position: static !important; white-space: nowrap; } +/* Job states read like every other status in the app: a colored dot and a plain label. */ +.q-state-badge { display: inline-flex !important; align-items: center; gap: 6px; padding: 0 !important; background: none !important; border: 0 !important; color: var(--color) !important; font: 500 13px/20px var(--font-sans) !important; } +.q-state-badge::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--status-inactive, var(--ink-faint)); flex: none; } +/* Job id: the full id, ellipsized with a tooltip, vertically centered like the rest of the row. */ +.q-cell-id { display: table-cell !important; white-space: nowrap; vertical-align: middle !important; } +.q-cell-id .q-job-link { display: inline-block; max-width: 132px; overflow: hidden; text-overflow: ellipsis; vertical-align: middle; font-size: 12.5px; } +.q-cell-id .q-chevron { vertical-align: middle; } +.q-cell-num { font-family: var(--font-sans) !important; font-variant-numeric: tabular-nums; } +.errors-row-main .msg-url { white-space: nowrap !important; overflow: hidden; text-overflow: ellipsis; overflow-wrap: normal !important; word-break: normal !important; max-width: 100%; } +/* Phones: framed media files keep their type and size under the name (code files hide them, media has no other place for them). */ + +/* ----- File viewer ----- */ +@media (max-width: 767px) { + .file-card-media .file-card-head .mobile-sub > span { display: inline !important; } +} +body:not(.dark-mode) .file-state-actions .btn-primary { background: var(--accent) !important; border-color: var(--accent) !important; color: #fff !important; } +.file-card-media .media-stage.is-audio { align-items: flex-start !important; } +@media (max-width: 767px) { + /* One phone file header for every type: name, a type · size line, and the actions in ⋯. */ + .file-card-head .file-card-path > .mobile-sub > span { display: inline !important; } + .file-card-head .file-card-path > .mobile-sub { overflow: hidden; } +} +@media (max-width: 767px) { + .explorer-content .file-card.is-code .ace_gutter { width: 38px !important; } + .explorer-content .file-card.is-code .ace_scroller { left: 38px !important; } + .explorer-content .file-card.is-code .ace_gutter-layer { width: 38px !important; } +} +/* Touch screens have no keyboard shortcut to show. */ +@media (hover: none), (max-width: 767px) { .tree-search-kbd { display: none !important; } +} +body:not(.dark-mode) .token.selector, body:not(.dark-mode) .token.attr-name, body:not(.dark-mode) .token.string, body:not(.dark-mode) .token.char, body:not(.dark-mode) .token.builtin, body:not(.dark-mode) .token.inserted { color: #11704F; } +body:not(.dark-mode) .token.atrule, body:not(.dark-mode) .token.attr-value, body:not(.dark-mode) .token.keyword { color: #B02F22; } +body:not(.dark-mode) .token.function, body:not(.dark-mode) .token.class-name { color: #5B3DC2; } +body:not(.dark-mode) .token.property, body:not(.dark-mode) .token.tag, body:not(.dark-mode) .token.boolean, body:not(.dark-mode) .token.number, body:not(.dark-mode) .token.constant, body:not(.dark-mode) .token.symbol, body:not(.dark-mode) .token.deleted { color: #8A4B0F; } +body:not(.dark-mode) .token.regex, body:not(.dark-mode) .token.important, body:not(.dark-mode) .token.variable { color: #9A5B00; } +body:not(.dark-mode) .token.comment, body:not(.dark-mode) .token.prolog, body:not(.dark-mode) .token.doctype, body:not(.dark-mode) .token.cdata { color: #6F6A61; } +body:not(.dark-mode) .token.punctuation, body:not(.dark-mode) .token.operator, body:not(.dark-mode) .token.entity, body:not(.dark-mode) .token.url { color: #5C574F; background: none; } + +/* ----- Anonymize workspace ----- */ +.anonymize-workspace .anonymize-topbar { padding: 32px 0 20px !important; background: transparent !important; } +.anonymize-workspace .anonymize-topbar .paper-crumbs { display: block !important; margin: 0 0 8px !important; font-size: 13px; line-height: 18px; } +.anonymize-workspace .anonymize-topbar h1, .anonymize-workspace .anonymize-topbar .paper-page-title { font: 600 28px/34px var(--font-sans) !important; margin: 0 !important; letter-spacing: -.01em; } +.anonymize-workspace .anonymize-topbar-head { align-items: center !important; } +.anonymize-workspace .anonymize-topbar-lede { margin: 6px 0 0 !important; max-width: 640px; } +.anonymize-workspace .anonymize-topbar-inner > .flow-trail { margin: 16px 0 0 !important; } +@media (max-width: 767px) { + .anonymize-workspace .anonymize-topbar { padding: 24px 20px 16px !important; } + .anonymize-workspace .anonymize-topbar h1, .anonymize-workspace .anonymize-topbar .paper-page-title { font-size: 26px !important; line-height: 32px !important; } +} +.user-settings .settings-checks { grid-template-columns: 1fr !important; gap: 0 !important; padding: 0 !important; max-width: 420px; } +.user-settings .settings-check { min-height: 38px; font-size: 14px !important; border-bottom: 1px solid var(--border-soft, var(--border-color)); } + +/* ----- Shared ----- */ +input[type="radio"] { + -webkit-appearance: none; + appearance: none; + box-sizing: border-box; + width: 16px; + height: 16px; + flex: none; + display: inline-grid; + place-content: center; + vertical-align: -3px; + border-radius: 50%; + border: 1.5px solid #8F887D; + background: var(--paper-card, #fff); + cursor: pointer; + transition: border-color .12s; +} +input[type="radio"]:checked { border-color: var(--accent); } +input[type="radio"]:checked::before { transform: scale(1); } +input[type="radio"]:hover:not(:disabled) { border-color: var(--accent); } +input[type="radio"]:disabled { opacity: .5; cursor: default; } +.dark-mode input[type="radio"] { background: transparent; border-color: #7A7268; } +.dark-mode input[type="radio"]:checked { border-color: var(--accent); } +input[type="date"].form-control { font-family: var(--font-sans) !important; font-size: 14px; font-variant-numeric: tabular-nums; color: var(--color); position: relative; } + +/* ----- Anonymize workspace ----- */ +@media (max-width: 480px) { + .anonymize-page .repo-access-details .repo-access-controls { grid-template-columns: 1fr !important; } +} +.anonymize-page .source-summary { display: flex; align-items: center; gap: 6px; margin: 6px 0 0; font-size: 12.5px; line-height: 18px; color: var(--ink-soft); font-variant-numeric: tabular-nums; min-width: 0; overflow-wrap: anywhere; } +.anonymize-page .source-summary .ui-icon { width: 14px; height: 14px; color: var(--status-ready, var(--accent)); flex: none; } +.anonymize-page .repair-disclosure { margin: 10px 0 18px; } +.anonymize-page .repair-disclosure > summary { display: inline-flex; align-items: center; gap: 6px; list-style: none; cursor: pointer; font-size: 13px; color: var(--ink-soft); } +.anonymize-page .repair-disclosure > summary::-webkit-details-marker { display: none; } +.anonymize-page .repair-disclosure > summary::before { content: ""; width: 6px; height: 6px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(-45deg); margin-right: 2px; transition: transform .12s; } +.anonymize-page .repair-disclosure[open] > summary::before { transform: rotate(45deg); } +.anonymize-page .repair-disclosure > summary:hover { color: var(--color); } +.anonymize-page .repair-disclosure .repair-step { margin-top: 12px; padding: 12px 14px; border: 1px solid var(--border-color); border-radius: var(--radius-control); } +.anonymize-page .repair-disclosure .repair-step p { margin: 0 0 10px; font-size: 13px; line-height: 1.5; color: var(--ink-soft); } +.anonymize-page .repair-disclosure .repair-step .btn { height: 34px; min-height: 34px; padding: 0 12px !important; font-size: 13px !important; margin: 0 8px 0 0; display: inline-flex; align-items: center; } + +/* ----- Admin ----- */ +.errors-page .errors-row-main > *, .errors-page .errors-list-head > * { min-width: 0; } +.errors-page .col-msg { min-width: 0; overflow: hidden; } +.errors-page .col-msg .msg-url { display: block; max-width: 100%; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis; } +.errors-page .col-mod .pill-module { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: top; } +/* Severity groups get a header row, so the order (errors, warnings, info; newest first within each) is explicit. */ +.errors-page .errors-group-head { + display: flex; + align-items: center; + gap: 8px; + font: 600 12.5px/18px var(--font-sans); + color: var(--color); + background: var(--paper-bg-alt); + border-bottom: 1px solid var(--border-soft); + padding: 8px 20px !important; + min-height: 0 !important; +} +.errors-page .errors-group-count { + color: var(--ink-muted); + font-weight: 500; + font-variant-numeric: tabular-nums; + display: inline-block; + min-width: 18px; + padding: 0 6px; + border-radius: 999px; + background: var(--paper-bg-alt); + text-align: center; + font-size: 11.5px; + line-height: 18px; +} +.errors-page .errors-group-note { margin-left: auto; font-weight: 400; color: var(--ink-muted); } + +/* ----- Anonymize workspace ----- */ +.anonymize-fields .form-check { padding-left: 28px !important; } +.anonymize-fields .form-check > .form-check-input { margin-left: -28px !important; } +.dark-mode .anonymize-page .preserve-row { border-top-color: var(--border-color) !important; } +@media (max-width: 767px) { + .anonymize-workspace .anonymize-fields .paper-settings-section { padding-left: 20px !important; padding-right: 20px !important; } +} + +/* ----- Dashboard ----- */ +.status-dot { background: var(--st-off); } +.status-dot:is(.st-ready, .st-active, .st-completed, .status-ready, .status-active, .status-completed) { background: var(--st-ok) !important; } +.status-dot:is(.st-preparing, .st-download, .st-downloading, .st-queued, .st-waiting, .st-delayed, .st-expiring, .st-removing, .status-progress, .status-preparing, .status-download, .status-expiring) { background: var(--st-progress) !important; } +.status-dot:is(.st-error, .st-failed, .st-banned, .status-error, .status-banned) { background: var(--st-bad) !important; } +.status-dot:is(.st-expired, .st-removed, .st-inactive, .st-unknown, .status-expired, .status-removed, .status-inactive) { background: var(--st-off) !important; } +/* Filter chip dots use the same tokens. */ +/* Errors: an informational response (403, 404) is neutral, not "good". */ + +/* ----- Admin ----- */ +.errors-page .status-pill.status-info { background: var(--paper-bg-alt) !important; color: var(--ink-soft) !important; border-color: var(--border-color) !important; } +.user-detail-card .user-header .user-header-status { display: flex; align-items: center; gap: 10px; min-height: 28px; font-size: 14px; } +.user-detail-card .user-header .user-actions { margin-top: 8px !important; display: flex; flex-wrap: wrap; gap: 8px; } +.dark-mode .overview-page .ov-svc { border: 1px solid var(--border-color) !important; } +.q-card .q-card-failed { font-weight: 500; color: var(--st-bad); } +.q-throughput .q-chart-wrap { flex: 1 1 auto; min-height: 220px; position: relative; } +.overview-page > .page-head { margin-bottom: 10px !important; } + +/* ----- Conferences ----- */ +.conference-page .conf-title-row { display: flex; flex-wrap: wrap; gap: 6px 14px; min-height: 44px; align-items: center !important; } +.conference-page .conf-status { display: inline-flex; align-items: center; gap: 6px; font: 500 13px/20px var(--font-sans); color: var(--ink-soft); } +.conference-page .conf-status .status-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; } +.conference-page .cell-status .project-attention-action { display: inline-block; margin-top: 2px; } +.conference-page .paper-section-eyebrow { border-bottom: 0 !important; padding-bottom: 0 !important; margin-bottom: 12px !important; } +.conference-page .dashboard-filter-row { border-bottom: 0 !important; padding-bottom: 0 !important; } +.conference-page .paper-meta-rule { border-top: 0 !important; padding-top: 4px !important; margin-top: 20px !important; } +.ov-metric-bad, .overview-page .ov-metric-bad { color: var(--st-bad) !important; font-weight: 600; } +.markdown-body :is(p, li, td, th, blockquote, dd) mark.redact-chip, .dark-mode .markdown-body :is(p, li, td, th, blockquote, dd) mark.redact-chip { min-width: 2em !important; width: auto !important; padding: 0 .45em !important; text-align: center !important; } + +/* ----- Anonymize workspace ----- */ +.anonymize-page .anonymize-preview-col.reviewer-preview { display: flex; flex-direction: column; min-height: 0; overflow: hidden !important; padding: 0 !important; background: var(--rp-stage) !important; border-left: 1px solid var(--rp-line); } +.reviewer-preview .rp-caption { flex: none; display: flex; align-items: center; gap: 10px; min-height: 52px; padding: 12px 24px 10px 20px; font-size: 13px; color: var(--ink-muted); } +.reviewer-preview .rp-title { font-weight: 600; color: var(--color); font-size: 14px; } +.reviewer-preview .rp-count { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--ink-soft, var(--ink-muted)); font-variant-numeric: tabular-nums; } +.reviewer-preview .rp-count .redact-slot { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 18px; padding: 0 5px; border-radius: 4px; background: var(--slot-bg, #E3DED4); } +.reviewer-preview .rp-count .redact-slot i { font: 700 11px/1 var(--font-sans) !important; color: var(--slot-num, var(--color)) !important; } +.reviewer-preview .rp-count-none { color: var(--ink-muted); } +.reviewer-preview .rp-spacer { flex: 1; } +.reviewer-preview .rp-open { background: none; border: 0; padding: 4px 0; font: 500 13px/1.4 var(--font-sans); color: var(--accent) !important; text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; white-space: nowrap; cursor: pointer; } +.reviewer-preview .rp-window { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; margin-left: 20px; background: var(--rp-window); border: 1px solid var(--rp-line); border-right: 0; border-bottom: 0; border-radius: 10px 0 0 0; box-shadow: 0 10px 30px -12px rgba(40,32,24,.22), 0 2px 6px rgba(40,32,24,.06); overflow: hidden; } +.reviewer-preview .rp-chrome { flex: none; display: flex; align-items: center; gap: 6px; height: 34px; padding: 0 12px; background: var(--rp-chrome); border-bottom: 1px solid var(--rp-line); } +.reviewer-preview .rp-chrome i { width: 9px; height: 9px; border-radius: 50%; background: var(--rp-line); flex: none; } +.reviewer-preview .rp-url { margin-left: 10px; flex: 0 1 460px; min-width: 0; height: 22px; display: flex; align-items: center; padding: 0 10px; border-radius: 6px; background: var(--rp-window); border: 1px solid var(--rp-line); font: 12px/1 var(--font-sans); color: var(--ink-soft, var(--ink-muted)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; line-height: 20px; } +.reviewer-preview .rp-bar { flex: none; display: flex; align-items: center; gap: 12px; height: 38px; padding: 0 14px; border-bottom: 1px solid var(--rp-line); background: var(--rp-chrome); } +.reviewer-preview .rp-bar .vb-logo { font: 400 15px/1 var(--font-serif, 'Instrument Serif', Georgia, serif); color: var(--color); white-space: nowrap; } +.reviewer-preview .rp-bar-id { padding-left: 12px; border-left: 1px solid var(--rp-line); font: 500 12px/1 var(--font-mono, ui-monospace, monospace); color: var(--color); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.reviewer-preview .rp-bar-kind { margin-left: auto; font-size: 12px; color: var(--ink-muted); } +.reviewer-preview .rp-body { flex: 1 1 auto; min-height: 0; display: grid; grid-template-columns: minmax(0,1fr); } +.reviewer-preview .rp-body.has-tree { grid-template-columns: 188px minmax(0,1fr); } +.reviewer-preview .rp-tree { + min-height: 0; + overflow: hidden; + display: flex; + flex-direction: column; + gap: 2px; + padding: 10px 8px; + background: var(--rp-tree); + align-self: start; + padding-bottom: 56px !important; + border-right: 0 !important; + -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 48px), transparent); + mask-image: linear-gradient(to bottom, #000 calc(100% - 48px), transparent); + box-shadow: inset -1px 0 0 var(--rp-line); +} +.reviewer-preview .rp-tree-row { display: flex; align-items: center; gap: 7px; height: 26px; padding: 0 8px; border-radius: 4px; font-size: 13px; color: var(--color); white-space: nowrap; min-width: 0; } +.reviewer-preview .rp-tree-icon { width: 14px; height: 14px; flex: none; fill: none; stroke: var(--ink-muted); stroke-width: 1.2; } +.reviewer-preview .rp-tree-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; } +.reviewer-preview .rp-tree-row.is-active { background: var(--hover-bg-color, #EDEAE4); box-shadow: inset 2px 0 0 var(--accent); font-weight: 500; } +.reviewer-preview .rp-doc { min-height: 0; min-width: 0; overflow: auto; scrollbar-width: thin; position: relative; } +.reviewer-preview .rp-file-head { position: sticky; top: 0; z-index: 1; display: flex; align-items: baseline; gap: 10px; padding: 10px 24px; background: var(--rp-window); border-bottom: 1px solid var(--rp-line); font-size: 13px; } +.reviewer-preview .rp-file-name { font-weight: 600; color: var(--color); } +.reviewer-preview .rp-file-meta { color: var(--ink-muted); } +.anonymize-page .reviewer-preview .anonymize-preview-body { background: transparent !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; min-height: 0 !important; padding: 24px 32px 40px !important; max-width: 860px; } +/* States inside the window */ +.reviewer-preview .rp-state { padding: 28px 32px; max-width: 560px; } +.reviewer-preview .rp-state strong { display: block; font-size: 15px; font-weight: 600; color: var(--color); margin: 0 0 6px; } +.reviewer-preview .rp-state p { font-size: 13.5px; line-height: 1.55; color: var(--ink-soft, var(--ink-muted)); margin: 0 0 14px; } +.reviewer-preview .rp-state-actions { display: flex; flex-wrap: wrap; gap: 8px; } +.reviewer-preview .rp-state-actions .btn { min-height: 34px; padding: 6px 14px; font-size: 13px; border-radius: 6px; } +.reviewer-preview .rp-error { margin: 24px 32px; padding: 18px 20px; border: 1px solid var(--rp-line); border-left: 3px solid var(--st-bad, #B42318); border-radius: 8px; background: var(--rp-window); } +.reviewer-preview .rp-empty { margin: 24px 32px; padding: 18px 20px; border: 1px dashed var(--rp-line); border-radius: 8px; } +.reviewer-preview .rp-loading { display: flex; flex-direction: column; gap: 10px; max-width: 640px; } +.reviewer-preview .rp-state-text { font-size: 13px; color: var(--ink-muted); margin-bottom: 8px; } +.reviewer-preview .rp-skel { display: block; height: 10px; border-radius: 4px; background: var(--rp-skel); } +.reviewer-preview .rp-skel-title { width: 42%; height: 20px; margin-bottom: 8px; } +.reviewer-preview .rp-skel-block { width: 100%; height: 96px; margin: 8px 0; border-radius: 6px; } +.reviewer-preview .rp-skel-row .rp-skel { height: 9px; } +@keyframes rp-pulse { 50% { opacity: .55; } +} +/* Desktop: the settings column stays on the 1048px grid; the stage escapes it to the window's right edge. */ +@media (min-width: 1200px) { + .anonymize-page .anonymize-workspace .anonymize-split { max-width: none !important; margin: 0 !important; grid-template-columns: calc((100% - 1048px) / 2) 440px minmax(0,1fr); } + .reviewer-preview .rp-caption { padding-left: 24px; } + .reviewer-preview .rp-window { margin-left: 24px; } +} +@media (min-width: 768px) and (max-width: 1199px) { .anonymize-page .anonymize-preview-col.reviewer-preview { padding: 0 !important; } +} +/* Phones: the Preview tab shows the same window, full width, with no bleed. */ +@media (max-width: 767px) { + .anonymize-page .anonymize-preview-col.reviewer-preview { border-left: 0; padding: 0 16px 20px !important; } + .reviewer-preview .rp-caption { padding: 14px 0 10px; flex-wrap: wrap; row-gap: 4px; } + .reviewer-preview .rp-open { display: none; } + .reviewer-preview .rp-window { margin: 0; border: 1px solid var(--rp-line); border-radius: 10px; min-height: 64vh; } + .reviewer-preview .rp-chrome { height: 30px; } + .reviewer-preview .rp-url { font-size: 11px; margin-left: 6px; } + .reviewer-preview .rp-body.has-tree { grid-template-columns: minmax(0,1fr); } + .reviewer-preview .rp-tree { display: none; } + .reviewer-preview .rp-file-head { padding: 9px 16px; } + .anonymize-page .reviewer-preview .anonymize-preview-body { padding: 18px 16px 28px !important; } + .reviewer-preview .rp-state { padding: 20px 16px; } + .reviewer-preview .rp-error, .reviewer-preview .rp-empty { margin: 16px; } +} +.reviewer-preview .rp-tree-note { margin: 10px 8px 0; font-size: 12px; line-height: 1.5; color: var(--ink-muted); white-space: normal; } +.anonymize-page .submit-reason { margin: 8px 0 0; font-size: 12.5px; line-height: 1.45; color: var(--ink-muted); text-align: center; } + +/* ----- File viewer ----- */ +html:root body .ace_editor .ace_keyword, html:root body .ace_editor .ace_storage, html:root body .ace_editor .ace_keyword.ace_operator.ace_new, html:root body .token.keyword, html:root body .token.atrule, html:root body .token.important, html:root body .token.selector { color: var(--syn-kw) !important; } +html:root body .ace_editor .ace_support.ace_type, html:root body .ace_editor .ace_support.ace_class, html:root body .ace_editor .ace_entity.ace_name.ace_tag, html:root body .ace_editor .ace_meta.ace_tag, html:root body .token.class-name, html:root body .token.tag, html:root body .token.builtin { color: var(--syn-type) !important; } +html:root body .ace_editor .ace_string, html:root body .ace_editor .ace_string.ace_regexp, html:root body .token.string, html:root body .token.char, html:root body .token.attr-value, html:root body .token.regex, html:root body .token.url, html:root body .token.inserted { color: var(--syn-str) !important; } +html:root body .ace_editor .ace_entity.ace_name.ace_function, html:root body .ace_editor .ace_support.ace_function, html:root body .token.function { color: var(--syn-fn) !important; font-weight: 400 !important; } +html:root body .ace_editor .ace_constant.ace_numeric, html:root body .ace_editor .ace_constant.ace_language, html:root body .ace_editor .ace_constant, html:root body .ace_editor .ace_support.ace_constant, html:root body .token.number, html:root body .token.boolean, html:root body .token.constant, html:root body .token.symbol { color: var(--syn-num) !important; } +html:root body .ace_editor .ace_entity.ace_other.ace_attribute-name, html:root body .ace_editor .ace_variable.ace_parameter, html:root body .token.property, html:root body .token.attr-name { color: var(--syn-attr) !important; } +html:root body .ace_editor .ace_comment, html:root body .token.comment, html:root body .token.prolog, html:root body .token.doctype, html:root body .token.cdata { color: var(--syn-cmt) !important; font-style: italic; } +html:root body .ace_editor .ace_paren, html:root body .ace_editor .ace_punctuation, html:root body .ace_editor .ace_keyword.ace_operator, html:root body .token.punctuation, html:root body .token.operator, html:root body .token.entity { color: var(--syn-punct) !important; background: none !important; } +html:root body .ace_editor .ace_variable, html:root body .ace_editor .ace_identifier, html:root body .token.variable { color: var(--syn-var) !important; } +html:root body .token.deleted { color: #B42318 !important; } +html:root body.dark-mode .token.deleted { color: #F2897D !important; } +@media (max-width: 767px) { + .file-card-head .file-card-path>.mobile-sub.ms { + display: flex !important; + flex-wrap: wrap; + align-items: center; + height: 17px; + line-height: 17px; + overflow: hidden !important; + gap: 0 !important; + white-space: nowrap; + text-overflow: clip; + grid-column: 2 !important; + grid-row: 2; + width: auto !important; + min-width: 0 !important; + max-width: 100% !important; + flex: none !important; + justify-self: stretch; + } + .file-card-head .file-card-path > .mobile-sub.ms > .ms-item { display: inline-flex !important; align-items: center; flex: 0 0 auto; height: 17px; margin: 0 !important; padding: 0 !important; } + .file-card-head .file-card-path > .mobile-sub.ms > .ms-redact { color: var(--color) !important; font-weight: 600 !important; } + .file-card-head .file-card-path > .mobile-sub.ms > .ms-redact, .file-card-head .file-card-path > .mobile-sub.ms > .ms-redact .meta-redact-word { overflow: visible !important; flex-shrink: 0 !important; max-width: none !important; padding-right: 1px !important; } +} + +/* ----- Admin ----- */ +.seg-bar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 16px; margin: 0 0 14px; } +.seg-filter { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 2px; padding: 3px; border: 1px solid var(--border-color); border-radius: 9px; background: var(--paper-card, #fff); } +.seg-chip { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 11px; border: 0; border-radius: 6px; background: transparent; font: 500 13px/1 var(--font-sans); color: var(--ink-soft, var(--ink-muted)); white-space: nowrap; cursor: pointer; transition: background-color .12s, color .12s; } +.seg-chip .count { font-weight: 500; font-variant-numeric: tabular-nums; color: var(--ink-muted); } +.seg-chip:hover { background: var(--hover-bg-color, #F1EEE8); color: var(--color); } +.seg-chip.active, .seg-chip.active:hover { background: var(--accent-soft); color: var(--color); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent); font-weight: 600; } +.seg-chip.active .count { color: var(--ink-soft, var(--ink-muted)); } +.seg-chip.is-empty:not(.active) { opacity: .5; } +.seg-dot { width: 7px; height: 7px; border-radius: 50%; flex: none; background: var(--st-off, #8A847A); } +.seg-dot.ok { background: var(--st-ok); } +.seg-dot.warn { background: var(--st-progress); } +.seg-dot.bad { background: var(--st-bad); } +.seg-dot.off { background: var(--st-off); } +.dark-mode .seg-chip.active, .dark-mode .seg-chip.active:hover { background: rgba(124,199,190,.16); color: #F2EEE7; box-shadow: inset 0 0 0 1px rgba(124,199,190,.45); } +.dark-mode .seg-chip:hover { background: rgba(255,255,255,.05); } +.seg-countline { margin: 0 0 0 auto; font-size: 13px; color: var(--ink-muted); font-variant-numeric: tabular-nums; white-space: nowrap; } +.seg-countline strong { color: var(--color); font-weight: 600; } +.seg-sep { margin: 0 7px; color: var(--ink-faint, var(--ink-muted)); } +.errors-toolbar .seg-filter { flex: none; } +@media (max-width: 767px) { .seg-countline { margin-left: 0; white-space: normal; } + .seg-filter { max-width: 100%; overflow-x: auto; flex-wrap: nowrap; } +} + +/* ----- Conferences ----- */ +.conference-page .conf-repo-toolbar, .conf-repo-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px; margin: 28px 0 12px; padding: 0; border: 0 !important; } +.conf-repo-toolbar .search-wrap { flex: 1 1 200px; min-width: 170px; max-width: 280px; margin: 0; } +.conf-repo-toolbar .search-wrap .form-control { height: 38px; } +.conf-repo-toolbar .dashboard-filter-controls { display: flex; gap: 8px; margin: 0; } +.conf-repo-toolbar .dashboard-filter-controls .btn { height: 38px; } +@media (max-width: 767px) { .conf-repo-toolbar .search-wrap { max-width: none; flex-basis: 100%; } +} + +/* ----- Admin ----- */ +.errors-page .col-status .status-empty, .errors-row .col-status .status-empty { color: var(--ink-muted); font-variant-numeric: tabular-nums; } +.dark-mode .errors-row + .errors-row, .dark-mode .errors-group-head + .errors-row { border-top: 1px solid var(--border-color) !important; } +.dark-mode .errors-row { border-bottom: 0 !important; } +.dark-mode .errors-group-head { border-top: 1px solid var(--border-color) !important; } +.commit-hash, .mono-hash, a.mono-hash, .anon-sub a.mono-hash { font-family: var(--font-mono) !important; font-size: 12px !important; font-weight: 400 !important; letter-spacing: 0 !important; color: inherit !important; background: none !important; padding: 0 !important; border: 0 !important; text-decoration: none !important; } +a.mono-hash:hover { text-decoration: underline !important; text-underline-offset: 2px; } +.date-echo { margin: 6px 0 0; font-size: 12.5px; line-height: 1.4; color: var(--ink-soft, var(--ink-muted)); font-variant-numeric: tabular-nums; } +.hosting-date .date-echo { grid-column: 2; margin-top: -2px; } +.container.paper-page.paper-settings { padding-top: 32px !important; } +.paper-page.paper-settings > .paper-crumbs { font-size: 13px !important; margin: 0 0 8px !important; } +.paper-page.paper-settings > .paper-page-title { margin: 0 !important; } +.paper-page.paper-settings > .paper-page-lede { font-size: 15px !important; line-height: 1.5 !important; margin: 6px 0 20px !important; max-width: 640px; } +.anonymize-page .anonymize-workspace .anonymize-topbar-head { justify-content: flex-start !important; gap: 12px !important; } +@media (max-width: 767px) { + .anonymize-page .anonymize-workspace .source-url-label-row { display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; align-items: center !important; justify-content: space-between !important; gap: 8px !important; margin-bottom: 8px !important; } + .anonymize-page .anonymize-workspace .source-url-label-row .paper-field-label { margin: 0 !important; flex: none; } + .anonymize-page .anonymize-workspace .source-url-label-row .repo-access { margin: 0 0 0 auto !important; min-width: 0; flex: 0 1 auto; } + .anonymize-page .anonymize-workspace .source-url-label-row .repo-access-switch { + white-space: nowrap; + width: auto !important; + flex: none !important; + max-width: none !important; + } + .anonymize-page .anonymize-workspace .source-url-label-row .connection-badge { font-size: 11.5px !important; white-space: nowrap; } +} +.admin-page.admin-page .paper-table .anon-text { min-width: 0; overflow: hidden; flex: 1 1 auto; width: 100%; } +.admin-page.admin-page .paper-table .anon-sub.anon-sub { display: flex !important; flex-wrap: nowrap; align-items: baseline; gap: 0 !important; margin-left: 0 !important; min-width: 0; white-space: nowrap !important; overflow: hidden; column-gap: 0 !important; } +.admin-page.admin-page .paper-table .anon-sub.anon-sub>* { + white-space: nowrap; + align-items: baseline; + overflow: hidden; + text-overflow: ellipsis; + display: inline-block !important; +} + +/* ----- Shared ----- */ +.budget-cell .budget-bar { display: block; width: 120px; height: 4px; margin: 6px 0 0 auto; border-radius: 2px; background: var(--border-color); overflow: hidden; } +.budget-cell .budget-bar i { display: block; height: 100%; background: var(--st-ok); border-radius: 2px; } +.budget-cell.is-over { color: var(--st-bad) !important; font-weight: 600; } +.budget-cell.is-over .budget-bar i { background: var(--st-bad); } +.budget-cell .ov-metric-bad-text { font-weight: 600; } +.settings-row>div:last-child { width: 100%; max-width: 640px; min-width: 0; } + +/* ----- File viewer ----- */ +.csv-table-wrap { + overflow: auto; + scrollbar-width: thin; + border-bottom: 0; + background: transparent !important; + padding: 24px !important; + max-height: calc(100vh - 96px); +} +.csv-table { + border-collapse: separate; + border-spacing: 0; + font: 13px/1.45 var(--font-sans); + font-variant-numeric: tabular-nums; + color: var(--color); + min-width: 0; + width: auto; +} +.csv-table .csv-rownum { padding: 7px 10px 7px 16px; text-align: right; color: var(--ink-muted); font-size: 12px; border-right: 1px solid var(--border-color); user-select: none; } +.dark-mode .csv-table thead th { background: var(--paper-card) !important; } +.file-card-actions .csv-toggle { padding: 2px; border-radius: 7px; margin-right: 6px; } +.file-card-actions .csv-toggle .seg-chip { height: 26px; padding: 0 10px; font-size: 12.5px; } +@media (max-width: 767px) { + .csv-table-wrap { padding: 16px !important; } + .file-card-actions .csv-toggle { margin-right: 2px; display: none !important; } +} +.csv-table th:last-child, .csv-table td:last-child { padding-right: 24px; } +.tb-menu .tb-csv-view { display: none; } +@media (max-width: 767px) { .tb-menu .tb-csv-view { display: flex; } +} +.csv-table-wrap .csv-table { + width: auto !important; + min-width: 0 !important; + max-width: none !important; + display: table !important; + border: 1px solid var(--border-color); + border-radius: 8px; + background: var(--paper-card); + font-variant-numeric: tabular-nums; +} +@media (min-width: 768px) { .csv-table .csv-rownum { padding: 8px 12px 8px 16px; } +} +.ace_editor .ace_text-layer .ace_redacted, +.dark-mode .ace_editor .ace_text-layer .ace_redacted, +pre code mark.redact-chip, +.markdown-body pre code mark.redact-chip, +.dark-mode .markdown-body pre code mark.redact-chip { + background: repeating-linear-gradient(135deg, var(--slot-bg) 0 2px, color-mix(in srgb, var(--slot-bg) 35%, transparent) 2px 5px) !important; +} +/* Notebook stream output: the chip follows the output's own text size */ +.nb-output mark.redact-chip, .nb-output-text mark.redact-chip, .output_text mark.redact-chip, .nb-output .redact-slot { font-size: inherit !important; } +.file-card-state { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 10px; border-radius: 999px; background: color-mix(in srgb, var(--st-progress) 12%, transparent); color: var(--color); font-size: 12.5px; font-weight: 500; white-space: nowrap; } +.file-card-state .ui-icon { width: 14px; height: 14px; color: var(--st-progress); } +@media (max-width: 767px) { .file-card-state { display: none; } +} +@media (min-width: 768px) { .errors-page .errors-toolbar .select-wrap select { width: auto !important; min-width: 132px; flex: none; } +} +@media (min-width: 768px) { + .errors-page .errors-toolbar .search-wrap { + flex: 1 1 240px !important; + min-width: 240px !important; + max-width: none !important; + } +} +.admin-page.admin-page .paper-table .anon-sub.anon-sub > *, +.admin-page.admin-page .paper-table .anon-sub.anon-sub > :first-child, +.admin-page.admin-page .paper-table .anon-sub.meta-dots > a { flex: 0 0 auto; min-width: 0 !important; max-width: none; } +.admin-page.admin-page .paper-table .anon-sub.anon-sub > :first-child { flex: 0 1 auto; } + +/* ----- Shared ----- */ +.admin-page .user-name-line { display: flex; align-items: center; gap: 6px; min-width: 0; } +.admin-page .user-name-line > .repo-name { min-width: 0; } +.admin-page .user-gh-link { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 20px; height: 20px; border-radius: 4px; color: var(--ink-muted) !important; text-decoration: none !important; } +.admin-page .user-gh-link:hover { color: var(--color) !important; background: var(--hover-bg-color, rgba(0,0,0,.05)); } +.admin-page .user-gh-link .fa-github { font-size: 13px; margin: 0 !important; } +/* The User column takes the spare width (it was capped at 320px while Role ran 166px wide and empty). */ +@media (min-width: 768px) { + .admin-page:has(.admin-users-row) .paper-table-row, + .admin-page:has(.admin-users-row) .paper-table-head { + grid-template-columns: 28px minmax(280px, 1fr) 120px 140px 120px 40px !important; + column-gap: 24px !important; + } +} +/* Repository lists (admin repos, user detail): the identity column takes the spare width so line 2 rarely needs to truncate. */ +@media (min-width: 768px) { + .conference-page .conf-repo-toolbar { display: grid !important; grid-template-columns: minmax(240px, 420px) 1fr auto; grid-template-areas: "seg seg count" "search . sort"; align-items: center; gap: 12px 14px; } + .conference-page .conf-repo-toolbar .seg-countline { grid-area: count; justify-self: end; margin: 0; } + .conference-page .conf-repo-toolbar .search-wrap { grid-area: search; width: 100%; } +} +@media (min-width: 768px) { + .errors-page .errors-toolbar { + display: flex !important; + flex-wrap: wrap !important; + align-items: center; + gap: 10px 12px !important; + } +} +@media (min-width: 768px) { + .errors-page .errors-toolbar > .autoref { order: 2; margin-left: auto !important; } + .errors-page .errors-toolbar>.search-wrap { order: 5; flex: 0 1 560px !important; margin-right: auto !important; } +} + +/* ----- Conferences ----- */ +.container.paper-page.conference-page { padding-top: 32px !important; } +.conference-page>div>.paper-crumbs { font-size: 13px !important; margin: 0 0 8px !important; line-height: 18px !important; min-height: 20px; } +.conference-page .conf-title-row .paper-page-title { margin: 0 !important; line-height: 44px !important; } +.conference-page .conf-title-row + .paper-page-lede { margin: 6px 0 0 !important; font-size: 15px; } + +/* ----- Anonymize workspace ----- */ +.reviewer-preview .rp-open.is-toggle { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 10px !important; border: 1px solid var(--rp-line) !important; border-radius: 6px; background: var(--rp-window) !important; color: var(--color) !important; text-decoration: none !important; font-weight: 500; } +.reviewer-preview .rp-open.is-toggle:hover { border-color: var(--control-border, var(--ink-faint)) !important; } +.reviewer-preview .rp-open-icon { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; } +.reviewer-preview .rp-more { + position: sticky; + bottom: 0; + z-index: 2; + height: 112px; + margin-top: -112px; + display: flex; + align-items: flex-end; + justify-content: center; + padding: 0 16px 18px; + pointer-events: none; + opacity: 0; + visibility: hidden; + background: linear-gradient(to bottom, transparent 0, color-mix(in srgb, var(--rp-window) 85%, transparent) 50%, var(--rp-window) 78%); +} +@keyframes rp-more-fade { 0%, 96% { opacity: 1; visibility: visible; } + 100% { opacity: 0; visibility: hidden; } +} +.reviewer-preview .rp-more-btn { pointer-events: auto; display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 14px; border-radius: 999px; border: 1px solid var(--rp-line); background: var(--rp-window); box-shadow: 0 4px 14px -6px rgba(40,32,24,.25); font: 500 13px/1 var(--font-sans); color: var(--color) !important; text-decoration: none !important; cursor: pointer; white-space: nowrap; } +.reviewer-preview .rp-more-btn:hover { border-color: var(--control-border, var(--ink-faint)); } +.reviewer-preview .rp-more-btn.is-hint { cursor: default; color: var(--ink-muted) !important; box-shadow: none; } +.dark-mode .reviewer-preview .rp-more-btn { box-shadow: 0 6px 16px -6px rgba(0,0,0,.6); } +.anonymize-page .anonymize-workspace .anonymize-form-col .paper-settings-section { background: transparent !important; box-shadow: none !important; } +.dark-mode .anonymize-page .anonymize-workspace { background: var(--canvas-bg-color) !important; } +.dark-mode .reviewer-preview .rp-url { background: var(--canvas-bg-color); } +.reviewer-preview .anonymize-preview-body > .d-flex:first-child { align-items: baseline !important; } +.dark-mode .csv-table-wrap .csv-table { background: var(--canvas-bg-color); } +@media (max-width: 767px) { + .anonymize-workspace .hosting-settings > .expiration-choices:last-child { margin-bottom: 0 !important; } +} +.file-card-meta .sep { font-size: inherit !important; width: auto !important; display: inline !important; margin: 0 6px !important; color: var(--ink-faint, var(--ink-muted)); } +.ov-metrics-table th.ov-event-name { color: var(--color) !important; font-size: 13px !important; font-weight: 500 !important; font-family: var(--font-sans) !important; } +.ov-metrics-table td.ov-event-traffic { color: var(--ink-muted) !important; font-size: 12.5px !important; } +@media (max-width: 767px) { + .anonymize-page .anonymize-workspace .source-url-label-row > .repo-access { display: flex !important; justify-content: flex-end !important; margin-left: auto !important; } +} +@media (max-width: 767px) { + .file-card-head { display: flex !important; } + .file-card-head > .file-card-path { display: grid !important; grid-template-columns: 74px minmax(0, 1fr) !important; grid-template-rows: auto auto; column-gap: 10px !important; row-gap: 0 !important; align-items: center; flex: 1 1 0% !important; min-width: 0 !important; width: auto !important; max-width: none !important; } + .file-card-head > .file-card-actions { flex: 0 0 auto !important; margin-left: 0 !important; } + .file-card-head .file-card-path > .card-files-btn, .file-card-head .file-card-path .card-files-btn { grid-column: 1 !important; grid-row: 1 / 3 !important; width: 74px !important; min-width: 74px !important; max-width: 74px !important; height: 44px !important; padding: 0 10px !important; margin: 0 !important; justify-content: center; justify-self: start; align-self: center !important; flex: none !important; overflow: hidden; } + .file-card-head .file-card-path > .breadcrumb { overflow: hidden; } + .file-card-head .file-card-path > .copy-path-btn { display: none !important; } +} +@media (min-width: 768px) { + .reviewer-preview .rp-body.has-tree { + display: grid !important; + grid-template-columns: 188px minmax(0, 1fr); + align-items: start; + overflow: auto; + scrollbar-width: thin; + } + .reviewer-preview .rp-body.has-tree>.rp-tree { + box-sizing: border-box; + padding: 10px 8px 14px !important; + -webkit-mask-image: none !important; + mask-image: none !important; + box-shadow: none !important; + border-right: 1px solid var(--rp-line) !important; + border-bottom: 1px solid var(--rp-line) !important; + border-bottom-right-radius: 10px; + float: none; + position: sticky; + top: 0; + align-self: start; + width: auto; + margin: 0 !important; + z-index: 2; + } + .reviewer-preview .rp-body.has-tree>.rp-doc { min-height: 0; overflow: visible !important; min-width: 0; margin-top: 0 !important; } + .reviewer-preview .rp-body.has-tree .rp-state { margin-left: 0 !important; padding-left: 0 !important; } +} +.anonymize-page .source-url-label-row { display: flex !important; flex-direction: row !important; align-items: center !important; justify-content: space-between !important; flex-wrap: nowrap !important; gap: 12px !important; min-height: 32px; margin-bottom: 8px !important; } +.anonymize-page .source-url-label-row > .repo-access { display: flex !important; justify-content: flex-end !important; margin: 0 0 0 auto !important; padding: 0 !important; border: 0 !important; background: none !important; flex: none !important; width: auto !important; order: 0 !important; } +.anonymize-page .source-url-label-row .repo-access-switch { display: inline-flex !important; align-items: center; gap: 0 !important; padding: 2px !important; border: 1px solid var(--border-color) !important; border-radius: 7px !important; background: var(--paper-bg-alt) !important; width: auto !important; flex: none !important; max-width: none !important; margin: 0 !important; } +.anonymize-page .source-url-label-row .repo-access-switch button { display: inline-flex !important; align-items: center; min-height: 26px !important; height: 26px !important; padding: 0 10px !important; border-radius: 5px !important; border: 0 !important; text-decoration: none !important; box-shadow: none !important; color: var(--ink-soft, var(--ink-muted)) !important; background: transparent !important; font: 500 12.5px/1 var(--font-sans) !important; white-space: nowrap; opacity: 1 !important; margin: 0 !important; } +.anonymize-page .source-url-label-row .repo-access-switch button[aria-pressed="true"] { background: var(--paper-card) !important; color: var(--color) !important; font-weight: 600 !important; box-shadow: 0 0 0 1px var(--border-color) !important; } +.anonymize-page .source-url-label-row .repo-access-switch .ui-icon { display: none !important; } +.admin-page .paper-table.paper-table-repos .cell-status .status-sub { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; +} +.overview-page .ov-ebar-label { width: 60px !important; min-width: 60px !important; flex: none !important; text-transform: none !important; } + +/* ----- Dashboard ----- */ +.dashboard-view-tabs .attention-count:not(.has-attention) { color: var(--ink-muted); } +.status-preset-note { color: var(--ink-muted); font-size: 12px; } +.status-line .status-removed-sep { margin: 0 -2px; } +.status-line .project-attention-action.status-enable { margin: 0 !important; padding: 0 !important; min-height: 0 !important; display: inline !important; font-size: 13px; line-height: inherit; white-space: nowrap; } +@media (max-width: 767px) { + .paper-table-dashboard .status-line .status-removed-sep { display: inline !important; margin: 0 6px !important; visibility: visible !important; } + .paper-table-dashboard .status-line { gap: 6px !important; } +} +@media (min-width: 768px) { + .admin-page .paper-table.paper-table-repos .anon-sub:has(.meta-sep) > :first-child { flex: 0 1 auto !important; min-width: 6ch !important; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +} +@media (min-width: 768px) { + .reviewer-preview .rp-body.has-tree .anonymize-preview-body :is(p, ul, ol, dl, h1, h2, h3, h4, h5, h6, pre, blockquote, hr, .highlight) { display: revert; } + .reviewer-preview .rp-body.has-tree .anonymize-preview-body :is(pre,.highlight) { display: block; } +} +.reviewer-preview .diff-file-table .diff-code { padding-left: calc(12px + var(--hang, 4ch)); text-indent: calc(-1 * var(--hang, 4ch)); } +.explorer-content notebook .nb-code-scroll { position: relative; } +.explorer-content notebook .nb-code-scroll.is-overflowing::before { content: ""; position: absolute; z-index: 1; bottom: 5px; left: calc(8px + var(--thumb-x, 0px)); width: var(--thumb-w, 40px); height: 3px; border-radius: 2px; background: var(--ink-faint, #b9b2a6); opacity: .8; pointer-events: none; } + +/* ----- Admin ----- */ +.overview-page .ov-ehours-legend .ov-ehours-note { margin-left: 8px; color: var(--ink-muted); white-space: nowrap; } +.overview-page .ov-ehours-legend .ov-ehours-note .seg-sep { margin: 0 6px; } +.q-table th.q-th-num, .q-table td.q-cell-duration { text-align: right !important; font-variant-numeric: tabular-nums; padding-right: 20px; } +.seg-dot.done { background: transparent !important; box-shadow: inset 0 0 0 1.5px var(--st-off); } +.errors-page .errors-list-head > .col-sev, .errors-page .errors-row-main > .col-sev { display: none !important; } +.anonymize-page .anon-url-echo .anon-url-id { display: inline-block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; } +@media (max-width: 767px) { + .anonymize-page .source-url-label-row .repo-access-switch { padding: 3px !important; border-radius: 8px !important; } + .anonymize-page .source-url-label-row .repo-access-switch button { min-height: 30px !important; height: 30px !important; padding: 0 12px !important; } +} +.overview-page .ov-performance .ov-metric-name > span { color: var(--color) !important; font-size: 13px !important; font-weight: 500 !important; } +.overview-page .ov-performance .ov-metric-name > small { font-size: 11px !important; font-weight: 400 !important; color: var(--ink-muted) !important; } +.overview-page .ov-performance td.num { font-weight: 400 !important; color: var(--ink-soft, var(--color)) !important; } +/* Author lists (dashboard, conference detail): one view selector. The tabs + sit above the filters they scope, on a hairline tab rail; the count sits at + its right end. */ + +/* ----- Dashboard ----- */ +.paper-page .dashboard-meta.dashboard-meta { display: flex !important; flex-wrap: nowrap; align-items: flex-end; gap: 16px; margin: 20px 0 16px !important; padding: 0 !important; border-bottom: 1px solid var(--border-color, var(--border)); } +.paper-page .dashboard-meta .dashboard-view-tabs { gap: 24px; margin-bottom: -1px; } +.paper-page .dashboard-meta .dashboard-count { margin-left: auto; align-self: center; padding-bottom: 1px; } +.dashboard-page .dashboard-active-filters-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 12px; } +.dashboard-page .dashboard-active-filters-row:empty { display: none; } +.dashboard-title-line { display: flex; align-items: baseline; gap: 12px; } +.dashboard-count-head { display: none; font-size: 13px; color: var(--ink-muted); font-variant-numeric: tabular-nums; white-space: nowrap; } +.dashboard-page .dashboard-filter-row { margin-top: 0 !important; } +/* Conference detail: tabs row, then search + sort on one line. */ + +/* ----- Conferences ----- */ +.conference-page .conf-view-meta { margin-top: 28px !important; } +.conference-page .conf-repo-toolbar.conf-repo-toolbar { display: flex !important; align-items: center; gap: 12px; margin: 0 0 12px !important; } +.conference-page .conf-repo-toolbar .search-wrap { flex: 0 1 420px; max-width: 420px; min-width: 0; } +.conference-page .conf-repo-toolbar .dashboard-filter-controls { margin-left: auto !important; } +.paper-page .conf-repo-toolbar .dropdown-toggle .filter-btn-label { color: var(--ink-muted); font-weight: 500; } +.paper-page .conf-repo-toolbar .dropdown-toggle .filter-btn-value { font-weight: 500; } +@media (max-width: 767px) { + .dashboard-count-head { display: inline; } + .paper-page .dashboard-meta .dashboard-count.is-plain { display: none !important; } + .paper-page .dashboard-meta.dashboard-meta { margin: 16px 0 12px !important; } + .paper-page .dashboard-meta .dashboard-view-tabs { gap: 20px; } + .conference-page .conf-repo-toolbar .search-wrap { flex: 1 1 auto; max-width: none; } +} +@media (max-width: 767px) { + .anonymize-page .source-url-label-row .repo-access-switch.repo-access-switch { padding: 3px !important; border-radius: 8px !important; height: 36px; box-sizing: border-box; } +} +@media (min-width: 768px) { + .reviewer-preview .rp-body.has-tree.has-tree { display: block !important; overflow: auto; scrollbar-width: thin; } + .reviewer-preview .rp-body.has-tree>.rp-tree.rp-tree { + position: static !important; + float: none; + display: flex !important; + flex-direction: row; + flex-wrap: wrap; + align-items: center; + box-sizing: border-box; + margin: 0 !important; + overflow: visible; + background: var(--rp-tree); + -webkit-mask-image: none !important; + mask-image: none !important; + box-shadow: none !important; + width: 100% !important; + max-width: none; + padding: 7px 32px 7px 24px !important; + gap: 2px 4px; + border: 0 !important; + border-bottom: 1px solid var(--rp-line) !important; + border-radius: 0 !important; + padding-left: 32px !important; + } + .reviewer-preview .rp-body.has-tree > .rp-tree .rp-tree-row { flex: 0 0 auto; max-width: 220px; } + .reviewer-preview .rp-body.has-tree>.rp-tree .rp-tree-note { + flex: 0 1 auto; + line-height: 1.45; + margin: 0 0 0 auto !important; + padding-left: 16px; + max-width: 480px; + font-size: 12px !important; + text-align: right; + color: var(--ink-muted) !important; + } +} +.reviewer-preview pre code :is(.md-diff-line, .code-line) { line-height: 20px !important; vertical-align: top; margin-top: 0; margin-bottom: 0; border: 0; box-shadow: none; outline: 0; } +.status-dot.status-dot:is(.st-expiring, .st-removing, .status-expiring, .status-removing) { background: linear-gradient(90deg, var(--st-off) 50%, transparent 50%) !important; box-shadow: inset 0 0 0 1.5px var(--st-off) !important; } +.errors-page .errors-group-count { margin-left: 6px; } +.dark-mode .errors-page .errors-group-count { background: rgba(255,255,255,.07); } +@media (min-width: 768px) { + .admin-page .paper-table-repos .cell-status .status-sub { display: -webkit-box !important; -webkit-box-orient: vertical; -webkit-line-clamp: 2; white-space: normal !important; overflow: hidden; text-overflow: clip; } +} +@media (min-width: 768px) { + .reviewer-preview .rp-body.has-tree > .rp-tree + .rp-doc .rp-file-head { border-top: 0 !important; } +} +@media (min-width: 768px) { + .admin-page.admin-page .paper-table.paper-table-repos .anon-sub.anon-sub > * { flex: 0 0 auto !important; min-width: 0 !important; max-width: 100% !important; overflow: visible; text-overflow: clip; } + .paper-table-repos .src-path .src-owner { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .paper-table-repos .src-path .src-repo { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +} +.conference-page .dashboard-page.conf-rows { max-width: none; padding: 0 !important; margin: 0; } +@media (max-width: 767px) { .dashboard-status-filter.is-view-hidden { display: none !important; } +} +.q-legend-exec, .dark-mode .q-legend-exec { border-top: 2px dashed var(--q-time-series) !important; color: var(--q-time-series) !important; } +@media (min-width: 768px) { + .dashboard-page .paper-table.paper-table-dashboard .paper-table-row.repo-error { padding-left: 12px !important; box-shadow: inset 3px 0 0 var(--status-error) !important; border-left: 0 !important; } +} +.reviewer-preview .rp-tree-label { display: inline-flex; align-items: center; gap: 6px; margin: 0; padding: 3px 0; font-size: 12px; font-weight: 500; line-height: 18px; color: var(--ink-muted); white-space: nowrap; } +.reviewer-preview .rp-tree-label .rp-tree-icon { width: 14px; height: 14px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.2; } +.admin-page.admin-page .paper-table .cell-anon .anon-sub.anon-meta { display: flex !important; flex-wrap: nowrap; align-items: center; min-width: 0; max-width: 100%; height: auto !important; overflow: hidden; margin-left: 0 !important; gap: 0 !important; line-height: 18px; } + +/* ----- Admin ----- */ +.q-table td.q-cell-detail.is-error { color: var(--status-error); } +.q-table .q-cell-progress { min-width: 148px; } +.q-table .q-progress-label { font-family: var(--font-sans) !important; font-size: 12px !important; font-variant-numeric: tabular-nums; color: var(--ink-muted); min-width: 36px; } +.overview-page .ov-chart-card .ov-dot-legend.ov-dot-user-fill { width: 12px !important; height: 2px !important; border-radius: 1px !important; background: var(--accent) !important; vertical-align: middle; } +body.dark-mode .errors-page .seg-info, +body.dark-mode .errors-page .dot-info, +body.dark-mode .errors-page .sev-dot.sev-info { background: var(--ink-faint) !important; } diff --git a/public/partials/404.htm b/public/partials/404.htm index f6cc68f..32b2ff5 100644 --- a/public/partials/404.htm +++ b/public/partials/404.htm @@ -15,3 +15,4 @@ + diff --git a/public/partials/admin/conferences.htm b/public/partials/admin/conferences.htm index 87c8560..74ba46a 100644 --- a/public/partials/admin/conferences.htm +++ b/public/partials/admin/conferences.htm @@ -11,14 +11,16 @@ Errors -
- {{ total >= 0 ? fmt.number(total) : '…' }} {{ total === 1 ? 'conference' : 'conferences' }} - Show: - - - - - +
+
+ + + + + + +
+

{{ total >= 0 ? fmt.number(total) : '…' }} shown

@@ -65,13 +67,13 @@
- {{ conference?.conferenceID }} · {{ fmt?.number(conference?.price || 0) }} € + {{ conference?.conferenceID }}{{ fmt?.money(conference?.price || 0) }}
- - + +
@@ -99,7 +101,7 @@
- {{ fmt?.number(total) }} results +
diff --git a/public/partials/admin/errors.htm b/public/partials/admin/errors.htm index e33300d..eed8799 100644 --- a/public/partials/admin/errors.htm +++ b/public/partials/admin/errors.htm @@ -27,20 +27,20 @@ no prior baseline
-
-
Errors (5xx)
+
+
Error
{{ fmt?.number(stats?.severity?.error ?? 0) }}
-
{{ stats?.unique?.error }} unique
+
5xx · {{ stats?.unique?.error }} unique
-
-
4xx responses
+
+
Warning
{{ fmt?.number(stats?.severity?.warn ?? 0) }}
-
{{ stats?.unique?.warn }} unique
+
4xx, aborted · {{ stats?.unique?.warn }} unique
-
Info (auth, 404)
+
Info
{{ fmt?.number(stats?.severity?.info ?? 0) }}
-
{{ stats?.unique?.info }} unique
+
Auth, 404 · {{ stats?.unique?.info }} unique
Distinct errors stored
@@ -56,9 +56,9 @@
Volume · 24h · 1h buckets - error - warn - info + Error + Warning + Info
@@ -72,15 +72,15 @@
-
- - - - +
+ + + +
- + {{ parsedFilterCount }} filter{{ parsedFilterCount > 1 ? 's' : '' }}
@@ -91,11 +91,11 @@
- +
-
+
diff --git a/public/partials/admin/overview.htm b/public/partials/admin/overview.htm index ef39f04..6c4af44 100644 --- a/public/partials/admin/overview.htm +++ b/public/partials/admin/overview.htm @@ -1,10 +1,12 @@
+
Admin  /  Overview
-
+

Overview

Live · refreshes every 30s
+
CPU
-
{{ data?.system?.cpuPercent }}%
-
{{ data?.system?.cpuCount }} cores · load {{ data?.system?.loadAvg?.[0]?.toFixed(1) }}
+
{{ data?.system?.cpuPercent }}%
+
{{ data?.system?.cpuPercent > 90 ? 'Critical' : 'High' }} · {{ data?.system?.cpuCount }} cores · load {{ data?.system?.loadAvg?.[0]?.toFixed(1) }}
Memory
-
{{ data?.system?.memPercent }}%
-
{{ data?.system?.memPercent > 90 ? 'Critical' : 'High' }} · {{ humanBytes(data?.system?.memUsed).replace(/\s*GB$/, '') }} / {{ humanBytes(data?.system?.memTotal) }}
+
{{ data?.system?.memPercent }}%
+
{{ data?.system?.memPercent > 90 ? 'Critical' : 'High' }} · {{ humanBytes(data?.system?.memUsed).replace(/\s*GB$/, '') }} / {{ humanBytes(data?.system?.memTotal) }}
Disk
-
{{ data?.system?.diskPercent }}%
-
{{ data?.system?.diskPercent > 90 ? 'Critical' : 'High' }} · {{ humanBytes(data?.system?.diskUsed).replace(/\s*GB$/, '') }} / {{ humanBytes(data?.system?.diskTotal) }}
+
{{ data?.system?.diskPercent }}%
+
{{ data?.system?.diskPercent > 90 ? 'Critical' : 'High' }} · {{ humanBytes(data?.system?.diskUsed).replace(/\s*GB$/, '') }} / {{ humanBytes(data?.system?.diskTotal) }}
Uptime
@@ -69,7 +71,7 @@
New users today
{{ fmt?.number(data?.daily?.today?.users || 0) }}
-
{{ fmt?.number(data?.users?.total) }} total users
+
{{ fmt?.number(data?.users?.total) }} total · +{{ fmt?.number(usersGained()) }} in 30 days
Page views today
@@ -79,14 +81,15 @@ -
+
Daily page views · 30d - views/day · peak {{ fmt?.number(historyMax('dailyPageViews')) }} + views/day · peak {{ fmt?.number(historyMax('dailyPageViews')) }}No data
-
-
+
+ +
@@ -99,10 +102,11 @@
New repos · 30d - repos/day · peak {{ fmt?.number(historyMax('dailyRepositories')) }} + repos/day · peak {{ fmt?.number(historyMax('dailyRepositories')) }}No data
-
-
+
+ +
@@ -112,15 +116,18 @@ {{ historyLabel(data?.history[data?.history?.length - 1]) }}
-
+
Users · 30d - total users · {{ fmt?.number(historyRange('nbUsers').min) }}–{{ fmt?.number(historyRange('nbUsers').max) }} + total users · {{ fmt?.number(historyRange('nbUsers').max) }} now · +{{ fmt?.number(Math.max(0, historyRange('nbUsers').max - usersFirst())) }} in 30 daysNo data
-
-
- -
+
+ + + + + +
{{ historyLabel(data?.history[0]) }} @@ -131,10 +138,11 @@
New users · 30d - users/day · peak {{ fmt?.number(historyMax('dailyUsers')) }} + users/day · peak {{ fmt?.number(historyMax('dailyUsers')) }}No data
- @@ -175,24 +183,25 @@
Errors · 24h - {{ data?.errors?.last24h }} total + {{ fmt?.number(realErrors()) }} {{ realErrors() === 1 ? 'error' : 'errors' }}
- 5xx + Error {{ data?.errors?.severity?.error }}
- 4xx + Warning {{ data?.errors?.severity?.warn }}
-
- Info - - {{ data?.errors?.severity?.info }} + +

Info {{ fmt?.number(data?.errors?.severity?.info || 0) }} · logged, not counted as errors

- download + Download {{ data?.queues?.download?.active }} {{ data?.queues?.download?.waiting }} {{ data?.queues?.download?.failed }} - remove + Remove {{ data?.queues?.remove?.active }} {{ data?.queues?.remove?.waiting }} {{ data?.queues?.remove?.failed }} - cache + Cache cleanup {{ data?.queues?.cache?.active }} {{ data?.queues?.cache?.waiting }} {{ data?.queues?.cache?.failed }} @@ -239,22 +248,21 @@
Services - {{ fmt?.number(data?.users?.total) }} users · {{ data?.conferences?.total }} conferences + 5 services · {{ realErrors() > 0 ? '1 needs attention' : 'all healthy' }}
web - {{ data?.system?.nodeVersion }} + {{ data?.system?.nodeVersion }} · up {{ humanDuration(data?.system?.uptime) }}
- uptime {{ humanDuration(data?.system?.uptime) }}
download - {{ queueTotal(data?.queues?.download) }} jobs + {{ queueTotal(data?.queues?.download) }} {{ queueTotal(data?.queues?.download) === 1 ? 'job' : 'jobs' }} idle
@@ -262,7 +270,7 @@
cache - {{ queueTotal(data?.queues?.cache) }} jobs + {{ queueTotal(data?.queues?.cache) }} {{ queueTotal(data?.queues?.cache) === 1 ? 'job' : 'jobs' }} idle
@@ -270,15 +278,15 @@
remove - {{ queueTotal(data?.queues?.remove) }} jobs + {{ queueTotal(data?.queues?.remove) }} {{ queueTotal(data?.queues?.remove) === 1 ? 'job' : 'jobs' }} idle
- +
errors - {{ data?.errors?.last24h }} / 24h + {{ fmt?.number(realErrors()) }} / 24h
@@ -289,7 +297,7 @@

Cache

-

Shared storage, repeated reads and anonymization work · refreshes every 30 seconds

+

Shared storage, repeated reads and anonymization work

@@ -357,12 +373,7 @@

Loading performance monitoring…

-
- - - -
-
+
@@ -371,13 +382,13 @@ - +
Route latency for the selected time range
{{ row.route }}{{ row.service }} · {{ row.method }} {{ fmt.number(row.count) }}{{ formatMs(row.avgMs) }} {{ firstByteBound(row) }}{{ latencyBound(row, 'p95UpperMs') }}{{ latencyBound(row, 'p99UpperMs') }}{{ fmt.number(row.aborted) }}{{ fmt.number(row.errors) }}{{ fmt.number(row.slow) }}{{ fmt.number(row.aborted) }}{{ fmt.number(row.errors) }}{{ fmt.number(row.slow) }}

No recorded requests in this time range yet.

-
+

API and streamer processes · latest sample per instance

No recent process samples. Monitoring coverage is incomplete.
@@ -387,7 +398,7 @@ {{ sample.instance }} Needs attention {{ humanBytes(sample.memory.rss) }} / {{ humanBytes(sample.memoryLimitBytes) }}Peak {{ humanBytes(peakRss(sample)) }} - {{ sample.cpuPercent == null ? 'Unavailable' : sample.cpuPercent.toFixed(1) + '%' }}{{ sample.eventLoop?.p95Ms == null ? 'Not applicable' : sample.eventLoop.p95Ms.toFixed(1) + ' ms' }} + {{ sample.cpuPercent == null ? 'Unavailable' : sample.cpuPercent.toFixed(1) + '%' }}{{ sample.eventLoop?.p95Ms == null ? 'Not applicable' : fmt.duration(sample.eventLoop.p95Ms) }} {{ sample.activeRequests }}{{ sample.sockets?.descriptors ?? 'Unavailable' }} / {{ sample.sockets?.closeWait ?? 'Unavailable' }} {{ sample.workers?.running ?? 0 }} / {{ sample.workers?.waiting ?? 0 }}{{ sampleAge(sample) }} s {{ sample.droppedBatches }} / {{ sample.droppedMetrics }} @@ -395,7 +406,7 @@
-
+
diff --git a/public/partials/admin/queues.htm b/public/partials/admin/queues.htm index 0a0b082..ddd46e7 100644 --- a/public/partials/admin/queues.htm +++ b/public/partials/admin/queues.htm @@ -22,12 +22,12 @@
- +
- waiting · {{ q?.counts?.active || 0 }} active + waiting · {{ q?.counts?.active || 0 }} active
@@ -44,7 +44,7 @@
- +
No jobs processed in this windowCompleted and failed jobs will chart here.
@@ -96,11 +96,13 @@
-
- +
+ + + + + +
@@ -117,10 +119,10 @@
- - + + - + @@ -131,20 +133,17 @@ - - + - + " + - '" + "" @@ -266,6 +275,11 @@ export const diff = (function (html) { export function number(value, digits) { return value == null ? "" : Number(value).toLocaleString(undefined, digits == null ? {} : { minimumFractionDigits: digits, maximumFractionDigits: digits }); } +// Money everywhere: the locale's currency format, cents only when there are cents. +export function money(value, currency = "EUR") { + const n = Number(value) || 0; + return new Intl.NumberFormat(undefined, { style: "currency", currency, minimumFractionDigits: n % 1 ? 2 : 0, maximumFractionDigits: 2 }).format(n); +} export function uppercase(value) { return String(value ?? "").toUpperCase(); } export function limitTo(value, count, start = 0) { return (value || []).slice(start, start + count); } export function filter(values, predicate) { @@ -300,3 +314,50 @@ export function date(value, format) { export function plural(count, forms) { return (forms?.[count] ?? forms?.[count === 1 ? "one" : "other"] ?? "").replace(/\{\}/g, count ?? 0); } +// Named-month echo for a native date field ("May 12, 2027 · in 6 months"), so a +// numeric mm/dd/yyyy value is never the only representation. "YYYY-MM-DD" is +// read as a local calendar date (not UTC midnight) so it never shifts a day. +export function dateEcho(value) { + if (!value) return ""; + const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(String(value)); + const d = m ? new Date(+m[1], +m[2] - 1, +m[3]) : new Date(value); + if (isNaN(d)) return ""; + const label = d.toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric" }); + const today = new Date(); today.setHours(0, 0, 0, 0); + const days = Math.round((d - today) / 86400000); + let rel; + if (days === 0) rel = "today"; + else if (days === 1) rel = "tomorrow"; + else if (days === -1) rel = "yesterday"; + else { + const abs = Math.abs(days); + const months = Math.round(abs / 30.44); + const unit = abs < 14 ? [abs, "day"] : abs < 60 ? [Math.round(abs / 7), "week"] : months < 18 ? [months, "month"] : [Math.round(abs / 365.25), "year"]; + const text = unit[0] + " " + unit[1] + (unit[0] === 1 ? "" : "s"); + rel = days > 0 ? "in " + text : text + " ago"; + } + return label + " · " + rel; +} +// One duration format for every admin table: "640 ms", "7.8 ms", "12.8 s", "35m 02s", "2h 05m". +// At most two decimals, no trailing zeros, a narrow no-break space before the unit. +export function duration(ms) { + if (ms == null || ms === "" || isNaN(ms)) return ""; + ms = Number(ms); + const U = " "; + if (ms < 1000) return +(ms < 10 ? ms.toFixed(2) : ms < 100 ? ms.toFixed(1) : Math.round(ms)) + U + "ms"; + const s = ms / 1000; + if (s < 60) return +(s < 10 ? s.toFixed(2) : s.toFixed(1)) + U + "s"; + const pad = (n) => String(n).padStart(2, "0"); + const total = Math.round(s); + if (total < 3600) return Math.floor(total / 60) + "m " + pad(total % 60) + "s"; + return Math.floor(total / 3600) + "h " + pad(Math.floor((total % 3600) / 60)) + "m"; +} +// "Nov 3" in the current year, "Nov 3, 2025" otherwise: the one date format for Expired rows. +export function shortDate(value) { + if (!value) return ""; + const d = new Date(value); + if (isNaN(d)) return ""; + const opts = { day: "numeric", month: "short" }; + if (d.getFullYear() !== new Date().getFullYear()) opts.year = "numeric"; + return d.toLocaleDateString(undefined, opts); +} diff --git a/public/script/main.js b/public/script/main.js index aeab733..0a01807 100644 --- a/public/script/main.js +++ b/public/script/main.js @@ -112,7 +112,7 @@ export function mountApplication(target = "#app", options = {}) { return () => [ iconsTemplate(root, []), // Repository viewers are a full-height app shell; the explorer carries brand and links itself. - isolatedConsent || /^\/(r|repository)\//.test(root.path || "") ? null : h("header", { class: ["app-header", { "is-contained": root.path === "/" || root.path === "/faq" }] }, templates["partials/header.htm"](root, headerCache)), + isolatedConsent || /^\/(r|repository)\//.test(root.path || "") ? null : h("header", { class: ["app-header", { "is-contained": root.path === "/" || root.path === "/faq", "is-signin": root.path === "/signin" }] }, templates["partials/header.htm"](root, headerCache)), h("main", { class: "app-view align-items-stretch w-100" }, h(RouterView, null, { default: ({ Component, route }) => Component ? h(Component, { key: route.meta.preserveExplorer ? route.matched[0]?.path : route.path }) : null, })), diff --git a/public/script/pdf-viewer.js b/public/script/pdf-viewer.js index 1e98d29..5b0f22d 100644 --- a/public/script/pdf-viewer.js +++ b/public/script/pdf-viewer.js @@ -24,6 +24,8 @@ export default { let scheduled = false; let resizeTimer = null; let zoom = 1; + // Page 1's width in PDF points; 100% means one point is 1/72 inch. + let baseWidth = 0; let currentPage = 1; // Page the reader asked for, held against layout shifts until // anchorUntil passes. @@ -146,7 +148,11 @@ export default { } prevBtn.disabled = currentPage <= 1; nextBtn.disabled = currentPage >= total; - zoomLabel.textContent = Math.round(zoom * 100) + "%"; + // At the fit zoom the page fills the column, whatever its real + // scale, so say "Fit"; other steps show the true size. + zoomLabel.textContent = zoom === 1 || !baseWidth + ? "Fit" + : Math.round((pageWidth() / (baseWidth * 96 / 72)) * 100) + "%"; zoomOutBtn.disabled = zoomIndex() === 0; zoomInBtn.disabled = zoomIndex() === ZOOM_STEPS.length - 1; } @@ -383,6 +389,7 @@ export default { if (myGeneration !== generation) return; const v = first.getViewport({ scale: 1 }); if (v.width && v.height) aspect = v.width / v.height; + baseWidth = v.width || 0; const width = pageWidth(); for (let i = 1; i <= doc.numPages; i++) { diff --git a/public/script/template-state.js b/public/script/template-state.js index fea0fa9..72ccf9d 100644 --- a/public/script/template-state.js +++ b/public/script/template-state.js @@ -18,7 +18,7 @@ export function initializeTemplate(name, state) { state.mdFindCase = false; state.accountOpen = false; state.helpOpen = false; - state.sidebarWidth = Math.min(520, Math.max(220, Number(localStorage.getItem("sidebarWidth")) || 280)); + state.sidebarWidth = Math.min(520, Math.max(220, Number(localStorage.getItem("sidebarWidth")) || (window.innerWidth >= 1280 ? 320 : 280))); // Shared with the app bar so the brand column lines up with the file tree. document.documentElement.style.setProperty("--sidebar-w", state.sidebarWidth + "px"); state.startSidebarResize = (event) => { diff --git a/public/script/templates.js b/public/script/templates.js index f68d321..2bcb399 100644 --- a/public/script/templates.js +++ b/public/script/templates.js @@ -27,6 +27,7 @@ import { render as template22 } from "../partials/pr-dashboard.htm"; import { render as template23 } from "../partials/profile.htm"; import { render as template24 } from "../partials/pullRequest.htm"; import { render as template25 } from "../partials/status.htm"; +import { render as footerTemplate } from "../partials/footer.htm"; export const templates = { "partials/reviewConsent.htm": reviewConsentTemplate, "partials/connections.htm": connectionsTemplate, @@ -56,5 +57,6 @@ export const templates = { "partials/pr-dashboard.htm": template22, "partials/profile.htm": template23, "partials/pullRequest.htm": template24, - "partials/status.htm": template25 + "partials/status.htm": template25, + "partials/footer.htm": footerTemplate }; diff --git a/public/script/tree.js b/public/script/tree.js index 9407265..ec8e7f3 100644 --- a/public/script/tree.js +++ b/public/script/tree.js @@ -14,6 +14,19 @@ function redactedNodes(text) { return out; } +// Full names with a break opportunity () after ".", "-" and "_", so long +// names wrap at a separator rather than mid-word. Redaction slots stay whole. +function breakableNodes(text) { + const parts = redactedNodes(text); + const out = []; + for (const part of Array.isArray(parts) ? parts : [parts]) { + if (typeof part !== "string") { out.push(part); continue; } + const pieces = part.split(/(?<=[._-])/); + pieces.forEach((piece, i) => { out.push(piece); if (i < pieces.length - 1) out.push(h("wbr")); }); + } + return out; +} + // File sizes from the API are bytes; the global humanFileSize expects bits. function formatBytes(bytes) { if (bytes < 1024) return `${bytes} B`; @@ -103,14 +116,39 @@ export default { let node = original, name = node.name; const originalPath = (parent + "/" + name).slice(1); if (matching.value && !matching.value.files.has(originalPath) && !matching.value.folders.has(originalPath)) return []; - while (node.children?.length === 1) { node = node.children[0]; name += "/" + node.name; } + // GitHub-style "a/b" rows join folder chains only, and only once the + // folder's listing is loaded: a folder that so far holds just the open + // file stays a real, expandable folder in its sorted place. + while (node.children?.length === 1 && node.children[0].children && props.page?.loadedFolders?.[(parent + "/" + name).slice(1)]) { node = node.children[0]; name += "/" + node.name; } const path = parent + "/" + name; const folder = !!node.children; const open = matching.value ? opens[path] !== false : !!opens[path]; const truncated = folder && props.page?.options?.truncatedFolders?.includes(path.slice(1)); const icon = h("span", { class: folder ? "tree-icon-folder" : "far fa-file tree-icon-file", "aria-hidden": "true" }, folder ? h("svg", { viewBox: "0 0 14 12", focusable: "false" }, h("path", { d: "M1.5 10.5v-9h4l1.5 2h5.5v7z" })) : null); - const label = h("span", { class: "tree-name", title: name.replace(/\bXXXX-(\d+)\b/g, "[redacted term $1]") }, redactedNodes(name)); + // Names show in full: long ones wrap onto a second line, preferably after + // ".", "-" or "_" (a after each), with CSS overflow-wrap as the fallback. + // Only pathological names (over 80 characters) still truncate in the middle so + // the end and extension stay visible; a redaction token is never split. + let splitName = false, head = name, tail = "", middle = ""; + if (name.length > 80) { + let tailAt = name.length - 12; + for (let i = name.length - 18; i <= name.length - 6; i++) if (i > 0 && "-_. ".includes(name[i])) { tailAt = i; break; } + splitName = !/XXXX-\d+/.test(name.slice(Math.max(0, tailAt - 12))); + head = name.slice(0, tailAt).trimEnd(); tail = name.slice(tailAt).trimStart(); + if (splitName) { + const budget = Math.max(8, 30 - tail.length - 1); + if (head.length > budget && !/XXXX-\d+/.test(head)) { + let at = -1; + for (let i = Math.min(budget, head.length); i >= 4; i--) if (".-_".includes(head[i])) { at = i; break; } + const full = name.slice(0, name.length - tail.length); + head = (at > 0 ? head.slice(0, at) : head.slice(0, budget)).trimEnd(); + middle = full.slice(head.length); + } + } + } + const label = h("span", { class: { "tree-name": true, "tree-name-split": splitName, "tree-name-wrap": !splitName }, title: name.replace(/\bXXXX-(\d+)\b/g, "[redacted term $1]") }, + splitName ? [h("span", { class: { "tree-name-head": true, "is-cut": !!middle } }, redactedNodes(head)), middle ? h("span", { class: "tree-name-middle" }, middle) : null, h("span", { class: "tree-name-tail" }, tail)] : breakableNodes(name)); const onClick = event => { focus(event.currentTarget); if (!folder) return; @@ -127,7 +165,7 @@ export default { }, [folder ? h("span", { class: "tree-toggle" }) : h("span", { class: "tree-spacer" }), icon, label, truncated ? h("span", { class: "truncated-warning", title: props.page.fmt.translate("WARNINGS.folder_truncated") }, h("i", { class: "fas fa-exclamation-triangle" })) : null, ]); - return h("li", { key: path, class: { file: true, folder, open, active: selectedPath() === path, truncated }, title: folder ? "" : `Size: ${formatBytes(node.size || 0)}` }, [link, folder && open ? renderNodes(node.children, path) : null]); + return h("li", { key: path, class: { file: true, folder, open, active: selectedPath() === path, truncated }, title: folder ? "" : `Size: ${formatBytes(node.size || 0)}` }, [link, folder && open ? (node.children.length || !props.page?.loadedFolders?.[path.slice(1)] ? renderNodes(node.children, path) : h("ul", h("li", { class: "tree-empty" }, "Empty folder"))) : null]); })); } return () => h("tree", { ref: host, tabindex: 0, onKeydown: keyboard }, diff --git a/public/script/vendor.min.js b/public/script/vendor.min.js index 31ea39b..42f6aab 100644 --- a/public/script/vendor.min.js +++ b/public/script/vendor.min.js @@ -1,44 +1,51 @@ -"use strict";(()=>{var ya=Object.defineProperty;var ba=e=>{throw TypeError(e)};var ap=(e,t,o)=>t in e?ya(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var lp=(e,t)=>{for(var o in t)ya(e,o,{get:t[o],enumerable:!0})};var We=(e,t,o)=>ap(e,typeof t!="symbol"?t+"":t,o),Ui=(e,t,o)=>t.has(e)||ba("Cannot "+o);var se=(e,t,o)=>(Ui(e,t,"read from private field"),o?o.call(e):t.get(e)),Ie=(e,t,o)=>t.has(e)?ba("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,o),qe=(e,t,o,i)=>(Ui(e,t,"write to private field"),i?i.call(e,o):t.set(e,o),o),Me=(e,t,o)=>(Ui(e,t,"access private method"),o);var wa=(e,t,o,i)=>({set _(s){qe(e,t,s,o)},get _(){return se(e,t,i)}});var ge=["abap","abc","actionscript","ada","alda","apache_conf","apex","applescript","aql","asciidoc","asl","assembly_x86","autohotkey","batchfile","c9search","c_cpp","cirru","clojure","cobol","coffee","coldfusion","crystal","csharp","csound_document","csound_orchestra","csound_score","csp","css","curly","d","dart","diff","django","dockerfile","dot","drools","edifact","eiffel","ejs","elixir","elm","erlang","forth","fortran","fsharp","fsl","ftl","gcode","gherkin","gitignore","glsl","gobstones","golang","graphqlschema","groovy","haml","handlebars","haskell","haskell_cabal","haxe","hjson","html","html_elixir","html_ruby","ini","io","jack","jade","java","javascript","json","json5","jsoniq","jsp","jssm","jsx","julia","kotlin","latex","less","liquid","lisp","livescript","logiql","logtalk","lsl","lua","luapage","lucene","makefile","markdown","mask","matlab","maze","mediawiki","mel","mixal","mushcode","mysql","nginx","nim","nix","nsis","nunjucks","objectivec","ocaml","pascal","perl","perl6","pgsql","php","php_laravel_blade","pig","plain_text","powershell","praat","prisma","prolog","properties","protobuf","puppet","python","qml","r","razor","rdoc","red","redshift","rhtml","rst","ruby","rust","sass","scad","scala","scheme","scss","sh","sjs","slim","smarty","snippets","soy_template","space","sparql","sql","sqlserver","stylus","svg","swift","tcl","terraform","tex","text","textile","toml","tsx","turtle","twig","typescript","vala","vbscript","velocity","verilog","vhdl","visualforce","wollok","xml","xquery","yaml","zeek"];var ve={markdown:"/script/markdown.6c8dfb7b1d.min.js",notebook:"/script/notebook.c3144c18ae.min.js",org:"/script/org.f61f262915.min.js",editor:"/script/editor.4f142d3adc.min.js",pdf:"/script/pdf.4d9cc6ff49.min.js"};function ka(e){let t=e.location.hash.slice(1);if(e.history.replaceState(null,"","/review-link"),t.length>2048)return null;let o=new URLSearchParams(t);if([...o.keys()].length!==3||[...o.keys()].some(a=>!["clientId","intentId","token"].includes(a)))return null;let i=o.get("clientId"),s=o.get("intentId"),r=o.get("token");return!/^[a-f0-9]{32}$/.test(i||"")||!/^[a-f0-9]{32}$/.test(s||"")||!/^[a-f0-9]{64}$/.test(r||"")?null:{contract:"4open.artifacts/1",clientId:i,intentId:s,token:r}}function Ca(e,t){let{http:o,promises:i,window:s}=t,r=t.takeReviewHandoff(),a=r?{clientId:r.clientId,intentId:r.intentId}:null,u,p,v,h,g,m=!0,k,T=i.defer(),w=()=>[...s.crypto.getRandomValues(new Uint8Array(16))].map(q=>q.toString(16).padStart(2,"0")).join("");Object.assign(e,{repositoryId:"",handoffEnabled:!1,busy:!1,preview:null,acceptAccess:!1,acceptRetention:!1,uncertain:!1,saved:!1,expired:!1,error:r?"":"Open a new artifact link from your submission. This link is missing or invalid."});let b=()=>m&&e.user?.username===g;function E(){m=!1,r=u=p=void 0,T.resolve(),s.clearTimeout(k)}e.on("dispose",E),e.on("routeLeave",E),e.watch(()=>e.user?.username,q=>{!g&&q?g=q:g&&q!==g&&(E(),e.preview=null,e.repositoryId="",e.busy=!1,e.saved=!1,e.handoffEnabled=!1,e.error="Your account changed. Open a new artifact link from your submission.")});let N=()=>({timeout:T.promise,headers:{"Content-Type":"application/json","X-Review-CSRF":p}}),O=q=>q?.status===404?"Artifact linking is not available on this server.":q?.status===401?"Sign in, then open a new artifact link from your submission.":q?.status===403?"This account cannot approve this repository or this link.":"The request could not be completed. You can retry from this page.";e.loadPreview=async()=>{if(!m||!r||e.busy||e.uncertain||e.saved||!e.user?.username)return;g=e.user.username;let q=e.repositoryId.trim();if(!/^[A-Za-z0-9_-]{3,128}$/.test(q)){e.error="Enter the anonymous repository ID from its URL.";return}e.busy=!0,e.error="",e.preview=null,u=void 0,e.acceptAccess=e.acceptRetention=!1,e.expired=!1,s.clearTimeout(k),h||(h=w());try{let M=(await o.get("/api/review-consent/csrf",{timeout:T.promise})).data;if(!b())return;if(p=M.csrf,e.handoffEnabled=M.handoffEnabled===!0,!/^[a-f0-9]{64}$/.test(p||""))throw new Error("invalid_csrf");let G=(await o.post("/api/review-consent/preview",{repositoryId:q,intent:{...r,requestId:h}},N())).data;if(!b())return;if(!G||typeof G.ticket!="string"||!G.ticket||G.ticket.length>8192||typeof G.repositoryName!="string"||!["restricted-review","anonymous-link"].includes(G.policy?.access)||!Number.isSafeInteger(G.policy.version)||!Number.isFinite(Date.parse(G.policy.retainUntil))||!Number.isFinite(Date.parse(G.expiresAt))||Date.parse(G.expiresAt)<=Date.now()||Date.parse(G.expiresAt)>Date.now()+6e5)throw new Error("invalid_preview");u=G.ticket,v=w(),e.preview={repositoryName:G.repositoryName,policy:{...G.policy},expiresAt:G.expiresAt},k=s.setTimeout(()=>{m&&(e.expired=!0)},Math.max(0,Date.parse(G.expiresAt)-Date.now()))}catch(M){b()&&(e.error=O(M))}finally{b()&&(e.busy=!1)}},e.confirmConsent=async()=>{if(!(!b()||e.busy||e.saved||!u||!e.acceptAccess||!e.acceptRetention)){if(Date.parse(e.preview.expiresAt)<=Date.now()){e.expired=!0;return}e.busy=!0,e.error="";try{let q=(await o.post("/api/review-consent/confirm",{ticket:u,requestId:v,acceptAccess:!0,acceptRetention:!0},N())).data;if(!b())return;if(q?.requestId!==v||!Number.isFinite(Date.parse(q.confirmedAt)))throw new Error("invalid_receipt");e.saved=!0,e.uncertain=!1,r=void 0,e.handoffEnabled||(u=void 0)}catch{b()&&(e.uncertain=!0,e.error="The confirmation was not verified. Retry with the same approval, or return to your submission to check its status.")}finally{b()&&(e.busy=!1)}}},e.continueReview=async()=>{if(!b()||e.busy||!e.saved||!e.handoffEnabled||!u||!a)return;e.busy=!0,e.error="";let q,M=()=>{q?.remove(),s.removeEventListener("securitypolicyviolation",G)},G=de=>{de.violatedDirective?.startsWith("form-action")&&(M(),b()&&(e.busy=!1,e.error="The return address was blocked. Return to your submission to check the artifact status."))};try{let de=(await o.post("/api/review-consent/handoff",{ticket:u},N())).data;if(!b())return;let re=de?.completion,D=new URL(de?.callbackUrl);if(!re||Object.keys(re).sort().join(",")!=="clientId,code,contract,expiresAt,intentId"||re.contract!=="4open.artifacts/1"||re.clientId!==a.clientId||re.intentId!==a.intentId||!/^[a-f0-9]{64}$/.test(re.code||"")||!Number.isFinite(Date.parse(re.expiresAt))||Date.parse(re.expiresAt)<=Date.now()||Date.parse(re.expiresAt)>Date.now()+3e5||D.protocol!=="https:"||D.href!==de.callbackUrl||D.username||D.password||de.callbackUrl.includes("?")||de.callbackUrl.includes("#"))throw new Error("invalid_handoff");q=s.document.createElement("form"),q.method="POST",q.action=D.href;let X=s.document.createElement("input");X.type="hidden",X.name="completion",X.value=JSON.stringify(re),q.appendChild(X),s.document.body.appendChild(q),s.addEventListener("securitypolicyviolation",G),e.on("dispose",M),q.submit()}catch{M(),b()&&(e.busy=!1,e.error="The return to review could not be prepared. Retry from this page, or return to your submission to check its status.")}}}var Is=new Map,cp=ve;function Ln(e){if(!Is.has(e)){let t=document.createElement("script");t.src=cp[e];let o=new Promise((i,s)=>{t.onload=i,t.onerror=()=>{Is.delete(e),t.remove(),s(new Error(`Unable to load ${e}. Please retry.`))}});Is.set(e,o),document.head.appendChild(t)}return Is.get(e)}async function Ms(){await Ln("editor"),ace.config.set("basePath","/script/external/ace/")}function ao(e){let t=Object.create(null);for(let o of e.split(","))t[o]=1;return o=>o in t}var Ge={},En=[],St=()=>{},Bi=()=>!1,lo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),uo=e=>e.startsWith("onUpdate:"),it=Object.assign,qo=(e,t)=>{let o=e.indexOf(t);o>-1&&e.splice(o,1)},pp=Object.prototype.hasOwnProperty,Fe=(e,t)=>pp.call(e,t),Se=Array.isArray,dn=e=>$o(e)==="[object Map]",Ut=e=>$o(e)==="[object Set]",Ea=e=>$o(e)==="[object Date]";var Te=e=>typeof e=="function",xe=e=>typeof e=="string",Pt=e=>typeof e=="symbol",He=e=>e!==null&&typeof e=="object",zi=e=>(He(e)||Te(e))&&Te(e.then)&&Te(e.catch),Da=Object.prototype.toString,$o=e=>Da.call(e),Hi=e=>$o(e).slice(8,-1),Vs=e=>$o(e)==="[object Object]",qs=e=>xe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,co=ao(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");var $s=e=>{let t=Object.create(null);return(o=>t[o]||(t[o]=e(o)))},fp=/-\w/g,dt=$s(e=>e.replace(fp,t=>t.slice(1).toUpperCase())),hp=/\B([A-Z])/g,Xt=$s(e=>e.replace(hp,"-$1").toLowerCase()),Un=$s(e=>e.charAt(0).toUpperCase()+e.slice(1)),Lo=$s(e=>e?`on${Un(e)}`:""),Vt=(e,t)=>!Object.is(e,t),po=(e,...t)=>{for(let o=0;o{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:i,value:o})},fo=e=>{let t=parseFloat(e);return isNaN(t)?e:t};var Sa,Uo=()=>Sa||(Sa=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function $e(e){if(Se(e)){let t={};for(let o=0;oo.startsWith("/*")?"":o).split(mp).forEach(o=>{if(o){let i=o.split(gp);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function P(e){let t="";if(xe(e))t=e;else if(Se(e))for(let o=0;oFt(o,t))}var Pa=e=>!!(e&&e.__v_isRef===!0),c=e=>xe(e)?e:e==null?"":Se(e)||He(e)&&(e.toString===Da||!Te(e.toString))?Pa(e)?c(e.value):JSON.stringify(e,_a,2):String(e),_a=(e,t)=>Pa(t)?_a(e,t.value):dn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[i,s],r)=>(o[Fi(i,r)+" =>"]=s,o),{})}:Ut(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>Fi(o))}:Pt(t)?Fi(t):He(t)&&!Se(t)&&!Vs(t)?String(t):t,Fi=(e,t="")=>{var o;return Pt(e)?`Symbol(${(o=e.description)!=null?o:t})`:e};function Cp(e,...t){console.warn(`[Vue warn] ${e}`,...t)}var ut,Ho=class{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&ut&&(ut.active?(this.parent=ut,this.index=(ut.scopes||(ut.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,o;if(this.scopes){let i=this.scopes.slice();for(t=0,o=i.length;t0&&--this._on===0){if(ut===this)ut=this.prevScope;else{let t=ut;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let o,i;for(o=0,i=this.effects.length;o0)return;if(zo){let t=zo;for(zo=void 0;t;){let o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;Bo;){let t=Bo;for(Bo=void 0;t;){let o=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(i){e||(e=i)}t=o}}if(e)throw e}function La(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ua(e){let t,o=e.depsTail,i=o;for(;i;){let s=i.prevDep;i.version===-1?(i===o&&(o=s),or(i),Ep(i)):t=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=s}e.deps=t,e.depsTail=o}function Ki(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Fa(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Fa(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===jo)||(e.globalVersion=jo,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ki(e))))return;e.flags|=2;let t=e.dep,o=Je,i=Bt;Je=e,Bt=!0;try{La(e);let s=e.fn(e._value);(t.version===0||Vt(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{Je=o,Bt=i,Ua(e),e.flags&=-3}}function or(e,t=!1){let{dep:o,prevSub:i,nextSub:s}=e;if(i&&(i.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=i,e.nextSub=void 0),o.subs===e&&(o.subs=i,!i&&o.computed)){o.computed.flags&=-5;for(let r=o.computed.deps;r;r=r.nextDep)or(r,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function Ep(e){let{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}var Bt=!0,Ba=[];function zt(){Ba.push(Bt),Bt=!1}function Ht(){let e=Ba.pop();Bt=e===void 0?!0:e}function Oa(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let o=Je;Je=void 0;try{t()}finally{Je=o}}}var jo=0,Yi=class{constructor(t,o){this.sub=t,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},Go=class{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Je||!Bt||Je===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==Je)o=this.activeLink=new Yi(Je,this),Je.deps?(o.prevDep=Je.depsTail,Je.depsTail.nextDep=o,Je.depsTail=o):Je.deps=Je.depsTail=o,za(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){let i=o.nextDep;i.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=i),o.prevDep=Je.depsTail,o.nextDep=void 0,Je.depsTail.nextDep=o,Je.depsTail=o,Je.deps===o&&(Je.deps=i)}return o}trigger(t){this.version++,jo++,this.notify(t)}notify(t){tr();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{nr()}}};function za(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let i=t.deps;i;i=i.nextDep)za(i)}let o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}var Xi=new WeakMap,Bn=Symbol(""),Ji=Symbol(""),Wo=Symbol("");function mt(e,t,o){if(Bt&&Je){let i=Xi.get(e);i||Xi.set(e,i=new Map);let s=i.get(o);s||(i.set(o,s=new Go),s.map=i,s.key=o),s.track()}}function Qt(e,t,o,i,s,r){let a=Xi.get(e);if(!a){jo++;return}let u=p=>{p&&p.trigger()};if(tr(),t==="clear")a.forEach(u);else{let p=Se(e),v=p&&qs(o);if(p&&o==="length"){let h=Number(i);a.forEach((g,m)=>{(m==="length"||m===Wo||!Pt(m)&&m>=h)&&u(g)})}else switch((o!==void 0||a.has(void 0))&&u(a.get(o)),v&&u(a.get(Wo)),t){case"add":p?v&&u(a.get("length")):(u(a.get(Bn)),dn(e)&&u(a.get(Ji)));break;case"delete":p||(u(a.get(Bn)),dn(e)&&u(a.get(Ji)));break;case"set":dn(e)&&u(a.get(Bn));break}}nr()}function ho(e){let t=ze(e);return t===e||(mt(t,"iterate",Wo),Nt(e))?t:qt(e)?xt(e)?t.map(o=>cn(_t(o))):t.map(cn):t.map(_t)}function Yo(e){return mt(e=ze(e),"iterate",Wo),e}function Jt(e,t){return qt(e)?cn(xt(e)?_t(t):t):_t(t)}var Sp={__proto__:null,[Symbol.iterator](){return Gi(this,Symbol.iterator,e=>Jt(this,e))},concat(...e){return ho(this).concat(...e.map(t=>Se(t)?ho(t):t))},entries(){return Gi(this,"entries",e=>(e[1]=Jt(this,e[1]),e))},every(e,t){return un(this,"every",e,t,void 0,arguments)},filter(e,t){return un(this,"filter",e,t,o=>o.map(i=>Jt(this,i)),arguments)},find(e,t){return un(this,"find",e,t,o=>Jt(this,o),arguments)},findIndex(e,t){return un(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return un(this,"findLast",e,t,o=>Jt(this,o),arguments)},findLastIndex(e,t){return un(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return un(this,"forEach",e,t,void 0,arguments)},includes(...e){return Wi(this,"includes",e)},indexOf(...e){return Wi(this,"indexOf",e)},join(e){return ho(this).join(e)},lastIndexOf(...e){return Wi(this,"lastIndexOf",e)},map(e,t){return un(this,"map",e,t,void 0,arguments)},pop(){return Fo(this,"pop")},push(...e){return Fo(this,"push",e)},reduce(e,...t){return Ma(this,"reduce",e,t)},reduceRight(e,...t){return Ma(this,"reduceRight",e,t)},shift(){return Fo(this,"shift")},some(e,t){return un(this,"some",e,t,void 0,arguments)},splice(...e){return Fo(this,"splice",e)},toReversed(){return ho(this).toReversed()},toSorted(e){return ho(this).toSorted(e)},toSpliced(...e){return ho(this).toSpliced(...e)},unshift(...e){return Fo(this,"unshift",e)},values(){return Gi(this,"values",e=>Jt(this,e))}};function Gi(e,t,o){let i=Yo(e),s=i[t],r=s.call(i);if(i!==e&&!Nt(e)){if(r[Symbol.toStringTag]==="Array Iterator"){let a=Object.create(Object.getPrototypeOf(r));return a.next=()=>Ia(r.next(),o),s!==Ha[t]&&Object.defineProperties(a,{return:{get(){let u=r.return;return typeof u=="function"?u.bind(r):u}},throw:{get(){let u=r.throw;return typeof u=="function"?u.bind(r):u}}}),a}r._next=r.next,r.next=()=>Ia(r._next(),o)}return r}function Ia(e,t){return e.done||(e.value=t(e.value)),e}var Ha=Array.prototype;function un(e,t,o,i,s,r){let a=Yo(e),u=a!==e&&!Nt(e),p=a[t];if(p!==Ha[t]){let g=p.apply(e,r);return u?_t(g):g}let v=o;a!==e&&(u?v=function(g,m){return o.call(this,Jt(e,g),m,e)}:o.length>2&&(v=function(g,m){return o.call(this,g,m,e)}));let h=p.call(a,v,i);return u&&s?s(h):h}function Ma(e,t,o,i){let s=Yo(e),r=s!==e&&!Nt(e),a=o,u=!1;s!==e&&(r?(u=i.length===0,a=function(v,h,g){return u&&(u=!1,v=Jt(e,v)),o.call(this,v,Jt(e,h),g,e)}):o.length>3&&(a=function(v,h,g){return o.call(this,v,h,g,e)}));let p=s[t](a,...i);return u?Jt(e,p):p}function Wi(e,t,o){let i=ze(e);mt(i,"iterate",Wo);let s=i[t](...o);return(s===-1||s===!1)&&Jo(o[0])?(o[0]=ze(o[0]),i[t](...o)):s}function Fo(e,t,o=[]){zt(),tr();let i=ze(e)[t].apply(e,o);return nr(),Ht(),i}var Np=ao("__proto__,__v_isRef,__isVue"),ja=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Pt));function Rp(e){Pt(e)||(e=String(e));let t=ze(this);return mt(t,"has",e),t.hasOwnProperty(e)}var js=class{constructor(t=!1,o=!1){this._isReadonly=t,this._isShallow=o}get(t,o,i){if(o==="__v_skip")return t.__v_skip;let s=this._isReadonly,r=this._isShallow;if(o==="__v_isReactive")return!s;if(o==="__v_isReadonly")return s;if(o==="__v_isShallow")return r;if(o==="__v_raw")return i===(s?r?Vp:Ka:r?Wa:Ga).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;let a=Se(t);if(!s){let p;if(a&&(p=Sp[o]))return p;if(o==="hasOwnProperty")return Rp}let u=Reflect.get(t,o,ht(t)?t:i);if((Pt(o)?ja.has(o):Np(o))||(s||mt(t,"get",o),r))return u;if(ht(u)){let p=a&&qs(o)?u:u.value;return s&&He(p)?Ws(p):p}return He(u)?s?Ws(u):et(u):u}},Gs=class extends js{constructor(t=!1){super(!1,t)}set(t,o,i,s){let r=t[o],a=Se(t)&&qs(o);if(!this._isShallow){let v=qt(r);if(!Nt(i)&&!qt(i)&&(r=ze(r),i=ze(i)),!a&&ht(r)&&!ht(i))return v||(r.value=i),!0}let u=a?Number(o)e,Bs=e=>Reflect.getPrototypeOf(e);function Pp(e,t,o){return function(...i){let s=this.__v_raw,r=ze(s),a=dn(r),u=e==="entries"||e===Symbol.iterator&&a,p=e==="keys"&&a,v=s[e](...i),h=o?Zi:t?cn:_t;return!t&&mt(r,"iterate",p?Ji:Bn),it(Object.create(v),{next(){let{value:g,done:m}=v.next();return m?{value:g,done:m}:{value:u?[h(g[0]),h(g[1])]:h(g),done:m}}})}}function zs(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function _p(e,t){let o={get(s){let r=this.__v_raw,a=ze(r),u=ze(s);e||(Vt(s,u)&&mt(a,"get",s),mt(a,"get",u));let{has:p}=Bs(a),v=t?Zi:e?cn:_t;if(p.call(a,s))return v(r.get(s));if(p.call(a,u))return v(r.get(u));r!==a&&r.get(s)},get size(){let s=this.__v_raw;return!e&&mt(ze(s),"iterate",Bn),s.size},has(s){let r=this.__v_raw,a=ze(r),u=ze(s);return e||(Vt(s,u)&&mt(a,"has",s),mt(a,"has",u)),s===u?r.has(s):r.has(s)||r.has(u)},forEach(s,r){let a=this,u=a.__v_raw,p=ze(u),v=t?Zi:e?cn:_t;return!e&&mt(p,"iterate",Bn),u.forEach((h,g)=>s.call(r,v(h),v(g),a))}};return it(o,e?{add:zs("add"),set:zs("set"),delete:zs("delete"),clear:zs("clear")}:{add(s){let r=ze(this),a=Bs(r),u=ze(s),p=!t&&!Nt(s)&&!qt(s)?u:s;return a.has.call(r,p)||Vt(s,p)&&a.has.call(r,s)||Vt(u,p)&&a.has.call(r,u)||(r.add(p),Qt(r,"add",p,p)),this},set(s,r){!t&&!Nt(r)&&!qt(r)&&(r=ze(r));let a=ze(this),{has:u,get:p}=Bs(a),v=u.call(a,s);v||(s=ze(s),v=u.call(a,s));let h=p.call(a,s);return a.set(s,r),v?Vt(r,h)&&Qt(a,"set",s,r,h):Qt(a,"add",s,r),this},delete(s){let r=ze(this),{has:a,get:u}=Bs(r),p=a.call(r,s);p||(s=ze(s),p=a.call(r,s));let v=u?u.call(r,s):void 0,h=r.delete(s);return p&&Qt(r,"delete",s,void 0,v),h},clear(){let s=ze(this),r=s.size!==0,a=void 0,u=s.clear();return r&&Qt(s,"clear",void 0,void 0,a),u}}),["keys","values","entries",Symbol.iterator].forEach(s=>{o[s]=Pp(s,e,t)}),o}function sr(e,t){let o=_p(e,t);return(i,s,r)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_isShallow"?t:s==="__v_raw"?i:Reflect.get(Fe(o,s)&&s in i?o:i,s,r)}var Op={get:sr(!1,!1)},Ip={get:sr(!1,!0)},Mp={get:sr(!0,!1)};var Ga=new WeakMap,Wa=new WeakMap,Ka=new WeakMap,Vp=new WeakMap;function qp(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function et(e){return qt(e)?e:ir(e,!1,Dp,Op,Ga)}function Xo(e){return ir(e,!1,Tp,Ip,Wa)}function Ws(e){return ir(e,!0,Ap,Mp,Ka)}function ir(e,t,o,i,s){if(!He(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;let r=s.get(e);if(r)return r;let a=qp(Hi(e));if(a===0)return e;let u=new Proxy(e,a===2?i:o);return s.set(e,u),u}function xt(e){return qt(e)?xt(e.__v_raw):!!(e&&e.__v_isReactive)}function qt(e){return!!(e&&e.__v_isReadonly)}function Nt(e){return!!(e&&e.__v_isShallow)}function Jo(e){return e?!!e.__v_raw:!1}function ze(e){let t=e&&e.__v_raw;return t?ze(t):e}function go(e){return!Fe(e,"__v_skip")&&Object.isExtensible(e)&&Ls(e,"__v_skip",!0),e}var _t=e=>He(e)?et(e):e,cn=e=>He(e)?Ws(e):e;function ht(e){return e?e.__v_isRef===!0:!1}function gt(e){return Ya(e,!1)}function Ys(e){return Ya(e,!0)}function Ya(e,t){return ht(e)?e:new xi(e,t)}var xi=class{constructor(t,o){this.dep=new Go,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=o?t:ze(t),this._value=o?t:_t(t),this.__v_isShallow=o}get value(){return this.dep.track(),this._value}set value(t){let o=this._rawValue,i=this.__v_isShallow||Nt(t)||qt(t);t=i?t:ze(t),Vt(t,o)&&(this._rawValue=t,this._value=i?t:_t(t),this.dep.trigger())}};function pn(e){return ht(e)?e.value:e}var $p={get:(e,t,o)=>t==="__v_raw"?e:pn(Reflect.get(e,t,o)),set:(e,t,o,i)=>{let s=e[t];return ht(s)&&!ht(o)?(s.value=o,!0):Reflect.set(e,t,o,i)}};function Xs(e){return xt(e)?e:new Proxy(e,$p)}var er=class{constructor(t,o,i){this.fn=t,this.setter=o,this._value=void 0,this.dep=new Go(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=jo-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!o,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&Je!==this)return $a(this,!0),!0}get value(){let t=this.dep.track();return Fa(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}};function Xa(e,t,o=!1){let i,s;return Te(e)?i=e:(i=e.get,s=e.set),new er(i,s,o)}var Hs={},Ks=new WeakMap,Fn;function Ja(e,t=!1,o=Fn){if(o){let i=Ks.get(o);i||Ks.set(o,i=[]),i.push(e)}}function Qa(e,t,o=Ge){let{immediate:i,deep:s,once:r,scheduler:a,augmentJob:u,call:p}=o,v=M=>{(o.onWarn||Cp)("Invalid watch source: ",M,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},h=M=>s?M:Nt(M)||s===!1||s===0?Zt(M,1):Zt(M),g,m,k,T,w=!1,b=!1;if(ht(e)?(m=()=>e.value,w=Nt(e)):xt(e)?(m=()=>h(e),w=!0):Se(e)?(b=!0,w=e.some(M=>xt(M)||Nt(M)),m=()=>e.map(M=>{if(ht(M))return M.value;if(xt(M))return h(M);if(Te(M))return p?p(M,2):M()})):Te(e)?t?m=p?()=>p(e,2):e:m=()=>{if(k){zt();try{k()}finally{Ht()}}let M=Fn;Fn=g;try{return p?p(e,3,[T]):e(T)}finally{Fn=M}}:m=St,t&&s){let M=m,G=s===!0?1/0:s;m=()=>Zt(M(),G)}let E=Va(),N=()=>{g.stop(),E&&E.active&&qo(E.effects,g)};if(r&&t){let M=t;t=(...G)=>{try{return M(...G)}finally{N()}}}let O=b?new Array(e.length).fill(Hs):Hs,q=M=>{if(!(!(g.flags&1)||!g.dirty&&!M))if(t){let G=g.run();if(M||s||w||(b?G.some((de,re)=>Vt(de,O[re])):Vt(G,O))){let de=Fn;zt();try{k&&k(),Fn=g;let re=[G,O===Hs?void 0:b&&O[0]===Hs?[]:O,T];O=G,p?p(t,3,re):t(...re)}finally{Fn=de,Ht()}}}else g.run()};return u&&u(q),g=new mo(m),g.scheduler=a?()=>a(q,!1):q,T=M=>Ja(M,!1,g),k=g.onStop=()=>{let M=Ks.get(g);if(M){if(p)p(M,4);else for(let G of M)G();Ks.delete(g)}},t?i?q(!0):O=g.run():a?a(q.bind(null,!0),!0):g.run(),N.pause=g.pause.bind(g),N.resume=g.resume.bind(g),N.stop=N,N}function Zt(e,t=1/0,o){if(t<=0||!He(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,ht(e))Zt(e.value,t,o);else if(Se(e))for(let i=0;i{Zt(i,t,o)});else if(Vs(e)){for(let i in e)Zt(e[i],t,o);for(let i of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,i)&&Zt(e[i],t,o)}return e}function ls(e,t,o,i){try{return i?e(...i):e()}catch(s){ds(s,t,o)}}function $t(e,t,o,i){if(Te(e)){let s=ls(e,t,o,i);return s&&zi(s)&&s.catch(r=>{ds(r,t,o)}),s}if(Se(e)){let s=[];for(let r=0;r>>1,s=Ct[i],r=os(s);r=os(o)?Ct.push(e):Ct.splice(zp(t),0,e),e.flags|=1,hl()}}function hl(){Zs||(Zs=fl.then(yl))}function ml(e){if(!Se(e))Sn&&e.id===-1?Sn.splice(vo+1,0,e):e.flags&1||(tn.push(e),e.flags|=1);else for(let t=0;t=t))continue;Ct.splice(i,1),i=e?i-1:jt,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function vl(e,t,o=0){if(tn.length){let i=tn,s=0;if(t){i=[];for(let a=0;aos(a)-os(u));if(tn.length=s,Sn){for(let a=0;ae.id==null?e.flags&2?-1:1/0:e.id;function yl(e){let t=St;try{for(jt=0;jt{i._d&&ni(-1);let r=xs(t),a=jn.length,u;try{u=e(...s)}finally{for(let p=jn.length;p>a;p--)Yl();xs(r),i._d&&ni(1)}return u};return i._n=!0,i._c=!0,i._d=!0,i}function A(e,t){if(Ot===null)return e;let o=ui(Ot),i=e.dirs||(e.dirs=[]);for(let s=0;s1)return o&&Te(t)?t.call(i&&i.proxy):t}}var Gp=Symbol.for("v-scx"),Wp=()=>{{let e=Dt(Gp);return e}};function tt(e,t,o){return wl(e,t,o)}function wl(e,t,o=Ge){let{immediate:i,deep:s,flush:r,once:a}=o,u=it({},o),p=t&&i||!t&&r!=="post",v;if(wo){if(r==="sync"){let k=Wp();v=k.__watcherHandles||(k.__watcherHandles=[])}else if(!p){let k=()=>{};return k.stop=St,k.resume=St,k.pause=St,k}}let h=vt;u.call=(k,T,w)=>$t(k,h,T,w);let g=!1;r==="post"?u.scheduler=k=>{k.i=h,Rt(k,h&&h.suspense)}:r!=="sync"&&(g=!0,u.scheduler=(k,T)=>{T?k():vr(k)}),u.augmentJob=k=>{t&&(k.flags|=4),g&&(k.flags|=2,h&&(k.id=h.uid,k.i=h))};let m=Qa(e,t,u);return wo&&(v?v.push(m):p&&m()),m}function Kp(e,t,o){let i=this.proxy,s=xe(e)?e.includes(".")?kl(i,e):()=>i[e]:e.bind(i,i),r;Te(t)?r=t:(r=t.handler,o=t);let a=ps(this),u=wl(s,r.bind(i),o);return a(),u}function kl(e,t){let o=t.split(".");return()=>{let i=e;for(let s=0;se.__isTeleport;var ar=Symbol("_leaveCb");function Xp(e){let t=e[0];if(e.length>1){let o=!1;for(let i of e)if(i.type!==Gt){t=i,o=!0;break}}return t}function Cl(e){if(!ri(e))return ii(e.type)&&e.children?Xp(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:o}=e;if(o){if(t&16)return o[0];if(t&32&&Te(o.default))return o.default()}}function ss(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;let o=e.component.subTree;ss(ii(o.type)&&Cl(o)||o,t)}else if(e.shapeFlag&128)e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback);else if(e.transition=t,e.type===B&&Se(e.children)){let o=Ml(e.children,!1);o&&ss(o,t)}}function cr(e){if(e.component)return cr(e.component.subTree);if(e.type===B){let t=Se(e.children)&&Ml(e.children,!1);return t?cr(t):void 0}if(e.type!==Gt)return e}function us(e,t){return Te(e)?it({name:e.name},t,{setup:e}):e}function yr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Za(e,t){let o;return!!((o=Object.getOwnPropertyDescriptor(e,t))&&!o.configurable)}var ei=new WeakMap;function xo(e,t,o,i,s=!1){if(Se(e)){e.forEach((w,b)=>xo(w,t&&(Se(t)?t[b]:t),o,i,s));return}if(es(i)&&!s){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&xo(e,t,o,i.component.subTree);return}let r=i.shapeFlag&4?ui(i.component):i.el,a=s?null:r,{i:u,r:p}=e,v=t&&t.r,h=u.refs===Ge?u.refs={}:u.refs,g=u.setupState,m=ze(g),k=g===Ge?Bi:w=>Za(h,w)?!1:Fe(m,w),T=(w,b)=>!(b&&Za(h,b));if(v!=null&&v!==p){if(xa(t),xe(v))h[v]=null,k(v)&&(g[v]=null);else if(ht(v)){let w=t;T(v,w.k)&&(v.value=null),w.k&&(h[w.k]=null)}}if(Te(p))ls(p,u,12,[a,h]);else{let w=xe(p),b=ht(p);if(w||b){let E=()=>{if(e.f){let N=w?k(p)?g[p]:h[p]:T(p)||!e.k?p.value:h[e.k];if(s)Se(N)&&qo(N,r);else if(Se(N))N.includes(r)||N.push(r);else if(w)h[p]=[r],k(p)&&(g[p]=h[p]);else{let O=[r];T(p,e.k)&&(p.value=O),e.k&&(h[e.k]=O)}}else w?(h[p]=a,k(p)&&(g[p]=a)):b&&(T(p,e.k)&&(p.value=a),e.k&&(h[e.k]=a))};if(a){let N=()=>{E(),ei.delete(e)};N.id=-1,ei.set(e,N),Rt(N,o)}else xa(e),E()}}}function xa(e){let t=ei.get(e);t&&(t.flags|=8,ei.delete(e))}var el=e=>e.nodeType===8;var Ij=Uo().requestIdleCallback||(e=>setTimeout(e,1)),Mj=Uo().cancelIdleCallback||(e=>clearTimeout(e));function Jp(e,t){if(el(e)&&e.data==="["){let o=1,i=e.nextSibling;for(;i;){if(i.nodeType===1){if(t(i)===!1)break}else if(el(i))if(i.data==="]"){if(--o===0)break}else i.data==="["&&o++;i=i.nextSibling}}else t(e)}var es=e=>!!e.type.__asyncLoader;function El(e){Te(e)&&(e={loader:e});let{loader:t,loadingComponent:o,errorComponent:i,delay:s=200,hydrate:r,timeout:a,suspensible:u=!0,onError:p}=e,v=null,h,g=0,m=()=>(g++,v=null,k()),k=()=>{let T;return v||(T=v=t().catch(w=>{if(w=w instanceof Error?w:new Error(String(w)),p)return new Promise((b,E)=>{p(w,()=>b(m()),()=>E(w),g+1)});throw w}).then(w=>T!==v&&v?v:(w&&(w.__esModule||w[Symbol.toStringTag]==="Module")&&(w=w.default),h=w,w)))};return us({name:"AsyncComponentWrapper",__asyncLoader:k,__asyncHydrate(T,w,b){let E=T.isConnected,N=!1;(w.bu||(w.bu=[])).push(()=>N=!0);let O=()=>{N||!T.parentNode||E&&!T.isConnected||b()},q=r?()=>{let M=r(O,G=>Jp(T,G));M&&(w.bum||(w.bum=[])).push(M)}:O;h?q():k().then(()=>!w.isUnmounted&&q())},get __asyncResolved(){return h},setup(){let T=vt;if(yr(T),h)return()=>Js(h,T);let w=M=>{v=null,ds(M,T,13,!i)};if(u&&T.suspense||wo)return k().then(M=>()=>Js(M,T)).catch(M=>(w(M),()=>i?Ue(i,{error:M}):null));let b=gt(!1),E=gt(),N=gt(!!s),O,q;return cs(()=>{O!=null&&clearTimeout(O),q!=null&&clearTimeout(q)}),s&&(q=setTimeout(()=>{T.isUnmounted||(N.value=!1)},s)),a!=null&&(O=setTimeout(()=>{if(!T.isUnmounted&&!b.value&&!E.value){let M=new Error(`Async component timed out after ${a}ms.`);w(M),E.value=M}},a)),k().then(()=>{T.isUnmounted||(b.value=!0,T.parent&&ri(T.parent.vnode)&&T.parent.update())}).catch(M=>{if(T.isUnmounted){v=null;return}w(M),E.value=M}),()=>{if(b.value&&h)return Js(h,T);if(E.value&&i)return Ue(i,{error:E.value});if(o&&!N.value)return Js(o,T)}}})}function Js(e,t){let{ref:o,props:i,children:s,ce:r}=t.vnode,a=Ue(e,i,s);return a.ref=o,a.ce=r,delete t.vnode.ce,a}var ri=e=>e.type.__isKeepAlive;function Sl(e,t){Rl(e,"a",t)}function Nl(e,t){Rl(e,"da",t)}function Rl(e,t,o=vt){let i=e.__wdc||(e.__wdc=()=>{let s=o;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(ai(t,i,o),o){let s=o.parent;for(;s&&s.parent;)ri(s.parent.vnode)&&Qp(i,t,o,s),s=s.parent}}function Qp(e,t,o,i){let s=ai(t,e,i,!0);cs(()=>{qo(i[t],s)},o)}function ai(e,t,o=vt,i=!1){if(o){let s=o[e]||(o[e]=[]),r=t.__weh||(t.__weh=(...a)=>{zt();let u=ps(o),p=$t(t,o,e,a);return u(),Ht(),p});return i?s.unshift(r):s.push(r),r}}var hn=e=>(t,o=vt)=>{(!wo||e==="sp")&&ai(e,(...i)=>t(...i),o)},Zp=hn("bm"),on=hn("m"),Dl=hn("bu"),Al=hn("u"),Wn=hn("bum"),cs=hn("um"),xp=hn("sp"),ef=hn("rtg"),tf=hn("rtc");function nf(e,t=vt){ai("ec",e,t)}var Tl="components",of="directives";function at(e,t){return Pl(Tl,e,!0,t)||e}var sf=Symbol.for("v-ndc");function De(e){return Pl(of,e)}function Pl(e,t,o=!0,i=!1){let s=Ot||vt;if(s){let r=s.type;if(e===Tl){let u=zf(r,!1);if(u&&(u===t||u===dt(t)||u===Un(dt(t))))return r}let a=tl(s[e]||r[e],t)||tl(s.appContext[e],t);return!a&&i?r:a}}function tl(e,t){return e&&(e[t]||e[dt(t)]||e[Un(dt(t))])}function ie(e,t,o,i){let s,r=o&&o[i],a=Se(e);if(a||xe(e)){let u=a&&xt(e),p=!1,v=!1;u&&(p=!Nt(e),v=qt(e),e=Yo(e)),s=new Array(e.length);for(let h=0,g=e.length;ht(u,p,void 0,r&&r[p]));else{let u=Object.keys(e);s=new Array(u.length);for(let p=0,v=u.length;pe?Zl(e)?ui(e):pr(e.parent):null;var ts=it(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>pr(e.parent),$root:e=>pr(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>br(e),$forceUpdate:e=>e.f||(e.f=()=>{vr(e.update)}),$nextTick:e=>e.n||(e.n=nt.bind(e.proxy)),$watch:e=>Kp.bind(e)});var lr=(e,t)=>e!==Ge&&!e.__isScriptSetup&&Fe(e,t),rf={get({_:e},t){if(t==="__v_skip")return!0;let{ctx:o,setupState:i,data:s,props:r,accessCache:a,type:u,appContext:p}=e;if(t[0]!=="$"){let m=a[t];if(m!==void 0)switch(m){case 1:return i[t];case 2:return s[t];case 4:return o[t];case 3:return r[t]}else{if(lr(i,t))return a[t]=1,i[t];if(s!==Ge&&Fe(s,t))return a[t]=2,s[t];if(Fe(r,t))return a[t]=3,r[t];if(o!==Ge&&Fe(o,t))return a[t]=4,o[t];fr&&(a[t]=0)}}let v=ts[t],h,g;if(v)return t==="$attrs"&&mt(e.attrs,"get",""),v(e);if((h=u.__cssModules)&&(h=h[t]))return h;if(o!==Ge&&Fe(o,t))return a[t]=4,o[t];if(g=p.config.globalProperties,Fe(g,t))return g[t]},set({_:e},t,o){let{data:i,setupState:s,ctx:r}=e;return lr(s,t)?(s[t]=o,!0):i!==Ge&&Fe(i,t)?(i[t]=o,!0):Fe(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:i,appContext:s,props:r,type:a}},u){let p;return!!(o[u]||e!==Ge&&u[0]!=="$"&&Fe(e,u)||lr(t,u)||Fe(r,u)||Fe(i,u)||Fe(ts,u)||Fe(s.config.globalProperties,u)||(p=a.__cssModules)&&p[u])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:Fe(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function nl(e){return Se(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}var fr=!0;function af(e){let t=br(e),o=e.proxy,i=e.ctx;fr=!1,t.beforeCreate&&ol(t.beforeCreate,e,"bc");let{data:s,computed:r,methods:a,watch:u,provide:p,inject:v,created:h,beforeMount:g,mounted:m,beforeUpdate:k,updated:T,activated:w,deactivated:b,beforeDestroy:E,beforeUnmount:N,destroyed:O,unmounted:q,render:M,renderTracked:G,renderTriggered:de,errorCaptured:re,serverPrefetch:D,expose:X,inheritAttrs:le,components:Ee,directives:ae,filters:he}=t;if(v&&lf(v,i,null),a)for(let Ne in a){let Re=a[Ne];Te(Re)&&(i[Ne]=Re.bind(o))}if(s){let Ne=s.call(o,o);He(Ne)&&(e.data=et(Ne))}if(fr=!0,r)for(let Ne in r){let Re=r[Ne],Qe=Te(Re)?Re.bind(o,o):Te(Re.get)?Re.get.bind(o,o):St,Ke=!Te(Re)&&Te(Re.set)?Re.set.bind(o):St,rt=yt({get:Qe,set:Ke});Object.defineProperty(i,Ne,{enumerable:!0,configurable:!0,get:()=>rt.value,set:Ze=>rt.value=Ze})}if(u)for(let Ne in u)_l(u[Ne],i,o,Ne);if(p){let Ne=Te(p)?p.call(o):p;Reflect.ownKeys(Ne).forEach(Re=>{Gn(Re,Ne[Re])})}h&&ol(h,e,"c");function Pe(Ne,Re){Se(Re)?Re.forEach(Qe=>Ne(Qe.bind(o))):Re&&Ne(Re.bind(o))}if(Pe(Zp,g),Pe(on,m),Pe(Dl,k),Pe(Al,T),Pe(Sl,w),Pe(Nl,b),Pe(nf,re),Pe(tf,G),Pe(ef,de),Pe(Wn,N),Pe(cs,q),Pe(xp,D),Se(X))if(X.length){let Ne=e.exposed||(e.exposed={});X.forEach(Re=>{Object.defineProperty(Ne,Re,{get:()=>o[Re],set:Qe=>o[Re]=Qe,enumerable:!0})})}else e.exposed||(e.exposed={});M&&e.render===St&&(e.render=M),le!=null&&(e.inheritAttrs=le),Ee&&(e.components=Ee),ae&&(e.directives=ae),D&&yr(e)}function lf(e,t,o=St){Se(e)&&(e=hr(e));for(let i in e){let s=e[i],r;He(s)?"default"in s?r=Dt(s.from||i,s.default,!0):r=Dt(s.from||i):r=Dt(s),ht(r)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>r.value,set:a=>r.value=a}):t[i]=r}}function ol(e,t,o){$t(Se(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,o)}function _l(e,t,o,i){let s=i.includes(".")?kl(o,i):()=>o[i];if(xe(e)){let r=t[e];Te(r)&&tt(s,r)}else if(Te(e))tt(s,e.bind(o));else if(He(e))if(Se(e))e.forEach(r=>_l(r,t,o,i));else{let r=Te(e.handler)?e.handler.bind(o):t[e.handler];Te(r)&&tt(s,r,e)}}function br(e){let t=e.type,{mixins:o,extends:i}=t,{mixins:s,optionsCache:r,config:{optionMergeStrategies:a}}=e.appContext,u=r.get(t),p;return u?p=u:!s.length&&!o&&!i?p=t:(p={},s.length&&s.forEach(v=>ti(p,v,a,!0)),ti(p,t,a)),He(t)&&r.set(t,p),p}function ti(e,t,o,i=!1){let{mixins:s,extends:r}=t;r&&ti(e,r,o,!0),s&&s.forEach(a=>ti(e,a,o,!0));for(let a in t)if(!(i&&a==="expose")){let u=df[a]||o&&o[a];e[a]=u?u(e[a],t[a]):t[a]}return e}var df={data:sl,props:il,emits:il,methods:Zo,computed:Zo,beforeCreate:kt,created:kt,beforeMount:kt,mounted:kt,beforeUpdate:kt,updated:kt,beforeDestroy:kt,beforeUnmount:kt,destroyed:kt,unmounted:kt,activated:kt,deactivated:kt,errorCaptured:kt,serverPrefetch:kt,components:Zo,directives:Zo,watch:cf,provide:sl,inject:uf};function sl(e,t){return t?e?function(){return it(Te(e)?e.call(this,this):e,Te(t)?t.call(this,this):t)}:t:e}function uf(e,t){return Zo(hr(e),hr(t))}function hr(e){if(Se(e)){let t={};for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${dt(t)}Modifiers`]||e[`${Xt(t)}Modifiers`];function mf(e,t,...o){if(e.isUnmounted)return;let i=e.vnode.props||Ge,s=o,r=t.startsWith("update:"),a=r&&hf(i,t.slice(7));a&&(a.trim&&(s=o.map(h=>xe(h)?h.trim():h)),a.number&&(s=s.map(fo)));let u,p=i[u=Lo(t)]||i[u=Lo(dt(t))];!p&&r&&(p=i[u=Lo(Xt(t))]),p&&$t(p,e,6,s);let v=i[u+"Once"];if(v){if(!e.emitted)e.emitted={};else if(e.emitted[u])return;e.emitted[u]=!0,$t(v,e,6,s)}}var gf=new WeakMap;function Il(e,t,o=!1){let i=o?gf:t.emitsCache,s=i.get(e);if(s!==void 0)return s;let r=e.emits,a={},u=!1;if(!Te(e)){let p=v=>{let h=Il(v,t,!0);h&&(u=!0,it(a,h))};!o&&t.mixins.length&&t.mixins.forEach(p),e.extends&&p(e.extends),e.mixins&&e.mixins.forEach(p)}return!r&&!u?(He(e)&&i.set(e,null),null):(Se(r)?r.forEach(p=>a[p]=null):it(a,r),He(e)&&i.set(e,a),a)}function li(e,t){return!e||!lo(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),Fe(e,t[0].toLowerCase()+t.slice(1))||Fe(e,Xt(t))||Fe(e,t))}function dr(e){let{type:t,vnode:o,proxy:i,withProxy:s,propsOptions:[r],slots:a,attrs:u,emit:p,render:v,renderCache:h,props:g,data:m,setupState:k,ctx:T,inheritAttrs:w}=e,b=xs(e),E,N;try{if(o.shapeFlag&4){let M=s||i,G=M;E=nn(v.call(G,M,h,g,k,m,T)),N=u}else{let M=t;E=nn(M.length>1?M(g,{attrs:u,slots:a,emit:p}):M(g,null)),N=t.props?u:vf(u)}}catch(M){jn.length=0,ds(M,e,1),E=Ue(Gt)}let O=E,q;if(N&&w!==!1){let M=Object.keys(N),{shapeFlag:G}=O;M.length&&G&7&&(r&&M.some(uo)&&(N=yf(N,r)),O=bo(O,N,!1,!0))}if(o.dirs&&(O=bo(O,null,!1,!0),O.dirs=O.dirs?O.dirs.concat(o.dirs):o.dirs),o.transition){let M=ii(O.type)&&Cl(O)||O;ss(M,o.transition)}return E=O,xs(b),E}function Ml(e,t=!0){let o;for(let i=0;i{let t;for(let o in e)(o==="class"||o==="style"||lo(o))&&((t||(t={}))[o]=e[o]);return t},yf=(e,t)=>{let o={};for(let i in e)(!uo(i)||!(i.slice(9)in t))&&(o[i]=e[i]);return o};function bf(e,t,o){let{props:i,children:s,component:r}=e,{props:a,children:u,patchFlag:p}=t,v=r.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&p>=0){if(p&1024)return!0;if(p&16)return i?rl(i,a,v):!!a;if(p&8){let h=t.dynamicProps;for(let g=0;gObject.create(ql),Ll=e=>Object.getPrototypeOf(e)===ql;function kf(e,t,o,i=!1){let s={},r=$l();e.propsDefaults=Object.create(null),Ul(e,t,s,r);for(let a in e.propsOptions[0])a in s||(s[a]=void 0);o?e.props=i?s:Xo(s):e.type.props?e.props=s:e.props=r,e.attrs=r}function Cf(e,t,o,i){let{props:s,attrs:r,vnode:{patchFlag:a}}=e,u=ze(s),[p]=e.propsOptions,v=!1;if((i||a>0)&&!(a&16)){if(a&8){let h=e.vnode.dynamicProps;for(let g=0;g{p=!0;let[m,k]=Fl(g,t,!0);it(a,m),k&&u.push(...k)};!o&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!r&&!p)return He(e)&&i.set(e,En),En;if(Se(r))for(let h=0;he==="_"||e==="_ctx"||e==="$stable",kr=e=>Se(e)?e.map(nn):[nn(e)],Sf=(e,t,o)=>{if(t._n)return t;let i=jp((...s)=>kr(t(...s)),o);return i._c=!1,i},Bl=(e,t,o)=>{let i=e._ctx;for(let s in e){if(wr(s))continue;let r=e[s];if(Te(r))t[s]=Sf(s,r,i);else if(r!=null){let a=kr(r);t[s]=()=>a}}},zl=(e,t)=>{let o=kr(t);e.slots.default=()=>o},Hl=(e,t,o)=>{for(let i in t)(o||!wr(i))&&(e[i]=t[i])},Nf=(e,t,o)=>{let i=e.slots=$l();if(e.vnode.shapeFlag&32){let s=t._;s?(Hl(i,t,o),o&&Ls(i,"_",s,!0)):Bl(t,i)}else t&&zl(e,t)},Rf=(e,t,o)=>{let{vnode:i,slots:s}=e,r=!0,a=Ge;if(i.shapeFlag&32){let u=t._;u?o&&u===1?r=!1:Hl(s,t,o):(r=!t.$stable,Bl(t,s)),a=t}else t&&(zl(e,t),a={default:1});if(r)for(let u in s)!wr(u)&&a[u]==null&&delete s[u]};function Df(){let e=[]}var Rt=_f;function jl(e){return Af(e)}function Af(e,t){Df();let o=Uo();o.__VUE__=!0;let{insert:i,remove:s,patchProp:r,createElement:a,createText:u,createComment:p,setText:v,setElementText:h,parentNode:g,nextSibling:m,setScopeId:k=St,insertStaticContent:T}=e,w=(C,R,I,W=null,z=null,Y=null,V=void 0,j=null,ee=!!R.dynamicChildren)=>{if(C===R)return;C&&!Qo(C,R)&&(W=x(C),U(C,z,Y,!0),C=null),R.patchFlag===-2&&(ee=!1,R.dynamicChildren=null),R.dynamicChildren&&C&&C.dynamicChildren&&C.dynamicChildren.hasOnce&&(R.dynamicChildren===En&&(R.dynamicChildren=[]),R.dynamicChildren.hasOnce=!0);let{type:K,ref:me,shapeFlag:ne}=R;switch(K){case di:b(C,R,I,W);break;case Gt:E(C,R,I,W);break;case ns:C==null&&N(R,I,W,V);break;case B:ae(C,R,I,W,z,Y,V,j,ee);break;default:ne&1?G(C,R,I,W,z,Y,V,j,ee):ne&6?he(C,R,I,W,z,Y,V,j,ee):(ne&64||ne&128)&&K.process(C,R,I,W,z,Y,V,j,ee,ue)}me!=null&&z?xo(me,C&&C.ref,Y,R||C,!R):me==null&&C&&C.ref!=null&&xo(C.ref,null,Y,C,!0)},b=(C,R,I,W)=>{if(C==null)i(R.el=u(R.children),I,W);else{let z=R.el=C.el;R.children!==C.children&&v(z,R.children)}},E=(C,R,I,W)=>{C==null?i(R.el=p(R.children||""),I,W):R.el=C.el},N=(C,R,I,W)=>{[C.el,C.anchor]=T(C.children,R,I,W,C.el,C.anchor)},O=(C,R,I,W)=>{if(R.children!==C.children){let z=m(C.anchor);M(C),[R.el,R.anchor]=T(R.children,I,z,W)}else R.el=C.el,R.anchor=C.anchor},q=({el:C,anchor:R},I,W)=>{let z;for(;C&&C!==R;)z=m(C),i(C,I,W),C=z;i(R,I,W)},M=({el:C,anchor:R})=>{let I;for(;C&&C!==R;)I=m(C),s(C),C=I;s(R)},G=(C,R,I,W,z,Y,V,j,ee)=>{if(R.type==="svg"?V="svg":R.type==="math"&&(V="mathml"),C==null)de(R,I,W,z,Y,V,j,ee);else{let K=C.el&&C.el._isVueCE?C.el:null;try{K&&K._beginPatch(),X(C,R,z,Y,V,j,ee)}finally{K&&K._endPatch()}}},de=(C,R,I,W,z,Y,V,j)=>{let ee,K,{props:me,shapeFlag:ne,transition:fe,dirs:ye}=C;if(ee=C.el=a(C.type,Y,me&&me.is,me),ne&8?h(ee,C.children):ne&16&&D(C.children,ee,null,W,z,ur(C,Y),V,j),ye&&zn(C,null,W,"created"),re(ee,C,C.scopeId,V,W),me){for(let Le in me)Le!=="value"&&!co(Le)&&r(ee,Le,null,me[Le],Y,W);"value"in me&&r(ee,"value",null,me.value,Y),(K=me.onVnodeBeforeMount)&&en(K,W,C)}ye&&zn(C,null,W,"beforeMount");let Ae=Tf(z,fe);Ae&&fe.beforeEnter(ee),i(ee,R,I),((K=me&&me.onVnodeMounted)||Ae||ye)&&Rt(()=>{let Be;K&&en(K,W,C),Ae&&fe.enter(ee),ye&&zn(C,null,W,"mounted")},z)},re=(C,R,I,W,z)=>{if(I&&k(C,I),W)for(let Y=0;Y{for(let K=ee;K{let j=R.el=C.el,{patchFlag:ee,dynamicChildren:K,dirs:me}=R;ee|=C.patchFlag&16;let ne=C.props||Ge,fe=R.props||Ge,ye;if(I&&Hn(I,!1),(ye=fe.onVnodeBeforeUpdate)&&en(ye,I,R,C),me&&zn(R,C,I,"beforeUpdate"),I&&Hn(I,!0),K&&(!C.dynamicChildren||C.dynamicChildren.length!==K.length)&&(ee=0,V=!1,K=null),(ne.innerHTML&&fe.innerHTML==null||ne.textContent&&fe.textContent==null)&&h(j,""),K?le(C.dynamicChildren,K,j,I,W,ur(R,z),Y):V||Qe(C,R,j,null,I,W,ur(R,z),Y,!1),ee>0){if(ee&16)Ee(j,ne,fe,I,z);else if(ee&2&&ne.class!==fe.class&&r(j,"class",null,fe.class,z),ee&4&&r(j,"style",ne.style,fe.style,z),ee&8){let Ae=R.dynamicProps;for(let Le=0;Le{ye&&en(ye,I,R,C),me&&zn(R,C,I,"updated")},W)},le=(C,R,I,W,z,Y,V)=>{for(let j=0;j{if(R!==I){if(R!==Ge)for(let Y in R)!co(Y)&&!(Y in I)&&r(C,Y,R[Y],null,z,W);for(let Y in I){if(co(Y))continue;let V=I[Y],j=R[Y];V!==j&&Y!=="value"&&r(C,Y,j,V,z,W)}"value"in I&&r(C,"value",R.value,I.value,z)}},ae=(C,R,I,W,z,Y,V,j,ee)=>{let K=R.el=C?C.el:u(""),me=R.anchor=C?C.anchor:u(""),{patchFlag:ne,dynamicChildren:fe,slotScopeIds:ye}=R;ye&&(j=j?j.concat(ye):ye),C==null?(i(K,I,W),i(me,I,W),D(R.children||[],I,me,z,Y,V,j,ee)):ne>0&&ne&64&&fe&&C.dynamicChildren&&C.dynamicChildren.length===fe.length?(le(C.dynamicChildren,fe,I,z,Y,V,j),(R.key!=null||z&&R===z.subTree)&&Gl(C,R,!0)):Qe(C,R,I,me,z,Y,V,j,ee)},he=(C,R,I,W,z,Y,V,j,ee)=>{R.slotScopeIds=j,C==null?R.shapeFlag&512?z.ctx.activate(R,I,W,V,ee):Ce(R,I,W,z,Y,V,ee):Pe(C,R,ee)},Ce=(C,R,I,W,z,Y,V)=>{let j=C.component=$f(C,W,z);if(ri(C)&&(j.ctx.renderer=ue),Lf(j,!1,V),j.asyncDep){if(z&&z.registerDep(j,Ne,V,Y),!C.el){let ee=j.subTree=Ue(Gt);E(null,ee,R,I),C.placeholder=ee.el}}else Ne(j,C,R,I,z,Y,V)},Pe=(C,R,I)=>{let W=R.component=C.component;if(bf(C,R,I))if(W.asyncDep&&!W.asyncResolved){R.el=C.el,R.placeholder=C.placeholder,Re(W,R,I);return}else W.next=R,W.update();else R.el=C.el,R.placeholder=C.placeholder,W.vnode=R},Ne=(C,R,I,W,z,Y,V)=>{let j=()=>{if(C.isMounted){let{next:ne,bu:fe,u:ye,parent:Ae,vnode:Le}=C;{let lt=Wl(C);if(lt){ne&&(ne.el=Le.el,Re(C,ne,V)),lt.asyncDep.then(()=>{Rt(()=>{C.isUnmounted||K()},z)});return}}let Be=ne,st;Hn(C,!1),ne?(ne.el=Le.el,Re(C,ne,V)):ne=Le,fe&&po(fe),(st=ne.props&&ne.props.onVnodeBeforeUpdate)&&en(st,Ae,ne,Le),Hn(C,!0);let Ye=dr(C),bt=C.subTree;C.subTree=Ye,w(bt,Ye,g(bt.el),x(bt),C,z,Y),ne.el=Ye.el,Be===null&&wf(C,Ye.el),ye&&Rt(ye,z),(st=ne.props&&ne.props.onVnodeUpdated)&&Rt(()=>en(st,Ae,ne,Le),z)}else{let ne,{el:fe,props:ye}=R,{bm:Ae,m:Le,parent:Be,root:st,type:Ye}=C,bt=es(R);if(Hn(C,!1),Ae&&po(Ae),!bt&&(ne=ye&&ye.onVnodeBeforeMount)&&en(ne,Be,R),Hn(C,!0),fe&&Oe){let lt=()=>{C.subTree=dr(C),Oe(fe,C.subTree,C,z,null)};bt&&Ye.__asyncHydrate?Ye.__asyncHydrate(fe,C,lt):lt()}else{st.ce&&st.ce._hasShadowRoot()&&st.ce._injectChildStyle(Ye,C.parent?C.parent.type:void 0);let lt=C.subTree=dr(C);w(null,lt,I,W,C,z,Y),R.el=lt.el}if(Le&&Rt(Le,z),!bt&&(ne=ye&&ye.onVnodeMounted)){let lt=R;Rt(()=>en(ne,Be,lt),z)}(R.shapeFlag&256||Be&&es(Be.vnode)&&Be.vnode.shapeFlag&256)&&C.a&&Rt(C.a,z),C.isMounted=!0,R=I=W=null}};C.scope.on();let ee=C.effect=new mo(j);C.scope.off();let K=C.update=ee.run.bind(ee),me=C.job=ee.runIfDirty.bind(ee);me.i=C,me.id=C.uid,ee.scheduler=()=>vr(me),Hn(C,!0),K()},Re=(C,R,I)=>{R.component=C;let W=C.vnode.props;C.vnode=R,C.next=null,Cf(C,R.props,W,I),Rf(C,R.children,I),zt(),gl(C),Ht()},Qe=(C,R,I,W,z,Y,V,j,ee=!1)=>{let K=C&&C.children,me=C?C.shapeFlag:0,ne=R.children,{patchFlag:fe,shapeFlag:ye}=R;if(fe>0){if(fe&128){rt(K,ne,I,W,z,Y,V,j,ee);return}else if(fe&256){Ke(K,ne,I,W,z,Y,V,j,ee);return}}ye&8?(me&16&&L(K,z,Y),ne!==K&&h(I,ne)):me&16?ye&16?rt(K,ne,I,W,z,Y,V,j,ee):L(K,z,Y,!0):(me&8&&h(I,""),ye&16&&D(ne,I,W,z,Y,V,j,ee))},Ke=(C,R,I,W,z,Y,V,j,ee)=>{C=C||En,R=R||En;let K=C.length,me=R.length,ne=Math.min(K,me),fe;for(fe=0;feme?L(C,z,Y,!0,!1,ne):D(R,I,W,z,Y,V,j,ee,ne)},rt=(C,R,I,W,z,Y,V,j,ee)=>{let K=0,me=R.length,ne=C.length-1,fe=me-1;for(;K<=ne&&K<=fe;){let ye=C[K],Ae=R[K]=ee?fn(R[K]):nn(R[K]);if(Qo(ye,Ae))w(ye,Ae,I,null,z,Y,V,j,ee);else break;K++}for(;K<=ne&&K<=fe;){let ye=C[ne],Ae=R[fe]=ee?fn(R[fe]):nn(R[fe]);if(Qo(ye,Ae))w(ye,Ae,I,null,z,Y,V,j,ee);else break;ne--,fe--}if(K>ne){if(K<=fe){let ye=fe+1,Ae=yefe)for(;K<=ne;)U(C[K],z,Y,!0),K++;else{let ye=K,Ae=K,Le=new Map;for(K=Ae;K<=fe;K++){let F=R[K]=ee?fn(R[K]):nn(R[K]);F.key!=null&&Le.set(F.key,K)}let Be,st=0,Ye=fe-Ae+1,bt=!1,lt=0,S=new Array(Ye);for(K=0;K=Ye){U(F,z,Y,!0);continue}let Q;if(F.key!=null)Q=Le.get(F.key);else for(Be=Ae;Be<=fe;Be++)if(S[Be-Ae]===0&&Qo(F,R[Be])){Q=Be;break}Q===void 0?U(F,z,Y,!0):(S[Q-Ae]=K+1,Q>=lt?lt=Q:bt=!0,w(F,R[Q],I,null,z,Y,V,j,ee),st++)}let _=bt?Pf(S):En;for(Be=_.length-1,K=Ye-1;K>=0;K--){let F=Ae+K,Q=R[F],pe=R[F+1],be=F+1{let{el:Y,type:V,transition:j,children:ee,shapeFlag:K}=C;if(K&6){Ze(C.component.subTree,R,I,W);return}if(K&128){C.suspense.move(R,I,W);return}if(K&64){V.move(C,R,I,ue);return}if(V===B){i(Y,R,I);for(let ne=0;nej.enter(Y),z));else{let{leave:ne,delayLeave:fe,afterLeave:ye}=j,Ae=()=>{C.ctx.isUnmounted?s(Y):i(Y,R,I)},Le=()=>{let Be=Y._isLeaving||!!Y[ar];Y._isLeaving&&Y[ar](!0),j.persisted&&!Be?Ae():ne(Y,()=>{Ae(),ye&&ye()})};fe?fe(Y,Ae,Le):Le()}else i(Y,R,I)},U=(C,R,I,W=!1,z=!1)=>{let{type:Y,props:V,ref:j,children:ee,dynamicChildren:K,shapeFlag:me,patchFlag:ne,dirs:fe,cacheIndex:ye,memo:Ae}=C;if((ne===-2||K&&K.hasOnce)&&(z=!1),j!=null&&(zt(),xo(j,null,I,C,!0),Ht()),ye!=null&&(!C.ctx||C.ctx===R)&&(R.renderCache[ye]=void 0),me&256){R.ctx.deactivate(C);return}let Le=me&1&&fe,Be=!es(C),st;if(Be&&(st=V&&V.onVnodeBeforeUnmount)&&en(st,R,C),me&6)te(C.component,I,W);else{if(me&128){C.suspense.unmount(I,W);return}Le&&zn(C,null,R,"beforeUnmount"),me&64?C.type.remove(C,R,I,ue,W):K&&!K.hasOnce&&(Y!==B||ne>0&&ne&64)?L(K,R,I,!1,!0):(Y===B&&ne&384||!z&&me&16)&&L(ee,R,I),W&&oe(C)}let Ye=Ae!=null&&ye==null;(Be&&(st=V&&V.onVnodeUnmounted)||Le||Ye)&&Rt(()=>{st&&en(st,R,C),Le&&zn(C,null,R,"unmounted"),Ye&&(C.el=null)},I)},oe=C=>{let{type:R,el:I,anchor:W,transition:z}=C,Y=R===B;if(Y&&!z){Z(I,W);return}if(R===ns){M(C),z&&!z.persisted&&z.afterLeave&&z.afterLeave();return}let V=Y?cr(C):C,j=()=>{Y?g(I)&&Z(I,W):s(I),z&&!z.persisted&&z.afterLeave&&z.afterLeave()};if(V&&V.shapeFlag&1&&z&&!z.persisted){let{leave:ee,delayLeave:K}=z,me=V.el,ne=()=>ee(me,j);K?K(me,j,ne):ne()}else j()},Z=(C,R)=>{let I;for(;C!==R;)I=m(C),s(C),C=I;s(R)},te=(C,R,I)=>{let{bum:W,scope:z,job:Y,subTree:V,um:j,m:ee,a:K}=C;ll(ee),ll(K),W&&po(W),z.stop(),Y?(Y.flags|=8,U(V,C,R,I)):C.vnode.el&&V&&(V.transition=C.vnode.transition,U(V,C,R,I)),j&&Rt(j,R),Rt(()=>{C.isUnmounted=!0},R)},L=(C,R,I,W=!1,z=!1,Y=0)=>{for(let V=Y;V{if(C.shapeFlag&6)return x(C.component.subTree);if(C.shapeFlag&128)return C.suspense.next();let R=m(C.anchor||C.el),I=R&&R[Yp];return I?m(I):R},H=(C,R,I)=>{let W=C&&R._vnode?void 0:C&&C.component?C.component.uid:qf();Hp(()=>{C==null?R._vnode&&U(R._vnode,null,null,!0):w(R._vnode||null,C,R,null,null,null,I),R._vnode=C},W)},ue={p:w,um:U,m:Ze,r:oe,mt:Ce,mc:D,pc:Qe,pbc:le,n:x,o:e},we,Oe;return t&&([we,Oe]=t(ue)),{render:H,hydrate:we,createApp:ff(H,we)}}function ur({type:e,props:t},o){return o==="svg"&&e==="foreignObject"||o==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:o}function Hn({effect:e,job:t},o){o?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Tf(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Gl(e,t,o=!1){let i=e.children,s=t.children;if(Se(i)&&Se(s))for(let r=0;r>1,e[o[u]]0&&(t[i]=o[r-1]),o[r]=i)}}for(r=o.length,a=o[r-1];r-- >0;)o[r]=a,a=t[a];return o}function Wl(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Wl(t)}function ll(e){if(e)for(let t=0;te.__isSuspense;function _f(e,t){t&&t.pendingBranch?Se(e)?t.effects.push(...e):t.effects.push(e):ml(e)}var B=Symbol.for("v-fgt"),di=Symbol.for("v-txt"),Gt=Symbol.for("v-cmt"),ns=Symbol.for("v-stc"),jn=[],It=null;function l(e=!1){jn.push(It=e?null:[])}function Yl(){jn.pop(),It=jn[jn.length-1]||null}var is=1;function ni(e,t=!1){is+=e,e<0&&It&&t&&(It.hasOnce=!0)}function Xl(e){return e.dynamicChildren=is>0?It||En:null,Yl(),is>0&&It&&It.push(e),e}function d(e,t,o,i,s,r){return Xl(n(e,t,o,i,s,r,!0))}function sn(e,t,o,i,s){return Xl(Ue(e,t,o,i,s,!0))}function rs(e){return e?e.__v_isVNode===!0:!1}function Qo(e,t){return e.type===t.type&&e.key===t.key}var Jl=({key:e})=>e??null,Qs=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?xe(e)||ht(e)||Te(e)?{i:Ot,r:e,k:t,f:!!o}:e:null);function n(e,t=null,o=null,i=0,s=null,r=e===B?0:1,a=!1,u=!1){let p={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Jl(t),ref:t&&Qs(t),scopeId:bl,slotScopeIds:null,children:o,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:i,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:Ot};return u?(oi(p,o),r&128&&e.normalize(p)):o&&(p.shapeFlag|=xe(o)?8:16),is>0&&!a&&It&&(p.patchFlag>0||r&6)&&p.patchFlag!==32&&It.push(p),p}var Ue=Of;function Of(e,t=null,o=null,i=0,s=null,r=!1){if((!e||e===sf)&&(e=Gt),rs(e)){let u=bo(e,t,!0);return o&&oi(u,o),is>0&&!r&&It&&(u.shapeFlag&6?It[It.indexOf(e)]=u:It.push(u)),u.patchFlag=-2,u}if(Hf(e)&&(e=e.__vccOpts),t){t=If(t);let{class:u,style:p}=t;u&&!xe(u)&&(t.class=P(u)),He(p)&&(Jo(p)&&!Se(p)&&(p=it({},p)),t.style=$e(p))}let a=xe(e)?1:Kl(e)?128:ii(e)?64:He(e)?4:Te(e)?2:0;return n(e,t,o,i,s,a,r,!0)}function If(e){return e?Jo(e)||Ll(e)?it({},e):e:null}function bo(e,t,o=!1,i=!1){let{props:s,ref:r,patchFlag:a,children:u,transition:p}=e,v=t?Mf(s||{},t):s,h={__v_isVNode:!0,__v_skip:!0,type:e.type,props:v,key:v&&Jl(v),ref:t&&t.ref?o&&r?Se(r)?r.concat(Qs(t)):[r,Qs(t)]:Qs(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:u,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==B?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:p,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&bo(e.ssContent),ssFallback:e.ssFallback&&bo(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce,cacheIndex:e.cacheIndex};return p&&i&&ss(h,p.clone(h)),h}function y(e=" ",t=0){return Ue(di,null,e,t)}function ke(e,t){let o=Ue(ns,null,e);return o.staticCount=t,o}function f(e="",t=!1){return t?(l(),sn(Gt,null,e)):Ue(Gt,null,e)}function nn(e){return e==null||typeof e=="boolean"?Ue(Gt):Se(e)?Ue(B,null,e.slice()):rs(e)?fn(e):Ue(di,null,String(e))}function fn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:bo(e)}function oi(e,t){let o=0,{shapeFlag:i}=e;if(t==null)t=null;else if(Se(t))o=16;else if(typeof t=="object")if(i&65){let s=t.default;s&&(s._c&&(s._d=!1),oi(e,s()),s._c&&(s._d=!0));return}else{o=32;let s=t._;!s&&!Ll(t)?t._ctx=Ot:s===3&&Ot&&(Ot.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(Te(t)){if(i&65){oi(e,{default:t});return}t={default:t,_ctx:Ot},o=32}else t=String(t),i&64?(o=16,t=[y(t)]):o=8;e.children=t,e.shapeFlag|=o}function Mf(...e){let t={};for(let o=0;ovt||Ot,si,as;{let e=Uo(),t=(o,i)=>{let s;return(s=e[o])||(s=e[o]=[]),s.push(i),r=>{s.length>1?s.forEach(a=>a(r)):s[0](r)}};si=t("__VUE_INSTANCE_SETTERS__",o=>vt=o),as=t("__VUE_SSR_SETTERS__",o=>wo=o)}var ps=e=>{let t=vt;return si(e),e.scope.on(),()=>{e.scope.off(),si(t)}},dl=()=>{vt&&vt.scope.off(),si(null)};function Zl(e){return e.vnode.shapeFlag&4}var wo=!1;function Lf(e,t=!1,o=!1){t&&as(t);let{props:i,children:s}=e.vnode,r=Zl(e);kf(e,i,r,t),Nf(e,s,o||t);let a=r?Uf(e,t):void 0;return t&&as(!1),a}function Uf(e,t){let o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,rf);let{setup:i}=o;if(i){zt();let s=e.setupContext=i.length>1?Bf(e):null,r=ps(e),a=ls(i,e,0,[e.props,s]),u=zi(a);if(Ht(),r(),(u||e.sp)&&!es(e)&&yr(e),u){if(a.then(dl,dl),t)return a.then(p=>{as(!0);try{ul(e,p,t)}finally{as(!1)}}).catch(p=>{ds(p,e,0)});e.asyncDep=a}else ul(e,a,t)}else xl(e,t)}function ul(e,t,o){Te(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:He(t)&&(e.setupState=Xs(t)),xl(e,o)}var cl,pl;function xl(e,t,o){let i=e.type;if(!e.render){if(!t&&cl&&!i.render){let s=i.template||br(e).template;if(s){let{isCustomElement:r,compilerOptions:a}=e.appContext.config,{delimiters:u,compilerOptions:p}=i,v=it(it({isCustomElement:r,delimiters:u},a),p);i.render=cl(s,v)}}e.render=i.render||St,pl&&pl(e)}{let s=ps(e);zt();try{af(e)}finally{Ht(),s()}}}var Ff={get(e,t){return mt(e,"get",""),e[t]}};function Bf(e){let t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,Ff),slots:e.slots,emit:e.emit,expose:t}}function ui(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Xs(go(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in ts)return ts[o](e)},has(t,o){return o in t||o in ts}})):e.proxy}function zf(e,t=!0){return Te(e)?e.displayName||e.name:e.name||t&&e.__name}function Hf(e){return Te(e)&&"__vccOpts"in e}var yt=(e,t)=>Xa(e,t,wo);function _e(e,t,o){try{ni(-1);let i=arguments.length;return i===2?He(t)&&!Se(t)?rs(t)?Ue(e,null,[t]):Ue(e,t):Ue(e,null,t):(i>3?o=Array.prototype.slice.call(arguments,2):i===3&&rs(o)&&(o=[o]),Ue(e,t,o))}finally{ni(1)}}var jf="3.5.44";var Rr,ed=typeof window<"u"&&window.trustedTypes;if(ed)try{Rr=ed.createPolicy("vue",{createHTML:e=>e})}catch{}var pd=Rr?e=>Rr.createHTML(e):e=>e,Gf="http://www.w3.org/2000/svg",Wf="http://www.w3.org/1998/Math/MathML",mn=typeof document<"u"?document:null,td=mn&&mn.createElement("template"),Kf={insert:(e,t,o)=>{t.insertBefore(e,o||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,o,i)=>{let s=t==="svg"?mn.createElementNS(Gf,e):t==="mathml"?mn.createElementNS(Wf,e):o?mn.createElement(e,{is:o}):mn.createElement(e);return e==="select"&&i&&i.multiple!=null&&s.setAttribute("multiple",i.multiple),s},createText:e=>mn.createTextNode(e),createComment:e=>mn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>mn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,i,s,r){let a=o?o.previousSibling:t.lastChild;if(s&&(s===r||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),o),!(s===r||!(s=s.nextSibling)););else{td.innerHTML=pd(i==="svg"?`${e}`:i==="mathml"?`${e}`:e);let u=td.content;if(i==="svg"||i==="mathml"){let p=u.firstChild;for(;p.firstChild;)u.appendChild(p.firstChild);u.removeChild(p)}t.insertBefore(u,o)}return[a?a.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}};var Yf=Symbol("_vtc");function Xf(e,t,o){let i=e[Yf];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}var fi=Symbol("_vod"),fd=Symbol("_vsh"),J={name:"show",beforeMount(e,{value:t},{transition:o}){e[fi]=e.style.display==="none"?"":e.style.display,o&&t?o.beforeEnter(e):fs(e,t)},mounted(e,{value:t},{transition:o}){o&&t&&o.enter(e)},updated(e,{value:t,oldValue:o},{transition:i}){!t!=!o&&(i?t?(i.beforeEnter(e),fs(e,!0),i.enter(e)):i.leave(e,()=>{fs(e,!1)}):fs(e,t))},beforeUnmount(e,{value:t}){fs(e,t)}};function fs(e,t){e.style.display=t?e[fi]:"none",e[fd]=!t}var Jf=Symbol("");var Qf=/(?:^|;)\s*display\s*:/;function Zf(e,t,o){let i=e.style,s=xe(o),r=!1;if(o&&!s){if(t)if(xe(t))for(let a of t.split(";")){let u=a.slice(0,a.indexOf(":")).trim();o[u]==null&&hs(i,u,"")}else for(let a in t)o[a]==null&&hs(i,a,"");for(let a in o){a==="display"&&(r=!0);let u=o[a];u!=null?eh(e,a,!xe(t)&&t?t[a]:void 0,u)||hs(i,a,u):hs(i,a,"")}}else if(s){if(t!==o){let a=i[Jf];a&&(o+=";"+a),i.cssText=o,r=Qf.test(o)}}else t&&e.removeAttribute("style");fi in e&&((!s||t!==o)&&(e[fi]=r?i.display:""),e[fd]&&(i.display="none"))}var ci=/\s*!important$/;function hs(e,t,o){if(Se(o))o.forEach(i=>hs(e,t,i));else if(o==null&&(o=""),t.startsWith("--"))ci.test(o)?e.setProperty(t,o.replace(ci,""),"important"):e.setProperty(t,o);else{let i=xf(e,t);ci.test(o)?e.setProperty(Xt(i),o.replace(ci,""),"important"):e[i]=o}}var nd=["Webkit","Moz","ms"],Er={};function xf(e,t){let o=Er[t];if(o)return o;let i=dt(t);if(i!=="filter"&&i in e)return Er[t]=i;i=Un(i);for(let s=0;sSr||(rh.then(()=>Sr=0),Sr=Date.now());function lh(e,t){let o=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=o.attached)return;let s=o.value;if(Se(s)){let r=i.stopImmediatePropagation;i.stopImmediatePropagation=()=>{r.call(i),i._stopped=!0};let a=s.slice(),u=[i];for(let p=0;pe.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,dh=(e,t,o,i,s,r)=>{let a=s==="svg";t==="class"?Xf(e,i,a):t==="style"?Zf(e,o,i):lo(t)?uo(t)||nh(e,t,o,i,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):uh(e,t,i,a))?(id(e,t,i),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&sd(e,t,i,a,r,t!=="value")):e._isVueCE&&(ch(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!xe(i)))?id(e,dt(t),i,r,t):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),sd(e,t,i,a))};function uh(e,t,o,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&ad(t)&&Te(o));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){let s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return ad(t)&&xe(o)?!1:t in e}function ch(e,t){let o=e._def.props;if(!o)return!1;let i=dt(t);return Array.isArray(o)?o.some(s=>dt(s)===i):Object.keys(o).some(s=>dt(s)===i)}var ko=e=>{let t=e.props["onUpdate:modelValue"]||!1;return Se(t)?o=>po(t,o):t};function ph(e){e.target.composing=!0}function ld(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}var rn=Symbol("_assign"),pi=Symbol("_initialValue");function Nr(e,t,o){return t&&(e=e.trim()),o&&(e=fo(e)),e}var ct={created(e,{modifiers:{lazy:t,trim:o,number:i}},s){e.parentNode&&(e.type==="text"?e[pi]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[pi]=e.defaultValue.replace(/\r\n?/g,` -`))),e[rn]=ko(s);let r=i||s.props&&s.props.type==="number";Nn(e,t?"change":"input",a=>{a.target.composing||e[rn](Nr(e.value,o,r))}),(o||r)&&Nn(e,"change",()=>{e.value=Nr(e.value,o,r)}),t||(Nn(e,"compositionstart",ph),Nn(e,"compositionend",ld),Nn(e,"change",ld))},mounted(e,{value:t,modifiers:{trim:o,number:i}}){let s=t??"",r=e[pi];delete e[pi],r!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==r?e[rn](Nr(e.value,o,i)):e.value=s},beforeUpdate(e,{value:t,oldValue:o,modifiers:{lazy:i,trim:s,number:r}},a){if(e[rn]=ko(a),e.composing)return;let u=(r||e.type==="number")&&!/^0\d/.test(e.value)?fo(e.value):e.value,p=t??"";if(u===p)return;let v=e.getRootNode();(v instanceof Document||v instanceof ShadowRoot)&&v.activeElement===e&&e.type!=="range"&&(i&&t===o||s&&e.value.trim()===p)||(e.value=p)}},Dr={deep:!0,created(e,t,o){e[rn]=ko(o),Nn(e,"change",()=>{let i=e._modelValue,s=ms(e),r=e.checked,a=e[rn];if(Se(i)){let u=Fs(i,s),p=u!==-1;if(r&&!p)a(i.concat(s));else if(!r&&p){let v=[...i];v.splice(u,1),a(v)}}else if(Ut(i)){let u=new Set(i);r?u.add(s):u.delete(s),a(u)}else a(hd(e,r))})},mounted:dd,beforeUpdate(e,t,o){e[rn]=ko(o),dd(e,t,o)}};function dd(e,{value:t,oldValue:o},i){e._modelValue=t;let s;if(Se(t))s=Fs(t,i.props.value)>-1;else if(Ut(t))s=t.has(i.props.value);else{if(t===o)return;s=Ft(t,hd(e,!0))}e.checked!==s&&(e.checked=s)}var gn={deep:!0,created(e,{value:t,modifiers:{number:o}},i){e._modelValue=t,Nn(e,"change",()=>{let s=Array.prototype.filter.call(e.options,p=>p.selected).map(p=>o?fo(ms(p)):ms(p)),r=e.multiple,a=r?Ut(e._modelValue)?new Set(s):s:s[0],u=e._pendingValue=[r,r?Se(a)?s.slice():s:a];try{e[rn](a)}finally{nt(()=>{e._pendingValue===u&&(e._pendingValue=void 0)})}}),e[rn]=ko(i)},mounted(e,{value:t}){ud(e,t)},beforeUpdate(e,{value:t},o){e._modelValue=t,e[rn]=ko(o)},updated(e,{value:t}){let o=e._pendingValue;e._pendingValue=void 0,(!o||o[0]!==e.multiple||!fh(t,o[1],o[0]))&&ud(e,t)}};function fh(e,t,o){if(!o)return Ft(e,t);if(Se(e))return Ft(e,t);if(Ut(e)){if(e.size!==t.length)return!1;for(let i of t)if(!e.has(i))return!1;return!0}return!1}function ud(e,t){let o=e.multiple,i=Se(t);if(!(o&&!i&&!Ut(t))){for(let s=0,r=e.options.length;sString(v)===String(u)):a.selected=Fs(t,u)>-1}else a.selected=t.has(u);else if(Ft(ms(a),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!o&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function ms(e){return"_value"in e?e._value:e.value}function hd(e,t){let o=t?"_trueValue":"_falseValue";return o in e?e[o]:t}var hh=["ctrl","shift","alt","meta"],mh={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>hh.some(o=>e[`${o}Key`]&&!t.includes(o))},ce=(e,t)=>{if(!e)return e;let o=e._withMods||(e._withMods={}),i=t.join(".");return o[i]||(o[i]=((s,...r)=>{for(let a=0;a{let o=e._withKeys||(e._withKeys={}),i=t.join(".");return o[i]||(o[i]=(s=>{if(!("key"in s))return;let r=Xt(s.key);if(t.some(a=>a===r||gh[a]===r))return e(s)}))},vh=it({patchProp:dh},Kf),cd;function yh(){return cd||(cd=jl(vh))}var md=((...e)=>{let t=yh().createApp(...e),{mount:o}=t;return t.mount=i=>{let s=wh(i);if(!s)return;let r=t._component;!Te(r)&&!r.render&&!r.template&&(r.template=s.innerHTML),s.nodeType===1&&(s.textContent="");let a=o(s,!1,bh(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),a},t});function bh(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function wh(e){return xe(e)?document.querySelector(e):e}var Xn=typeof document<"u";function vd(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function kh(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&vd(e.default)}var je=Object.assign;function hi(e,t){let o={};for(let i in t){let s=t[i];o[i]=Lt(s)?s.map(e):e(s)}return o}var Eo=()=>{},Lt=Array.isArray;function Pr(e,t){let o={};for(let i in e)o[i]=i in t?t[i]:e[i];return o}var yd=/#/g,Ch=/&/g,Eh=/\//g,Sh=/=/g,Nh=/\?/g,bd=/\+/g,Rh=/%5B/g,Dh=/%5D/g,wd=/%5E/g,Ah=/%60/g,kd=/%7B/g,Th=/%7C/g,Cd=/%7D/g,Ph=/%20/g;function _r(e){return e==null?"":encodeURI(""+e).replace(Th,"|").replace(Rh,"[").replace(Dh,"]")}function Ed(e){return _r(e).replace(kd,"{").replace(Cd,"}").replace(wd,"^")}function Ar(e){return _r(e).replace(bd,"%2B").replace(Ph,"+").replace(yd,"%23").replace(Ch,"%26").replace(Ah,"`").replace(kd,"{").replace(Cd,"}").replace(wd,"^")}function _h(e){return Ar(e).replace(Sh,"%3D")}function Oh(e){return _r(e).replace(yd,"%23").replace(Nh,"%3F")}function Sd(e){return Oh(e).replace(Eh,"%2F")}function Co(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}var Ih=/\/$/,Mh=e=>e.replace(Ih,"");function mi(e,t,o="/"){let i,s={},r="",a="",u=t.indexOf("#"),p=t.indexOf("?");return p=u>=0&&p>u?-1:p,p>=0&&(i=t.slice(0,p),r=t.slice(p,u>0?u:t.length),s=e(r.slice(1))),u>=0&&(i=i||t.slice(0,u),a=t.slice(u,t.length)),i=qh(i??t,o),{fullPath:i+r+a,path:i,query:s,hash:Co(a)}}function Nd(e,t){let o=t.query?e(t.query):"";return t.path+(o&&"?")+o+(t.hash||"")}function Or(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Rd(e,t,o){let i=t.matched.length-1,s=o.matched.length-1;return i>-1&&i===s&&Kn(t.matched[i],o.matched[s])&&Ir(t.params,o.params)&&e(t.query)===e(o.query)&&t.hash===o.hash}function Kn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Ir(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var o in e)if(!Vh(e[o],t[o]))return!1;return!0}function Vh(e,t){return Lt(e)?gd(e,t):Lt(t)?gd(t,e):e?.valueOf()===t?.valueOf()}function gd(e,t){return Lt(t)?e.length===t.length&&e.every((o,i)=>o===t[i]):e.length===1&&e[0]===t}function qh(e,t){if(e.startsWith("/"))return e;if(!e)return t;let o=t.split("/"),i=e.split("/"),s=i[i.length-1];(s===".."||s===".")&&i.push("");let r=o.length-1,a,u;for(a=0;a1&&r--;else break;return o.slice(0,r).join("/")+"/"+i.slice(a).join("/")}var yn={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},gi=(function(e){return e.pop="pop",e.push="push",e})({}),vi=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function Dd(e){if(!e)if(Xn){let t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Mh(e)}var $h=/^[^#]+#/;function Ad(e,t){return e.replace($h,"#")+t}function Lh(e,t){let o=document.documentElement.getBoundingClientRect(),i=e.getBoundingClientRect();return{behavior:t.behavior,left:i.left-o.left-(t.left||0),top:i.top-o.top-(t.top||0)}}var gs=()=>({left:window.scrollX,top:window.scrollY});function Td(e){let t;if("el"in e){let o=e.el,i=typeof o=="string"&&o.startsWith("#"),s=typeof o=="string"?i?document.getElementById(o.slice(1)):document.querySelector(o):o;if(!s)return;t=Lh(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Mr(e,t){return(history.state?history.state.position-t:-1)+e}var Tr=new Map;function Pd(e,t){Tr.set(e,t)}function _d(e){let t=Tr.get(e);return Tr.delete(e),t}function Uh(e){return typeof e=="string"||e&&typeof e=="object"}function Vr(e){return typeof e=="string"||typeof e=="symbol"}var ot=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({}),Od=Symbol("");var cG={[ot.MATCHER_NOT_FOUND]({location:e,currentLocation:t}){return`No match for +"use strict";(()=>{var Aa=Object.defineProperty;var Ta=e=>{throw TypeError(e)};var wp=(e,t,o)=>t in e?Aa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var kp=(e,t)=>{for(var o in t)Aa(e,o,{get:t[o],enumerable:!0})};var Je=(e,t,o)=>wp(e,typeof t!="symbol"?t+"":t,o),Gi=(e,t,o)=>t.has(e)||Ta("Cannot "+o);var re=(e,t,o)=>(Gi(e,t,"read from private field"),o?o.call(e):t.get(e)),Ve=(e,t,o)=>t.has(e)?Ta("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,o),Ue=(e,t,o,i)=>(Gi(e,t,"write to private field"),i?i.call(e,o):t.set(e,o),o),qe=(e,t,o)=>(Gi(e,t,"access private method"),o);var Pa=(e,t,o,i)=>({set _(s){Ue(e,t,s,o)},get _(){return re(e,t,i)}});var ve=["abap","abc","actionscript","ada","alda","apache_conf","apex","applescript","aql","asciidoc","asl","assembly_x86","autohotkey","batchfile","c9search","c_cpp","cirru","clojure","cobol","coffee","coldfusion","crystal","csharp","csound_document","csound_orchestra","csound_score","csp","css","curly","d","dart","diff","django","dockerfile","dot","drools","edifact","eiffel","ejs","elixir","elm","erlang","forth","fortran","fsharp","fsl","ftl","gcode","gherkin","gitignore","glsl","gobstones","golang","graphqlschema","groovy","haml","handlebars","haskell","haskell_cabal","haxe","hjson","html","html_elixir","html_ruby","ini","io","jack","jade","java","javascript","json","json5","jsoniq","jsp","jssm","jsx","julia","kotlin","latex","less","liquid","lisp","livescript","logiql","logtalk","lsl","lua","luapage","lucene","makefile","markdown","mask","matlab","maze","mediawiki","mel","mixal","mushcode","mysql","nginx","nim","nix","nsis","nunjucks","objectivec","ocaml","pascal","perl","perl6","pgsql","php","php_laravel_blade","pig","plain_text","powershell","praat","prisma","prolog","properties","protobuf","puppet","python","qml","r","razor","rdoc","red","redshift","rhtml","rst","ruby","rust","sass","scad","scala","scheme","scss","sh","sjs","slim","smarty","snippets","soy_template","space","sparql","sql","sqlserver","stylus","svg","swift","tcl","terraform","tex","text","textile","toml","tsx","turtle","twig","typescript","vala","vbscript","velocity","verilog","vhdl","visualforce","wollok","xml","xquery","yaml","zeek"];var ye={markdown:"/script/markdown.6c8dfb7b1d.min.js",notebook:"/script/notebook.c3144c18ae.min.js",org:"/script/org.f61f262915.min.js",pdf:"/script/pdf.4d9cc6ff49.min.js",editor:"/script/editor.4f142d3adc.min.js"};function Oa(e){let t=e.location.hash.slice(1);if(e.history.replaceState(null,"","/review-link"),t.length>2048)return null;let o=new URLSearchParams(t);if([...o.keys()].length!==3||[...o.keys()].some(a=>!["clientId","intentId","token"].includes(a)))return null;let i=o.get("clientId"),s=o.get("intentId"),r=o.get("token");return!/^[a-f0-9]{32}$/.test(i||"")||!/^[a-f0-9]{32}$/.test(s||"")||!/^[a-f0-9]{64}$/.test(r||"")?null:{contract:"4open.artifacts/1",clientId:i,intentId:s,token:r}}function Ia(e,t){let{http:o,promises:i,window:s}=t,r=t.takeReviewHandoff(),a=r?{clientId:r.clientId,intentId:r.intentId}:null,u,p,y,m,b,h=!0,w,A=i.defer(),N=()=>[...s.crypto.getRandomValues(new Uint8Array(16))].map(V=>V.toString(16).padStart(2,"0")).join("");Object.assign(e,{repositoryId:"",handoffEnabled:!1,busy:!1,preview:null,acceptAccess:!1,acceptRetention:!1,uncertain:!1,saved:!1,expired:!1,error:r?"":"Open a new artifact link from your submission. This link is missing or invalid."});let R=()=>h&&e.user?.username===b;function v(){h=!1,r=u=p=void 0,A.resolve(),s.clearTimeout(w)}e.on("dispose",v),e.on("routeLeave",v),e.watch(()=>e.user?.username,V=>{!b&&V?b=V:b&&V!==b&&(v(),e.preview=null,e.repositoryId="",e.busy=!1,e.saved=!1,e.handoffEnabled=!1,e.error="Your account changed. Open a new artifact link from your submission.")});let C=()=>({timeout:A.promise,headers:{"Content-Type":"application/json","X-Review-CSRF":p}}),I=V=>V?.status===404?"Artifact linking is not available on this server.":V?.status===401?"Sign in, then open a new artifact link from your submission.":V?.status===403?"This account cannot approve this repository or this link.":"The request could not be completed. You can retry from this page.";e.loadPreview=async()=>{if(!h||!r||e.busy||e.uncertain||e.saved||!e.user?.username)return;b=e.user.username;let V=e.repositoryId.trim();if(!/^[A-Za-z0-9_-]{3,128}$/.test(V)){e.error="Enter the anonymous repository ID from its URL.";return}e.busy=!0,e.error="",e.preview=null,u=void 0,e.acceptAccess=e.acceptRetention=!1,e.expired=!1,s.clearTimeout(w),m||(m=N());try{let q=(await o.get("/api/review-consent/csrf",{timeout:A.promise})).data;if(!R())return;if(p=q.csrf,e.handoffEnabled=q.handoffEnabled===!0,!/^[a-f0-9]{64}$/.test(p||""))throw new Error("invalid_csrf");let W=(await o.post("/api/review-consent/preview",{repositoryId:V,intent:{...r,requestId:m}},C())).data;if(!R())return;if(!W||typeof W.ticket!="string"||!W.ticket||W.ticket.length>8192||typeof W.repositoryName!="string"||!["restricted-review","anonymous-link"].includes(W.policy?.access)||!Number.isSafeInteger(W.policy.version)||!Number.isFinite(Date.parse(W.policy.retainUntil))||!Number.isFinite(Date.parse(W.expiresAt))||Date.parse(W.expiresAt)<=Date.now()||Date.parse(W.expiresAt)>Date.now()+6e5)throw new Error("invalid_preview");u=W.ticket,y=N(),e.preview={repositoryName:W.repositoryName,policy:{...W.policy},expiresAt:W.expiresAt},w=s.setTimeout(()=>{h&&(e.expired=!0)},Math.max(0,Date.parse(W.expiresAt)-Date.now()))}catch(q){R()&&(e.error=I(q))}finally{R()&&(e.busy=!1)}},e.confirmConsent=async()=>{if(!(!R()||e.busy||e.saved||!u||!e.acceptAccess||!e.acceptRetention)){if(Date.parse(e.preview.expiresAt)<=Date.now()){e.expired=!0;return}e.busy=!0,e.error="";try{let V=(await o.post("/api/review-consent/confirm",{ticket:u,requestId:y,acceptAccess:!0,acceptRetention:!0},C())).data;if(!R())return;if(V?.requestId!==y||!Number.isFinite(Date.parse(V.confirmedAt)))throw new Error("invalid_receipt");e.saved=!0,e.uncertain=!1,r=void 0,e.handoffEnabled||(u=void 0)}catch{R()&&(e.uncertain=!0,e.error="The confirmation was not verified. Retry with the same approval, or return to your submission to check its status.")}finally{R()&&(e.busy=!1)}}},e.continueReview=async()=>{if(!R()||e.busy||!e.saved||!e.handoffEnabled||!u||!a)return;e.busy=!0,e.error="";let V,q=()=>{V?.remove(),s.removeEventListener("securitypolicyviolation",W)},W=se=>{se.violatedDirective?.startsWith("form-action")&&(q(),R()&&(e.busy=!1,e.error="The return address was blocked. Return to your submission to check the artifact status."))};try{let se=(await o.post("/api/review-consent/handoff",{ticket:u},C())).data;if(!R())return;let Q=se?.completion,ne=new URL(se?.callbackUrl);if(!Q||Object.keys(Q).sort().join(",")!=="clientId,code,contract,expiresAt,intentId"||Q.contract!=="4open.artifacts/1"||Q.clientId!==a.clientId||Q.intentId!==a.intentId||!/^[a-f0-9]{64}$/.test(Q.code||"")||!Number.isFinite(Date.parse(Q.expiresAt))||Date.parse(Q.expiresAt)<=Date.now()||Date.parse(Q.expiresAt)>Date.now()+3e5||ne.protocol!=="https:"||ne.href!==se.callbackUrl||ne.username||ne.password||se.callbackUrl.includes("?")||se.callbackUrl.includes("#"))throw new Error("invalid_handoff");V=s.document.createElement("form"),V.method="POST",V.action=ne.href;let Ee=s.document.createElement("input");Ee.type="hidden",Ee.name="completion",Ee.value=JSON.stringify(Q),V.appendChild(Ee),s.document.body.appendChild(V),s.addEventListener("securitypolicyviolation",W),e.on("dispose",q),V.submit()}catch{q(),R()&&(e.busy=!1,e.error="The return to review could not be prepared. Retry from this page, or return to your submission to check its status.")}}}var Vs=new Map,Sp=ye;function Ln(e){if(!Vs.has(e)){let t=document.createElement("script");t.src=Sp[e];let o=new Promise((i,s)=>{t.onload=i,t.onerror=()=>{Vs.delete(e),t.remove(),s(new Error(`Unable to load ${e}. Please retry.`))}});Vs.set(e,o),document.head.appendChild(t)}return Vs.get(e)}async function qs(){await Ln("editor"),ace.config.set("basePath","/script/external/ace/")}function co(e){let t=Object.create(null);for(let o of e.split(","))t[o]=1;return o=>o in t}var Ke={},En=[],Nt=()=>{},Ki=()=>!1,po=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),fo=e=>e.startsWith("onUpdate:"),lt=Object.assign,Uo=(e,t)=>{let o=e.indexOf(t);o>-1&&e.splice(o,1)},Np=Object.prototype.hasOwnProperty,Be=(e,t)=>Np.call(e,t),Ne=Array.isArray,cn=e=>Fo(e)==="[object Map]",Ut=e=>Fo(e)==="[object Set]",_a=e=>Fo(e)==="[object Date]";var Ie=e=>typeof e=="function",tt=e=>typeof e=="string",Pt=e=>typeof e=="symbol",je=e=>e!==null&&typeof e=="object",Yi=e=>(je(e)||Ie(e))&&Ie(e.then)&&Ie(e.catch),$a=Object.prototype.toString,Fo=e=>$a.call(e),Xi=e=>Fo(e).slice(8,-1),$s=e=>Fo(e)==="[object Object]",Ls=e=>tt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ho=co(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted");var Us=e=>{let t=Object.create(null);return(o=>t[o]||(t[o]=e(o)))},Rp=/-\w/g,ut=Us(e=>e.replace(Rp,t=>t.slice(1).toUpperCase())),Dp=/\B([A-Z])/g,Xt=Us(e=>e.replace(Dp,"-$1").toLowerCase()),Un=Us(e=>e.charAt(0).toUpperCase()+e.slice(1)),Bo=Us(e=>e?`on${Un(e)}`:""),Vt=(e,t)=>!Object.is(e,t),mo=(e,...t)=>{for(let o=0;o{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:i,value:o})},go=e=>{let t=parseFloat(e);return isNaN(t)?e:t};var Ma,zo=()=>Ma||(Ma=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function $e(e){if(Ne(e)){let t={};for(let o=0;oo.startsWith("/*")?"":o).split(Ap).forEach(o=>{if(o){let i=o.split(Tp);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function T(e){let t="";if(tt(e))t=e;else if(Ne(e))for(let o=0;oFt(o,t))}var Fa=e=>!!(e&&e.__v_isRef===!0),c=e=>tt(e)?e:e==null?"":Ne(e)||je(e)&&(e.toString===$a||!Ie(e.toString))?Fa(e)?c(e.value):JSON.stringify(e,Ba,2):String(e),Ba=(e,t)=>Fa(t)?Ba(e,t.value):cn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[i,s],r)=>(o[Wi(i,r)+" =>"]=s,o),{})}:Ut(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>Wi(o))}:Pt(t)?Wi(t):je(t)&&!Ne(t)&&!$s(t)?String(t):t,Wi=(e,t="")=>{var o;return Pt(e)?`Symbol(${(o=e.description)!=null?o:t})`:e};function Vp(e,...t){console.warn(`[Vue warn] ${e}`,...t)}var ct,Wo=class{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&ct&&(ct.active?(this.parent=ct,this.index=(ct.scopes||(ct.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,o;if(this.scopes){let i=this.scopes.slice();for(t=0,o=i.length;t0&&--this._on===0){if(ct===this)ct=this.prevScope;else{let t=ct;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let o,i;for(o=0,i=this.effects.length;o0)return;if(Go){let t=Go;for(Go=void 0;t;){let o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;jo;){let t=jo;for(jo=void 0;t;){let o=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(i){e||(e=i)}t=o}}if(e)throw e}function Ya(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Xa(e){let t,o=e.depsTail,i=o;for(;i;){let s=i.prevDep;i.version===-1?(i===o&&(o=s),dr(i),qp(i)):t=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=s}e.deps=t,e.depsTail=o}function xi(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ja(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ja(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Ko)||(e.globalVersion=Ko,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!xi(e))))return;e.flags|=2;let t=e.dep,o=xe,i=Bt;xe=e,Bt=!0;try{Ya(e);let s=e.fn(e._value);(t.version===0||Vt(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{xe=o,Bt=i,Xa(e),e.flags&=-3}}function dr(e,t=!1){let{dep:o,prevSub:i,nextSub:s}=e;if(i&&(i.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=i,e.nextSub=void 0),o.subs===e&&(o.subs=i,!i&&o.computed)){o.computed.flags&=-5;for(let r=o.computed.deps;r;r=r.nextDep)dr(r,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function qp(e){let{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}var Bt=!0,Qa=[];function zt(){Qa.push(Bt),Bt=!1}function Ht(){let e=Qa.pop();Bt=e===void 0?!0:e}function za(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let o=xe;xe=void 0;try{t()}finally{xe=o}}}var Ko=0,er=class{constructor(t,o){this.sub=t,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},Yo=class{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!xe||!Bt||xe===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==xe)o=this.activeLink=new er(xe,this),xe.deps?(o.prevDep=xe.depsTail,xe.depsTail.nextDep=o,xe.depsTail=o):xe.deps=xe.depsTail=o,Za(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){let i=o.nextDep;i.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=i),o.prevDep=xe.depsTail,o.nextDep=void 0,xe.depsTail.nextDep=o,xe.depsTail=o,xe.deps===o&&(xe.deps=i)}return o}trigger(t){this.version++,Ko++,this.notify(t)}notify(t){ar();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{lr()}}};function Za(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let i=t.deps;i;i=i.nextDep)Za(i)}let o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}var tr=new WeakMap,Bn=Symbol(""),nr=Symbol(""),Xo=Symbol("");function gt(e,t,o){if(Bt&&xe){let i=tr.get(e);i||tr.set(e,i=new Map);let s=i.get(o);s||(i.set(o,s=new Yo),s.map=i,s.key=o),s.track()}}function Qt(e,t,o,i,s,r){let a=tr.get(e);if(!a){Ko++;return}let u=p=>{p&&p.trigger()};if(ar(),t==="clear")a.forEach(u);else{let p=Ne(e),y=p&&Ls(o);if(p&&o==="length"){let m=Number(i);a.forEach((b,h)=>{(h==="length"||h===Xo||!Pt(h)&&h>=m)&&u(b)})}else switch((o!==void 0||a.has(void 0))&&u(a.get(o)),y&&u(a.get(Xo)),t){case"add":p?y&&u(a.get("length")):(u(a.get(Bn)),cn(e)&&u(a.get(nr)));break;case"delete":p||(u(a.get(Bn)),cn(e)&&u(a.get(nr)));break;case"set":cn(e)&&u(a.get(Bn));break}}lr()}function vo(e){let t=He(e);return t===e||(gt(t,"iterate",Xo),Rt(e))?t:qt(e)?xt(e)?t.map(o=>fn(Ot(o))):t.map(fn):t.map(Ot)}function Jo(e){return gt(e=He(e),"iterate",Xo),e}function Jt(e,t){return qt(e)?fn(xt(e)?Ot(t):t):Ot(t)}var $p={__proto__:null,[Symbol.iterator](){return Qi(this,Symbol.iterator,e=>Jt(this,e))},concat(...e){return vo(this).concat(...e.map(t=>Ne(t)?vo(t):t))},entries(){return Qi(this,"entries",e=>(e[1]=Jt(this,e[1]),e))},every(e,t){return pn(this,"every",e,t,void 0,arguments)},filter(e,t){return pn(this,"filter",e,t,o=>o.map(i=>Jt(this,i)),arguments)},find(e,t){return pn(this,"find",e,t,o=>Jt(this,o),arguments)},findIndex(e,t){return pn(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return pn(this,"findLast",e,t,o=>Jt(this,o),arguments)},findLastIndex(e,t){return pn(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return pn(this,"forEach",e,t,void 0,arguments)},includes(...e){return Zi(this,"includes",e)},indexOf(...e){return Zi(this,"indexOf",e)},join(e){return vo(this).join(e)},lastIndexOf(...e){return Zi(this,"lastIndexOf",e)},map(e,t){return pn(this,"map",e,t,void 0,arguments)},pop(){return Ho(this,"pop")},push(...e){return Ho(this,"push",e)},reduce(e,...t){return ja(this,"reduce",e,t)},reduceRight(e,...t){return ja(this,"reduceRight",e,t)},shift(){return Ho(this,"shift")},some(e,t){return pn(this,"some",e,t,void 0,arguments)},splice(...e){return Ho(this,"splice",e)},toReversed(){return vo(this).toReversed()},toSorted(e){return vo(this).toSorted(e)},toSpliced(...e){return vo(this).toSpliced(...e)},unshift(...e){return Ho(this,"unshift",e)},values(){return Qi(this,"values",e=>Jt(this,e))}};function Qi(e,t,o){let i=Jo(e),s=i[t],r=s.call(i);if(i!==e&&!Rt(e)){if(r[Symbol.toStringTag]==="Array Iterator"){let a=Object.create(Object.getPrototypeOf(r));return a.next=()=>Ha(r.next(),o),s!==xa[t]&&Object.defineProperties(a,{return:{get(){let u=r.return;return typeof u=="function"?u.bind(r):u}},throw:{get(){let u=r.throw;return typeof u=="function"?u.bind(r):u}}}),a}r._next=r.next,r.next=()=>Ha(r._next(),o)}return r}function Ha(e,t){return e.done||(e.value=t(e.value)),e}var xa=Array.prototype;function pn(e,t,o,i,s,r){let a=Jo(e),u=a!==e&&!Rt(e),p=a[t];if(p!==xa[t]){let b=p.apply(e,r);return u?Ot(b):b}let y=o;a!==e&&(u?y=function(b,h){return o.call(this,Jt(e,b),h,e)}:o.length>2&&(y=function(b,h){return o.call(this,b,h,e)}));let m=p.call(a,y,i);return u&&s?s(m):m}function ja(e,t,o,i){let s=Jo(e),r=s!==e&&!Rt(e),a=o,u=!1;s!==e&&(r?(u=i.length===0,a=function(y,m,b){return u&&(u=!1,y=Jt(e,y)),o.call(this,y,Jt(e,m),b,e)}):o.length>3&&(a=function(y,m,b){return o.call(this,y,m,b,e)}));let p=s[t](a,...i);return u?Jt(e,p):p}function Zi(e,t,o){let i=He(e);gt(i,"iterate",Xo);let s=i[t](...o);return(s===-1||s===!1)&&Zo(o[0])?(o[0]=He(o[0]),i[t](...o)):s}function Ho(e,t,o=[]){zt(),ar();let i=He(e)[t].apply(e,o);return lr(),Ht(),i}var Lp=co("__proto__,__v_isRef,__isVue"),el=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Pt));function Up(e){Pt(e)||(e=String(e));let t=He(this);return gt(t,"has",e),t.hasOwnProperty(e)}var Ws=class{constructor(t=!1,o=!1){this._isReadonly=t,this._isShallow=o}get(t,o,i){if(o==="__v_skip")return t.__v_skip;let s=this._isReadonly,r=this._isShallow;if(o==="__v_isReactive")return!s;if(o==="__v_isReadonly")return s;if(o==="__v_isShallow")return r;if(o==="__v_raw")return i===(s?r?Yp:ol:r?nl:tl).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;let a=Ne(t);if(!s){let p;if(a&&(p=$p[o]))return p;if(o==="hasOwnProperty")return Up}let u=Reflect.get(t,o,ht(t)?t:i);if((Pt(o)?el.has(o):Lp(o))||(s||gt(t,"get",o),r))return u;if(ht(u)){let p=a&&Ls(o)?u:u.value;return s&&je(p)?Ys(p):p}return je(u)?s?Ys(u):nt(u):u}},Ks=class extends Ws{constructor(t=!1){super(!1,t)}set(t,o,i,s){let r=t[o],a=Ne(t)&&Ls(o);if(!this._isShallow){let y=qt(r);if(!Rt(i)&&!qt(i)&&(r=He(r),i=He(i)),!a&&ht(r)&&!ht(i))return y||(r.value=i),!0}let u=a?Number(o)e,Hs=e=>Reflect.getPrototypeOf(e);function Hp(e,t,o){return function(...i){let s=this.__v_raw,r=He(s),a=cn(r),u=e==="entries"||e===Symbol.iterator&&a,p=e==="keys"&&a,y=s[e](...i),m=o?sr:t?fn:Ot;return!t&>(r,"iterate",p?nr:Bn),lt(Object.create(y),{next(){let{value:b,done:h}=y.next();return h?{value:b,done:h}:{value:u?[m(b[0]),m(b[1])]:m(b),done:h}}})}}function js(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function jp(e,t){let o={get(s){let r=this.__v_raw,a=He(r),u=He(s);e||(Vt(s,u)&>(a,"get",s),gt(a,"get",u));let{has:p}=Hs(a),y=t?sr:e?fn:Ot;if(p.call(a,s))return y(r.get(s));if(p.call(a,u))return y(r.get(u));r!==a&&r.get(s)},get size(){let s=this.__v_raw;return!e&>(He(s),"iterate",Bn),s.size},has(s){let r=this.__v_raw,a=He(r),u=He(s);return e||(Vt(s,u)&>(a,"has",s),gt(a,"has",u)),s===u?r.has(s):r.has(s)||r.has(u)},forEach(s,r){let a=this,u=a.__v_raw,p=He(u),y=t?sr:e?fn:Ot;return!e&>(p,"iterate",Bn),u.forEach((m,b)=>s.call(r,y(m),y(b),a))}};return lt(o,e?{add:js("add"),set:js("set"),delete:js("delete"),clear:js("clear")}:{add(s){let r=He(this),a=Hs(r),u=He(s),p=!t&&!Rt(s)&&!qt(s)?u:s;return a.has.call(r,p)||Vt(s,p)&&a.has.call(r,s)||Vt(u,p)&&a.has.call(r,u)||(r.add(p),Qt(r,"add",p,p)),this},set(s,r){!t&&!Rt(r)&&!qt(r)&&(r=He(r));let a=He(this),{has:u,get:p}=Hs(a),y=u.call(a,s);y||(s=He(s),y=u.call(a,s));let m=p.call(a,s);return a.set(s,r),y?Vt(r,m)&&Qt(a,"set",s,r,m):Qt(a,"add",s,r),this},delete(s){let r=He(this),{has:a,get:u}=Hs(r),p=a.call(r,s);p||(s=He(s),p=a.call(r,s));let y=u?u.call(r,s):void 0,m=r.delete(s);return p&&Qt(r,"delete",s,void 0,y),m},clear(){let s=He(this),r=s.size!==0,a=void 0,u=s.clear();return r&&Qt(s,"clear",void 0,void 0,a),u}}),["keys","values","entries",Symbol.iterator].forEach(s=>{o[s]=Hp(s,e,t)}),o}function ur(e,t){let o=jp(e,t);return(i,s,r)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_isShallow"?t:s==="__v_raw"?i:Reflect.get(Be(o,s)&&s in i?o:i,s,r)}var Gp={get:ur(!1,!1)},Wp={get:ur(!1,!0)},Kp={get:ur(!0,!1)};var tl=new WeakMap,nl=new WeakMap,ol=new WeakMap,Yp=new WeakMap;function Xp(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function nt(e){return qt(e)?e:cr(e,!1,Fp,Gp,tl)}function Qo(e){return cr(e,!1,zp,Wp,nl)}function Ys(e){return cr(e,!0,Bp,Kp,ol)}function cr(e,t,o,i,s){if(!je(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;let r=s.get(e);if(r)return r;let a=Xp(Xi(e));if(a===0)return e;let u=new Proxy(e,a===2?i:o);return s.set(e,u),u}function xt(e){return qt(e)?xt(e.__v_raw):!!(e&&e.__v_isReactive)}function qt(e){return!!(e&&e.__v_isReadonly)}function Rt(e){return!!(e&&e.__v_isShallow)}function Zo(e){return e?!!e.__v_raw:!1}function He(e){let t=e&&e.__v_raw;return t?He(t):e}function bo(e){return!Be(e,"__v_skip")&&Object.isExtensible(e)&&Fs(e,"__v_skip",!0),e}var Ot=e=>je(e)?nt(e):e,fn=e=>je(e)?Ys(e):e;function ht(e){return e?e.__v_isRef===!0:!1}function vt(e){return sl(e,!1)}function Js(e){return sl(e,!0)}function sl(e,t){return ht(e)?e:new ir(e,t)}var ir=class{constructor(t,o){this.dep=new Yo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=o?t:He(t),this._value=o?t:Ot(t),this.__v_isShallow=o}get value(){return this.dep.track(),this._value}set value(t){let o=this._rawValue,i=this.__v_isShallow||Rt(t)||qt(t);t=i?t:He(t),Vt(t,o)&&(this._rawValue=t,this._value=i?t:Ot(t),this.dep.trigger())}};function hn(e){return ht(e)?e.value:e}var Jp={get:(e,t,o)=>t==="__v_raw"?e:hn(Reflect.get(e,t,o)),set:(e,t,o,i)=>{let s=e[t];return ht(s)&&!ht(o)?(s.value=o,!0):Reflect.set(e,t,o,i)}};function Qs(e){return xt(e)?e:new Proxy(e,Jp)}var rr=class{constructor(t,o,i){this.fn=t,this.setter=o,this._value=void 0,this.dep=new Yo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Ko-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!o,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&xe!==this)return Ka(this,!0),!0}get value(){let t=this.dep.track();return Ja(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}};function il(e,t,o=!1){let i,s;return Ie(e)?i=e:(i=e.get,s=e.set),new rr(i,s,o)}var Gs={},Xs=new WeakMap,Fn;function rl(e,t=!1,o=Fn){if(o){let i=Xs.get(o);i||Xs.set(o,i=[]),i.push(e)}}function al(e,t,o=Ke){let{immediate:i,deep:s,once:r,scheduler:a,augmentJob:u,call:p}=o,y=q=>{(o.onWarn||Vp)("Invalid watch source: ",q,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},m=q=>s?q:Rt(q)||s===!1||s===0?Zt(q,1):Zt(q),b,h,w,A,N=!1,R=!1;if(ht(e)?(h=()=>e.value,N=Rt(e)):xt(e)?(h=()=>m(e),N=!0):Ne(e)?(R=!0,N=e.some(q=>xt(q)||Rt(q)),h=()=>e.map(q=>{if(ht(q))return q.value;if(xt(q))return m(q);if(Ie(q))return p?p(q,2):q()})):Ie(e)?t?h=p?()=>p(e,2):e:h=()=>{if(w){zt();try{w()}finally{Ht()}}let q=Fn;Fn=b;try{return p?p(e,3,[A]):e(A)}finally{Fn=q}}:h=Nt,t&&s){let q=h,W=s===!0?1/0:s;h=()=>Zt(q(),W)}let v=Ga(),C=()=>{b.stop(),v&&v.active&&Uo(v.effects,b)};if(r&&t){let q=t;t=(...W)=>{try{return q(...W)}finally{C()}}}let I=R?new Array(e.length).fill(Gs):Gs,V=q=>{if(!(!(b.flags&1)||!b.dirty&&!q))if(t){let W=b.run();if(q||s||N||(R?W.some((se,Q)=>Vt(se,I[Q])):Vt(W,I))){let se=Fn;zt();try{w&&w(),Fn=b;let Q=[W,I===Gs?void 0:R&&I[0]===Gs?[]:I,A];I=W,p?p(t,3,Q):t(...Q)}finally{Fn=se,Ht()}}}else b.run()};return u&&u(V),b=new yo(h),b.scheduler=a?()=>a(V,!1):V,A=q=>rl(q,!1,b),w=b.onStop=()=>{let q=Xs.get(b);if(q){if(p)p(q,4);else for(let W of q)W();Xs.delete(b)}},t?i?V(!0):I=b.run():a?a(V.bind(null,!0),!0):b.run(),C.pause=b.pause.bind(b),C.resume=b.resume.bind(b),C.stop=C,C}function Zt(e,t=1/0,o){if(t<=0||!je(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,ht(e))Zt(e.value,t,o);else if(Ne(e))for(let i=0;i{Zt(i,t,o)});else if($s(e)){for(let i in e)Zt(e[i],t,o);for(let i of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,i)&&Zt(e[i],t,o)}return e}function us(e,t,o,i){try{return i?e(...i):e()}catch(s){cs(s,t,o)}}function $t(e,t,o,i){if(Ie(e)){let s=us(e,t,o,i);return s&&Yi(s)&&s.catch(r=>{cs(r,t,o)}),s}if(Ne(e)){let s=[];for(let r=0;r>>1,s=Et[i],r=is(s);r=is(o)?Et.push(e):Et.splice(tf(t),0,e),e.flags|=1,Sl()}}function Sl(){ei||(ei=El.then(Al))}function Nl(e){if(!Ne(e))Sn&&e.id===-1?Sn.splice(wo+1,0,e):e.flags&1||(tn.push(e),e.flags|=1);else for(let t=0;t=t))continue;Et.splice(i,1),i=e?i-1:jt,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function Dl(e,t,o=0){if(tn.length){let i=tn,s=0;if(t){i=[];for(let a=0;ais(a)-is(u));if(tn.length=s,Sn){for(let a=0;ae.id==null?e.flags&2?-1:1/0:e.id;function Al(e){let t=Nt;try{for(jt=0;jt{i._d&&si(-1);let r=ti(t),a=Gn.length,u;try{u=e(...s)}finally{for(let p=Gn.length;p>a;p--)sd();ti(r),i._d&&si(1)}return u};return i._n=!0,i._c=!0,i._d=!0,i}function P(e,t){if(It===null)return e;let o=pi(It),i=e.dirs||(e.dirs=[]);for(let s=0;s1)return o&&Ie(t)?t.call(i&&i.proxy):t}}var sf=Symbol.for("v-scx"),rf=()=>{{let e=At(sf);return e}};function st(e,t,o){return Pl(e,t,o)}function Pl(e,t,o=Ke){let{immediate:i,deep:s,flush:r,once:a}=o,u=lt({},o),p=t&&i||!t&&r!=="post",y;if(Eo){if(r==="sync"){let w=rf();y=w.__watcherHandles||(w.__watcherHandles=[])}else if(!p){let w=()=>{};return w.stop=Nt,w.resume=Nt,w.pause=Nt,w}}let m=yt;u.call=(w,A,N)=>$t(w,m,A,N);let b=!1;r==="post"?u.scheduler=w=>{w.i=m,Dt(w,m&&m.suspense)}:r!=="sync"&&(b=!0,u.scheduler=(w,A)=>{A?w():Er(w)}),u.augmentJob=w=>{t&&(w.flags|=4),b&&(w.flags|=2,m&&(w.id=m.uid,w.i=m))};let h=al(e,t,u);return Eo&&(y?y.push(h):p&&h()),h}function af(e,t,o){let i=this.proxy,s=tt(e)?e.includes(".")?Ol(i,e):()=>i[e]:e.bind(i,i),r;Ie(t)?r=t:(r=t.handler,o=t);let a=hs(this),u=Pl(s,r.bind(i),o);return a(),u}function Ol(e,t){let o=t.split(".");return()=>{let i=e;for(let s=0;se.__isTeleport;var fr=Symbol("_leaveCb");function df(e){let t=e[0];if(e.length>1){let o=!1;for(let i of e)if(i.type!==Gt){t=i,o=!0;break}}return t}function Il(e){if(!li(e))return ai(e.type)&&e.children?df(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:o}=e;if(o){if(t&16)return o[0];if(t&32&&Ie(o.default))return o.default()}}function rs(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;let o=e.component.subTree;rs(ai(o.type)&&Il(o)||o,t)}else if(e.shapeFlag&128)e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback);else if(e.transition=t,e.type===L&&Ne(e.children)){let o=jl(e.children,!1);o&&rs(o,t)}}function vr(e){if(e.component)return vr(e.component.subTree);if(e.type===L){let t=Ne(e.children)&&jl(e.children,!1);return t?vr(t):void 0}if(e.type!==Gt)return e}function ps(e,t){return Ie(e)?lt({name:e.name},t,{setup:e}):e}function Sr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function ll(e,t){let o;return!!((o=Object.getOwnPropertyDescriptor(e,t))&&!o.configurable)}var ni=new WeakMap;function ts(e,t,o,i,s=!1){if(Ne(e)){e.forEach((N,R)=>ts(N,t&&(Ne(t)?t[R]:t),o,i,s));return}if(ns(i)&&!s){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&ts(e,t,o,i.component.subTree);return}let r=i.shapeFlag&4?pi(i.component):i.el,a=s?null:r,{i:u,r:p}=e,y=t&&t.r,m=u.refs===Ke?u.refs={}:u.refs,b=u.setupState,h=He(b),w=b===Ke?Ki:N=>ll(m,N)?!1:Be(h,N),A=(N,R)=>!(R&&ll(m,R));if(y!=null&&y!==p){if(dl(t),tt(y))m[y]=null,w(y)&&(b[y]=null);else if(ht(y)){let N=t;A(y,N.k)&&(y.value=null),N.k&&(m[N.k]=null)}}if(Ie(p))us(p,u,12,[a,m]);else{let N=tt(p),R=ht(p);if(N||R){let v=()=>{if(e.f){let C=N?w(p)?b[p]:m[p]:A(p)||!e.k?p.value:m[e.k];if(s)Ne(C)&&Uo(C,r);else if(Ne(C))C.includes(r)||C.push(r);else if(N)m[p]=[r],w(p)&&(b[p]=m[p]);else{let I=[r];A(p,e.k)&&(p.value=I),e.k&&(m[e.k]=I)}}else N?(m[p]=a,w(p)&&(b[p]=a)):R&&(A(p,e.k)&&(p.value=a),e.k&&(m[e.k]=a))};if(a){let C=()=>{v(),ni.delete(e)};C.id=-1,ni.set(e,C),Dt(C,o)}else dl(e),v()}}}function dl(e){let t=ni.get(e);t&&(t.flags|=8,ni.delete(e))}var ul=e=>e.nodeType===8;var TY=zo().requestIdleCallback||(e=>setTimeout(e,1)),PY=zo().cancelIdleCallback||(e=>clearTimeout(e));function uf(e,t){if(ul(e)&&e.data==="["){let o=1,i=e.nextSibling;for(;i;){if(i.nodeType===1){if(t(i)===!1)break}else if(ul(i))if(i.data==="]"){if(--o===0)break}else i.data==="["&&o++;i=i.nextSibling}}else t(e)}var ns=e=>!!e.type.__asyncLoader;function _l(e){Ie(e)&&(e={loader:e});let{loader:t,loadingComponent:o,errorComponent:i,delay:s=200,hydrate:r,timeout:a,suspensible:u=!0,onError:p}=e,y=null,m,b=0,h=()=>(b++,y=null,w()),w=()=>{let A;return y||(A=y=t().catch(N=>{if(N=N instanceof Error?N:new Error(String(N)),p)return new Promise((R,v)=>{p(N,()=>R(h()),()=>v(N),b+1)});throw N}).then(N=>A!==y&&y?y:(N&&(N.__esModule||N[Symbol.toStringTag]==="Module")&&(N=N.default),m=N,N)))};return ps({name:"AsyncComponentWrapper",__asyncLoader:w,__asyncHydrate(A,N,R){let v=A.isConnected,C=!1;(N.bu||(N.bu=[])).push(()=>C=!0);let I=()=>{C||!A.parentNode||v&&!A.isConnected||R()},V=r?()=>{let q=r(I,W=>uf(A,W));q&&(N.bum||(N.bum=[])).push(q)}:I;m?V():w().then(()=>!N.isUnmounted&&V())},get __asyncResolved(){return m},setup(){let A=yt;if(Sr(A),m)return()=>Zs(m,A);let N=q=>{y=null,cs(q,A,13,!i)};if(u&&A.suspense||Eo)return w().then(q=>()=>Zs(q,A)).catch(q=>(N(q),()=>i?Me(i,{error:q}):null));let R=vt(!1),v=vt(),C=vt(!!s),I,V;return fs(()=>{I!=null&&clearTimeout(I),V!=null&&clearTimeout(V)}),s&&(V=setTimeout(()=>{A.isUnmounted||(C.value=!1)},s)),a!=null&&(I=setTimeout(()=>{if(!A.isUnmounted&&!R.value&&!v.value){let q=new Error(`Async component timed out after ${a}ms.`);N(q),v.value=q}},a)),w().then(()=>{A.isUnmounted||(R.value=!0,A.parent&&li(A.parent.vnode)&&A.parent.update())}).catch(q=>{if(A.isUnmounted){y=null;return}N(q),v.value=q}),()=>{if(R.value&&m)return Zs(m,A);if(v.value&&i)return Me(i,{error:v.value});if(o&&!C.value)return Zs(o,A)}}})}function Zs(e,t){let{ref:o,props:i,children:s,ce:r}=t.vnode,a=Me(e,i,s);return a.ref=o,a.ce=r,delete t.vnode.ce,a}var li=e=>e.type.__isKeepAlive;function Ml(e,t){ql(e,"a",t)}function Vl(e,t){ql(e,"da",t)}function ql(e,t,o=yt){let i=e.__wdc||(e.__wdc=()=>{let s=o;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(di(t,i,o),o){let s=o.parent;for(;s&&s.parent;)li(s.parent.vnode)&&cf(i,t,o,s),s=s.parent}}function cf(e,t,o,i){let s=di(t,e,i,!0);fs(()=>{Uo(i[t],s)},o)}function di(e,t,o=yt,i=!1){if(o){let s=o[e]||(o[e]=[]),r=t.__weh||(t.__weh=(...a)=>{zt();let u=hs(o),p=$t(t,o,e,a);return u(),Ht(),p});return i?s.unshift(r):s.push(r),r}}var gn=e=>(t,o=yt)=>{(!Eo||e==="sp")&&di(e,(...i)=>t(...i),o)},pf=gn("bm"),on=gn("m"),$l=gn("bu"),Ll=gn("u"),Kn=gn("bum"),fs=gn("um"),ff=gn("sp"),hf=gn("rtg"),mf=gn("rtc");function gf(e,t=yt){di("ec",e,t)}var Ul="components",vf="directives";function Ye(e,t){return Fl(Ul,e,!0,t)||e}var yf=Symbol.for("v-ndc");function Pe(e){return Fl(vf,e)}function Fl(e,t,o=!0,i=!1){let s=It||yt;if(s){let r=s.type;if(e===Ul){let u=th(r,!1);if(u&&(u===t||u===ut(t)||u===Un(ut(t))))return r}let a=cl(s[e]||r[e],t)||cl(s.appContext[e],t);return!a&&i?r:a}}function cl(e,t){return e&&(e[t]||e[ut(t)]||e[Un(ut(t))])}function ie(e,t,o,i){let s,r=o&&o[i],a=Ne(e);if(a||tt(e)){let u=a&&xt(e),p=!1,y=!1;u&&(p=!Rt(e),y=qt(e),e=Jo(e)),s=new Array(e.length);for(let m=0,b=e.length;mt(u,p,void 0,r&&r[p]));else{let u=Object.keys(e);s=new Array(u.length);for(let p=0,y=u.length;pe?ld(e)?pi(e):yr(e.parent):null;var os=lt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>yr(e.parent),$root:e=>yr(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Nr(e),$forceUpdate:e=>e.f||(e.f=()=>{Er(e.update)}),$nextTick:e=>e.n||(e.n=ot.bind(e.proxy)),$watch:e=>af.bind(e)});var hr=(e,t)=>e!==Ke&&!e.__isScriptSetup&&Be(e,t),bf={get({_:e},t){if(t==="__v_skip")return!0;let{ctx:o,setupState:i,data:s,props:r,accessCache:a,type:u,appContext:p}=e;if(t[0]!=="$"){let h=a[t];if(h!==void 0)switch(h){case 1:return i[t];case 2:return s[t];case 4:return o[t];case 3:return r[t]}else{if(hr(i,t))return a[t]=1,i[t];if(s!==Ke&&Be(s,t))return a[t]=2,s[t];if(Be(r,t))return a[t]=3,r[t];if(o!==Ke&&Be(o,t))return a[t]=4,o[t];br&&(a[t]=0)}}let y=os[t],m,b;if(y)return t==="$attrs"&>(e.attrs,"get",""),y(e);if((m=u.__cssModules)&&(m=m[t]))return m;if(o!==Ke&&Be(o,t))return a[t]=4,o[t];if(b=p.config.globalProperties,Be(b,t))return b[t]},set({_:e},t,o){let{data:i,setupState:s,ctx:r}=e;return hr(s,t)?(s[t]=o,!0):i!==Ke&&Be(i,t)?(i[t]=o,!0):Be(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:i,appContext:s,props:r,type:a}},u){let p;return!!(o[u]||e!==Ke&&u[0]!=="$"&&Be(e,u)||hr(t,u)||Be(r,u)||Be(i,u)||Be(os,u)||Be(s.config.globalProperties,u)||(p=a.__cssModules)&&p[u])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:Be(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function pl(e){return Ne(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}var br=!0;function wf(e){let t=Nr(e),o=e.proxy,i=e.ctx;br=!1,t.beforeCreate&&fl(t.beforeCreate,e,"bc");let{data:s,computed:r,methods:a,watch:u,provide:p,inject:y,created:m,beforeMount:b,mounted:h,beforeUpdate:w,updated:A,activated:N,deactivated:R,beforeDestroy:v,beforeUnmount:C,destroyed:I,unmounted:V,render:q,renderTracked:W,renderTriggered:se,errorCaptured:Q,serverPrefetch:ne,expose:Ee,inheritAttrs:D,components:oe,directives:x,filters:Ae}=t;if(y&&kf(y,i,null),a)for(let fe in a){let ke=a[fe];Ie(ke)&&(i[fe]=ke.bind(o))}if(s){let fe=s.call(o,o);je(fe)&&(e.data=nt(fe))}if(br=!0,r)for(let fe in r){let ke=r[fe],Te=Ie(ke)?ke.bind(o,o):Ie(ke.get)?ke.get.bind(o,o):Nt,Xe=!Ie(ke)&&Ie(ke.set)?ke.set.bind(o):Nt,rt=bt({get:Te,set:Xe});Object.defineProperty(i,fe,{enumerable:!0,configurable:!0,get:()=>rt.value,set:at=>rt.value=at})}if(u)for(let fe in u)Bl(u[fe],i,o,fe);if(p){let fe=Ie(p)?p.call(o):p;Reflect.ownKeys(fe).forEach(ke=>{Wn(ke,fe[ke])})}m&&fl(m,e,"c");function le(fe,ke){Ne(ke)?ke.forEach(Te=>fe(Te.bind(o))):ke&&fe(ke.bind(o))}if(le(pf,b),le(on,h),le($l,w),le(Ll,A),le(Ml,N),le(Vl,R),le(gf,Q),le(mf,W),le(hf,se),le(Kn,C),le(fs,V),le(ff,ne),Ne(Ee))if(Ee.length){let fe=e.exposed||(e.exposed={});Ee.forEach(ke=>{Object.defineProperty(fe,ke,{get:()=>o[ke],set:Te=>o[ke]=Te,enumerable:!0})})}else e.exposed||(e.exposed={});q&&e.render===Nt&&(e.render=q),D!=null&&(e.inheritAttrs=D),oe&&(e.components=oe),x&&(e.directives=x),ne&&Sr(e)}function kf(e,t,o=Nt){Ne(e)&&(e=wr(e));for(let i in e){let s=e[i],r;je(s)?"default"in s?r=At(s.from||i,s.default,!0):r=At(s.from||i):r=At(s),ht(r)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>r.value,set:a=>r.value=a}):t[i]=r}}function fl(e,t,o){$t(Ne(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,o)}function Bl(e,t,o,i){let s=i.includes(".")?Ol(o,i):()=>o[i];if(tt(e)){let r=t[e];Ie(r)&&st(s,r)}else if(Ie(e))st(s,e.bind(o));else if(je(e))if(Ne(e))e.forEach(r=>Bl(r,t,o,i));else{let r=Ie(e.handler)?e.handler.bind(o):t[e.handler];Ie(r)&&st(s,r,e)}}function Nr(e){let t=e.type,{mixins:o,extends:i}=t,{mixins:s,optionsCache:r,config:{optionMergeStrategies:a}}=e.appContext,u=r.get(t),p;return u?p=u:!s.length&&!o&&!i?p=t:(p={},s.length&&s.forEach(y=>oi(p,y,a,!0)),oi(p,t,a)),je(t)&&r.set(t,p),p}function oi(e,t,o,i=!1){let{mixins:s,extends:r}=t;r&&oi(e,r,o,!0),s&&s.forEach(a=>oi(e,a,o,!0));for(let a in t)if(!(i&&a==="expose")){let u=Cf[a]||o&&o[a];e[a]=u?u(e[a],t[a]):t[a]}return e}var Cf={data:hl,props:ml,emits:ml,methods:es,computed:es,beforeCreate:Ct,created:Ct,beforeMount:Ct,mounted:Ct,beforeUpdate:Ct,updated:Ct,beforeDestroy:Ct,beforeUnmount:Ct,destroyed:Ct,unmounted:Ct,activated:Ct,deactivated:Ct,errorCaptured:Ct,serverPrefetch:Ct,components:es,directives:es,watch:Sf,provide:hl,inject:Ef};function hl(e,t){return t?e?function(){return lt(Ie(e)?e.call(this,this):e,Ie(t)?t.call(this,this):t)}:t:e}function Ef(e,t){return es(wr(e),wr(t))}function wr(e){if(Ne(e)){let t={};for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ut(t)}Modifiers`]||e[`${Xt(t)}Modifiers`];function Af(e,t,...o){if(e.isUnmounted)return;let i=e.vnode.props||Ke,s=o,r=t.startsWith("update:"),a=r&&Df(i,t.slice(7));a&&(a.trim&&(s=o.map(m=>tt(m)?m.trim():m)),a.number&&(s=s.map(go)));let u,p=i[u=Bo(t)]||i[u=Bo(ut(t))];!p&&r&&(p=i[u=Bo(Xt(t))]),p&&$t(p,e,6,s);let y=i[u+"Once"];if(y){if(!e.emitted)e.emitted={};else if(e.emitted[u])return;e.emitted[u]=!0,$t(y,e,6,s)}}var Tf=new WeakMap;function Hl(e,t,o=!1){let i=o?Tf:t.emitsCache,s=i.get(e);if(s!==void 0)return s;let r=e.emits,a={},u=!1;if(!Ie(e)){let p=y=>{let m=Hl(y,t,!0);m&&(u=!0,lt(a,m))};!o&&t.mixins.length&&t.mixins.forEach(p),e.extends&&p(e.extends),e.mixins&&e.mixins.forEach(p)}return!r&&!u?(je(e)&&i.set(e,null),null):(Ne(r)?r.forEach(p=>a[p]=null):lt(a,r),je(e)&&i.set(e,a),a)}function ui(e,t){return!e||!po(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),Be(e,t[0].toLowerCase()+t.slice(1))||Be(e,Xt(t))||Be(e,t))}function mr(e){let{type:t,vnode:o,proxy:i,withProxy:s,propsOptions:[r],slots:a,attrs:u,emit:p,render:y,renderCache:m,props:b,data:h,setupState:w,ctx:A,inheritAttrs:N}=e,R=ti(e),v,C;try{if(o.shapeFlag&4){let q=s||i,W=q;v=nn(y.call(W,q,m,b,w,h,A)),C=u}else{let q=t;v=nn(q.length>1?q(b,{attrs:u,slots:a,emit:p}):q(b,null)),C=t.props?u:Pf(u)}}catch(q){Gn.length=0,cs(q,e,1),v=Me(Gt)}let I=v,V;if(C&&N!==!1){let q=Object.keys(C),{shapeFlag:W}=I;q.length&&W&7&&(r&&q.some(fo)&&(C=Of(C,r)),I=Co(I,C,!1,!0))}if(o.dirs&&(I=Co(I,null,!1,!0),I.dirs=I.dirs?I.dirs.concat(o.dirs):o.dirs),o.transition){let q=ai(I.type)&&Il(I)||I;rs(q,o.transition)}return v=I,ti(R),v}function jl(e,t=!0){let o;for(let i=0;i{let t;for(let o in e)(o==="class"||o==="style"||po(o))&&((t||(t={}))[o]=e[o]);return t},Of=(e,t)=>{let o={};for(let i in e)(!fo(i)||!(i.slice(9)in t))&&(o[i]=e[i]);return o};function If(e,t,o){let{props:i,children:s,component:r}=e,{props:a,children:u,patchFlag:p}=t,y=r.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&p>=0){if(p&1024)return!0;if(p&16)return i?gl(i,a,y):!!a;if(p&8){let m=t.dynamicProps;for(let b=0;bObject.create(Wl),Yl=e=>Object.getPrototypeOf(e)===Wl;function Mf(e,t,o,i=!1){let s={},r=Kl();e.propsDefaults=Object.create(null),Xl(e,t,s,r);for(let a in e.propsOptions[0])a in s||(s[a]=void 0);o?e.props=i?s:Qo(s):e.type.props?e.props=s:e.props=r,e.attrs=r}function Vf(e,t,o,i){let{props:s,attrs:r,vnode:{patchFlag:a}}=e,u=He(s),[p]=e.propsOptions,y=!1;if((i||a>0)&&!(a&16)){if(a&8){let m=e.vnode.dynamicProps;for(let b=0;b{p=!0;let[h,w]=Jl(b,t,!0);lt(a,h),w&&u.push(...w)};!o&&t.mixins.length&&t.mixins.forEach(m),e.extends&&m(e.extends),e.mixins&&e.mixins.forEach(m)}if(!r&&!p)return je(e)&&i.set(e,En),En;if(Ne(r))for(let m=0;me==="_"||e==="_ctx"||e==="$stable",Dr=e=>Ne(e)?e.map(nn):[nn(e)],$f=(e,t,o)=>{if(t._n)return t;let i=of((...s)=>Dr(t(...s)),o);return i._c=!1,i},Ql=(e,t,o)=>{let i=e._ctx;for(let s in e){if(Rr(s))continue;let r=e[s];if(Ie(r))t[s]=$f(s,r,i);else if(r!=null){let a=Dr(r);t[s]=()=>a}}},Zl=(e,t)=>{let o=Dr(t);e.slots.default=()=>o},xl=(e,t,o)=>{for(let i in t)(o||!Rr(i))&&(e[i]=t[i])},Lf=(e,t,o)=>{let i=e.slots=Kl();if(e.vnode.shapeFlag&32){let s=t._;s?(xl(i,t,o),o&&Fs(i,"_",s,!0)):Ql(t,i)}else t&&Zl(e,t)},Uf=(e,t,o)=>{let{vnode:i,slots:s}=e,r=!0,a=Ke;if(i.shapeFlag&32){let u=t._;u?o&&u===1?r=!1:xl(s,t,o):(r=!t.$stable,Ql(t,s)),a=t}else t&&(Zl(e,t),a={default:1});if(r)for(let u in s)!Rr(u)&&a[u]==null&&delete s[u]};function Ff(){let e=[]}var Dt=jf;function ed(e){return Bf(e)}function Bf(e,t){Ff();let o=zo();o.__VUE__=!0;let{insert:i,remove:s,patchProp:r,createElement:a,createText:u,createComment:p,setText:y,setElementText:m,parentNode:b,nextSibling:h,setScopeId:w=Nt,insertStaticContent:A}=e,N=(E,S,O,H=null,z=null,Y=null,te=void 0,J=null,Z=!!S.dynamicChildren)=>{if(E===S)return;E&&!xo(E,S)&&(H=he(E),Qe(E,z,Y,!0),E=null),S.patchFlag===-2&&(Z=!1,S.dynamicChildren=null),S.dynamicChildren&&E&&E.dynamicChildren&&E.dynamicChildren.hasOnce&&(S.dynamicChildren===En&&(S.dynamicChildren=[]),S.dynamicChildren.hasOnce=!0);let{type:G,ref:ge,shapeFlag:ae}=S;switch(G){case ci:R(E,S,O,H);break;case Gt:v(E,S,O,H);break;case ss:E==null&&C(S,O,H,te);break;case L:x(E,S,O,H,z,Y,te,J,Z);break;default:ae&1?W(E,S,O,H,z,Y,te,J,Z):ae&6?Ae(E,S,O,H,z,Y,te,J,Z):(ae&64||ae&128)&&G.process(E,S,O,H,z,Y,te,J,Z,F)}ge!=null&&z?ts(ge,E&&E.ref,Y,S||E,!S):ge==null&&E&&E.ref!=null&&ts(E.ref,null,Y,E,!0)},R=(E,S,O,H)=>{if(E==null)i(S.el=u(S.children),O,H);else{let z=S.el=E.el;S.children!==E.children&&y(z,S.children)}},v=(E,S,O,H)=>{E==null?i(S.el=p(S.children||""),O,H):S.el=E.el},C=(E,S,O,H)=>{[E.el,E.anchor]=A(E.children,S,O,H,E.el,E.anchor)},I=(E,S,O,H)=>{if(S.children!==E.children){let z=h(E.anchor);q(E),[S.el,S.anchor]=A(S.children,O,z,H)}else S.el=E.el,S.anchor=E.anchor},V=({el:E,anchor:S},O,H)=>{let z;for(;E&&E!==S;)z=h(E),i(E,O,H),E=z;i(S,O,H)},q=({el:E,anchor:S})=>{let O;for(;E&&E!==S;)O=h(E),s(E),E=O;s(S)},W=(E,S,O,H,z,Y,te,J,Z)=>{if(S.type==="svg"?te="svg":S.type==="math"&&(te="mathml"),E==null)se(S,O,H,z,Y,te,J,Z);else{let G=E.el&&E.el._isVueCE?E.el:null;try{G&&G._beginPatch(),Ee(E,S,z,Y,te,J,Z)}finally{G&&G._endPatch()}}},se=(E,S,O,H,z,Y,te,J)=>{let Z,G,{props:ge,shapeFlag:ae,transition:de,dirs:pe}=E;if(Z=E.el=a(E.type,Y,ge&&ge.is,ge),ae&8?m(Z,E.children):ae&16&&ne(E.children,Z,null,H,z,gr(E,Y),te,J),pe&&Hn(E,null,H,"created"),Q(Z,E,E.scopeId,te,H),ge){for(let Re in ge)Re!=="value"&&!ho(Re)&&r(Z,Re,null,ge[Re],Y,H);"value"in ge&&r(Z,"value",null,ge.value,Y),(G=ge.onVnodeBeforeMount)&&en(G,H,E)}pe&&Hn(E,null,H,"beforeMount");let De=zf(z,de);De&&de.beforeEnter(Z),i(Z,S,O),((G=ge&&ge.onVnodeMounted)||De||pe)&&Dt(()=>{let _e;G&&en(G,H,E),De&&de.enter(Z),pe&&Hn(E,null,H,"mounted")},z)},Q=(E,S,O,H,z)=>{if(O&&w(E,O),H)for(let Y=0;Y{for(let G=Z;G{let J=S.el=E.el,{patchFlag:Z,dynamicChildren:G,dirs:ge}=S;Z|=E.patchFlag&16;let ae=E.props||Ke,de=S.props||Ke,pe;if(O&&jn(O,!1),(pe=de.onVnodeBeforeUpdate)&&en(pe,O,S,E),ge&&Hn(S,E,O,"beforeUpdate"),O&&jn(O,!0),G&&(!E.dynamicChildren||E.dynamicChildren.length!==G.length)&&(Z=0,te=!1,G=null),(ae.innerHTML&&de.innerHTML==null||ae.textContent&&de.textContent==null)&&m(J,""),G?D(E.dynamicChildren,G,J,O,H,gr(S,z),Y):te||Te(E,S,J,null,O,H,gr(S,z),Y,!1),Z>0){if(Z&16)oe(J,ae,de,O,z);else if(Z&2&&ae.class!==de.class&&r(J,"class",null,de.class,z),Z&4&&r(J,"style",ae.style,de.style,z),Z&8){let De=S.dynamicProps;for(let Re=0;Re{pe&&en(pe,O,S,E),ge&&Hn(S,E,O,"updated")},H)},D=(E,S,O,H,z,Y,te)=>{for(let J=0;J{if(S!==O){if(S!==Ke)for(let Y in S)!ho(Y)&&!(Y in O)&&r(E,Y,S[Y],null,z,H);for(let Y in O){if(ho(Y))continue;let te=O[Y],J=S[Y];te!==J&&Y!=="value"&&r(E,Y,J,te,z,H)}"value"in O&&r(E,"value",S.value,O.value,z)}},x=(E,S,O,H,z,Y,te,J,Z)=>{let G=S.el=E?E.el:u(""),ge=S.anchor=E?E.anchor:u(""),{patchFlag:ae,dynamicChildren:de,slotScopeIds:pe}=S;pe&&(J=J?J.concat(pe):pe),E==null?(i(G,O,H),i(ge,O,H),ne(S.children||[],O,ge,z,Y,te,J,Z)):ae>0&&ae&64&&de&&E.dynamicChildren&&E.dynamicChildren.length===de.length?(D(E.dynamicChildren,de,O,z,Y,te,J),(S.key!=null||z&&S===z.subTree)&&td(E,S,!0)):Te(E,S,O,ge,z,Y,te,J,Z)},Ae=(E,S,O,H,z,Y,te,J,Z)=>{S.slotScopeIds=J,E==null?S.shapeFlag&512?z.ctx.activate(S,O,H,te,Z):be(S,O,H,z,Y,te,Z):le(E,S,Z)},be=(E,S,O,H,z,Y,te)=>{let J=E.component=Jf(E,H,z);if(li(E)&&(J.ctx.renderer=F),Qf(J,!1,te),J.asyncDep){if(z&&z.registerDep(J,fe,te,Y),!E.el){let Z=J.subTree=Me(Gt);v(null,Z,S,O),E.placeholder=Z.el}}else fe(J,E,S,O,z,Y,te)},le=(E,S,O)=>{let H=S.component=E.component;if(If(E,S,O))if(H.asyncDep&&!H.asyncResolved){S.el=E.el,S.placeholder=E.placeholder,ke(H,S,O);return}else H.next=S,H.update();else S.el=E.el,S.placeholder=E.placeholder,H.vnode=S},fe=(E,S,O,H,z,Y,te)=>{let J=()=>{if(E.isMounted){let{next:ae,bu:de,u:pe,parent:De,vnode:Re}=E;{let Fe=nd(E);if(Fe){ae&&(ae.el=Re.el,ke(E,ae,te)),Fe.asyncDep.then(()=>{Dt(()=>{E.isUnmounted||G()},z)});return}}let _e=ae,me;jn(E,!1),ae?(ae.el=Re.el,ke(E,ae,te)):ae=Re,de&&mo(de),(me=ae.props&&ae.props.onVnodeBeforeUpdate)&&en(me,De,ae,Re),jn(E,!0);let Se=mr(E),ze=E.subTree;E.subTree=Se,N(ze,Se,b(ze.el),he(ze),E,z,Y),ae.el=Se.el,_e===null&&_f(E,Se.el),pe&&Dt(pe,z),(me=ae.props&&ae.props.onVnodeUpdated)&&Dt(()=>en(me,De,ae,Re),z)}else{let ae,{el:de,props:pe}=S,{bm:De,m:Re,parent:_e,root:me,type:Se}=E,ze=ns(S);if(jn(E,!1),De&&mo(De),!ze&&(ae=pe&&pe.onVnodeBeforeMount)&&en(ae,_e,S),jn(E,!0),de&&K){let Fe=()=>{E.subTree=mr(E),K(de,E.subTree,E,z,null)};ze&&Se.__asyncHydrate?Se.__asyncHydrate(de,E,Fe):Fe()}else{me.ce&&me.ce._hasShadowRoot()&&me.ce._injectChildStyle(Se,E.parent?E.parent.type:void 0);let Fe=E.subTree=mr(E);N(null,Fe,O,H,E,z,Y),S.el=Fe.el}if(Re&&Dt(Re,z),!ze&&(ae=pe&&pe.onVnodeMounted)){let Fe=S;Dt(()=>en(ae,_e,Fe),z)}(S.shapeFlag&256||_e&&ns(_e.vnode)&&_e.vnode.shapeFlag&256)&&E.a&&Dt(E.a,z),E.isMounted=!0,S=O=H=null}};E.scope.on();let Z=E.effect=new yo(J);E.scope.off();let G=E.update=Z.run.bind(Z),ge=E.job=Z.runIfDirty.bind(Z);ge.i=E,ge.id=E.uid,Z.scheduler=()=>Er(ge),jn(E,!0),G()},ke=(E,S,O)=>{S.component=E;let H=E.vnode.props;E.vnode=S,E.next=null,Vf(E,S.props,H,O),Uf(E,S.children,O),zt(),Rl(E),Ht()},Te=(E,S,O,H,z,Y,te,J,Z=!1)=>{let G=E&&E.children,ge=E?E.shapeFlag:0,ae=S.children,{patchFlag:de,shapeFlag:pe}=S;if(de>0){if(de&128){rt(G,ae,O,H,z,Y,te,J,Z);return}else if(de&256){Xe(G,ae,O,H,z,Y,te,J,Z);return}}pe&8?(ge&16&&X(G,z,Y),ae!==G&&m(O,ae)):ge&16?pe&16?rt(G,ae,O,H,z,Y,te,J,Z):X(G,z,Y,!0):(ge&8&&m(O,""),pe&16&&ne(ae,O,H,z,Y,te,J,Z))},Xe=(E,S,O,H,z,Y,te,J,Z)=>{E=E||En,S=S||En;let G=E.length,ge=S.length,ae=Math.min(G,ge),de;for(de=0;dege?X(E,z,Y,!0,!1,ae):ne(S,O,H,z,Y,te,J,Z,ae)},rt=(E,S,O,H,z,Y,te,J,Z)=>{let G=0,ge=S.length,ae=E.length-1,de=ge-1;for(;G<=ae&&G<=de;){let pe=E[G],De=S[G]=Z?mn(S[G]):nn(S[G]);if(xo(pe,De))N(pe,De,O,null,z,Y,te,J,Z);else break;G++}for(;G<=ae&&G<=de;){let pe=E[ae],De=S[de]=Z?mn(S[de]):nn(S[de]);if(xo(pe,De))N(pe,De,O,null,z,Y,te,J,Z);else break;ae--,de--}if(G>ae){if(G<=de){let pe=de+1,De=pede)for(;G<=ae;)Qe(E[G],z,Y,!0),G++;else{let pe=G,De=G,Re=new Map;for(G=De;G<=de;G++){let U=S[G]=Z?mn(S[G]):nn(S[G]);U.key!=null&&Re.set(U.key,G)}let _e,me=0,Se=de-De+1,ze=!1,Fe=0,k=new Array(Se);for(G=0;G=Se){Qe(U,z,Y,!0);continue}let j;if(U.key!=null)j=Re.get(U.key);else for(_e=De;_e<=de;_e++)if(k[_e-De]===0&&xo(U,S[_e])){j=_e;break}j===void 0?Qe(U,z,Y,!0):(k[j-De]=G+1,j>=Fe?Fe=j:ze=!0,N(U,S[j],O,null,z,Y,te,J,Z),me++)}let _=ze?Hf(k):En;for(_e=_.length-1,G=Se-1;G>=0;G--){let U=De+G,j=S[U],ue=S[U+1],we=U+1{let{el:Y,type:te,transition:J,children:Z,shapeFlag:G}=E;if(G&6){at(E.component.subTree,S,O,H);return}if(G&128){E.suspense.move(S,O,H);return}if(G&64){te.move(E,S,O,F);return}if(te===L){i(Y,S,O);for(let ae=0;aeJ.enter(Y),z));else{let{leave:ae,delayLeave:de,afterLeave:pe}=J,De=()=>{E.ctx.isUnmounted?s(Y):i(Y,S,O)},Re=()=>{let _e=Y._isLeaving||!!Y[fr];Y._isLeaving&&Y[fr](!0),J.persisted&&!_e?De():ae(Y,()=>{De(),pe&&pe()})};de?de(Y,De,Re):Re()}else i(Y,S,O)},Qe=(E,S,O,H=!1,z=!1)=>{let{type:Y,props:te,ref:J,children:Z,dynamicChildren:G,shapeFlag:ge,patchFlag:ae,dirs:de,cacheIndex:pe,memo:De}=E;if((ae===-2||G&&G.hasOnce)&&(z=!1),J!=null&&(zt(),ts(J,null,O,E,!0),Ht()),pe!=null&&(!E.ctx||E.ctx===S)&&(S.renderCache[pe]=void 0),ge&256){S.ctx.deactivate(E);return}let Re=ge&1&&de,_e=!ns(E),me;if(_e&&(me=te&&te.onVnodeBeforeUnmount)&&en(me,S,E),ge&6)We(E.component,O,H);else{if(ge&128){E.suspense.unmount(O,H);return}Re&&Hn(E,null,S,"beforeUnmount"),ge&64?E.type.remove(E,S,O,F,H):G&&!G.hasOnce&&(Y!==L||ae>0&&ae&64)?X(G,S,O,!1,!0):(Y===L&&ae&384||!z&&ge&16)&&X(Z,S,O),H&&wt(E)}let Se=De!=null&&pe==null;(_e&&(me=te&&te.onVnodeUnmounted)||Re||Se)&&Dt(()=>{me&&en(me,S,E),Re&&Hn(E,null,S,"unmounted"),Se&&(E.el=null)},O)},wt=E=>{let{type:S,el:O,anchor:H,transition:z}=E,Y=S===L;if(Y&&!z){et(O,H);return}if(S===ss){q(E),z&&!z.persisted&&z.afterLeave&&z.afterLeave();return}let te=Y?vr(E):E,J=()=>{Y?b(O)&&et(O,H):s(O),z&&!z.persisted&&z.afterLeave&&z.afterLeave()};if(te&&te.shapeFlag&1&&z&&!z.persisted){let{leave:Z,delayLeave:G}=z,ge=te.el,ae=()=>Z(ge,J);G?G(ge,J,ae):ae()}else J()},et=(E,S)=>{let O;for(;E!==S;)O=h(E),s(E),E=O;s(S)},We=(E,S,O)=>{let{bum:H,scope:z,job:Y,subTree:te,um:J,m:Z,a:G}=E;yl(Z),yl(G),H&&mo(H),z.stop(),Y?(Y.flags|=8,Qe(te,E,S,O)):E.vnode.el&&te&&(te.transition=E.vnode.transition,Qe(te,E,S,O)),J&&Dt(J,S),Dt(()=>{E.isUnmounted=!0},S)},X=(E,S,O,H=!1,z=!1,Y=0)=>{for(let te=Y;te{if(E.shapeFlag&6)return he(E.component.subTree);if(E.shapeFlag&128)return E.suspense.next();let S=h(E.anchor||E.el),O=S&&S[lf];return O?h(O):S},M=(E,S,O)=>{let H=E&&S._vnode?void 0:E&&E.component?E.component.uid:Xf();nf(()=>{E==null?S._vnode&&Qe(S._vnode,null,null,!0):N(S._vnode||null,E,S,null,null,null,O),S._vnode=E},H)},F={p:N,um:Qe,m:at,r:wt,mt:be,mc:ne,pc:Te,pbc:D,n:he,o:e},B,K;return t&&([B,K]=t(F)),{render:M,hydrate:B,createApp:Rf(M,B)}}function gr({type:e,props:t},o){return o==="svg"&&e==="foreignObject"||o==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:o}function jn({effect:e,job:t},o){o?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function zf(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function td(e,t,o=!1){let i=e.children,s=t.children;if(Ne(i)&&Ne(s))for(let r=0;r>1,e[o[u]]0&&(t[i]=o[r-1]),o[r]=i)}}for(r=o.length,a=o[r-1];r-- >0;)o[r]=a,a=t[a];return o}function nd(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:nd(t)}function yl(e){if(e)for(let t=0;te.__isSuspense;function jf(e,t){t&&t.pendingBranch?Ne(e)?t.effects.push(...e):t.effects.push(e):Nl(e)}var L=Symbol.for("v-fgt"),ci=Symbol.for("v-txt"),Gt=Symbol.for("v-cmt"),ss=Symbol.for("v-stc"),Gn=[],_t=null;function l(e=!1){Gn.push(_t=e?null:[])}function sd(){Gn.pop(),_t=Gn[Gn.length-1]||null}var as=1;function si(e,t=!1){as+=e,e<0&&_t&&t&&(_t.hasOnce=!0)}function id(e){return e.dynamicChildren=as>0?_t||En:null,sd(),as>0&&_t&&_t.push(e),e}function d(e,t,o,i,s,r){return id(n(e,t,o,i,s,r,!0))}function sn(e,t,o,i,s){return id(Me(e,t,o,i,s,!0))}function ls(e){return e?e.__v_isVNode===!0:!1}function xo(e,t){return e.type===t.type&&e.key===t.key}var rd=({key:e})=>e??null,xs=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?tt(e)||ht(e)||Ie(e)?{i:It,r:e,k:t,f:!!o}:e:null);function n(e,t=null,o=null,i=0,s=null,r=e===L?0:1,a=!1,u=!1){let p={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&rd(t),ref:t&&xs(t),scopeId:Tl,slotScopeIds:null,children:o,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:i,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:It};return u?(ii(p,o),r&128&&e.normalize(p)):o&&(p.shapeFlag|=tt(o)?8:16),as>0&&!a&&_t&&(p.patchFlag>0||r&6)&&p.patchFlag!==32&&_t.push(p),p}var Me=Gf;function Gf(e,t=null,o=null,i=0,s=null,r=!1){if((!e||e===yf)&&(e=Gt),ls(e)){let u=Co(e,t,!0);return o&&ii(u,o),as>0&&!r&&_t&&(u.shapeFlag&6?_t[_t.indexOf(e)]=u:_t.push(u)),u.patchFlag=-2,u}if(nh(e)&&(e=e.__vccOpts),t){t=Wf(t);let{class:u,style:p}=t;u&&!tt(u)&&(t.class=T(u)),je(p)&&(Zo(p)&&!Ne(p)&&(p=lt({},p)),t.style=$e(p))}let a=tt(e)?1:od(e)?128:ai(e)?64:je(e)?4:Ie(e)?2:0;return n(e,t,o,i,s,a,r,!0)}function Wf(e){return e?Zo(e)||Yl(e)?lt({},e):e:null}function Co(e,t,o=!1,i=!1){let{props:s,ref:r,patchFlag:a,children:u,transition:p}=e,y=t?Kf(s||{},t):s,m={__v_isVNode:!0,__v_skip:!0,type:e.type,props:y,key:y&&rd(y),ref:t&&t.ref?o&&r?Ne(r)?r.concat(xs(t)):[r,xs(t)]:xs(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:u,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==L?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:p,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Co(e.ssContent),ssFallback:e.ssFallback&&Co(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce,cacheIndex:e.cacheIndex};return p&&i&&rs(m,p.clone(m)),m}function g(e=" ",t=0){return Me(ci,null,e,t)}function Ce(e,t){let o=Me(ss,null,e);return o.staticCount=t,o}function f(e="",t=!1){return t?(l(),sn(Gt,null,e)):Me(Gt,null,e)}function nn(e){return e==null||typeof e=="boolean"?Me(Gt):Ne(e)?Me(L,null,e.slice()):ls(e)?mn(e):Me(ci,null,String(e))}function mn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Co(e)}function ii(e,t){let o=0,{shapeFlag:i}=e;if(t==null)t=null;else if(Ne(t))o=16;else if(typeof t=="object")if(i&65){let s=t.default;s&&(s._c&&(s._d=!1),ii(e,s()),s._c&&(s._d=!0));return}else{o=32;let s=t._;!s&&!Yl(t)?t._ctx=It:s===3&&It&&(It.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(Ie(t)){if(i&65){ii(e,{default:t});return}t={default:t,_ctx:It},o=32}else t=String(t),i&64?(o=16,t=[g(t)]):o=8;e.children=t,e.shapeFlag|=o}function Kf(...e){let t={};for(let o=0;oyt||It,ri,ds;{let e=zo(),t=(o,i)=>{let s;return(s=e[o])||(s=e[o]=[]),s.push(i),r=>{s.length>1?s.forEach(a=>a(r)):s[0](r)}};ri=t("__VUE_INSTANCE_SETTERS__",o=>yt=o),ds=t("__VUE_SSR_SETTERS__",o=>Eo=o)}var hs=e=>{let t=yt;return ri(e),e.scope.on(),()=>{e.scope.off(),ri(t)}},bl=()=>{yt&&yt.scope.off(),ri(null)};function ld(e){return e.vnode.shapeFlag&4}var Eo=!1;function Qf(e,t=!1,o=!1){t&&ds(t);let{props:i,children:s}=e.vnode,r=ld(e);Mf(e,i,r,t),Lf(e,s,o||t);let a=r?Zf(e,t):void 0;return t&&ds(!1),a}function Zf(e,t){let o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,bf);let{setup:i}=o;if(i){zt();let s=e.setupContext=i.length>1?eh(e):null,r=hs(e),a=us(i,e,0,[e.props,s]),u=Yi(a);if(Ht(),r(),(u||e.sp)&&!ns(e)&&Sr(e),u){if(a.then(bl,bl),t)return a.then(p=>{ds(!0);try{wl(e,p,t)}finally{ds(!1)}}).catch(p=>{cs(p,e,0)});e.asyncDep=a}else wl(e,a,t)}else dd(e,t)}function wl(e,t,o){Ie(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:je(t)&&(e.setupState=Qs(t)),dd(e,o)}var kl,Cl;function dd(e,t,o){let i=e.type;if(!e.render){if(!t&&kl&&!i.render){let s=i.template||Nr(e).template;if(s){let{isCustomElement:r,compilerOptions:a}=e.appContext.config,{delimiters:u,compilerOptions:p}=i,y=lt(lt({isCustomElement:r,delimiters:u},a),p);i.render=kl(s,y)}}e.render=i.render||Nt,Cl&&Cl(e)}{let s=hs(e);zt();try{wf(e)}finally{Ht(),s()}}}var xf={get(e,t){return gt(e,"get",""),e[t]}};function eh(e){let t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,xf),slots:e.slots,emit:e.emit,expose:t}}function pi(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Qs(bo(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in os)return os[o](e)},has(t,o){return o in t||o in os}})):e.proxy}function th(e,t=!0){return Ie(e)?e.displayName||e.name:e.name||t&&e.__name}function nh(e){return Ie(e)&&"__vccOpts"in e}var bt=(e,t)=>il(e,t,Eo);function Oe(e,t,o){try{si(-1);let i=arguments.length;return i===2?je(t)&&!Ne(t)?ls(t)?Me(e,null,[t]):Me(e,t):Me(e,null,t):(i>3?o=Array.prototype.slice.call(arguments,2):i===3&&ls(o)&&(o=[o]),Me(e,t,o))}finally{si(1)}}var oh="3.5.44";var Ir,ud=typeof window<"u"&&window.trustedTypes;if(ud)try{Ir=ud.createPolicy("vue",{createHTML:e=>e})}catch{}var Cd=Ir?e=>Ir.createHTML(e):e=>e,sh="http://www.w3.org/2000/svg",ih="http://www.w3.org/1998/Math/MathML",vn=typeof document<"u"?document:null,cd=vn&&vn.createElement("template"),rh={insert:(e,t,o)=>{t.insertBefore(e,o||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,o,i)=>{let s=t==="svg"?vn.createElementNS(sh,e):t==="mathml"?vn.createElementNS(ih,e):o?vn.createElement(e,{is:o}):vn.createElement(e);return e==="select"&&i&&i.multiple!=null&&s.setAttribute("multiple",i.multiple),s},createText:e=>vn.createTextNode(e),createComment:e=>vn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>vn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,i,s,r){let a=o?o.previousSibling:t.lastChild;if(s&&(s===r||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),o),!(s===r||!(s=s.nextSibling)););else{cd.innerHTML=Cd(i==="svg"?`${e}`:i==="mathml"?`${e}`:e);let u=cd.content;if(i==="svg"||i==="mathml"){let p=u.firstChild;for(;p.firstChild;)u.appendChild(p.firstChild);u.removeChild(p)}t.insertBefore(u,o)}return[a?a.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}};var ah=Symbol("_vtc");function lh(e,t,o){let i=e[ah];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}var mi=Symbol("_vod"),Ed=Symbol("_vsh"),ee={name:"show",beforeMount(e,{value:t},{transition:o}){e[mi]=e.style.display==="none"?"":e.style.display,o&&t?o.beforeEnter(e):ms(e,t)},mounted(e,{value:t},{transition:o}){o&&t&&o.enter(e)},updated(e,{value:t,oldValue:o},{transition:i}){!t!=!o&&(i?t?(i.beforeEnter(e),ms(e,!0),i.enter(e)):i.leave(e,()=>{ms(e,!1)}):ms(e,t))},beforeUnmount(e,{value:t}){ms(e,t)}};function ms(e,t){e.style.display=t?e[mi]:"none",e[Ed]=!t}var dh=Symbol("");var uh=/(?:^|;)\s*display\s*:/;function ch(e,t,o){let i=e.style,s=tt(o),r=!1;if(o&&!s){if(t)if(tt(t))for(let a of t.split(";")){let u=a.slice(0,a.indexOf(":")).trim();o[u]==null&&gs(i,u,"")}else for(let a in t)o[a]==null&&gs(i,a,"");for(let a in o){a==="display"&&(r=!0);let u=o[a];u!=null?fh(e,a,!tt(t)&&t?t[a]:void 0,u)||gs(i,a,u):gs(i,a,"")}}else if(s){if(t!==o){let a=i[dh];a&&(o+=";"+a),i.cssText=o,r=uh.test(o)}}else t&&e.removeAttribute("style");mi in e&&((!s||t!==o)&&(e[mi]=r?i.display:""),e[Ed]&&(i.display="none"))}var fi=/\s*!important$/;function gs(e,t,o){if(Ne(o))o.forEach(i=>gs(e,t,i));else if(o==null&&(o=""),t.startsWith("--"))fi.test(o)?e.setProperty(t,o.replace(fi,""),"important"):e.setProperty(t,o);else{let i=ph(e,t);fi.test(o)?e.setProperty(Xt(i),o.replace(fi,""),"important"):e[i]=o}}var pd=["Webkit","Moz","ms"],Tr={};function ph(e,t){let o=Tr[t];if(o)return o;let i=ut(t);if(i!=="filter"&&i in e)return Tr[t]=i;i=Un(i);for(let s=0;sPr||(bh.then(()=>Pr=0),Pr=Date.now());function kh(e,t){let o=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=o.attached)return;let s=o.value;if(Ne(s)){let r=i.stopImmediatePropagation;i.stopImmediatePropagation=()=>{r.call(i),i._stopped=!0};let a=s.slice(),u=[i];for(let p=0;pe.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ch=(e,t,o,i,s,r)=>{let a=s==="svg";t==="class"?lh(e,i,a):t==="style"?ch(e,o,i):po(t)?fo(t)||mh(e,t,o,i,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Eh(e,t,i,a))?(md(e,t,i),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&hd(e,t,i,a,r,t!=="value")):e._isVueCE&&(Sh(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!tt(i)))?md(e,ut(t),i,r,t):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),hd(e,t,i,a))};function Eh(e,t,o,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&vd(t)&&Ie(o));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){let s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return vd(t)&&tt(o)?!1:t in e}function Sh(e,t){let o=e._def.props;if(!o)return!1;let i=ut(t);return Array.isArray(o)?o.some(s=>ut(s)===i):Object.keys(o).some(s=>ut(s)===i)}var So=e=>{let t=e.props["onUpdate:modelValue"]||!1;return Ne(t)?o=>mo(t,o):t};function Nh(e){e.target.composing=!0}function yd(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}var rn=Symbol("_assign"),hi=Symbol("_initialValue");function Or(e,t,o){return t&&(e=e.trim()),o&&(e=go(e)),e}var dt={created(e,{modifiers:{lazy:t,trim:o,number:i}},s){e.parentNode&&(e.type==="text"?e[hi]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[hi]=e.defaultValue.replace(/\r\n?/g,` +`))),e[rn]=So(s);let r=i||s.props&&s.props.type==="number";Nn(e,t?"change":"input",a=>{a.target.composing||e[rn](Or(e.value,o,r))}),(o||r)&&Nn(e,"change",()=>{e.value=Or(e.value,o,r)}),t||(Nn(e,"compositionstart",Nh),Nn(e,"compositionend",yd),Nn(e,"change",yd))},mounted(e,{value:t,modifiers:{trim:o,number:i}}){let s=t??"",r=e[hi];delete e[hi],r!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==r?e[rn](Or(e.value,o,i)):e.value=s},beforeUpdate(e,{value:t,oldValue:o,modifiers:{lazy:i,trim:s,number:r}},a){if(e[rn]=So(a),e.composing)return;let u=(r||e.type==="number")&&!/^0\d/.test(e.value)?go(e.value):e.value,p=t??"";if(u===p)return;let y=e.getRootNode();(y instanceof Document||y instanceof ShadowRoot)&&y.activeElement===e&&e.type!=="range"&&(i&&t===o||s&&e.value.trim()===p)||(e.value=p)}},_r={deep:!0,created(e,t,o){e[rn]=So(o),Nn(e,"change",()=>{let i=e._modelValue,s=vs(e),r=e.checked,a=e[rn];if(Ne(i)){let u=zs(i,s),p=u!==-1;if(r&&!p)a(i.concat(s));else if(!r&&p){let y=[...i];y.splice(u,1),a(y)}}else if(Ut(i)){let u=new Set(i);r?u.add(s):u.delete(s),a(u)}else a(Sd(e,r))})},mounted:bd,beforeUpdate(e,t,o){e[rn]=So(o),bd(e,t,o)}};function bd(e,{value:t,oldValue:o},i){e._modelValue=t;let s;if(Ne(t))s=zs(t,i.props.value)>-1;else if(Ut(t))s=t.has(i.props.value);else{if(t===o)return;s=Ft(t,Sd(e,!0))}e.checked!==s&&(e.checked=s)}var an={deep:!0,created(e,{value:t,modifiers:{number:o}},i){e._modelValue=t,Nn(e,"change",()=>{let s=Array.prototype.filter.call(e.options,p=>p.selected).map(p=>o?go(vs(p)):vs(p)),r=e.multiple,a=r?Ut(e._modelValue)?new Set(s):s:s[0],u=e._pendingValue=[r,r?Ne(a)?s.slice():s:a];try{e[rn](a)}finally{ot(()=>{e._pendingValue===u&&(e._pendingValue=void 0)})}}),e[rn]=So(i)},mounted(e,{value:t}){wd(e,t)},beforeUpdate(e,{value:t},o){e._modelValue=t,e[rn]=So(o)},updated(e,{value:t}){let o=e._pendingValue;e._pendingValue=void 0,(!o||o[0]!==e.multiple||!Rh(t,o[1],o[0]))&&wd(e,t)}};function Rh(e,t,o){if(!o)return Ft(e,t);if(Ne(e))return Ft(e,t);if(Ut(e)){if(e.size!==t.length)return!1;for(let i of t)if(!e.has(i))return!1;return!0}return!1}function wd(e,t){let o=e.multiple,i=Ne(t);if(!(o&&!i&&!Ut(t))){for(let s=0,r=e.options.length;sString(y)===String(u)):a.selected=zs(t,u)>-1}else a.selected=t.has(u);else if(Ft(vs(a),t)){e.selectedIndex!==s&&(e.selectedIndex=s);return}}!o&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function vs(e){return"_value"in e?e._value:e.value}function Sd(e,t){let o=t?"_trueValue":"_falseValue";return o in e?e[o]:t}var Dh=["ctrl","shift","alt","meta"],Ah={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Dh.some(o=>e[`${o}Key`]&&!t.includes(o))},ce=(e,t)=>{if(!e)return e;let o=e._withMods||(e._withMods={}),i=t.join(".");return o[i]||(o[i]=((s,...r)=>{for(let a=0;a{let o=e._withKeys||(e._withKeys={}),i=t.join(".");return o[i]||(o[i]=(s=>{if(!("key"in s))return;let r=Xt(s.key);if(t.some(a=>a===r||Th[a]===r))return e(s)}))},Ph=lt({patchProp:Ch},rh),kd;function Oh(){return kd||(kd=ed(Ph))}var Nd=((...e)=>{let t=Oh().createApp(...e),{mount:o}=t;return t.mount=i=>{let s=_h(i);if(!s)return;let r=t._component;!Ie(r)&&!r.render&&!r.template&&(r.template=s.innerHTML),s.nodeType===1&&(s.textContent="");let a=o(s,!1,Ih(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),a},t});function Ih(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function _h(e){return tt(e)?document.querySelector(e):e}var Jn=typeof document<"u";function Dd(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Mh(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Dd(e.default)}var Ge=Object.assign;function gi(e,t){let o={};for(let i in t){let s=t[i];o[i]=Lt(s)?s.map(e):e(s)}return o}var Ro=()=>{},Lt=Array.isArray;function qr(e,t){let o={};for(let i in e)o[i]=i in t?t[i]:e[i];return o}var Ad=/#/g,Vh=/&/g,qh=/\//g,$h=/=/g,Lh=/\?/g,Td=/\+/g,Uh=/%5B/g,Fh=/%5D/g,Pd=/%5E/g,Bh=/%60/g,Od=/%7B/g,zh=/%7C/g,Id=/%7D/g,Hh=/%20/g;function $r(e){return e==null?"":encodeURI(""+e).replace(zh,"|").replace(Uh,"[").replace(Fh,"]")}function _d(e){return $r(e).replace(Od,"{").replace(Id,"}").replace(Pd,"^")}function Mr(e){return $r(e).replace(Td,"%2B").replace(Hh,"+").replace(Ad,"%23").replace(Vh,"%26").replace(Bh,"`").replace(Od,"{").replace(Id,"}").replace(Pd,"^")}function jh(e){return Mr(e).replace($h,"%3D")}function Gh(e){return $r(e).replace(Ad,"%23").replace(Lh,"%3F")}function Md(e){return Gh(e).replace(qh,"%2F")}function No(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}var Wh=/\/$/,Kh=e=>e.replace(Wh,"");function vi(e,t,o="/"){let i,s={},r="",a="",u=t.indexOf("#"),p=t.indexOf("?");return p=u>=0&&p>u?-1:p,p>=0&&(i=t.slice(0,p),r=t.slice(p,u>0?u:t.length),s=e(r.slice(1))),u>=0&&(i=i||t.slice(0,u),a=t.slice(u,t.length)),i=Xh(i??t,o),{fullPath:i+r+a,path:i,query:s,hash:No(a)}}function Vd(e,t){let o=t.query?e(t.query):"";return t.path+(o&&"?")+o+(t.hash||"")}function Lr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function qd(e,t,o){let i=t.matched.length-1,s=o.matched.length-1;return i>-1&&i===s&&Yn(t.matched[i],o.matched[s])&&Ur(t.params,o.params)&&e(t.query)===e(o.query)&&t.hash===o.hash}function Yn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Ur(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var o in e)if(!Yh(e[o],t[o]))return!1;return!0}function Yh(e,t){return Lt(e)?Rd(e,t):Lt(t)?Rd(t,e):e?.valueOf()===t?.valueOf()}function Rd(e,t){return Lt(t)?e.length===t.length&&e.every((o,i)=>o===t[i]):e.length===1&&e[0]===t}function Xh(e,t){if(e.startsWith("/"))return e;if(!e)return t;let o=t.split("/"),i=e.split("/"),s=i[i.length-1];(s===".."||s===".")&&i.push("");let r=o.length-1,a,u;for(a=0;a1&&r--;else break;return o.slice(0,r).join("/")+"/"+i.slice(a).join("/")}var bn={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},yi=(function(e){return e.pop="pop",e.push="push",e})({}),bi=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function $d(e){if(!e)if(Jn){let t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Kh(e)}var Jh=/^[^#]+#/;function Ld(e,t){return e.replace(Jh,"#")+t}function Qh(e,t){let o=document.documentElement.getBoundingClientRect(),i=e.getBoundingClientRect();return{behavior:t.behavior,left:i.left-o.left-(t.left||0),top:i.top-o.top-(t.top||0)}}var ys=()=>({left:window.scrollX,top:window.scrollY});function Ud(e){let t;if("el"in e){let o=e.el,i=typeof o=="string"&&o.startsWith("#"),s=typeof o=="string"?i?document.getElementById(o.slice(1)):document.querySelector(o):o;if(!s)return;t=Qh(s,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Fr(e,t){return(history.state?history.state.position-t:-1)+e}var Vr=new Map;function Fd(e,t){Vr.set(e,t)}function Bd(e){let t=Vr.get(e);return Vr.delete(e),t}function Zh(e){return typeof e=="string"||e&&typeof e=="object"}function Br(e){return typeof e=="string"||typeof e=="symbol"}var it=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({}),zd=Symbol("");var aX={[it.MATCHER_NOT_FOUND]({location:e,currentLocation:t}){return`No match for ${JSON.stringify(e)}${t?` while being at -`+JSON.stringify(t):""}`},[ot.NAVIGATION_GUARD_REDIRECT]({from:e,to:t}){return`Redirected from "${e.fullPath}" to "${Bh(t)}" via a navigation guard.`},[ot.NAVIGATION_ABORTED]({from:e,to:t}){return`Navigation aborted from "${e.fullPath}" to "${t.fullPath}" via a navigation guard.`},[ot.NAVIGATION_CANCELLED]({from:e,to:t}){return`Navigation cancelled from "${e.fullPath}" to "${t.fullPath}" with a new navigation.`},[ot.NAVIGATION_DUPLICATED]({from:e,to:t}){return`Avoided redundant navigation to current location: "${e.fullPath}".`}};function Yn(e,t){return je(new Error,{type:e,[Od]:!0},t)}function an(e,t){return e instanceof Error&&Od in e&&(t==null||!!(e.type&t))}var Fh=["params","query","hash"];function Bh(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;let t={};for(let o of Fh)o in e&&(t[o]=e[o]);return JSON.stringify(t,null,2)}function Id(e){let t={};if(e===""||e==="?")return t;let o=(e[0]==="?"?e.slice(1):e).split("&");for(let i=0;is&&Ar(s)):[i&&Ar(i)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+o,s!=null&&(t+="="+s))})}return t}function Md(e){let t={};for(let o in e){let i=e[o];i!==void 0&&(t[o]=Lt(i)?i.map(s=>s==null?null:""+s):i==null?i:""+i)}return t}var Vd=Symbol(""),$r=Symbol(""),yi=Symbol(""),bi=Symbol(""),wi=Symbol("");function So(){let e=[];function t(i){return e.push(i),()=>{let s=e.indexOf(i);s>-1&&e.splice(s,1)}}function o(){e=[]}return{add:t,list:()=>e.slice(),reset:o}}function vn(e,t,o,i,s,r=a=>a()){let a=i&&(i.enterCallbacks[s]=i.enterCallbacks[s]||[]);return()=>new Promise((u,p)=>{let v=m=>{m===!1?p(Yn(ot.NAVIGATION_ABORTED,{from:o,to:t})):m instanceof Error?p(m):Uh(m)?p(Yn(ot.NAVIGATION_GUARD_REDIRECT,{from:t,to:m})):(a&&i.enterCallbacks[s]===a&&typeof m=="function"&&a.push(m),u())},h=r(()=>e.call(i&&i.instances[s],t,o,v)),g=Promise.resolve(h);e.length<3&&(g=g.then(v)),g.catch(m=>p(m))})}function ki(e,t,o,i,s=r=>r()){let r=[];for(let a of e)for(let u in a.components){let p=a.components[u];if(!(t!=="beforeRouteEnter"&&!a.instances[u]))if(vd(p)){let v=(p.__vccOpts||p)[t];v&&r.push(vn(v,o,i,a,u,s))}else{let v=p();r.push(()=>v.then(h=>{if(!h)throw new Error(`Couldn't resolve component "${u}" at "${a.path}"`);let g=kh(h)?h.default:h;a.mods[u]=h,a.components[u]=g;let m=(g.__vccOpts||g)[t];return m&&vn(m,o,i,a,u,s)()}))}}return r}function qd(e,t){let o=[],i=[],s=[],r=Math.max(t.matched.length,e.matched.length);for(let a=0;aKn(v,u))?i.push(u):o.push(u));let p=e.matched[a];p&&(t.matched.find(v=>Kn(v,p))||s.push(p))}return[o,i,s]}var zh=()=>location.protocol+"//"+location.host;function Kd(e,t){let{pathname:o,search:i,hash:s}=t,r=e.indexOf("#");if(r>-1){let a=s.includes(e.slice(r))?e.slice(r).length:1,u=s.slice(a);return u[0]!=="/"&&(u="/"+u),Or(u,"")}return Or(o,e)+i+s}function Hh(e,t,o,i){let s=[],r=[],a=null,u=({state:m})=>{let k=Kd(e,location),T=o.value,w=t.value,b=0;if(m){if(o.value=k,t.value=m,a&&a===T){a=null;return}b=w?m.position-w.position:0}else i(k);s.forEach(E=>{E(o.value,T,{delta:b,type:gi.pop,direction:b?b>0?vi.forward:vi.back:vi.unknown})})};function p(){a=o.value}function v(m){s.push(m);let k=()=>{let T=s.indexOf(m);T>-1&&s.splice(T,1)};return r.push(k),k}function h(){if(document.visibilityState==="hidden"){let{history:m}=window;if(!m.state)return;m.replaceState(je({},m.state,{scroll:gs()}),"")}}function g(){for(let m of r)m();r=[],window.removeEventListener("popstate",u),window.removeEventListener("pagehide",h),document.removeEventListener("visibilitychange",h)}return window.addEventListener("popstate",u),window.addEventListener("pagehide",h),document.addEventListener("visibilitychange",h),{pauseListeners:p,listen:v,destroy:g}}function $d(e,t,o,i=!1,s=!1){return{back:e,current:t,forward:o,replaced:i,position:window.history.length,scroll:s?gs():null}}function jh(e){let{history:t,location:o}=window,i={value:Kd(e,o)},s={value:t.state};s.value||r(i.value,{back:null,current:i.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function r(p,v,h){let g=e.indexOf("#"),m=g>-1?(o.host&&document.querySelector("base")?e:e.slice(g))+p:zh()+e+p;try{t[h?"replaceState":"pushState"](v,"",m),s.value=v}catch(k){console.error(k),o[h?"replace":"assign"](m)}}function a(p,v){r(p,je({},t.state,$d(s.value.back,p,s.value.forward,!0),v,{position:s.value.position}),!0),i.value=p}function u(p,v){let h=je({},s.value,t.state,{forward:p,scroll:gs()});r(h.current,h,!0),r(p,je({},$d(i.value,p,null),{position:h.position+1},v),!1),i.value=p}return{location:i,state:s,push:u,replace:a}}function Yd(e){e=Dd(e);let t=jh(e),o=Hh(e,t.state,t.location,t.replace);function i(r,a=!0){a||o.pauseListeners(),history.go(r)}let s=je({location:"",base:e,go:i,createHref:Ad.bind(null,e)},t,o);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}var Jn=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({}),pt=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(pt||{}),Gh={type:Jn.Static,value:""},Wh=/[a-zA-Z0-9_]/;function Kh(e){if(!e)return[[]];if(e==="/")return[[Gh]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(k){throw new Error(`ERR (${o})/"${v}": ${k}`)}let o=pt.Static,i=o,s=[],r;function a(){r&&s.push(r),r=[]}let u=0,p,v="",h="";function g(){v&&(o===pt.Static?r.push({type:Jn.Static,value:v}):o===pt.Param||o===pt.ParamRegExp||o===pt.ParamRegExpEnd?(r.length>1&&(p==="*"||p==="+")&&t(`A repeatable param (${v}) must be alone in its segment. eg: '/:ids+.`),r.push({type:Jn.Param,value:v,regexp:h,repeatable:p==="*"||p==="+",optional:p==="*"||p==="?"})):t("Invalid state to consume buffer"),v="")}function m(){v+=p}for(;ut.length?t.length===1&&t[0]===Et.Static+Et.Segment?1:-1:0}function Xd(e,t){let o=0,i=e.score,s=t.score;for(;o0&&t[t.length-1]<0}var Zh={strict:!1,end:!0,sensitive:!1};function xh(e,t,o){let i=Jh(Kh(e.path),o),s=je(i,{record:e,parent:t,children:[],alias:[]});return t&&!s.record.aliasOf==!t.record.aliasOf&&t.children.push(s),s}function em(e,t){let o=[],i=new Map;t=Pr(Zh,t);function s(g){return i.get(g)}function r(g,m,k){let T=!k,w=Bd(g);w.aliasOf=k&&k.record;let b=Pr(t,g),E=[w];if("alias"in g){let q=typeof g.alias=="string"?[g.alias]:g.alias;for(let M of q)E.push(Bd(je({},w,{components:k?k.record.components:w.components,path:M,aliasOf:k?k.record:w})))}let N,O;for(let q of E){let{path:M}=q;if(m&&M[0]!=="/"){let G=m.record.path,de=G[G.length-1]==="/"?"":"/";q.path=m.record.path+(M&&de+M)}if(N=xh(q,m,b),k?k.alias.push(N):(O=O||N,O!==N&&O.alias.push(N),T&&g.name&&!zd(N)&&a(g.name)),Jd(N)&&p(N),w.children){let G=w.children;for(let de=0;de{a(O)}:Eo}function a(g){if(Vr(g)){let m=i.get(g);m&&(i.delete(g),o.splice(o.indexOf(m),1),m.children.forEach(a),m.alias.forEach(a))}else{let m=o.indexOf(g);m>-1&&(o.splice(m,1),g.record.name&&i.delete(g.record.name),g.children.forEach(a),g.alias.forEach(a))}}function u(){return o}function p(g){let m=om(g,o);o.splice(m,0,g),g.record.name&&!zd(g)&&i.set(g.record.name,g)}function v(g,m){let k,T={},w,b;if("name"in g&&g.name){if(k=i.get(g.name),!k)throw Yn(ot.MATCHER_NOT_FOUND,{location:g});b=k.record.name,T=je(Fd(m.params,k.keys.filter(O=>!O.optional).concat(k.parent?k.parent.keys.filter(O=>O.optional):[]).map(O=>O.name)),g.params&&Fd(g.params,k.keys.map(O=>O.name))),w=k.stringify(T)}else if(g.path!=null)w=g.path,k=o.find(O=>O.re.test(w)),k&&(T=k.parse(w),b=k.record.name);else{if(k=m.name?i.get(m.name):o.find(O=>O.re.test(m.path)),!k)throw Yn(ot.MATCHER_NOT_FOUND,{location:g,currentLocation:m});b=k.record.name,T=je({},m.params,g.params),w=k.stringify(T)}let E=[],N=k;for(;N;)E.unshift(N.record),N=N.parent;return{name:b,path:w,params:T,matched:E,meta:nm(E)}}e.forEach(g=>r(g));function h(){o.length=0,i.clear()}return{addRoute:r,resolve:v,removeRoute:a,clearRoutes:h,getRoutes:u,getRecordMatcher:s}}function Fd(e,t){let o={};for(let i of t)i in e&&(o[i]=e[i]);return o}function Bd(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:tm(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function tm(e){let t={},o=e.props||!1;if("component"in e)t.default=o;else for(let i in e.components)t[i]=typeof o=="object"?o[i]:o;return t}function zd(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function nm(e){return e.reduce((t,o)=>je(t,o.meta),{})}function om(e,t){let o=0,i=t.length;for(;o!==i;){let r=o+i>>1;Xd(e,t[r])<0?i=r:o=r+1}let s=sm(e);return s&&(i=t.lastIndexOf(s,i-1)),i}function sm(e){let t=e;for(;t=t.parent;)if(Jd(t)&&Xd(e,t)===0)return t}function Jd({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Hd(e){let t=Dt(yi),o=Dt(bi),i=!1,s=null,r=yt(()=>{let h=pn(e.to);return t.resolve(h)}),a=yt(()=>{let{matched:h}=r.value,{length:g}=h,m=h[g-1],k=o.matched;if(!m||!k.length)return-1;let T=k.findIndex(Kn.bind(null,m));if(T>-1)return T;let w=jd(h[g-2]);return g>1&&jd(m)===w&&k[k.length-1].path!==w?k.findIndex(Kn.bind(null,h[g-2])):T}),u=yt(()=>a.value>-1&&dm(o.params,r.value.params)),p=yt(()=>a.value>-1&&a.value===o.matched.length-1&&Ir(o.params,r.value.params));function v(h={}){if(lm(h)){let g=t[pn(e.replace)?"replace":"push"](pn(e.to)).catch(Eo);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>g),g}return Promise.resolve()}return{route:r,href:yt(()=>r.value.href),isActive:u,isExactActive:p,navigate:v}}function im(e){return e.length===1?e[0]:e}var rm=us({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Hd,setup(e,{slots:t}){let o=et(Hd(e)),{options:i}=Dt(yi),s=yt(()=>({[Gd(e.activeClass,i.linkActiveClass,"router-link-active")]:o.isActive,[Gd(e.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:o.isExactActive}));return()=>{let r=t.default&&im(t.default(o));return e.custom?r:_e("a",{"aria-current":o.isExactActive?e.ariaCurrentValue:null,href:o.href,onClick:o.navigate,class:s.value},r)}}}),am=rm;function lm(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function dm(e,t){for(let o in t){let i=t[o],s=e[o];if(typeof i=="string"){if(i!==s)return!1}else if(!Lt(s)||s.length!==i.length||i.some((r,a)=>r.valueOf()!==s[a].valueOf()))return!1}return!0}function jd(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}var Gd=(e,t,o)=>e??t??o,um=us({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:o}){let i=Dt(wi),s=yt(()=>e.route||i.value),r=Dt($r,0),a=yt(()=>{let v=pn(r),{matched:h}=s.value,g;for(;(g=h[v])&&!g.components;)v++;return v}),u=yt(()=>s.value.matched[a.value]);Gn($r,yt(()=>a.value+1)),Gn(Vd,u),Gn(wi,s);let p=gt();return tt(()=>[p.value,u.value,e.name],([v,h,g],[m,k,T])=>{h&&(h.instances[g]=v,k&&k!==h&&v&&v===m&&(h.leaveGuards.size||(h.leaveGuards=k.leaveGuards),h.updateGuards.size||(h.updateGuards=k.updateGuards))),v&&h&&(!k||!Kn(h,k)||!m)&&(h.enterCallbacks[g]||[]).forEach(w=>w(v))},{flush:"post"}),()=>{let v=s.value,h=e.name,g=u.value,m=g&&g.components[h];if(!m)return Wd(o.default,{Component:m,route:v});let k=g.props[h],T=k?k===!0?v.params:typeof k=="function"?k(v):k:null,b=_e(m,je({},T,t,{onVnodeUnmounted:E=>{E.component.isUnmounted&&(g.instances[h]=null)},ref:p}));return Wd(o.default,{Component:b,route:v})||b}}});function Wd(e,t){if(!e)return null;let o=e(t);return o.length===1?o[0]:o}var Lr=um;function Qd(e){let t=em(e.routes,e),o=e.parseQuery||Id,i=e.stringifyQuery||qr,s=e.history,r=So(),a=So(),u=So(),p=Ys(yn),v=yn;Xn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");let h=hi.bind(null,L=>""+L),g=hi.bind(null,Sd),m=hi.bind(null,Co);function k(L,x){let H,ue;return Vr(L)?(H=t.getRecordMatcher(L),ue=x):ue=L,t.addRoute(ue,H)}function T(L){let x=t.getRecordMatcher(L);x&&t.removeRoute(x)}function w(){return t.getRoutes().map(L=>L.record)}function b(L){return!!t.getRecordMatcher(L)}function E(L,x){if(x=je({},x||p.value),typeof L=="string"){let R=mi(o,L,x.path),I=t.resolve({path:R.path},x),W=s.createHref(R.fullPath);return je(R,I,{params:m(I.params),hash:Co(R.hash),redirectedFrom:void 0,href:W})}let H;if(L.path!=null)H=je({},L,{path:mi(o,L.path,x.path).path});else{let R=je({},L.params);for(let I in R)R[I]==null&&delete R[I];H=je({},L,{params:g(R)}),x.params=g(x.params)}let ue=t.resolve(H,x),we=L.hash||"";ue.params=h(m(ue.params));let Oe=Nd(i,je({},L,{hash:Ed(we),path:ue.path})),C=s.createHref(Oe);return je({fullPath:Oe,hash:we,query:i===qr?Md(L.query):L.query||{}},ue,{redirectedFrom:void 0,href:C})}function N(L){return typeof L=="string"?mi(o,L,p.value.path):je({},L)}function O(L,x){if(v!==L)return Yn(ot.NAVIGATION_CANCELLED,{from:x,to:L})}function q(L){return de(L)}function M(L){return q(je(N(L),{replace:!0}))}function G(L,x){let H=L.matched[L.matched.length-1];if(H&&H.redirect){let{redirect:ue}=H,we=typeof ue=="function"?ue(L,x):ue;return typeof we=="string"&&(we=we.includes("?")||we.includes("#")?we=N(we):{path:we},we.params={}),je({query:L.query,hash:L.hash,params:we.path!=null?{}:L.params},we)}}function de(L,x){let H=v=E(L),ue=p.value,we=L.state,Oe=L.force,C=L.replace===!0,R=G(H,ue);if(R)return de(je(N(R),{state:typeof R=="object"?je({},we,R.state):we,force:Oe,replace:C}),x||H);let I=H;I.redirectedFrom=x;let W;return!Oe&&Rd(i,ue,H)&&(W=Yn(ot.NAVIGATION_DUPLICATED,{to:I,from:ue}),rt(ue,ue,!0,!1)),(W?Promise.resolve(W):X(I,ue)).catch(z=>an(z)?an(z,ot.NAVIGATION_GUARD_REDIRECT)?z:Ke(z):Re(z,I,ue)).then(z=>{if(z){if(an(z,ot.NAVIGATION_GUARD_REDIRECT))return de(je({replace:C},N(z.to),{state:typeof z.to=="object"?je({},we,z.to.state):we,force:Oe}),x||I)}else z=Ee(I,ue,!0,C,we);return le(I,ue,z),z})}function re(L,x){let H=O(L,x);return H?Promise.reject(H):Promise.resolve()}function D(L){let x=oe.values().next().value;return x&&typeof x.runWithContext=="function"?x.runWithContext(L):L()}function X(L,x){let H,[ue,we,Oe]=qd(L,x);H=ki(ue.reverse(),"beforeRouteLeave",L,x);for(let R of ue)R.leaveGuards.forEach(I=>{H.push(vn(I,L,x))});let C=re.bind(null,L,x);return H.push(C),te(H).then(()=>{H=[];for(let R of r.list())H.push(vn(R,L,x));return H.push(C),te(H)}).then(()=>{H=ki(we,"beforeRouteUpdate",L,x);for(let R of we)R.updateGuards.forEach(I=>{H.push(vn(I,L,x))});return H.push(C),te(H)}).then(()=>{H=[];for(let R of Oe)if(R.beforeEnter)if(Lt(R.beforeEnter))for(let I of R.beforeEnter)H.push(vn(I,L,x));else H.push(vn(R.beforeEnter,L,x));return H.push(C),te(H)}).then(()=>(L.matched.forEach(R=>R.enterCallbacks={}),H=ki(Oe,"beforeRouteEnter",L,x,D),H.push(C),te(H))).then(()=>{H=[];for(let R of a.list())H.push(vn(R,L,x));return H.push(C),te(H)}).catch(R=>an(R,ot.NAVIGATION_CANCELLED)?R:Promise.reject(R))}function le(L,x,H){u.list().forEach(ue=>D(()=>ue(L,x,H)))}function Ee(L,x,H,ue,we){let Oe=O(L,x);if(Oe)return Oe;let C=x===yn,R=Xn?history.state:{};H&&(ue||C?s.replace(L.fullPath,je({scroll:C&&R&&R.scroll},we)):s.push(L.fullPath,we)),p.value=L,rt(L,x,H,C),Ke()}let ae;function he(){ae||(ae=s.listen((L,x,H)=>{if(!Z.listening)return;let ue=E(L),we=G(ue,Z.currentRoute.value);if(we){de(je(we,{replace:!0,force:!0}),ue).catch(Eo);return}v=ue;let Oe=p.value;Xn&&Pd(Mr(Oe.fullPath,H.delta),gs()),X(ue,Oe).catch(C=>an(C,ot.NAVIGATION_ABORTED|ot.NAVIGATION_CANCELLED)?C:an(C,ot.NAVIGATION_GUARD_REDIRECT)?(de(je(N(C.to),{force:!0}),ue).then(R=>{an(R,ot.NAVIGATION_ABORTED|ot.NAVIGATION_DUPLICATED)&&!H.delta&&H.type===gi.pop&&s.go(-1,!1)}).catch(Eo),Promise.reject()):(H.delta&&s.go(-H.delta,!1),Re(C,ue,Oe))).then(C=>{C=C||Ee(ue,Oe,!1),C&&(H.delta&&!an(C,ot.NAVIGATION_CANCELLED)?s.go(-H.delta,!1):H.type===gi.pop&&an(C,ot.NAVIGATION_ABORTED|ot.NAVIGATION_DUPLICATED)&&s.go(-1,!1)),le(ue,Oe,C)}).catch(Eo)}))}let Ce=So(),Pe=So(),Ne;function Re(L,x,H){Ke(L);let ue=Pe.list();return ue.length?ue.forEach(we=>we(L,x,H)):console.error(L),Promise.reject(L)}function Qe(){return Ne&&p.value!==yn?Promise.resolve():new Promise((L,x)=>{Ce.add([L,x])})}function Ke(L){return Ne||(Ne=!L,he(),Ce.list().forEach(([x,H])=>L?H(L):x()),Ce.reset()),L}function rt(L,x,H,ue){let{scrollBehavior:we}=e;if(!Xn||!we)return Promise.resolve();let Oe=!H&&_d(Mr(L.fullPath,0))||(ue||!H)&&history.state&&history.state.scroll||null;return nt().then(()=>we(L,x,Oe)).then(C=>C&&Td(C)).catch(C=>Re(C,L,x))}let Ze=L=>s.go(L),U,oe=new Set,Z={currentRoute:p,listening:!0,addRoute:k,removeRoute:T,clearRoutes:t.clearRoutes,hasRoute:b,getRoutes:w,resolve:E,options:e,push:q,replace:M,go:Ze,back:()=>Ze(-1),forward:()=>Ze(1),beforeEach:r.add,beforeResolve:a.add,afterEach:u.add,onError:Pe.add,isReady:Qe,install(L){L.component("RouterLink",am),L.component("RouterView",Lr),L.config.globalProperties.$router=Z,Object.defineProperty(L.config.globalProperties,"$route",{enumerable:!0,get:()=>pn(p)}),Xn&&!U&&p.value===yn&&(U=!0,q(s.location).catch(ue=>{}));let x={};for(let ue in yn)Object.defineProperty(x,ue,{get:()=>p.value[ue],enumerable:!0});L.provide(yi,Z),L.provide(bi,Xo(x)),L.provide(wi,p);let H=L.unmount;oe.add(L),L.unmount=function(){oe.delete(L),oe.size<1&&(v=yn,ae&&ae(),ae=null,p.value=yn,U=!1,Ne=!1),H()}}};function te(L){return L.reduce((x,H)=>x.then(()=>D(H)),Promise.resolve())}return Z}function Zd(e){return Dt(bi)}function Ei(e){return["author_pass","repo_extend","repo_never","repo_slot","repo_pack"].includes(e)}var Ci=new WeakMap;function Si(e){if(!Ci.has(e)){let t=e.get("/api/billing/").finally(()=>Ci.delete(e));Ci.set(e,t)}return Ci.get(e)}function Ni(e,t,o=()=>{},i={}){let s=new URLSearchParams(window.location.search).get("billing");e.billing=null,e.billingLoading=!0,e.billingBusy=!1,e.billingError="",e.billingNotice="",e.billingPending=s==="success",e.billingRepository="";let r={billing_invalid_draft:"This draft could not be saved. Your form is unchanged. Try again.",billing_draft_not_found:"This checkout draft is unavailable or expired. Your local form is unchanged.",billing_recovery_required:"Your earlier payment needs verification. Please contact support before paying again.",billing_checkout_disabled:"New purchases are temporarily unavailable. You can still manage existing billing.",billing_unavailable:"Payments are not available yet. Please try again later.",billing_subscription_exists:"You already have a subscription. Use Manage billing to change or cancel it.",billing_checkout_in_progress:"You have another checkout open. Complete it, or wait up to 30 minutes for it to expire, before choosing a different option.",billing_busy:"Another billing request is processing. Please try again shortly.",billing_already_paid:"This repository or conference already has this paid option.",billing_invalid_review_window:"Conference packages cover up to 180 days. Check the review dates.",billing_invalid_conference:"Only a conference owner can pay for a conference awaiting payment.",repo_not_found:"Enter the ID of an existing repository that you own."};e.billingAmount=p=>p?.amount==null?"":new Intl.NumberFormat(void 0,{style:"currency",currency:p.currency,minimumFractionDigits:p.amount%100?2:0,maximumFractionDigits:2}).format(p.amount/100),e.billingPrice=p=>p.amount==null?"Price shown at checkout":e.billingAmount(p)+(p.interval?` / ${p.intervalCount>1?p.intervalCount+" ":""}${p.interval}`:" once"),e.billingPerMonth=p=>p?.amount==null?"":new Intl.NumberFormat(void 0,{style:"currency",currency:p.currency}).format(p.amount/1200),e.billingBytes=p=>{let v=Number(p)||0;if(v<1024)return`${v} B`;let h=Math.min(4,Math.floor(Math.log2(v)/10));return`${new Intl.NumberFormat(void 0,{maximumFractionDigits:1}).format(v/1024**h)} ${["B","KiB","MiB","GiB","TiB"][h]}`},e.billingDate=p=>p?new Date(p).toLocaleDateString():"",e.loadBilling=()=>(e.billingError="",e.billingLoading=!0,Si(t).then(p=>{e.billing=p.data,e.emit?.("billing:updated",p.data)}).catch(()=>{e.billingError="Billing could not be loaded. Try again."}).finally(()=>{e.billingLoading=!1}));async function a(p,v,h=!0){if(!(e.billingBusy||!e.billing?.csrf)){e.billingBusy=!0,e.billingError="";try{let g=await t.post(`/api/billing/${p}`,v,{headers:{"x-csrf-token":e.billing.csrf}});if(h)window.location.assign(g.data.url);else return await e.loadBilling(),await o(),e.billingPending=!!g.data.pending,e.emit?.("billing:pending",e.billingPending),e.billingNotice=g.data.pending?"Your payment is still pending. Please do not pay again.":i.confirmedMessage||"Billing status refreshed. Your confirmed access appears below.",g.data}catch(g){e.billingError=r[g.data?.error]||"The billing request failed. Please try again."}finally{e.billingBusy=!1}}}e.checkout=(p,v="",h={})=>a("checkout",{planId:p,target:v,...h}),e.billingPortal=()=>a("portal",{}),e.refreshBilling=()=>a("refresh",{},!1);async function u(){for(let p=0;p<5;p++){let v=await e.refreshBilling();if(!v||!v.pending)return;await new Promise(h=>window.setTimeout(h,3e3))}e.billingNotice="Confirmation is taking longer than usual. You can refresh payment status later. Please do not pay again."}e.loadBilling().then(()=>{s==="success"?(e.billingNotice="Checking your payment. Paid access starts after confirmation.",u()):s==="portal"?e.refreshBilling().then(()=>{e.billingPending=!1,e.emit?.("billing:pending",!1),e.billingNotice=i.portalMessage?.(e.billing)||"Your billing details are up to date."}):s==="cancelled"&&(e.billingNotice="Checkout was closed. No new paid access has been activated.")})}function xd(e,t){return t?.split(".").reduce((o,i)=>o?.[i],e)}function Ur(e=null,t=new Map){let o=et({}),i=[],s=!1,r=new Proxy(o,{get(a,u){return typeof u=="string"&&u.startsWith("__v_")||Reflect.has(a,u)?Reflect.get(a,u):e?.[u]}});return Object.defineProperty(o,"parent",{value:e,configurable:!0}),Object.defineProperty(o,"viewState",{get:()=>r}),r.watch=(a,u,p=!1,v=!0)=>{let h=typeof a=="function"?()=>a(r):()=>xd(r,a),g=tt(h,u,{deep:p,flush:"post"});return i.push(g),v&&nt(()=>{s||u(h(),h())}),g},r.watchGroup=(a,u,p=!0)=>r.watch(()=>a.map(v=>xd(r,v)),u,!0,p),r.on=(a,u)=>{if(a==="dispose")return i.push(u),()=>{};t.has(a)||t.set(a,new Set),t.get(a).add(u);let p=()=>t.get(a)?.delete(u);return i.push(p),p},r.emit=(a,...u)=>{for(let p of[...t.get(a)||[]])p({},...u)},r.dispose=()=>{s=!0,i.splice(0).reverse().forEach(a=>a())},Ko(r.dispose),r}function Tt(){let e=new Set,t=new Set,o=!1,i=(r,a=0)=>{if(o)return;let u=setTimeout(()=>{e.delete(u),r()},a);return e.add(u),u};i.cancel=r=>{clearTimeout(r),e.delete(r)};let s=(r,a)=>{if(o)return;let u=setInterval(r,a);return t.add(u),u};return s.cancel=r=>{clearInterval(r),t.delete(r)},Ko(()=>{o=!0,e.forEach(clearTimeout),t.forEach(clearInterval)}),{timeout:i,interval:s}}function bn(){let e=new Set;return Ko(()=>{e.forEach(t=>t()),e.clear()}),(t,o,i,s)=>{t.addEventListener(o,i,s);let r=()=>{t.removeEventListener(o,i,s),e.delete(r)};return e.add(r),r}}function Fr(e,t,o){let i,s=!1,r="form-draft:"+o,a=()=>Object.fromEntries(t.map(m=>[m,e[m]])),u=()=>JSON.stringify(a()),p=m=>{for(let k of t)Object.prototype.hasOwnProperty.call(m,k)&&(e[k]=m[k]);e.options?.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate))},v=()=>{try{window.sessionStorage.removeItem(r)}catch{}},h=(m=!1)=>{if(i!==void 0){if(m&&document.querySelectorAll("input, select, textarea").forEach(k=>{k._field?.binding.state===e&&k._field.timer&&k._field.commit()}),e.unsavedChanges=u()!==i,e.draftSaved=!1,!e.unsavedChanges){v();return}try{window.sessionStorage.setItem(r,JSON.stringify({account:e.user?.username||null,savedAt:Date.now(),values:a()})),e.draftSaved=!0}catch{}}},g=()=>h(!0);return e.on("routeLeave",g),window.addEventListener("beforeunload",g),e.on("dispose",()=>window.removeEventListener("beforeunload",g)),{restore(){i=u();let m;try{m=JSON.parse(window.sessionStorage.getItem(r)||"null")}catch{}let k=m&&m.account===(e.user?.username||null)&&Date.now()-m.savedAt<30*6e4&&m.values;return k&&(p(m.values),e.draftRestored=!0),s||(s=!0,e.watch(()=>a(),()=>h(),!0)),e.unsavedChanges=u()!==i,!!k},checkpoint(){return document.querySelectorAll("input, select, textarea").forEach(m=>{m._field?.binding.state===e&&m._field.timer&&m._field.commit()}),JSON.parse(u())},accept(m){i=JSON.stringify(m),e.draftRestored=!1,h()},discard(){document.querySelectorAll("input, select, textarea").forEach(m=>{m._field?.binding.state!==e||!m._field.timer||(clearTimeout(m._field.timer),m._field.timer=null,m.value=m._field.binding.value??"")}),i!==void 0&&p(JSON.parse(i)),e.draftRestored=!1,h()},clear(){i=u(),e.unsavedChanges=!1,e.draftRestored=!1,e.draftSaved=!1,v()}}}var Br=(e,t,o)=>{let i=e instanceof RegExp?eu(e,o):e,s=t instanceof RegExp?eu(t,o):t,r=i!==null&&s!=null&&cm(i,s,o);return r&&{start:r[0],end:r[1],pre:o.slice(0,r[0]),body:o.slice(r[0]+i.length,r[1]),post:o.slice(r[1]+s.length)}},eu=(e,t)=>{let o=t.match(e);return o?o[0]:null},cm=(e,t,o)=>{let i,s,r,a,u,p=o.indexOf(e),v=o.indexOf(t,p+1),h=p;if(p>=0&&v>0){if(e===t)return[p,v];for(i=[],r=o.length;h>=0&&!u;){if(h===p)i.push(h),p=o.indexOf(e,h+1);else if(i.length===1){let g=i.pop();g!==void 0&&(u=[g,v])}else s=i.pop(),s!==void 0&&s=0?p:v}i.length&&a!==void 0&&(u=[r,a])}return u};var tu="\0SLASH"+Math.random()+"\0",nu="\0OPEN"+Math.random()+"\0",Gr="\0CLOSE"+Math.random()+"\0",ou="\0COMMA"+Math.random()+"\0",su="\0PERIOD"+Math.random()+"\0",pm=new RegExp(tu,"g"),fm=new RegExp(nu,"g"),hm=new RegExp(Gr,"g"),mm=new RegExp(ou,"g"),gm=new RegExp(su,"g"),vm=/\\\\/g,ym=/\\{/g,bm=/\\}/g,wm=/\\,/g,km=/\\\./g,Cm=1e5,Em=4e6,Sm=1e3,Nm=1e3;function zr(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function Rm(e){return e.replace(vm,tu).replace(ym,nu).replace(bm,Gr).replace(wm,ou).replace(km,su)}function Dm(e){return e.replace(pm,"\\").replace(fm,"{").replace(hm,"}").replace(mm,",").replace(gm,".")}function Hr(e,t){for(let o=0;o=t}function vs(e,t,o,i,s,r){let a=[],u=0;for(let p=0;p=i)return a;let h=e[p]+t+o[v];if(!(r&&!h)){if(u+h.length>s)return a;a.push(h),u+=h.length}}return a}function Im(e,t,o,i){let s=e.split(/\.\./),r=[];if(s[0]===void 0||s[1]===void 0)return r;let a=zr(s[0]),u=zr(s[1]),p=Math.max(s[0].length,s[1].length),v=s.length===3&&s[2]!==void 0?Math.max(Math.abs(zr(s[2])),1):1,h=_m;u0){let E=new Array(b+1).join("0");T<0?w="-"+E+w.slice(1):w=E+w}}if(k+w.length>i)break;r.push(w),k+=w.length}return r}function jr(e,t,o,i,s,r,a){if(s>i)return[e];let u=[""],p=0,v=!1,h=!0;for(;;){let g=Br("{","}",e);if(!g)return vs(u,e,[""],t,o,v);let m=g.pre;if(/\$$/.test(m)){if(u=vs(u,m+"{"+g.body+"}",[""],t,o,v&&!g.post.length),h=!1,!g.post.length)break;e=g.post;continue}let k=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(g.body),T=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(g.body),w=k||T,b=g.body.indexOf(",")>=0;if(!w&&!b){if(p=t||q+re.length>o)break e;E.push(re),q+=re.length}}}}if(u=vs(u,m,E,t,o,v&&!g.post.length),!g.post.length)break;e=g.post}return u}var Mm={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}"],"[:alpha:]":["\\p{L}\\p{Nl}"],"[:ascii:]":["\\x00-\\x7f"],"[:blank:]":["\\p{Zs}\\t"],"[:cntrl:]":["\\p{Cc}"],"[:digit:]":["\\p{Nd}"],"[:graph:]":["\\p{Z}\\p{C}",!0],"[:lower:]":["\\p{Ll}"],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}\\p{S}"],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f"],"[:upper:]":["\\p{Lu}"],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}"],"[:xdigit:]":["A-Fa-f0-9"]},ys=e=>e.replace(/[[\]\\-]/g,"\\$&"),Wr=/$./,ru=(e,t,o=!1,i)=>{let s=E=>{let N=i?E.normalize(i):E;return[...N].length===1?N:E},r=t;if(e.charAt(r)!=="[")throw new Error("not in a brace expression");let a=[],u=[],p=r+1,v=!1,h=!1,g=!1,m=r,k="";e:for(;pk.codePointAt(0)?a.push(ys(k)+"-"+ys(N)):N===k&&a.push(ys(N)),k="",p+=E.length;continue}if(e.startsWith("-]",p+E.length)){a.push(ys(N+"-")),p+=E.length+1;continue}if(e.startsWith("-",p+E.length)){k=N,p+=E.length+1;continue}a.push(ys(N)),p+=E.length}if(m({t:"lit",ch:e}),qm=e=>e.replace(/[\\^$.*+?()[\]{}|/]/g,"\\$&"),uu=e=>new RegExp(`^${qm(e)}$`,"iu"),Ri=new Map,cu=e=>{let t=Ri.get(e);return t||(t=uu(e),Ri.size>=1e3&&Ri.clear(),Ri.set(e,t)),t},xr=(e,t)=>{if(t===e.ch)return!0;if(!e.re)return!1;let o=t.charCodeAt(0);if(o>=128)return e.re.test(t);let i=e.ascii??(e.ascii=new Uint8Array(128));return i[o]||(i[o]=e.re.test(t)?1:2),i[o]===1},$m=(e,t,o,i)=>{let s=[];for(let r=0;r{let t=new Map,o=[];return e.forEach((i,s)=>{i.t==="open"?o.push(s):i.t==="close"&&o.length&&t.set(o.pop(),s)}),t},pu=(e,t,o,i,s)=>{let r=[],a=[r];for(let u=o;u{let o=[],i="",s=()=>{for(let r of i.normalize(t))o.push(Qn(r));i=""};for(let r of e){if(r.t==="lit"){i+=r.ch;continue}s(),o.push(r.t==="ext"?{...r,alts:r.alts.map(a=>fu(a,t))}:r)}return s(),o},Um=(e,t)=>{let o=1,i=u=>({t:"split",id:o++,out:u}),s=(u,p)=>u.reduceRight((v,h)=>r(h,v),p),r=(u,p)=>{switch(u.t){case"lit":let m=t?cu(u.ch):void 0;return{t:"lit",id:o++,ch:u.ch,re:m,next:p};case"any":case"star":return{t:u.t,id:o++,next:p};case"class":return{t:"class",id:o++,re:u.re,next:p}}let v=m=>u.alts.map(k=>s(k,m));switch(u.type){case"@":return i(v(p));case"?":return i([p,...v(p)]);case"!":return{t:"neg",id:o++,sub:i(v(Kr)),next:p}}let h=i([]),g=i(v(h));return h.out.push(p,g),u.type==="*"?h:g};return[s(e,Kr),o]},Fm=e=>{let t=[],o=new Set,i=r=>r.t==="match"?"match":String(r.id),s=(r,a)=>{if(r.t==="match"||o.has(r))return;o.add(r);let u=p=>t.push(`${a}${r.id}: ${p}`);switch(r.t){case"split":u(`split -> ${r.out.map(i).join(", ")}`);for(let p of r.out)s(p,a);return;case"neg":return u(`!(${i(r.sub)}) -> ${i(r.next)}`),s(r.sub,a+" "),s(r.next,a);case"lit":u(`${JSON.stringify(r.ch)} -> ${i(r.next)}`);break;case"class":u(`${r.re} -> ${i(r.next)}`);break;default:u(`${r.t==="any"?"?":"*"} -> ${i(r.next)}`)}s(r.next,a)};return s(e,""),[`start -> ${i(e)}`,...t].join(` -`)},Yr=class{constructor(t){We(this,"gen");We(this,"threads",[]);We(this,"match",!1);We(this,"runs",[]);We(this,"ids",[]);this.gen=t}get dead(){return!this.threads.length&&!this.match&&!this.runs.length}},hu=(e,t)=>e.ids.length!==t.ids.length||e.runs.length!==t.runs.length||e.ids.some((o,i)=>o!==t.ids[i])?!1:e.runs.every(o=>t.runs.some(i=>i.neg===o.neg&&hu(i.state,o.state))),au=e=>({has:new Float64Array(e),seen:new Float64Array(e),gen:0}),Zn,_n,Xr,Jr,ws=class{constructor(t,o,i){Ie(this,_n);We(this,"dots");We(this,"dotStart");Ie(this,Zn);this.dots=t,this.dotStart=o,qe(this,Zn,i)}state(){return new Yr(++se(this,Zn).gen)}done(t){return t.ids=t.threads.map(o=>o.id).sort((o,i)=>o-i),t.match&&t.ids.unshift(Kr.id),t}restricted(t,o){return o&&(this.dots||this.dotStart&&t===0)}add(t,o,i,s){switch(o.t){case"split":if(!Me(this,_n,Xr).call(this,t,o))return;for(let a of o.out)this.add(t,a,i,s);return;case"neg":if(!Me(this,_n,Xr).call(this,t,o))return;let r=this.state();return this.add(r,o.sub,i,!1),this.done(r),this.addRun(t,{t:"run",neg:o,state:r},i,s);case"star":if(this.restricted(i,s))return;Me(this,_n,Jr).call(this,t,o)&&this.add(t,o.next,i,s);return;case"match":t.match=!0;return;default:Me(this,_n,Jr).call(this,t,o)}}addRun(t,o,i,s){for(let r of t.runs)if(r.neg===o.neg&&hu(r.state,o.state))return;t.runs.push(o),o.state.match||this.add(t,o.neg.next,i,s)}step(t,o,i,s){let r=this.state();for(let a of t.threads)switch(a.t){case"lit":xr(a,o)&&this.add(r,a.next,i+1,s);break;case"any":this.restricted(i,s)||this.add(r,a.next,i+1,s);break;case"class":!this.restricted(i,s)&&a.re.test(o)&&this.add(r,a.next,i+1,s);break;case"star":this.restricted(i,s)||this.add(r,a,i+1,s)}if(!this.restricted(i,s))for(let a of t.runs){if(a.state.dead){this.addRun(r,a,i+1,s);continue}let u=this.step(a.state,o,i,!1);this.addRun(r,{t:"run",neg:a.neg,state:u},i+1,s)}return this.done(r)}};Zn=new WeakMap,_n=new WeakSet,Xr=function(t,o){let{seen:i}=se(this,Zn);return i[o.id]===t.gen?!1:(i[o.id]=t.gen,!0)},Jr=function(t,o){let{has:i}=se(this,Zn);return i[o.id]===t.gen?!1:(i[o.id]=t.gen,t.threads.push(o),!0)};var mu=e=>{let t=e.ids.join();if(!e.runs.length)return t;let o=e.runs.map(i=>`${i.neg.id}(${mu(i.state)})`);return`${t}|${o.sort().join("|")}`},Bm=1<<18,No,Ro,Rn,xn,Dn,An,Tn,Kt,Zr,Ai,gu,Qr=class{constructor(t,o){Ie(this,Kt);Ie(this,No);Ie(this,Ro,new Map);Ie(this,Rn,0);Ie(this,xn);Ie(this,Dn);Ie(this,An);Ie(this,Tn);qe(this,No,t),qe(this,An,new ws(!1,!1,o)),qe(this,Tn,new ws(!1,!0,o))}start(t){if(t){if(se(this,Dn))return se(this,Dn);let i=se(this,Tn).state();return se(this,Tn).add(i,se(this,No),0,!0),qe(this,Dn,Me(this,Kt,Zr).call(this,se(this,Tn).done(i)))}if(se(this,xn))return se(this,xn);let o=se(this,An).state();return se(this,An).add(o,se(this,No),0,!0),qe(this,xn,Me(this,Kt,Ai).call(this,se(this,An).done(o)))}next(t,o){let i=o.charCodeAt(0),s=i<128?void 0:t.next.get(o);if(s)return s;let r=t===se(this,Dn)?Me(this,Kt,Ai).call(this,se(this,Tn).step(t.state,o,0,!0)):Me(this,Kt,Ai).call(this,se(this,An).step(t.state,o,1,!0));return i<128?(t.ascii||(t.ascii=new Array(128),qe(this,Rn,se(this,Rn)+128)),t.ascii[i]=r):t.next.set(o,r),wa(this,Rn)._++,r}};No=new WeakMap,Ro=new WeakMap,Rn=new WeakMap,xn=new WeakMap,Dn=new WeakMap,An=new WeakMap,Tn=new WeakMap,Kt=new WeakSet,Zr=function(t){return{state:t,match:t.match,dead:t.dead,next:new Map}},Ai=function(t){let o=mu(t),i=se(this,Ro).get(o);if(i)return i;se(this,Rn)>Bm&&Me(this,Kt,gu).call(this);let s=Me(this,Kt,Zr).call(this,t);return se(this,Ro).set(o,s),qe(this,Rn,se(this,Rn)+(o.length+1)),s},gu=function(){se(this,Ro).clear(),qe(this,Rn,0),qe(this,xn,void 0),qe(this,Dn,void 0)};var zm=e=>{let t=[];for(let o=e;o.t!=="match";o=o.next){if(o.t==="split"||o.t==="neg")return;t.push(o)}return t},Hm=(e,t,o,i)=>{let s=0,r=o,a=-1,u=0;for(;r{let t=0,o=0;for(let i of e){let[s,r]=jm(i);t+=s,o+=r}return[t,o]},jm=e=>{if(e.t==="star")return[0,1/0];if(e.t!=="ext")return[1,1];if(e.type==="!")return[0,1/0];let t=e.alts.map(vu),o=Math.min(...t.map(r=>r[0])),i=Math.max(...t.map(r=>r[1])),s=i===0?0:1/0;return e.type==="@"?[o,i]:e.type==="?"?[0,i]:e.type==="*"?[0,s]:[o,s]},lu=(e,t,o)=>{for(let i=0;iWm.test(e)?[...e]:e,du=e=>{if(e.includes("/"))throw new Error("can only match a single path portion, got: "+e)},Pn,Do,eo,Ti,to,Cs,Pi,no,Es,Ss,Ns,wn,ln,Ao,To,Rs,_i,Wt,oo,bs,ks=class{constructor(t,o={}){Ie(this,oo);We(this,"pattern");We(this,"options");Ie(this,Pn);Ie(this,Do);Ie(this,eo);Ie(this,Ti);Ie(this,to);Ie(this,Cs,!1);Ie(this,Pi);Ie(this,no);Ie(this,Es,!1);Ie(this,Ss,0);Ie(this,Ns,1/0);Ie(this,wn,[]);Ie(this,ln,[]);Ie(this,Ao);Ie(this,To);Ie(this,Rs,!1);Ie(this,_i);Ie(this,Wt);if(t.includes("/"))throw new Error("can only match a single path portion, got pattern: "+t);this.pattern=t,this.options=o;let{nocase:i=!1,noext:s=!1,normalize:r}=o;qe(this,Wt,r===!0?"NFC":r||void 0);let a=/^[?*+@]\(\)$/.test(t),u=$m(t,i,s||a,se(this,Wt)),[p]=pu(u,Lm(u),0,u.length,!0);se(this,Wt)&&(p=fu(p,se(this,Wt)));let[v,h]=Um(p,i);if(qe(this,Pn,v),qe(this,Do,h),p.every(g=>g.t==="lit"))qe(this,to,p.map(g=>g.ch).join("")),qe(this,Cs,i);else{let g=T=>T.t!=="lit"?void 0:i?{ch:T.ch,re:cu(T.ch)}:{ch:T.ch};for(let T of p){let w=g(T);if(!w)break;se(this,wn).push(w)}for(let T=p.length-1;T>=0;T--){let w=g(p[T]);if(!w)break;se(this,ln).unshift(w)}qe(this,Rs,!!(se(this,wn).length||se(this,ln).length)),i||(qe(this,Ao,se(this,wn).map(T=>T.ch).join("")),qe(this,To,se(this,ln).map(T=>T.ch).join(""))),qe(this,no,zm(se(this,Pn))?.slice(se(this,wn).length,-se(this,ln).length||void 0)),qe(this,Es,!!se(this,no)?.every(T=>T.t==="star"||T.t==="any"));let[m,k]=vu(p);qe(this,Ss,m),qe(this,Ns,k)}}test(t){return se(this,Wt)?(du(t),Me(this,oo,bs).call(this,t.normalize(se(this,Wt)))):Gm.test(t)?(du(t),Me(this,oo,bs).call(this,t,[...t])):Me(this,oo,bs).call(this,t,t)}testUnchecked(t){return Me(this,oo,bs).call(this,se(this,Wt)?t.normalize(se(this,Wt)):t)}toString(){return Fm(se(this,Pn))}};Pn=new WeakMap,Do=new WeakMap,eo=new WeakMap,Ti=new WeakMap,to=new WeakMap,Cs=new WeakMap,Pi=new WeakMap,no=new WeakMap,Es=new WeakMap,Ss=new WeakMap,Ns=new WeakMap,wn=new WeakMap,ln=new WeakMap,Ao=new WeakMap,To=new WeakMap,Rs=new WeakMap,_i=new WeakMap,Wt=new WeakMap,oo=new WeakSet,bs=function(t,o){if(se(this,to)!==void 0)return se(this,Cs)?(se(this,Pi)??qe(this,Pi,uu(se(this,to)))).test(t):t===se(this,to);let i=se(this,Ss),s=se(this,Ns);if(o===void 0){let h=t.length,g=h+1>>1;if(hs)return!1;(gs)&&(o=Di(t))}if(o!==void 0&&(o.lengths))return!1;let r=se(this,wn).length;if(se(this,Rs))if(se(this,Ao)!==void 0&&se(this,To)!==void 0){if(!t.startsWith(se(this,Ao))||!t.endsWith(se(this,To)))return!1}else{o??(o=Di(t));let h=o.length-se(this,ln).length;if(!lu(se(this,wn),o,0)||!lu(se(this,ln),o,h))return!1}let a=!this.options.dot&&t.startsWith(".");if(se(this,no)){if(t==="."||t===".."||a&&!r)return!1;if(se(this,Es))return!0;o??(o=Di(t));let h=o.length-se(this,ln).length;return Hm(se(this,no),o,r,h)}if(o??(o=Di(t)),t==="."||t===".."){se(this,eo)??qe(this,eo,au(se(this,Do)));let h=se(this,Ti)??qe(this,Ti,new ws(!0,!1,se(this,eo))),g=h.state();h.add(g,se(this,Pn),0,!0);let m=h.done(g);for(let k=0;k{if(typeof e!="string")throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")};var On=(e,{windowsPathsNoEscape:t=!1,magicalBraces:o=!1}={})=>o?t?e.replace(/[?*()[\]{}]/g,"[$&]"):e.replace(/[?*()[\]\\{}]/g,"\\$&"):t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&");var so=(e,{windowsPathsNoEscape:t=!1,magicalBraces:o=!0}={})=>o?t?e.replace(/\[([^/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\])\]/g,"$1$2").replace(/\\([^/])/g,"$1"):t?e.replace(/\[([^/\\{}])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\{}])\]/g,"$1$2").replace(/\\([^/{}])/g,"$1");var Mt=(e,t,o={})=>(Ds(t),!o.nocomment&&t.charAt(0)==="#"?!1:Ym(t,o).match(e)),Po=new Map,Km=256,Ym=(e,t)=>{let o=e+"\0"+JSON.stringify(t),i=Po.get(o);return i?Po.delete(o):(i=new io(e,{...t}),Po.size>=Km&&Po.delete(Po.keys().next().value)),Po.set(o,i),i},Eu=typeof process=="object"&&process?process.env?.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",yu={win32:{sep:"\\"},posix:{sep:"/"}},Xm=Eu==="win32"?yu.win32.sep:yu.posix.sep;Mt.sep=Xm;var ft=Symbol("globstar **");Mt.GLOBSTAR=ft;var Jm=(e,t={})=>o=>Mt(o,e,t);Mt.filter=Jm;var kn=(e,t={})=>Object.assign({},e,t),Qm=e=>{if(!e||typeof e!="object"||!Object.keys(e).length)return Mt;let t=Mt;return Object.assign((i,s,r={})=>t(i,s,kn(e,r)),{Minimatch:class extends t.Minimatch{constructor(s,r={}){super(s,kn(e,r))}static defaults(s){return t.defaults(kn(e,s)).Minimatch}},unescape:(i,s={})=>t.unescape(i,kn(e,s)),escape:(i,s={})=>t.escape(i,kn(e,s)),filter:(i,s={})=>t.filter(i,kn(e,s)),defaults:i=>t.defaults(kn(e,i)),braceExpand:(i,s={})=>t.braceExpand(i,kn(e,s)),match:(i,s,r={})=>t.match(i,s,kn(e,r)),sep:t.sep,GLOBSTAR:ft})};Mt.defaults=Qm;var Su=(e,t={})=>(Ds(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:iu(e,{max:t.braceExpandMax}));Mt.braceExpand=Su;var Zm=(e,t,o={})=>{let i=new io(t,o);return e=e.filter(s=>i.match(s)),i.options.nonull&&!e.length&&e.push(t),e};Mt.match=Zm;var bu=/[?*]|[+@!]\(.*?\)|\[|\]/,Nu=(e,t)=>{let o=t+1;(e.charAt(o)==="!"||e.charAt(o)==="^")&&o++;let i=!1;for(;o{if(!t&&(e==="+()"||e==="@()"))return e;let o="";for(let i=0;i{if(/^[?*+@]\(\)$/.test(e)||e.includes("[:"))return!1;let t=0;for(let o=0;otypeof e=="string"?t===e:t!==""&&e.testUnchecked(t),ku=(e,t,o,i,s)=>In(e,t)?o:i!==void 0&&In(e,i)?s:-1,sa=e=>e==="."||e==="..",ta=e=>typeof e=="string"&&/^[a-z]:$/i.test(e),Ii=e=>typeof e=="string"&&/^unc$/i.test(e),na=e=>{if(e[0]!==""||e[1]!=="")return-1;let t=e[2]!=="?"?2:Ii(e[3])?4:-1,o=e[t],i=e[t+1];return t!==-1&&o!==void 0&&o!==""&&o!==ft&&i!==void 0&&i!==""&&i!==ft?t:-1},Oi=(e,t)=>!sa(e)&&(t||!e.startsWith(".")),As=(e,t,o,i,s)=>{for(let r=t;r=o||Vi(e.charCodeAt(u),s))return!0}let a=ia(e,r,s);if(a===-1)return!1;for(r=a+1;rt==="/"?e===47:t==="\\"?e===92:e===47||e===92,ia=(e,t,o)=>{if(o!=="both")return e.indexOf(o,t);let i=e.indexOf("/",t),s=e.indexOf("\\",t);return i===-1?s:s===-1?i:Math.min(i,s)},Cu=(e,t,o)=>o!=="both"?e.lastIndexOf(o,t):Math.max(e.lastIndexOf("/",t),e.lastIndexOf("\\",t)),oa={},Mn,Oo,Vn,Cn,Io,Mo,qn,Ps,Vo,_s,Ve,Mi,Ts,Ru,Du,Au,Tu,Pu,_u,ra,Ou,Iu,aa,_o,la,io=class{constructor(t,o={}){Ie(this,Ve);We(this,"options");We(this,"set");We(this,"pattern");We(this,"windowsPathsNoEscape");We(this,"nonegate");We(this,"negate");We(this,"comment");We(this,"empty");We(this,"preserveMultipleSlashes");We(this,"partial");We(this,"globSet");We(this,"globParts");We(this,"nocase");We(this,"isWindows");We(this,"platform");We(this,"windowsNoMagicRoot");We(this,"maxGlobstarRecursion");Ie(this,Mn);Ie(this,Oo);Ie(this,Vn);Ie(this,Cn);Ie(this,Io,[]);Ie(this,Mo,[]);Ie(this,qn,[]);Ie(this,Ps,new Map);Ie(this,Vo,!1);Ie(this,_s,new WeakMap);Ds(t),o=o||{},this.options=o,this.maxGlobstarRecursion=o.maxGlobstarRecursion??200,this.pattern=t,this.platform=o.platform||Eu,this.isWindows=this.platform==="win32";let i="allowWindowsEscape";this.windowsPathsNoEscape=!!o.windowsPathsNoEscape||o[i]===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!o.preserveMultipleSlashes,this.negate=!1,this.nonegate=!!o.nonegate,this.comment=!1,this.empty=!1,this.partial=!!o.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=o.windowsNoMagicRoot!==void 0?o.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],qe(this,Mn,!this.preserveMultipleSlashes),qe(this,Vn,(o.optimizationLevel??1)>=2);let s=o.normalize;qe(this,Cn,s===!0?"NFC":s||void 0),this.make();let r=this.set.map(a=>Me(this,Ve,Ts).call(this,a));qe(this,qn,this.set.map((a,u)=>se(this,Mn)&&a.length-1>r[u])),qe(this,Io,this.set.map((a,u)=>{let p=se(this,qn)[u]?a.length-1:a.length,v=a.slice(r[u]+1,p).filter(h=>typeof h=="string"&&!!h);return[...new Set(v)]})),qe(this,Oo,se(this,Io).some(a=>a.length)),qe(this,Mo,this.set.map((a,u)=>{let[p,v,h]=a;if(se(this,qn)[u]&&a.length===2&&p===ft&&v!==ft)return"tail";if(se(this,qn)[u]&&o.matchBase&&a.length===1&&p!==ft&&p!=="")return"base";if(!(!se(this,Mn)||r[u]!==-1)){if(a.length===3&&p===ft&&h===ft&&v!==ft&&v!==""&&this.maxGlobstarRecursion>0)return"mid";if(a.length===2&&v===ft&&p!==ft&&p!=="")return"head"}}))}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let o of t)if(typeof o!="string")return!0;return!1}make(){let t=this.pattern,o=this.options;if(!o.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())];let i=this.globSet.map(r=>Me(this,Ve,la).call(this,r));this.globParts=this.preprocess(i),qe(this,Vo,!0);let s=this.globParts.map((r,a,u)=>{if(this.isWindows&&this.windowsNoMagicRoot){let p=r[2]==="?"&&Ii(r[3])?6:4,v=r[0]===""&&r[1]===""&&(r[2]==="?"||!bu.test(r[2]))&&r.slice(3,p).every(g=>!bu.test(g)),h=/^[a-z]:/i.test(r[0]);if(v)return[...r.slice(0,p).map(g=>Me(this,Ve,Mi).call(this,g)),...r.slice(p).map(g=>this.parse(g))];if(h)return[Me(this,Ve,Mi).call(this,r[0]),...r.slice(1).map(g=>this.parse(g))]}return r.map(p=>this.parse(p))});if(this.set=s.filter(r=>r.indexOf(!1)===-1),this.isWindows)for(let r=0;r{for(let u=0;ui.length));for(let i=0;i{if(!(a[i]instanceof ks||a[i]===oa)||!eg(this.globParts[u][i]))return;let p=[...this.globParts[u]];p[i]="";let v=`${a.length}/${p.join("/")}`,h=s.get(v);h?h.push(u):s.set(v,[u])});let r=new Set;for(let a of s.values()){if(a.length<2)continue;let[u,...p]=a,h=`@(${a.map(g=>this.globParts[g][i]).join("|")})`;this.globParts[u][i]=h,this.set[u][i]=this.parse(h);for(let g of p)r.add(g)}r.size&&(t=!0,this.set=this.set.filter((a,u)=>!r.has(u)),this.globParts=this.globParts.filter((a,u)=>!r.has(u)))}}}preprocess(t){if(this.options.noglobstar)for(let i of t)for(let s=0;s=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):o>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(o=>{let i=-1;for(;(i=o.indexOf("**",i+1))!==-1;){let s=i;for(;o[s+1]==="**";)s++;s!==i&&o.splice(i,s-i)}return o})}levelOneOptimize(t){return t.map(o=>{let i=Me(this,Ve,Ts).call(this,o)+1;return o=o.reduce((s,r)=>{let a=s[s.length-1];return r==="**"&&a==="**"?s:r===".."&&s.length>i&&a&&a!==".."&&a!=="."&&a!=="**"?(s.pop(),s):(s.push(r),s)},[]),o.length===0?[""]:o})}firstPhasePreProcess(t){let{braceExpandMax:o=1e5}=this.options,i=!1;do{i=!1;for(let s of t){let r=-1;for(;(r=s.indexOf("**",r+1))!==-1;){let p=r;for(;s[p+1]==="**";)p++;p>r&&s.splice(r+1,p-r);let v=s[r+1],h=s[r+2],g=s[r+3];if(v!==".."||!h||h==="."||h===".."||!g||g==="."||g===".."||t.length>=o)continue;i=!0,s.splice(r,1);let m=s.slice(0);m[r]="**",t.push(m),r--}if(!this.preserveMultipleSlashes){for(let p=1;p1e3)return t;for(let o=0;oo.length)}partsMatch(t,o,i=!1){let s=0,r=0,a=[],u="";for(;s=0;v--)p=r[v];for(let v=0;v=0){let E=w;for(;E>0&&Vi(t.charCodeAt(E-1),o);)E--;u=E===0?0:Cu(t,E-1,o)+1,a=t.slice(u,E)}let b=se(this,Vn)&&(sa(s)||s===""&&a!==void 0&&sa(a));i=b?-1:1,m=!b}let k=-1;if(m&&typeof g=="string"&&(k=ku(g,s,r,a,u),k===-1))continue;if(se(this,Oo)){for(let w of se(this,Io)[v])if(!t.includes(w))continue e}if(m&&typeof g=="object"&&(k=ku(g,s,r,a,u),k===-1))continue;let T=se(this,Mo)[v];if(T==="base"&&m)return"yes";if(T==="tail"&&m){if(se(this,Vn)&&As(t,0,k,!0,o))return"maybe";if(!As(t,0,k,p,o))return"yes";continue}if(T==="mid"||T==="head"){let w=Me(this,Ve,Au).call(this,t,h,T==="head",p,o);if(w!=="no")return w;continue}return"maybe"}return"no"},Du=function(t,o,i){let s=!!this.options.dot,r=t.length;if(i==="head"){if(r<2||!In(o[0],t[0]))return!1;for(let u=1;uu&&a.testUnchecked(t.slice(u,p)))&&!As(t,v,t.length,s,r))return"yes";if(i||As(t,u,v,s,r))return"no";u=v}return"no"},Tu=function(t){let o=ea;return o?.f===t&&o.isWindows===this.isWindows&&o.preserveMultipleSlashes===this.preserveMultipleSlashes&&o.normalize===se(this,Cn)?o:void 0},Pu=function(t){let{isWindows:o,preserveMultipleSlashes:i}=this,s=Me(this,Ve,la).call(this,o?t.split("\\").join("/"):t),r=se(this,Cn);return r&&(s=s.map(a=>a.normalize(r))),ea={f:t,isWindows:o,preserveMultipleSlashes:i,normalize:r,parts:s},ea},_u=function(t){let o=[...t],i=!1;do{if(i=!1,!this.preserveMultipleSlashes){for(let a=1;at.length)return!1;let g=t.length-p.length;if(Me(this,Ve,_o).call(this,t,p,i,g,0))h=p.length;else{if(t[t.length-1]!==""||s+p.length===t.length||(g--,!Me(this,Ve,_o).call(this,t,p,i,g,0)))return!1;h=p.length+1}}if(!u.length){let g=!!h;for(let m=s;m{E[1]=T-w[N]});let b={head:v,body:h,tail:g,segments:m};return s[r]=b,b},aa=function(t,o,i,s,r,a,u,p,v){let h=o[r];if(!h){if(a)return s>=i||s===i-1&&t[s]==="";for(let T=s;Te.lastIndexOf(t)===o)}function ua(e){let t=(e||[]).filter(o=>typeof o=="string"&&o.length>0).map(o=>{let{negated:i,anchored:s,directoryOnly:r,body:a}=tg(o);return{negated:i,directoryOnly:r,matcher:new io(a,{dot:!0,nonegate:!0,nocomment:!0,matchBase:!s&&!a.includes("/")})}});return(o,i=!1)=>{let s=(o||"").replace(/^\/+/,"");if(!s)return!1;let r=s.split("/"),a=r.slice(0,-1).map((p,v)=>r.slice(0,v+1).join("/")),u=i;for(let p of t){if(p.negated?!u:u)continue;(p.directoryOnly?a:[...a,s]).some(h=>p.matcher.match(h))&&(u=!p.negated)}return u}}var NW=new Set("^$\\.*+?()[]{}|/dDsSwWbBnrtvf0cxupP".split(""));function ca(e){let t=e.indexOf("=>");if(t<0)return{term:e,replacement:null};let o=e.slice(0,t).replace(/\s+$/,""),i=e.slice(t+2).replace(/^\s+/,"");return o?{term:o,replacement:i}:{term:e,replacement:null}}var Mu=new Set(["*","+","?","(",")","[","]","{","}","|","^","$"]);function Vu(e){let t=[];return String(e||"").split(` -`).forEach((o,i)=>{let{term:s}=ca(o.trim());if(!s)return;let r=[];for(let a=0;a{let t=e.target;if(!t||t.tagName!=="IMG"||t.dataset.failed||!t.closest?.(".markdown-body, .anonymize-preview-body"))return;t.dataset.failed="1";let o=window.document.createElement("span");o.className="img-unavailable",o.textContent=t.alt?"Image unavailable: "+t.alt:"Image unavailable",t.replaceWith(o)},!0);function pa(e){let t=e?.data;if(typeof t=="string")try{t=JSON.parse(t)}catch{t=null}return typeof t?.error=="string"&&Object.prototype.hasOwnProperty.call(ro.ERRORS,t.error)?t.error:e?.status===-1||e?.status===0?"request_error":[502,503,504].includes(e?.status)?"unreachable":"unknown_error"}var qi="XXXX",og=e=>{qi=e||"XXXX"},sg=(e=qi)=>{if(!e)return null;let t=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(t+"(?:-\\d+)?","g")},$u=(e,t=qi)=>{let o=sg(t);if(!o||!e||!e.textContent.includes(t))return;let i=e.ownerDocument,s=i.createTreeWalker(e,NodeFilter.SHOW_TEXT),r=[];for(;s.nextNode();)r.push(s.currentNode);for(let a of r){let u=a.nodeValue,p=a.parentElement;if(!u.includes(t)||!p||p.closest("script, style, mark.redaction, .mermaid"))continue;let v=p.closest('code[class*="language-"]');if(v&&!v.contains(e))continue;let h=i.createDocumentFragment(),g=0;for(let m of u.matchAll(o)){h.append(u.slice(g,m.index));let k=i.createElement("mark");k.className="redaction",k.title="Redacted by Anonymous GitHub",k.textContent=m[0],h.append(k),g=m.index+m[0].length}h.append(u.slice(g)),a.replaceWith(h)}},Os=/\bXXXX-\d+\b/g,Lu=function(e){if(!e||e.indexOf("XXXX-")===-1||typeof window.DOMParser!="function")return e;let t=new window.DOMParser().parseFromString("
"+e+"
","text/html"),o=t.createTreeWalker(t.body,4),i=[];for(;o.nextNode();)Os.lastIndex=0,!o.currentNode.parentElement?.closest("pre code")&&Os.test(o.currentNode.nodeValue)&&i.push(o.currentNode);for(let s of i){Os.lastIndex=0;let r=t.createDocumentFragment(),a=0,u,p=s.nodeValue;for(;u=Os.exec(p);){r.appendChild(t.createTextNode(p.slice(a,u.index)));let v=t.createElement("mark");v.className="redact-chip",v.setAttribute("title","Redacted term "+u[0].slice(5)+" \u2014 the same term everywhere in this snapshot");let h=u[0].slice(5);v.textContent="";let g=t.createElement("i");g.textContent=h,v.appendChild(g),v.dataset.term=u[0],v.setAttribute("aria-label","Redacted term "+h);let m=/^[.,;:!?)\]]+/.exec(p.slice(u.index+u[0].length));if(m){let k=t.createElement("span");k.className="redact-glue",k.appendChild(v),k.appendChild(t.createTextNode(m[0])),r.appendChild(k),a=u.index+u[0].length+m[0].length}else r.appendChild(v),a=u.index+u[0].length}r.appendChild(t.createTextNode(p.slice(a))),s.parentNode.replaceChild(r,s)}return t.body.firstChild.innerHTML},Uu=()=>{window.Prism?.hooks&&!window.Prism.redactionHook&&(window.Prism.hooks.add("complete",e=>{$u(e.element),e.element.querySelectorAll?.("mark.redaction").forEach(t=>{let o=/^XXXX-(\d+)$/.exec(t.textContent);if(!o)return;t.className="redact-chip",t.setAttribute("title","Redacted term "+o[1]+" \u2014 the same term everywhere in this snapshot"),t.setAttribute("aria-label","Redacted term "+o[1]),t.dataset.term=o[0],t.style.setProperty("--slot-ch",o[0].length+"ch"),t.textContent="";let i=t.ownerDocument.createElement("i");i.textContent=o[1],t.appendChild(i)})}),window.Prism.redactionHook=!0)},Fu=(e,t=qi)=>{if(!e||!t||!e.includes(t))return e;let o=new DOMParser().parseFromString(""+e+"","text/html");return $u(o.body,t),o.body.innerHTML};async function Bu(e){if(window.navigator.clipboard?.writeText){await window.navigator.clipboard.writeText(e);return}let t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.opacity="0";let o=document.activeElement;document.body.appendChild(t);try{if(t.select(),!document.execCommand?.("copy"))throw Error("Copy unavailable")}finally{t.remove(),o?.focus()}}function ig(e){if(!["ArrowLeft","ArrowRight","Home","End"].includes(e.key))return;let t=[...e.currentTarget.closest('[role="tablist"]').querySelectorAll('[role="tab"]')],o=t.indexOf(e.currentTarget),i=e.key==="Home"?0:e.key==="End"?t.length-1:(o+(e.key==="ArrowRight"?1:-1)+t.length)%t.length;e.preventDefault(),t[i]?.focus(),t[i]?.click()}var zu=function(e,t,o,i){e.previewTabKeydown=ig,e.headerCanUpgrade=!1,e.headerShowSupport=!1,e.headerBillingPending=new URLSearchParams(window.location.search).get("billing")==="success";let s=g=>{e.headerShowSupport=!(g?.grants||[]).some(k=>["active","paid","past_due"].includes(k.status)&&new Date(k.until).getTime()>Date.now());let m=(g?.grants||[]).some(k=>["author_monthly","author_annual"].includes(k.planId)&&["active","paid","past_due"].includes(k.status)&&new Date(k.until).getTime()>Date.now());e.headerCanUpgrade=!!g?.enabled&&g.checkoutEnabled!==!1&&!m&&(g.plans||[]).some(k=>["author_monthly","author_annual"].includes(k.id))};e.on("billing:updated",(g,m)=>s(m)),e.on("billing:pending",(g,m)=>{e.headerBillingPending=m}),e.openHeaderUpgrade=()=>{o.path()==="/profile"?e.emit("settings:upgrade"):o.url("/profile?upgrade=1")},e.title="Main",e.user={status:"connection"},e.site_options,e.toasts=[],e.removeToast=function(g){let m=e.toasts.indexOf(g);m!==-1&&e.toasts.splice(m,1)},e.addToast=function(g){return e.toasts.push(g),i(function(){e.removeToast(g)},8e3),g};let r=/^\/(r|repository|pr|gist)\//;e.path=o.url(),e.paths=o.path().substring(1).split("/"),e.isReviewerRoute=r.test(o.path()),e.darkMode=function(g){localStorage.setItem("darkMode",g),e.isDarkMode=g;let m="/css/prism-okaidia.css",k="/css/prism.css";if(g){$("body").addClass("dark-mode");let T=document.createElement("link");T.href=m,T.rel="stylesheet",document.head.append(T),$(`link[href='${k}']`).remove()}else{$("body").removeClass("dark-mode");let T=document.createElement("link");T.href=k,T.rel="stylesheet",document.head.append(T),$(`link[href='${m}']`).remove()}e.emit("dark-mode",g)},e.darkMode(localStorage.getItem("darkMode")=="true"),e.emailPromptOpen=!1,e.emailPromptAddress="",e.emailPromptBusy=!1,e.emailPromptError="";let a;e.respondToEmailPrompt=async g=>{if(!e.emailPromptBusy){e.emailPromptBusy=!0,e.emailPromptError="";try{let m=await t.post("/github/connections/email",{action:g,email:e.emailPromptAddress},{headers:{"X-CSRF-Token":e.user.emailPromptCSRF}});g==="save"&&(e.user.notificationEmail=m.data.notificationEmail),e.emailPromptOpen=!1,e.user.showEmailPrompt=!1,a?.focus()}catch(m){e.emailPromptError=m.data?.error||"Unable to save your preference. Please try again."}finally{e.emailPromptBusy=!1}}};function u(){t.get("/api/user").then(g=>{g&&(e.user=g.data),e.user?.username?Si(t).then(m=>s(m.data)).catch(()=>{}):e.headerShowSupport=!0,e.user?.emailNotificationsEnabled&&e.user.showEmailPrompt&&!e.user.notificationEmail&&(a=document.activeElement,e.emailPromptOpen=!0,i(()=>{let m=document.getElementById("email-prompt");m?.showModal?m.showModal():m?.setAttribute("open",""),document.getElementById("email-prompt-address")?.focus()},0))},()=>{e.user=null,e.headerShowSupport=!0})}u();function p(){t.get("/api/options").then(g=>{g&&(e.site_options=g.data),og(g?.data?.ANONYMIZATION_MASK),e.emit("site-options")},()=>{e.site_options=null})}p();function v(){t.get("/api/message").then(g=>{g&&(e.generalMessage=g.data)},()=>{e.generalMessage=null})}v();function h(g,m){m&&(e.title=m.title),e.path=o.url(),e.paths=o.path().substring(1).split("/"),e.isReviewerRoute=r.test(o.path())}e.on("routeChange",h),e.on("routeUpdate",h)},Hu=function(e,t){let o=bn(),i=Tt(),s=()=>{let r=window.location.hash.slice(1),a=document.getElementById(r);if(!a?.classList.contains("panel-collapse"))return;$(a).collapse("show");let u=document.getElementById(a.getAttribute("aria-labelledby"));u?.setAttribute("tabindex","-1"),u?.focus({preventScroll:!0}),u?.scrollIntoView?.({block:"start"})};e.on("routeUpdate",()=>i.timeout(s,0)),o(window,"hashchange",s),i.timeout(s,0)},ju=function(e,t,o,i,s){e.settingsTab=/(?:billing|upgrade)=/.test(window.location.search)?"billing":"defaults",e.confirmDeleteAccount=!1,e.deleteUsername="",e.profilePastSubscription=()=>!e.profileAuthorGrant()&&(e.billing?.grants||[]).some(h=>["author_monthly","author_annual"].includes(h.planId)),e.showAuthorPlans=new URLSearchParams(window.location.search).get("upgrade")==="1",e.showRepositoryPass=!1,e.profilePlan="author_annual",e.openProfileUpgrade=()=>{e.settingsTab="billing",e.showAuthorPlans=!0,nt(()=>document.getElementById("settings-plan-comparison")?.focus())},e.on("settings:upgrade",()=>e.openProfileUpgrade()),e.profileAuthorPlans=()=>(e.billing?.plans||[]).filter(h=>["author_monthly","author_annual"].includes(h.id)),e.profileSelectedPlan=()=>e.profileAuthorPlans().find(h=>h.id===e.profilePlan)||e.profileAuthorPlans()[0],e.profilePassPlan=()=>(e.billing?.plans||[]).find(h=>h.id==="author_pass"),e.profileAddonPlans=()=>(e.billing?.plans||[]).filter(h=>Ei(h.id)).sort((h,g)=>+(g.id==="repo_pack")-+(h.id==="repo_pack")),e.profileAddonId="repo_pack",e.profilePackPlan=()=>(e.billing?.plans||[]).find(h=>h.id==="repo_pack"),e.profileSlotPlan=()=>(e.billing?.plans||[]).find(h=>h.id==="repo_slot"),e.profileRepositories=()=>(e.billing?.repositories||[]).filter(h=>h.status!=="removed"),e.openProfileAddon=h=>{h&&(e.profileAddonId=h),e.showRepositoryPass=!0,e.billingRepository="",nt(()=>{let g=document.getElementById("settings-addons-title");g?.scrollIntoView?.({block:"nearest",behavior:"smooth"}),g?.focus?.({preventScroll:!0})})};let r=["repo_slot","author_pass","repo_extend","repo_never"];e.profileSingleAddons=()=>e.profileAddonPlans().filter(h=>h.id!=="repo_pack").sort((h,g)=>r.indexOf(h.id)-r.indexOf(g.id)),e.profileSingleId="repo_slot",e.profileSingleAddon=()=>e.profileSingleAddons().find(h=>h.id===e.profileSingleId)||e.profileSingleAddons()[0],e.profileCheapestAddon=()=>[...e.profileSingleAddons()].sort((h,g)=>(h.amount??1/0)-(g.amount??1/0))[0],e.profileAuthorPlansByValue=()=>[...e.profileAuthorPlans()].sort((h,g)=>+(h.interval==="year")-+(g.interval==="year")),e.profilePackSummary=h=>h.parts.map(g=>g.planId==="repo_slot"?"Extra repository":`${e.profileGrantName(g)} until ${e.billingDate(g.until)}`).join(" \xB7 "),e.profileAddonFeatures=h=>({repo_pack:["One more repository, outside your free ones",`Its own ${e.billingBytes(e.profileSlotPlan()?.storage||e.profilePassPlan()?.storage)} of storage`,"Automatic updates for 180 days","Online for up to a year","No subscription"],repo_slot:["One more repository, outside your free ones",`Its own ${e.billingBytes(e.profileSlotPlan()?.storage)} of storage`,"Valid while the repository exists","Refresh it by hand"],author_pass:["Automatic updates for 180 days",`Its own ${e.billingBytes(e.profilePassPlan()?.storage)} of storage`,"No subscription"],repo_extend:["Online for up to one more year","Buy again to add another year","No subscription"],repo_never:["The link never expires","No subscription","Ends only if the payment is refunded"]})[h]||[],e.profileAddonBlurb=h=>({repo_slot:"One more repository",author_pass:"Auto-updates for 180 days",repo_extend:"Online one more year",repo_never:"The link never expires"})[h]||"",e.profileAuthorPurchase=()=>(e.billing?.purchases||[]).find(h=>h.recurring&&["active","overdue"].includes(h.status)),e.profileRepositoryExpiry=h=>h.status==="expired"?"expired":h.expirationMode==="never"?"never expires":h.expirationDate?"expires "+e.billingDate(h.expirationDate):"no date",e.profileAnnualSavings=()=>{let h=e.profileAuthorPlans().find(m=>m.interval==="month")?.amount,g=e.profileAuthorPlans().find(m=>m.interval==="year")?.amount;return h&&g&&g(e.billing?.purchases||[]).filter(g=>["active","overdue"].includes(g.status)===h),e.profilePurchaseStatus=h=>({active:"Active",overdue:"Payment overdue",ended:"Ended",refunded:"Refunded",disputed:"Disputed"})[h.status]||h.status,e.profilePurchaseTerm=h=>{let g=h.status&&!["active","overdue"].includes(h.status);if(h.recurring)return g?h.until?"Ended "+e.billingDate(h.until):"":(h.cancelAtPeriodEnd?"Ends ":"Renews ")+e.billingDate(h.until);if(h.planId==="repo_pack"){let m=h.parts.map(k=>k.until).filter(Boolean).map(k=>new Date(k).getTime());return g||!m.length?"":"Until "+e.billingDate(new Date(Math.max(...m)))}return h.until?(g||new Date(h.until).getTime()e.profileAddonPlans().find(h=>h.id===e.profileAddonId)||e.profileAddonPlans()[0],e.profileAuthorGrant=()=>(e.billing?.grants||[]).find(h=>["author_monthly","author_annual"].includes(h.planId)&&["active","paid","past_due"].includes(h.status)&&new Date(h.until).getTime()>Date.now()),e.profileConferencePlan=()=>(e.billing?.plans||[]).filter(h=>["conference_workshop","conference","conference_large"].includes(h.id)&&h.amount!=null).sort((h,g)=>h.amount-g.amount)[0],e.profileGrantName=h=>({author_monthly:"Author monthly",author_annual:"Author annual",author_pass:"Live updates",repo_extend:"Extended expiration",repo_never:"Never expire",repo_slot:"Extra repository",repo_pack:"Paper pack",conference:"Conference package",conference_workshop:"Workshop package",conference_large:"Large conference package"})[h.planId]||h.planId,Ni(e,t,()=>s.load().then(h=>{e.quota=h},console.error),{portalMessage:()=>{let h=e.profileAuthorGrant();return h?h.cancelAtPeriodEnd?`Renewal cancelled. Your access continues until ${e.billingDate(h.until)}.`:`Your subscription renews on ${e.billingDate(h.until)}.`:"Your billing details are up to date."}}),e.terms="",e.options={expirationMode:"remove",update:!1,image:!0,pdf:!0,notebook:!0,loc:!0,link:!0},e.saving=!1,e.message=null,e.error=null,e.accountEmail="",e.emailLoading=!0,e.emailCSRFReady=!1,e.emailSaving=!1,e.emailSaved=!1,e.emailError="";let a="";e.loadAccountEmail=async()=>{e.emailLoading=!0,e.emailError="";try{let h=await t.get("/github/connections/email");e.accountEmail=h.data.notificationEmail||"",a=h.data.csrf,e.emailCSRFReady=!!a}catch{e.emailError="Unable to load your email address. Please try again."}finally{e.emailLoading=!1}},e.saveAccountEmail=async()=>{if(!(e.emailSaving||e.emailLoading||!a)){e.emailSaving=!0,e.emailSaved=!1,e.emailError="";try{let h=await t.post("/github/connections/email",{email:e.accountEmail},{headers:{"X-CSRF-Token":a}});e.accountEmail=h.data.notificationEmail,e.user&&(e.user.notificationEmail=h.data.notificationEmail),e.emailSaved=!0}catch{e.emailError="Unable to save your email address. Check the address and try again."}finally{e.emailSaving=!1}}},e.loadAccountEmail(),s.load().then(h=>{e.quota=h},console.error);let u=Fr(e,["terms","options"],"profile");e.discardDraft=()=>u.discard();function p(){t.get("/api/user/default").then(h=>{let g=h.data||{};g.terms&&(e.terms=g.terms.join(` -`)),e.options=Object.assign({},e.options,g.options),u.restore()})}p();let v=null;e.saveDefault=h=>{if(h&&h.preventDefault&&h.preventDefault(),e.saving)return;let g=u.checkpoint(),m={terms:e.terms.split(` -`).map(k=>k.trim()).filter(k=>k.length>0),options:e.options};e.saving=!0,e.error=null,t.post("/api/user/default",m).then(()=>{u.accept(g),e.saving=!1,e.message=e.unsavedChanges?null:"Saved",v&&i.cancel(v),v=i(()=>{e.message=null},2500)},k=>{e.saving=!1;let T=k&&k.data&&k.data.error,w="Unable to save your defaults. Please try again.";Promise.all([o("ERRORS."+T),o("ERRORS.unknown_error")]).then(([b,E])=>{e.error=T&&b!==E?b:w},()=>{e.error=w})})},e.deleteAccount=()=>{e.deletingAccount||!e.confirmDeleteAccount||e.deleteUsername!==e.user?.username||(e.deletingAccount=!0,t.delete("/api/user").then(()=>{window.location.href="/"},()=>{e.deletingAccount=!1,e.deleteError="Unable to delete the account. Please try again."}))}},Gu=function(e,t,o){e.repoId=null,e.repoUrl=null,e.claim=()=>{t.post("/api/repo/claim",{repoId:e.repoId,repoUrl:e.repoUrl}).then(i=>{o.url("/dashboard")},i=>{e.error=i.data,e.claimForm.repoUrl.setValidity("not_found",!1),e.claimForm.repoId.setValidity("not_found",!1)})}},Wu=function(e,t,o,i,s){e.user&&!e.user.status&&o.url("/dashboard"),e.watch("user.status",()=>{e.user&&!e.user.status&&o.url("/dashboard")}),e.features=[{key:"anonymize",num:"01",eyebrow:"Anonymize",title:"Double-anonymous,",accent:"your rules.",text:"Choose what reviewers may see: links, images, PDFs, notebooks, GitHub Pages. Add your own terms, with regex if you need it, and pick the expiration date.",cta:"Start an anonymization",href:"/anonymize",url:"anonymous.4open.science/anonymize",img:"/imgs/anonymize.png",alt:"The anonymize form: source repository, terms to redact, options and a live README preview"},{key:"review",num:"02",eyebrow:"Review",title:"Reviewers browse",accent:"the real thing.",text:"Highlighted source code, rendered PDFs, images, and notebooks, in a familiar file explorer. GitHub Pages is also supported.",cta:"Open the example",href:"https://anonymous.4open.science/r/840c8c57-3c32-451e-bf12-0e20be300389/",target:"_self",url:"anonymous.4open.science/r/840c8c57-\u2026",img:"/imgs/explorer.png",alt:"The repository explorer with a file tree and a rendered README"},{key:"manage",num:"03",eyebrow:"Manage",title:"One dashboard,",accent:"until the decision.",text:"Monitor views, edit configuration, remove or update your repository. Program chairs can group submissions under a conference with one shared expiry.",cta:"Open the dashboard",href:"/dashboard",needsUser:!0,url:"anonymous.4open.science/dashboard",img:"/imgs/dashboard.png",alt:"The dashboard listing anonymized repositories with status, views and expiry"}],e.feature=e.features[0].key,e.selectFeature=function(u){e.feature=u},e.featureHref=function(u){return u.needsUser&&!e.user?"/signin":u.href},e.featureTarget=function(u){return u.needsUser&&!e.user?"_self":u.target||void 0},e.featureKeydown=function(u,p){let v={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1,Home:"first",End:"last"}[u.key];if(v===void 0)return;u.preventDefault();let h=e.features.length,g=v==="first"?0:v==="last"?h-1:(p+v+h)%h;e.feature=e.features[g].key,s(()=>{let m=i.document.getElementById("feature-tab-"+e.feature);m&&m.focus()})},e.demoText=`# DeepLearnUtils +`+JSON.stringify(t):""}`},[it.NAVIGATION_GUARD_REDIRECT]({from:e,to:t}){return`Redirected from "${e.fullPath}" to "${em(t)}" via a navigation guard.`},[it.NAVIGATION_ABORTED]({from:e,to:t}){return`Navigation aborted from "${e.fullPath}" to "${t.fullPath}" via a navigation guard.`},[it.NAVIGATION_CANCELLED]({from:e,to:t}){return`Navigation cancelled from "${e.fullPath}" to "${t.fullPath}" with a new navigation.`},[it.NAVIGATION_DUPLICATED]({from:e,to:t}){return`Avoided redundant navigation to current location: "${e.fullPath}".`}};function Xn(e,t){return Ge(new Error,{type:e,[zd]:!0},t)}function ln(e,t){return e instanceof Error&&zd in e&&(t==null||!!(e.type&t))}var xh=["params","query","hash"];function em(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;let t={};for(let o of xh)o in e&&(t[o]=e[o]);return JSON.stringify(t,null,2)}function Hd(e){let t={};if(e===""||e==="?")return t;let o=(e[0]==="?"?e.slice(1):e).split("&");for(let i=0;is&&Mr(s)):[i&&Mr(i)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+o,s!=null&&(t+="="+s))})}return t}function jd(e){let t={};for(let o in e){let i=e[o];i!==void 0&&(t[o]=Lt(i)?i.map(s=>s==null?null:""+s):i==null?i:""+i)}return t}var Gd=Symbol(""),Hr=Symbol(""),wi=Symbol(""),ki=Symbol(""),Ci=Symbol("");function Do(){let e=[];function t(i){return e.push(i),()=>{let s=e.indexOf(i);s>-1&&e.splice(s,1)}}function o(){e=[]}return{add:t,list:()=>e.slice(),reset:o}}function yn(e,t,o,i,s,r=a=>a()){let a=i&&(i.enterCallbacks[s]=i.enterCallbacks[s]||[]);return()=>new Promise((u,p)=>{let y=h=>{h===!1?p(Xn(it.NAVIGATION_ABORTED,{from:o,to:t})):h instanceof Error?p(h):Zh(h)?p(Xn(it.NAVIGATION_GUARD_REDIRECT,{from:t,to:h})):(a&&i.enterCallbacks[s]===a&&typeof h=="function"&&a.push(h),u())},m=r(()=>e.call(i&&i.instances[s],t,o,y)),b=Promise.resolve(m);e.length<3&&(b=b.then(y)),b.catch(h=>p(h))})}function Ei(e,t,o,i,s=r=>r()){let r=[];for(let a of e)for(let u in a.components){let p=a.components[u];if(!(t!=="beforeRouteEnter"&&!a.instances[u]))if(Dd(p)){let y=(p.__vccOpts||p)[t];y&&r.push(yn(y,o,i,a,u,s))}else{let y=p();r.push(()=>y.then(m=>{if(!m)throw new Error(`Couldn't resolve component "${u}" at "${a.path}"`);let b=Mh(m)?m.default:m;a.mods[u]=m,a.components[u]=b;let h=(b.__vccOpts||b)[t];return h&&yn(h,o,i,a,u,s)()}))}}return r}function Wd(e,t){let o=[],i=[],s=[],r=Math.max(t.matched.length,e.matched.length);for(let a=0;aYn(y,u))?i.push(u):o.push(u));let p=e.matched[a];p&&(t.matched.find(y=>Yn(y,p))||s.push(p))}return[o,i,s]}var tm=()=>location.protocol+"//"+location.host;function ou(e,t){let{pathname:o,search:i,hash:s}=t,r=e.indexOf("#");if(r>-1){let a=s.includes(e.slice(r))?e.slice(r).length:1,u=s.slice(a);return u[0]!=="/"&&(u="/"+u),Lr(u,"")}return Lr(o,e)+i+s}function nm(e,t,o,i){let s=[],r=[],a=null,u=({state:h})=>{let w=ou(e,location),A=o.value,N=t.value,R=0;if(h){if(o.value=w,t.value=h,a&&a===A){a=null;return}R=N?h.position-N.position:0}else i(w);s.forEach(v=>{v(o.value,A,{delta:R,type:yi.pop,direction:R?R>0?bi.forward:bi.back:bi.unknown})})};function p(){a=o.value}function y(h){s.push(h);let w=()=>{let A=s.indexOf(h);A>-1&&s.splice(A,1)};return r.push(w),w}function m(){if(document.visibilityState==="hidden"){let{history:h}=window;if(!h.state)return;h.replaceState(Ge({},h.state,{scroll:ys()}),"")}}function b(){for(let h of r)h();r=[],window.removeEventListener("popstate",u),window.removeEventListener("pagehide",m),document.removeEventListener("visibilitychange",m)}return window.addEventListener("popstate",u),window.addEventListener("pagehide",m),document.addEventListener("visibilitychange",m),{pauseListeners:p,listen:y,destroy:b}}function Kd(e,t,o,i=!1,s=!1){return{back:e,current:t,forward:o,replaced:i,position:window.history.length,scroll:s?ys():null}}function om(e){let{history:t,location:o}=window,i={value:ou(e,o)},s={value:t.state};s.value||r(i.value,{back:null,current:i.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function r(p,y,m){let b=e.indexOf("#"),h=b>-1?(o.host&&document.querySelector("base")?e:e.slice(b))+p:tm()+e+p;try{t[m?"replaceState":"pushState"](y,"",h),s.value=y}catch(w){console.error(w),o[m?"replace":"assign"](h)}}function a(p,y){r(p,Ge({},t.state,Kd(s.value.back,p,s.value.forward,!0),y,{position:s.value.position}),!0),i.value=p}function u(p,y){let m=Ge({},s.value,t.state,{forward:p,scroll:ys()});r(m.current,m,!0),r(p,Ge({},Kd(i.value,p,null),{position:m.position+1},y),!1),i.value=p}return{location:i,state:s,push:u,replace:a}}function su(e){e=$d(e);let t=om(e),o=nm(e,t.state,t.location,t.replace);function i(r,a=!0){a||o.pauseListeners(),history.go(r)}let s=Ge({location:"",base:e,go:i,createHref:Ld.bind(null,e)},t,o);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>t.state.value}),s}var Qn=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({}),pt=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(pt||{}),sm={type:Qn.Static,value:""},im=/[a-zA-Z0-9_]/;function rm(e){if(!e)return[[]];if(e==="/")return[[sm]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(w){throw new Error(`ERR (${o})/"${y}": ${w}`)}let o=pt.Static,i=o,s=[],r;function a(){r&&s.push(r),r=[]}let u=0,p,y="",m="";function b(){y&&(o===pt.Static?r.push({type:Qn.Static,value:y}):o===pt.Param||o===pt.ParamRegExp||o===pt.ParamRegExpEnd?(r.length>1&&(p==="*"||p==="+")&&t(`A repeatable param (${y}) must be alone in its segment. eg: '/:ids+.`),r.push({type:Qn.Param,value:y,regexp:m,repeatable:p==="*"||p==="+",optional:p==="*"||p==="?"})):t("Invalid state to consume buffer"),y="")}function h(){y+=p}for(;ut.length?t.length===1&&t[0]===St.Static+St.Segment?1:-1:0}function iu(e,t){let o=0,i=e.score,s=t.score;for(;o0&&t[t.length-1]<0}var cm={strict:!1,end:!0,sensitive:!1};function pm(e,t,o){let i=dm(rm(e.path),o),s=Ge(i,{record:e,parent:t,children:[],alias:[]});return t&&!s.record.aliasOf==!t.record.aliasOf&&t.children.push(s),s}function fm(e,t){let o=[],i=new Map;t=qr(cm,t);function s(b){return i.get(b)}function r(b,h,w){let A=!w,N=Qd(b);N.aliasOf=w&&w.record;let R=qr(t,b),v=[N];if("alias"in b){let V=typeof b.alias=="string"?[b.alias]:b.alias;for(let q of V)v.push(Qd(Ge({},N,{components:w?w.record.components:N.components,path:q,aliasOf:w?w.record:N})))}let C,I;for(let V of v){let{path:q}=V;if(h&&q[0]!=="/"){let W=h.record.path,se=W[W.length-1]==="/"?"":"/";V.path=h.record.path+(q&&se+q)}if(C=pm(V,h,R),w?w.alias.push(C):(I=I||C,I!==C&&I.alias.push(C),A&&b.name&&!Zd(C)&&a(b.name)),ru(C)&&p(C),N.children){let W=N.children;for(let se=0;se{a(I)}:Ro}function a(b){if(Br(b)){let h=i.get(b);h&&(i.delete(b),o.splice(o.indexOf(h),1),h.children.forEach(a),h.alias.forEach(a))}else{let h=o.indexOf(b);h>-1&&(o.splice(h,1),b.record.name&&i.delete(b.record.name),b.children.forEach(a),b.alias.forEach(a))}}function u(){return o}function p(b){let h=gm(b,o);o.splice(h,0,b),b.record.name&&!Zd(b)&&i.set(b.record.name,b)}function y(b,h){let w,A={},N,R;if("name"in b&&b.name){if(w=i.get(b.name),!w)throw Xn(it.MATCHER_NOT_FOUND,{location:b});R=w.record.name,A=Ge(Jd(h.params,w.keys.filter(I=>!I.optional).concat(w.parent?w.parent.keys.filter(I=>I.optional):[]).map(I=>I.name)),b.params&&Jd(b.params,w.keys.map(I=>I.name))),N=w.stringify(A)}else if(b.path!=null)N=b.path,w=o.find(I=>I.re.test(N)),w&&(A=w.parse(N),R=w.record.name);else{if(w=h.name?i.get(h.name):o.find(I=>I.re.test(h.path)),!w)throw Xn(it.MATCHER_NOT_FOUND,{location:b,currentLocation:h});R=w.record.name,A=Ge({},h.params,b.params),N=w.stringify(A)}let v=[],C=w;for(;C;)v.unshift(C.record),C=C.parent;return{name:R,path:N,params:A,matched:v,meta:mm(v)}}e.forEach(b=>r(b));function m(){o.length=0,i.clear()}return{addRoute:r,resolve:y,removeRoute:a,clearRoutes:m,getRoutes:u,getRecordMatcher:s}}function Jd(e,t){let o={};for(let i of t)i in e&&(o[i]=e[i]);return o}function Qd(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:hm(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function hm(e){let t={},o=e.props||!1;if("component"in e)t.default=o;else for(let i in e.components)t[i]=typeof o=="object"?o[i]:o;return t}function Zd(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function mm(e){return e.reduce((t,o)=>Ge(t,o.meta),{})}function gm(e,t){let o=0,i=t.length;for(;o!==i;){let r=o+i>>1;iu(e,t[r])<0?i=r:o=r+1}let s=vm(e);return s&&(i=t.lastIndexOf(s,i-1)),i}function vm(e){let t=e;for(;t=t.parent;)if(ru(t)&&iu(e,t)===0)return t}function ru({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function xd(e){let t=At(wi),o=At(ki),i=!1,s=null,r=bt(()=>{let m=hn(e.to);return t.resolve(m)}),a=bt(()=>{let{matched:m}=r.value,{length:b}=m,h=m[b-1],w=o.matched;if(!h||!w.length)return-1;let A=w.findIndex(Yn.bind(null,h));if(A>-1)return A;let N=eu(m[b-2]);return b>1&&eu(h)===N&&w[w.length-1].path!==N?w.findIndex(Yn.bind(null,m[b-2])):A}),u=bt(()=>a.value>-1&&Cm(o.params,r.value.params)),p=bt(()=>a.value>-1&&a.value===o.matched.length-1&&Ur(o.params,r.value.params));function y(m={}){if(km(m)){let b=t[hn(e.replace)?"replace":"push"](hn(e.to)).catch(Ro);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>b),b}return Promise.resolve()}return{route:r,href:bt(()=>r.value.href),isActive:u,isExactActive:p,navigate:y}}function ym(e){return e.length===1?e[0]:e}var bm=ps({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:xd,setup(e,{slots:t}){let o=nt(xd(e)),{options:i}=At(wi),s=bt(()=>({[tu(e.activeClass,i.linkActiveClass,"router-link-active")]:o.isActive,[tu(e.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:o.isExactActive}));return()=>{let r=t.default&&ym(t.default(o));return e.custom?r:Oe("a",{"aria-current":o.isExactActive?e.ariaCurrentValue:null,href:o.href,onClick:o.navigate,class:s.value},r)}}}),wm=bm;function km(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Cm(e,t){for(let o in t){let i=t[o],s=e[o];if(typeof i=="string"){if(i!==s)return!1}else if(!Lt(s)||s.length!==i.length||i.some((r,a)=>r.valueOf()!==s[a].valueOf()))return!1}return!0}function eu(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}var tu=(e,t,o)=>e??t??o,Em=ps({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:o}){let i=At(Ci),s=bt(()=>e.route||i.value),r=At(Hr,0),a=bt(()=>{let y=hn(r),{matched:m}=s.value,b;for(;(b=m[y])&&!b.components;)y++;return y}),u=bt(()=>s.value.matched[a.value]);Wn(Hr,bt(()=>a.value+1)),Wn(Gd,u),Wn(Ci,s);let p=vt();return st(()=>[p.value,u.value,e.name],([y,m,b],[h,w,A])=>{m&&(m.instances[b]=y,w&&w!==m&&y&&y===h&&(m.leaveGuards.size||(m.leaveGuards=w.leaveGuards),m.updateGuards.size||(m.updateGuards=w.updateGuards))),y&&m&&(!w||!Yn(m,w)||!h)&&(m.enterCallbacks[b]||[]).forEach(N=>N(y))},{flush:"post"}),()=>{let y=s.value,m=e.name,b=u.value,h=b&&b.components[m];if(!h)return nu(o.default,{Component:h,route:y});let w=b.props[m],A=w?w===!0?y.params:typeof w=="function"?w(y):w:null,R=Oe(h,Ge({},A,t,{onVnodeUnmounted:v=>{v.component.isUnmounted&&(b.instances[m]=null)},ref:p}));return nu(o.default,{Component:R,route:y})||R}}});function nu(e,t){if(!e)return null;let o=e(t);return o.length===1?o[0]:o}var jr=Em;function au(e){let t=fm(e.routes,e),o=e.parseQuery||Hd,i=e.stringifyQuery||zr,s=e.history,r=Do(),a=Do(),u=Do(),p=Js(bn),y=bn;Jn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");let m=gi.bind(null,X=>""+X),b=gi.bind(null,Md),h=gi.bind(null,No);function w(X,he){let M,F;return Br(X)?(M=t.getRecordMatcher(X),F=he):F=X,t.addRoute(F,M)}function A(X){let he=t.getRecordMatcher(X);he&&t.removeRoute(he)}function N(){return t.getRoutes().map(X=>X.record)}function R(X){return!!t.getRecordMatcher(X)}function v(X,he){if(he=Ge({},he||p.value),typeof X=="string"){let S=vi(o,X,he.path),O=t.resolve({path:S.path},he),H=s.createHref(S.fullPath);return Ge(S,O,{params:h(O.params),hash:No(S.hash),redirectedFrom:void 0,href:H})}let M;if(X.path!=null)M=Ge({},X,{path:vi(o,X.path,he.path).path});else{let S=Ge({},X.params);for(let O in S)S[O]==null&&delete S[O];M=Ge({},X,{params:b(S)}),he.params=b(he.params)}let F=t.resolve(M,he),B=X.hash||"";F.params=m(h(F.params));let K=Vd(i,Ge({},X,{hash:_d(B),path:F.path})),E=s.createHref(K);return Ge({fullPath:K,hash:B,query:i===zr?jd(X.query):X.query||{}},F,{redirectedFrom:void 0,href:E})}function C(X){return typeof X=="string"?vi(o,X,p.value.path):Ge({},X)}function I(X,he){if(y!==X)return Xn(it.NAVIGATION_CANCELLED,{from:he,to:X})}function V(X){return se(X)}function q(X){return V(Ge(C(X),{replace:!0}))}function W(X,he){let M=X.matched[X.matched.length-1];if(M&&M.redirect){let{redirect:F}=M,B=typeof F=="function"?F(X,he):F;return typeof B=="string"&&(B=B.includes("?")||B.includes("#")?B=C(B):{path:B},B.params={}),Ge({query:X.query,hash:X.hash,params:B.path!=null?{}:X.params},B)}}function se(X,he){let M=y=v(X),F=p.value,B=X.state,K=X.force,E=X.replace===!0,S=W(M,F);if(S)return se(Ge(C(S),{state:typeof S=="object"?Ge({},B,S.state):B,force:K,replace:E}),he||M);let O=M;O.redirectedFrom=he;let H;return!K&&qd(i,F,M)&&(H=Xn(it.NAVIGATION_DUPLICATED,{to:O,from:F}),rt(F,F,!0,!1)),(H?Promise.resolve(H):Ee(O,F)).catch(z=>ln(z)?ln(z,it.NAVIGATION_GUARD_REDIRECT)?z:Xe(z):ke(z,O,F)).then(z=>{if(z){if(ln(z,it.NAVIGATION_GUARD_REDIRECT))return se(Ge({replace:E},C(z.to),{state:typeof z.to=="object"?Ge({},B,z.to.state):B,force:K}),he||O)}else z=oe(O,F,!0,E,B);return D(O,F,z),z})}function Q(X,he){let M=I(X,he);return M?Promise.reject(M):Promise.resolve()}function ne(X){let he=wt.values().next().value;return he&&typeof he.runWithContext=="function"?he.runWithContext(X):X()}function Ee(X,he){let M,[F,B,K]=Wd(X,he);M=Ei(F.reverse(),"beforeRouteLeave",X,he);for(let S of F)S.leaveGuards.forEach(O=>{M.push(yn(O,X,he))});let E=Q.bind(null,X,he);return M.push(E),We(M).then(()=>{M=[];for(let S of r.list())M.push(yn(S,X,he));return M.push(E),We(M)}).then(()=>{M=Ei(B,"beforeRouteUpdate",X,he);for(let S of B)S.updateGuards.forEach(O=>{M.push(yn(O,X,he))});return M.push(E),We(M)}).then(()=>{M=[];for(let S of K)if(S.beforeEnter)if(Lt(S.beforeEnter))for(let O of S.beforeEnter)M.push(yn(O,X,he));else M.push(yn(S.beforeEnter,X,he));return M.push(E),We(M)}).then(()=>(X.matched.forEach(S=>S.enterCallbacks={}),M=Ei(K,"beforeRouteEnter",X,he,ne),M.push(E),We(M))).then(()=>{M=[];for(let S of a.list())M.push(yn(S,X,he));return M.push(E),We(M)}).catch(S=>ln(S,it.NAVIGATION_CANCELLED)?S:Promise.reject(S))}function D(X,he,M){u.list().forEach(F=>ne(()=>F(X,he,M)))}function oe(X,he,M,F,B){let K=I(X,he);if(K)return K;let E=he===bn,S=Jn?history.state:{};M&&(F||E?s.replace(X.fullPath,Ge({scroll:E&&S&&S.scroll},B)):s.push(X.fullPath,B)),p.value=X,rt(X,he,M,E),Xe()}let x;function Ae(){x||(x=s.listen((X,he,M)=>{if(!et.listening)return;let F=v(X),B=W(F,et.currentRoute.value);if(B){se(Ge(B,{replace:!0,force:!0}),F).catch(Ro);return}y=F;let K=p.value;Jn&&Fd(Fr(K.fullPath,M.delta),ys()),Ee(F,K).catch(E=>ln(E,it.NAVIGATION_ABORTED|it.NAVIGATION_CANCELLED)?E:ln(E,it.NAVIGATION_GUARD_REDIRECT)?(se(Ge(C(E.to),{force:!0}),F).then(S=>{ln(S,it.NAVIGATION_ABORTED|it.NAVIGATION_DUPLICATED)&&!M.delta&&M.type===yi.pop&&s.go(-1,!1)}).catch(Ro),Promise.reject()):(M.delta&&s.go(-M.delta,!1),ke(E,F,K))).then(E=>{E=E||oe(F,K,!1),E&&(M.delta&&!ln(E,it.NAVIGATION_CANCELLED)?s.go(-M.delta,!1):M.type===yi.pop&&ln(E,it.NAVIGATION_ABORTED|it.NAVIGATION_DUPLICATED)&&s.go(-1,!1)),D(F,K,E)}).catch(Ro)}))}let be=Do(),le=Do(),fe;function ke(X,he,M){Xe(X);let F=le.list();return F.length?F.forEach(B=>B(X,he,M)):console.error(X),Promise.reject(X)}function Te(){return fe&&p.value!==bn?Promise.resolve():new Promise((X,he)=>{be.add([X,he])})}function Xe(X){return fe||(fe=!X,Ae(),be.list().forEach(([he,M])=>X?M(X):he()),be.reset()),X}function rt(X,he,M,F){let{scrollBehavior:B}=e;if(!Jn||!B)return Promise.resolve();let K=!M&&Bd(Fr(X.fullPath,0))||(F||!M)&&history.state&&history.state.scroll||null;return ot().then(()=>B(X,he,K)).then(E=>E&&Ud(E)).catch(E=>ke(E,X,he))}let at=X=>s.go(X),Qe,wt=new Set,et={currentRoute:p,listening:!0,addRoute:w,removeRoute:A,clearRoutes:t.clearRoutes,hasRoute:R,getRoutes:N,resolve:v,options:e,push:V,replace:q,go:at,back:()=>at(-1),forward:()=>at(1),beforeEach:r.add,beforeResolve:a.add,afterEach:u.add,onError:le.add,isReady:Te,install(X){X.component("RouterLink",wm),X.component("RouterView",jr),X.config.globalProperties.$router=et,Object.defineProperty(X.config.globalProperties,"$route",{enumerable:!0,get:()=>hn(p)}),Jn&&!Qe&&p.value===bn&&(Qe=!0,V(s.location).catch(F=>{}));let he={};for(let F in bn)Object.defineProperty(he,F,{get:()=>p.value[F],enumerable:!0});X.provide(wi,et),X.provide(ki,Qo(he)),X.provide(Ci,p);let M=X.unmount;wt.add(X),X.unmount=function(){wt.delete(X),wt.size<1&&(y=bn,x&&x(),x=null,p.value=bn,Qe=!1,fe=!1),M()}}};function We(X){return X.reduce((he,M)=>he.then(()=>ne(M)),Promise.resolve())}return et}function lu(e){return At(ki)}function Ni(e){return["author_pass","repo_extend","repo_never","repo_slot","repo_pack"].includes(e)}var Si=new WeakMap;function Ri(e){if(!Si.has(e)){let t=e.get("/api/billing/").finally(()=>Si.delete(e));Si.set(e,t)}return Si.get(e)}function Di(e,t,o=()=>{},i={}){let s=new URLSearchParams(window.location.search).get("billing");e.billing=null,e.billingLoading=!0,e.billingBusy=!1,e.billingError="",e.billingNotice="",e.billingPending=s==="success",e.billingRepository="";let r={billing_invalid_draft:"This draft could not be saved. Your form is unchanged. Try again.",billing_draft_not_found:"This checkout draft is unavailable or expired. Your local form is unchanged.",billing_recovery_required:"Your earlier payment needs verification. Please contact support before paying again.",billing_checkout_disabled:"New purchases are temporarily unavailable. You can still manage existing billing.",billing_unavailable:"Payments are not available yet. Please try again later.",billing_subscription_exists:"You already have a subscription. Use Manage billing to change or cancel it.",billing_checkout_in_progress:"You have another checkout open. Complete it, or wait up to 30 minutes for it to expire, before choosing a different option.",billing_busy:"Another billing request is processing. Please try again shortly.",billing_already_paid:"This repository or conference already has this paid option.",billing_invalid_review_window:"Conference packages cover up to 180 days. Check the review dates.",billing_invalid_conference:"Only a conference owner can pay for a conference awaiting payment.",repo_not_found:"Enter the ID of an existing repository that you own."};e.billingAmount=p=>p?.amount==null?"":new Intl.NumberFormat(void 0,{style:"currency",currency:p.currency,minimumFractionDigits:p.amount%100?2:0,maximumFractionDigits:2}).format(p.amount/100),e.billingPrice=p=>p.amount==null?"Price shown at checkout":e.billingAmount(p)+(p.interval?` / ${p.intervalCount>1?p.intervalCount+" ":""}${p.interval}`:" once"),e.billingPerMonth=p=>p?.amount==null?"":new Intl.NumberFormat(void 0,{style:"currency",currency:p.currency}).format(p.amount/1200),e.billingBytes=p=>{let y=Number(p)||0;if(y<1024)return`${y} B`;let m=Math.min(4,Math.floor(Math.log2(y)/10));return`${new Intl.NumberFormat(void 0,{maximumFractionDigits:1}).format(y/1024**m)} ${["B","KB","MB","GB","TB"][m]}`},e.billingDate=p=>p?new Date(p).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"}):"",e.loadBilling=()=>(e.billingError="",e.billingLoading=!0,Ri(t).then(p=>{e.billing=p.data,e.emit?.("billing:updated",p.data)}).catch(()=>{e.billingError="Billing could not be loaded. Try again."}).finally(()=>{e.billingLoading=!1}));async function a(p,y,m=!0){if(!(e.billingBusy||!e.billing?.csrf)){e.billingBusy=!0,e.billingError="";try{let b=await t.post(`/api/billing/${p}`,y,{headers:{"x-csrf-token":e.billing.csrf}});if(m)window.location.assign(b.data.url);else return await e.loadBilling(),await o(),e.billingPending=!!b.data.pending,e.emit?.("billing:pending",e.billingPending),e.billingNotice=b.data.pending?"Your payment is still pending. Please do not pay again.":i.confirmedMessage||"Billing status refreshed. Your confirmed access appears below.",b.data}catch(b){e.billingError=r[b.data?.error]||"The billing request failed. Please try again."}finally{e.billingBusy=!1}}}e.checkout=(p,y="",m={})=>a("checkout",{planId:p,target:y,...m}),e.billingPortal=()=>a("portal",{}),e.refreshBilling=()=>a("refresh",{},!1);async function u(){for(let p=0;p<5;p++){let y=await e.refreshBilling();if(!y||!y.pending)return;await new Promise(m=>window.setTimeout(m,3e3))}e.billingNotice="Confirmation is taking longer than usual. You can refresh payment status later. Please do not pay again."}e.loadBilling().then(()=>{s==="success"?(e.billingNotice="Checking your payment. Paid access starts after confirmation.",u()):s==="portal"?e.refreshBilling().then(()=>{e.billingPending=!1,e.emit?.("billing:pending",!1),e.billingNotice=i.portalMessage?.(e.billing)||"Your billing details are up to date."}):s==="cancelled"&&(e.billingNotice="Checkout was closed. No new paid access has been activated.")})}function du(e,t){return t?.split(".").reduce((o,i)=>o?.[i],e)}function Gr(e=null,t=new Map){let o=nt({}),i=[],s=!1,r=new Proxy(o,{get(a,u){return typeof u=="string"&&u.startsWith("__v_")||Reflect.has(a,u)?Reflect.get(a,u):e?.[u]}});return Object.defineProperty(o,"parent",{value:e,configurable:!0}),Object.defineProperty(o,"viewState",{get:()=>r}),r.watch=(a,u,p=!1,y=!0)=>{let m=typeof a=="function"?()=>a(r):()=>du(r,a),b=st(m,u,{deep:p,flush:"post"});return i.push(b),y&&ot(()=>{s||u(m(),m())}),b},r.watchGroup=(a,u,p=!0)=>r.watch(()=>a.map(y=>du(r,y)),u,!0,p),r.on=(a,u)=>{if(a==="dispose")return i.push(u),()=>{};t.has(a)||t.set(a,new Set),t.get(a).add(u);let p=()=>t.get(a)?.delete(u);return i.push(p),p},r.emit=(a,...u)=>{for(let p of[...t.get(a)||[]])p({},...u)},r.dispose=()=>{s=!0,i.splice(0).reverse().forEach(a=>a())},zn(r.dispose),r}function Tt(){let e=new Set,t=new Set,o=!1,i=(r,a=0)=>{if(o)return;let u=setTimeout(()=>{e.delete(u),r()},a);return e.add(u),u};i.cancel=r=>{clearTimeout(r),e.delete(r)};let s=(r,a)=>{if(o)return;let u=setInterval(r,a);return t.add(u),u};return s.cancel=r=>{clearInterval(r),t.delete(r)},zn(()=>{o=!0,e.forEach(clearTimeout),t.forEach(clearInterval)}),{timeout:i,interval:s}}function dn(){let e=new Set;return zn(()=>{e.forEach(t=>t()),e.clear()}),(t,o,i,s)=>{t.addEventListener(o,i,s);let r=()=>{t.removeEventListener(o,i,s),e.delete(r)};return e.add(r),r}}function Wr(e,t,o){let i,s=!1,r="form-draft:"+o,a=()=>Object.fromEntries(t.map(h=>[h,e[h]])),u=()=>JSON.stringify(a()),p=h=>{for(let w of t)Object.prototype.hasOwnProperty.call(h,w)&&(e[w]=h[w]);e.options?.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate))},y=()=>{try{window.sessionStorage.removeItem(r)}catch{}},m=(h=!1)=>{if(i!==void 0){if(h&&document.querySelectorAll("input, select, textarea").forEach(w=>{w._field?.binding.state===e&&w._field.timer&&w._field.commit()}),e.unsavedChanges=u()!==i,e.draftSaved=!1,!e.unsavedChanges){y();return}try{window.sessionStorage.setItem(r,JSON.stringify({account:e.user?.username||null,savedAt:Date.now(),values:a()})),e.draftSaved=!0}catch{}}},b=()=>m(!0);return e.on("routeLeave",b),window.addEventListener("beforeunload",b),e.on("dispose",()=>window.removeEventListener("beforeunload",b)),{restore(){i=u();let h;try{h=JSON.parse(window.sessionStorage.getItem(r)||"null")}catch{}let w=h&&h.account===(e.user?.username||null)&&Date.now()-h.savedAt<30*6e4&&h.values;return w&&(p(h.values),e.draftRestored=!0),s||(s=!0,e.watch(()=>a(),()=>m(),!0)),e.unsavedChanges=u()!==i,!!w},checkpoint(){return document.querySelectorAll("input, select, textarea").forEach(h=>{h._field?.binding.state===e&&h._field.timer&&h._field.commit()}),JSON.parse(u())},accept(h){i=JSON.stringify(h),e.draftRestored=!1,m()},discard(){document.querySelectorAll("input, select, textarea").forEach(h=>{h._field?.binding.state!==e||!h._field.timer||(clearTimeout(h._field.timer),h._field.timer=null,h.value=h._field.binding.value??"")}),i!==void 0&&p(JSON.parse(i)),e.draftRestored=!1,m()},clear(){i=u(),e.unsavedChanges=!1,e.draftRestored=!1,e.draftSaved=!1,y()}}}var Jr={};kp(Jr,{bigNum:()=>Nm,date:()=>Vm,dateEcho:()=>Yr,diff:()=>Am,duration:()=>Zn,filter:()=>_m,humanFileSize:()=>Sm,humanTime:()=>Kr,limitTo:()=>Im,money:()=>Pm,number:()=>Tm,orderBy:()=>Mm,plural:()=>qm,shortDate:()=>Xr,statusLabel:()=>Dm,statusMsg:()=>Ai,title:()=>Rm,uppercase:()=>Om});var Sm=e=>String(window.humanFileSize(e)).replace(/([KMGTPEZY])iB$/,"$1B").replace(/\.0 ([KMGTPEZY]?B)$/," $1"),Nm=(function(){return function(t){let o=Number(t)||0,i=Math.abs(o);return i<1e3?String(o):i<1e4?(o/1e3).toFixed(1).replace(/\.0$/,"")+"k":i<1e6?Math.round(o/1e3)+"k":i<1e7?(o/1e6).toFixed(1).replace(/\.0$/,"")+"M":Math.round(o/1e6)+"M"}})(),Kr=(function(){return function(t){if(!t)return"never";var o=null;t instanceof Date&&(o=t,t=Math.round((Date.now()-t)/1e3)),(typeof t=="string"||typeof t=="number")&&(o=new Date(t),t=Math.round((Date.now()-o)/1e3));var i=t<0?"from now":"ago";if(Math.abs(t)>7200*24)return(o&&!isNaN(o)?o:new Date(Date.now()-t*1e3)).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"});t=Math.abs(t);for(var s=[t/60/60/24/365,t/60/60/24/30,t/60/60/24/7,t/60/60/24,t/60/60,t/60,t],r=["year","month","week","day","hour","minute","second"],a=0;a1&&(p+="s"),u>=1)return u+" "+p+" "+i}return"0 seconds "+i}})(),Rm=(function(){return function(e){if(!e)return e;e=e.toLowerCase();var t=e.split(" "),o=t.map(function(i){return i.charAt(0).toUpperCase()+i.substring(1,i.length)});return o.join(" ")}})(),Dm=(function(){var e={ready:"Ready",error:"Error",expired:"Expired",expiring:"Expiring",removed:"Removed",removing:"Removing",queue:"Queued",download:"Downloading",downloaded:"Downloaded",preparing:"Preparing",anonymizing:"Anonymizing"};return function(t){if(!t)return"";if(e[t])return e[t];var o=String(t).replace(/[_-]+/g," ").toLowerCase();return o.charAt(0).toUpperCase()+o.slice(1)}})(),Ai=(function(){var e={branch_not_found:"Branch not found on GitHub",repo_not_found:"Repository not found on GitHub",repository_not_found:"Repository not found on GitHub",repo_not_accessible:"Repository is not accessible with your token",pr_not_found:"Pull request not found on GitHub",gist_not_found:"Gist not found on GitHub",commit_not_found:"Commit not found on GitHub",repo_too_big:"Repository exceeds the size limit",repository_too_big:"Repository exceeds the size limit",quota_exceeded:"Storage quota exceeded",incomplete_record:"Incomplete record: missing identifier"};return function(t){if(!t)return t;var o=t.match(/^rate_limited:(\d+)$/);if(o){var i=Math.max(0,Math.ceil((parseInt(o[1],10)-Date.now())/1e3));if(i<=0)return"Rate limited \u2014 resuming soon";var s=Math.floor(i/60),r=i%60;return"Rate limited \u2014 retrying in "+(s>0?s+"m "+r+"s":r+"s")}if(e[t])return e[t];var a=/^([a-z0-9]+(?:_[a-z0-9]+)+):\s*\S/.exec(t);if(a){if(e[a[1]])return e[a[1]];var u=a[1].replace(/_/g," ");return u.charAt(0).toUpperCase()+u.slice(1)}if(/^[a-z0-9]+(_[a-z0-9]+)+$/.test(t)){var p=t.replace(/_/g," ");return p.charAt(0).toUpperCase()+p.slice(1)}return t}})(),Am=(function(e){let t=i=>i.replace(/&/g,"&").replace(//g,">");function o(i,s){if(!s)return;let r=s.newPath&&s.newPath!=="/dev/null"?s.newPath:s.oldPath||"",a=s.oldPath==="/dev/null"?"added":s.newPath==="/dev/null"?"deleted":s.oldPath&&s.newPath&&s.oldPath!==s.newPath?"renamed":"modified";if(i.push('
'),i.push('
'+t(r)+''+a+"
"),s.lines.length){i.push('
Work stages and cache results
StateJob IDPayloadJobDetail AttemptsDurationDuration Progress
+ - - - - · {{ job?.data?.repoId }} + -
-
- +
+
+
diff --git a/public/partials/admin/repositories.htm b/public/partials/admin/repositories.htm index 17f36fe..2a50517 100644 --- a/public/partials/admin/repositories.htm +++ b/public/partials/admin/repositories.htm @@ -11,15 +11,16 @@ Errors -
- {{ total >= 0 ? fmt.number(total) : '…' }} {{ total === 1 ? 'repository' : 'repositories' }} - {{ fmt?.humanFileSize(totalSize) }} on disk - Show: - - - - - +
+
+ + + + + + +
+

{{ total >= 0 ? fmt.number(total) : '…' }} shown·{{ fmt?.humanFileSize(totalSize) }} on disk

@@ -83,19 +84,19 @@
-
- {{ repo?.conference }}{{ fmt?.humanFileSize(repo?.size?.storage) }}{{ fmt?.number(repo?.options?.terms?.length) }} {{ repo?.options?.terms?.length === 1 ? 'term' : 'terms' }} +
+ {{ repo?.conference }}{{ fmt?.humanFileSize(repo?.size?.storage) }}{{ fmt?.number(repo?.options?.terms?.length) }} {{ repo?.options?.terms?.length === 1 ? 'term' : 'terms' }}
- - + +
-
+
- {{ fmt?.number(total) }} results +
@@ -134,19 +133,22 @@ {{ repositories?.length }}
-
- {{ fmt?.number(repositories?.length) }} - - - - - +
+
+ + + + + + +
+

{{ fmt.number(filteredRepositories?.length || 0) }} shown

- +
@@ -179,19 +181,19 @@
-
-  ·  · @ ·  {{ repo?.conference }} · {{ fmt?.humanFileSize(repo?.size?.storage) }} · {{ fmt?.number(repo?.options?.terms?.length) }} {{ repo?.options?.terms?.length === 1 ? 'term' : 'terms' }} +
+ {{ repo?.conference }}{{ fmt?.humanFileSize(repo?.size?.storage) }}{{ fmt?.number(repo?.options?.terms?.length) }} {{ repo?.options?.terms?.length === 1 ? 'term' : 'terms' }}
- - + +
-
+
' + + '' + esc(line.text) + "
');for(let u of s.lines)i.push('");i.push("
'+(u.oldNo||"")+''+(u.newNo||"")+''+(u.kind==="add"?"+":u.kind==="remove"?"-":"")+''+t(u.text)+"
")}i.push("
")}return function(i){if(!i)return i;let s=[],r=null,a=0,u=0,p=()=>(r||(r={oldPath:"",newPath:"",lines:[]}),r),y=()=>{r&&(r.lines.length||r.oldPath||r.newPath)&&(o(s,r),r=null)},m=i.split(` +`);for(let b=0;be});function Tm(e,t){return e==null?"":Number(e).toLocaleString(void 0,t==null?{}:{minimumFractionDigits:t,maximumFractionDigits:t})}function Pm(e,t="EUR"){let o=Number(e)||0;return new Intl.NumberFormat(void 0,{style:"currency",currency:t,minimumFractionDigits:o%1?2:0,maximumFractionDigits:2}).format(o)}function Om(e){return String(e??"").toUpperCase()}function Im(e,t,o=0){return(e||[]).slice(o,o+t)}function _m(e,t){return Array.isArray(e)?typeof t=="function"?e.filter(t):e:[]}function Mm(e,t){if(!t)return e||[];let o=Array.isArray(t)?t:[t];return[...e||[]].sort((i,s)=>{for(let r of o){let a=r[0]==="-"?-1:1;r=r.replace(/^[+-]/,"");let u=r.split(".").reduce((y,m)=>y?.[m],i),p=r.split(".").reduce((y,m)=>y?.[m],s);if(typeof u=="string"&&(u=u.toLowerCase()),typeof p=="string"&&(p=p.toLowerCase()),u!==p)return(u==null?-1:p==null?1:ui[s])}function qm(e,t){return(t?.[e]??t?.[e===1?"one":"other"]??"").replace(/\{\}/g,e??0)}function Yr(e){if(!e)return"";let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(String(e)),o=t?new Date(+t[1],+t[2]-1,+t[3]):new Date(e);if(isNaN(o))return"";let i=o.toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"}),s=new Date;s.setHours(0,0,0,0);let r=Math.round((o-s)/864e5),a;if(r===0)a="today";else if(r===1)a="tomorrow";else if(r===-1)a="yesterday";else{let u=Math.abs(r),p=Math.round(u/30.44),y=u<14?[u,"day"]:u<60?[Math.round(u/7),"week"]:p<18?[p,"month"]:[Math.round(u/365.25),"year"],m=y[0]+" "+y[1]+(y[0]===1?"":"s");a=r>0?"in "+m:m+" ago"}return i+" \xB7 "+a}function Zn(e){if(e==null||e===""||isNaN(e))return"";e=Number(e);let t="\u202F";if(e<1e3)return+(e<10?e.toFixed(2):e<100?e.toFixed(1):Math.round(e))+t+"ms";let o=e/1e3;if(o<60)return+(o<10?o.toFixed(2):o.toFixed(1))+t+"s";let i=r=>String(r).padStart(2,"0"),s=Math.round(o);return s<3600?Math.floor(s/60)+"m "+i(s%60)+"s":Math.floor(s/3600)+"h "+i(Math.floor(s%3600/60))+"m"}function Xr(e){if(!e)return"";let t=new Date(e);if(isNaN(t))return"";let o={day:"numeric",month:"short"};return t.getFullYear()!==new Date().getFullYear()&&(o.year="numeric"),t.toLocaleDateString(void 0,o)}var Ti=e=>["preparing","download","downloading","downloaded","queue","anonymizing"].includes(e)?"preparing":e==="expiring"?"expired":e==="removing"?"removed":e;function Pi(e,{flags:t,keys:o,count:i,onChange:s=()=>{}}){if(e.segView=()=>{let r=t()||{};if(o.every(u=>!!r[u]))return"all";let a=o.filter(u=>!!r[u]);return a.length===1?a[0]:"custom"},e.setSegView=r=>{let a=t();if(a){for(let u of o)a[u]=r==="all"?!0:u===r;s()}},e.segCount=r=>r==="all"?o.reduce((a,u)=>a+i(u),0):i(r),t()&&e.segView()==="custom")for(let r of o)t()[r]=!0}var uu=function(e,t,o){let i=Tt(),s=dn();vu(i,s),e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.repositories=[],e.total=-1,e.totalPage=0,e.statusCounts=[],e.totalSize=0,e.selected={},e.allSelected=!1;let r=N=>{if(N.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){N.preventDefault();let R=document.querySelector('.admin-filter-toolbar input[type="search"]');R&&R.focus()}};s(document,"keydown",r),e.on("dispose",()=>document.removeEventListener("keydown",r)),e.clearFilter=N=>{N==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[N]="",e.query.page=1},e.chips=[];let a=()=>{let N=[];e.query.owner&&N.push({key:"owner",label:"Owner",value:e.query.owner}),e.query.conference&&N.push({key:"conference",label:"Conference",value:e.query.conference}),e.chips=N};e.showStatusMessage=N=>{let R=N.statusMessage||"(no message)";window.prompt(`Status message for ${N.repoId} (${N.status}):`,R)},e.fetchGithubInfo=N=>{let R=window.open("","_blank");R&&R.document.write("
Loading GitHub info for "+N.repoId+"...
"),t.get("/api/admin/repos/"+N.repoId+"/github").then(v=>{R&&(R.document.open(),R.document.write('
'+JSON.stringify(v.data,null,2).replace(/[<>]/g,C=>C==="<"?"<":">")+"
"),R.document.close())},v=>{let C=v&&v.data?JSON.stringify(v.data,null,2):String(v);R&&(R.document.body.innerHTML='
'+C+"
")})},e.statusCountFor=N=>{let R=(e.statusCounts||[]).find(v=>v._id===N);return R?R.count:0},e.statusStorageFor=N=>{let R=(e.statusCounts||[]).find(v=>v._id===N);return R?R.storage:0},e.isErrorsOnly=()=>e.query&&e.query.error&&!e.query.ready&&!e.query.preparing&&!e.query.expired&&!e.query.removed,e.toggleErrorsOnly=()=>{e.isErrorsOnly()?Object.assign(e.query,{ready:!1,preparing:!0,expired:!1,removed:!1,error:!0}):Object.assign(e.query,{ready:!1,preparing:!1,expired:!1,removed:!1,error:!0}),e.query.page=1},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=N=>{e.query.sort===N?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=N,e.query.direction="desc"),e.query.page=1},e.sortIcon=N=>e.query.sort===N?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let u="admin.repos.filterPrefs",p={page:1,limit:25,sort:"lastView",direction:"desc",search:"",owner:"",conference:"",dateFrom:"",dateTo:"",ready:!0,expired:!0,removed:!0,error:!0,preparing:!0},y=loadFilterPrefs(u)||{};e.query=Object.assign({},p,y,{page:1,search:""});let m=o.search();m.owner&&(e.query.owner=m.owner),m.conference&&(e.query.conference=m.conference),m.search&&(e.query.search=m.search);let b="admin.repos.presets";e.presets=JSON.parse(localStorage.getItem(b)||"[]"),e.savePreset=()=>{let N=window.prompt("Preset name:");if(!N)return;let R=Object.assign({},e.query);delete R.page,e.presets=(e.presets||[]).filter(v=>v.name!==N),e.presets.push({name:N,query:R}),localStorage.setItem(b,JSON.stringify(e.presets))},e.applyPreset=N=>{Object.assign(e.query,N.query,{page:1})},e.deletePreset=N=>{e.presets=(e.presets||[]).filter(R=>R.name!==N.name),localStorage.setItem(b,JSON.stringify(e.presets))},e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,e.repositories.forEach(N=>{e.selected[N.repoId]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedRepos=()=>e.repositories.filter(N=>e.selected[N.repoId]),e.bulkRefresh=()=>{let N=e.selectedRepos();N.length&&confirm(`Force refresh ${N.length} repositories?`)&&N.forEach(R=>e.updateRepository(R))},e.bulkRemoveCache=()=>{let N=e.selectedRepos();N.length&&confirm(`Purge cache for ${N.length} repositories?`)&&N.forEach(R=>e.removeCache(R))},e.clearSelection=()=>{e.selected={},e.allSelected=!1},e.exportCsv=()=>{let N=new URLSearchParams(Object.entries(e.query).filter(([,R])=>R!==""&&R!==!1&&R!=null));N.set("format","csv"),N.set("limit","10000"),window.open("/api/admin/repos?"+N.toString(),"_blank")},e.removeCache=N=>{confirm("Remove cached files for "+N.repoId+"?")&&t.delete("/api/admin/repos/"+N.repoId).then(()=>h(),R=>console.error(R))},e.removeRepository=N=>{confirm("Remove repository "+N.repoId+"?")&&t.delete("/api/repo/"+N.repoId+"/").then(()=>h(),R=>console.error(R))},e.updateRepository=N=>{let R=nt({title:`Refreshing ${N.repoId}...`,date:new Date,body:`The repository ${N.repoId} is going to be refreshed.`});e.toasts.push(R),t.post(`/api/repo/${N.repoId}/refresh`).then(v=>{v.data.status=="ready"?R.title=`${N.repoId} is refreshed.`:R.title=`Refreshing of ${N.repoId}.`},v=>{R.title=`Error during the refresh of ${N.repoId}.`,R.body=v.body})},e.filtersOpen=!1,e.fetchError=null;function h(){e.fetchError=null,t.get("/api/admin/repos",{params:e.query}).then(N=>{e.total=N.data.total,e.totalPage=Math.ceil(N.data.total/e.query.limit),e.repositories=N.data.results,e.allSelected=!1},N=>{e.fetchError=N&&N.data&&N.data.error||"Failed to load repositories",console.error(N)})}function w(){let N=Object.assign({},e.query,{page:1,limit:1,ready:!0,expired:!0,removed:!0,error:!0,preparing:!0});t.get("/api/admin/repos",{params:N}).then(R=>{e.statusCounts=R.data.statusCounts||[],e.totalSize=R.data.totalSize||0},()=>{})}e.showAllStatuses=()=>Object.assign(e.query,{ready:!0,expired:!0,removed:!0,error:!0,preparing:!0,page:1}),Pi(e,{flags:()=>e.query,keys:["ready","preparing","error","expired","removed"],count:N=>N==="preparing"?e.statusCountFor("preparing")+e.statusCountFor("download"):N==="expired"?e.statusCountFor("expired")+e.statusCountFor("expiring"):N==="removed"?e.statusCountFor("removed")+e.statusCountFor("removing"):e.statusCountFor(N),onChange:()=>{e.query.page=1}}),h(),w();let A=null;e.watch("query",()=>{i.timeout.cancel(A),A=i.timeout(()=>{h(),w()},500);let{page:N,search:R,...v}=e.query;saveFilterPrefs(u,v),a()},!0),a()},cu=function(e,t,o){let i=Tt(),s=dn();e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.users=[],e.total=-1,e.totalPage=0,e.statusCounts=[],e.selected={},e.allSelected=!1;let r=h=>{if(h.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){h.preventDefault();let w=document.querySelector('.admin-filter-toolbar input[type="search"]');w&&w.focus()}};s(document,"keydown",r),e.on("dispose",()=>document.removeEventListener("keydown",r)),e.clearFilter=h=>{h==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[h]="",e.query.page=1},e.chips=[];let a=()=>{let h=[];e.query.role&&h.push({key:"role",label:"Role",value:e.query.role}),e.chips=h};e.statusCountFor=h=>{let w=(e.statusCounts||[]).find(A=>A._id===h);return w?w.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=h=>{e.query.sort===h?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=h,e.query.direction="desc"),e.query.page=1},e.sortIcon=h=>e.query.sort===h?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let u="admin.users.filterPrefs",p={page:1,limit:25,sort:"username",direction:"asc",search:"",status:"",role:"",dateFrom:"",dateTo:""},y=loadFilterPrefs(u)||{};e.query=Object.assign({},p,y,{page:1,search:""}),e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,e.users.forEach(h=>{e.selected[h.username]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedUsers=()=>e.users.filter(h=>e.selected[h.username]),e.banUser=h=>{confirm(`Ban user ${h.username}?`)&&t.post(`/api/admin/users/${h.username}/ban`).then(m,w=>console.error(w))},e.activateUser=h=>{t.post(`/api/admin/users/${h.username}/activate`).then(m,w=>console.error(w))},e.bulkBan=()=>{let h=e.selectedUsers();h.length&&confirm(`Ban ${h.length} users?`)&&h.forEach(w=>e.banUser(w))},e.exportCsv=()=>{let h=new URLSearchParams(Object.entries(e.query).filter(([,w])=>w!==""&&w!==!1&&w!=null));h.set("format","csv"),h.set("limit","10000"),window.open("/api/admin/users?"+h.toString(),"_blank")},e.fetchError=null;function m(){e.fetchError=null,t.get("/api/admin/users",{params:e.query}).then(h=>{e.total=h.data.total,e.totalPage=Math.ceil(h.data.total/e.query.limit),e.users=h.data.results,e.statusCounts=h.data.statusCounts||[],e.allSelected=!1},h=>{e.fetchError=h&&h.data&&h.data.error||"Failed to load users",console.error(h)})}m();let b=null;e.watch("query",()=>{i.timeout.cancel(b),b=i.timeout(m,500);let{page:h,search:w,...A}=e.query;saveFilterPrefs(u,A),a()},!0),a()},pu=function(e,t,o,i){let s=Tt();vu(s,dn()),e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.userInfo,e.repositories=[],e.search="",e.selected={},e.allSelected=!1;let r="admin.user.filterPrefs",a={filters:{status:{ready:!0,expired:!0,removed:!0,error:!0,preparing:!0}},sort:"anonymizeDate",direction:"desc"},u=loadFilterPrefs(r)||{};e.filters={status:Object.assign({},a.filters.status,u.filters&&u.filters.status||{})},e.query={sort:u.sort||a.sort,direction:u.direction||a.direction},e.orderBy=(e.query.direction==="asc"?"":"-")+e.query.sort,e.sortBy=h=>{e.query.sort===h?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=h,e.query.direction="desc"),e.orderBy=(e.query.direction==="asc"?"":"-")+e.query.sort},e.sortIcon=h=>e.query.sort===h?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"",e.watch("query",()=>{saveFilterPrefs(r,{filters:e.filters,sort:e.query.sort,direction:e.query.direction})},!0),e.watch("filters",()=>{saveFilterPrefs(r,{filters:e.filters,sort:e.query.sort,direction:e.query.direction})},!0),e.statusCountFor=h=>(e.repositories||[]).filter(w=>Ti(w.status)===h).length,Pi(e,{flags:()=>e.filters.status,keys:["ready","preparing","error","expired","removed"],count:h=>e.statusCountFor(h)}),e.repoFiler=h=>e.filters.status[Ti(h.status)]==!1?!1:!!(e.search.trim().length==0||h.source.fullName.indexOf(e.search)>-1||h.repoId.indexOf(e.search)>-1||h.statusMessage&&h.statusMessage.indexOf(e.search)>-1||h.conference&&h.conference.indexOf(e.search)>-1),e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,(e.filteredRepositories||e.repositories).forEach(h=>{e.selected[h.repoId]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedRepos=()=>e.repositories.filter(h=>e.selected[h.repoId]),e.bulkRefresh=()=>{let h=e.selectedRepos();h.length&&confirm(`Force refresh ${h.length} repositories?`)&&h.forEach(w=>e.updateRepository(w))},e.bulkRemoveCache=()=>{let h=e.selectedRepos();h.length&&confirm(`Purge cache for ${h.length} repositories?`)&&h.forEach(w=>e.removeCache(w))},e.clearSelection=()=>{e.selected={},e.allSelected=!1},e.exportCsv=()=>{let h=e.filteredRepositories||e.repositories,A=["repoId","status","statusMessage","pageView","anonymizeDate","source.fullName","conference","size.storage"].join(","),N=h.map(C=>[C.repoId,C.status,C.statusMessage||"",C.pageView||0,C.anonymizeDate||"",C.source&&C.source.fullName||"",C.conference||"",C.size&&C.size.storage||0].map(I=>{let V=String(I??"");return/[",\n\r]/.test(V)?'"'+V.replace(/"/g,'""')+'"':V}).join(",")),R=new Blob([A+` +`+N.join(` +`)],{type:"text/csv"}),v=document.createElement("a");v.href=URL.createObjectURL(R),v.download=i.username+"-repositories.csv",v.click()},e.showStatusMessage=h=>{let w=h.statusMessage||"(no message)";window.prompt(`Status message for ${h.repoId} (${h.status}):`,w)},e.fetchGithubInfo=h=>{let w=window.open("","_blank");w&&w.document.write("
Loading GitHub info for "+h.repoId+"...
"),t.get("/api/admin/repos/"+h.repoId+"/github").then(A=>{w&&(w.document.open(),w.document.write('
'+JSON.stringify(A.data,null,2).replace(/[<>]/g,N=>N==="<"?"<":">")+"
"),w.document.close())},A=>{let N=A&&A.data?JSON.stringify(A.data,null,2):String(A);w&&(w.document.body.innerHTML='
'+N+"
")})};function p(h){t.get("/api/admin/users/"+h+"/repos",{}).then(w=>{e.repositories=w.data},w=>{console.error(w)})}function y(h){t.get("/api/admin/users/"+h,{}).then(w=>{e.userInfo=w.data},w=>{console.error(w)})}y(i.username),p(i.username),e.banUser=()=>{confirm(`Ban user ${i.username}?`)&&t.post(`/api/admin/users/${i.username}/ban`).then(()=>y(i.username),h=>console.error(h))},e.activateUser=()=>{t.post(`/api/admin/users/${i.username}/activate`).then(()=>y(i.username),h=>console.error(h))},e.promoteUser=()=>{confirm(`Promote ${i.username} to admin?`)&&t.post(`/api/admin/users/${i.username}/promote`).then(()=>y(i.username),h=>console.error(h))},e.demoteUser=()=>{confirm(`Remove admin privileges from ${i.username}?`)&&t.post(`/api/admin/users/${i.username}/demote`).then(()=>y(i.username),h=>console.error(h))},e.tokens=[],e.tokenForm={name:"",plaintext:null};function m(){t.get("/api/admin/tokens").then(h=>{e.tokens=h.data||[]},h=>{h.status!==401&&h.status!==403&&console.error(h)})}m(),e.createToken=()=>{e.tokenForm.name&&t.post("/api/admin/tokens",{name:e.tokenForm.name}).then(h=>{e.tokenForm.plaintext=h.data.token,e.tokenForm.name="",m()},h=>console.error(h))},e.revokeToken=h=>{confirm(`Revoke token "${h.name}"?`)&&t.delete("/api/admin/tokens/"+h.id).then(()=>m(),w=>console.error(w))},e.removeCache=h=>{confirm("Remove cached files for "+h.repoId+"?")&&t.delete("/api/admin/repos/"+h.repoId).then(()=>p(i.username),w=>console.error(w))},e.removeRepository=h=>{confirm("Remove repository "+h.repoId+"?")&&t.delete("/api/repo/"+h.repoId+"/").then(()=>p(i.username),w=>console.error(w))},e.updateRepository=h=>{let w=nt({title:`Refreshing ${h.repoId}...`,date:new Date,body:`The repository ${h.repoId} is going to be refreshed.`});e.toasts.push(w),t.post(`/api/repo/${h.repoId}/refresh`).then(A=>{A.data.status=="ready"?w.title=`${h.repoId} is refreshed.`:w.title=`Refreshing of ${h.repoId}.`},A=>{w.title=`Error during the refresh of ${h.repoId}.`,w.body=A.body})},e.getGitHubRepositories=h=>{t.get(`/api/user/${e.userInfo.username}/all_repositories`,{params:{force:"1"}}).then(w=>{e.userInfo.repositories=w.data})};let b=null;e.watch("query",()=>{s.timeout.cancel(b),b=s.timeout(()=>{p(i.username)},500)},!0)},fu=function(e,t,o){let i=Tt(),s=dn();e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.conferences=[],e.total=-1,e.totalPage=0,e.statusCounts=[];let r=A=>{if(A.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){A.preventDefault();let N=document.querySelector('.admin-filter-toolbar input[type="search"]');N&&N.focus()}};s(document,"keydown",r),e.on("dispose",()=>document.removeEventListener("keydown",r)),e.clearFilter=A=>{A==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[A]="",e.query.page=1},e.chips=[];let a=()=>{let A=[];(e.query.dateFrom||e.query.dateTo)&&A.push({key:"dateRange",label:"Date",value:(e.query.dateFrom||"\u2026")+" \u2013 "+(e.query.dateTo||"\u2026")}),e.chips=A};e.statusCountFor=A=>{let N=(e.statusCounts||[]).find(R=>R._id===A);return N?N.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=A=>{e.query.sort===A?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=A,e.query.direction="desc"),e.query.page=1},e.sortIcon=A=>e.query.sort===A?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let u="admin.conferences.filterPrefs",p={page:1,limit:25,sort:"name",direction:"asc",search:"",dateFrom:"",dateTo:"",ready:!0,expired:!0,removed:!0,error:!0,preparing:!0},y=loadFilterPrefs(u)||{};e.query=Object.assign({},p,y,{page:1,search:""});let m=o.search();m.search&&(e.query.search=m.search);let b="admin.conferences.presets";e.presets=JSON.parse(localStorage.getItem(b)||"[]"),e.savePreset=()=>{let A=window.prompt("Preset name:");if(!A)return;let N=Object.assign({},e.query);delete N.page,e.presets=(e.presets||[]).filter(R=>R.name!==A),e.presets.push({name:A,query:N}),localStorage.setItem(b,JSON.stringify(e.presets))},e.applyPreset=A=>{Object.assign(e.query,A.query,{page:1})},e.deletePreset=A=>{e.presets=(e.presets||[]).filter(N=>N.name!==A.name),localStorage.setItem(b,JSON.stringify(e.presets))},e.removeConference=A=>{confirm("Remove conference "+A.conferenceID+"?")&&t.delete("/api/admin/conferences/"+A.conferenceID).then(()=>h(),N=>console.error(N))},e.exportCsv=()=>{let A=new URLSearchParams(Object.entries(e.query).filter(([,N])=>N!==""&&N!==!1&&N!=null));A.set("format","csv"),A.set("limit","10000"),window.open("/api/admin/conferences?"+A.toString(),"_blank")},e.fetchError=null;function h(){e.fetchError=null,t.get("/api/admin/conferences",{params:e.query}).then(A=>{e.total=A.data.total,e.totalPage=Math.ceil(A.data.total/e.query.limit),e.conferences=A.data.results,e.statusCounts=A.data.statusCounts||[]},A=>{e.fetchError=A&&A.data&&A.data.error||"Failed to load conferences",console.error(A)})}Pi(e,{flags:()=>e.query,keys:["ready","preparing","error","expired","removed"],count:A=>e.statusCountFor(A),onChange:()=>{e.query.page=1}}),h();let w=null;e.watch("query",()=>{i.timeout.cancel(w),w=i.timeout(h,500);let{page:A,search:N,...R}=e.query;saveFilterPrefs(u,R),a()},!0),a()},hu=function(e,t,o,i,s){let r=Tt();e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.queueList=[],e.jobs=[],e.selectedQueue="download",e.selectedStats=null,e.range="1h",e.allStates=["active","waiting","delayed","failed","completed"],e.stateFilter={active:!0,waiting:!0,delayed:!0,failed:!0,completed:!0},Pi(e,{flags:()=>e.stateFilter,keys:e.allStates,count:R=>(e.jobs||[]).filter(v=>v._state===R).length}),e.query={search:"",autoRefresh:!0},e.filteredJobs=()=>(e.jobs||[]).filter(R=>e.stateFilter[R._state]),e.jobProgressPct=R=>R?._state==="completed"?100:R&&R.progress&&typeof R.progress=="object"&&typeof R.progress.percent=="number"?Math.max(0,Math.min(100,Math.round(R.progress.percent))):typeof R.progress=="number"?Math.max(0,Math.min(100,Math.round(R.progress))):null;let a={get_files:"Fetching files",download:"Downloading",downloading:"Downloading",anonymize:"Anonymizing",anonymizing:"Anonymizing",ready:"Ready",removing:"Removing",preparing:"Preparing"};e.jobDetail=R=>{if(R?._state==="failed")return Ai(R.failedReason||"")||"Failed";let v=R?.progress&&typeof R.progress=="object"?R.progress.status:null;return R?._state==="active"&&v?a[v]||Ai(v):"\u2014"},e.jobDuration=R=>{if(!R.processedOn)return"\u2014";let v=R.finishedOn||Date.now();return Zn(v-R.processedOn)},e.metricsPoints=[],e.selectQueue=R=>{e.selectedQueue=R,u(),p()},e.setRange=R=>{e.range=R,p()};function u(){let R={queue:e.selectedQueue,search:e.query.search};t.get("/api/admin/queues",{params:R}).then(v=>{e.queueList=v.data.queues||[],e.jobs=v.data.jobs||[],e.selectedStats=e.queueList.find(C=>C.key===e.selectedQueue)||e.queueList[0]||null},v=>console.error(v))}function p(){t.get("/api/admin/queues/metrics",{params:{queue:e.selectedQueue,range:e.range}}).then(R=>{e.metricsPoints=R.data.points||[],s(w,0)},R=>console.error(R))}u(),p();let y=i(()=>{e.query.autoRefresh&&(u(),p())},15e3);e.on("dispose",()=>i.cancel(y)),e.refreshNow=function(){u(),p()};function m(R){let v=R&&R.data&&(R.data.message||R.data.error)||"Request failed";e.actionError=v,s(()=>{e.actionError=null},5e3),console.error(R)}e.actionError=null,e.removeJob=R=>{t.delete(`/api/admin/queue/${e.selectedQueue}/${R.id}`).then(u,m)},e.retryJob=R=>{t.post(`/api/admin/queue/${e.selectedQueue}/${R.id}`).then(u,m)},e.retryFailed=()=>{confirm(`Retry all failed jobs in ${e.selectedQueue}?`)&&t.post(`/api/admin/queue/${e.selectedQueue}/retry-failed`).then(u,R=>console.error(R))},e.drainSelected=()=>{confirm(`Drain the ${e.selectedQueue} queue?`)&&t.post(`/api/admin/queue/${e.selectedQueue}/drain`).then(u,R=>console.error(R))},e.togglePause=()=>{let R=e.selectedStats&&e.selectedStats.paused?"resume":"pause";t.post(`/api/admin/queue/${e.selectedQueue}/${R}`).then(u,v=>console.error(v))},e.emptyQueue=()=>{confirm(`Empty the ${e.selectedQueue} queue? This removes ALL jobs.`)&&t.post(`/api/admin/queue/${e.selectedQueue}/empty`).then(u,R=>console.error(R))},e.pauseAll=()=>{confirm("Pause all queues?")&&t.post("/api/admin/queues/pause-all").then(u,R=>console.error(R))};let b=null;e.watch("query.search",()=>{r.timeout.cancel(b),b=r.timeout(u,350)}),e.expanded={},e.toggleJob=R=>{e.expanded[R.id]=!e.expanded[R.id]},e.humanTime=R=>{if(!R)return"";let v=new Date(R);return v.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})+" "+v.toLocaleDateString([],{month:"short",day:"numeric"})},e.delayCountdown=R=>{if(!R)return"";var v=Math.max(0,Math.ceil((R-Date.now())/1e3));if(v<=0)return"resuming soon";var C=Math.floor(v/60),I=v%60;return"in "+(C>0?C+"m "+I+"s":I+"s")};function h(R){if(R<=0)return{ticks:[0],niceMax:1};let v=Math.pow(10,Math.floor(Math.log10(R))),C=v;R/C<2?C=v/2:R/C>5&&(C=v*2);let I=Math.ceil(R/C)*C,V=[];for(let q=0;q<=I;q+=C)V.push(q);return{ticks:V,niceMax:I}}function w(){var R=document.getElementById("q-throughput-chart");if(!R)return;var v=R.getContext("2d"),C=window.devicePixelRatio||1,I=R.parentElement.getBoundingClientRect(),V=44,q=44,W=22,se=Math.max(200,Math.round(I.width)),Q=Math.max(180,Math.min(420,Math.round(I.height)||180)),ne=se-V-q,Ee=Q-W;R.width=se*C,R.height=Q*C,R.style.width=se+"px",R.style.height=Q+"px",v.setTransform(C,0,0,C,0,0);var D=document.body.classList.contains("dark-mode"),oe="#8A857C",x=D?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)",Ae=D?"#6FBF8A":"#2F7D4F",be=D?"rgba(111,191,138,0.12)":"rgba(47,125,79,0.08)",le=D?"#F08A82":"#B42318",fe=D?"rgba(240,138,130,0.08)":"rgba(180,35,24,0.06)",ke=getComputedStyle(document.body).getPropertyValue("--q-time-series").trim()||(D?"#E0A94A":"#946512"),Te=e.metricsPoints||[];if(Te.length===0){v.fillStyle=oe,v.font="13px Inter, system-ui, sans-serif",v.textAlign="center",v.fillText("No metrics data yet",se/2,Q/2),A=null;return}var Xe=Te.map(function(me){return me.completed}),rt=Te.map(function(me){return me.failed}),at=Te.map(function(me){return me.avgMs});if(!Xe.some(Boolean)&&!rt.some(Boolean)){v.strokeStyle=D?"rgba(255,255,255,0.14)":"rgba(0,0,0,0.12)",v.beginPath(),v.moveTo(0,Q-18.5),v.lineTo(se,Q-18.5),v.stroke(),v.fillStyle=D?"#CFC8BD":"#4F4A42",v.font="500 14px Inter, system-ui, sans-serif",v.textAlign="center",v.fillText("No jobs processed in this window",se/2,Q/2-6),v.fillStyle=oe,v.font="12.5px Inter, system-ui, sans-serif",v.fillText("Completed and failed jobs will chart here",se/2,Q/2+16),A=null;return}var Qe=Te.length,wt=ne/(Qe-1||1),et=Math.max(1,Math.max.apply(null,Xe),Math.max.apply(null,rt)),We=h(et),X=Math.max.apply(null,at),he=X>0?h(X):{ticks:[0],niceMax:1},M=function(me){return Ee-me/We.niceMax*(Ee-10)},F=function(me){return Ee-me/he.niceMax*(Ee-10)},B=function(me){return V+me*wt};v.textAlign="right",v.textBaseline="middle",v.font="11px Inter, system-ui, sans-serif",We.ticks.forEach(function(me){var Se=M(me);v.strokeStyle=x,v.lineWidth=1,v.beginPath(),v.moveTo(V,Se),v.lineTo(se-q,Se),v.stroke(),v.fillStyle=oe,me!==0&&v.fillText(me>=1e3?(me/1e3).toFixed(1)+"k":String(me),V-6,Se)}),X>0&&(v.textAlign="left",he.ticks.forEach(function(me){var Se=F(me);v.fillStyle=ke,me!==0&&v.fillText(Zn(me),se-q+6,Se)}));var K=Te[Qe-1].ts,E=Te[0].ts,S=Math.max(0,(K-E)/6e4),O=[1,2,5,10,15,30,60,120,180,360,720,1440,2880,10080],H=O.find(function(me){return S/me<=4})||O[O.length-1],z=function(me){return me<60?me+"m":me<1440?me/60+"h":me/1440+"d"},Y=function(me){for(var Se=0,ze=1;ze0&&Math.abs(Te[ge].ts-(K-G*6e4))>te+1)){var ae=B(ge),de=G===0?"now":z(G)+" ago",pe=v.measureText(de).width,De=Z===0?"right":ge===0?"left":"center",Re=De==="right"?ae:De==="left"?ae+pe:ae+pe/2;Re>J-12||(v.textAlign=De,v.fillText(de,ae,Ee+6),J=De==="right"?ae-pe:De==="left"?ae:ae-pe/2)}}function _e(me,Se,ze,Fe){me.length!==0&&(v.beginPath(),v.moveTo(B(0),Ee),me.forEach(function(k,_){var U=B(_),j=Se(k);if(_===0)v.lineTo(U,j);else{var ue=(B(_-1)+U)/2;v.bezierCurveTo(ue,Se(me[_-1]),ue,j,U,j)}}),v.lineTo(B(me.length-1),Ee),v.closePath(),v.fillStyle=ze,v.fill(),v.beginPath(),me.forEach(function(k,_){var U=B(_),j=Se(k);if(_===0)v.moveTo(U,j);else{var ue=(B(_-1)+U)/2;v.bezierCurveTo(ue,Se(me[_-1]),ue,j,U,j)}}),v.strokeStyle=Fe,v.lineWidth=1.5,v.stroke())}_e(Xe,M,be,Ae),_e(rt,M,fe,le),X>0&&(v.beginPath(),at.forEach(function(me,Se){var ze=B(Se),Fe=F(me);if(Se===0)v.moveTo(ze,Fe);else{var k=(B(Se-1)+ze)/2;v.bezierCurveTo(k,F(at[Se-1]),k,Fe,ze,Fe)}}),v.strokeStyle=ke,v.lineWidth=1,v.setLineDash([4,3]),v.stroke(),v.setLineDash([])),A={pts:Te,maxLen:Qe,marginLeft:V,step:wt,totalW:se,toX:B}}var A=null;function N(){var R=document.getElementById("q-throughput-chart");if(!(!R||R._tipBound)){R._tipBound=!0;var v=document.getElementById("q-chart-tooltip"),C=document.getElementById("q-chart-crosshair");R.addEventListener("mousemove",function(I){if(!(!A||!v||!C)){var V=A,q=R.getBoundingClientRect(),W=I.clientX-q.left,se=Math.round((W-V.marginLeft)/V.step);if(se<0||se>=V.maxLen){v.style.display="none",C.style.display="none";return}var Q=V.pts[se],ne=V.pts[V.pts.length-1].ts,Ee=Math.round((ne-Q.ts)/6e4),D;if(Ee<=0)D="now";else if(Ee<60)D=Ee+"m ago";else if(Ee<1440){var oe=Math.floor(Ee/60),x=Ee%60;D=oe+"h"+(x?" "+x+"m":"")+" ago"}else D=Math.round(Ee/1440)+"d ago";var Ae='
'+D+'
● completed: '+Q.completed+'/min
● failed: '+Q.failed+"/min
";if(Q.avgMs>0){var be=Zn(Q.avgMs);Ae+='
● avg time: '+be+"
"}v.innerHTML=Ae;var le=V.toX(se),fe=v.offsetWidth,ke=le+10;ke+fe>V.totalW&&(ke=le-fe-10),v.style.display="block",v.style.left=ke+"px",v.style.top="8px",C.style.display="block",C.style.left=le+"px"}}),R.addEventListener("mouseleave",function(){v&&(v.style.display="none"),C&&(C.style.display="none")})}}e.watch("metricsPoints",function(){s(N,50)})},mu=function(e,t,o,i){let s=Tt();e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.entries=[],e.visible=[],e.available=!0,e.cap=1e3,e.total=0,e.pageSize=250,e.expanded={},e.detailTab={},e.copyHint="",e.parsedFilterCount=0,e.stats={last24h:0,prev24h:0,delta:0,severity:{error:0,warn:0,info:0},unique:{error:0,warn:0,info:0},buckets:[],dropped:0},e.query={search:"",bucket:"",sort:"recent",group:"code",autoRefresh:!0},e.relTime=v=>{if(!v)return"";let C=new Date(v).getTime();if(isNaN(C))return v;let I=Math.max(0,Date.now()-C),V=Math.floor(I/1e3);if(V<5)return"just now";if(V<60)return`${V}s ago`;let q=Math.floor(V/60);if(q<60)return`${q}m ago`;let W=Math.floor(q/60);if(W<24)return`${W}h ago`;let se=Math.floor(W/24);return se<7?`${se}d ago`:new Date(v).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})},e.absTime=v=>{if(!v)return"";let C=new Date(v);return isNaN(C.getTime())?v:C.toLocaleString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})},e.absTimeShort=v=>{if(!v)return"";let C=new Date(v);return isNaN(C.getTime())?v:C.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})};let r=/^[a-zA-Z][a-zA-Z0-9]*(?:_[a-zA-Z0-9]+)+$/;function a(v,C){let I=v&&(v.httpStatus||v.status)||null;if(typeof I=="number"){if(I>=500)return"error";if(I===401||I===403||I===404)return"info";if(I>=400)return"warn"}return C==="error"?"error":C==="warn"?"warn":"info"}function u(v){let C=(v.raw||[]).find(W=>W&&typeof W=="object"&&!Array.isArray(W));if(C){C.message&&r.test(C.message)?(v.displayMessage=C.message,v.displayContext=v.message):C.code&&r.test(String(C.code))?(v.displayMessage=String(C.code),v.displayContext=v.message):C.name&&C.name!=="AnonymousError"&&C.name!=="Error"?(v.displayMessage=C.name,v.displayContext=C.message||v.message):v.displayMessage=v.message,v._status=C.httpStatus||C.status||null,v._url=C.url||null,v._method=C.method||null,v._repoId=C.repoId||C.detail||null,v._detail=C.detail&&C.detail!==v._repoId?C.detail:null;let W=typeof C.stack=="string"?C.stack:null;for(var I=[C.cause,C.err].filter(Boolean),V=0;!W&&V{ne==null||ne===""||I.push([Q,ne])};V("name",C&&C.name),V("code",v.displayMessage||C&&C.message),v._bucket&&V("kind",v._bucket),V("httpStatus",C&&C.httpStatus),C&&C.status&&!C.httpStatus&&V("status",C.status),V("module",v.module);let q=C&&C.detail;if(typeof q=="string"){let Q=q.trim();if(Q[0]==="{"||Q[0]==="[")try{q=JSON.parse(q)}catch{}}if(V("detail",q),V("repoId",C&&C.repoId),V("filePath",C&&C.filePath),V("upstreamStatus",C&&C.upstreamStatus),V("upstreamBody",C&&C.upstreamBody),V("url",v._url),V("err",C&&C.err),V("cause",C&&!C.err&&C.cause),V("ts",v.ts),!I.length)return JSON.stringify(v,null,2);let W=I.reduce((Q,ne)=>Math.max(Q,ne[0].length),0),se=["{"];return I.forEach(([Q,ne],Ee)=>{let oe=` ${`"${Q}":`.padEnd(W+3," ")} `,x=Eefe===0?le:be+le).join(` +`)}else typeof ne=="number"||typeof ne=="boolean"?Ae=String(ne):Ae=JSON.stringify(ne);se.push(`${oe}${Ae}${x}`)}),se.push("}"),se.join(` +`)}function y(v){let C=[],I="",V=/(\w+):(>=|<=|!=|>|<|=)?([^\s]+)/g,q=0,W;for(;W=V.exec(v);)I+=v.slice(q,W.index),q=V.lastIndex,C.push({key:W[1],op:W[2]||"=",val:W[3]});return I+=v.slice(q),{filters:C,free:I.trim().toLowerCase()}}function m(v,C){for(let I of C.filters){let V=(W,se,Q)=>{let ne=parseFloat(W),Ee=parseFloat(se);return Q==="="?String(W)===String(se):Q==="!="?String(W)!==String(se):Q===">="?ne>=Ee:Q==="<="?ne<=Ee:Q===">"?ne>Ee:Q==="<"?neC&&Q._bucket!==C?!1:m(Q,v)),V=e.query.group;if(V){let Q=D=>V==="module"?D.module:D.displayMessage||D.message||"_",ne=new Map;for(let D of I){let oe=Q(D);if(ne.has(oe)){let x=ne.get(oe);x.count++,x._related.push(D),new Date(D.ts)>new Date(x.ts)&&(x.ts=D.ts,x._url=D._url,x._status=D._status),new Date(D.ts)new Date(oe.ts).getTime()>=Ee).length;I=Array.from(ne.values())}else I=I.map((Q,ne)=>(Q._key="row:"+ne+":"+Q.ts,Q._related=[Q],Q._firstSeen=Q.ts,Q._lastHourCount=0,Q.count=1,Q));let q=Q=>({error:0,warn:1,info:2})[Q._bucket]??1;e.query.sort==="count"?I.sort((Q,ne)=>q(Q)-q(ne)||ne.count-Q.count||new Date(ne.ts)-new Date(Q.ts)):I.sort((Q,ne)=>q(Q)-q(ne)||new Date(ne.ts)-new Date(Q.ts)),e.visible=I;let W=!!(e.query.bucket||(e.query.search||"").trim()),se=!W&&(e.stats?.severity?.error||0)>0&&!I.some(Q=>Q._bucket==="error")&&e.entries.length<1500;(W&&!I.length||se)&&e.canLoadMore?.()&&!e._autoLoading&&e.entries.length<2500&&(e._autoLoading=!0,h(!0))}function h(v){let C=v?e.entries.length:0,I=v?e.pageSize:Math.max(e.pageSize,e.entries.length||e.pageSize);t.get("/api/admin/errors",{params:{offset:C,limit:I}}).then(V=>{let q=(V.data.entries||[]).map(u);e.entries=v?e.entries.concat(q):q,e.available=!!V.data.available,e.cap=V.data.max||e.cap,e.total=V.data.total||e.entries.length,e._autoLoading=!1,b()},V=>{e._autoLoading=!1,console.error(V)})}e.loadMore=()=>h(!0),e.canLoadMore=()=>e.entries.length{let C=v.data||{},I=C.prev24h?Math.round((C.last24h-C.prev24h)/C.prev24h*100):0;e.stats={last24h:C.last24h||0,prev24h:C.prev24h||0,delta:I,severity:C.severity||{error:0,warn:0,info:0},unique:C.unique||{error:0,warn:0,info:0},buckets:C.buckets||[],dropped:C.dropped||0},b()},v=>console.error(v))}function A(){h(),w()}e.barPx=(v,C)=>{let I=e.stats.buckets||[],V=0,q=0;for(let ne of I)V=Math.max(V,(ne.error||0)+(ne.warn||0)),q=Math.max(q,ne.info||0);let W=v[C]||0;if(!W)return 0;if(C==="info")return q?Math.max(2,Math.round(W/q*(V?16:60))):0;let se=(v.error||0)+(v.warn||0),Q=Math.round(se/V*44);return Math.max(4,Math.round(W/se*Q))},e.bucketTitle=v=>`${new Date(v.hour).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})} \xB7 ${v.error||0} err \xB7 ${v.warn||0} warn \xB7 ${v.info||0} info`,e.toggle=v=>{e.expanded[v._key]=!e.expanded[v._key]},e.setBucket=v=>{e.query.bucket=v},e.refreshNow=A,e.clearAll=()=>{confirm("Clear all captured errors?")&&t.delete("/api/admin/errors").then(A,v=>console.error(v))},e.exportCsv=()=>{let v=["ts","level","module","displayMessage","_status","_url","_repoId"],C=[v.join(",")];for(let W of e.visible)C.push(v.map(se=>{let Q=W[se]==null?"":String(W[se]);return/[",\n]/.test(Q)?`"${Q.replace(/"/g,'""')}"`:Q}).join(","));let I=new Blob([C.join(` +`)],{type:"text/csv;charset=utf-8"}),V=URL.createObjectURL(I),q=document.createElement("a");q.href=V,q.download=`errors-${new Date().toISOString().slice(0,19)}.csv`,document.body.appendChild(q),q.click(),document.body.removeChild(q),URL.revokeObjectURL(V)};function N(v){e.copyHint=`${v} copied`,s.timeout(()=>{e.copyHint=""},1500)}e.copyJson=v=>{navigator.clipboard.writeText(v._detailJson).then(()=>N("JSON"))},e.copyCurl=v=>{if(!v._url)return;let I=`curl -X ${v._method||"GET"} '${window.location.origin}${v._url}'`;navigator.clipboard.writeText(I).then(()=>N("curl"))},A();let R=i(()=>{e.query.autoRefresh&&A()},15e3);e.on("dispose",()=>i.cancel(R)),e.watch("query.search",b),e.watch("query.bucket",b),e.watch("query.sort",b),e.watch("query.group",b)},gu=function(e,t,o,i){if(e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null){o.url("/");return}e.data=null,e.loading=!0,e.error=null,e.performance=null,e.performanceMinutes=15,e.performanceTab="routes",e.cacheReport=null,e.cacheError=null,e.cacheMinutes=60,e.cacheTraffic="all",e.ovView=["performance","cache"].includes((window.location.hash||"").slice(1))?window.location.hash.slice(1):"summary",e.setOvView=function(v){e.ovView=v;try{window.history.replaceState(null,"",v==="summary"?window.location.pathname:"#"+v)}catch{}};var s=!1;e.loadCache=function(){if(!s){s=!0;var v=e.cacheMinutes;t.get("/api/admin/cache",{params:{minutes:v}}).then(function(C){v===e.cacheMinutes&&(e.cacheReport=C.data,e.cacheError=C.data.available?null:C.data.reason||"Cache monitoring is unavailable.")},function(){e.cacheError="Could not refresh cache monitoring. Displayed values may be stale."}).finally(function(){s=!1,v!==e.cacheMinutes&&e.loadCache()})}},e.cacheRows=function(){return(e.cacheReport?.rows||[]).filter(function(v){return e.cacheTraffic==="all"||v.traffic===e.cacheTraffic})},e.cacheRate=function(v,C){var I=e.cacheRows(),V=function(se){return I.filter(function(Q){return Q.name===se}).reduce(function(Q,ne){return Q+ne[C]},0)},q=V(v+"_hit"),W=V(v+"_miss");return q+W?(100*q/(q+W)).toFixed(1)+"%":"No samples"},e.cacheEventName=function(v){return v.replaceAll("_"," ")},e.cacheP95=function(v){var C=0,I=e.cacheReport?.latencyBucketsMs||[];if(!v.count)return"No samples";if(!v.ms)return"Not timed";for(var V=0;V<=I.length;V++)if(C+=v["b"+V]||0,C>=Math.ceil(v.count*.95))return V 10\u202Fs";return"No samples"},e.healthAlert=function(){let v=e.data&&e.data.system||{},C=[["Memory",v.memPercent],["Disk",v.diskPercent]].filter(([,V])=>V>90);return C.length?C.map(([V,q])=>V+" is at "+q+"%").join(" and ")+". New anonymizations may fail until "+(C.length>1?"they drop.":"it drops."):""},e.performanceError=null,e.formatMs=function(v){return v==null?"":Zn(v)},e.latencyBound=function(v,C){return v.count?v[C]==null?"> 60\u202Fs":"\u2264 "+e.formatMs(v[C]):"No samples"},e.firstByteBound=function(v){return e.latencyBound({count:v.firstByteCount,p95UpperMs:v.firstByteP95UpperMs},"p95UpperMs")},e.sampleAge=function(v){return Math.max(0,Math.round((Date.now()-v.sampledAt)/1e3))},e.peakRss=function(v){return(e.performance.runtimeSeries||[]).filter(function(C){return C.instance===v.instance}).reduce(function(C,I){return Math.max(C,I.rss)},v.memory.rss)},e.performanceWarning=function(v){return e.sampleAge(v)>45||v.droppedBatches||v.droppedMetrics||v.sockets?.closeWait>0||v.eventLoop?.p95Ms>100||v.memoryLimitBytes&&v.memory.rss>v.memoryLimitBytes*.8};var r=!1;e.loadPerformance=function(){var v=e.performanceMinutes;e.performance?.windowMinutes&&e.performance.windowMinutes!==v&&(e.performance=null),!r&&(r=!0,t.get("/api/admin/performance",{params:{minutes:v}}).then(function(C){v===e.performanceMinutes&&(e.performance=C.data,e.performanceError=C.data.available?null:"Performance monitoring is unavailable. Request history may be incomplete.")},function(){v===e.performanceMinutes&&(e.performanceError="Could not refresh performance monitoring. Displayed samples may be stale.")}).finally(function(){r=!1,v!==e.performanceMinutes&&e.loadPerformance()}))};function a(v){if(v==null)return"\u2014";for(var C=["B","KB","MB","GB","TB"],I=0,V=v;V>=1024&&I0?1:0).replace(/\.0$/,"")+" "+C[I]}e.humanBytes=a;function u(v){if(!v)return"\u2014";var C=Math.floor(v/86400),I=Math.floor(v%86400/3600),V=Math.floor(v%3600/60);return C>0?C+"d "+(I<10?"0":"")+I+"h":I>0?I+"h "+(V<10?"0":"")+V+"m":V+"m"}e.humanDuration=u;function p(v){return v==null?"\u2014":v>=1e6?(v/1e6).toFixed(1)+"M":v>=1e3?(v/1e3).toFixed(1)+"K":String(v)}e.humanNum=p,e.queueTotal=function(v){return v?(v.waiting||0)+(v.active||0)+(v.delayed||0)+(v.failed||0):0},e.statusCount=function(v){if(!e.data||!e.data.repos)return 0;for(var C=e.data.repos.statusBreakdown||[],I=0;I0,zero:!V,title:String(q.getHours()).padStart(2,"0")+":00 \xB7 "+(I.error||0)+" 5xx, "+(I.warn||0)+" 4xx"}})},e.errorHoursPeak=function(){var v=e.errorStats&&e.errorStats.buckets||[];return v.reduce(function(C,I){return Math.max(C,(I.error||0)+(I.warn||0))},0)};function y(v){var C=v||[];return C.map(function(I,V){var q=C[V-1]||{},W=Object.assign({},I);return W.dailyRepositories=V?Math.max(0,(I.nbRepositories||0)-(q.nbRepositories||0)):0,W.dailyUsers=V?Math.max(0,(I.nbUsers||0)-(q.nbUsers||0)):0,W.dailyPageViews=V?Math.max(0,(I.nbPageViews||0)-(q.nbPageViews||0)):0,W})}function m(v){var C=v&&v.length?v[v.length-1]:{};return{repositories:C.dailyRepositories||0,users:C.dailyUsers||0,pageViews:C.dailyPageViews||0}}function b(v,C){if(!v||!v.length)return v;var I=new Date(v[v.length-1].date);if(isNaN(I))return v;var V={};v.forEach(function(ne){V[new Date(ne.date).toISOString().slice(0,10)]=ne});for(var q=[],W=C-1;W>=0;W--){var se=new Date(I.getTime()-W*864e5),Q=se.toISOString().slice(0,10);q.push(V[Q]||{date:se.toISOString(),_empty:!0,dailyPageViews:0,dailyRepositories:0,dailyUsers:0,nbUsers:0})}return q}var h={};e.historyMax=function(v){return h[v]||0};var w={};e.axisMax=function(v){var C=h[v]||0;if(C<=2)return 2;if(C<=10)return Math.ceil(C/2)*2;var I=Math.pow(10,Math.floor(Math.log10(C)));return Math.ceil(C/I)*I},e.historyBarH=function(v,C){return!v||!h[C]||!v[C]?0:Math.max(1,Math.round(v[C]/e.axisMax(C)*140))},e.historyRange=function(v){return{min:w[v],max:h[v]}};var A=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];e.historyLabel=function(v){if(!v||!v.date)return"";var C=new Date(v.date);return A[C.getUTCMonth()]+" "+C.getUTCDate()},e.historyHasMissing=function(){return!!(e.data&&e.data.history||[]).some(function(v){return v&&v._empty})},e.firstDataIndex=function(){for(var v=e.data&&e.data.history||[],C=0;C=I)return{lo:Q,hi:Q+2*W[se]}}return{lo:0,hi:e.axisMax("nbUsers")}},e.userStepPath=function(v){var C=e.data&&e.data.history||[],I=e.userAxis(),V=h.nbUsers?I.hi-I.lo:0,q=e.firstDataIndex();if(!V||q>=C.length)return"";for(var W=function(Ee){return(140-((Ee||0)-I.lo)/V*140).toFixed(2)},se=v?"M"+q+" 140":"",Q=q;Qh[I])&&(h[I]=C[I]),(w[I]==null||C[I] .meta-more"),o=[...e.querySelectorAll(":scope > .meta-item")];if(o.forEach(s=>{s.removeAttribute("data-meta-hidden")}),t&&(t.hidden=!0,t.textContent="",t.removeAttribute("title"),t.removeAttribute("aria-label")),!e.clientWidth)return;if(e.classList.add("is-fitting"),e.scrollWidth<=e.clientWidth+1){e.classList.remove("is-fitting");return}let i=[];for(let s=o.length-1;s>=0&&e.scrollWidth>e.clientWidth+1;s--)if(o[s].setAttribute("data-meta-hidden",""),i.unshift(o[s]),t){let r=i.map(a=>a.dataset.metaLabel||a.textContent.trim().replace(/\s+/g," "));t.hidden=!1,t.textContent="+"+i.length,t.title=r.join(" \xB7 "),t.setAttribute("aria-label",i.length+" more: "+r.join(", "))}e.classList.remove("is-fitting")}function vu(e,t){if(typeof document>"u"||typeof MutationObserver>"u"||!document.body)return;let o=!1,i=null,s=()=>{o=!1,i&&(document.querySelectorAll("[data-meta-fit]").forEach($m),i.takeRecords())},r=()=>{!o&&i&&(o=!0,e.timeout(s,30))};i=new MutationObserver(a=>{a.some(u=>!(u.target.closest&&u.target.closest(".meta-more")))&&r()}),i.observe(document.body,{childList:!0,subtree:!0,characterData:!0}),zn(()=>{i.disconnect(),i=null}),t(window,"resize",r),document.fonts?.ready&&document.fonts.ready.then(r),r()}var yu={name:"htmlDoc",props:["content","baseUrl","allowScripts"],setup(e){let t=vt(null);return on(()=>{let i=[t.value][0];i.classList.add("html-doc");function s(){i.innerHTML="";let r=e.content;if(typeof r!="string")return;let a=document.createElement("iframe");a.className="html-doc-frame",a.setAttribute("title","Rendered HTML document");let u=["allow-popups","allow-popups-to-escape-sandbox"];e.allowScripts&&u.push("allow-scripts","allow-forms","allow-modals"),a.setAttribute("sandbox",u.join(" ")),a.setAttribute("referrerpolicy","no-referrer"),i.appendChild(a);let p="";e.baseUrl&&(p=''),a.srcdoc=p+r}st(()=>e.content,s,{immediate:!0}),st(()=>e.baseUrl,s,{immediate:!0}),st(()=>e.allowScripts,s,{immediate:!0})}),()=>Oe("html-doc",{ref:t})}};var bu={name:"pdfviewer",props:["src"],setup(e){let t=vt(null);return on(()=>{let o=[t.value],i=400,s=[.5,.75,1,1.25,1.5,2,3],r=1e3,a=o[0];a.classList.add("pdf-viewer");let u=null,p=[],y=!1,m=null,b=1,h=0,w=1,A=0,N=0,R=612/792,v=0,C=null,I=new Map,V=0;function q(S){let O=I.get(S);O&&(O.cancelled=!0,O.task?.cancel?.(),I.delete(S));let H=S.querySelector("canvas");H&&(H.width=0,H.height=0),S.innerHTML="",delete S.dataset.state}let W=document.createElement("div");W.className="pdf-toolbar";let se=document.createElement("div");se.className="pdf-pages",se.tabIndex=0,se.setAttribute("aria-label","PDF pages"),a.appendChild(W),a.appendChild(se);function Q(S,O,H){let z=document.createElement("button");return z.type="button",z.className="pdf-toolbar-btn",z.title=O,z.setAttribute("aria-label",O),z.innerHTML='',z.addEventListener("click",H),z}let ne=Q("fa-chevron-up","Previous page",function(){rt(w-1)}),Ee=Q("fa-chevron-down","Next page",function(){rt(w+1)}),D=document.createElement("input");D.type="text",D.className="pdf-toolbar-page",D.setAttribute("aria-label","Page number"),D.title="Page number \u2014 type a page and press Enter",D.addEventListener("keydown",function(S){S.key==="Enter"&&(rt(parseInt(D.value,10)),D.blur())}),D.addEventListener("blur",function(){D.value=String(w)});let oe=document.createElement("span");oe.className="pdf-toolbar-count";let x=Q("fa-search-minus","Zoom out",function(){B(s[Math.max(0,ke()-1)])}),Ae=Q("fa-search-plus","Zoom in",function(){B(s[Math.min(s.length-1,ke()+1)])}),be=document.createElement("button");be.type="button",be.className="pdf-toolbar-btn pdf-toolbar-zoom",be.title="Reset zoom to fit the width",be.setAttribute("aria-label","Reset zoom to fit the width"),be.addEventListener("click",function(){B(1)}),W.appendChild(ne),W.appendChild(Ee);let le=document.createElement("span");le.className="pdf-toolbar-group",le.appendChild(D),le.appendChild(oe),W.appendChild(le);let fe=document.createElement("span");fe.className="pdf-toolbar-group pdf-toolbar-right",fe.appendChild(x),fe.appendChild(be),fe.appendChild(Ae),W.appendChild(fe);function ke(){let S=0;for(let O=0;O=S,be.textContent=b===1||!h?"Fit":Math.round(et()/(h*96/72)*100)+"%",x.disabled=ke()===0,Ae.disabled=ke()===s.length-1}function Xe(S){let O=p[S-1];O&&(se.scrollTop+=O.getBoundingClientRect().top-se.getBoundingClientRect().top)}function rt(S){if(!u||isNaN(S))return;let O=Math.min(Math.max(1,S),u.numPages);p[O-1]&&(Xe(O),w=O,A=O,N=Date.now()+800,Te(),X())}function at(){if(!p.length||Date.now(){}),C=null),m&&(clearTimeout(m),m=null),u&&(u.destroy(),u=null),p=[],w=1,se.innerHTML="",Te()}function wt(){se.innerHTML="";let S=document.createElement("div");S.className="pdf-viewer-error",S.textContent="This PDF could not be displayed.",se.appendChild(S)}function et(){let S=Math.max(120,se.clientWidth-24);return Math.round(Math.min(S,r)*b)}function We(S,O,H){let z=window.devicePixelRatio||1,Y=S.getViewport({scale:1}),te=parseFloat(O.style.width);if(!te)return;let J=S.getViewport({scale:te/Y.width*z}),Z=document.createElement("canvas");return Z.width=Math.floor(J.width),Z.height=Math.floor(J.height),Z.style.width=te+"px",Z.style.height=Math.floor(J.height/z)+"px",O.innerHTML="",O.appendChild(Z),O.style.height=Z.style.height,H.task=S.render({canvasContext:Z.getContext("2d"),viewport:J}),H.task.promise}function X(){if(!u)return;let S=v,O=se.getBoundingClientRect(),H=O.top-i,z=O.top+se.clientHeight+i,Y=p.map((J,Z)=>({slot:J,i:Z,rect:J.getBoundingClientRect()})).filter(J=>J.rect.top<=z&&J.rect.bottom>=H).sort((J,Z)=>Math.abs(J.rect.top-O.top)-Math.abs(Z.rect.top-O.top)).slice(0,6),te=new Set(Y.map(J=>J.slot));for(let J of I.keys())te.has(J)||q(J);for(let{slot:J,i:Z}of Y){if(J.dataset.state||V>=2)continue;let G={cancelled:!1,task:null};I.set(J,G),V++,J.dataset.state="rendering";let ge;u.getPage(Z+1).then(ae=>{if(ge=ae,!(G.cancelled||S!==v))return We(ge,J,G)}).then(()=>{G.cancelled||S!==v||(J.dataset.state="done",A&&Date.now(){!G.cancelled&&S===v&&(J.dataset.state="failed")}).finally(()=>{V--,ge?.cleanup?.(),u&&X()})}}function he(){y||(y=!0,window.requestAnimationFrame(function(){y=!1,at(),X()}))}function M(){let S=!1;function O(){S||(S=!0,X())}window.requestAnimationFrame(O),window.setTimeout(O,50)}function F(){v++,p.forEach(q);let S=et();p.forEach(function(O){delete O.dataset.state,O.innerHTML="",O.style.width=S+"px",O.style.height=Math.round(S/R)+"px"}),X()}function B(S){if(!u||!p.length||S===b)return;let O=w;b=S,Te(),F(),rt(O)}function K(){u&&(m&&clearTimeout(m),m=setTimeout(function(){m=null,u&&p.length&&F()},250))}function E(S){if(Qe(),!S)return;let O=v;C=pdfjsLib.getDocument({url:S,isEvalSupported:!1,standardFontDataUrl:"/script/external/pdf-standard-fonts/",cMapUrl:"/script/external/pdf-cmaps/",cMapPacked:!0}),C.promise.then(function(H){if(O!==v){H.destroy();return}return u=H,u.getPage(1).then(function(z){if(O!==v)return;let Y=z.getViewport({scale:1});Y.width&&Y.height&&(R=Y.width/Y.height),h=Y.width||0;let te=et();for(let J=1;J<=u.numPages;J++){let Z=document.createElement("div");Z.className="pdf-viewer-page",Z.style.width=te+"px",Z.style.height=Math.round(te/R)+"px",se.appendChild(Z),p.push(Z)}Te(),M()})}).catch(function(){O===v&&wt()})}se.addEventListener("scroll",he,{passive:!0}),$(window).on("resize",K),Te(),st(()=>e.src,E,{immediate:!0}),Kn(function(){se.removeEventListener("scroll",he),$(window).off("resize",K),Qe()})}),()=>Oe("pdfviewer",{ref:t})}};var Um={key:0,class:"quota-row quota-usage"},Fm={class:"quota-header"},Bm={class:"quota-label"},zm={class:"project-type-svg","aria-hidden":"true"},Hm=["href"],jm={key:0,class:"quota-percent"},Gm={key:1,class:"quota-unlimited-tag"},Wm={class:"quota-value"},Km={key:0},Ym=["aria-label","aria-valuenow","aria-valuemax","aria-valuetext"],Xm={key:1,class:"quota-remaining"},Jm={key:2,class:"quota-remaining quota-limit"};function wu(e,t){return e.quota?(l(),d("div",Um,[(l(),d(L,null,ie([{key:"repository",label:"Repositories",kind:"count",icon:"project-type-repo"},{key:"storage",label:"Storage",kind:"bytes",icon:"project-icon-storage"},{key:"file",label:"Files",kind:"count",icon:"project-icon-file"}],o=>n("div",{class:T(["quota-item","quota-"+e.quota[o.key].level]),key:o.key},[n("div",Fm,[n("span",Bm,[(l(),d("svg",zm,[n("use",{href:"#"+o.icon},null,8,Hm)])),g(c(o.label),1)]),e.quota[o.key].unlimited?f("v-if",!0):(l(),d("span",jm,c(e.quota[o.key].percent>0&&e.quota[o.key].percent<1?"<1":e.fmt.number(e.quota[o.key].percent,0))+"% used",1)),e.quota[o.key].unlimited?(l(),d("span",Gm,"Unlimited")):f("v-if",!0)]),n("div",Wm,[n("strong",null,c(e.formatAmount(e.quota[o.key].used,o.kind)),1),e.quota[o.key].unlimited?f("v-if",!0):(l(),d("span",Km," / "+c(e.formatAmount(e.quota[o.key].total,o.kind)),1))]),e.quota[o.key].unlimited?f("v-if",!0):(l(),d("div",{key:0,class:T(["quota-track","quota-"+e.quota[o.key].level]),role:"progressbar","aria-valuemin":"0","aria-label":o.label+" quota","aria-valuenow":Math.min(e.quota[o.key].used,e.quota[o.key].total),"aria-valuemax":e.quota[o.key].total,"aria-valuetext":e.fmt.number(e.quota[o.key].percent,0)+"% used"},[e.quota[o?.key].unlimited?f("v-if",!0):(l(),d("div",{key:0,class:"quota-fill",style:$e({width:e.quota[o.key].percent+"%"})},null,4))],10,Ym)),!e.quota[o.key].unlimited&&e.quota[o.key].used=e.quota[o.key].total?(l(),d("p",Jm,c(e.quota[o.key].used>e.quota[o.key].total?"Limit exceeded":"Limit reached"),1)):f("v-if",!0)],2)),64))])):f("v-if",!0)}var Qm={props:["quota","fmt"],setup(e){return{formatAmount:(t,o)=>o==="bytes"?e.fmt.humanFileSize(e.quota?.storage?.unit==="bytes"?t*8:t).replace(/([a-zA-Z]+)$/," $1"):e.fmt.number(t)}},render:wu},Zm=new Set(ve),Eu=e=>e?.querySelectorAll("pre code.language-diff, pre code.lang-diff").forEach(t=>{if(t.querySelector(".md-diff-line"))return;let o=t.innerHTML.replace(/\n$/,"").split(` +`);t.innerHTML=o.map(i=>{let s=i.replace(/^(<[^>]+>)+/,"").charAt(0),r=i.startsWith("@@")?"hunk":s==="+"?"add":s==="-"?"remove":"";return`${i||" "}`}).join(` +`)}),ku=(e,t=0)=>{let o=(String(e).slice(t).match(/^[ \t]*/)[0]||"").replace(/\t/g," ").length;return Math.min(t+o+4,24)},bs=e=>{e?.closest?.(".reviewer-preview")&&e.querySelectorAll("pre code").forEach(t=>{let o=t.querySelectorAll(".md-diff-line");if(o.length){o.forEach(s=>{s.classList.contains("is-hunk")||s.style.setProperty("--hang",ku(s.textContent,1)+"ch")});return}if(t.querySelector(".code-line"))return;let i=[];t.innerHTML=t.innerHTML.replace(/\n$/,"").split(` +`).map(s=>{let r=i.join("");s.replace(/<\/?span\b[^>]*>/g,u=>(u.startsWith("]+>/g,"");return`${r}${s||" "}${"".repeat(i.length)}`}).join(` +`)})},Su={props:["content","terms","options"],setup(e){let t=vt(null),o=()=>{t.value.innerHTML=renderMD(e.content||"",window.location.pathname+"/../"),Eu(t.value),bs(t.value)};return on(()=>{o(),st(()=>[e.content,e.terms,e.options],o,{deep:!0})}),()=>Oe("markdown",{ref:t})}},xm={props:["file","terms","options"],setup(e){let t=vt(null),o=()=>ot(()=>{t.value?.querySelectorAll("pre code").forEach(i=>window.Prism?.highlightElement(i)),Eu(t.value),bs(t.value)});return on(o),st(()=>[e.file?.content,e.terms,e.options],o,{deep:!0}),()=>{let i=e.file||{},s=(i.filename||"").split(".").pop().toLowerCase();if(["md","markdown"].includes(s)||i.language==="Markdown")return Oe("gist-file",{ref:t},Oe(Su,{content:i.content,terms:e.terms,options:e.options}));let r={js:"javascript",jsx:"javascript",ts:"javascript",typescript:"javascript",py:"python",html:"markup",xml:"markup",svg:"markup",sh:"bash"},a=(i.language||s||"none").toLowerCase();return Oe("gist-file",{ref:t},Oe("pre",{class:"line-numbers"},Oe("code",{class:"language-"+(r[a]||a),key:i.content},i.content||"")))}}},eg=e=>e?.querySelectorAll(".nb-input pre").forEach(t=>{if(t.parentElement?.classList.contains("nb-code-scroll"))return;let o=document.createElement("div");o.className="nb-code-scroll",t.replaceWith(o),o.appendChild(t);let i=()=>{let s=t.scrollWidth-t.clientWidth>1;if(o.classList.toggle("is-overflowing",s),o.classList.toggle("is-at-end",s&&t.scrollLeft+t.clientWidth>=t.scrollWidth-2),!s)return;let r=t.clientWidth-16,a=Math.max(24,r*t.clientWidth/t.scrollWidth);o.style.setProperty("--thumb-w",a+"px"),o.style.setProperty("--thumb-x",(r-a)*t.scrollLeft/(t.scrollWidth-t.clientWidth)+"px")};t.addEventListener("scroll",i,{passive:!0}),window.ResizeObserver?new ResizeObserver(i).observe(t):i(),i()}),tg={props:["file","content"],setup(e){let t=vt(null),o=0,i,s=async()=>{let r=++o;i?.abort(),i=new AbortController;try{let a=e.content?JSON.parse(e.content):await fetch(e.file?.download_url||e.file,{signal:i.signal}).then(u=>{if(!u.ok)throw Error("Notebook request failed");return u.json()});if(await Ln("notebook"),r!==o)return;t.value.innerHTML=Oi(DOMPurify.sanitize(nb.parse(a).render())),t.value.querySelectorAll("pre code").forEach(u=>window.Prism?.highlightElement(u)),eg(t.value)}catch(a){r===o&&a.name!=="AbortError"&&(t.value.textContent="Unable to render the notebook.")}};return on(()=>{s(),st(()=>[e.file,e.content],s)}),Kn(()=>{o++,i?.abort()}),()=>Oe("notebook",{ref:t})}},ng={props:["stats"],setup(e){return()=>{let t=Object.entries(e.stats||{}).filter(([,i])=>i.code),o=t.reduce((i,[,s])=>i+s.code,0);return Oe("loc",t.map(([i,s])=>Oe("div",{class:"lang",title:`${i}: ${s.code.toLocaleString()} lines`,style:{width:s.code*100/o+"%",background:langColors[i]}})))}}},Nu={Markdown:Su,GistFile:xm,Notebook:tg,Loc:ng,HtmlDoc:yu,QuotaUsage:Qm,Pdfviewer:_l(async()=>(await Ln("pdf"),pdfjsLib.GlobalWorkerOptions.workerSrc="/script/external/pdf.worker.js",bu))},Ru={async mounted(e,{value:t}){e._editorValue=t;try{if(await qs(),e._editorDisposed)return;let o=e._editorValue,i=ace.edit(e);e._editor=i,i.setValue(String(o.content??""),-1),Cu(e,o.options),e._editorCleanup=o.options?.onLoad?.(i)}catch(o){e._editorDisposed||(e.textContent=o.message)}},updated(e,{value:t}){e._editorValue=t,e._editor&&(e._editor.getValue()!==String(t.content??"")&&e._editor.setValue(String(t.content??""),-1),Cu(e,t.options))},beforeUnmount(e){e._editorDisposed=!0,e._editorCleanup?.(),e._editor?.destroy()}};function Cu(e,t={}){let o=Zm.has(t.mode)?t.mode:"text";e._editor.session.setMode("ace/mode/"+o),t.theme&&e._editor.setTheme("ace/theme/"+t.theme),e._editor.setReadOnly(t.readOnly!==!1)}var Du={mounted(e){if(!window.IntersectionObserver)return;let t=[...e.querySelectorAll('a[href^="#"]')],o=new Set,i=new IntersectionObserver(s=>{s.forEach(a=>a.isIntersecting?o.add(a.target.id):o.delete(a.target.id));let r=t.find(a=>o.has(a.hash.slice(1)));r&&t.forEach(a=>a.classList.toggle("active",a===r))},{rootMargin:"-20% 0px -60% 0px",threshold:0});ot(()=>{t.forEach(s=>{let r=document.getElementById(s.hash.slice(1));r&&i.observe(r)}),t[0]&&!t.some(s=>s.classList.contains("active"))&&t[0].classList.add("active")}),e._observer=i},beforeUnmount(e){e._observer?.disconnect()}};var Qr=(e,t,o)=>{let i=e instanceof RegExp?Au(e,o):e,s=t instanceof RegExp?Au(t,o):t,r=i!==null&&s!=null&&og(i,s,o);return r&&{start:r[0],end:r[1],pre:o.slice(0,r[0]),body:o.slice(r[0]+i.length,r[1]),post:o.slice(r[1]+s.length)}},Au=(e,t)=>{let o=t.match(e);return o?o[0]:null},og=(e,t,o)=>{let i,s,r,a,u,p=o.indexOf(e),y=o.indexOf(t,p+1),m=p;if(p>=0&&y>0){if(e===t)return[p,y];for(i=[],r=o.length;m>=0&&!u;){if(m===p)i.push(m),p=o.indexOf(e,m+1);else if(i.length===1){let b=i.pop();b!==void 0&&(u=[b,y])}else s=i.pop(),s!==void 0&&s=0?p:y}i.length&&a!==void 0&&(u=[r,a])}return u};var Tu="\0SLASH"+Math.random()+"\0",Pu="\0OPEN"+Math.random()+"\0",ta="\0CLOSE"+Math.random()+"\0",Ou="\0COMMA"+Math.random()+"\0",Iu="\0PERIOD"+Math.random()+"\0",sg=new RegExp(Tu,"g"),ig=new RegExp(Pu,"g"),rg=new RegExp(ta,"g"),ag=new RegExp(Ou,"g"),lg=new RegExp(Iu,"g"),dg=/\\\\/g,ug=/\\{/g,cg=/\\}/g,pg=/\\,/g,fg=/\\\./g,hg=1e5,mg=4e6,gg=1e3,vg=1e3;function Zr(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function yg(e){return e.replace(dg,Tu).replace(ug,Pu).replace(cg,ta).replace(pg,Ou).replace(fg,Iu)}function bg(e){return e.replace(sg,"\\").replace(ig,"{").replace(rg,"}").replace(ag,",").replace(lg,".")}function xr(e,t){for(let o=0;o=t}function ws(e,t,o,i,s,r){let a=[],u=0;for(let p=0;p=i)return a;let m=e[p]+t+o[y];if(!(r&&!m)){if(u+m.length>s)return a;a.push(m),u+=m.length}}return a}function Ng(e,t,o,i){let s=e.split(/\.\./),r=[];if(s[0]===void 0||s[1]===void 0)return r;let a=Zr(s[0]),u=Zr(s[1]),p=Math.max(s[0].length,s[1].length),y=s.length===3&&s[2]!==void 0?Math.max(Math.abs(Zr(s[2])),1):1,m=Eg;u0){let v=new Array(R+1).join("0");A<0?N="-"+v+N.slice(1):N=v+N}}if(w+N.length>i)break;r.push(N),w+=N.length}return r}function ea(e,t,o,i,s,r,a){if(s>i)return[e];let u=[""],p=0,y=!1,m=!0;for(;;){let b=Qr("{","}",e);if(!b)return ws(u,e,[""],t,o,y);let h=b.pre;if(/\$$/.test(h)){if(u=ws(u,h+"{"+b.body+"}",[""],t,o,y&&!b.post.length),m=!1,!b.post.length)break;e=b.post;continue}let w=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(b.body),A=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(b.body),N=w||A,R=b.body.indexOf(",")>=0;if(!N&&!R){if(p=t||V+Q.length>o)break e;v.push(Q),V+=Q.length}}}}if(u=ws(u,h,v,t,o,y&&!b.post.length),!b.post.length)break;e=b.post}return u}var Rg={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}"],"[:alpha:]":["\\p{L}\\p{Nl}"],"[:ascii:]":["\\x00-\\x7f"],"[:blank:]":["\\p{Zs}\\t"],"[:cntrl:]":["\\p{Cc}"],"[:digit:]":["\\p{Nd}"],"[:graph:]":["\\p{Z}\\p{C}",!0],"[:lower:]":["\\p{Ll}"],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}\\p{S}"],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f"],"[:upper:]":["\\p{Lu}"],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}"],"[:xdigit:]":["A-Fa-f0-9"]},ks=e=>e.replace(/[[\]\\-]/g,"\\$&"),na=/$./,Mu=(e,t,o=!1,i)=>{let s=v=>{let C=i?v.normalize(i):v;return[...C].length===1?C:v},r=t;if(e.charAt(r)!=="[")throw new Error("not in a brace expression");let a=[],u=[],p=r+1,y=!1,m=!1,b=!1,h=r,w="";e:for(;pw.codePointAt(0)?a.push(ks(w)+"-"+ks(C)):C===w&&a.push(ks(C)),w="",p+=v.length;continue}if(e.startsWith("-]",p+v.length)){a.push(ks(C+"-")),p+=v.length+1;continue}if(e.startsWith("-",p+v.length)){w=C,p+=v.length+1;continue}a.push(ks(C)),p+=v.length}if(h({t:"lit",ch:e}),Ag=e=>e.replace(/[\\^$.*+?()[\]{}|/]/g,"\\$&"),Lu=e=>new RegExp(`^${Ag(e)}$`,"iu"),Ii=new Map,Uu=e=>{let t=Ii.get(e);return t||(t=Lu(e),Ii.size>=1e3&&Ii.clear(),Ii.set(e,t)),t},da=(e,t)=>{if(t===e.ch)return!0;if(!e.re)return!1;let o=t.charCodeAt(0);if(o>=128)return e.re.test(t);let i=e.ascii??(e.ascii=new Uint8Array(128));return i[o]||(i[o]=e.re.test(t)?1:2),i[o]===1},Tg=(e,t,o,i)=>{let s=[];for(let r=0;r{let t=new Map,o=[];return e.forEach((i,s)=>{i.t==="open"?o.push(s):i.t==="close"&&o.length&&t.set(o.pop(),s)}),t},Fu=(e,t,o,i,s)=>{let r=[],a=[r];for(let u=o;u{let o=[],i="",s=()=>{for(let r of i.normalize(t))o.push(xn(r));i=""};for(let r of e){if(r.t==="lit"){i+=r.ch;continue}s(),o.push(r.t==="ext"?{...r,alts:r.alts.map(a=>Bu(a,t))}:r)}return s(),o},Og=(e,t)=>{let o=1,i=u=>({t:"split",id:o++,out:u}),s=(u,p)=>u.reduceRight((y,m)=>r(m,y),p),r=(u,p)=>{switch(u.t){case"lit":let h=t?Uu(u.ch):void 0;return{t:"lit",id:o++,ch:u.ch,re:h,next:p};case"any":case"star":return{t:u.t,id:o++,next:p};case"class":return{t:"class",id:o++,re:u.re,next:p}}let y=h=>u.alts.map(w=>s(w,h));switch(u.type){case"@":return i(y(p));case"?":return i([p,...y(p)]);case"!":return{t:"neg",id:o++,sub:i(y(oa)),next:p}}let m=i([]),b=i(y(m));return m.out.push(p,b),u.type==="*"?m:b};return[s(e,oa),o]},Ig=e=>{let t=[],o=new Set,i=r=>r.t==="match"?"match":String(r.id),s=(r,a)=>{if(r.t==="match"||o.has(r))return;o.add(r);let u=p=>t.push(`${a}${r.id}: ${p}`);switch(r.t){case"split":u(`split -> ${r.out.map(i).join(", ")}`);for(let p of r.out)s(p,a);return;case"neg":return u(`!(${i(r.sub)}) -> ${i(r.next)}`),s(r.sub,a+" "),s(r.next,a);case"lit":u(`${JSON.stringify(r.ch)} -> ${i(r.next)}`);break;case"class":u(`${r.re} -> ${i(r.next)}`);break;default:u(`${r.t==="any"?"?":"*"} -> ${i(r.next)}`)}s(r.next,a)};return s(e,""),[`start -> ${i(e)}`,...t].join(` +`)},sa=class{constructor(t){Je(this,"gen");Je(this,"threads",[]);Je(this,"match",!1);Je(this,"runs",[]);Je(this,"ids",[]);this.gen=t}get dead(){return!this.threads.length&&!this.match&&!this.runs.length}},zu=(e,t)=>e.ids.length!==t.ids.length||e.runs.length!==t.runs.length||e.ids.some((o,i)=>o!==t.ids[i])?!1:e.runs.every(o=>t.runs.some(i=>i.neg===o.neg&&zu(i.state,o.state))),Vu=e=>({has:new Float64Array(e),seen:new Float64Array(e),gen:0}),eo,On,ia,ra,Es=class{constructor(t,o,i){Ve(this,On);Je(this,"dots");Je(this,"dotStart");Ve(this,eo);this.dots=t,this.dotStart=o,Ue(this,eo,i)}state(){return new sa(++re(this,eo).gen)}done(t){return t.ids=t.threads.map(o=>o.id).sort((o,i)=>o-i),t.match&&t.ids.unshift(oa.id),t}restricted(t,o){return o&&(this.dots||this.dotStart&&t===0)}add(t,o,i,s){switch(o.t){case"split":if(!qe(this,On,ia).call(this,t,o))return;for(let a of o.out)this.add(t,a,i,s);return;case"neg":if(!qe(this,On,ia).call(this,t,o))return;let r=this.state();return this.add(r,o.sub,i,!1),this.done(r),this.addRun(t,{t:"run",neg:o,state:r},i,s);case"star":if(this.restricted(i,s))return;qe(this,On,ra).call(this,t,o)&&this.add(t,o.next,i,s);return;case"match":t.match=!0;return;default:qe(this,On,ra).call(this,t,o)}}addRun(t,o,i,s){for(let r of t.runs)if(r.neg===o.neg&&zu(r.state,o.state))return;t.runs.push(o),o.state.match||this.add(t,o.neg.next,i,s)}step(t,o,i,s){let r=this.state();for(let a of t.threads)switch(a.t){case"lit":da(a,o)&&this.add(r,a.next,i+1,s);break;case"any":this.restricted(i,s)||this.add(r,a.next,i+1,s);break;case"class":!this.restricted(i,s)&&a.re.test(o)&&this.add(r,a.next,i+1,s);break;case"star":this.restricted(i,s)||this.add(r,a,i+1,s)}if(!this.restricted(i,s))for(let a of t.runs){if(a.state.dead){this.addRun(r,a,i+1,s);continue}let u=this.step(a.state,o,i,!1);this.addRun(r,{t:"run",neg:a.neg,state:u},i+1,s)}return this.done(r)}};eo=new WeakMap,On=new WeakSet,ia=function(t,o){let{seen:i}=re(this,eo);return i[o.id]===t.gen?!1:(i[o.id]=t.gen,!0)},ra=function(t,o){let{has:i}=re(this,eo);return i[o.id]===t.gen?!1:(i[o.id]=t.gen,t.threads.push(o),!0)};var Hu=e=>{let t=e.ids.join();if(!e.runs.length)return t;let o=e.runs.map(i=>`${i.neg.id}(${Hu(i.state)})`);return`${t}|${o.sort().join("|")}`},_g=1<<18,Ao,To,Rn,to,Dn,An,Tn,Kt,la,Mi,ju,aa=class{constructor(t,o){Ve(this,Kt);Ve(this,Ao);Ve(this,To,new Map);Ve(this,Rn,0);Ve(this,to);Ve(this,Dn);Ve(this,An);Ve(this,Tn);Ue(this,Ao,t),Ue(this,An,new Es(!1,!1,o)),Ue(this,Tn,new Es(!1,!0,o))}start(t){if(t){if(re(this,Dn))return re(this,Dn);let i=re(this,Tn).state();return re(this,Tn).add(i,re(this,Ao),0,!0),Ue(this,Dn,qe(this,Kt,la).call(this,re(this,Tn).done(i)))}if(re(this,to))return re(this,to);let o=re(this,An).state();return re(this,An).add(o,re(this,Ao),0,!0),Ue(this,to,qe(this,Kt,Mi).call(this,re(this,An).done(o)))}next(t,o){let i=o.charCodeAt(0),s=i<128?void 0:t.next.get(o);if(s)return s;let r=t===re(this,Dn)?qe(this,Kt,Mi).call(this,re(this,Tn).step(t.state,o,0,!0)):qe(this,Kt,Mi).call(this,re(this,An).step(t.state,o,1,!0));return i<128?(t.ascii||(t.ascii=new Array(128),Ue(this,Rn,re(this,Rn)+128)),t.ascii[i]=r):t.next.set(o,r),Pa(this,Rn)._++,r}};Ao=new WeakMap,To=new WeakMap,Rn=new WeakMap,to=new WeakMap,Dn=new WeakMap,An=new WeakMap,Tn=new WeakMap,Kt=new WeakSet,la=function(t){return{state:t,match:t.match,dead:t.dead,next:new Map}},Mi=function(t){let o=Hu(t),i=re(this,To).get(o);if(i)return i;re(this,Rn)>_g&&qe(this,Kt,ju).call(this);let s=qe(this,Kt,la).call(this,t);return re(this,To).set(o,s),Ue(this,Rn,re(this,Rn)+(o.length+1)),s},ju=function(){re(this,To).clear(),Ue(this,Rn,0),Ue(this,to,void 0),Ue(this,Dn,void 0)};var Mg=e=>{let t=[];for(let o=e;o.t!=="match";o=o.next){if(o.t==="split"||o.t==="neg")return;t.push(o)}return t},Vg=(e,t,o,i)=>{let s=0,r=o,a=-1,u=0;for(;r{let t=0,o=0;for(let i of e){let[s,r]=qg(i);t+=s,o+=r}return[t,o]},qg=e=>{if(e.t==="star")return[0,1/0];if(e.t!=="ext")return[1,1];if(e.type==="!")return[0,1/0];let t=e.alts.map(Gu),o=Math.min(...t.map(r=>r[0])),i=Math.max(...t.map(r=>r[1])),s=i===0?0:1/0;return e.type==="@"?[o,i]:e.type==="?"?[0,i]:e.type==="*"?[0,s]:[o,s]},qu=(e,t,o)=>{for(let i=0;iLg.test(e)?[...e]:e,$u=e=>{if(e.includes("/"))throw new Error("can only match a single path portion, got: "+e)},Pn,Po,no,Vi,oo,Ns,qi,so,Rs,Ds,As,wn,un,Oo,Io,Ts,$i,Wt,io,Cs,Ss=class{constructor(t,o={}){Ve(this,io);Je(this,"pattern");Je(this,"options");Ve(this,Pn);Ve(this,Po);Ve(this,no);Ve(this,Vi);Ve(this,oo);Ve(this,Ns,!1);Ve(this,qi);Ve(this,so);Ve(this,Rs,!1);Ve(this,Ds,0);Ve(this,As,1/0);Ve(this,wn,[]);Ve(this,un,[]);Ve(this,Oo);Ve(this,Io);Ve(this,Ts,!1);Ve(this,$i);Ve(this,Wt);if(t.includes("/"))throw new Error("can only match a single path portion, got pattern: "+t);this.pattern=t,this.options=o;let{nocase:i=!1,noext:s=!1,normalize:r}=o;Ue(this,Wt,r===!0?"NFC":r||void 0);let a=/^[?*+@]\(\)$/.test(t),u=Tg(t,i,s||a,re(this,Wt)),[p]=Fu(u,Pg(u),0,u.length,!0);re(this,Wt)&&(p=Bu(p,re(this,Wt)));let[y,m]=Og(p,i);if(Ue(this,Pn,y),Ue(this,Po,m),p.every(b=>b.t==="lit"))Ue(this,oo,p.map(b=>b.ch).join("")),Ue(this,Ns,i);else{let b=A=>A.t!=="lit"?void 0:i?{ch:A.ch,re:Uu(A.ch)}:{ch:A.ch};for(let A of p){let N=b(A);if(!N)break;re(this,wn).push(N)}for(let A=p.length-1;A>=0;A--){let N=b(p[A]);if(!N)break;re(this,un).unshift(N)}Ue(this,Ts,!!(re(this,wn).length||re(this,un).length)),i||(Ue(this,Oo,re(this,wn).map(A=>A.ch).join("")),Ue(this,Io,re(this,un).map(A=>A.ch).join(""))),Ue(this,so,Mg(re(this,Pn))?.slice(re(this,wn).length,-re(this,un).length||void 0)),Ue(this,Rs,!!re(this,so)?.every(A=>A.t==="star"||A.t==="any"));let[h,w]=Gu(p);Ue(this,Ds,h),Ue(this,As,w)}}test(t){return re(this,Wt)?($u(t),qe(this,io,Cs).call(this,t.normalize(re(this,Wt)))):$g.test(t)?($u(t),qe(this,io,Cs).call(this,t,[...t])):qe(this,io,Cs).call(this,t,t)}testUnchecked(t){return qe(this,io,Cs).call(this,re(this,Wt)?t.normalize(re(this,Wt)):t)}toString(){return Ig(re(this,Pn))}};Pn=new WeakMap,Po=new WeakMap,no=new WeakMap,Vi=new WeakMap,oo=new WeakMap,Ns=new WeakMap,qi=new WeakMap,so=new WeakMap,Rs=new WeakMap,Ds=new WeakMap,As=new WeakMap,wn=new WeakMap,un=new WeakMap,Oo=new WeakMap,Io=new WeakMap,Ts=new WeakMap,$i=new WeakMap,Wt=new WeakMap,io=new WeakSet,Cs=function(t,o){if(re(this,oo)!==void 0)return re(this,Ns)?(re(this,qi)??Ue(this,qi,Lu(re(this,oo)))).test(t):t===re(this,oo);let i=re(this,Ds),s=re(this,As);if(o===void 0){let m=t.length,b=m+1>>1;if(ms)return!1;(bs)&&(o=_i(t))}if(o!==void 0&&(o.lengths))return!1;let r=re(this,wn).length;if(re(this,Ts))if(re(this,Oo)!==void 0&&re(this,Io)!==void 0){if(!t.startsWith(re(this,Oo))||!t.endsWith(re(this,Io)))return!1}else{o??(o=_i(t));let m=o.length-re(this,un).length;if(!qu(re(this,wn),o,0)||!qu(re(this,un),o,m))return!1}let a=!this.options.dot&&t.startsWith(".");if(re(this,so)){if(t==="."||t===".."||a&&!r)return!1;if(re(this,Rs))return!0;o??(o=_i(t));let m=o.length-re(this,un).length;return Vg(re(this,so),o,r,m)}if(o??(o=_i(t)),t==="."||t===".."){re(this,no)??Ue(this,no,Vu(re(this,Po)));let m=re(this,Vi)??Ue(this,Vi,new Es(!0,!1,re(this,no))),b=m.state();m.add(b,re(this,Pn),0,!0);let h=m.done(b);for(let w=0;w{if(typeof e!="string")throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")};var In=(e,{windowsPathsNoEscape:t=!1,magicalBraces:o=!1}={})=>o?t?e.replace(/[?*()[\]{}]/g,"[$&]"):e.replace(/[?*()[\]\\{}]/g,"\\$&"):t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&");var ro=(e,{windowsPathsNoEscape:t=!1,magicalBraces:o=!0}={})=>o?t?e.replace(/\[([^/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\])\]/g,"$1$2").replace(/\\([^/])/g,"$1"):t?e.replace(/\[([^/\\{}])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^/\\{}])\]/g,"$1$2").replace(/\\([^/{}])/g,"$1");var Mt=(e,t,o={})=>(Ps(t),!o.nocomment&&t.charAt(0)==="#"?!1:Fg(t,o).match(e)),_o=new Map,Ug=256,Fg=(e,t)=>{let o=e+"\0"+JSON.stringify(t),i=_o.get(o);return i?_o.delete(o):(i=new ao(e,{...t}),_o.size>=Ug&&_o.delete(_o.keys().next().value)),_o.set(o,i),i},Qu=typeof process=="object"&&process?process.env?.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",Wu={win32:{sep:"\\"},posix:{sep:"/"}},Bg=Qu==="win32"?Wu.win32.sep:Wu.posix.sep;Mt.sep=Bg;var ft=Symbol("globstar **");Mt.GLOBSTAR=ft;var zg=(e,t={})=>o=>Mt(o,e,t);Mt.filter=zg;var kn=(e,t={})=>Object.assign({},e,t),Hg=e=>{if(!e||typeof e!="object"||!Object.keys(e).length)return Mt;let t=Mt;return Object.assign((i,s,r={})=>t(i,s,kn(e,r)),{Minimatch:class extends t.Minimatch{constructor(s,r={}){super(s,kn(e,r))}static defaults(s){return t.defaults(kn(e,s)).Minimatch}},unescape:(i,s={})=>t.unescape(i,kn(e,s)),escape:(i,s={})=>t.escape(i,kn(e,s)),filter:(i,s={})=>t.filter(i,kn(e,s)),defaults:i=>t.defaults(kn(e,i)),braceExpand:(i,s={})=>t.braceExpand(i,kn(e,s)),match:(i,s,r={})=>t.match(i,s,kn(e,r)),sep:t.sep,GLOBSTAR:ft})};Mt.defaults=Hg;var Zu=(e,t={})=>(Ps(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:_u(e,{max:t.braceExpandMax}));Mt.braceExpand=Zu;var jg=(e,t,o={})=>{let i=new ao(t,o);return e=e.filter(s=>i.match(s)),i.options.nonull&&!e.length&&e.push(t),e};Mt.match=jg;var Ku=/[?*]|[+@!]\(.*?\)|\[|\]/,xu=(e,t)=>{let o=t+1;(e.charAt(o)==="!"||e.charAt(o)==="^")&&o++;let i=!1;for(;o{if(!t&&(e==="+()"||e==="@()"))return e;let o="";for(let i=0;i{if(/^[?*+@]\(\)$/.test(e)||e.includes("[:"))return!1;let t=0;for(let o=0;otypeof e=="string"?t===e:t!==""&&e.testUnchecked(t),Xu=(e,t,o,i,s)=>_n(e,t)?o:i!==void 0&&_n(e,i)?s:-1,ha=e=>e==="."||e==="..",ca=e=>typeof e=="string"&&/^[a-z]:$/i.test(e),Ui=e=>typeof e=="string"&&/^unc$/i.test(e),pa=e=>{if(e[0]!==""||e[1]!=="")return-1;let t=e[2]!=="?"?2:Ui(e[3])?4:-1,o=e[t],i=e[t+1];return t!==-1&&o!==void 0&&o!==""&&o!==ft&&i!==void 0&&i!==""&&i!==ft?t:-1},Li=(e,t)=>!ha(e)&&(t||!e.startsWith(".")),Os=(e,t,o,i,s)=>{for(let r=t;r=o||Bi(e.charCodeAt(u),s))return!0}let a=ma(e,r,s);if(a===-1)return!1;for(r=a+1;rt==="/"?e===47:t==="\\"?e===92:e===47||e===92,ma=(e,t,o)=>{if(o!=="both")return e.indexOf(o,t);let i=e.indexOf("/",t),s=e.indexOf("\\",t);return i===-1?s:s===-1?i:Math.min(i,s)},Ju=(e,t,o)=>o!=="both"?e.lastIndexOf(o,t):Math.max(e.lastIndexOf("/",t),e.lastIndexOf("\\",t)),fa={},Mn,Vo,Vn,Cn,qo,$o,qn,_s,Lo,Ms,Le,Fi,Is,ec,tc,nc,oc,sc,ic,ga,rc,ac,va,Mo,ya,ao=class{constructor(t,o={}){Ve(this,Le);Je(this,"options");Je(this,"set");Je(this,"pattern");Je(this,"windowsPathsNoEscape");Je(this,"nonegate");Je(this,"negate");Je(this,"comment");Je(this,"empty");Je(this,"preserveMultipleSlashes");Je(this,"partial");Je(this,"globSet");Je(this,"globParts");Je(this,"nocase");Je(this,"isWindows");Je(this,"platform");Je(this,"windowsNoMagicRoot");Je(this,"maxGlobstarRecursion");Ve(this,Mn);Ve(this,Vo);Ve(this,Vn);Ve(this,Cn);Ve(this,qo,[]);Ve(this,$o,[]);Ve(this,qn,[]);Ve(this,_s,new Map);Ve(this,Lo,!1);Ve(this,Ms,new WeakMap);Ps(t),o=o||{},this.options=o,this.maxGlobstarRecursion=o.maxGlobstarRecursion??200,this.pattern=t,this.platform=o.platform||Qu,this.isWindows=this.platform==="win32";let i="allowWindowsEscape";this.windowsPathsNoEscape=!!o.windowsPathsNoEscape||o[i]===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!o.preserveMultipleSlashes,this.negate=!1,this.nonegate=!!o.nonegate,this.comment=!1,this.empty=!1,this.partial=!!o.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=o.windowsNoMagicRoot!==void 0?o.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],Ue(this,Mn,!this.preserveMultipleSlashes),Ue(this,Vn,(o.optimizationLevel??1)>=2);let s=o.normalize;Ue(this,Cn,s===!0?"NFC":s||void 0),this.make();let r=this.set.map(a=>qe(this,Le,Is).call(this,a));Ue(this,qn,this.set.map((a,u)=>re(this,Mn)&&a.length-1>r[u])),Ue(this,qo,this.set.map((a,u)=>{let p=re(this,qn)[u]?a.length-1:a.length,y=a.slice(r[u]+1,p).filter(m=>typeof m=="string"&&!!m);return[...new Set(y)]})),Ue(this,Vo,re(this,qo).some(a=>a.length)),Ue(this,$o,this.set.map((a,u)=>{let[p,y,m]=a;if(re(this,qn)[u]&&a.length===2&&p===ft&&y!==ft)return"tail";if(re(this,qn)[u]&&o.matchBase&&a.length===1&&p!==ft&&p!=="")return"base";if(!(!re(this,Mn)||r[u]!==-1)){if(a.length===3&&p===ft&&m===ft&&y!==ft&&y!==""&&this.maxGlobstarRecursion>0)return"mid";if(a.length===2&&y===ft&&p!==ft&&p!=="")return"head"}}))}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let o of t)if(typeof o!="string")return!0;return!1}make(){let t=this.pattern,o=this.options;if(!o.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())];let i=this.globSet.map(r=>qe(this,Le,ya).call(this,r));this.globParts=this.preprocess(i),Ue(this,Lo,!0);let s=this.globParts.map((r,a,u)=>{if(this.isWindows&&this.windowsNoMagicRoot){let p=r[2]==="?"&&Ui(r[3])?6:4,y=r[0]===""&&r[1]===""&&(r[2]==="?"||!Ku.test(r[2]))&&r.slice(3,p).every(b=>!Ku.test(b)),m=/^[a-z]:/i.test(r[0]);if(y)return[...r.slice(0,p).map(b=>qe(this,Le,Fi).call(this,b)),...r.slice(p).map(b=>this.parse(b))];if(m)return[qe(this,Le,Fi).call(this,r[0]),...r.slice(1).map(b=>this.parse(b))]}return r.map(p=>this.parse(p))});if(this.set=s.filter(r=>r.indexOf(!1)===-1),this.isWindows)for(let r=0;r{for(let u=0;ui.length));for(let i=0;i{if(!(a[i]instanceof Ss||a[i]===fa)||!Wg(this.globParts[u][i]))return;let p=[...this.globParts[u]];p[i]="";let y=`${a.length}/${p.join("/")}`,m=s.get(y);m?m.push(u):s.set(y,[u])});let r=new Set;for(let a of s.values()){if(a.length<2)continue;let[u,...p]=a,m=`@(${a.map(b=>this.globParts[b][i]).join("|")})`;this.globParts[u][i]=m,this.set[u][i]=this.parse(m);for(let b of p)r.add(b)}r.size&&(t=!0,this.set=this.set.filter((a,u)=>!r.has(u)),this.globParts=this.globParts.filter((a,u)=>!r.has(u)))}}}preprocess(t){if(this.options.noglobstar)for(let i of t)for(let s=0;s=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):o>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(o=>{let i=-1;for(;(i=o.indexOf("**",i+1))!==-1;){let s=i;for(;o[s+1]==="**";)s++;s!==i&&o.splice(i,s-i)}return o})}levelOneOptimize(t){return t.map(o=>{let i=qe(this,Le,Is).call(this,o)+1;return o=o.reduce((s,r)=>{let a=s[s.length-1];return r==="**"&&a==="**"?s:r===".."&&s.length>i&&a&&a!==".."&&a!=="."&&a!=="**"?(s.pop(),s):(s.push(r),s)},[]),o.length===0?[""]:o})}firstPhasePreProcess(t){let{braceExpandMax:o=1e5}=this.options,i=!1;do{i=!1;for(let s of t){let r=-1;for(;(r=s.indexOf("**",r+1))!==-1;){let p=r;for(;s[p+1]==="**";)p++;p>r&&s.splice(r+1,p-r);let y=s[r+1],m=s[r+2],b=s[r+3];if(y!==".."||!m||m==="."||m===".."||!b||b==="."||b===".."||t.length>=o)continue;i=!0,s.splice(r,1);let h=s.slice(0);h[r]="**",t.push(h),r--}if(!this.preserveMultipleSlashes){for(let p=1;p1e3)return t;for(let o=0;oo.length)}partsMatch(t,o,i=!1){let s=0,r=0,a=[],u="";for(;s=0;y--)p=r[y];for(let y=0;y=0){let v=N;for(;v>0&&Bi(t.charCodeAt(v-1),o);)v--;u=v===0?0:Ju(t,v-1,o)+1,a=t.slice(u,v)}let R=re(this,Vn)&&(ha(s)||s===""&&a!==void 0&&ha(a));i=R?-1:1,h=!R}let w=-1;if(h&&typeof b=="string"&&(w=Xu(b,s,r,a,u),w===-1))continue;if(re(this,Vo)){for(let N of re(this,qo)[y])if(!t.includes(N))continue e}if(h&&typeof b=="object"&&(w=Xu(b,s,r,a,u),w===-1))continue;let A=re(this,$o)[y];if(A==="base"&&h)return"yes";if(A==="tail"&&h){if(re(this,Vn)&&Os(t,0,w,!0,o))return"maybe";if(!Os(t,0,w,p,o))return"yes";continue}if(A==="mid"||A==="head"){let N=qe(this,Le,nc).call(this,t,m,A==="head",p,o);if(N!=="no")return N;continue}return"maybe"}return"no"},tc=function(t,o,i){let s=!!this.options.dot,r=t.length;if(i==="head"){if(r<2||!_n(o[0],t[0]))return!1;for(let u=1;uu&&a.testUnchecked(t.slice(u,p)))&&!Os(t,y,t.length,s,r))return"yes";if(i||Os(t,u,y,s,r))return"no";u=y}return"no"},oc=function(t){let o=ua;return o?.f===t&&o.isWindows===this.isWindows&&o.preserveMultipleSlashes===this.preserveMultipleSlashes&&o.normalize===re(this,Cn)?o:void 0},sc=function(t){let{isWindows:o,preserveMultipleSlashes:i}=this,s=qe(this,Le,ya).call(this,o?t.split("\\").join("/"):t),r=re(this,Cn);return r&&(s=s.map(a=>a.normalize(r))),ua={f:t,isWindows:o,preserveMultipleSlashes:i,normalize:r,parts:s},ua},ic=function(t){let o=[...t],i=!1;do{if(i=!1,!this.preserveMultipleSlashes){for(let a=1;at.length)return!1;let b=t.length-p.length;if(qe(this,Le,Mo).call(this,t,p,i,b,0))m=p.length;else{if(t[t.length-1]!==""||s+p.length===t.length||(b--,!qe(this,Le,Mo).call(this,t,p,i,b,0)))return!1;m=p.length+1}}if(!u.length){let b=!!m;for(let h=s;h{v[1]=A-N[C]});let R={head:y,body:m,tail:b,segments:h};return s[r]=R,R},va=function(t,o,i,s,r,a,u,p,y){let m=o[r];if(!m){if(a)return s>=i||s===i-1&&t[s]==="";for(let A=s;Ae.lastIndexOf(t)===o)}function wa(e){let t=(e||[]).filter(o=>typeof o=="string"&&o.length>0).map(o=>{let{negated:i,anchored:s,directoryOnly:r,body:a}=Kg(o);return{negated:i,directoryOnly:r,matcher:new ao(a,{dot:!0,nonegate:!0,nocomment:!0,matchBase:!s&&!a.includes("/")})}});return(o,i=!1)=>{let s=(o||"").replace(/^\/+/,"");if(!s)return!1;let r=s.split("/"),a=r.slice(0,-1).map((p,y)=>r.slice(0,y+1).join("/")),u=i;for(let p of t){if(p.negated?!u:u)continue;(p.directoryOnly?a:[...a,s]).some(m=>p.matcher.match(m))&&(u=!p.negated)}return u}}var XJ=new Set("^$\\.*+?()[]{}|/dDsSwWbBnrtvf0cxupP".split(""));function ka(e){let t=e.indexOf("=>");if(t<0)return{term:e,replacement:null};let o=e.slice(0,t).replace(/\s+$/,""),i=e.slice(t+2).replace(/^\s+/,"");return o?{term:o,replacement:i}:{term:e,replacement:null}}var lc=new Set(["*","+","?","(",")","[","]","{","}","|","^","$"]);function dc(e){let t=[];return String(e||"").split(` +`).forEach((o,i)=>{let{term:s}=ka(o.trim());if(!s)return;let r=[];for(let a=0;a{let t=e.target;if(!t||t.tagName!=="IMG"||t.dataset.failed||!t.closest?.(".markdown-body, .anonymize-preview-body"))return;t.dataset.failed="1";let o=window.document.createElement("span"),i=parseInt(t.getAttribute("width"),10)||0,s=parseInt(t.getAttribute("height"),10)||0;o.className=i>=200||s>=120?"img-unavailable is-large":"img-unavailable",o.textContent="Image unavailable",o.title=t.alt?"Image unavailable: "+t.alt.replace(/\bXXXX-(\d+)\b/g,"[redacted term $1]"):"Image unavailable",o.setAttribute("role","img"),o.setAttribute("aria-label",o.title),t.replaceWith(o)},!0);function Ca(e){let t=e?.data;if(typeof t=="string")try{t=JSON.parse(t)}catch{t=null}return typeof t?.error=="string"&&Object.prototype.hasOwnProperty.call(lo.ERRORS,t.error)?t.error:e?.status===-1||e?.status===0?"request_error":[502,503,504].includes(e?.status)?"unreachable":"unknown_error"}var zi="XXXX",Xg=e=>{zi=e||"XXXX"},Jg=(e=zi)=>{if(!e)return null;let t=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(t+"(?:-\\d+)?","g")},cc=(e,t=zi)=>{let o=Jg(t);if(!o||!e||!e.textContent.includes(t))return;let i=e.ownerDocument,s=i.createTreeWalker(e,NodeFilter.SHOW_TEXT),r=[];for(;s.nextNode();)r.push(s.currentNode);for(let a of r){let u=a.nodeValue,p=a.parentElement;if(!u.includes(t)||!p||p.closest("script, style, mark.redaction, .mermaid"))continue;let y=p.closest('code[class*="language-"]');if(y&&!y.contains(e))continue;let m=i.createDocumentFragment(),b=0;for(let h of u.matchAll(o)){m.append(u.slice(b,h.index));let w=i.createElement("mark");w.className="redaction",w.title="Redacted by Anonymous GitHub",w.textContent=h[0],m.append(w),b=h.index+h[0].length}m.append(u.slice(b)),a.replaceWith(m)}},uo=/\bXXXX-\d+\b/g,Oi=function(e){if(!e||e.indexOf("XXXX-")===-1||typeof window.DOMParser!="function")return e;let t=new window.DOMParser().parseFromString("
"+e+"
","text/html"),o=t.createTreeWalker(t.body,4),i=[];for(;o.nextNode();)uo.lastIndex=0,!o.currentNode.parentElement?.closest("pre code")&&uo.test(o.currentNode.nodeValue)&&i.push(o.currentNode);for(let s of i){uo.lastIndex=0;let r=t.createDocumentFragment(),a=0,u,p=s.nodeValue;for(;u=uo.exec(p);){r.appendChild(t.createTextNode(p.slice(a,u.index)));let y=t.createElement("mark");y.className="redact-chip",y.setAttribute("title","Redacted term "+u[0].slice(5)+" \u2014 the same term everywhere in this snapshot");let m=u[0].slice(5);y.textContent="";let b=t.createElement("i");b.textContent=m,y.appendChild(b),y.dataset.term=u[0],y.setAttribute("aria-label","Redacted term "+m);let h=/^[.,;:!?)\]]+/.exec(p.slice(u.index+u[0].length));if(h){let w=t.createElement("span");w.className="redact-glue",w.appendChild(y),w.appendChild(t.createTextNode(h[0])),r.appendChild(w),a=u.index+u[0].length+h[0].length}else r.appendChild(y),a=u.index+u[0].length}r.appendChild(t.createTextNode(p.slice(a))),s.parentNode.replaceChild(r,s)}return t.body.firstChild.innerHTML},pc=()=>{window.Prism?.hooks&&!window.Prism.redactionHook&&(window.Prism.hooks.add("complete",e=>{cc(e.element),e.element.querySelectorAll?.("mark.redaction").forEach(t=>{let o=/^XXXX-(\d+)$/.exec(t.textContent);if(!o)return;t.className="redact-chip",t.setAttribute("title","Redacted term "+o[1]+" \u2014 the same term everywhere in this snapshot"),t.setAttribute("aria-label","Redacted term "+o[1]),t.dataset.term=o[0],t.style.setProperty("--slot-ch",o[0].length+"ch"),t.textContent="";let i=t.ownerDocument.createElement("span");i.className="redact-src",i.textContent=o[0].slice(0,o[0].length-o[1].length),t.appendChild(i);let s=t.ownerDocument.createElement("i");s.textContent=o[1],t.appendChild(s)})}),window.Prism.redactionHook=!0)},fc=(e,t=zi)=>{if(!e||!t||!e.includes(t))return e;let o=new DOMParser().parseFromString(""+e+"","text/html");return cc(o.body,t),o.body.innerHTML};async function Ea(e){if(window.navigator.clipboard?.writeText){await window.navigator.clipboard.writeText(e);return}let t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.opacity="0";let o=document.activeElement;document.body.appendChild(t);try{if(t.select(),!document.execCommand?.("copy"))throw Error("Copy unavailable")}finally{t.remove(),o?.focus()}}function Qg(e){if(!["ArrowLeft","ArrowRight","Home","End"].includes(e.key))return;let t=[...e.currentTarget.closest('[role="tablist"]').querySelectorAll('[role="tab"]')],o=t.indexOf(e.currentTarget),i=e.key==="Home"?0:e.key==="End"?t.length-1:(o+(e.key==="ArrowRight"?1:-1)+t.length)%t.length;e.preventDefault(),t[i]?.focus(),t[i]?.click()}var hc=function(e,t,o,i){e.previewTabKeydown=Qg,e.headerCanUpgrade=!1,e.headerShowSupport=!1,e.headerBillingPending=new URLSearchParams(window.location.search).get("billing")==="success";let s=b=>{e.headerShowSupport=!(b?.grants||[]).some(w=>["active","paid","past_due"].includes(w.status)&&new Date(w.until).getTime()>Date.now());let h=(b?.grants||[]).some(w=>["author_monthly","author_annual"].includes(w.planId)&&["active","paid","past_due"].includes(w.status)&&new Date(w.until).getTime()>Date.now());e.headerCanUpgrade=!!b?.enabled&&b.checkoutEnabled!==!1&&!h&&(b.plans||[]).some(w=>["author_monthly","author_annual"].includes(w.id))};e.on("billing:updated",(b,h)=>s(h)),e.on("billing:pending",(b,h)=>{e.headerBillingPending=h}),e.openHeaderUpgrade=()=>{o.path()==="/profile"?e.emit("settings:upgrade"):o.url("/profile?upgrade=1")},e.title="Main",e.user={status:"connection"},e.site_options,e.toasts=[],e.removeToast=function(b){let h=e.toasts.indexOf(b);h!==-1&&e.toasts.splice(h,1)},e.addToast=function(b){return e.toasts.push(b),i(function(){e.removeToast(b)},8e3),b};let r=/^\/(r|repository|pr|gist)\//;e.path=o.url(),e.paths=o.path().substring(1).split("/"),e.isReviewerRoute=r.test(o.path()),e.darkMode=function(b){localStorage.setItem("darkMode",b),e.isDarkMode=b;let h="/css/prism.css";if($("link[href='/css/prism-okaidia.css']").remove(),b)$("body").addClass("dark-mode"),$(`link[href='${h}']`).remove();else if($("body").removeClass("dark-mode"),!document.querySelector(`link[href='${h}']`)){let w=document.createElement("link");w.href=h,w.rel="stylesheet",document.head.append(w)}e.emit("dark-mode",b)},e.darkMode(localStorage.getItem("darkMode")=="true"),e.emailPromptOpen=!1,e.emailPromptAddress="",e.emailPromptBusy=!1,e.emailPromptError="";let a;e.respondToEmailPrompt=async b=>{if(!e.emailPromptBusy){e.emailPromptBusy=!0,e.emailPromptError="";try{let h=await t.post("/github/connections/email",{action:b,email:e.emailPromptAddress},{headers:{"X-CSRF-Token":e.user.emailPromptCSRF}});b==="save"&&(e.user.notificationEmail=h.data.notificationEmail),e.emailPromptOpen=!1,e.user.showEmailPrompt=!1,a?.focus()}catch(h){e.emailPromptError=h.data?.error||"Unable to save your preference. Please try again."}finally{e.emailPromptBusy=!1}}};function u(){t.get("/api/user").then(b=>{b&&(e.user=b.data),e.user?.username?Ri(t).then(h=>s(h.data)).catch(()=>{}):e.headerShowSupport=!0,e.user?.emailNotificationsEnabled&&e.user.showEmailPrompt&&!e.user.notificationEmail&&(a=document.activeElement,e.emailPromptOpen=!0,i(()=>{let h=document.getElementById("email-prompt");h?.showModal?h.showModal():h?.setAttribute("open",""),document.getElementById("email-prompt-address")?.focus()},0))},()=>{e.user=null,e.headerShowSupport=!0})}u();function p(){t.get("/api/options").then(b=>{b&&(e.site_options=b.data),Xg(b?.data?.ANONYMIZATION_MASK),e.emit("site-options")},()=>{e.site_options=null})}p();function y(){t.get("/api/message").then(b=>{b&&(e.generalMessage=b.data)},()=>{e.generalMessage=null})}y();function m(b,h){h&&(e.title=h.title),e.path=o.url(),e.paths=o.path().substring(1).split("/"),e.isReviewerRoute=r.test(o.path())}e.on("routeChange",m),e.on("routeUpdate",m)},mc=function(e,t){let o=dn(),i=Tt();e.faqQuery="",e.faqResults=0;let s=a=>(a||"").toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\s+/g," ");e.filterFaq=()=>{let a=s(e.faqQuery).trim().split(" ").filter(Boolean),u=0;document.querySelectorAll(".faq-section .panel-group").forEach(p=>{let y=0;p.querySelectorAll(":scope > .panel").forEach(h=>{let w=h.dataset.faqText||(h.dataset.faqText=s(h.textContent)),A=a.every(N=>w.includes(N));h.classList.toggle("faq-hit",a.length>0&&A),h.hidden=a.length>0&&!A,A&&y++});let m=a.length>0&&y===0;p.hidden=m;let b=p.previousElementSibling;b?.classList.contains("faq-cat")&&(b.hidden=m),u+=y}),e.faqResults=a.length?u:0},e.clearFaqSearch=()=>{e.faqQuery="",e.filterFaq(),document.getElementById("faq-search-input")?.focus()};let r=()=>{let a=window.location.hash.slice(1),u=document.getElementById(a);if(!u?.classList.contains("panel-collapse"))return;$(u).collapse("show");let p=document.getElementById(u.getAttribute("aria-labelledby"));p?.setAttribute("tabindex","-1"),p?.focus({preventScroll:!0}),p?.scrollIntoView?.({block:"start"})};e.on("routeUpdate",()=>i.timeout(r,0)),o(window,"hashchange",r),i.timeout(r,0)},gc=function(e,t,o,i,s){e.settingsTab=/(?:billing|upgrade)=/.test(window.location.search)?"billing":"defaults",e.confirmDeleteAccount=!1,e.deleteUsername="",e.profilePastSubscription=()=>!e.profileAuthorGrant()&&(e.billing?.grants||[]).some(m=>["author_monthly","author_annual"].includes(m.planId)),e.showAuthorPlans=new URLSearchParams(window.location.search).get("upgrade")==="1",e.showRepositoryPass=!1,e.profilePlan="author_annual",e.openProfileUpgrade=()=>{e.settingsTab="billing",e.showAuthorPlans=!0,ot(()=>document.getElementById("settings-plan-comparison")?.focus())},e.on("settings:upgrade",()=>e.openProfileUpgrade()),e.profileAuthorPlans=()=>(e.billing?.plans||[]).filter(m=>["author_monthly","author_annual"].includes(m.id)),e.profileSelectedPlan=()=>e.profileAuthorPlans().find(m=>m.id===e.profilePlan)||e.profileAuthorPlans()[0],e.profilePassPlan=()=>(e.billing?.plans||[]).find(m=>m.id==="author_pass"),e.profileAddonPlans=()=>(e.billing?.plans||[]).filter(m=>Ni(m.id)).sort((m,b)=>+(b.id==="repo_pack")-+(m.id==="repo_pack")),e.profileAddonId="repo_pack",e.profilePackPlan=()=>(e.billing?.plans||[]).find(m=>m.id==="repo_pack"),e.profileSlotPlan=()=>(e.billing?.plans||[]).find(m=>m.id==="repo_slot"),e.profileRepositories=()=>(e.billing?.repositories||[]).filter(m=>m.status!=="removed"),e.openProfileAddon=m=>{m&&(e.profileAddonId=m),e.showRepositoryPass=!0,e.billingRepository="",ot(()=>{let b=document.getElementById("settings-addons-title");b?.scrollIntoView?.({block:"nearest",behavior:"smooth"}),b?.focus?.({preventScroll:!0})})};let r=["repo_slot","author_pass","repo_extend","repo_never"];e.profileSingleAddons=()=>e.profileAddonPlans().filter(m=>m.id!=="repo_pack").sort((m,b)=>r.indexOf(m.id)-r.indexOf(b.id)),e.profileSingleId="repo_slot",e.profileSingleAddon=()=>e.profileSingleAddons().find(m=>m.id===e.profileSingleId)||e.profileSingleAddons()[0],e.profileCheapestAddon=()=>[...e.profileSingleAddons()].sort((m,b)=>(m.amount??1/0)-(b.amount??1/0))[0],e.profileAuthorPlansByValue=()=>[...e.profileAuthorPlans()].sort((m,b)=>+(m.interval==="year")-+(b.interval==="year")),e.profilePackSummary=m=>m.parts.map(b=>b.planId==="repo_slot"?"Extra repository":`${e.profileGrantName(b)} until ${e.billingDate(b.until)}`).join(" \xB7 "),e.profileAddonFeatures=m=>({repo_pack:["One more repository, outside your free ones",`Its own ${e.billingBytes(e.profileSlotPlan()?.storage||e.profilePassPlan()?.storage)} of storage`,"Automatic updates for 180 days","Online for up to a year","No subscription"],repo_slot:["One more repository, outside your free ones",`Its own ${e.billingBytes(e.profileSlotPlan()?.storage)} of storage`,"Valid while the repository exists","Refresh it by hand"],author_pass:["Automatic updates for 180 days",`Its own ${e.billingBytes(e.profilePassPlan()?.storage)} of storage`,"No subscription"],repo_extend:["Online for up to one more year","Buy again to add another year","No subscription"],repo_never:["The link never expires","No subscription","Ends only if the payment is refunded"]})[m]||[],e.profileAddonBlurb=m=>({repo_slot:"One more repository",author_pass:"Auto-updates for 180 days",repo_extend:"Online one more year",repo_never:"The link never expires"})[m]||"",e.profileAuthorPurchase=()=>(e.billing?.purchases||[]).find(m=>m.recurring&&["active","overdue"].includes(m.status)),e.profileRepositoryExpiry=m=>m.status==="expired"?"expired":m.expirationMode==="never"?"never expires":m.expirationDate?"expires "+e.billingDate(m.expirationDate):"no date",e.profileAnnualSavings=()=>{let m=e.profileAuthorPlans().find(h=>h.interval==="month")?.amount,b=e.profileAuthorPlans().find(h=>h.interval==="year")?.amount;return m&&b&&b(e.billing?.purchases||[]).filter(b=>["active","overdue"].includes(b.status)===m),e.profilePurchaseStatus=m=>({active:"Active",overdue:"Payment overdue",ended:"Ended",refunded:"Refunded",disputed:"Disputed"})[m.status]||m.status,e.profilePurchaseTerm=m=>{let b=m.status&&!["active","overdue"].includes(m.status);if(m.recurring)return b?m.until?"Ended "+e.billingDate(m.until):"":(m.cancelAtPeriodEnd?"Ends ":"Renews ")+e.billingDate(m.until);if(m.planId==="repo_pack"){let h=m.parts.map(w=>w.until).filter(Boolean).map(w=>new Date(w).getTime());return b||!h.length?"":"Until "+e.billingDate(new Date(Math.max(...h)))}return m.until?(b||new Date(m.until).getTime()e.profileAddonPlans().find(m=>m.id===e.profileAddonId)||e.profileAddonPlans()[0],e.profileAuthorGrant=()=>(e.billing?.grants||[]).find(m=>["author_monthly","author_annual"].includes(m.planId)&&["active","paid","past_due"].includes(m.status)&&new Date(m.until).getTime()>Date.now()),e.profileConferencePlan=()=>(e.billing?.plans||[]).filter(m=>["conference_workshop","conference","conference_large"].includes(m.id)&&m.amount!=null).sort((m,b)=>m.amount-b.amount)[0],e.profileGrantName=m=>({author_monthly:"Author monthly",author_annual:"Author annual",author_pass:"Live updates",repo_extend:"Extended expiration",repo_never:"Never expire",repo_slot:"Extra repository",repo_pack:"Paper pack",conference:"Conference package",conference_workshop:"Workshop package",conference_large:"Large conference package"})[m.planId]||m.planId,Di(e,t,()=>s.load().then(m=>{e.quota=m},console.error),{portalMessage:()=>{let m=e.profileAuthorGrant();return m?m.cancelAtPeriodEnd?`Renewal cancelled. Your access continues until ${e.billingDate(m.until)}.`:`Your subscription renews on ${e.billingDate(m.until)}.`:"Your billing details are up to date."}}),e.terms="",e.options={expirationMode:"remove",update:!1,image:!0,pdf:!0,notebook:!0,loc:!0,link:!0},e.saving=!1,e.message=null,e.error=null,e.accountEmail="",e.emailLoading=!0,e.emailCSRFReady=!1,e.emailSaving=!1,e.emailSaved=!1,e.emailError="";let a="";e.loadAccountEmail=async()=>{e.emailLoading=!0,e.emailError="";try{let m=await t.get("/github/connections/email");e.accountEmail=m.data.notificationEmail||"",a=m.data.csrf,e.emailCSRFReady=!!a}catch{e.emailError="Unable to load your email address. Please try again."}finally{e.emailLoading=!1}},e.saveAccountEmail=async()=>{if(!(e.emailSaving||e.emailLoading||!a)){e.emailSaving=!0,e.emailSaved=!1,e.emailError="";try{let m=await t.post("/github/connections/email",{email:e.accountEmail},{headers:{"X-CSRF-Token":a}});e.accountEmail=m.data.notificationEmail,e.user&&(e.user.notificationEmail=m.data.notificationEmail),e.emailSaved=!0}catch{e.emailError="Unable to save your email address. Check the address and try again."}finally{e.emailSaving=!1}}},e.loadAccountEmail(),s.load().then(m=>{e.quota=m},console.error);let u=Wr(e,["terms","options"],"profile");e.discardDraft=()=>u.discard();function p(){t.get("/api/user/default").then(m=>{let b=m.data||{};b.terms&&(e.terms=b.terms.join(` +`)),e.options=Object.assign({},e.options,b.options),u.restore()})}p();let y=null;e.saveDefault=m=>{if(m&&m.preventDefault&&m.preventDefault(),e.saving)return;let b=u.checkpoint(),h={terms:e.terms.split(` +`).map(w=>w.trim()).filter(w=>w.length>0),options:e.options};e.saving=!0,e.error=null,t.post("/api/user/default",h).then(()=>{u.accept(b),e.saving=!1,e.message=e.unsavedChanges?null:"Saved",y&&i.cancel(y),y=i(()=>{e.message=null},2500)},w=>{e.saving=!1;let A=w&&w.data&&w.data.error,N="Unable to save your defaults. Please try again.";Promise.all([o("ERRORS."+A),o("ERRORS.unknown_error")]).then(([R,v])=>{e.error=A&&R!==v?R:N},()=>{e.error=N})})},e.deleteAccount=()=>{e.deletingAccount||!e.confirmDeleteAccount||e.deleteUsername!==e.user?.username||(e.deletingAccount=!0,t.delete("/api/user").then(()=>{window.location.href="/"},()=>{e.deletingAccount=!1,e.deleteError="Unable to delete the account. Please try again."}))}},vc=function(e,t,o){e.repoId=null,e.repoUrl=null,e.claim=()=>{t.post("/api/repo/claim",{repoId:e.repoId,repoUrl:e.repoUrl}).then(i=>{o.url("/dashboard")},i=>{e.error=i.data,e.claimForm.repoUrl.setValidity("not_found",!1),e.claimForm.repoId.setValidity("not_found",!1)})}},yc=function(e,t,o,i,s){e.user&&!e.user.status&&o.url("/dashboard"),e.watch("user.status",()=>{e.user&&!e.user.status&&o.url("/dashboard")}),e.features=[{key:"anonymize",num:"01",eyebrow:"Anonymize",title:"Double-anonymous,",accent:"your rules.",text:"Choose what reviewers may see: links, images, PDFs, notebooks, GitHub Pages. Add your own terms, with regex if you need it, and pick the expiration date.",cta:"Start an anonymization",href:"/anonymize",url:"anonymous.4open.science/anonymize",img:"/imgs/anonymize.png",alt:"The anonymize form: source repository, terms to redact, options and a live README preview"},{key:"review",num:"02",eyebrow:"Review",title:"Reviewers browse",accent:"the real thing.",text:"Highlighted source code, rendered PDFs, images, and notebooks, in a familiar file explorer. GitHub Pages is also supported.",cta:"Open the example",href:"https://anonymous.4open.science/r/840c8c57-3c32-451e-bf12-0e20be300389/",target:"_self",url:"anonymous.4open.science/r/840c8c57-\u2026",img:"/imgs/explorer.png",alt:"The repository explorer with a file tree and a rendered README"},{key:"manage",num:"03",eyebrow:"Manage",title:"One dashboard,",accent:"until the decision.",text:"Monitor views, edit configuration, remove or update your repository. Program chairs can group submissions under a conference with one shared expiry.",cta:"Open the dashboard",href:"/dashboard",needsUser:!0,url:"anonymous.4open.science/dashboard",img:"/imgs/dashboard.png",alt:"The dashboard listing anonymized repositories with status, views and expiry"}],e.feature=e.features[0].key,e.selectFeature=function(u){e.feature=u},e.featureHref=function(u){return u.needsUser&&!e.user?"/signin":u.href},e.featureTarget=function(u){return u.needsUser&&!e.user?"_self":u.target||void 0},e.featureKeydown=function(u,p){let y={ArrowDown:1,ArrowRight:1,ArrowUp:-1,ArrowLeft:-1,Home:"first",End:"last"}[u.key];if(y===void 0)return;u.preventDefault();let m=e.features.length,b=y==="first"?0:y==="last"?m-1:(p+y+m)%m;e.feature=e.features[b].key,s(()=>{let h=i.document.getElementById("feature-tab-"+e.feature);h&&h.focus()})},e.demoText=`# DeepLearnUtils Developed by Jane Smith at MIT CSAIL. See Smith et al., "Attention That Works," 2026. -Contact: jane.smith@mit.edu`,e.demoTerms="Jane Smith, Smith, MIT CSAIL, jane.smith@mit.edu",e.demoParts=function(){let u=(e.demoTerms||"").split(/[,\n]/).map(m=>m.trim()).filter(Boolean).sort((m,k)=>k.length-m.length),p=m=>m.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(!u.length)return[{text:e.demoText}];let v=new RegExp("("+u.map(p).join("|")+")","gi"),h={},g=0;return(e.demoText||"").split(v).filter(m=>m!=="").map(m=>{let k=u.find(T=>T.toLowerCase()===m.toLowerCase());return k?(h[k.toLowerCase()]||(h[k.toLowerCase()]=++g),{text:String(h[k.toLowerCase()]),redacted:!0,original:m}):{text:m}})},e.demoCount=()=>e.demoParts().filter(u=>u.redacted).length,e.cards=[{key:"repositories",total:0,label:"repositories anonymized"},{key:"users",total:0,label:"researchers"},{key:"pageViews",total:0,label:"page views"},{key:"pullRequests",total:0,label:"pull requests"}];function r(){t.get("/api/stat/").then(u=>{e.stat=u.data,e.cards[0].total=u.data.nbRepositories,e.cards[1].total=u.data.nbUsers,e.cards[2].total=u.data.nbPageViews,e.cards[3].total=u.data.nbPullRequests}).catch(()=>{})}r();function a(u){let p={series:u,bars:[],viewW:100,deltaToday:0,pctChange:0,pctAbs:0,isUp:!0};if(!u||u.length<2)return p;let v=new Array(u.length-1);for(let w=1;w=2){let w=v[h-2];w&&(p.pctChange=(p.deltaToday-w)/w*100)}return p.pctAbs=Math.round(Math.abs(p.pctChange)),p.isUp=p.pctChange>=0,p}e.history={repositories:a([]),users:a([]),pageViews:a([]),pullRequests:a([])},t.get("/api/stat/history?days=60").then(u=>{let p=u.data||[];e.history={repositories:a(p.map(v=>v.nbRepositories||0)),users:a(p.map(v=>v.nbUsers||0)),pageViews:a(p.map(v=>v.nbPageViews||0)),pullRequests:a(p.map(v=>v.nbPullRequests||0))}}).catch(()=>{})},Ku=function(e,t,o,i,s,r){let a=Tt();e.on("routeLeave",function(){$('[data-toggle="tooltip"]').tooltip("dispose")}),e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),a.timeout(()=>{$('[data-toggle="tooltip"]').tooltip()},250),e.quotaExpanded=!1,e.closeQuota=()=>{e.quotaExpanded=!1,nt(()=>document.querySelector(".dashboard-quota > summary")?.focus())},bn()(document,"click",D=>{e.quotaExpanded&&!D.target.closest?.(".dashboard-quota")&&(e.quotaExpanded=!1)}),e.filtersExpanded=!1,e.projectView="all",e.selectedProject=null,e.projectName="",e.nameSaving=!1,e.nameError="",e.nameMessage="",e.needsAttention=D=>D.status==="error"||D._broken||p(D.status)==="progress"&&D._stale,e.attentionCount=()=>e.dashboardTotals?.attention??e.items.filter(e.needsAttention).length,e.hasProjects=()=>(e.dashboardTotals?.total??e.items.length)>0,e.setProjectView=D=>{e.projectView=D,D==="attention"&&(e.filters.status.error=!0,e.filters.status.progress=!0)},e.projectDetailsId=D=>"project-details-"+encodeURIComponent(D._type+":"+(D._id||D._source||"unknown")),e.showProjectDetails=async D=>{e.selectedProject=D,e.projectName=D.projectName||"",e.nameError="",e.nameMessage="",await nt();let X=document.getElementById(e.projectDetailsId(D));X?.focus(),X?.scrollIntoView?.({block:"nearest"})},e.closeProjectDetails=D=>{e.selectedProject=null,nt(()=>document.querySelector(`[data-project-actions="${encodeURIComponent(D._type+":"+D._id)}"]`)?.focus())},e.saveProjectName=async D=>{if(e.nameSaving||!D._id)return;let X=e.projectName.trim();if(X.length>100){e.nameError="Use 100 characters or fewer.";return}e.nameSaving=!0,e.nameError="",e.nameMessage="";try{let le=await t.post("/api/user/project-name",{type:D._type,id:D._id,name:X});D.projectName=le.data.name,D._label=D.projectName||D._fallbackLabel,e.selectedProject===D&&(e.nameMessage=X?"Project name saved.":"Default project name restored."),N||(e.dashboardCursor=null,await q(),e.selectedProject===D&&(e.selectedProject=e.items.find(Ee=>Ee._type===D._type&&Ee._id===D._id)||null))}catch{e.selectedProject===D&&(e.nameError="The project name could not be saved. Try again.")}finally{e.nameSaving=!1}},e.copyingId=null,e.copyLink=async D=>{if(!D._viewUrl||e.copyingId)return;let X=new URL(D._viewUrl,s.location.origin).href;e.copyingId=D._type+":"+D._id;try{await Bu(X),e.addToast({title:"Link copied",body:"The anonymous link is ready to share."})}catch{e.addToast({title:"Copy this anonymous link",body:X})}finally{e.copyingId=null}},e.items=[],e.search="",e.loading=!0,e.statusKeyLabels={ready:"Ready",progress:"In progress",error:"Error",expired:"Expired",removed:"Removed"};let u=["queue","download","downloaded","preparing","anonymizing"];function p(D){return D==="ready"||D==="error"?D:D==="expired"||D==="expiring"?"expired":D==="removed"||D==="removing"?"removed":(u.indexOf(D)>-1,"progress")}let v=7200*1e3,h="dashboard.filterPrefs",g={typeFilter:"all",filters:{status:{ready:!0,progress:!0,error:!0,expired:!0,removed:!1}},orderBy:"-anonymizeDate"},m=loadFilterPrefs(h)||{};e.typeFilter=m.typeFilter||g.typeFilter,e.filters={status:Object.assign({},g.filters.status,m.filters&&m.filters.status||{})},e.orderBy=m.orderBy||g.orderBy;let k={_name:{label:"Anonymous ID",defaultDesc:!1},_label:{label:"Project",defaultDesc:!1},anonymizeDate:{label:"Anonymize date",defaultDesc:!0},status:{label:"Status",defaultDesc:!1},lastView:{label:"Last view",defaultDesc:!0},pageView:{label:"Views",defaultDesc:!0},"options.expirationDate":{label:"Expiration",defaultDesc:!1}};e.sortFields=k,e.sortField=()=>e.orderBy.replace(/^-/,""),e.sortDesc=()=>e.orderBy.charAt(0)==="-",e.sortLabel=()=>{let D=k[e.sortField()];return D?D.label:"Custom"},e.isSortedBy=D=>e.sortField()===D,e.setSort=(D,X)=>{typeof X!="boolean"&&(X=e.isSortedBy(D)?!e.sortDesc():!!(k[D]&&k[D].defaultDesc)),e.orderBy=(X?"-":"")+D},e.toggleSortDirection=()=>{e.setSort(e.sortField(),!e.sortDesc())},e.watchGroup(["typeFilter","orderBy"],()=>{saveFilterPrefs(h,{typeFilter:e.typeFilter,filters:e.filters,orderBy:e.orderBy})}),e.watch("filters",()=>{saveFilterPrefs(h,{typeFilter:e.typeFilter,filters:e.filters,orderBy:e.orderBy})},!0),r.load().then(D=>{e.quota=D},console.error);function T(D,X,le,Ee,ae,he){D.pageView||(D.pageView=0),D.lastView||(D.lastView=""),D.options=D.options||{},D.options.terms=(D.options.terms||[]).filter(Pe=>Pe),D._id=X||"",D._source=Ee,D._broken=!X,D._name=X||Ee||"(unnamed)",D._fallbackLabel=D._type==="gist"?"Gist "+(X||Ee||"without an ID"):Ee||le||D._name,D._label=D.projectName||D._fallbackLabel,D._editUrl=X?ae:null,D._viewUrl=X?he:null,D._broken&&(D.status="error",D.statusMessage="incomplete_record"),D._statusKey=p(D.status);let Ce=D.anonymizeDate||D.lastView;return D._stale=D._statusKey==="progress"&&!!Ce&&Date.now()-new Date(Ce).getTime()>v,D.status==="expired"||D.status==="expiring"?D._expiry={kind:"expired",date:D.options.expirationDate}:D.status!=="ready"?D._expiry={kind:"none"}:D.options.expirationMode==="never"||!D.options.expirationDate?D._expiry={kind:"never"}:D._expiry={kind:"date",date:D.options.expirationDate},D}function w(D){return t.get(D).then(X=>X.data||[],X=>(console.error(X),[]))}function b(){return e.loading=!0,i.all([w("/api/user/anonymized_repositories"),w("/api/user/anonymized_pull_requests"),w("/api/user/anonymized_gists")]).then(D=>{let X=D[0],le=D[1],Ee=D[2],ae=[];X.forEach(he=>{he._type="repo";let Ce=he.source||{};ae.push(T(he,he.repoId,he.repoId,Ce.fullName,"/anonymize/"+he.repoId,"/r/"+he.repoId+"/"))}),le.forEach(he=>{he._type="pr";let Ce=he.source||{};ae.push(T(he,he.pullRequestId,he.pullRequestId,Ce.repositoryFullName?Ce.repositoryFullName+"#"+Ce.pullRequestId:void 0,"/pull-request-anonymize/"+he.pullRequestId,"/pr/"+he.pullRequestId+"/"))}),Ee.forEach(he=>{he._type="gist";let Ce=he.source||{};ae.push(T(he,he.gistId,he.gistId,Ce.gistId,"/gist-anonymize/"+he.gistId,"/gist/"+he.gistId+"/"))}),e.items=ae,e.loading=!1})}let E=0,N=!1;e.dashboardCursor=null,e.dashboardError="";function O(D){let X=D.source||{};return D._type==="repo"?T(D,D.repoId,D.repoId,X.fullName,"/anonymize/"+D.repoId,"/r/"+D.repoId+"/"):D._type==="pr"?T(D,D.pullRequestId,D.pullRequestId,X.repositoryFullName?X.repositoryFullName+"#"+X.pullRequestId:void 0,"/pull-request-anonymize/"+D.pullRequestId,"/pr/"+D.pullRequestId+"/"):T(D,D.gistId,D.gistId,X.gistId,"/gist-anonymize/"+D.gistId,"/gist/"+D.gistId+"/")}function q(D=!1){if(N)return b();let X=++E;return e.loading=!D,e.loadingMore=D,e.dashboardError="",t.get("/api/user/dashboard",{params:{q:e.search,type:e.typeFilter,sort:e.orderBy,statuses:Object.keys(e.filters.status).filter(le=>e.filters.status[le]!==!1).join(",")||"none",attention:String(e.projectView==="attention"),cursor:D?e.dashboardCursor:void 0}}).then(le=>{if(X===E){if(!Array.isArray(le.data?.items))return N=!0,b();e.items=(D?e.items:[]).concat(le.data.items.map(O)),e.dashboardCursor=le.data.cursor,e.dashboardTotals=le.data}},le=>{if(X===E){if(le.status===404)return N=!0,b();e.dashboardError="Projects could not be loaded. Please try again."}}).finally(()=>{X===E&&(e.loading=!1,e.loadingMore=!1)})}e.loadMoreProjects=()=>q(!0);let M;e.watchGroup(["search","typeFilter","orderBy","projectView"],()=>{N||(M&&a.timeout.cancel(M),M=a.timeout(()=>q(),150))},!1),e.watch("filters",()=>{N||q()},!0,!1),e.on("dispose",()=>{E++}),q(),e.openItem=(D,X)=>{if(!D._viewUrl)return;let le=X&&X.target;le&&le.closest&&le.closest("a, button, .dropdown, input")||(s.location.href=D._viewUrl)},e.hiddenStatusCount=()=>Object.keys(e.filters.status).filter(D=>e.filters.status[D]===!1).length,e.hasHiddenStatus=()=>e.hiddenStatusCount()>0,e.hasActiveFilters=()=>e.projectView!=="all"||e.typeFilter!=="all"||e.search.trim().length>0||Object.keys(e.filters.status).some(D=>e.filters.status[D]===!1),e.showClearFilters=()=>e.search.trim().length>0||e.typeFilter!=="all"||e.hiddenStatusCount()>1,e.clearFilters=()=>{e.projectView="all",e.typeFilter="all",e.search="",Object.keys(e.filters.status).forEach(D=>{e.filters.status[D]=!0})};function G(D,X,le,Ee){t.get("/api/repo/"+D).then(async ae=>{let he=Ee!==void 0&&Ee!==ae.data.status;for(let Ce of e.items)if(Ce._type==="repo"&&Ce.repoId==D){he=he||Ce.status!==ae.data.status;let Pe=e.needsAttention(Ce);Ce.status=ae.data.status,Ce.statusMessage=ae.data.statusMessage,Ce._statusKey=p(Ce.status),Ce._statusKey!=="progress"&&(Ce._stale=!1);let Ne=e.needsAttention(Ce);e.dashboardTotals&&Pe!==Ne&&(e.dashboardTotals.attention=Math.max(0,e.dashboardTotals.attention+(Ne?1:-1)));break}if(he&&!N){e.dashboardCursor=null;let Ce=e.selectedProject;await q(),Ce&&e.selectedProject===Ce&&(e.selectedProject=e.items.find(Pe=>Pe._type===Ce._type&&Pe._id===Ce._id)||null)}if(ae.data.status=="ready"||ae.data.status=="error"||ae.data.status=="removed"||ae.data.status=="expired"){X(ae.data);return}a.timeout(()=>G(D,X,le,ae.data.status),2500)},le)}let de=D=>D==="repo"?"repository":D==="gist"?"gist":"pull request",re=D=>D==="repo"?"/api/repo":D==="gist"?"/api/gist":"/api/pr";e.removeItem=D=>{let X=de(D._type);if(confirm(`Are you sure that you want to remove the ${X} ${D._id}?`)){let le=et({title:`Removing ${D._id}...`,date:new Date,body:`The ${X} ${D._id} is going to be removed.`});e.addToast(le);let Ee=`${re(D._type)}/${D._id}`;t.delete(Ee).then(()=>{D._type==="repo"?G(D._id,()=>{le.title=`${D._id} is removed.`,le.body=`The ${X} ${D._id} is removed.`},void 0,D.status):(le.title=`${D._id} is removed.`,le.body=`The ${X} ${D._id} is removed.`,q())},ae=>{le.title=`Error during the removal of ${D._id}.`,le.body=ae.body,q()})}},e.refreshItem=D=>{let X=de(D._type),le=et({title:`Refreshing ${D._id}...`,date:new Date,body:`The ${X} ${D._id} is going to be refreshed.`});e.addToast(le);let Ee=he=>{le.title=`Error during the refresh of ${D._id}.`,le.body=he.data?.error||he.body||"The refresh could not be completed. Please try again.",q()},ae=`${re(D._type)}/${D._id}/refresh`;t.post(ae).then(()=>{D._type==="repo"?G(D._id,he=>{if(he.status!=="ready"){Ee({body:he.statusMessage||`The repository is ${he.status}.`});return}le.title=`${D._id} is refreshed.`,le.body=`The ${X} ${D._id} is refreshed.`},Ee,D.status):(le.title=`${D._id} is refreshed.`,le.body=`The ${X} ${D._id} is refreshed.`,q())},Ee)},e.extendItem=D=>{let X=de(D._type),le=et({title:`Extending ${D._id}...`,date:new Date,body:`The expiration of ${X} ${D._id} is being extended.`});e.addToast(le);let Ee=`${re(D._type)}/${D._id}/extend`;t.post(Ee).then(ae=>{let he=ae?.data?.expirationDate?` until ${new Date(ae.data.expirationDate).toLocaleDateString()}`:"";D._type==="repo"?G(D._id,()=>{le.title=`${D._id} is extended.`,le.body=`${X} ${D._id} is extended${he}.`},void 0,D.status):(le.title=`${D._id} is extended.`,le.body=`${X} ${D._id} is extended${he}.`,q())},ae=>{le.title=`Error during the extension of ${D._id}.`;let he=ae.data&&ae.data.error;le.body=he||ae.body,he&&Object.prototype.hasOwnProperty.call(ro.ERRORS,he)&&(le.body=ro.ERRORS[he]),q()})},e.itemFilter=D=>{if(e.projectView==="attention"&&!e.needsAttention(D)||e.typeFilter!=="all"&&D._type!==e.typeFilter||e.filters.status[D._statusKey]===!1)return!1;let X=e.search.trim().toLowerCase();return!!(X.length==0||D._label&&String(D._label).toLowerCase().indexOf(X)>-1||D._source&&String(D._source).toLowerCase().indexOf(X)>-1||D._id&&String(D._id).toLowerCase().indexOf(X)>-1||D.conference&&String(D.conference).toLowerCase().indexOf(X)>-1)}};var Yu=function(e,t,o){let i=Tt();e.repoId=o.repoId,e.reviewUrl=window.location.origin+"/r/"+encodeURIComponent(o.repoId)+"/",e.repo=null,e.progress=0,e.rateLimitResetAt=0,e.rateLimitCountdown="",e.shareUrl=(window.location?.origin||"")+"/r/"+encodeURIComponent(e.repoId)+"/",e.copied=!1;let s=null;e.copyShareUrl=async()=>{try{await Bu(e.shareUrl),e.copied=!0,s&&i.timeout.cancel(s),s=i.timeout(()=>{e.copied=!1},2e3)}catch{e.addToast?.({title:"Copy this anonymous link",body:e.shareUrl})}};var r=null;let a=null,u=!1;function p(h){e.rateLimitResetAt=h,r&&i.interval.cancel(r);function g(){var m=Math.max(0,Math.ceil((h-Date.now())/1e3));if(m<=0)e.rateLimitCountdown="",e.rateLimitResetAt=0,i.interval.cancel(r),r=null;else{var k=Math.floor(m/60),T=m%60;e.rateLimitCountdown=k>0?k+"m "+T+"s":T+"s"}}g(),r=i.interval(g,1e3)}e.on("dispose",function(){u=!0,r&&i.interval.cancel(r),a&&i.timeout.cancel(a)});function v(h){if(!h)return h;var g=h.match(/^rate_limited:(\d+)$/);return g?(p(parseInt(g[1],10)),null):(e.rateLimitResetAt=0,h)}e.getStatus=()=>{u||t.get("/api/repo/"+e.repoId,{repoId:e.repoId,repoUrl:e.repoUrl}).then(h=>{if(!u){e.repo=h.data,h.data.rateLimitResetAt?p(h.data.rateLimitResetAt):e.repo.statusMessage=v(e.repo.statusMessage),e.repo.status=="ready"?e.progress=100:e.repo.status=="queue"?e.progress=10:e.repo.status=="downloaded"?e.progress=50:e.repo.status=="download"||e.repo.status=="preparing"?e.progress=25:e.repo.status=="anonymizing"&&(e.progress=75);var g=!["ready","removed","expired"].includes(e.repo.status);e.repo.status=="error"&&!e.rateLimitResetAt&&(g=!1),g&&(a=i.timeout(e.getStatus,2e3))}},h=>{e.error=h.data.error})},e.getStatus()},$i=function(e,t,o,i,s,r,a){Uu(),e.renderRedacted=Lu,e.sourceUrl="",e.workspaceOpen=!1,e.sourceUrlError="",e.previewStatus="idle",e.sourceLoading=!1,e.mobilePane="settings";let u=window.matchMedia?.("(max-width: 767px)");e.mobileWorkspace=!!u?.matches,u?.addEventListener&&bn()(u,"change",S=>{e.mobileWorkspace=S.matches}),e.selectMobilePane=S=>{e.mobilePane=S};let p=0,v=!1,h=new Set,g=(S,_=!1)=>!v&&S.generation===p&&S.url===e.sourceUrl.trim()&&S.connection===e.githubConnection&&(!_||S.branch===e.source.branch),m=()=>{let S={generation:p,url:e.sourceUrl.trim(),connection:e.githubConnection,branch:e.source.branch};return h.add(S),e.sourceLoading=!0,S},k=S=>{h.delete(S),v||(e.sourceLoading=[...h].some(_=>g(_)))};e.on("dispose",()=>{v=!0,p++});let T=null,w=S=>S.gistId&&!S.repo?"gist:"+S.gistId.toLowerCase():(S.owner+"/"+S.repo).toLowerCase()+(S.pullRequestId?"/pull/"+S.pullRequestId:""),b=Fr(e,["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"],"anonymize:"+(s.path?.()||"")),E=null,N=null,O=null;e.hostingReview=!1,e.previewExpanded=!1,e.taskValidationError="",e.editRepository=()=>{e.mobilePane="settings",e.previewExpanded=!1,nt(()=>document.querySelector(".anonymize-fields .is-invalid")?.focus())},e.submitRepository=S=>{if(e.taskValidationError="",!(e.sourceLoading||e.billingBusy||e.hostingSaving||e.billingPending)){if(bt()||e.anonymize?.invalid||e.sourceUrlError){e.taskValidationError="Check the highlighted fields before continuing.",e.editRepository();return}return e.hostingNeedsPayment()?e.checkoutRepository(Ei(e.hostingChoice())?e.hostingChoice():""):e.anonymizeRepo(S)}},e.hostingPayment=!1,e.hostingAlternatives=!1,e.hostingPrice=S=>S.amount==null?"Price shown at checkout":new Intl.NumberFormat(void 0,{style:"currency",currency:S.currency,minimumFractionDigits:0,maximumFractionDigits:2}).format(S.amount/100)+(S.interval==="year"?" billed annually":" billed monthly"),e.hostingPlan="",e.hostingSaving=!1,e.selectedHostingPlan=()=>e.authorPlans().find(S=>S.id===e.hostingPlan)||e.hostingSubscriptionPlan?.();let q=()=>t.get("/api/user/quota").then(S=>{e.hostingQuota=S.data});Ni(e,t,async()=>{await q(),e.hostingQuotaBlocked=!1},{confirmedMessage:"Hosting status refreshed. Your draft is ready to continue."}),q().catch(()=>{}),e.authorPlans=()=>(e.billing?.plans||[]).filter(S=>["author_monthly","author_annual"].includes(S.id)),e.conferenceHosting=()=>!!(e.conference&&e.conference_data?.hosting),e.hasAuthorHosting=()=>["author_monthly","author_annual"].includes(e.billing?.allowance?.plan),e.hostingNeedsPayment=()=>!e.billing?.enabled||e.detectedType!=="repo"||e.hasAuthorHosting()||e.isUpdate&&e.role!=="owner"?!1:!!(e.options?.expirationMode==="never"&&!e._existingNever&&!e.repositoryGrants("repo_never").length||!e.conferenceHosting()&&e.hostingQuotaBlocked),e.repositoryGrants=S=>(e.billing?.grants||[]).filter(_=>_.planId===S&&_.scope===`repo:${e.repoId}`&&["active","paid","past_due"].includes(_.status)&&new Date(_.until).getTime()>Date.now()),e.repositoryAddonPlans=()=>(e.billing?.plans||[]).filter(S=>Ei(S.id)&&(["repo_extend","repo_pack"].includes(S.id)||!e.repositoryGrants(S.id).length)),e.hostingOneTimePlans=()=>{let S=_=>_.map(F=>(e.billing?.plans||[]).find(Q=>Q.id===F&&!e.repositoryGrants(F).length)).filter(Boolean);return e.options?.expirationMode==="never"&&!e._existingNever&&!e.repositoryGrants("repo_never").length?S(["repo_never"]):e.hostingQuotaBlocked&&!e.conferenceHosting()?S(["repo_slot","repo_pack"]):[]},e.hostingOneTime=()=>e.hostingOneTimePlans()[0],e.neverExpireTag=()=>{if(e.hasAuthorHosting())return"Included in your subscription";if(e.repositoryGrants("repo_never").length)return"Paid for this repository";let S=(e.billing?.plans||[]).find(_=>_.id==="repo_never");return S?.amount!=null?`${e.billingAmount(S)} once, or with a subscription`:"Subscription or one-time add-on"},e.hostingCycle="author_annual",e.hostingSubscriptionPlan=()=>e.authorPlans().find(S=>S.id===e.hostingCycle)||e.authorPlans().find(S=>S.interval==="year")||e.authorPlans()[0],e.hostingAnnualSavings=()=>{let S=e.authorPlans().find(F=>F.interval==="month")?.amount,_=e.authorPlans().find(F=>F.interval==="year")?.amount;return S&&_&&_e.hostingOneTimePlans().concat(e.authorPlans().length?[e.hostingSubscriptionPlan()]:[]),e.hostingOptionName=S=>({repo_slot:"Add this repository",repo_pack:"Paper pack",repo_never:"Never expire",author_annual:"Author subscription",author_monthly:"Author subscription"})[S.id]||S.name,e.hostingOptionBlurb=S=>({repo_slot:"Hosted outside your free repositories. Refresh it by hand.",repo_pack:"Adds automatic updates for 180 days and keeps the link online for a year.",repo_never:"This link never expires. No subscription."})[S.id]||`${S.repositories} repositories, ${e.billingBytes(S.storage)}, automatic updates and links that never expire.`,e.hostingChoice=()=>{let S=e.hostingOneTimePlans();return S.some(_=>_.id===e.hostingPlan)||e.authorPlans().some(_=>_.id===e.hostingPlan)?e.hostingPlan:S[0]?.id||e.hostingSubscriptionPlan()?.id||""},e.checkoutRepository=async(S="")=>{if(!(e.hostingSaving||e.billingBusy||!e.billing?.csrf||e.sourceLoading)){e.hostingSaving=!0,e.billingError="";try{let _=b.checkpoint(),F=JSON.stringify(_);(!N||F!==O)&&(N=(await t.post("/api/billing/draft",{path:s.path(),values:_},{headers:{"x-csrf-token":e.billing.csrf}})).data.id,O=F);let Q=e.authorPlans().find(pe=>pe.id===e.hostingPlan)||e.hostingSubscriptionPlan();if(!S&&!Q)throw new Error("No author plan available");await e.checkout(S||Q.id,S?e.repoId:"",{draftId:N})}catch{e.billingError="Your draft could not be saved for checkout. Your form is unchanged. Please try again."}finally{e.hostingSaving=!1}}},e.useDatedHosting=()=>{e.options.expirationMode="remove"},e.discardDraft=async()=>{b.discard(),e.workspaceOpen=!!e.sourceUrl,e.error=null,e.sourceUrl?await e.urlSelected(!0):(p++,e.sourceLoading=!1,e.detectedType=null,e.details=null,e.sourceUrlError="",V.cancel(),ne.cancel(),Le.cancel(),e.previewStatus="idle")},e.githubConnection=void 0,e.githubConnections=null,e.gistOAuthRequired=!1,e.gistAppRequired=!1;let M=()=>{let S={};for(let _ of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])S[_]=e[_];sessionStorage.setItem("github-access-draft",JSON.stringify({path:s.path(),savedAt:Date.now(),draft:S}))};e.connectGistApp=()=>{M(),window.location.href="/github/app/login?returnTo="+encodeURIComponent(s.path())},e.connectGistOAuth=()=>{M(),window.location.href="/github/login?returnTo="+encodeURIComponent(s.path())},e.grantGitHubAccess=()=>{M();let S=s.path(),_=he(e.sourceUrl)||"",F=e.githubConnections?.appConnected?"/github/app/install":"/github/app/login";window.location.href=F+"?returnTo="+encodeURIComponent(S)+"&repository="+encodeURIComponent(_)+"&install=1"},e.chooseGitHubConnection=async S=>{e.githubConnection=S,e.readme="",e.sourceUrl&&await Pe()},e.detectedType=null,e.repoId="",e.pullRequestId="",e.gistId="",e.terms="",e.defaultTerms="",e.branches=[],e.source={branch:"",commit:""},e.options={expirationMode:"remove",expirationDate:new Date,update:!1,image:!0,pdf:!0,notebook:!0,link:!0,body:!0,title:!0,origin:!1,diff:!0,content:!0,comments:!0,username:!0,date:!0};function G(){let S=new Date;return S.setMonth(S.getMonth()+6),S}e.options.expirationDate=G();function de(S){let _=S.getFullYear(),F=String(S.getMonth()+1).padStart(2,"0"),Q=String(S.getDate()).padStart(2,"0");return`${_}-${F}-${Q}`}e.minExpirationDate=de(new Date);let re=()=>{let S=new Date,_=new Date(S);if(_.setFullYear(_.getFullYear()+1),e.billing?.enabled&&e.detectedType==="repo"&&!e.hasAuthorHosting()){_=new Date(S),_.setMonth(_.getMonth()+(e.billing.freeExpirationMonths||5));for(let pe of e.repositoryGrants("repo_extend"))new Date(pe.until)>_&&(_=new Date(pe.until));e.conference_data?.endDate&&new Date(e.conference_data.endDate)>_&&(_=new Date(e.conference_data.endDate)),e._savedExpirationDate&&e._savedExpirationDate>_&&(_=new Date(e._savedExpirationDate));let F=e.options?.expirationDate,Q=e._savedExpirationDate&&F instanceof Date&&F.getTime()===e._savedExpirationDate.getTime();F instanceof Date&&F>_&&!Q&&(e.options.expirationDate=new Date(_))}e.maxExpirationDate=de(_)};re(),e.watch(()=>[e.billing,e.repoId,e.conference_data,e.isUpdate,e._savedExpirationDate,e.options?.expirationMode,e.detectedType],re,!0,!1),e.anonymize_readme="",e.readme="",e.html_readme="",e.isUpdate=!1,e.previousConfigurations=[],e.previousConfigurationId="";let D,X=S=>String(S||"").replace(/\/$/,"").replace(/\.git$/i,"").toLowerCase();async function le(){if(e.isUpdate||i.repoId||i.pullRequestId||i.gistId)return;let S={generation:p,url:e.sourceUrl.trim(),connection:e.githubConnection};try{D||(D=t.get("/api/user/anonymized_repositories").then(Q=>Q.data));let _=await D;if(!g(S))return;let F=X(he(S.url));e.previousConfigurations=_.filter(Q=>Q.repoId&&Q.options&&X(Q.source?.fullName)===F).sort((Q,pe)=>(Date.parse(pe.anonymizeDate)||0)-(Date.parse(Q.anonymizeDate)||0)),e.previousConfigurationId=e.previousConfigurations[0]?.repoId||""}catch{D=void 0}}e.existingConfigurationUrl=()=>{let S=e.previousConfigurations.find(_=>_.repoId===e.previousConfigurationId);return S?"/anonymize/"+encodeURIComponent(S.repoId):null};function Ee(S){t.get("/api/user/default").then(_=>{let F=_.data;F.terms&&(e.defaultTerms=F.terms.join(` -`)),e.options=Object.assign({},e.options,F.options),e.options.expirationDate=F.options&&F.options.expirationDate?new Date(F.options.expirationDate):G(),!i.repoId&&!i.pullRequestId&&!i.gistId&&!e.anonymize?.terms?.dirty&&(e.terms=e.defaultTerms),S&&S()})}function ae(S,_,F){e.anonymize&&e.anonymize[S]&&e.anonymize[S].setValidity(_,F)}function he(S){try{let _=parseGithubUrl(S);if(_&&_.owner&&_.repo)return _.owner+"/"+_.repo}catch{}return null}e.accessRepairAllowed=!1,e.repairingGitHubAccess=!1,e.accessRepairMessage="",e.repairGitHubAccess=async()=>{if(!e.accessRepairAllowed||e.repairingGitHubAccess||!e.githubConnections?.appEnabled||!i.repoId||e.role!=="owner"||e.githubConnection!=="github-app"||he(e.sourceUrl)!==e._originalFullName)return;e.repairingGitHubAccess=!0,e.accessRepairMessage="";let S=m();try{let _=await t.get("/github/connections");if(e.githubConnections=_.data,!_.data.appEnabled)return;let F=await t.post("/github/connections/migrate",{type:"repository",id:i.repoId,connection:"github-app"},{headers:{"X-CSRF-Token":_.data.csrf}});if(!g(S))return;e.error=null,F.data.fullName&&(e._originalFullName=F.data.fullName,e.source.fullName=F.data.fullName,e.sourceUrl="https://github.com/"+F.data.fullName),e.accessRepairMessage="GitHub access repaired. Your anonymous URL and published commit are unchanged.",await e.urlSelected(!0)}catch{g(S)&&(e.accessRepairMessage="Unable to repair GitHub access. Check the App's repository permissions in Manage access, then retry. Your published snapshot has not been replaced.")}finally{e.repairingGitHubAccess=!1,k(S)}},e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,e.reconnectSource=async()=>{if(confirm("Reconnect to the repository currently at this GitHub URL? Review its branch and commit before saving. Saving will replace the published snapshot.")){e.reconnectingSource=!0,e.reconnectRepositoryId=void 0,e.source.commit="",e.source.branch="",e.readme="",e.branches=[];try{await Re()}catch{}}};function Ce(){return e.reconnectingSource||!e.isUpdate||!e._originalRepositoryID?void 0:he(e.sourceUrl)===e._originalFullName?e._originalRepositoryID:void 0}async function Pe(){e._preservingDraft=!0;try{await e.urlSelected(!0)}finally{e._preservingDraft=!1}}async function Ne(){let S=new URLSearchParams(window.location.search).get("billingDraft");if(S){b.restore();try{let F=(await t.get("/api/billing/draft/"+encodeURIComponent(S))).data;if(F.path!==s.path())throw new Error("Wrong task");E=F.values.conference||null;for(let Q of["sourceUrl","terms","repoId","source","options","conference","githubConnection"])Object.prototype.hasOwnProperty.call(F.values,Q)&&(e[Q]=F.values[Q]);return e.options?.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate)),N=F.id,O=JSON.stringify(b.checkpoint()),e.draftRestored=!0,e.hostingReview=!0,e.sourceUrl&&await Pe(),s.replace?.(s.path()),!0}catch{e.billingError="The checkout draft could not be restored. Retry by reloading this page; any local draft is still available."}}let _;try{_=JSON.parse(sessionStorage.getItem("github-access-draft")||"null")}catch{return!1}if(!_||_.path!==s.path()||Date.now()-_.savedAt>=30*6e4)return b.restore()?(e.sourceUrl&&await Pe(),!0):!1;b.restore();for(let F of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])Object.prototype.hasOwnProperty.call(_.draft,F)&&(e[F]=_.draft[F]);return e.options.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate)),await Pe(),sessionStorage.removeItem("github-access-draft"),!0}Ee(()=>{!i.repoId&&!i.pullRequestId&&!i.gistId&&a(Ne,0),i.repoId&&i.repoId!=""&&(e.isUpdate=!0,e.detectedType="repo",e.repoId=i.repoId,t.get("/api/repo/"+e.repoId).then(async S=>{e.accessRepairAllowed=!["removed","archived","preparing","queue","download","removing","expiring"].includes(S.data.status),e.githubConnection=S.data.connection||"oauth",e.sourceUrl="https://github.com/"+S.data.source.fullName,e._originalFullName=S.data.source.fullName,e.terms=S.data.options.terms.filter(_=>_).join(` -`),e.source=S.data.source,e.role=S.data.role||"owner",e._existingNever=S.data.options.expirationMode==="never",e._savedExpirationDate=S.data.options.expirationDate?new Date(S.data.options.expirationDate):null,e.coauthors=S.data.coauthors||[],e._originalBranch=S.data.source.branch,e.options=Object.assign({},e.options,S.data.options),e.conference=S.data.conference,e._originalConference=S.data.conference,e.repositoryID=S.data.source.repositoryID,e._originalRepositoryID=S.data.source.repositoryID,S.data.options.expirationDate&&(e.options.expirationDate=new Date(S.data.options.expirationDate)),T=w(parseGithubUrl(e.sourceUrl)),!await Ne()&&(await Promise.all([Re(),Qe()]),j())},()=>{s.url("/404")})),i.pullRequestId&&i.pullRequestId!=""&&(e.isUpdate=!0,e.detectedType="pr",e.pullRequestId=i.pullRequestId,t.get("/api/pr/"+e.pullRequestId).then(async S=>{if(e.githubConnection=S.data.connection||"oauth",e.sourceUrl="https://github.com/"+S.data.source.repositoryFullName+"/pull/"+S.data.source.pullRequestId,e.terms=S.data.options.terms.filter(_=>_).join(` -`),e.source=S.data.source,e.options=Object.assign({},e.options,S.data.options),e.conference=S.data.conference,e._originalConference=S.data.conference,S.data.options.expirationDate&&(e.options.expirationDate=new Date(S.data.options.expirationDate)),T=w(parseGithubUrl(e.sourceUrl)),!await Ne())try{await ee()}catch{}},()=>{s.url("/404")})),i.gistId&&i.gistId!=""&&(e.isUpdate=!0,e.detectedType="gist",e.gistId=i.gistId,t.get("/api/gist/"+e.gistId).then(async S=>{e.sourceUrl="https://gist.github.com/"+S.data.source.gistId,e.terms=S.data.options.terms.filter(_=>_).join(` -`),e.source=S.data.source,e.options=Object.assign({},e.options,S.data.options),e.conference=S.data.conference,e._originalConference=S.data.conference,S.data.options.expirationDate&&(e.options.expirationDate=new Date(S.data.options.expirationDate)),T=w(parseGithubUrl(e.sourceUrl)),!await Ne()&&await fe()},()=>{s.url("/404")}))}),t.get("/github/connections").then(S=>{e.githubConnections=S.data,!i.repoId&&!i.pullRequestId&&!i.gistId&&e.githubConnection===void 0&&S.data.appEnabled&&S.data.appConnected&&(e.githubConnection="github-app",e.sourceUrl&&e.workspaceOpen&&Pe())}).catch(()=>{}),e.urlSelected=async(S=!1)=>{let _=++p;e.previousConfigurations=[],e.previousConfigurationId="";let F;try{F=parseGithubUrl(e.sourceUrl.trim())}catch{e.sourceLoading=!1,V.cancel(),ne.cancel(),Le.cancel(),e.previewStatus="idle",e.sourceUrlError=e.sourceUrl?"Please provide a valid GitHub URL.":"",ae("sourceUrl","github",!1);return}let Q=w(F),pe=S||T===Q;T=Q,e.sourceUrlError="",ae("sourceUrl","github",!0);let be=document.activeElement?.id==="sourceUrl-landing";e.workspaceOpen=!0,setTimeout(()=>{let Xe=window.document.getElementById("sourceUrl");if(Xe){try{Xe.setSelectionRange(0,0)}catch{}Xe.scrollLeft=0}},50),be&&a(()=>document.getElementById("sourceUrl")?.focus(),0),e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,!pe&&!e.isUpdate&&(e.repoId="",e.pullRequestId="",e.gistId=""),e.details=null,e.branches=[],pe||(e.source={type:"GitHubStream",branch:"",commit:""}),V.cancel(),ne.cancel(),Le.cancel(),K.clear(),ye.clear(),e.previewStatus="idle",e.anonymize_readme="",e.readme="",e.html_readme="",e.detectedType=null,e.gistOAuthRequired=!1,e.gistAppRequired=!1,e._preservingDraft=pe;try{F.gistId&&!F.repo?(e.detectedType="gist",e.source={gistId:F.gistId},await fe()):F.pullRequestId?(e.detectedType="pr",e.source={repositoryFullName:F.owner+"/"+F.repo,pullRequestId:F.pullRequestId},await ee()):(e.detectedType="repo",le(),await Promise.all([Re(),Qe()]),j())}catch{}finally{_===p&&(e._preservingDraft=!1)}$('[data-toggle="tooltip"]').tooltip()},$('[data-toggle="tooltip"]').tooltip(),e.watch("source.branch",async()=>{if(e.detectedType!=="repo")return;let S=e.branches.filter(F=>F.name==e.source.branch)[0];if(!S)return;!(!e.reconnectingSource&&e.isUpdate&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=S.commit),e.readme=S.readme,await Qe(),j()}),e.getBranches=async S=>{let _=parseGithubUrl(e.sourceUrl),F=m();try{let Q=await t.get(`/api/repo/${_.owner}/${_.repo}/branches`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&he(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,force:S===!0||e.reconnectingSource?"1":"0",repositoryID:Ce()}});if(!g(F))return;e.branches=Q.data,e.sourceUnreachable=!1,e.source.branch||(e.source.branch=e.details.defaultBranch);let pe=e.branches.filter(be=>be.name==e.source.branch);pe.length>0&&(!(!e.reconnectingSource&&!S&&e.isUpdate&&!e.options.update&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=pe[0].commit),e.readme=pe[0].readme,await Qe(S))}catch(Q){if(!g(F))return;e.branches=[],e.sourceUnreachable=Q&&(Q.status===404||Q.data&&Q.data.error==="repo_not_found");let pe=Q&&Q.data&&Q.data.error||(Q&&Q.status===404?"repo_not_found":"unknown_error");r("ERRORS."+pe).then(be=>{e.toasts=e.toasts||[],e.addToast({title:"Error",date:new Date,body:be}),e.error=be},console.error),typeof ae=="function"&&ae("sourceUrl","missing",!1)}finally{k(F)}};async function Re(){let S=parseGithubUrl(e.sourceUrl),_=m();try{Ye();let F=await t.get(`/api/repo/${S.owner}/${S.repo}/`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&he(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,repositoryID:Ce(),force:"1"}});if(!g(_))return;e.details=F.data,e.reconnectingSource&&(e.reconnectRepositoryId=e.details.externalId),e.details&&e.details.id&&(e.repositoryID=e.details.id),e.repoId||(e.repoId=e.details.repo+"-"+generateRandomId(4)),await e.getBranches(e.reconnectingSource)}catch(F){if(!g(_))return;throw F.data&&(r("ERRORS."+F.data.error).then(Q=>{e.addToast({title:"Error",date:new Date,body:Q}),e.error=Q},console.error),lt(F.data.error)),ae("sourceUrl","missing",!1),F}finally{k(_)}}async function Qe(S){if(e.readme&&!S)return e.readme;let _=parseGithubUrl(e.sourceUrl),F=m();try{let Q=await t.get(`/api/repo/${_.owner}/${_.repo}/readme`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&he(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,force:S===!0?"1":"0",branch:e.source.branch,repositoryID:Ce()}});g(F,!0)&&(e.readme=Q.data)}catch{g(F,!0)&&(e.readme="")}finally{k(F)}}let Ke={magicalBraces:!0},rt=S=>S.startsWith("/")&&!S.endsWith("/")&&On(so(S.slice(1),Ke),Ke)===S.slice(1),Ze=()=>Object.keys(e.preserve.picked).filter(S=>e.preserve.picked[S]).sort().map(S=>"/"+On(S,Ke)),U=S=>"/"+On(S,Ke)+"/**",oe=S=>"!/"+On(S,Ke)+"/",Z=()=>String(e.preserve.patterns||"").split(` -`).map(S=>S.trim()).filter(Boolean),te=null,L=0,x=null,H=()=>!1;function ue(){let S=L+"\0"+e.preserve.patterns;if(S!==x){x=S;try{H=ua(da([...Ze(),...Z()]))}catch{H=()=>!1}}return H}function we(S){let _=new Map([["",{dirs:[],files:[]}]]);for(let F of S){let Q=F.split("/"),pe="";for(let be=0;be_.startsWith(S+"/"))),te.descendants.get(S)}let C=S=>ue()(S);function R(S){let _=Oe(S),F=0;for(let Q of _)C(Q)&&F++;return F===0?"none":F===_.length?"all":"some"}e.preserve={open:!1,loading:!1,error:"",truncated:!1,commit:"",search:"",expanded:{},picked:{},patterns:"",patternsOpen:!1},e.preserveSummary=()=>{let S=(e.options?.preserveFiles||[]).map(_=>String(_).trim()).filter(Boolean).map(_=>rt(_)?so(_.slice(1),Ke):_);return S.length?S.slice(0,2).join(", ")+(S.length>2?` and ${S.length-2} more`:""):"None. Every file is redacted."};async function I(){let S=e.source?.commit;if(!(te&&e.preserve.commit===S)){e.preserve.loading=!0,e.preserve.error="",te=null;try{let _=parseGithubUrl(e.sourceUrl),F=await t.get(`/api/repo/${_.owner}/${_.repo}/tree`,{params:{commit:S,connection:e.githubConnection,anonymizedRepoId:e.isUpdate&&i.repoId&&he(e.sourceUrl)===e._originalFullName?i.repoId:void 0,repositoryID:Ce()}});if(e.source?.commit!==S)return;te=go(we(F.data.files||[])),e.preserve.commit=S,e.preserve.truncated=!!F.data.truncated}catch{e.preserve.error="The file list could not be loaded from GitHub. You can still use patterns.",e.preserve.patternsOpen=!0}finally{e.preserve.loading=!1}}}e.openPreserveFiles=()=>{let S={},_=[];for(let Q of e.options?.preserveFiles||[]){let pe=String(Q).trim();pe&&(!_.length&&rt(pe)?S[so(pe.slice(1),Ke)]=!0:_.push(pe))}let F={};for(let Q of Object.keys(S)){let pe=Q.split("/");for(let be=1;be0}),L++,a(()=>{let Q=document.getElementById("preserve-files-dialog");Q?.showModal&&!Q.open&&Q.showModal(),document.getElementById("preserve-files-search")?.focus()},0),I()},e.closePreserveFiles=()=>{document.getElementById("preserve-files-dialog")?.close?.(),e.preserve.open=!1},e.savePreserveFiles=()=>{e.options.preserveFiles=da([...Ze(),...Z()]),e.closePreserveFiles()},e.preserveRows=()=>{if(!te)return[];let S=ue(),_=(be,Xe,Yt)=>{let wt=!!e.preserve.picked[be],$n=S(be);return{kind:"file",path:be,label:Yt,depth:Xe,state:$n?"all":"none",locked:!wt&&$n,note:!wt&&$n?"matched by a pattern":wt&&!$n?"excluded by a pattern":""}},F=String(e.preserve.search||"").trim().toLowerCase();if(F)return te.files.filter(be=>be.toLowerCase().includes(F)).slice(0,300).map(be=>_(be,0,be));let Q=[],pe=(be,Xe)=>{let Yt=te.dirs.get(be);for(let wt of Yt.dirs){let $n=!!e.preserve.expanded[wt],va=Z().includes(U(wt));Q.push({kind:"dir",path:wt,label:wt.slice(be?be.length+1:0)+"/",depth:Xe,open:$n,state:R(wt),locked:!1,note:va?"whole folder":""}),$n&&pe(wt,Xe+1)}for(let wt of Yt.files)Q.push(_(wt,Xe,wt.slice(be?be.length+1:0)))};return pe("",0),Q},e.preserveCount=()=>te?te.files.filter(C).length:0,e.togglePreserveDir=S=>{e.preserve.expanded[S]=!e.preserve.expanded[S]},e.togglePreserveFile=S=>{e.preserve.picked[S]=!e.preserve.picked[S],L++},e.togglePreserveFolder=S=>{let _=U(S),F=oe(S),Q=Z().filter(be=>be!==_&&be!==F),pe=R(S)==="all"||Z().includes(_);for(let be of Oe(S))e.preserve.picked[be]=!1;L++,e.preserve.patterns=(pe?Q:[...Q,_]).join(` -`),pe&&Oe(S).some(C)&&(e.preserve.patterns=[...Q,F].join(` -`))};let W=[".github","","docs"].flatMap(S=>["README.md","README","README.markdown","README.rst","README.txt","readme.md"].map(_=>(S?S+"/":"")+_));e.readmePreserved=()=>{if(e.detectedType!=="repo")return!1;let S=(e.options?.preserveFiles||[]).map(_=>String(_).trim()).filter(Boolean);if(!S.length)return!1;try{let _=ua(S);return W.some(F=>_(F))}catch{return!1}};function z(){let S={terms:e.terms&&!e.readmePreserved()?e.terms.split(` -`):[],image:!!e.options.image,link:!!e.options.link,repoId:e.repoId};e.source&&e.source.branch&&(S.branchName=e.source.branch);try{let _=parseGithubUrl(e.sourceUrl);S.repoName=`${_.owner}/${_.repo}`}catch{}return S}function Y(S,_,F){let Q=null,pe=0,be=()=>{if(e.detectedType!==S)return;Q&&a.cancel(Q);let Xe=++pe;e.previewStatus="loading",Q=a(()=>{Q=null;let Yt=_();if(!Yt){e.previewStatus="idle";return}t.post("/api/anonymize-preview",Yt).then(wt=>{Xe===pe&&(F(wt.data,Yt),e.previewStatus="ready")}).catch(()=>{Xe===pe&&(e.previewStatus="error")})},200)};return be.cancel=()=>{pe++,Q&&a.cancel(Q),Q=null},e.on("dispose",be.cancel),be}e.retryPreview=()=>{e.detectedType==="repo"&&V(),e.detectedType==="pr"&&ne(),e.detectedType==="gist"&&Le()};let V=Y("repo",()=>e.readme?{content:e.readme,options:z()}:null,S=>{if(typeof S?.content!="string")throw Error("Invalid preview response");e.anonymize_readme=S.content;let _="";try{let Q=parseGithubUrl(e.sourceUrl),pe=e.source.branch||e.details&&e.details.defaultBranch||"main";_=`https://github.com/${Q.owner}/${Q.repo}/raw/${pe}/`}catch{}let F=renderMD(e.anonymize_readme,_);e.html_readme=F,a(Prism.highlightAll,150)});function j(){!e.anonymize||!e.anonymize.terms||V()}async function ee(){let S=parseGithubUrl(e.sourceUrl),_=m();try{Ye();let F=await t.get(`/api/pr/${S.owner}/${S.repo}/${S.pullRequestId}`,{params:{connection:e.githubConnection}});if(!g(_))return;e.details=F.data,e.pullRequestId||(e.pullRequestId=S.repo+"-PR"+S.pullRequestId+"-"+generateRandomId(4))}catch(F){if(!g(_))return;throw F.data&&(r("ERRORS."+F.data.error).then(Q=>{e.addToast({title:"Error",date:new Date,body:Q}),e.error=Q},console.error),lt(F.data.error)),ae("sourceUrl","missing",!1),F}finally{k(_)}}let K=et(new Map);function me(){let S=new Set,_=e.details&&e.details.pullRequest;if(!_)return S;typeof _.title=="string"&&S.add(_.title),typeof _.body=="string"&&S.add(_.body),typeof _.diff=="string"&&S.add(_.diff);let F=_.comments||[];for(let Q of F)typeof Q.author=="string"&&S.add(Q.author),typeof Q.body=="string"&&S.add(Q.body);return S}let ne=Y("pr",()=>{let S=me(),_=Array.from(S);return _.length===0?null:{contents:_,options:z()}},(S,_)=>{if(!Array.isArray(S?.contents)||S.contents.length!==_.contents.length||S.contents.some(pe=>typeof pe!="string"))throw Error("Invalid preview response");let F=_.contents,Q=new Map;for(let pe=0;peK.set(be,pe))});e.anonymizePrContent=function(S){return S&&(K.has(S)?K.get(S):"")};async function fe(){let S=parseGithubUrl(e.sourceUrl),_=m();try{Ye(),e.gistOAuthRequired=!1,e.gistAppRequired=!1;let F=await t.get(`/api/gist/source/${S.gistId}`);if(!g(_))return;e.details=F.data,e.gistId||(e.gistId="gist-"+S.gistId.substring(0,6)+"-"+generateRandomId(4))}catch(F){if(!g(_))return;if(F.data?.error==="github_app_reconnect_required"){e.gistAppRequired=!0,ae("sourceUrl","missing",!1);return}if(F.data?.error==="github_oauth_required"){e.gistOAuthRequired=!0,ae("sourceUrl","missing",!1);return}throw F.data&&(r("ERRORS."+F.data.error).then(Q=>{e.addToast({title:"Error",date:new Date,body:Q}),e.error=Q},console.error),lt(F.data.error)),ae("sourceUrl","missing",!1),F}finally{k(_)}}let ye=et(new Map);function Ae(){let S=new Set,_=e.details&&e.details.gist;if(!_)return S;typeof _.description=="string"&&S.add(_.description),typeof _.ownerLogin=="string"&&S.add(_.ownerLogin);let F=_.files||[];for(let pe of F)typeof pe.filename=="string"&&S.add(pe.filename),typeof pe.content=="string"&&S.add(pe.content);let Q=_.comments||[];for(let pe of Q)typeof pe.author=="string"&&S.add(pe.author),typeof pe.body=="string"&&S.add(pe.body);return S}let Le=Y("gist",()=>{let S=Ae(),_=Array.from(S);return _.length===0?null:{contents:_,options:z()}},(S,_)=>{if(!Array.isArray(S?.contents)||S.contents.length!==_.contents.length||S.contents.some(pe=>typeof pe!="string"))throw Error("Invalid preview response");let F=_.contents,Q=new Map;for(let pe=0;peye.set(be,pe)),Be()});e.anonymizeGistContent=function(S){return S&&(ye.has(S)?ye.get(S):"")},e.previewGistFiles=[];function Be(){let S=e.details&&e.details.gist&&e.details.gist.files||[];e.previewGistFiles=S.map(_=>({filename:e.anonymizeGistContent(_.filename),content:e.anonymizeGistContent(_.content),language:_.language}))}e.watch("details.gist.files",Be,!0),e.watch("terms",Be);function st(){let S=e.conference;if(e.conference_data=null,!S)return;let _=S===E||e.isUpdate&&S===e._originalConference;S!==E&&(E=null),t.get("/api/conferences/"+S).then(F=>{e.conference===S&&(e.conference_data=F.data,e.conference_data.startDate=new Date(e.conference_data.startDate),e.conference_data.endDate=new Date(e.conference_data.endDate),!_&&(e.options.expirationDate=new Date(e.conference_data.endDate),e.options.expirationMode="remove",e.options.update=e.conference_data.options.update,e.options.image=e.conference_data.options.image,e.options.pdf=e.conference_data.options.pdf,e.options.notebook=e.conference_data.options.notebook,e.options.link=e.conference_data.options.link))},()=>{e.conference===S&&(e.conference_data=null)})}function Ye(){ae("repoId","used",!0),ae("repoId","format",!0),ae("pullRequestId","used",!0),ae("pullRequestId","format",!0),ae("gistId","used",!0),ae("gistId","format",!0),ae("sourceUrl","used",!0),ae("sourceUrl","missing",!0),ae("sourceUrl","access",!0),ae("sourceUrl","github",!0),ae("commit","exists",!0),ae("conference","activated",!0),ae("terms","format",!0),e.termHints=[]}function bt(){if(e.detectedType==="repo"&&e.options.expirationMode==="never")return!1;let S=e.anonymize&&e.anonymize.expirationDate;return!e.options.expirationDate||S&&S.invalid?(S&&S.setDirty&&S.setDirty(),e.error="Please choose a valid expiration date.",!0):!1}function lt(S){let _=e.detectedType==="pr"?"pullRequestId":e.detectedType==="gist"?"gistId":"repoId";switch(S){case"repoId_already_used":ae(_,"used",!1);break;case"invalid_repoId":ae(_,"format",!1);break;case"options_not_provided":ae(_,"format",!1);break;case"repo_already_anonymized":ae("sourceUrl","used",!1);break;case"invalid_terms_format":ae("terms","format",!1);break;case"repo_not_found":ae("sourceUrl","missing",!1);break;case"repo_not_accessible":ae("sourceUrl","access",!1);break;case"commit_not_found":ae("commit","exists",!1);break;case"conf_not_activated":ae("conference","activated",!1);break}}e.coauthors=e.coauthors||[],e.coauthorResults=[],e.coauthorError="",e.searchCoauthors=()=>{let S=(e.coauthorSearch||"").trim();if(e.coauthorError="",S.length<2){e.coauthorResults=[];return}t.get("/api/user/search/github-users",{params:{q:S}}).then(_=>{let F=new Set((e.coauthors||[]).map(Q=>(Q.username||"").toLowerCase()));e.coauthorResults=(_.data||[]).filter(Q=>!F.has((Q.username||"").toLowerCase()))},()=>{e.coauthorResults=[]})},e.addCoauthor=(S,_)=>{_&&_.preventDefault(),!(!S||!S.username)&&t.post("/api/repo/"+e.repoId+"/coauthors",{username:S.username}).then(F=>{e.coauthors=F.data||[],e.coauthorResults=[],e.coauthorSearch="",e.coauthorError=""},F=>{let Q=F&&F.data&&F.data.error||"unknown_error";e.coauthorError=Q})},e.removeCoauthor=S=>{!S||!S.username||confirm("Remove co-author "+S.username+"?")&&t.delete("/api/repo/"+e.repoId+"/coauthors/"+encodeURIComponent(S.username)).then(_=>{e.coauthors=_.data||[]},_=>{let F=_&&_.data&&_.data.error||"unknown_error";e.coauthorError=F})},e.anonymizeRepo=S=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(e.reconnectingSource&&!e.reconnectRepositoryId)return;if(bt()){e.editRepository();return}if(e.anonymize?.invalid||e.sourceUrlError){e.editRepository(),e.error="Please correct the highlighted fields before saving.";return}if(e.hostingNeedsPayment()&&e.options.expirationMode==="never"){e.hostingReview=!0,nt(()=>document.getElementById("repository-hosting")?.scrollIntoView({block:"center"}));return}let _=S.currentTarget||S.target.closest?.("button")||S.target;_.disabled=!0;let F=parseGithubUrl(e.sourceUrl),Q={repoId:e.repoId,terms:e.terms.trim().split(` -`).filter(be=>be),connection:e.githubConnection,fullName:`${F.owner}/${F.repo}`,repository:e.sourceUrl,reconnectRepositoryId:e.reconnectRepositoryId,options:e.options,source:e.source,conference:e.conference};e.details&&(Q.options.pageSource=e.details.pageSource),Ye();let pe=e.isUpdate?"/api/repo/"+e.repoId:"/api/repo/";t.post(pe,Q,{headers:{"Content-Type":"application/json"}}).then(()=>{b.clear(),window.location.href="/status/"+e.repoId},be=>{if(be.data){let Xe=["quota_exceeded","subscription_required_for_never_expiration"].includes(be.data.error);Xe||r("ERRORS."+be.data.error).then(Yt=>{e.error=Yt},console.error),lt(be.data.error),Xe&&(be.data.error==="subscription_required_for_never_expiration"&&(e._existingNever=!1),e.hostingQuotaBlocked=!0,e.hostingReview=!0,nt(()=>document.getElementById("repository-hosting")?.scrollIntoView({block:"center"})))}}).finally(()=>{_.disabled=!1})},e.anonymizeGist=S=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(bt())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let _=S.currentTarget||S.target.closest?.("button")||S.target;_.disabled=!0;let F=parseGithubUrl(e.sourceUrl),Q={gistId:e.gistId,terms:e.terms.trim().split(` -`).filter(be=>be),source:{gistId:F.gistId},options:e.options,conference:e.conference};Ye();let pe=e.isUpdate?"/api/gist/"+e.gistId:"/api/gist/";t.post(pe,Q,{headers:{"Content-Type":"application/json"}}).then(()=>{b.clear(),window.location.href="/gist/"+e.gistId},be=>{be.data&&(r("ERRORS."+be.data.error).then(Xe=>{e.error=Xe},console.error),lt(be.data.error))}).finally(()=>{_.disabled=!1})},e.anonymizePullRequest=S=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(bt())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let _=S.currentTarget||S.target.closest?.("button")||S.target;_.disabled=!0;let F=parseGithubUrl(e.sourceUrl),Q={pullRequestId:e.pullRequestId,connection:e.githubConnection,terms:e.terms.trim().split(` -`).filter(be=>be),source:{repositoryFullName:`${F.owner}/${F.repo}`,pullRequestId:F.pullRequestId},options:e.options,conference:e.conference};Ye();let pe=e.isUpdate?"/api/pr/"+e.pullRequestId:"/api/pr/";t.post(pe,Q,{headers:{"Content-Type":"application/json"}}).then(()=>{b.clear(),window.location.href="/pr/"+e.pullRequestId},be=>{be.data&&(r("ERRORS."+be.data.error).then(Xe=>{e.error=Xe},console.error),lt(be.data.error))}).finally(()=>{_.disabled=!1})},e.watch("conference",()=>{st()}),e.termHints=[],e.matchTermAsWritten=S=>{e.terms=qu(e.terms,S)},e.watch("options.preserveFiles",()=>{e.detectedType==="repo"&&V()}),e.watch("terms",()=>{e.termHints=Vu(e.terms),e.detectedType==="repo"&&j(),e.detectedType==="pr"&&ne(),e.detectedType==="gist"&&Le()}),e.watch("options.image",()=>{e.detectedType==="repo"&&j(),e.detectedType==="pr"&&ne(),e.detectedType==="gist"&&Le()}),e.watch("options.link",()=>{e.detectedType==="repo"&&j(),e.detectedType==="pr"&&ne(),e.detectedType==="gist"&&Le()}),e.watch("details",()=>{e.detectedType==="pr"&&ne(),e.detectedType==="gist"&&Le()},!0)},fa=function(e,t,o,i,s,r){let a=Tt();Uu();let u=bn();e.on("dark-mode",(U,oe)=>{e.aceOption&&(oe?e.aceOption.theme="nord_dark":e.aceOption.theme="chrome")});let p=0,v=null,h=null;e.fileLoadingSlow=!1,e.fileReceivedBytes=0;function g(){v&&(v.resolve(),v=null),h&&(a.timeout.cancel(h),h=null)}let m=!1;e.on("dispose",()=>{m=!0,p++,g(),k&&k.resolve()}),e.files=[],e.isMac=/Mac|iPhone|iPad|iPod/.test(navigator.platform||navigator.userAgent),e.fileSearchQuery="",e.fileSearchResults=null,e.fileSearchLoading=!1,u(document,"click",U=>{e.symbolsOpen&&!U.target.closest?.(".symbols")&&(e.symbolsOpen=!1),e.moreOpen&&!U.target.closest?.(".tb-more")&&(e.moreOpen=!1),e.tocOpen&&!U.target.closest?.(".tb-toc-m")&&(e.tocOpen=!1),e.gotoOpen&&U.target.isConnected&&!U.target.closest?.(".goto-pop, .btn-goto, .tb-more")&&(e.gotoOpen=!1),e.accountOpen&&!U.target.closest?.(".acct")&&(e.accountOpen=!1),e.helpOpen&&!U.target.closest?.(".vb-help")&&(e.helpOpen=!1)}),u(document,"keydown",U=>{U.key==="Escape"&&(e.symbolsOpen=!1,e.moreOpen=!1,e.tocOpen=!1,e.gotoOpen=!1,e.accountOpen=!1,e.helpOpen=!1),(U.ctrlKey||U.metaKey)&&!U.altKey&&U.key&&U.key.toLowerCase()==="f"&&e.type==="html"&&window.document.querySelector(".reading-layout")&&(U.preventDefault(),e.toggleMdFind(!0))}),u(document,"keydown",function(U){if((U.metaKey||U.ctrlKey)&&U.key==="k"){U.preventDefault();var oe=document.querySelector(".tree-search-input");oe&&(oe.focus(),oe.select())}});var k=null;e.onFileSearchChange=function(){k&&(k.resolve(),k=null);let U=e.fileSearchQuery;if(!U||U.length<2){e.fileSearchResults=null,e.fileSearchLoading=!1;return}e.fileSearchLoading=!0;let oe=r.defer();k=oe,t.get(`/api/repo/${e.repoId}/files/search?q=${encodeURIComponent(U)}`,{timeout:oe.promise}).then(function(Z){if(!(m||k!==oe)){k=null,e.fileSearchLoading=!1;var te={};e.files.forEach(function(j){te[(j.path||"")+"/"+j.name]=!0});for(var L=[],x={},H=0;H0&&e.files.push.apply(e.files,L);for(var W=[],z=0;z0&&e.files.push.apply(e.files,W),e.fileSearchResults=Z.data}},function(){!m&&k===oe&&(k=null,e.fileSearchLoading=!1,e.fileSearchResults=[])})};let T={yml:"yaml",txt:"text",py:"python",js:"javascript",ts:"typescript"},w=["license","txt"],b=["png","jpg","jpeg","gif","svg","ico","bmp","tiff","tif","webp","avif","heif","heic"],E=["wav","mp3","ogg","wma","flac","aac","m4a"],N=["mp4","avi","webm","mov","mpg","mpeg","mkv","flv","wmv","3gp","3g2","m4v","f4v","f4p","f4a","f4b"];e.on("routeUpdate",function(U,oe){if(e.repoId!=i.repoId)return Ze();if((i.path||"")!=e.filePath){window.matchMedia?.("(max-width: 767px)").matches&&(e.sidebarCollapsed=!0),e.filePath=i.path||"",e.paths=e.filePath.split("/").filter(Z=>Z&&Z.trim().length>0),rt();for(let Z=0;Z0?e.paths.slice(0,Z).join("/"):"";e.files.some(x=>x.path===te)||e.getFiles(te)}}});function O(){if(e.paths[0]!="")return;let U=["readme.md","readme.txt","readme.org","readme.1st","readme"],oe={};for(let te of e.files)te.name.toLowerCase().indexOf("readme")>-1&&(oe[te.name.toLowerCase()]=te.name);let Z=null;for(let te of U)if(oe[te]){Z=te;break}if(!Z&&Object.keys(oe).length>0&&(Z=Object.keys(oe)[0]),Z){let te=o.url();te[te.length-1]!="/"&&(te+="/"),o.url(te+encodePathForUrl(oe[Z]))}}e.fileCounts=null;let q=0,M=new Set,G=!1;e.getFiles=function(U,oe=!1){let Z=e.repoId,te=q;return t.get(`/api/repo/${e.repoId}/files/?path=${encodeURIComponent(U)}&v=${e.options.lastUpdateDate}`).then(function(L){if(m||Z!==e.repoId||te!==q)return[];let x=U||"";return e.files=e.files.filter(H=>H.path!==x),e.files.push(...L.data),de(x,te),L.data},function(L){if(m||Z!==e.repoId||te!==q)return[];oe||(e.type="error",e.content=pa(L),e.files=[])})};function de(U,oe){if(G||M.has(U))return;M.add(U);let Z=e.repoId;t.get(`/api/repo/${e.repoId}/files/counts?path=${encodeURIComponent(U)}`).then(function(te){m||Z!==e.repoId||oe!==q||(e.fileCounts={...e.fileCounts,...te.data})},function(){m||Z!==e.repoId||oe!==q||(G=!0)})}function re(){return e.files.filter(U=>U.name==e.paths[e.paths.length-1]&&U.path==e.paths.slice(0,e.paths.length-1).join("/"))[0]}var D=null;e.on("dispose",function(){D&&a.interval.cancel(D)});function X(U){if(m)return;let oe=e.repoId;t.get(`/api/repo/${e.repoId}/options`).then(Z=>{if(!(m||oe!==e.repoId)){if(e.options=Z.data,e.options.url){window.location=e.options.url;return}U&&U(Z.data)}},Z=>{if(!(m||oe!==e.repoId)){var te=Z.data||{};if(te.error==="rate_limited"&&te.resetAt){let x=function(){var H=Math.max(0,Math.ceil((e.rateLimitResetAt-Date.now())/1e3));if(H<=0)e.rateLimitCountdown="",e.rateLimitResetAt=0,D&&(a.interval.cancel(D),D=null),X(U);else{var ue=Math.floor(H/60),we=H%60;e.rateLimitCountdown=ue>0?ue+"m "+we+"s":we+"s"}};var L=x;e.type="rate_limited",e.rateLimitResetAt=te.resetAt,D&&a.interval.cancel(D),x(),D=a.interval(x,1e3)}else te.error==="repository_not_ready"?(e.type="loading",a.timeout(function(){X(U)},3e3)):(e.type="error",e.content=pa(Z))}})}e.toggleSource=function(){e.showSource=!e.showSource},e.toggleAllowScripts=function(){e.allowScripts=!e.allowScripts};let le=(()=>{try{return window.localStorage?.getItem("wrapLines")}catch{return null}})();e.wrapLines=(le??(window.matchMedia?.("(max-width: 767px)").matches?"false":"true"))!=="false",e.toggleWrap=function(){e.wrapLines=!e.wrapLines;try{window.localStorage?.setItem("wrapLines",String(e.wrapLines))}catch{}e.codeEditor?.session.setUseWrapMode(e.wrapLines)};function Ee(){return window.document.querySelector(".reading-layout .markdown-body")}function ae(){let U=Ee();U&&(U.querySelectorAll("mark.md-find").forEach(oe=>{oe.replaceWith(window.document.createTextNode(oe.textContent))}),U.normalize())}e.runMdFind=function(){ae(),e.mdFindTotal=0,e.mdFindIndex=0;let U=(e.mdFindQuery||"").trim(),oe=Ee();if(!U||!oe)return;let Z=!!e.mdFindCase,te=Z?U:U.toLowerCase(),L=window.document.createTreeWalker(oe,4),x=[];for(;L.nextNode();)(Z?L.currentNode.nodeValue:L.currentNode.nodeValue.toLowerCase()).includes(te)&&x.push(L.currentNode);let H=0;for(let ue of x){let we=ue.nodeValue,Oe=Z?we:we.toLowerCase(),C=window.document.createDocumentFragment(),R=0,I;for(;(I=Oe.indexOf(te,R))!==-1;){C.appendChild(window.document.createTextNode(we.slice(R,I)));let W=window.document.createElement("mark");W.className="md-find",W.textContent=we.slice(I,I+U.length),C.appendChild(W),H++,R=I+U.length}C.appendChild(window.document.createTextNode(we.slice(R))),ue.parentNode.replaceChild(C,ue)}e.mdFindTotal=H,H&&e.stepMdFind(0)},e.stepMdFind=function(U){let oe=Ee();if(!oe||!e.mdFindTotal)return;let Z=oe.querySelectorAll("mark.md-find");e.mdFindIndex=(e.mdFindIndex+U+Z.length)%Z.length,Z.forEach((te,L)=>te.classList.toggle("is-current",L===e.mdFindIndex)),Z[e.mdFindIndex]?.scrollIntoView({block:"center",behavior:"smooth"})},e.toggleMdFind=function(U){if(e.mdFindOpen=U===void 0?!e.mdFindOpen:U,!e.mdFindOpen){ae(),e.mdFindTotal=0;return}nt(()=>window.document.querySelector(".md-find-input")?.focus())},e.findInFile=function(){let U=e.codeEditor;if(!U)return;U.focus(),U.execCommand("find");let oe=()=>{let Z=U.searchBox?.element;Z&&(U.renderer.setScrollMargin(52,12,0,0),!Z._dockObserver&&(Z._dockObserver=new MutationObserver(()=>{U.renderer.setScrollMargin(Z.style.display!=="none"?52:12,12,0,0)}),Z._dockObserver.observe(Z,{attributes:!0,attributeFilter:["style"]})))};oe(),setTimeout(oe,150)};let he=[[/^\s*(?:export\s+)?(?:default\s+)?(?:abstract\s+)?class\s+([A-Za-z_$][\w$]*)/,"class"],[/^\s*(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s*\*?\s*([A-Za-z_$][\w$]*)/,"function"],[/^\s*(?:export\s+)?(?:const|let|var)\s+([A-Za-z_$][\w$]*)\s*=\s*(?:async\s*)?(?:function|\([^)]*\)\s*=>|[A-Za-z_$][\w$]*\s*=>)/,"function"],[/^\s*(?:async\s+)?def\s+([A-Za-z_]\w*)/,"function"],[/^\s*class\s+([A-Za-z_]\w*)/,"class"],[/^\s*func\s+(?:\([^)]*\)\s*)?([A-Za-z_]\w*)/,"function"],[/^\s*(?:pub\s+)?fn\s+([A-Za-z_]\w*)/,"function"],[/^\s*(?:public|private|protected|static|\s)+[\w<>\[\],\s]+\s+([A-Za-z_]\w*)\s*\([^;]*\)\s*\{?\s*$/,"function"]],Ce={content:null,list:[]};e.symbolsOpen=!1,e.symbols=function(){if(typeof e.content!="string"||e.content.length>2e6)return[];if(Ce.content===e.content)return Ce.list;let U=[];return e.content.split(` -`).forEach((oe,Z)=>{for(let[te,L]of he){let x=te.exec(oe);if(x&&!/^(if|for|while|switch|return|catch)$/.test(x[1])){U.push({name:x[1],kind:L,line:Z+1});break}}}),Ce={content:e.content,list:U.slice(0,300)},Ce.list},e.goToSymbol=function(U){e.symbolsOpen=!1;let oe=e.codeEditor;oe&&(oe.scrollToLine(U-1,!0,!0,()=>{}),oe.gotoLine(U,0,!0),window.history.replaceState(null,"",window.location.pathname+window.location.search+"#L"+U),window.dispatchEvent(new HashChangeEvent("hashchange")))},e.gotoLine=function(){e.codeEditor&&(e.moreOpen=!1,e.gotoError="",e.gotoValue=String(e.codeEditor.getCursorPosition().row+1),e.gotoOpen=!0,setTimeout(()=>{let U=window.document.getElementById("goto-input");U&&(U.focus(),U.select())},0))},e.closeGoto=function(){e.gotoOpen=!1,e.gotoError="",e.codeEditor?.focus()},e.submitGoto=function(){let U=e.codeEditor;if(!U)return;let oe=/^\s*:?\s*(\d+)\s*(?:[:,]\s*(\d+))?\s*$/.exec(e.gotoValue||""),Z=U.session.getLength();if(!oe||+oe[1]<1||+oe[1]>Z){e.gotoError="Enter a line from 1 to "+Z;return}U.gotoLine(+oe[1],oe[2]?Math.max(0,+oe[2]-1):0,!0),e.gotoOpen=!1,e.gotoError="",U.focus()},e.rootEntries=function(){return[...e.files||[]].sort((U,oe)=>{let Z=U.size==null,te=oe.size==null;return Z!==te?Z?-1:1:U.name.localeCompare(oe.name)})},e.formatSize=function(U){if(U==null)return"";if(U<1024)return U+" B";let oe=U/1024;return oe<1024?oe.toFixed(1)+" KB":(oe/1024).toFixed(1)+" MB"},e.fileSize=function(U){if(!U)return null;let oe=U.replace(/^\/+/,""),Z=(e.files||[]).find(te=>(te.path?te.path+"/":"")+te.name===oe);return Z&&Z.size!=null?Z.size:null},e.revealFolder=function(U){e.sidebarHidden=!1,e.sidebarCollapsed=!1,nt(()=>{let oe=window.document.querySelector('.files a[data-path="/'+(window.CSS?.escape?window.CSS.escape(U):U)+'"]');oe&&(oe.closest("li")?.classList.contains("open")||oe.click(),oe.scrollIntoView({block:"nearest"}),oe.focus())})},e.redactionCount=function(){return typeof e.content!="string"?0:((e.type==="html"?e.content.replace(/<[^>]*>/g," "):e.content).match(Os)||[]).length},e.renderRedacted=Lu;let Pe=U=>U.toLowerCase().trim().replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").slice(0,60)||"section";e.renderReadme=function(U){let oe=e.renderRedacted(U);if(!oe||typeof window.DOMParser!="function")return oe;let Z=new window.DOMParser().parseFromString("
"+oe+"
","text/html"),te={};return Z.querySelectorAll("h1, h2, h3").forEach(L=>{let x=L.id||Pe(L.textContent);te[x]?x+="-"+ ++te[x]:te[x]=1,L.id=x}),Z.body.firstChild.innerHTML};let Ne={content:null,list:[]};e.readmeToc=function(){if(e.type!=="html"||typeof e.content!="string")return[];if(Ne.content===e.content)return Ne.list;let oe=[...new window.DOMParser().parseFromString("
"+e.renderReadme(e.sanitize?e.sanitize(e.content):e.content)+"
","text/html").querySelectorAll("h2, h3")].map(Z=>({id:Z.id,text:Z.textContent.trim(),level:Z.tagName==="H3"?3:2})).slice(0,40);return Ne={content:e.content,list:oe},oe},e.activeHeading=null,u(window,"scroll",()=>{let U=e.readmeToc?e.readmeToc():[];if(!U.length)return;let oe=150,Z="",te="";for(let L of U){let x=window.document.getElementById(L.id);if(!x)continue;let H=x.getBoundingClientRect().top;HZ&&oe.push({t:U.slice(Z,te.index)}),oe.push({n:te[1]}),Z=te.index+te[0].length;return Z{e.pathCopied=!1},1600))},e.contentCopied=!1,e.copyContent=async function(){if(typeof e.content!="string"||!window.navigator.clipboard?.writeText)return;let U=e.content;if(e.type==="html"&&e.url)try{U=await(await window.fetch(e.url,{credentials:"same-origin"})).text()}catch{return}await window.navigator.clipboard.writeText(U),e.contentCopied=!0,setTimeout(()=>{e.contentCopied=!1},1600)};function Re(U){return T[U]?T[U]:U}function Qe(U){return U=="pdf"?"pdf":U=="html"||U=="htm"?"html-doc":U=="md"?"md":U=="org"?"org":U=="ipynb"?"IPython":w.indexOf(U)>-1?"text":b.indexOf(U)>-1?"image":N.indexOf(U)>-1?"media":E.indexOf(U)>-1?"audio":"code"}function Ke(U,oe){let Z=p;if(!U){e.type="error",e.content="no_file_selected";return}let te=e.type;(te==="code"||te==="text")&&Ms().catch(()=>{}),e.type="loading",e.content="loading",e.fileLoadingSlow=!1,e.fileReceivedBytes=0;let L=r.defer();v=L,h=a.timeout(()=>{!m&&Z===p&&e.type==="loading"&&(e.fileLoadingSlow=!0)},1500);let x=oe&&oe.sha||"0";t.get(`/api/repo/${e.repoId}/file/${encodePathForUrl(U)}?v=`+x,{timeout:L.promise,onDownloadProgress:H=>{!m&&Z===p&&(e.fileReceivedBytes=H)},transformResponse:H=>H}).then(H=>{if(!(m||Z!==p)){if(g(),e.type=te,e.content=H.data,e.content==""&&(e.content=null),e.type=="md"&&(e.content=renderMD(H.data,o.url()+"/../"),e.type="html"),e.type=="org"){let we=contentAbs2Relative(H.data);var ue=new Org.Parser().parse(we).convert(Org.ConverterHTML,{headerOffset:1,exportFromLineNumber:!1,suppressSubScriptHandling:!0,suppressAutoLink:!1});e.content=DOMPurify.sanitize(ue.toString()),e.type="html"}e.type=="code"&&H.headers("content-type")=="application/octet-stream"&&(e.type="binary",e.content="binary"),a.timeout(()=>{Prism.highlightAll()},50)}},H=>{m||Z!==p||(g(),e.type="error",e.content=pa(H))})}function rt(){p++,g(),e.content="",e.file=re();let U="0";e.file&&e.file.sha&&(U=e.file.sha),e.url=`/api/repo/${e.repoId}/file/${encodePathForUrl(e.filePath)}?v=${U}`;let oe=e.filePath.substring(0,e.filePath.lastIndexOf("/")+1);e.fileBaseUrl=`/api/repo/${e.repoId}/file/${oe?encodePathForUrl(oe):""}`,e.showSource=!1,e.allowScripts=!1;let Z=e.filePath.toLowerCase(),te=Z.lastIndexOf(".");te>-1&&(Z=Z.substring(te+1));let L={javascript:"JavaScript",typescript:"TypeScript",tsx:"TSX",jsx:"JSX",python:"Python",java:"Java",c_cpp:"C/C++",csharp:"C#",golang:"Go",rust:"Rust",ruby:"Ruby",php:"PHP",html:"HTML",css:"CSS",scss:"SCSS",json:"JSON",yaml:"YAML",markdown:"Markdown",sh:"Shell",dockerfile:"Dockerfile",xml:"XML",sql:"SQL",kotlin:"Kotlin",swift:"Swift",scala:"Scala",r:"R",julia:"Julia",latex:"LaTeX",toml:"TOML",text:""},x=Re(Z);if(e.languageName=L[x]??(x?x.charAt(0).toUpperCase()+x.slice(1):""),e.aceOption={readOnly:!0,useWrapMode:!0,showGutter:!0,theme:"chrome",useSoftTab:!0,tabSize:2,fontSize:window.matchMedia?.("(max-width: 767px)").matches?12:13,keyBinding:"vscode",fullLineSelection:!0,highlightActiveLine:!1,highlightGutterLine:!1,cursor:"hide",showInvisibles:!1,showIndentGuides:!1,showPrintMargin:!1,highlightSelectedWord:!1,enableBehaviours:!0,fadeFoldWidgets:!1,mode:Re(Z),onLoad:function(H){e.codeEditor=go(H);{let V=H.session,j=V.getTokens.bind(V),ee=/\bXXXX-\d+\b/g;if(V.getTokens=function(K){let me=j(K);if(!me.some(fe=>fe.value.indexOf("XXXX-")!==-1))return me;let ne=[];for(let fe of me){if(fe.value.indexOf("XXXX-")===-1){ne.push(fe);continue}let ye=0;ee.lastIndex=0;let Ae;for(;Ae=ee.exec(fe.value);)Ae.index>ye&&ne.push({type:fe.type,value:fe.value.slice(ye,Ae.index)}),ne.push({type:"redacted.n"+Ae[0].slice(5),value:Ae[0]}),ye=Ae.index+Ae[0].length;ye`.ace_redacted.ace_n${ne+1}::after{content:"${ne+1}"}`).join(""),window.document.head.appendChild(K)}H.renderer.updateFull(!0)}H.session.setUseWrapMode(e.wrapLines!==!1);let ue=H.container.closest?.(".file-card"),we=()=>{if(!ue)return;let V=H.renderer,j=(V.layerConfig?.width||0)-(V.$size?.scrollerWidth||0);ue.classList.toggle("at-right-edge",j<=2||V.getScrollLeft()>=j-2)};H.session.on("changeScrollLeft",we),H.renderer.on("afterRender",we),window.matchMedia?.("(max-width: 767px)").matches&&H.setOption("hScrollBarAlwaysVisible",!0);let Oe=ace.require("ace/range").Range,C=null;function R(V,j){C!==null&&(H.session.removeMarker(C),C=null),V!=null&&(C=H.session.addMarker(new Oe(V,0,j,1),"highlighted-line","fullLine"))}function I(V){let j=window.location.hash.match(/^#L(\d+)(?:-L(\d+))?/);if(!j){R(null);return}let ee=parseInt(j[1])-1,K=j[2]?parseInt(j[2])-1:ee;R(ee,K),V&&a.timeout(()=>{H.scrollToLine(ee,!0,!0,function(){})},100)}I(!0);let W=null;H.on("guttermousedown",function(V){let j=V.getDocumentPosition().row,ee=V.domEvent&&V.domEvent.shiftKey,K=j,me=j;ee&&W!==null?(K=Math.min(W,j),me=Math.max(W,j)):W=j;let ne=K===me?`#L${K+1}`:`#L${K+1}-L${me+1}`,fe=window.location.pathname+window.location.search+ne;window.history.replaceState(null,"",fe),R(K,me),V.stop()});let z=u(window,"hashchange",()=>I(!1));H.setFontSize(e.aceOption.fontSize),H.setOptions({fontFamily:"'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace"}),H.container.style.lineHeight="20px",H.renderer.setPadding(16),H.renderer.setScrollMargin(12,12,0,0),H.renderer.updateFontSize(),H.setReadOnly(e.aceOption.readOnly),H.setKeyboardHandler(e.aceOption.keyBinding),H.setSelectionStyle(e.aceOption.fullLineSelection?"line":"text"),H.setOption("displayIndentGuides",!1),H.setHighlightActiveLine(e.aceOption.highlightActiveLine),e.aceOption.cursor=="hide"&&(H.renderer.$cursorLayer.element.style.display="none"),H.setHighlightGutterLine(e.aceOption.highlightGutterLine),H.setShowInvisibles(e.aceOption.showInvisibles),H.setDisplayIndentGuides(e.aceOption.showIndentGuides),H.renderer.setShowPrintMargin(e.aceOption.showPrintMargin),H.setHighlightSelectedWord(e.aceOption.highlightSelectedWord),H.session.setUseSoftTabs(e.aceOption.useSoftTab),H.session.setTabSize(e.aceOption.tabSize),H.setBehavioursEnabled(e.aceOption.enableBehaviours),H.setFadeFoldWidgets(e.aceOption.fadeFoldWidgets);let Y=u(window,"keydown",V=>{if((V.ctrlKey||V.metaKey)&&!V.altKey&&V.key.toLowerCase()==="g"&&document.body.contains(H.container)){V.preventDefault(),e.gotoLine();return}if(V.altKey&&!V.ctrlKey&&!V.metaKey&&V.key.toLowerCase()==="z"&&document.body.contains(H.container)){V.preventDefault(),e.toggleWrap();return}(V.ctrlKey||V.metaKey)&&!V.altKey&&V.key.toLowerCase()==="f"&&document.body.contains(H.container)&&(V.preventDefault(),e.findInFile())});return()=>{z(),Y()}}},e.isDarkMode&&(e.aceOption.theme="nord_dark"),e.type=Qe(Z),e.type=="pdf"){e.content="pdf";return}Ke(e.filePath,e.file)}e.isSourceAccessError=()=>["repo_not_found","token_expired","github_app_access_required","github_app_reconnect_required","repo_saml_enforcement","repo_access_limited"].includes(e.content),e.retryContent=()=>Ze();function Ze(){p++,g(),e.files=[],e.content=null,e.fileCounts=null,q++,M=new Set,G=!1,e.fileSearchQuery="",e.onFileSearchChange(),e.repoId=i.repoId,e.type="loading",e.filePath=i.path||"",e.paths=e.filePath.split("/");let U=e.repoId;X(function(oe){if(e.filePath){rt();let te=[...new Set(e.paths.map((L,x)=>e.paths.slice(0,x).join("/")))];r.all(te.map(L=>e.getFiles(L,!0)));return}var Z=r.resolve();for(let te=0;te0?e.paths.slice(0,te).join("/"):"";Z=Z.then(function(){return e.getFiles(L)}).then(function(){if(e.type==="error")return r.reject("error")})}Z.then(function(){m||U!==e.repoId||(e.files.length==1&&e.files[0].name==""?(e.files=[],e.type="empty"):(O(),rt()))})})}Ze()},Xu=function(e,t,o,i,s){async function r(p){t.get(`/api/pr/${e.pullRequestId}/options`).then(v=>{if(e.options=v.data,e.options.url){window.location=e.options.url;return}p&&p(v.data)},v=>{e.type="error",e.content=v.data.error})}async function a(p){t.get(`/api/pr/${e.pullRequestId}/content`).then(v=>{e.details=v.data,e.tabState={active:v.data.diff?"diff":"comments"},p&&p(v.data)},v=>{e.type="error",e.content=v.data.error})}function u(){e.pullRequestId=i.pullRequestId,e.type="loading",r(p=>{a()})}u()},Ju=function(e,t,o,i,s){async function r(p){t.get(`/api/gist/${e.gistId}/options`).then(v=>{if(e.options=v.data,e.options.url){window.location=e.options.url;return}p&&p(v.data)},v=>{e.type="error",e.content=v.data.error})}async function a(p){t.get(`/api/gist/${e.gistId}/content`).then(v=>{e.details=v.data;let h=v.data&&v.data.files&&v.data.files.length;e.tabState={active:h?"files":"comments"},p&&p(v.data)},v=>{e.type="error",e.content=v.data.error})}function u(){e.gistId=i.gistId,e.type="loading",r(()=>{a()})}u()},Qu=function(e,t,o){e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.conferences=[],e.loading=!0,e.error="",e.search="";let i="conferences.filterPrefs",s={filters:{status:{ready:!0,expired:!1,removed:!1}},orderBy:"name"},r=loadFilterPrefs(i)||{};e.filters={status:Object.assign({},s.filters.status,r.filters&&r.filters.status||{})},e.orderBy=r.orderBy||s.orderBy,e.watch("orderBy",()=>{saveFilterPrefs(i,{filters:e.filters,orderBy:e.orderBy})}),e.watch("filters",()=>{saveFilterPrefs(i,{filters:e.filters,orderBy:e.orderBy})},!0),e.removeConference=function(a){if(!a.removing&&confirm(`Are you sure that you want to remove the conference ${a.name}? All the repositories linked to this conference will expire.`)){a.removing=!0;let u=et({title:`Removing ${a.name}...`,date:new Date,body:`The conference ${a.name} is going to be removed.`});e.addToast(u),t.delete(`/api/conferences/${a.conferenceID}`).then(()=>{u.title=`${a.name} is removed.`,u.body=`The conference ${a.name} is removed.`,e.loadConferences()}).catch(()=>{u.title="Unable to remove conference",u.body="Please try again. The conference has not been removed."}).finally(()=>{a.removing=!1})}},e.loadConferences=()=>(e.loading=!0,e.error="",t.get("/api/conferences/").then(a=>{e.conferences=a.data||[]},a=>{e.error="Unable to load your conferences. Please try again."}).finally(()=>{e.loading=!1})),e.loadConferences(),e.conferenceFilter=a=>{if(e.filters.status[a.status]==!1)return!1;let u=e.search.trim().toLowerCase();return!!(!u||(a.name||"").toLowerCase().includes(u)||(a.conferenceID||"").toLowerCase().includes(u))}},ha=function(e,t,o,i){e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.plans=[],e.plansLoaded=!1,e.conferenceBilling=null,Si(t).then(h=>{e.conferenceBilling=h.data}).catch(()=>{}),e.conferenceTiers=()=>e.plans.filter(h=>h.id!=="free_conference").map(h=>{let g=(e.conferenceBilling?.plans||[]).find(m=>m.id===h.id)||{};return{...h,storage:h.storagePerRepo,...g,id:h.id,name:h.name}}),e.conferenceAudience=h=>({conference_workshop:"Workshops and small venues",conference:"A typical conference",conference_large:"Large or multi-track venues"})[h]||"",e.conferencePlanName=h=>Zu(h),e.conferenceAmount=(h,g=h?.amount)=>new Intl.NumberFormat(void 0,{style:"currency",currency:h?.currency||"eur",minimumFractionDigits:g%100?2:0,maximumFractionDigits:2}).format(g/100),e.conferenceBytes=h=>{let g=Number(h)||0,m=Math.min(4,Math.floor(Math.log2(Math.max(g,1))/10));return`${new Intl.NumberFormat(void 0,{maximumFractionDigits:1}).format(g/1024**m)} ${["B","KiB","MiB","GiB","TiB"][m]}`},e.editionMode=!1,e.saving=!1,e.error="";function s(){return t.get("/api/conferences/"+i.conferenceId).then(h=>{e.options={...e.options,...h.data,billing:h.data.billing||{}},e.options.startDate=new Date(e.options.startDate),e.options.endDate=new Date(e.options.endDate)})}i.conferenceId&&(e.editionMode=!0,s());function r(){t.get("/api/conferences/plans").then(h=>{e.plans=h.data,e.plansLoaded=!0,!e.editionMode&&e.plans.length&&!e.plans.some(g=>g.id==e.options.plan.planID)&&(e.options.plan.planID=(e.plans.find(g=>g.id==="conference")||e.plans[0]).id),e.plan=e.plans.filter(g=>g.id==e.options.plan.planID)[0]})}r();let a=new Date;a.setDate(1),a.setMonth(a.getMonth()+1);let u=new Date(a);u.setTime(a.getTime()+179*864e5),e.options={billing:{},startDate:a,endDate:u,plan:{planID:"free_conference"},options:{link:!0,image:!0,pdf:!0,notebook:!0,update:!0,page:!0}},e.plan=null,e.watch("options.plan.planID",()=>{e.plan=e.plans.filter(h=>h.id==e.options.plan.planID)[0]});function p(){e.conference.name.setValidity("required",!0),e.conference.conferenceID.setValidity("pattern",!0),e.conference.conferenceID.setValidity("required",!0),e.conference.conferenceID.setValidity("used",!0),e.conference.startDate.setValidity("required",!0),e.conference.startDate.setValidity("invalid",!0),e.conference.endDate.setValidity("required",!0),e.conference.endDate.setValidity("invalid",!0),e.conference.setValidity("error",!0)}function v(h){switch(h){case"conf_name_missing":e.conference.name.setValidity("required",!1);break;case"conf_id_missing":e.conference.conferenceID.setValidity("required",!1);break;case"conf_id_format":e.conference.conferenceID.setValidity("pattern",!1);break;case"conf_id_used":e.conference.conferenceID.setValidity("used",!1);break;case"conf_start_date_missing":e.conference.startDate.setValidity("required",!1);break;case"conf_end_date_missing":e.conference.endDate.setValidity("required",!1);break;case"conf_start_date_invalid":e.conference.startDate.setValidity("invalid",!1);break;case"conf_end_date_invalid":e.conference.endDate.setValidity("invalid",!1);break;default:e.conference.setValidity("error",!1);break}}e.submit=function(){if(e.saving)return;e.saving=!0,e.error="";let h=JSON.parse(JSON.stringify(e.options)),g=et({title:`Creating ${h.name}...`,date:new Date,body:`The conference ${h.conferenceID} is in creation.`});e.editionMode&&(g.title=`Updating ${h.name}...`,g.body=`The conference '${h.conferenceID}' is updating.`),e.addToast(g),p(),t.post("/api/conferences/"+(e.editionMode?h.conferenceID:""),h).then(()=>{e.editionMode?(g.title=`${h.name} updated`,g.body=`The conference '${h.conferenceID}' is updated.`):(g.title=`${h.name} created`,g.body=`The conference '${h.conferenceID}' is created.`),o.url("/conference/"+h.conferenceID)},m=>{v(m.data?.error),e.error="Unable to save the conference. Please correct any highlighted fields and try again.",e.removeToast(g)}).finally(()=>{e.saving=!1})}};function Zu(e){return{free_conference:"Free (no longer offered to new conferences)",conference_workshop:"Workshop package",conference:"Conference package",conference_large:"Large conference package"}[e]||e||"Free"}var xu=function(e,t,o,i){Ni(e,t,()=>s(),{confirmedMessage:"Payment status checked. Your conference is ready for submissions once payment is confirmed."}),e.conferencePlanName=r=>Zu(r),e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.conference=null,e.search="",e.filters={status:{ready:!0,expired:!1,removed:!1}},e.orderBy="-anonymizeDate",e.repoFiler=r=>{if(e.filters.status[r.status]==!1)return!1;let a=e.search.trim().toLowerCase();return!!(!a||(r.source?.fullName||"").toLowerCase().includes(a)||(r.repoId||"").toLowerCase().includes(a))};function s(){t.get("/api/conferences/"+i.conferenceId).then(r=>{e.conference=r.data})}s()},ec=function(e,t){e.notificationEmail="",e.emailSaved=!1,e.saveNotificationEmail=async()=>{e.busy=!0,e.emailSaved=!1,e.connectionError="";try{let o=await t.post("/github/connections/email",{email:e.notificationEmail},{headers:{"X-CSRF-Token":e.connections.csrf}});e.notificationEmail=o.data.notificationEmail,e.user&&(e.user.notificationEmail=o.data.notificationEmail),e.emailSaved=!0}catch(o){e.connectionError=o.data?.error||"Unable to save email address."}finally{e.busy=!1}},e.connections=null,e.connectionError="",e.busy=!1,e.loadConnections=()=>t.get("/github/connections").then(o=>{e.connections=o.data,e.notificationEmail=o.data.notificationEmail||""}).catch(o=>{e.connectionError=o.data?.error||"Unable to load connections."}),e.changeConnection=async(o,i,s)=>{e.busy=!0,e.connectionError="";try{let r=await t.post("/github/connections/migrate",{type:o.type,id:o.id,connection:i,preview:s},{headers:{"X-CSRF-Token":e.connections.csrf}});s?o.eligible=r.data.eligible:await e.loadConnections()}catch(r){e.connectionError=r.data?.error||"Unable to change connection."}finally{e.busy=!1}},e.disconnectOAuth=async()=>{e.busy=!0;try{await t.post("/github/connections/disconnect-oauth",{},{headers:{"X-CSRF-Token":e.connections.csrf}}),await e.loadConnections()}catch(o){e.connectionError=o.data?.error||"Unable to disconnect OAuth."}finally{e.busy=!1}},e.loadConnections()},tc=function(e,t){e.accountRecovery=!1,t.get("/github/account-recovery").then(o=>{e.accountRecovery=o.data.required}).catch(()=>{})};var nc=function(e,t,o){let i=Tt(),s=bn();e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.repositories=[],e.total=-1,e.totalPage=0,e.statusCounts=[],e.totalSize=0,e.selected={},e.allSelected=!1;let r=w=>{if(w.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){w.preventDefault();let b=document.querySelector('.admin-filter-toolbar input[type="search"]');b&&b.focus()}};s(document,"keydown",r),e.on("dispose",()=>document.removeEventListener("keydown",r)),e.clearFilter=w=>{w==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[w]="",e.query.page=1},e.chips=[];let a=()=>{let w=[];e.query.owner&&w.push({key:"owner",label:"Owner",value:e.query.owner}),e.query.conference&&w.push({key:"conference",label:"Conference",value:e.query.conference}),e.chips=w};e.showStatusMessage=w=>{let b=w.statusMessage||"(no message)";window.prompt(`Status message for ${w.repoId} (${w.status}):`,b)},e.fetchGithubInfo=w=>{let b=window.open("","_blank");b&&b.document.write("
Loading GitHub info for "+w.repoId+"...
"),t.get("/api/admin/repos/"+w.repoId+"/github").then(E=>{b&&(b.document.open(),b.document.write('
'+JSON.stringify(E.data,null,2).replace(/[<>]/g,N=>N==="<"?"<":">")+"
"),b.document.close())},E=>{let N=E&&E.data?JSON.stringify(E.data,null,2):String(E);b&&(b.document.body.innerHTML='
'+N+"
")})},e.statusCountFor=w=>{let b=(e.statusCounts||[]).find(E=>E._id===w);return b?b.count:0},e.statusStorageFor=w=>{let b=(e.statusCounts||[]).find(E=>E._id===w);return b?b.storage:0},e.isErrorsOnly=()=>e.query&&e.query.error&&!e.query.ready&&!e.query.preparing&&!e.query.expired&&!e.query.removed,e.toggleErrorsOnly=()=>{e.isErrorsOnly()?Object.assign(e.query,{ready:!1,preparing:!0,expired:!1,removed:!1,error:!0}):Object.assign(e.query,{ready:!1,preparing:!1,expired:!1,removed:!1,error:!0}),e.query.page=1},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=w=>{e.query.sort===w?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=w,e.query.direction="desc"),e.query.page=1},e.sortIcon=w=>e.query.sort===w?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let u="admin.repos.filterPrefs",p={page:1,limit:25,sort:"lastView",direction:"desc",search:"",owner:"",conference:"",dateFrom:"",dateTo:"",ready:!0,expired:!0,removed:!1,error:!0,preparing:!0},v=loadFilterPrefs(u)||{};e.query=Object.assign({},p,v,{page:1,search:""});let h=o.search();h.owner&&(e.query.owner=h.owner),h.conference&&(e.query.conference=h.conference),h.search&&(e.query.search=h.search);let g="admin.repos.presets";e.presets=JSON.parse(localStorage.getItem(g)||"[]"),e.savePreset=()=>{let w=window.prompt("Preset name:");if(!w)return;let b=Object.assign({},e.query);delete b.page,e.presets=(e.presets||[]).filter(E=>E.name!==w),e.presets.push({name:w,query:b}),localStorage.setItem(g,JSON.stringify(e.presets))},e.applyPreset=w=>{Object.assign(e.query,w.query,{page:1})},e.deletePreset=w=>{e.presets=(e.presets||[]).filter(b=>b.name!==w.name),localStorage.setItem(g,JSON.stringify(e.presets))},e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,e.repositories.forEach(w=>{e.selected[w.repoId]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedRepos=()=>e.repositories.filter(w=>e.selected[w.repoId]),e.bulkRefresh=()=>{let w=e.selectedRepos();w.length&&confirm(`Force refresh ${w.length} repositories?`)&&w.forEach(b=>e.updateRepository(b))},e.bulkRemoveCache=()=>{let w=e.selectedRepos();w.length&&confirm(`Purge cache for ${w.length} repositories?`)&&w.forEach(b=>e.removeCache(b))},e.clearSelection=()=>{e.selected={},e.allSelected=!1},e.exportCsv=()=>{let w=new URLSearchParams(Object.entries(e.query).filter(([,b])=>b!==""&&b!==!1&&b!=null));w.set("format","csv"),w.set("limit","10000"),window.open("/api/admin/repos?"+w.toString(),"_blank")},e.removeCache=w=>{confirm("Remove cached files for "+w.repoId+"?")&&t.delete("/api/admin/repos/"+w.repoId).then(()=>m(),b=>console.error(b))},e.removeRepository=w=>{confirm("Remove repository "+w.repoId+"?")&&t.delete("/api/repo/"+w.repoId+"/").then(()=>m(),b=>console.error(b))},e.updateRepository=w=>{let b=et({title:`Refreshing ${w.repoId}...`,date:new Date,body:`The repository ${w.repoId} is going to be refreshed.`});e.toasts.push(b),t.post(`/api/repo/${w.repoId}/refresh`).then(E=>{E.data.status=="ready"?b.title=`${w.repoId} is refreshed.`:b.title=`Refreshing of ${w.repoId}.`},E=>{b.title=`Error during the refresh of ${w.repoId}.`,b.body=E.body})},e.filtersOpen=!1,e.fetchError=null;function m(){e.fetchError=null,t.get("/api/admin/repos",{params:e.query}).then(w=>{e.total=w.data.total,e.totalPage=Math.ceil(w.data.total/e.query.limit),e.repositories=w.data.results,e.allSelected=!1},w=>{e.fetchError=w&&w.data&&w.data.error||"Failed to load repositories",console.error(w)})}function k(){let w=Object.assign({},e.query,{page:1,limit:1,ready:!0,expired:!0,removed:!0,error:!0,preparing:!0});t.get("/api/admin/repos",{params:w}).then(b=>{e.statusCounts=b.data.statusCounts||[],e.totalSize=b.data.totalSize||0},()=>{})}e.showAllStatuses=()=>Object.assign(e.query,{ready:!0,expired:!0,removed:!0,error:!0,preparing:!0,page:1}),m(),k();let T=null;e.watch("query",()=>{i.timeout.cancel(T),T=i.timeout(()=>{m(),k()},500);let{page:w,search:b,...E}=e.query;saveFilterPrefs(u,E),a()},!0),a()},oc=function(e,t,o){let i=Tt(),s=bn();e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.users=[],e.total=-1,e.totalPage=0,e.statusCounts=[],e.selected={},e.allSelected=!1;let r=m=>{if(m.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){m.preventDefault();let k=document.querySelector('.admin-filter-toolbar input[type="search"]');k&&k.focus()}};s(document,"keydown",r),e.on("dispose",()=>document.removeEventListener("keydown",r)),e.clearFilter=m=>{m==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[m]="",e.query.page=1},e.chips=[];let a=()=>{let m=[];e.query.role&&m.push({key:"role",label:"Role",value:e.query.role}),e.chips=m};e.statusCountFor=m=>{let k=(e.statusCounts||[]).find(T=>T._id===m);return k?k.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=m=>{e.query.sort===m?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=m,e.query.direction="desc"),e.query.page=1},e.sortIcon=m=>e.query.sort===m?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let u="admin.users.filterPrefs",p={page:1,limit:25,sort:"username",direction:"asc",search:"",status:"",role:"",dateFrom:"",dateTo:""},v=loadFilterPrefs(u)||{};e.query=Object.assign({},p,v,{page:1,search:""}),e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,e.users.forEach(m=>{e.selected[m.username]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedUsers=()=>e.users.filter(m=>e.selected[m.username]),e.banUser=m=>{confirm(`Ban user ${m.username}?`)&&t.post(`/api/admin/users/${m.username}/ban`).then(h,k=>console.error(k))},e.activateUser=m=>{t.post(`/api/admin/users/${m.username}/activate`).then(h,k=>console.error(k))},e.bulkBan=()=>{let m=e.selectedUsers();m.length&&confirm(`Ban ${m.length} users?`)&&m.forEach(k=>e.banUser(k))},e.exportCsv=()=>{let m=new URLSearchParams(Object.entries(e.query).filter(([,k])=>k!==""&&k!==!1&&k!=null));m.set("format","csv"),m.set("limit","10000"),window.open("/api/admin/users?"+m.toString(),"_blank")},e.fetchError=null;function h(){e.fetchError=null,t.get("/api/admin/users",{params:e.query}).then(m=>{e.total=m.data.total,e.totalPage=Math.ceil(m.data.total/e.query.limit),e.users=m.data.results,e.statusCounts=m.data.statusCounts||[],e.allSelected=!1},m=>{e.fetchError=m&&m.data&&m.data.error||"Failed to load users",console.error(m)})}h();let g=null;e.watch("query",()=>{i.timeout.cancel(g),g=i.timeout(h,500);let{page:m,search:k,...T}=e.query;saveFilterPrefs(u,T),a()},!0),a()},sc=function(e,t,o,i){let s=Tt();e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.userInfo,e.repositories=[],e.search="",e.selected={},e.allSelected=!1;let r="admin.user.filterPrefs",a={filters:{status:{ready:!0,expired:!0,removed:!0,error:!0,preparing:!0}},sort:"anonymizeDate",direction:"desc"},u=loadFilterPrefs(r)||{};e.filters={status:Object.assign({},a.filters.status,u.filters&&u.filters.status||{})},e.query={sort:u.sort||a.sort,direction:u.direction||a.direction},e.orderBy=(e.query.direction==="asc"?"":"-")+e.query.sort,e.sortBy=m=>{e.query.sort===m?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=m,e.query.direction="desc"),e.orderBy=(e.query.direction==="asc"?"":"-")+e.query.sort},e.sortIcon=m=>e.query.sort===m?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"",e.watch("query",()=>{saveFilterPrefs(r,{filters:e.filters,sort:e.query.sort,direction:e.query.direction})},!0),e.watch("filters",()=>{saveFilterPrefs(r,{filters:e.filters,sort:e.query.sort,direction:e.query.direction})},!0),e.statusCountFor=m=>(e.repositories||[]).filter(k=>k.status===m).length,e.repoFiler=m=>e.filters.status[m.status]==!1?!1:!!(e.search.trim().length==0||m.source.fullName.indexOf(e.search)>-1||m.repoId.indexOf(e.search)>-1||m.statusMessage&&m.statusMessage.indexOf(e.search)>-1||m.conference&&m.conference.indexOf(e.search)>-1),e.selectAllOnPage=()=>{e.allSelected=!e.allSelected,(e.filteredRepositories||e.repositories).forEach(m=>{e.selected[m.repoId]=e.allSelected})},e.selectedCount=()=>Object.values(e.selected||{}).filter(Boolean).length,e.selectedRepos=()=>e.repositories.filter(m=>e.selected[m.repoId]),e.bulkRefresh=()=>{let m=e.selectedRepos();m.length&&confirm(`Force refresh ${m.length} repositories?`)&&m.forEach(k=>e.updateRepository(k))},e.bulkRemoveCache=()=>{let m=e.selectedRepos();m.length&&confirm(`Purge cache for ${m.length} repositories?`)&&m.forEach(k=>e.removeCache(k))},e.clearSelection=()=>{e.selected={},e.allSelected=!1},e.exportCsv=()=>{let m=e.filteredRepositories||e.repositories,T=["repoId","status","statusMessage","pageView","anonymizeDate","source.fullName","conference","size.storage"].join(","),w=m.map(N=>[N.repoId,N.status,N.statusMessage||"",N.pageView||0,N.anonymizeDate||"",N.source&&N.source.fullName||"",N.conference||"",N.size&&N.size.storage||0].map(O=>{let q=String(O??"");return/[",\n\r]/.test(q)?'"'+q.replace(/"/g,'""')+'"':q}).join(",")),b=new Blob([T+` -`+w.join(` -`)],{type:"text/csv"}),E=document.createElement("a");E.href=URL.createObjectURL(b),E.download=i.username+"-repositories.csv",E.click()},e.showStatusMessage=m=>{let k=m.statusMessage||"(no message)";window.prompt(`Status message for ${m.repoId} (${m.status}):`,k)},e.fetchGithubInfo=m=>{let k=window.open("","_blank");k&&k.document.write("
Loading GitHub info for "+m.repoId+"...
"),t.get("/api/admin/repos/"+m.repoId+"/github").then(T=>{k&&(k.document.open(),k.document.write('
'+JSON.stringify(T.data,null,2).replace(/[<>]/g,w=>w==="<"?"<":">")+"
"),k.document.close())},T=>{let w=T&&T.data?JSON.stringify(T.data,null,2):String(T);k&&(k.document.body.innerHTML='
'+w+"
")})};function p(m){t.get("/api/admin/users/"+m+"/repos",{}).then(k=>{e.repositories=k.data},k=>{console.error(k)})}function v(m){t.get("/api/admin/users/"+m,{}).then(k=>{e.userInfo=k.data},k=>{console.error(k)})}v(i.username),p(i.username),e.banUser=()=>{confirm(`Ban user ${i.username}?`)&&t.post(`/api/admin/users/${i.username}/ban`).then(()=>v(i.username),m=>console.error(m))},e.activateUser=()=>{t.post(`/api/admin/users/${i.username}/activate`).then(()=>v(i.username),m=>console.error(m))},e.promoteUser=()=>{confirm(`Promote ${i.username} to admin?`)&&t.post(`/api/admin/users/${i.username}/promote`).then(()=>v(i.username),m=>console.error(m))},e.demoteUser=()=>{confirm(`Remove admin privileges from ${i.username}?`)&&t.post(`/api/admin/users/${i.username}/demote`).then(()=>v(i.username),m=>console.error(m))},e.tokens=[],e.tokenForm={name:"",plaintext:null};function h(){t.get("/api/admin/tokens").then(m=>{e.tokens=m.data||[]},m=>{m.status!==401&&m.status!==403&&console.error(m)})}h(),e.createToken=()=>{e.tokenForm.name&&t.post("/api/admin/tokens",{name:e.tokenForm.name}).then(m=>{e.tokenForm.plaintext=m.data.token,e.tokenForm.name="",h()},m=>console.error(m))},e.revokeToken=m=>{confirm(`Revoke token "${m.name}"?`)&&t.delete("/api/admin/tokens/"+m.id).then(()=>h(),k=>console.error(k))},e.removeCache=m=>{confirm("Remove cached files for "+m.repoId+"?")&&t.delete("/api/admin/repos/"+m.repoId).then(()=>p(i.username),k=>console.error(k))},e.removeRepository=m=>{confirm("Remove repository "+m.repoId+"?")&&t.delete("/api/repo/"+m.repoId+"/").then(()=>p(i.username),k=>console.error(k))},e.updateRepository=m=>{let k=et({title:`Refreshing ${m.repoId}...`,date:new Date,body:`The repository ${m.repoId} is going to be refreshed.`});e.toasts.push(k),t.post(`/api/repo/${m.repoId}/refresh`).then(T=>{T.data.status=="ready"?k.title=`${m.repoId} is refreshed.`:k.title=`Refreshing of ${m.repoId}.`},T=>{k.title=`Error during the refresh of ${m.repoId}.`,k.body=T.body})},e.getGitHubRepositories=m=>{t.get(`/api/user/${e.userInfo.username}/all_repositories`,{params:{force:"1"}}).then(k=>{e.userInfo.repositories=k.data})};let g=null;e.watch("query",()=>{s.timeout.cancel(g),g=s.timeout(()=>{p(i.username)},500)},!0)},ic=function(e,t,o){let i=Tt(),s=bn();e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.conferences=[],e.total=-1,e.totalPage=0,e.statusCounts=[];let r=T=>{if(T.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement?.tagName)){T.preventDefault();let w=document.querySelector('.admin-filter-toolbar input[type="search"]');w&&w.focus()}};s(document,"keydown",r),e.on("dispose",()=>document.removeEventListener("keydown",r)),e.clearFilter=T=>{T==="dateRange"?(e.query.dateFrom="",e.query.dateTo=""):e.query[T]="",e.query.page=1},e.chips=[];let a=()=>{let T=[];(e.query.dateFrom||e.query.dateTo)&&T.push({key:"dateRange",label:"Date",value:(e.query.dateFrom||"\u2026")+" \u2013 "+(e.query.dateTo||"\u2026")}),e.chips=T};e.statusCountFor=T=>{let w=(e.statusCounts||[]).find(b=>b._id===T);return w?w.count:0},e.toggleSortDirection=()=>{e.query.direction=e.query.direction==="asc"?"desc":"asc"},e.sortBy=T=>{e.query.sort===T?e.query.direction=e.query.direction==="asc"?"desc":"asc":(e.query.sort=T,e.query.direction="desc"),e.query.page=1},e.sortIcon=T=>e.query.sort===T?e.query.direction==="asc"?"fa-arrow-up":"fa-arrow-down":"";let u="admin.conferences.filterPrefs",p={page:1,limit:25,sort:"name",direction:"asc",search:"",dateFrom:"",dateTo:"",ready:!0,expired:!0,removed:!1,error:!0,preparing:!0},v=loadFilterPrefs(u)||{};e.query=Object.assign({},p,v,{page:1,search:""});let h=o.search();h.search&&(e.query.search=h.search);let g="admin.conferences.presets";e.presets=JSON.parse(localStorage.getItem(g)||"[]"),e.savePreset=()=>{let T=window.prompt("Preset name:");if(!T)return;let w=Object.assign({},e.query);delete w.page,e.presets=(e.presets||[]).filter(b=>b.name!==T),e.presets.push({name:T,query:w}),localStorage.setItem(g,JSON.stringify(e.presets))},e.applyPreset=T=>{Object.assign(e.query,T.query,{page:1})},e.deletePreset=T=>{e.presets=(e.presets||[]).filter(w=>w.name!==T.name),localStorage.setItem(g,JSON.stringify(e.presets))},e.removeConference=T=>{confirm("Remove conference "+T.conferenceID+"?")&&t.delete("/api/admin/conferences/"+T.conferenceID).then(()=>m(),w=>console.error(w))},e.exportCsv=()=>{let T=new URLSearchParams(Object.entries(e.query).filter(([,w])=>w!==""&&w!==!1&&w!=null));T.set("format","csv"),T.set("limit","10000"),window.open("/api/admin/conferences?"+T.toString(),"_blank")},e.fetchError=null;function m(){e.fetchError=null,t.get("/api/admin/conferences",{params:e.query}).then(T=>{e.total=T.data.total,e.totalPage=Math.ceil(T.data.total/e.query.limit),e.conferences=T.data.results,e.statusCounts=T.data.statusCounts||[]},T=>{e.fetchError=T&&T.data&&T.data.error||"Failed to load conferences",console.error(T)})}m();let k=null;e.watch("query",()=>{i.timeout.cancel(k),k=i.timeout(m,500);let{page:T,search:w,...b}=e.query;saveFilterPrefs(u,b),a()},!0),a()},rc=function(e,t,o,i,s){let r=Tt();e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.queueList=[],e.jobs=[],e.selectedQueue="download",e.selectedStats=null,e.range="1h",e.allStates=["active","waiting","delayed","failed","completed"],e.stateFilter={active:!0,waiting:!0,delayed:!0,failed:!0,completed:!0},e.query={search:"",autoRefresh:!0},e.filteredJobs=()=>(e.jobs||[]).filter(w=>e.stateFilter[w._state]),e.jobProgressPct=w=>w&&w.progress&&typeof w.progress=="object"&&typeof w.progress.percent=="number"?Math.max(0,Math.min(100,Math.round(w.progress.percent))):typeof w.progress=="number"?Math.max(0,Math.min(100,Math.round(w.progress))):null,e.jobDuration=w=>{if(!w.processedOn)return"-";let E=(w.finishedOn||Date.now())-w.processedOn;return E<1e3?E+"ms":(E/1e3).toFixed(1)+"s"},e.metricsPoints=[],e.selectQueue=w=>{e.selectedQueue=w,a(),u()},e.setRange=w=>{e.range=w,u()};function a(){let w={queue:e.selectedQueue,search:e.query.search};t.get("/api/admin/queues",{params:w}).then(b=>{e.queueList=b.data.queues||[],e.jobs=b.data.jobs||[],e.selectedStats=e.queueList.find(E=>E.key===e.selectedQueue)||e.queueList[0]||null},b=>console.error(b))}function u(){t.get("/api/admin/queues/metrics",{params:{queue:e.selectedQueue,range:e.range}}).then(w=>{e.metricsPoints=w.data.points||[],s(m,0)},w=>console.error(w))}a(),u();let p=i(()=>{e.query.autoRefresh&&(a(),u())},15e3);e.on("dispose",()=>i.cancel(p)),e.refreshNow=function(){a(),u()};function v(w){let b=w&&w.data&&(w.data.message||w.data.error)||"Request failed";e.actionError=b,s(()=>{e.actionError=null},5e3),console.error(w)}e.actionError=null,e.removeJob=w=>{t.delete(`/api/admin/queue/${e.selectedQueue}/${w.id}`).then(a,v)},e.retryJob=w=>{t.post(`/api/admin/queue/${e.selectedQueue}/${w.id}`).then(a,v)},e.retryFailed=()=>{confirm(`Retry all failed jobs in ${e.selectedQueue}?`)&&t.post(`/api/admin/queue/${e.selectedQueue}/retry-failed`).then(a,w=>console.error(w))},e.drainSelected=()=>{confirm(`Drain the ${e.selectedQueue} queue?`)&&t.post(`/api/admin/queue/${e.selectedQueue}/drain`).then(a,w=>console.error(w))},e.togglePause=()=>{let w=e.selectedStats&&e.selectedStats.paused?"resume":"pause";t.post(`/api/admin/queue/${e.selectedQueue}/${w}`).then(a,b=>console.error(b))},e.emptyQueue=()=>{confirm(`Empty the ${e.selectedQueue} queue? This removes ALL jobs.`)&&t.post(`/api/admin/queue/${e.selectedQueue}/empty`).then(a,w=>console.error(w))},e.pauseAll=()=>{confirm("Pause all queues?")&&t.post("/api/admin/queues/pause-all").then(a,w=>console.error(w))};let h=null;e.watch("query.search",()=>{r.timeout.cancel(h),h=r.timeout(a,350)}),e.expanded={},e.toggleJob=w=>{e.expanded[w.id]=!e.expanded[w.id]},e.humanTime=w=>{if(!w)return"";let b=new Date(w);return b.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})+" "+b.toLocaleDateString([],{month:"short",day:"numeric"})},e.delayCountdown=w=>{if(!w)return"";var b=Math.max(0,Math.ceil((w-Date.now())/1e3));if(b<=0)return"resuming soon";var E=Math.floor(b/60),N=b%60;return"in "+(E>0?E+"m "+N+"s":N+"s")};function g(w){if(w<=0)return{ticks:[0],niceMax:1};let b=Math.pow(10,Math.floor(Math.log10(w))),E=b;w/E<2?E=b/2:w/E>5&&(E=b*2);let N=Math.ceil(w/E)*E,O=[];for(let q=0;q<=N;q+=E)O.push(q);return{ticks:O,niceMax:N}}function m(){var w=document.getElementById("q-throughput-chart");if(!w)return;var b=w.getContext("2d"),E=window.devicePixelRatio||1,N=w.parentElement.getBoundingClientRect(),O=44,q=50,M=20,G=N.width-40,de=180,re=G-O-q,D=de-M;w.width=G*E,w.height=de*E,w.style.width=G+"px",w.style.height=de+"px",b.setTransform(E,0,0,E,0,0);var X=document.body.classList.contains("dark-mode"),le="#8A857C",Ee=X?"rgba(255,255,255,0.06)":"rgba(0,0,0,0.06)",ae=X?"#6FBF8A":"#2F7D4F",he=X?"rgba(111,191,138,0.12)":"rgba(47,125,79,0.08)",Ce=X?"#F08A82":"#B42318",Pe=X?"rgba(240,138,130,0.08)":"rgba(180,35,24,0.06)",Ne=X?"#F5C842":"#B8860B",Re=e.metricsPoints||[];if(Re.length===0){b.fillStyle=le,b.font="13px Inter, system-ui, sans-serif",b.textAlign="center",b.fillText("No metrics data yet",G/2,de/2),k=null;return}var Qe=Re.map(function(V){return V.completed}),Ke=Re.map(function(V){return V.failed}),rt=Re.map(function(V){return V.avgMs});if(!Qe.some(Boolean)&&!Ke.some(Boolean)){b.strokeStyle=X?"rgba(255,255,255,0.14)":"rgba(0,0,0,0.12)",b.beginPath(),b.moveTo(0,de-18.5),b.lineTo(G,de-18.5),b.stroke(),b.fillStyle=X?"#CFC8BD":"#4F4A42",b.font="500 14px Inter, system-ui, sans-serif",b.textAlign="center",b.fillText("No jobs processed in this window",G/2,de/2-6),b.fillStyle=le,b.font="12.5px Inter, system-ui, sans-serif",b.fillText("Completed and failed jobs will chart here",G/2,de/2+16),k=null;return}var Ze=Re.length,U=re/(Ze-1||1),oe=Math.max(1,Math.max.apply(null,Qe),Math.max.apply(null,Ke)),Z=g(oe),te=Math.max.apply(null,rt),L=te>0?g(te):{ticks:[0],niceMax:1},x=function(V){return D-V/Z.niceMax*(D-10)},H=function(V){return D-V/L.niceMax*(D-10)},ue=function(V){return O+V*U};b.textAlign="right",b.textBaseline="middle",b.font="10px monospace",Z.ticks.forEach(function(V){var j=x(V);b.strokeStyle=Ee,b.lineWidth=1,b.beginPath(),b.moveTo(O,j),b.lineTo(G-q,j),b.stroke(),b.fillStyle=le,b.fillText(V>=1e3?(V/1e3).toFixed(1)+"k":String(V),O-6,j)}),te>0&&(b.textAlign="left",L.ticks.forEach(function(V){var j=H(V);b.fillStyle=Ne,b.fillText(V>=1e3?(V/1e3).toFixed(1)+"s":V+"ms",G-q+6,j)}));var we=Date.now(),Oe=Math.min(6,Ze);b.textAlign="center",b.textBaseline="top";for(var C=0;C0&&(b.beginPath(),rt.forEach(function(V,j){var ee=ue(j),K=H(V);if(j===0)b.moveTo(ee,K);else{var me=(ue(j-1)+ee)/2;b.bezierCurveTo(me,H(rt[j-1]),me,K,ee,K)}}),b.strokeStyle=Ne,b.lineWidth=1,b.setLineDash([4,3]),b.stroke(),b.setLineDash([])),k={pts:Re,maxLen:Ze,marginLeft:O,step:U,totalW:G,toX:ue}}var k=null;function T(){var w=document.getElementById("q-throughput-chart");if(!(!w||w._tipBound)){w._tipBound=!0;var b=document.getElementById("q-chart-tooltip"),E=document.getElementById("q-chart-crosshair");w.addEventListener("mousemove",function(N){if(!(!k||!b||!E)){var O=k,q=w.getBoundingClientRect(),M=N.clientX-q.left,G=Math.round((M-O.marginLeft)/O.step);if(G<0||G>=O.maxLen){b.style.display="none",E.style.display="none";return}var de=O.pts[G],re=Date.now(),D=Math.round((re-de.ts)/6e4),X;if(D<=0)X="now";else if(D<60)X=D+"m ago";else if(D<1440){var le=Math.floor(D/60),Ee=D%60;X=le+"h"+(Ee?" "+Ee+"m":"")+" ago"}else X=Math.round(D/1440)+"d ago";var ae='
'+X+'
● completed: '+de.completed+'/min
● failed: '+de.failed+"/min
";if(de.avgMs>0){var he=de.avgMs>=1e3?(de.avgMs/1e3).toFixed(1)+"s":de.avgMs+"ms";ae+='
● avg time: '+he+"
"}b.innerHTML=ae;var Ce=O.toX(G),Pe=b.offsetWidth,Ne=Ce+10;Ne+Pe>O.totalW&&(Ne=Ce-Pe-10),b.style.display="block",b.style.left=Ne+"px",b.style.top="8px",E.style.display="block",E.style.left=Ce+"px"}}),w.addEventListener("mouseleave",function(){b&&(b.style.display="none"),E&&(E.style.display="none")})}}e.watch("metricsPoints",function(){s(T,50)})},ac=function(e,t,o,i){let s=Tt();e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.entries=[],e.visible=[],e.available=!0,e.cap=1e3,e.total=0,e.pageSize=250,e.expanded={},e.detailTab={},e.copyHint="",e.parsedFilterCount=0,e.stats={last24h:0,prev24h:0,delta:0,severity:{error:0,warn:0,info:0},unique:{error:0,warn:0,info:0},buckets:[],dropped:0},e.query={search:"",bucket:"",sort:"recent",group:"code",autoRefresh:!0},e.relTime=E=>{if(!E)return"";let N=new Date(E).getTime();if(isNaN(N))return E;let O=Math.max(0,Date.now()-N),q=Math.floor(O/1e3);if(q<5)return"just now";if(q<60)return`${q}s ago`;let M=Math.floor(q/60);if(M<60)return`${M}m ago`;let G=Math.floor(M/60);if(G<24)return`${G}h ago`;let de=Math.floor(G/24);return de<7?`${de}d ago`:new Date(E).toLocaleDateString()},e.absTime=E=>{if(!E)return"";let N=new Date(E);return isNaN(N.getTime())?E:N.toLocaleString()},e.absTimeShort=E=>{if(!E)return"";let N=new Date(E);return isNaN(N.getTime())?E:N.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})};let r=/^[a-zA-Z][a-zA-Z0-9]*(?:_[a-zA-Z0-9]+)+$/;function a(E,N){let O=E&&(E.httpStatus||E.status)||null;if(typeof O=="number"){if(O>=500)return"error";if(O===401||O===403||O===404)return"info";if(O>=400)return"warn"}return N==="error"?"error":N==="warn"?"warn":"info"}function u(E){let N=(E.raw||[]).find(G=>G&&typeof G=="object"&&!Array.isArray(G));if(N){N.message&&r.test(N.message)?(E.displayMessage=N.message,E.displayContext=E.message):N.code&&r.test(String(N.code))?(E.displayMessage=String(N.code),E.displayContext=E.message):N.name&&N.name!=="AnonymousError"&&N.name!=="Error"?(E.displayMessage=N.name,E.displayContext=N.message||E.message):E.displayMessage=E.message,E._status=N.httpStatus||N.status||null,E._url=N.url||null,E._method=N.method||null,E._repoId=N.repoId||N.detail||null,E._detail=N.detail&&N.detail!==E._repoId?N.detail:null;let G=typeof N.stack=="string"?N.stack:null;for(var O=[N.cause,N.err].filter(Boolean),q=0;!G&&q{D==null||D===""||O.push([re,D])};q("name",N&&N.name),q("code",E.displayMessage||N&&N.message),E._bucket&&q("kind",E._bucket),q("httpStatus",N&&N.httpStatus),N&&N.status&&!N.httpStatus&&q("status",N.status),q("module",E.module);let M=N&&N.detail;if(typeof M=="string"){let re=M.trim();if(re[0]==="{"||re[0]==="[")try{M=JSON.parse(M)}catch{}}if(q("detail",M),q("repoId",N&&N.repoId),q("filePath",N&&N.filePath),q("upstreamStatus",N&&N.upstreamStatus),q("upstreamBody",N&&N.upstreamBody),q("url",E._url),q("err",N&&N.err),q("cause",N&&!N.err&&N.cause),q("ts",E.ts),!O.length)return JSON.stringify(E,null,2);let G=O.reduce((re,D)=>Math.max(re,D[0].length),0),de=["{"];return O.forEach(([re,D],X)=>{let Ee=` ${`"${re}":`.padEnd(G+3," ")} `,ae=XNe===0?Pe:Ce+Pe).join(` -`)}else typeof D=="number"||typeof D=="boolean"?he=String(D):he=JSON.stringify(D);de.push(`${Ee}${he}${ae}`)}),de.push("}"),de.join(` -`)}function v(E){let N=[],O="",q=/(\w+):(>=|<=|!=|>|<|=)?([^\s]+)/g,M=0,G;for(;G=q.exec(E);)O+=E.slice(M,G.index),M=q.lastIndex,N.push({key:G[1],op:G[2]||"=",val:G[3]});return O+=E.slice(M),{filters:N,free:O.trim().toLowerCase()}}function h(E,N){for(let O of N.filters){let q=(G,de,re)=>{let D=parseFloat(G),X=parseFloat(de);return re==="="?String(G)===String(de):re==="!="?String(G)!==String(de):re===">="?D>=X:re==="<="?D<=X:re===">"?D>X:re==="<"?DN&&re._bucket!==N?!1:h(re,E)),q=e.query.group;if(q){let re=le=>q==="module"?le.module:le.displayMessage||le.message||"_",D=new Map;for(let le of O){let Ee=re(le);if(D.has(Ee)){let ae=D.get(Ee);ae.count++,ae._related.push(le),new Date(le.ts)>new Date(ae.ts)&&(ae.ts=le.ts,ae._url=le._url,ae._status=le._status),new Date(le.ts)new Date(Ee.ts).getTime()>=X).length;O=Array.from(D.values())}else O=O.map((re,D)=>(re._key="row:"+D+":"+re.ts,re._related=[re],re._firstSeen=re.ts,re._lastHourCount=0,re.count=1,re));let M=re=>({error:0,warn:1,info:2})[re._bucket]??1;e.query.sort==="count"?O.sort((re,D)=>M(re)-M(D)||D.count-re.count||new Date(D.ts)-new Date(re.ts)):O.sort((re,D)=>M(re)-M(D)||new Date(D.ts)-new Date(re.ts)),e.visible=O;let G=!!(e.query.bucket||(e.query.search||"").trim()),de=!G&&(e.stats?.severity?.error||0)>0&&!O.some(re=>re._bucket==="error")&&e.entries.length<1500;(G&&!O.length||de)&&e.canLoadMore?.()&&!e._autoLoading&&e.entries.length<2500&&(e._autoLoading=!0,m(!0))}function m(E){let N=E?e.entries.length:0,O=E?e.pageSize:Math.max(e.pageSize,e.entries.length||e.pageSize);t.get("/api/admin/errors",{params:{offset:N,limit:O}}).then(q=>{let M=(q.data.entries||[]).map(u);e.entries=E?e.entries.concat(M):M,e.available=!!q.data.available,e.cap=q.data.max||e.cap,e.total=q.data.total||e.entries.length,e._autoLoading=!1,g()},q=>{e._autoLoading=!1,console.error(q)})}e.loadMore=()=>m(!0),e.canLoadMore=()=>e.entries.length{let N=E.data||{},O=N.prev24h?Math.round((N.last24h-N.prev24h)/N.prev24h*100):0;e.stats={last24h:N.last24h||0,prev24h:N.prev24h||0,delta:O,severity:N.severity||{error:0,warn:0,info:0},unique:N.unique||{error:0,warn:0,info:0},buckets:N.buckets||[],dropped:N.dropped||0},g()},E=>console.error(E))}function T(){m(),k()}e.barPx=(E,N)=>{let O=e.stats.buckets||[],q=0,M=0;for(let D of O)q=Math.max(q,(D.error||0)+(D.warn||0)),M=Math.max(M,D.info||0);let G=E[N]||0;if(!G)return 0;if(N==="info")return M?Math.max(2,Math.round(G/M*(q?16:60))):0;let de=(E.error||0)+(E.warn||0),re=Math.round(de/q*44);return Math.max(4,Math.round(G/de*re))},e.bucketTitle=E=>`${new Date(E.hour).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})} \xB7 ${E.error||0} err \xB7 ${E.warn||0} warn \xB7 ${E.info||0} info`,e.toggle=E=>{e.expanded[E._key]=!e.expanded[E._key]},e.setBucket=E=>{e.query.bucket=E},e.refreshNow=T,e.clearAll=()=>{confirm("Clear all captured errors?")&&t.delete("/api/admin/errors").then(T,E=>console.error(E))},e.exportCsv=()=>{let E=["ts","level","module","displayMessage","_status","_url","_repoId"],N=[E.join(",")];for(let G of e.visible)N.push(E.map(de=>{let re=G[de]==null?"":String(G[de]);return/[",\n]/.test(re)?`"${re.replace(/"/g,'""')}"`:re}).join(","));let O=new Blob([N.join(` -`)],{type:"text/csv;charset=utf-8"}),q=URL.createObjectURL(O),M=document.createElement("a");M.href=q,M.download=`errors-${new Date().toISOString().slice(0,19)}.csv`,document.body.appendChild(M),M.click(),document.body.removeChild(M),URL.revokeObjectURL(q)};function w(E){e.copyHint=`${E} copied`,s.timeout(()=>{e.copyHint=""},1500)}e.copyJson=E=>{navigator.clipboard.writeText(E._detailJson).then(()=>w("JSON"))},e.copyCurl=E=>{if(!E._url)return;let O=`curl -X ${E._method||"GET"} '${window.location.origin}${E._url}'`;navigator.clipboard.writeText(O).then(()=>w("curl"))},T();let b=i(()=>{e.query.autoRefresh&&T()},15e3);e.on("dispose",()=>i.cancel(b)),e.watch("query.search",g),e.watch("query.bucket",g),e.watch("query.sort",g),e.watch("query.group",g)},lc=function(e,t,o,i){if(e.Math=Math,e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null){o.url("/");return}e.data=null,e.loading=!0,e.error=null,e.performance=null,e.performanceMinutes=15,e.performanceTab="routes",e.cacheReport=null,e.cacheError=null,e.cacheMinutes=60,e.cacheTraffic="all",e.ovView=["performance","cache"].includes((window.location.hash||"").slice(1))?window.location.hash.slice(1):"summary",e.setOvView=function(b){e.ovView=b;try{window.history.replaceState(null,"",b==="summary"?window.location.pathname:"#"+b)}catch{}};var s=!1;e.loadCache=function(){if(!s){s=!0;var b=e.cacheMinutes;t.get("/api/admin/cache",{params:{minutes:b}}).then(function(E){b===e.cacheMinutes&&(e.cacheReport=E.data,e.cacheError=E.data.available?null:E.data.reason||"Cache monitoring is unavailable.")},function(){e.cacheError="Could not refresh cache monitoring. Displayed values may be stale."}).finally(function(){s=!1,b!==e.cacheMinutes&&e.loadCache()})}},e.cacheRows=function(){return(e.cacheReport?.rows||[]).filter(function(b){return e.cacheTraffic==="all"||b.traffic===e.cacheTraffic})},e.cacheRate=function(b,E){var N=e.cacheRows(),O=function(G){return N.filter(function(de){return de.name===G}).reduce(function(de,re){return de+re[E]},0)},q=O(b+"_hit"),M=O(b+"_miss");return q+M?(100*q/(q+M)).toFixed(1)+"%":"No samples"},e.cacheEventName=function(b){return b.replaceAll("_"," ")},e.cacheP95=function(b){var E=0,N=e.cacheReport?.latencyBucketsMs||[];if(!b.count)return"No samples";if(!b.ms)return"Not timed";for(var O=0;O<=N.length;O++)if(E+=b["b"+O]||0,E>=Math.ceil(b.count*.95))return O 10 s";return"No samples"},e.performanceError=null,e.formatMs=function(b){return b==null?"":b<1e3?b+" ms":+(b/1e3).toFixed(1)+" s"},e.latencyBound=function(b,E){return b.count?b[E]==null?"> 60 s":"\u2264 "+e.formatMs(b[E]):"No samples"},e.firstByteBound=function(b){return e.latencyBound({count:b.firstByteCount,p95UpperMs:b.firstByteP95UpperMs},"p95UpperMs")},e.sampleAge=function(b){return Math.max(0,Math.round((Date.now()-b.sampledAt)/1e3))},e.peakRss=function(b){return(e.performance.runtimeSeries||[]).filter(function(E){return E.instance===b.instance}).reduce(function(E,N){return Math.max(E,N.rss)},b.memory.rss)},e.performanceWarning=function(b){return e.sampleAge(b)>45||b.droppedBatches||b.droppedMetrics||b.sockets?.closeWait>0||b.eventLoop?.p95Ms>100||b.memoryLimitBytes&&b.memory.rss>b.memoryLimitBytes*.8};var r=!1;e.loadPerformance=function(){var b=e.performanceMinutes;e.performance?.windowMinutes&&e.performance.windowMinutes!==b&&(e.performance=null),!r&&(r=!0,t.get("/api/admin/performance",{params:{minutes:b}}).then(function(E){b===e.performanceMinutes&&(e.performance=E.data,e.performanceError=E.data.available?null:"Performance monitoring is unavailable. Request history may be incomplete.")},function(){b===e.performanceMinutes&&(e.performanceError="Could not refresh performance monitoring. Displayed samples may be stale.")}).finally(function(){r=!1,b!==e.performanceMinutes&&e.loadPerformance()}))};function a(b){if(b==null)return"\u2014";for(var E=["B","KB","MB","GB","TB"],N=0,O=b;O>=1024&&N0?1:0)+" "+E[N]}e.humanBytes=a;function u(b){if(!b)return"\u2014";var E=Math.floor(b/86400),N=Math.floor(b%86400/3600),O=Math.floor(b%3600/60);return E>0?E+"d "+(N<10?"0":"")+N+"h":N>0?N+"h "+(O<10?"0":"")+O+"m":O+"m"}e.humanDuration=u;function p(b){return b==null?"\u2014":b>=1e6?(b/1e6).toFixed(1)+"M":b>=1e3?(b/1e3).toFixed(1)+"K":String(b)}e.humanNum=p,e.queueTotal=function(b){return b?(b.waiting||0)+(b.active||0)+(b.delayed||0)+(b.failed||0):0},e.statusCount=function(b){if(!e.data||!e.data.repos)return 0;for(var E=e.data.repos.statusBreakdown||[],N=0;N=0;M--){var G=new Date(N.getTime()-M*864e5),de=G.toISOString().slice(0,10);q.push(O[de]||{date:G.toISOString(),_empty:!0,dailyPageViews:0,dailyRepositories:0,dailyUsers:0,nbUsers:0})}return q}var m={};e.historyMax=function(b){return m[b]||0};var k={};e.historyBarH=function(b,E){return!b||!m[E]?0:Math.max(1,Math.round(b[E]/m[E]*140))},e.historyRangeH=function(b,E){if(!b||m[E]==null)return 0;var N=m[E]-k[E];return N?Math.round(8+(b[E]-k[E])/N*132):70},e.historyRange=function(b){return{min:k[b],max:m[b]}},e.historyLabel=function(b){if(!b||!b.date)return"";var E=new Date(b.date);return E.getUTCMonth()+1+"/"+E.getUTCDate()};function T(){e.loadPerformance(),e.loadCache(),t.get("/api/admin/overview").then(function(b){b.data.history=v(b.data.history),b.data.daily={today:h(b.data.history)},b.data.history=g(b.data.history,30),b.data.daily={today:h(b.data.history)},e.data=b.data,e.loading=!1,e.error=null,m={},k={},(b.data.history||[]).forEach(function(E){["dailyPageViews","dailyRepositories","dailyUsers","nbUsers"].forEach(function(N){(!m[N]||E[N]>m[N])&&(m[N]=E[N]),(k[N]==null||E[N]Ca(e,t)},{path:"/connections",template:"partials/connections.htm",title:"GitHub connections \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ec(e,t.http)},{path:"/signin",template:"partials/signin.htm",title:"Sign in \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>tc(e,t.http)},{path:"/",template:"partials/home.htm",title:"Anonymous GitHub \u2013 Share the code, not the author",preserveExplorer:!1,setup:(e,t)=>Wu(e,t.http,t.location,t.window,t.timeout)},{path:"/dashboard",template:"partials/dashboard.htm",title:"Your anonymizations \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ku(e,t.http,t.location,t.promises,t.window,t.quotaService)},{path:"/pr-dashboard",redirect:"/dashboard"},{path:"/anonymize/:repoId?",template:"partials/anonymize.htm",title:"New anonymization \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>$i(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/pull-request-anonymize/:pullRequestId?",template:"partials/anonymize.htm",title:"Anonymize a pull request \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>$i(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/gist-anonymize/:gistId?",template:"partials/anonymize.htm",title:"Anonymize a gist \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>$i(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/status/:repoId",template:"partials/status.htm",title:"Repository status \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Yu(e,t.http,t.params)},{path:"/conferences",template:"partials/conferences.htm",title:"Your conferences \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Qu(e,t.http,t.location)},{path:"/conference/new",template:"partials/newConference.htm",title:"New conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ha(e,t.http,t.location,t.params)},{path:"/conference/:conferenceId/edit",template:"partials/newConference.htm",title:"Edit conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ha(e,t.http,t.location,t.params)},{path:"/conference/:conferenceId",template:"partials/conference.htm",title:"Conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>xu(e,t.http,t.location,t.params)},{path:"/faq",template:"partials/faq.htm",title:"FAQ \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Hu(e,t.http)},{path:"/profile",template:"partials/profile.htm",title:"Your settings \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ju(e,t.http,t.translate,t.timeout,t.quotaService)},{path:"/claim",template:"partials/claim.htm",title:"Claim an anonymization \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Gu(e,t.http,t.location)},{path:"/pr/:pullRequestId/:path(.*)*",template:"partials/pullRequest.htm",title:"Anonymous pull request \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Xu(e,t.http,t.location,t.params,t.html)},{path:"/gist/:gistId/:path(.*)*",template:"partials/gist.htm",title:"Anonymous gist \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ju(e,t.http,t.location,t.params,t.html)},{path:"/r/:repoId/:path(.*)*",template:"partials/explorer.htm",title:"Anonymous repository \u2013 Anonymous GitHub",preserveExplorer:!0,setup:(e,t)=>fa(e,t.http,t.location,t.params,t.html,t.promises)},{path:"/repository/:repoId/:path(.*)*",template:"partials/explorer.htm",title:"Anonymous repository \u2013 Anonymous GitHub",preserveExplorer:!0,setup:(e,t)=>fa(e,t.http,t.location,t.params,t.html,t.promises)},{path:"/admin/",template:"partials/admin/overview.htm",title:"Admin \xB7 Overview \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>lc(e,t.http,t.location,t.interval)},{path:"/admin/repositories",template:"partials/admin/repositories.htm",title:"Admin \xB7 Repositories \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>nc(e,t.http,t.location)},{path:"/admin/users",template:"partials/admin/users.htm",title:"Admin \xB7 Users \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>oc(e,t.http,t.location)},{path:"/admin/users/:username",template:"partials/admin/user.htm",title:"Admin \xB7 User details \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>sc(e,t.http,t.location,t.params)},{path:"/admin/conferences",template:"partials/admin/conferences.htm",title:"Admin \xB7 Conferences \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ic(e,t.http,t.location)},{path:"/admin/queues",template:"partials/admin/queues.htm",title:"Admin \xB7 Queues \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>rc(e,t.http,t.location,t.interval,t.timeout)},{path:"/admin/errors",template:"partials/admin/errors.htm",title:"Admin \xB7 Errors \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>ac(e,t.http,t.location,t.interval)},{path:"/404",template:"partials/404.htm",title:"Page not found \u2013 Anonymous GitHub",preserveExplorer:!1,setup:()=>{}},{path:"/:pathMatch(.*)*",template:"partials/404.htm",title:"Page not found \u2013 Anonymous GitHub",setup:()=>{}}];var lg={class:"container py-4",style:{"max-width":"48rem","overflow-wrap":"anywhere"}},dg={key:0},ug={key:1,role:"alert"},cg={key:2,role:"status"},pg={key:0},fg={key:1},hg=["disabled"],mg=["disabled"],gg=["disabled"],vg={key:5,class:"mt-4","aria-labelledby":"review-policy-title"},yg={id:"review-policy-title"},bg={key:0,role:"alert"},wg=["disabled"],kg=["disabled"],Cg=["disabled"],Eg={key:6,role:"status"};function uc(e,t){return l(),d("section",lg,[t[12]||(t[12]=n("a",{href:"/"},"Anonymous GitHub",-1)),t[13]||(t[13]=n("h1",{class:"mt-3"},"Approve artifact access",-1)),t[14]||(t[14]=n("p",null,"This records your approval as the repository owner or an authorized coauthor.",-1)),e.user?.username?f("v-if",!0):(l(),d("p",dg,[...t[6]||(t[6]=[y("Sign in first, then reopen the artifact link from your submission. ",-1),n("a",{href:"/signin"},"Sign in",-1)])])),e.error?(l(),d("p",ug,c(e.error),1)):f("v-if",!0),e.saved?(l(),d("p",cg,[t[7]||(t[7]=y("Consent recorded. ",-1)),e.handoffEnabled?(l(),d("span",pg,"Continue to review to finish linking.")):(l(),d("span",fg,"Artifact linking is not complete. Return to your submission to check its status."))])):f("v-if",!0),e.saved&&e.handoffEnabled?(l(),d("button",{key:3,class:"btn btn-primary",type:"button",onClick:t[0]||(t[0]=(...o)=>e.continueReview&&e.continueReview(...o)),disabled:e.busy},"Continue to review",8,hg)):f("v-if",!0),e.user?.username&&!e.saved?(l(),d("form",{key:4,onSubmit:t[2]||(t[2]=ce((...o)=>e.loadPreview&&e.loadPreview(...o),["prevent"]))},[t[8]||(t[8]=n("label",{for:"review-repository"},"Anonymous repository ID",-1)),A(n("input",{id:"review-repository",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=o=>e.repositoryId=o),maxlength:"128",autocomplete:"off",disabled:e.busy||e.uncertain,"aria-describedby":"review-repository-help"},null,8,mg),[[ct,e.repositoryId]]),t[9]||(t[9]=n("p",{id:"review-repository-help"},"Use the ID after /r/ in the anonymous repository URL.",-1)),n("button",{type:"submit",class:"btn btn-primary",disabled:e.busy||e.uncertain},"Preview access and retention",8,gg)],32)):f("v-if",!0),e.preview&&!e.saved?(l(),d("section",vg,[n("h2",yg,c(e.preview.repositoryName),1),n("p",null,"Access: "+c(e.preview.policy.access==="anonymous-link"?"Anyone with the anonymous link":"Restricted review access")+".",1),n("p",null,"Retain until "+c(e.preview.policy.retainUntil)+". Policy version "+c(e.preview.policy.version)+".",1),e.expired?(l(),d("p",bg,"This preview expired. Open a new artifact link from your submission.")):f("v-if",!0),n("div",null,[n("label",null,[A(n("input",{type:"checkbox","onUpdate:modelValue":t[3]||(t[3]=o=>e.acceptAccess=o),disabled:e.busy||e.uncertain||e.expired},null,8,wg),[[Dr,e.acceptAccess]]),t[10]||(t[10]=y(" I approve the access policy above.",-1))])]),n("div",null,[n("label",null,[A(n("input",{type:"checkbox","onUpdate:modelValue":t[4]||(t[4]=o=>e.acceptRetention=o),disabled:e.busy||e.uncertain||e.expired},null,8,kg),[[Dr,e.acceptRetention]]),t[11]||(t[11]=y(" I approve retention until the date above.",-1))])]),n("button",{class:"btn btn-primary",type:"button",onClick:t[5]||(t[5]=(...o)=>e.confirmConsent&&e.confirmConsent(...o)),disabled:e.busy||e.expired||!e.acceptAccess||!e.acceptRetention},c(e.uncertain?"Retry confirmation":"Confirm consent"),9,Cg)])):f("v-if",!0),e.busy?(l(),d("p",Eg,"Waiting for the server\u2026")):f("v-if",!0)])}var Sg={class:"container paper-page connections-page"},Ng={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},Rg={key:1,role:"status"},Dg=["disabled"],Ag={key:3},Tg={key:0,class:"connection-resources"},Pg=["disabled"],_g=["disabled"],Og={key:0,role:"status"},Ig={class:"connections-grid"},Mg={key:0},Vg={class:"connection-title"},qg={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},$g={class:"connection-actions"},Lg={key:0,class:"btn btn-ink",target:"_self",href:"/github/app/install"},Ug=["disabled"],Fg={key:1,class:"connection-installations"},Bg={key:0},zg=["href"],Hg={class:"sr-only"},jg={class:"connection-title"},Gg={key:0,target:"_self",href:"/github/login",class:"btn btn-outline-ink"},Wg={key:1,class:"connection-revoke"},Kg={key:0},Yg=["disabled"],Xg={class:"connection-resources"},Jg={class:"connection-title"},Qg={class:"connection-count"},Zg={key:0,class:"connection-empty"},xg={class:"connection-resource-name"},ev={key:0,class:"connection-resource-actions"},tv=["disabled","onClick"],nv=["disabled","onClick"],ov={key:1,class:"connection-help",role:"status"},sv=["disabled","onClick"];function cc(e,t){return l(),d("div",Sg,[t[27]||(t[27]=ke('
My work \xA0/\xA0 GitHub connections

GitHub connections

Manage how GitHub shares your code. Your anonymizations and URLs stay the same.

',2)),e.connectionError?(l(),d("p",Ng,c(e.connectionError),1)):f("v-if",!0),!e.connections&&!e.connectionError?(l(),d("p",Rg,"Loading your connections\u2026")):f("v-if",!0),!e.connections&&e.connectionError?(l(),d("button",{key:2,class:"btn btn-outline-ink",disabled:e.busy,onClick:t[0]||(t[0]=o=>e.loadConnections())},"Try again",8,Dg)):f("v-if",!0),e.connections?(l(),d("div",Ag,[e.connections.emailNotificationsEnabled?(l(),d("section",Tg,[t[6]||(t[6]=n("h2",null,"Email alerts",-1)),t[7]||(t[7]=n("p",null,"We will email you if your GitHub connection stops working or a repository becomes inaccessible. Your address is never shown on anonymous pages.",-1)),n("form",{onSubmit:t[2]||(t[2]=ce(o=>e.saveNotificationEmail(),["prevent"]))},[t[5]||(t[5]=n("label",{for:"notification-email"},"Email address",-1)),A(n("input",{id:"notification-email",class:"form-control",type:"email",autocomplete:"email",maxlength:"254",required:"","onUpdate:modelValue":t[1]||(t[1]=o=>e.notificationEmail=o),disabled:e.busy},null,8,Pg),[[ct,e.notificationEmail]]),n("button",{class:"btn btn-ink mt-2",type:"submit",disabled:e.busy},"Save email address",8,_g),e.emailSaved?(l(),d("p",Og,"Email address saved.")):f("v-if",!0)],32)])):f("v-if",!0),n("div",Ig,[e.connections.appEnabled?(l(),d("section",Mg,[t[15]||(t[15]=n("div",{class:"connection-top"},[n("i",{class:"fab fa-github","aria-hidden":"true"}),n("span",{class:"connection-badge"},"Recommended")],-1)),n("div",Vg,[t[8]||(t[8]=n("h2",null,"GitHub App",-1)),n("span",{class:P(["connection-status",{"is-connected":e.connections.appConnected&&!e.connections.appError}])},c(e.connections.appError?"Needs attention":e.connections.appConnected?"Connected":"Not connected"),3)]),t[16]||(t[16]=n("p",null,"Read-only access to gists and the repositories you choose.",-1)),e.connections.appError?(l(),d("p",qg,c(e.connections.appError)+". Reconnect to restore access.",1)):f("v-if",!0),n("div",$g,[e.connections.appConnected&&!e.connections.appError?(l(),d("a",Lg,[...t[9]||(t[9]=[y("Manage repository access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):f("v-if",!0),n("a",{class:P(e.connections.appConnected&&!e.connections.appError?"connection-link":"btn btn-ink"),target:"_self",href:"/github/app/login"},c(e.connections.appConnected?"Reconnect account":"Connect GitHub account"),3),e.connections.appConnected?(l(),d("button",{key:1,class:"connection-link connection-refresh",title:"Refresh access",disabled:e.busy,onClick:t[3]||(t[3]=o=>e.loadConnections())},[...t[10]||(t[10]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),n("span",{class:"sr-only"},"Refresh access",-1)])],8,Ug)):f("v-if",!0)]),t[17]||(t[17]=n("p",{class:"connection-help"},"Choose repositories on GitHub. Organization access may need an administrator's approval.",-1)),e.connections.installations?.length?(l(),d("ul",Fg,[(l(!0),d(B,null,ie(e.connections.installations,o=>(l(),d("li",{key:o.id},[n("div",null,[t[11]||(t[11]=n("span",{class:"connection-label"},"Installed on",-1)),t[12]||(t[12]=y()),n("strong",null,c(o.account),1),o.suspended?(l(),d("span",Bg," \xB7 Suspended")):f("v-if",!0)]),e.connections.installations.length>1?(l(),d("a",{key:0,target:"_self",href:"/github/app/install?installationId="+o.id},[t[13]||(t[13]=y("Manage access ",-1)),n("span",Hg,"for "+c(o.account),1),t[14]||(t[14]=y(" \u2192",-1))],8,zg)):f("v-if",!0)]))),128))])):f("v-if",!0)])):f("v-if",!0),n("section",null,[t[20]||(t[20]=n("div",{class:"connection-top"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-key"})]),n("span",{class:"connection-badge connection-badge-muted"},"Legacy")],-1)),n("div",jg,[t[18]||(t[18]=n("h2",null,"GitHub OAuth",-1)),n("span",{class:P(["connection-status",{"is-connected":e.connections.oauthConnected}])},c(e.connections.oauthConnected?"Connected":"Not connected"),3)]),t[21]||(t[21]=n("p",null,"For existing OAuth anonymizations.",-1)),t[22]||(t[22]=n("p",{class:"connection-help"},"This connection uses GitHub's broader repository permissions. Existing work keeps using it until you switch below.",-1)),e.connections.oauthEnabled?(l(),d("a",Gg,c(e.connections.oauthConnected?"Reconnect OAuth":"Connect legacy OAuth"),1)):f("v-if",!0),e.connections.oauthConnected?(l(),d("div",Wg,[e.connections.gistCount?(l(),d("p",Kg,c(e.connections.gistCount)+" gist(s) use your GitHub App connection when available.",1)):f("v-if",!0),t[19]||(t[19]=n("p",null,"Switch all dependent repositories before revoking access. Gists can use your GitHub App connection.",-1)),e.connections.appConnected?(l(),d("button",{key:1,class:"btn btn-sm btn-outline-danger connection-danger",disabled:e.busy||e.connections.resources.some(o=>o.connection==="oauth"),onClick:t[4]||(t[4]=o=>e.disconnectOAuth())},"Revoke OAuth access",8,Yg)):f("v-if",!0)])):f("v-if",!0)])]),n("section",Xg,[n("div",Jg,[t[23]||(t[23]=n("h2",null,"Repository connections",-1)),n("span",Qg,c(e.connections.resources?.length||0)+" "+c((e.connections.resources?.length||0)===1?"resource":"resources"),1)]),t[25]||(t[25]=n("p",null,"Check access, then switch each resource to the GitHub App. After reinstalling the App, reconnect existing resources here to keep their anonymous URLs and published snapshots.",-1)),e.connections.resources?.length?f("v-if",!0):(l(),d("div",Zg,[...t[24]||(t[24]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),n("div",null,[n("h3",null,"No repository connections yet"),n("p",null,"Your repositories and pull requests will appear here once you anonymize them.")],-1),n("a",{class:"connection-link",href:"/anonymize"},"New anonymization \u2192",-1)])])),(l(!0),d(B,null,ie(e.connections.resources,o=>(l(),d("div",{class:"connection-resource",key:o.type+o.id},[n("div",xg,[n("strong",null,c(o.name||o.id),1),n("small",null,c(o.type)+" \xB7 "+c(o.id),1)]),n("span",{class:P(["connection-badge",{"connection-badge-muted":o.connection==="oauth"}])},c(o.connection==="github-app"?"Read-only App":"Legacy OAuth"),3),!["archived","removed","preparing","queue","removing","expiring"].includes(o.status)&&(o.status!=="download"||o.type==="pull-request"&&(!o.statusDate||new Date(o.statusDate).getTime()<=Date.now()-3e5))&&e.connections.appEnabled&&e.connections.appConnected?(l(),d("div",ev,[n("button",{class:"btn btn-outline-ink",disabled:e.busy,onClick:i=>e.changeConnection(o,"github-app",!0)},"Check read-only access",8,tv),o.eligible?(l(),d("button",{key:0,class:"btn btn-ink",disabled:e.busy,onClick:i=>e.changeConnection(o,"github-app",!1)},c(o.connection==="github-app"?"Reconnect read-only access":"Switch to read-only access"),9,nv)):f("v-if",!0),o.eligible===!1?(l(),d("span",ov,"Access unavailable. Allow this repository on GitHub, then check again.")):f("v-if",!0)])):f("v-if",!0),!["archived","removed","preparing","queue","removing","expiring"].includes(o.status)&&(o.status!=="download"||o.type==="pull-request"&&(!o.statusDate||new Date(o.statusDate).getTime()<=Date.now()-3e5))&&o.connection==="github-app"&&e.connections.oauthConnected?(l(),d("button",{key:1,class:"connection-link",disabled:e.busy,onClick:i=>e.changeConnection(o,"oauth",!1)},"Use OAuth",8,sv)):f("v-if",!0)]))),128)),t[26]||(t[26]=n("p",{class:"connection-footnote"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),y(" Removing access stops new fetches from GitHub. Published content keeps its current expiration and removal settings.")],-1))])])):f("v-if",!0)])}var iv={class:"container paper-page auth-page"},rv={class:"auth-layout"},av={class:"auth-options"},lv={key:0},dv={key:0,class:"btn btn-ink auth-continue",target:"_self",href:"/github/login?recover=1"},uv={key:1},cv={key:1},pv={key:2,class:"auth-legacy"},fv={key:3,role:"status"};function pc(e,t){return l(),d("div",iv,[t[5]||(t[5]=n("a",{class:"auth-back",href:"/"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-arrow-left"})]),y(" Anonymous GitHub")],-1)),n("div",rv,[t[4]||(t[4]=ke('
Your research, ready for review

Your code.
Your identity,
protected.
Sign in to GitHub

Sign in to create and manage your anonymizations.

',1)),n("div",av,[e.accountRecovery?(l(),d("section",lv,[t[0]||(t[0]=n("h2",null,"Verify your existing account",-1)),t[1]||(t[1]=n("p",null,"We found an existing account. Verify it with your previous GitHub connection to keep your anonymizations. Future sign-ins will use the GitHub App.",-1)),e.site_options?.GITHUB_OAUTH_ENABLED?(l(),d("a",dv,"Verify with previous GitHub connection")):(l(),d("p",uv,"Account verification is currently unavailable. Please try again later."))])):f("v-if",!0),e.site_options?.GITHUB_APP_ENABLED&&!e.accountRecovery?(l(),d("section",cv,[...t[2]||(t[2]=[ke('
Read-only access

Continue with GitHub

Connect through the GitHub App with read-only repository access.

  • You choose which repositories to share
  • No permission to write to your code
Sign in with GitHub Your existing anonymizations and connections stay with your account.',6)])])):f("v-if",!0),!e.site_options?.GITHUB_APP_ENABLED&&e.site_options?.GITHUB_OAUTH_ENABLED&&!e.accountRecovery?(l(),d("section",pv,[...t[3]||(t[3]=[n("div",{class:"connection-title"},[n("h2",null,"Continue with GitHub")],-1),n("p",null,"Sign in to access your account. GitHub OAuth includes write access to private repositories.",-1),n("a",{class:"connection-link",target:"_self",href:"/github/login"},[y("Sign in with GitHub "),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-arrow-right"})])],-1)])])):f("v-if",!0),e.site_options&&!e.site_options.GITHUB_APP_ENABLED&&!e.site_options.GITHUB_OAUTH_ENABLED?(l(),d("p",fv,"GitHub sign-in is currently unavailable. Please try again later.")):f("v-if",!0)])])])}var hv={class:"paper-empty"};function fc(e,t){return l(),d("div",hv,[...t[0]||(t[0]=[ke('
Error \xB7 404

This link
isn\u2019t here.

The anonymous mirror you\u2019re looking for has expired, been removed by its owner, or never existed. If you received this URL from an author, ask them to re-issue it.

',1)])])}var mv={class:"container paper-page admin-page"},gv={class:"summary-total"},vv=["aria-pressed"],yv={class:"count"},bv=["aria-pressed"],wv={class:"count"},kv=["aria-pressed"],Cv={class:"count"},Ev=["aria-pressed"],Sv={class:"count"},Nv=["aria-pressed"],Rv={class:"count"},Dv={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},Av={class:"w-100 admin-filter-toolbar","aria-label":"Conferences","accept-charset":"UTF-8"},Tv={class:"admin-filter-row"},Pv={class:"search-wrap"},_v={type:"search",class:"form-control",placeholder:"Search conferences\u2026",autocomplete:"off"},Ov={key:0,class:"admin-search-hint"},Iv={key:1,class:"admin-filter-inline","aria-label":"Pagination"},Mv=["disabled"],Vv={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},qv=["disabled"],$v={key:0,class:"admin-filter-row"},Lv={class:"admin-active-chips"},Uv={class:"key"},Fv=["onClick"],Bv={class:"paper-table paper-table-conferences w-100",role:"table","aria-label":"Conferences"},zv={key:0,class:"paper-table-head",role:"row"},Hv={role:"columnheader"},jv={role:"columnheader"},Gv={role:"columnheader"},Wv={class:"paper-table-row",role:"row"},Kv={class:"cell-anon",role:"cell"},Yv={class:"anon-text"},Xv=["textContent","href"],Jv={class:"anon-sub"},Qv={class:"cell-status",role:"cell"},Zv=["textContent"],xv={class:"cell-views num",role:"cell"},ey=["textContent","href"],ty={class:"cell-expires",role:"cell"},ny={class:"cell-actions",role:"cell"},oy={class:"dropdown"},sy={class:"dropdown-menu dropdown-menu-right"},iy=["href"],ry=["href"],ay=["href"],ly=["onClick"],dy={key:1,class:"paper-table-empty"},uy={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},cy={style:{"font-size":"12px",color:"var(--ink-muted)"}},py={key:0,class:"pagination-compact"},fy=["disabled"],hy=["max"],my=["disabled"],gy={class:"admin-filter-inline"},vy={class:"form-control form-control-sm"};function hc(e,t){let o=De("field"),i=De("form");return l(),d("div",mv,[t[48]||(t[48]=ke('
Admin \xA0/\xA0 Conferences

Conferences

',3)),n("div",{class:P(["admin-summary",{"is-empty":e.total===0}])},[n("span",gv,[y(c(e.total>=0?e.fmt.number(e.total):"\u2026")+" ",1),n("small",null,c(e.total===1?"conference":"conferences"),1)]),t[18]||(t[18]=n("span",{class:"summary-show-label"},"Show:",-1)),n("button",{type:"button",class:P(["summary-pill ok",{active:e.query?.ready}]),title:"Toggle ready filter",onClick:t[0]||(t[0]=s=>{e.query.ready=!e.query.ready,e.query.page=1}),"aria-pressed":!!e.query?.ready},[t[13]||(t[13]=y("Ready ",-1)),n("span",yv,c(e.fmt?.number(e.statusCountFor("ready"))),1)],10,vv),n("button",{type:"button",class:P(["summary-pill warn",{active:e.query?.preparing}]),title:"Toggle preparing filter",onClick:t[1]||(t[1]=s=>{e.query.preparing=!e.query.preparing,e.query.page=1}),"aria-pressed":!!e.query?.preparing},[t[14]||(t[14]=y("Preparing ",-1)),n("span",wv,c(e.fmt?.number(e.statusCountFor("preparing"))),1)],10,bv),n("button",{type:"button",class:P(["summary-pill error",{active:e.query?.error}]),title:"Toggle errored filter",onClick:t[2]||(t[2]=s=>{e.query.error=!e.query.error,e.query.page=1}),"aria-pressed":!!e.query?.error},[t[15]||(t[15]=y("Errored ",-1)),n("span",Cv,c(e.fmt?.number(e.statusCountFor("error"))),1)],10,kv),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.expired}]),title:"Toggle expired filter",onClick:t[3]||(t[3]=s=>{e.query.expired=!e.query.expired,e.query.page=1}),"aria-pressed":!!e.query?.expired},[t[16]||(t[16]=y("Expired ",-1)),n("span",Sv,c(e.fmt?.number(e.statusCountFor("expired"))),1)],10,Ev),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.removed}]),title:"Toggle removed filter",onClick:t[4]||(t[4]=s=>{e.query.removed=!e.query.removed,e.query.page=1}),"aria-pressed":!!e.query?.removed},[t[17]||(t[17]=y("Removed ",-1)),n("span",Rv,c(e.fmt?.number(e.statusCountFor("removed"))),1)],10,Nv)],2),e.fetchError?(l(),d("div",Dv,[t[19]||(t[19]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),y(" "+c(e.fetchError),1)])):f("v-if",!0),A((l(),d("form",Av,[n("div",Tv,[n("div",Pv,[A(n("input",_v,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?f("v-if",!0):(l(),d("span",Ov,"/"))]),t[23]||(t[23]=n("span",{class:"admin-filter-spacer"},null,-1)),e.total>0?(l(),d("button",{key:0,class:"btn btn-sm",type:"button",onClick:t[5]||(t[5]=s=>e.exportCsv())},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),y(" Export",-1)])])):f("v-if",!0),e.totalPage>1?(l(),d("span",Iv,[n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[6]||(t[6]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[21]||(t[21]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,Mv),n("span",Vv,c(e.query?.page)+"/"+c(e.totalPage||1),1),n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[7]||(t[7]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[22]||(t[22]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,qv)])):f("v-if",!0)]),e.chips?.length?(l(),d("div",$v,[n("div",Lv,[(l(!0),d(B,null,ie(e.chips,(s,r)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[n("span",Uv,c(s?.label),1),n("span",null,c(s?.value),1),n("button",{type:"button",onClick:a=>e.clearFilter(s.key),"aria-label":"Clear filter"},[...t[24]||(t[24]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,Fv)]))),128))])])):f("v-if",!0)])),[[i,e.viewState]]),n("div",Bv,[e.total!==0?(l(),d("div",zv,[n("div",Hv,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="name"}]),onClick:t[8]||(t[8]=s=>e.sortBy("name"))},[t[26]||(t[26]=y("Conference ",-1)),e.sortIcon("name")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("name")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[25]||(t[25]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),n("div",jv,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="status"}]),onClick:t[9]||(t[9]=s=>e.sortBy("status"))},[t[28]||(t[28]=y("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[27]||(t[27]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),t[31]||(t[31]=n("div",{role:"columnheader",class:"num"},"Repos",-1)),n("div",Gv,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="startDate"}]),onClick:t[10]||(t[10]=s=>e.sortBy("startDate"))},[t[30]||(t[30]=y("Window ",-1)),e.sortIcon("startDate")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("startDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[29]||(t[29]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),t[32]||(t[32]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))])):f("v-if",!0),(l(!0),d(B,null,ie(e.filteredConferences,(s,r)=>(l(),d("div",Wv,[n("div",Kv,[t[34]||(t[34]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Conference"},[n("use",{href:"#project-icon-conference"})],-1)),n("div",Yv,[n("a",{class:"repo-name",textContent:c(s?.name),href:e.safeUrl("/conference/"+s?.conferenceID)},null,8,Xv),n("div",Jv,[n("span",null,c(s?.conferenceID),1),t[33]||(t[33]=y("\xA0\xB7\xA0",-1)),n("span",null,c(e.fmt?.number(s?.price||0))+" \u20AC",1)])])]),n("div",Qv,[n("span",{class:P(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),n("span",{textContent:c(e.fmt?.title(s?.status))},null,8,Zv)]),n("div",xv,[t[35]||(t[35]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1)),n("a",{title:"Show repositories in this conference",textContent:c(e.fmt?.number(s?.repositories?.length||0)),href:e.safeUrl("/admin/?conference="+s?.conferenceID)},null,8,ey)]),n("div",ty,[t[36]||(t[36]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),y(" "+c(e.fmt?.date(s?.startDate))+" \u2013 "+c(e.fmt?.date(s?.endDate)),1)]),n("div",ny,[n("div",oy,[t[42]||(t[42]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",sy,[n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/edit")},[...t[37]||(t[37]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),y(" Edit",-1)])],8,iy),n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/")},[...t[38]||(t[38]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),y(" View",-1)])],8,ry),n("a",{class:"dropdown-item",href:e.safeUrl("/admin/?conference="+s?.conferenceID)},[...t[39]||(t[39]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),y(" View repositories",-1)])],8,ay),t[41]||(t[41]=n("div",{class:"dropdown-divider"},null,-1)),A(n("a",{class:"dropdown-item text-danger",href:"#",onClick:ce(a=>e.removeConference(s),["prevent"])},[...t[40]||(t[40]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),y(" Remove",-1)])],8,ly),[[J,s?.status!="removed"]])])])])]))),256)),e.filteredConferences?.length==0?(l(),d("div",dy,[t[43]||(t[43]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),n("span",null,c(e.total?"No conferences match the current filters.":"No conferences yet."),1)])):f("v-if",!0)]),n("div",uy,[n("span",cy,c(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",py,[n("button",{class:"btn btn-sm",onClick:t[11]||(t[11]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[44]||(t[44]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1),y(" Previous",-1)])],8,fy),A(n("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},max:e.totalPage},null,8,hy),[[o,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),n("span",null,"of "+c(e.totalPage),1),n("button",{class:"btn btn-sm",onClick:t[12]||(t[12]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[45]||(t[45]=[y("Next ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,my)])):f("v-if",!0),n("span",gy,[t[47]||(t[47]=n("label",null,"Per page",-1)),A((l(),d("select",vy,[...t[46]||(t[46]=[ke('',5)])])),[[o,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var yy={class:"container paper-page admin-page errors-page"},by={class:"errors-header"},wy={class:"errors-actions"},ky={class:"kpi-grid"},Cy={class:"kpi-card"},Ey={class:"kpi-value"},Sy={key:0},Ny={key:1},Ry={key:2},Dy=["aria-pressed"],Ay={class:"kpi-value"},Ty={class:"kpi-sub"},Py=["aria-pressed"],_y={class:"kpi-value"},Oy={class:"kpi-sub"},Iy=["aria-pressed"],My={class:"kpi-value"},Vy={class:"kpi-sub"},qy={class:"kpi-value"},$y={class:"kpi-sub"},Ly={key:0,class:"dropped-warn"},Uy={class:"volume-chart"},Fy={class:"volume-head"},By={class:"volume-legend"},zy={key:0},Hy={key:1},jy={key:2},Gy={class:"volume-bars"},Wy=["title"],Ky={class:"errors-toolbar","aria-label":"Error filters"},Yy={class:"seg-tabs"},Xy={class:"search-wrap"},Jy={type:"search",class:"form-control",placeholder:"Search code, module, status\u2026",title:"Syntax: code:repo_not_found module:route status:>=400",autocomplete:"off"},Qy={key:0,class:"filter-count"},Zy={class:"select-wrap"},xy={class:"form-control form-control-sm"},eb={class:"select-wrap"},tb={class:"form-control form-control-sm"},ob={class:"autoref"},sb={type:"checkbox"},ib={key:0,class:"admin-empty"},rb={key:1,class:"errors-pager"},ab={key:2,class:"errors-list"},lb=["onClick"],db={class:"col-when"},ub={class:"when-rel"},cb={class:"when-abs"},pb={class:"col-sev"},fb={class:"sev-label"},hb={class:"col-mod"},mb={class:"pill pill-module"},gb={class:"col-msg"},vb={class:"msg-code"},yb={key:0,class:"msg-context"},bb={key:1,class:"msg-detail"},wb={key:2,class:"msg-url"},kb={class:"col-count"},Cb={key:0,class:"count-pill"},Eb={key:1,class:"count-pill count-pill-muted"},Sb={class:"col-status"},Nb=["title"],Rb={key:0,class:"errors-row-detail"},Db={class:"detail-tabs"},Ab=["onClick"],Tb=["onClick"],Pb=["onClick"],_b={class:"detail-body"},Ob={class:"detail-main"},Ib={key:0},Mb={key:1,class:"stack-pre"},Vb={key:2,class:"related-list"},qb={class:"when-abs"},$b={class:"msg-url"},Lb={class:"detail-actions"},Ub=["onClick"],Fb=["onClick"],Bb={key:0,class:"copy-hint"},zb={class:"detail-aside"},Hb={class:"aside-block"},jb=["title"],Gb={class:"aside-block"},Wb=["title"],Kb={class:"aside-block"},Yb={class:"aside-value"},Xb={key:0,class:"aside-sub"},Jb={key:0,class:"aside-block"},Qb=["href"],Zb={key:1,class:"aside-block"},xb={class:"aside-value mono"};function mc(e,t){let o=De("field"),i=De("form");return l(),d("div",yy,[t[42]||(t[42]=n("div",{class:"paper-crumbs"},[y("Admin \xA0/\xA0 "),n("span",{class:"here"},"Errors")],-1)),n("header",by,[t[16]||(t[16]=n("h1",{class:"paper-page-title"},"Errors",-1)),n("div",wy,[n("button",{class:"btn btn-sm",type:"button",onClick:t[0]||(t[0]=s=>e.exportCsv())},[...t[14]||(t[14]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),y(" Export CSV",-1)])]),n("button",{class:"btn btn-sm btn-outline-danger",type:"button",onClick:t[1]||(t[1]=s=>e.clearAll())},[...t[15]||(t[15]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),y(" Clear all",-1)])])])]),t[43]||(t[43]=ke('',1)),n("section",ky,[n("div",Cy,[t[17]||(t[17]=n("div",{class:"kpi-label"},"Occurrences \xB7 24h",-1)),n("div",Ey,c(e.fmt?.number(e.stats?.last24h??0)),1),n("div",{class:P(["kpi-sub",{up:e.stats?.delta>0,down:e.stats?.delta<0}])},[e.stats?.prev24h>=20?(l(),d("span",Sy,c((e.stats?.last24h??0)-(e.stats?.prev24h??0)>=0?"+":"")+c(Math.round(((e.stats?.last24h??0)-(e.stats?.prev24h??0))/e.stats.prev24h*100))+"% vs yesterday",1)):e.stats?.prev24h!==void 0?(l(),d("span",Ny,c(e.fmt?.number(e.stats?.prev24h??0))+" in prior 24h",1)):f("v-if",!0),e.stats?.prev24h?f("v-if",!0):(l(),d("span",Ry,"no prior baseline"))],2)]),n("div",{class:P(["kpi-card kpi-error kpi-filter",{"is-selected":e.query?.bucket==="error"}]),role:"button",tabindex:"0","aria-pressed":e.query?.bucket==="error",title:"Show only 5xx errors",onClick:t[2]||(t[2]=s=>e.setBucket(e.query?.bucket==="error"?"":"error")),onKeydown:t[3]||(t[3]=At(ce(s=>e.setBucket(e.query?.bucket==="error"?"":"error"),["prevent"]),["enter"]))},[t[18]||(t[18]=n("div",{class:"kpi-label"},"Errors (5xx)",-1)),n("div",Ay,c(e.fmt?.number(e.stats?.severity?.error??0)),1),n("div",Ty,c(e.stats?.unique?.error)+" unique",1)],42,Dy),n("div",{class:P(["kpi-card kpi-warn kpi-filter",{"is-selected":e.query?.bucket==="warn"}]),role:"button",tabindex:"0","aria-pressed":e.query?.bucket==="warn",title:"Show only 4xx responses",onClick:t[4]||(t[4]=s=>e.setBucket(e.query?.bucket==="warn"?"":"warn")),onKeydown:t[5]||(t[5]=At(ce(s=>e.setBucket(e.query?.bucket==="warn"?"":"warn"),["prevent"]),["enter"]))},[t[19]||(t[19]=n("div",{class:"kpi-label"},"4xx responses",-1)),n("div",_y,c(e.fmt?.number(e.stats?.severity?.warn??0)),1),n("div",Oy,c(e.stats?.unique?.warn)+" unique",1)],42,Py),n("div",{class:P(["kpi-card kpi-info kpi-filter",{"is-selected":e.query?.bucket==="info"}]),role:"button",tabindex:"0","aria-pressed":e.query?.bucket==="info",title:"Show only info events",onClick:t[6]||(t[6]=s=>e.setBucket(e.query?.bucket==="info"?"":"info")),onKeydown:t[7]||(t[7]=At(ce(s=>e.setBucket(e.query?.bucket==="info"?"":"info"),["prevent"]),["enter"]))},[t[20]||(t[20]=n("div",{class:"kpi-label"},"Info (auth, 404)",-1)),n("div",My,c(e.fmt?.number(e.stats?.severity?.info??0)),1),n("div",Vy,c(e.stats?.unique?.info)+" unique",1)],42,Iy),n("div",{class:P(["kpi-card",{"kpi-error":e.stats?.dropped>0}])},[t[21]||(t[21]=n("div",{class:"kpi-label"},"Distinct errors stored",-1)),n("div",qy,c(e.fmt?.number(e.total)),1),n("div",$y,[y(" all time \xB7 cap "+c(e.fmt?.number(e.cap))+" \xB7 "+c(e.available?"live":"redis off")+" ",1),e.stats?.dropped>0?(l(),d("span",Ly," \xB7 "+c(e.stats?.dropped)+" dropped",1)):f("v-if",!0)])],2)]),n("section",Uy,[n("div",Fy,[t[25]||(t[25]=n("span",{class:"volume-title"},"Volume \xB7 24h \xB7 1h buckets",-1)),n("span",By,[e.stats?.severity?.error?(l(),d("span",zy,[...t[22]||(t[22]=[n("span",{class:"dot dot-error"},null,-1),y("error",-1)])])):f("v-if",!0),e.stats?.severity?.warn?(l(),d("span",Hy,[...t[23]||(t[23]=[n("span",{class:"dot dot-warn"},null,-1),y("warn",-1)])])):f("v-if",!0),e.stats?.severity?.info?(l(),d("span",jy,[...t[24]||(t[24]=[n("span",{class:"dot dot-info"},null,-1),y("info",-1)])])):f("v-if",!0)])]),n("div",Gy,[(l(!0),d(B,null,ie(e.stats?.buckets,(s,r)=>(l(),d("div",{class:"volume-bar",key:r,title:e.bucketTitle(s)},[n("span",{class:"seg seg-error",style:$e({height:e.barPx(s,"error")+"px"})},null,4),n("span",{class:"seg seg-warn",style:$e({height:e.barPx(s,"warn")+"px"})},null,4),n("span",{class:"seg seg-info",style:$e({height:e.barPx(s,"info")+"px"})},null,4)],8,Wy))),128))]),t[26]||(t[26]=n("div",{class:"volume-axis","aria-hidden":"true"},[n("span",null,"24h ago"),n("span",null,"12h ago"),n("span",null,"now")],-1))]),A((l(),d("form",Ky,[n("div",Yy,[n("button",{type:"button",class:P({active:e.query?.bucket===""}),onClick:t[8]||(t[8]=s=>e.setBucket(""))},"All",2),n("button",{type:"button",class:P({active:e.query?.bucket==="error"}),onClick:t[9]||(t[9]=s=>e.setBucket("error"))},"5xx",2),n("button",{type:"button",class:P({active:e.query?.bucket==="warn"}),onClick:t[10]||(t[10]=s=>e.setBucket("warn"))},"4xx",2),n("button",{type:"button",class:P({active:e.query?.bucket==="info"}),onClick:t[11]||(t[11]=s=>e.setBucket("info"))},"Info",2)]),n("div",Xy,[t[27]||(t[27]=n("svg",{class:"ui-icon search-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)),A(n("input",Jy,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.parsedFilterCount?(l(),d("span",Qy,c(e.parsedFilterCount)+" filter"+c(e.parsedFilterCount>1?"s":""),1)):f("v-if",!0)]),n("div",Zy,[t[29]||(t[29]=n("label",null,"Sort",-1)),A((l(),d("select",xy,[...t[28]||(t[28]=[n("option",{value:"recent"},"Most recent",-1),n("option",{value:"count"},"Most frequent",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.sort=s},value:e.query?.sort,form:null,options:{}}]])]),n("div",eb,[t[31]||(t[31]=n("label",null,"Group",-1)),A((l(),d("select",tb,[...t[30]||(t[30]=[n("option",{value:""},"Off",-1),n("option",{value:"code"},"By code",-1),n("option",{value:"module"},"By module",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.group=s},value:e.query?.group,form:null,options:{}}]])]),n("label",ob,[A(n("input",sb,null,512),[[o,{state:e.viewState,set:s=>{e.query.autoRefresh=s},value:e.query?.autoRefresh,form:null,options:{}}]]),t[32]||(t[32]=n("span",{class:"auto-refresh-label"},"Auto-refresh",-1))]),n("button",{class:"btn btn-sm btn-icon",type:"button",title:"Refresh now",onClick:t[12]||(t[12]=s=>e.refreshNow()),"aria-label":"Refresh"},[...t[33]||(t[33]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])])])),[[i,e.viewState]]),e.visible?.length?f("v-if",!0):(l(),d("div",ib,"No errors captured.")),e.canLoadMore()&&e.visible?.length?(l(),d("div",rb,[n("span",null,c(e.query?.group&&e.visible?.length!==e.entries?.length?e.fmt?.number(e.visible?.length)+(e.visible?.length===1?" group":" groups")+" from ":"")+c(e.fmt?.number(e.entries?.length))+" of "+c(e.fmt?.number(e.total))+" stored errors loaded",1),n("button",{class:"btn btn-sm",type:"button",onClick:t[13]||(t[13]=s=>e.loadMore())},"Load 250 older")])):f("v-if",!0),e.visible?.length?(l(),d("div",ab,[t[41]||(t[41]=ke('
WhenSeverityModuleMessageTotalStatus
',1)),(l(!0),d(B,null,ie(e.visible,(s,r)=>(l(),d("div",{class:P(["errors-row",{open:e.expanded[s?._key]}]),key:s?._key},[n("div",{class:"errors-row-main",onClick:a=>e.toggle(s)},[n("div",db,[n("div",ub,c(e.relTime(s?.ts)),1),n("div",cb,c(e.absTimeShort(s?.ts)),1)]),n("div",pb,[n("span",{class:P(["sev-dot","sev-"+s?._bucket])},null,2),n("span",fb,c(e.fmt?.title(s?._bucket)),1)]),n("div",hb,[n("span",mb,c(s?.module),1)]),n("div",gb,[n("strong",vb,c(s?.displayMessage),1),s?.displayContext&&s?.displayContext!==s?.displayMessage?(l(),d("span",yb,c(s?.displayContext),1)):f("v-if",!0),s?._detail?(l(),d("span",bb,c(s?._detail),1)):f("v-if",!0),s?._url?(l(),d("div",wb,c(s?._url),1)):f("v-if",!0)]),n("div",kb,[s?.count>1?(l(),d("span",Cb,"\xD7"+c(s?.count),1)):f("v-if",!0),s?.count===1?(l(),d("span",Eb,"\xD71")):f("v-if",!0)]),n("div",Sb,[s?._status?(l(),d("span",{key:0,class:P(["status-pill",String(s?._status).match(/^[23]/)?"status-neutral":"status-"+s?._bucket]),title:String(s?._status).match(/^2/)&&s?._bucket==="warn"?"Client closed the connection":null},c(String(s?._status).match(/^2/)&&s?._bucket==="warn"?"\u2014":s?._status),11,Nb)):f("v-if",!0)])],8,lb),e.expanded[s?._key]?(l(),d("div",Rb,[n("div",Db,[n("button",{type:"button",class:P({active:e.detailTab[s?._key]==="raw"||!e.detailTab[s?._key]}),onClick:a=>e.detailTab[s._key]="raw"},"Raw",10,Ab),s?._stack?(l(),d("button",{key:0,type:"button",class:P({active:e.detailTab[s?._key]==="stack"}),onClick:a=>e.detailTab[s._key]="stack"},"Stack",10,Tb)):f("v-if",!0),s?.count>1?(l(),d("button",{key:1,type:"button",class:P({active:e.detailTab[s?._key]==="related"}),onClick:a=>e.detailTab[s._key]="related"},"Related ("+c(s?.count)+")",11,Pb)):f("v-if",!0)]),n("div",_b,[n("div",Ob,[(e.detailTab[s?._key]||"raw")==="raw"?(l(),d("pre",Ib,c(s?._detailJson),1)):f("v-if",!0),e.detailTab[s?._key]==="stack"?(l(),d("pre",Mb,c(s?._stack),1)):f("v-if",!0),e.detailTab[s?._key]==="related"?(l(),d("div",Vb,[(l(!0),d(B,null,ie(s?._related,(a,u)=>(l(),d("div",{class:"related-row",key:u},[n("span",qb,c(e.absTimeShort(a?.ts)),1),n("span",$b,c(a?._url),1),a?._status?(l(),d("span",{key:0,class:P(["status-pill","status-"+a?._bucket])},c(a?._status),3)):f("v-if",!0)]))),128))])):f("v-if",!0),n("div",Lb,[n("button",{class:"btn btn-sm",type:"button",title:"Copy a curl that reproduces the request",onClick:a=>e.copyCurl(s)},[...t[34]||(t[34]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),y(" Copy curl",-1)])],8,Ub),n("button",{class:"btn btn-sm",type:"button",onClick:a=>e.copyJson(s)},[...t[35]||(t[35]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-clipboard"})],-1),y(" Copy JSON",-1)])],8,Fb),e.copyHint?(l(),d("span",Bb,c(e.copyHint),1)):f("v-if",!0)])]),n("aside",zb,[n("div",Hb,[t[36]||(t[36]=n("div",{class:"aside-label"},"First seen",-1)),n("div",{class:"aside-value",title:e.absTime(s?._firstSeen)},c(e.relTime(s?._firstSeen)),9,jb)]),n("div",Gb,[t[37]||(t[37]=n("div",{class:"aside-label"},"Last seen",-1)),n("div",{class:"aside-value",title:e.absTime(s?.ts)},c(e.relTime(s?.ts)),9,Wb)]),n("div",Kb,[t[38]||(t[38]=n("div",{class:"aside-label"},"Occurrences",-1)),n("div",Yb,[y(c(s?.count),1),s?._lastHourCount?(l(),d("span",Xb," \xB7 "+c(s?._lastHourCount)+" this hour",1)):f("v-if",!0)])]),s?._repoId?(l(),d("div",Jb,[t[39]||(t[39]=n("div",{class:"aside-label"},"Repository",-1)),n("a",{class:"aside-value",href:e.safeUrl("/r/"+s?._repoId)},c(s?._repoId),9,Qb)])):f("v-if",!0),s?._url?(l(),d("div",Zb,[t[40]||(t[40]=n("div",{class:"aside-label"},"URL",-1)),n("div",xb,c(s?._url),1)])):f("v-if",!0)])])])):f("v-if",!0)],2))),128))])):f("v-if",!0)])}var e1={class:"container paper-page admin-page overview-page"},t1={key:0,class:"admin-empty"},n1={key:1,class:"alert alert-danger",style:{margin:"12px 0"}},o1={class:"ov-views",role:"tablist","aria-label":"Overview sections"},s1=["aria-selected","onClick"],i1={key:2},r1={key:0,class:"ov-health",role:"status"},a1={class:"ov-kpi-row"},l1={class:"ov-kpi-card"},d1={class:"ov-kpi-value"},u1={class:"ov-kpi-sub"},c1={class:"ov-kpi-card"},p1={class:"ov-kpi-sub"},f1={class:"ov-kpi-card"},h1={class:"ov-kpi-sub"},m1={class:"ov-kpi-card"},g1={class:"ov-kpi-sub"},v1={class:"ov-kpi-card"},y1={class:"ov-kpi-value"},b1={class:"ov-kpi-sub"},w1={class:"ov-daily-row"},k1={class:"ov-daily-card"},C1={class:"ov-daily-value"},E1={class:"ov-daily-card"},S1={class:"ov-daily-value"},N1={class:"ov-daily-sub"},R1={class:"ov-daily-card"},D1={class:"ov-daily-value"},A1={class:"ov-chart-row"},T1={class:"ov-chart-card"},P1={class:"ov-chart-head"},_1={class:"ov-chart-legend"},O1={key:0,class:"ov-spark-bars"},I1=["data-tip","aria-label"],M1={key:1,class:"ov-spark-x"},V1={class:"ov-chart-card"},q1={class:"ov-chart-head"},$1={class:"ov-chart-legend"},L1={key:0,class:"ov-spark-bars"},U1=["data-tip","aria-label"],F1={key:1,class:"ov-spark-x"},B1={class:"ov-chart-card"},z1={class:"ov-chart-head"},H1={class:"ov-chart-legend"},j1={key:0,class:"ov-spark-bars"},G1=["data-tip","aria-label"],W1={key:1,class:"ov-spark-x"},K1={class:"ov-chart-card"},Y1={class:"ov-chart-head"},X1={class:"ov-chart-legend"},J1={key:0,class:"ov-spark-bars"},Q1=["data-tip","aria-label"],Z1={key:1,class:"ov-spark-x"},x1={class:"ov-triple-row"},ew={class:"ov-panel-card"},tw={class:"ov-panel-head"},nw={class:"ov-panel-meta"},ow={class:"ov-stacked-bar"},sw={class:"ov-bar-legend"},iw={href:"/admin/repositories",class:"ov-legend-item"},rw={class:"ov-legend-n"},aw={href:"/admin/repositories",class:"ov-legend-item"},lw={class:"ov-legend-n"},dw={href:"/admin/repositories",class:"ov-legend-item"},uw={class:"ov-legend-n"},cw={href:"/admin/repositories",class:"ov-legend-item"},pw={class:"ov-legend-n"},fw={href:"/admin/repositories",class:"ov-legend-item"},hw={class:"ov-legend-n"},mw={class:"ov-panel-card"},gw={class:"ov-panel-head"},vw={class:"ov-panel-meta"},yw={class:"ov-error-bars"},bw={class:"ov-ebar-row"},ww={class:"ov-ebar-track"},kw={class:"ov-ebar-n"},Cw={class:"ov-ebar-row"},Ew={class:"ov-ebar-track"},Sw={class:"ov-ebar-n"},Nw={class:"ov-ebar-row"},Rw={class:"ov-ebar-track"},Dw={class:"ov-ebar-n"},Aw={key:0,class:"ov-panel-foot"},Tw={href:"/admin/errors"},Pw={class:"ov-panel-card"},_w={class:"ov-routes-table"},Ow={class:"ov-route-row",href:"/admin/queues"},Iw={class:"ov-route-n"},Mw={class:"ov-route-n"},Vw={class:"ov-route-row",href:"/admin/queues"},qw={class:"ov-route-n"},$w={class:"ov-route-n"},Lw={class:"ov-route-row",href:"/admin/queues"},Uw={class:"ov-route-n"},Fw={class:"ov-route-n"},Bw={class:"ov-services-card"},zw={class:"ov-services-head"},Hw={class:"ov-panel-meta"},jw={class:"ov-services-grid"},Gw={class:"ov-svc"},Ww={class:"ov-svc-info"},Kw={class:"ov-svc-meta"},Yw={class:"ov-svc-detail"},Xw={class:"ov-svc"},Jw={class:"ov-svc-info"},Qw={key:0,class:"ov-svc-meta"},Zw={key:1,class:"ov-svc-meta"},xw={class:"ov-svc"},ek={class:"ov-svc-info"},tk={key:0,class:"ov-svc-meta"},nk={key:1,class:"ov-svc-meta"},ok={class:"ov-svc"},sk={class:"ov-svc-info"},ik={key:0,class:"ov-svc-meta"},rk={key:1,class:"ov-svc-meta"},ak={class:"ov-svc"},lk={class:"ov-svc-info"},dk={class:"ov-svc-meta"},uk={class:"ov-panel-card ov-cache","aria-labelledby":"cache-heading"},ck={class:"ov-panel-head ov-performance-head"},pk={class:"ov-performance-window"},fk={key:0,class:"ov-performance-message ov-performance-warning",role:"alert"},hk={key:1,class:"ov-performance-empty",role:"status"},mk={key:0,class:"ov-performance-note"},gk={key:1,class:"ov-performance-note"},vk={key:2,class:"ov-performance-message ov-performance-warning",role:"status"},yk={key:3,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Cache storage budgets"},bk={class:"ov-metrics-table"},wk={scope:"row"},kk={key:4,class:"ov-performance-note"},Ck={key:5,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Cache events and processing durations"},Ek={class:"ov-metrics-table"},Sk={scope:"row"},Nk={key:6,class:"ov-performance-empty",role:"status"},Rk={class:"ov-performance-note"},Dk={class:"ov-panel-card ov-performance","aria-labelledby":"performance-heading"},Ak={class:"ov-panel-head ov-performance-head"},Tk={class:"ov-performance-window"},Pk={key:0,class:"ov-performance-message ov-performance-warning",role:"alert"},_k={key:1,class:"ov-performance-empty",role:"status"},Ok={key:2},Ik={class:"paper-tabs ov-performance-tabs",role:"tablist","aria-label":"Performance metrics"},Mk=["aria-selected","tabindex"],Vk=["aria-selected","tabindex"],qk=["aria-selected","tabindex"],$k={id:"performance-routes",role:"tabpanel","aria-labelledby":"performance-routes-tab"},Lk={key:0,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Route latency metrics, scroll for more columns"},Uk={class:"ov-metrics-table"},Fk={scope:"row",class:"ov-metric-name"},Bk={class:"num"},zk={class:"num"},Hk={class:"num"},jk={class:"num"},Gk={class:"num"},Wk={key:1,class:"ov-performance-empty"},Kk={id:"performance-processes",role:"tabpanel","aria-labelledby":"performance-processes-tab"},Yk={key:0,class:"ov-performance-message ov-performance-warning",role:"status"},Xk={key:1,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Process resource metrics, scroll for more columns"},Jk={class:"ov-metrics-table"},Qk={scope:"row",class:"ov-metric-name"},Zk={key:0,class:"ov-metric-warn"},xk={class:"num"},e0={class:"num"},t0={class:"num"},n0={class:"num"},o0={class:"num"},s0={class:"num"},i0={class:"num"},r0={class:"num"},a0={id:"performance-stages",role:"tabpanel","aria-labelledby":"performance-stages-tab"},l0={key:0,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Work stage metrics, scroll for more columns"},d0={class:"ov-metrics-table"},u0={scope:"row",class:"ov-metric-name"},c0={class:"num"},p0={class:"num"},f0={class:"num"},h0={key:1,class:"ov-performance-empty"};function gc(e,t){return l(),d("div",e1,[t[83]||(t[83]=ke('
Admin \xA0/\xA0 Overview

Overview

Live \xB7 refreshes every 30s
',3)),e.loading?(l(),d("div",t1,"Loading overview\u2026")):f("v-if",!0),e.error?(l(),d("div",n1,[t[13]||(t[13]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),y(" "+c(e.error),1)])):f("v-if",!0),n("div",o1,[(l(),d(B,null,ie([{id:"summary",label:"Summary"},{id:"performance",label:"Performance"},{id:"cache",label:"Cache"}],o=>n("button",{type:"button",role:"tab",key:o.id,"aria-selected":e.ovView===o.id?"true":"false",class:P({active:e.ovView===o.id}),onClick:i=>e.setOvView(o.id)},c(o.label),11,s1)),64))]),e.data?A((l(),d("div",i1,[e.data?.system?.memPercent>90||e.data?.system?.diskPercent>90?(l(),d("div",r1,[...t[14]||(t[14]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1),n("span",null,[n("b",null,"Server needs attention."),y(" Memory or disk is running high (see the cards below). New anonymizations may fail until it drops.")],-1)])])):f("v-if",!0),f(" \u2500\u2500 Top KPI row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",a1,[n("div",l1,[t[15]||(t[15]=n("div",{class:"ov-kpi-label"},"Live repositories",-1)),n("div",d1,c(e.humanNum((e.data?.repos?.statusBreakdown||[]).filter(o=>o._id!=="removed"&&o._id!=="expired").reduce((o,i)=>o+(i.count||0),0))),1),n("div",u1,c(e.humanNum(((e.data?.repos?.statusBreakdown||[]).find(o=>o._id==="removed")||{}).count||0))+" removed \xB7 "+c(e.humanNum(e.data?.repos?.total))+" total",1)]),n("div",c1,[t[16]||(t[16]=n("div",{class:"ov-kpi-label"},"CPU",-1)),n("div",{class:P(["ov-kpi-value",{"ov-val-warn":e.data?.system?.cpuPercent>80}])},c(e.data?.system?.cpuPercent)+"%",3),n("div",{class:P(["ov-meter",{warn:e.data?.system?.cpuPercent>80,crit:e.data?.system?.cpuPercent>90}])},[n("span",{style:$e({width:Math.min(100,e.data?.system?.cpuPercent||0)+"%"})},null,4)],2),n("div",p1,c(e.data?.system?.cpuCount)+" cores \xB7 load "+c(e.data?.system?.loadAvg?.[0]?.toFixed(1)),1)]),n("div",f1,[t[17]||(t[17]=n("div",{class:"ov-kpi-label"},"Memory",-1)),n("div",{class:P(["ov-kpi-value",{"ov-val-warn":e.data?.system?.memPercent>85}])},c(e.data?.system?.memPercent)+"%",3),n("div",{class:P(["ov-meter",{warn:e.data?.system?.memPercent>85,crit:e.data?.system?.memPercent>90}])},[n("span",{style:$e({width:Math.min(100,e.data?.system?.memPercent||0)+"%"})},null,4)],2),n("div",h1,[e.data?.system?.memPercent>85?(l(),d("b",{key:0,class:P(["ov-flag",{critical:e.data?.system?.memPercent>90}])},c(e.data?.system?.memPercent>90?"Critical":"High")+" \xB7 ",3)):f("v-if",!0),y(c(e.humanBytes(e.data?.system?.memUsed).replace(/\s*GB$/,""))+" / "+c(e.humanBytes(e.data?.system?.memTotal)),1)])]),n("div",m1,[t[18]||(t[18]=n("div",{class:"ov-kpi-label"},"Disk",-1)),n("div",{class:P(["ov-kpi-value",{"ov-val-warn":e.data?.system?.diskPercent>85}])},c(e.data?.system?.diskPercent)+"%",3),n("div",{class:P(["ov-meter",{warn:e.data?.system?.diskPercent>85,crit:e.data?.system?.diskPercent>90}])},[n("span",{style:$e({width:Math.min(100,e.data?.system?.diskPercent||0)+"%"})},null,4)],2),n("div",g1,[e.data?.system?.diskPercent>85?(l(),d("b",{key:0,class:P(["ov-flag",{critical:e.data?.system?.diskPercent>90}])},c(e.data?.system?.diskPercent>90?"Critical":"High")+" \xB7 ",3)):f("v-if",!0),y(c(e.humanBytes(e.data?.system?.diskUsed).replace(/\s*GB$/,""))+" / "+c(e.humanBytes(e.data?.system?.diskTotal)),1),e.data?.system?.diskMount&&e.data.system.diskMount!=="/"?(l(),d(B,{key:1},[y(" \xB7 "+c(e.data?.system?.diskMount),1)],64)):f("v-if",!0)])]),n("div",v1,[t[19]||(t[19]=n("div",{class:"ov-kpi-label"},"Uptime",-1)),n("div",y1,c(e.humanDuration(e.data?.system?.uptime)),1),n("div",b1,c(e.data?.system?.nodeVersion)+" \xB7 "+c(e.data?.system?.platform),1)])]),f(" \u2500\u2500 Daily activity highlights \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",w1,[n("div",k1,[t[20]||(t[20]=n("div",{class:"ov-daily-label"},"New repos today",-1)),n("div",C1,c(e.fmt?.number(e.data?.daily?.today?.repositories||0)),1),t[21]||(t[21]=n("div",{class:"ov-daily-sub"},"so far today",-1))]),n("div",E1,[t[22]||(t[22]=n("div",{class:"ov-daily-label"},"New users today",-1)),n("div",S1,c(e.fmt?.number(e.data?.daily?.today?.users||0)),1),n("div",N1,c(e.fmt?.number(e.data?.users?.total))+" total users",1)]),n("div",R1,[t[23]||(t[23]=n("div",{class:"ov-daily-label"},"Page views today",-1)),n("div",D1,c(e.fmt?.number(e.data?.daily?.today?.pageViews||0)),1),t[24]||(t[24]=n("div",{class:"ov-daily-sub"},"so far today",-1))])]),f(" \u2500\u2500 Daily charts \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",A1,[n("div",T1,[n("div",P1,[t[26]||(t[26]=n("span",{class:"ov-chart-title"},"Daily page views \xB7 30d",-1)),n("span",_1,[t[25]||(t[25]=n("span",{class:"ov-dot-legend ov-dot-accent"},null,-1)),y("views/day \xB7 peak "+c(e.fmt?.number(e.historyMax("dailyPageViews"))),1)])]),e.data?.history?.length?(l(),d("div",O1,[(l(!0),d(B,null,ie(e.data?.history,(o,i)=>(l(),d("div",{class:"ov-spark-col has-tip",key:i,"data-tip":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyPageViews)+" views","aria-label":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyPageViews)+" views"},[n("span",{class:"ov-spark-fill",style:$e({height:e.historyBarH(o,"dailyPageViews")+"px"})},null,4)],8,I1))),128))])):f("v-if",!0),e.data?.history?.length?(l(),d("div",M1,[n("span",null,c(e.historyLabel(e.data?.history[0])),1),n("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):f("v-if",!0)]),n("div",V1,[n("div",q1,[t[28]||(t[28]=n("span",{class:"ov-chart-title"},"New repos \xB7 30d",-1)),n("span",$1,[t[27]||(t[27]=n("span",{class:"ov-dot-legend ov-dot-ok-fill"},null,-1)),y("repos/day \xB7 peak "+c(e.fmt?.number(e.historyMax("dailyRepositories"))),1)])]),e.data?.history?.length?(l(),d("div",L1,[(l(!0),d(B,null,ie(e.data?.history,(o,i)=>(l(),d("div",{class:"ov-spark-col has-tip",key:i,"data-tip":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyRepositories)+" repos","aria-label":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyRepositories)+" repos"},[n("span",{class:"ov-spark-fill ov-spark-fill-alt",style:$e({height:e.historyBarH(o,"dailyRepositories")+"px"})},null,4)],8,U1))),128))])):f("v-if",!0),e.data?.history?.length?(l(),d("div",F1,[n("span",null,c(e.historyLabel(e.data?.history[0])),1),n("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):f("v-if",!0)]),n("div",B1,[n("div",z1,[t[30]||(t[30]=n("span",{class:"ov-chart-title"},"Users \xB7 30d",-1)),n("span",H1,[t[29]||(t[29]=n("span",{class:"ov-dot-legend ov-dot-user-fill"},null,-1)),y("total users \xB7 "+c(e.fmt?.number(e.historyRange("nbUsers").min))+"\u2013"+c(e.fmt?.number(e.historyRange("nbUsers").max)),1)])]),e.data?.history?.length?(l(),d("div",j1,[(l(!0),d(B,null,ie(e.data?.history,(o,i)=>(l(),d("div",{class:"ov-spark-col has-tip",key:i,"data-tip":e.historyLabel(o)+": "+e.fmt?.number(o?.nbUsers)+" users","aria-label":e.historyLabel(o)+": "+e.fmt?.number(o?.nbUsers)+" users"},[n("span",{class:"ov-spark-fill ov-spark-fill-user",style:$e({height:e.historyRangeH(o,"nbUsers")+"px"})},null,4)],8,G1))),128))])):f("v-if",!0),e.data?.history?.length?(l(),d("div",W1,[n("span",null,c(e.historyLabel(e.data?.history[0])),1),n("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):f("v-if",!0)]),n("div",K1,[n("div",Y1,[t[32]||(t[32]=n("span",{class:"ov-chart-title"},"New users \xB7 30d",-1)),n("span",X1,[t[31]||(t[31]=n("span",{class:"ov-dot-legend ov-dot-new-user-fill"},null,-1)),y("users/day \xB7 peak "+c(e.fmt?.number(e.historyMax("dailyUsers"))),1)])]),e.data?.history?.length?(l(),d("div",J1,[(l(!0),d(B,null,ie(e.data?.history,(o,i)=>(l(),d("div",{class:"ov-spark-col has-tip",key:i,"data-tip":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyUsers)+" users","aria-label":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyUsers)+" users"},[n("span",{class:"ov-spark-fill ov-spark-fill-new-user",style:$e({height:e.historyBarH(o,"dailyUsers")+"px"})},null,4)],8,Q1))),128))])):f("v-if",!0),e.data?.history?.length?(l(),d("div",Z1,[n("span",null,c(e.historyLabel(e.data?.history[0])),1),n("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):f("v-if",!0)])]),f(" \u2500\u2500 Three-panel row: Status / Errors / Queues \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",x1,[f(" Repo status breakdown "),n("div",ew,[n("div",tw,[t[33]||(t[33]=n("span",{class:"ov-panel-title"},"Repo status",-1)),n("span",nw,c(e.fmt?.number(e.data?.repos?.total))+" total",1)]),n("div",ow,[n("span",{class:"ov-bar-seg ov-bar-ready",title:"Ready",style:$e({width:e.barPct("ready")+"%"})},null,4),n("span",{class:"ov-bar-seg ov-bar-preparing",title:"Preparing",style:$e({width:e.barPct("preparing")+"%"})},null,4),n("span",{class:"ov-bar-seg ov-bar-error",title:"Error",style:$e({width:e.barPct("error")+"%"})},null,4),n("span",{class:"ov-bar-seg ov-bar-expired",title:"Expired",style:$e({width:e.barPct("expired")+"%"})},null,4),n("span",{class:"ov-bar-seg ov-bar-removed",title:"Removed",style:$e({width:e.barPct("removed")+"%"})},null,4)]),n("div",sw,[n("a",iw,[t[34]||(t[34]=n("span",{class:"ov-swatch ov-bar-ready"},null,-1)),t[35]||(t[35]=y(" ready ",-1)),n("span",rw,c(e.fmt?.number(e.statusCount("ready"))),1)]),n("a",aw,[t[36]||(t[36]=n("span",{class:"ov-swatch ov-bar-preparing"},null,-1)),t[37]||(t[37]=y(" preparing ",-1)),n("span",lw,c(e.fmt?.number(e.statusCount("preparing")+e.statusCount("download"))),1)]),n("a",dw,[t[38]||(t[38]=n("span",{class:"ov-swatch ov-bar-error"},null,-1)),t[39]||(t[39]=y(" error ",-1)),n("span",uw,c(e.fmt?.number(e.statusCount("error"))),1)]),n("a",cw,[t[40]||(t[40]=n("span",{class:"ov-swatch ov-bar-expired"},null,-1)),t[41]||(t[41]=y(" expired ",-1)),n("span",pw,c(e.fmt?.number(e.statusCount("expired")+e.statusCount("expiring"))),1)]),n("a",fw,[t[42]||(t[42]=n("span",{class:"ov-swatch ov-bar-removed"},null,-1)),t[43]||(t[43]=y(" removed ",-1)),n("span",hw,c(e.fmt?.number(e.statusCount("removed")+e.statusCount("removing"))),1)])])]),f(" Error breakdown "),n("div",mw,[n("div",gw,[t[44]||(t[44]=n("span",{class:"ov-panel-title"},"Errors \xB7 24h",-1)),n("span",vw,c(e.data?.errors?.last24h)+" total",1)]),n("div",yw,[n("div",bw,[t[45]||(t[45]=n("span",{class:"ov-ebar-label"},"5xx",-1)),n("span",ww,[n("span",{class:"ov-ebar-fill ov-ebar-error",style:$e({width:e.errPct("error")+"%"})},null,4)]),n("span",kw,c(e.data?.errors?.severity?.error),1)]),n("div",Cw,[t[46]||(t[46]=n("span",{class:"ov-ebar-label"},"4xx",-1)),n("span",Ew,[n("span",{class:"ov-ebar-fill ov-ebar-warn",style:$e({width:e.errPct("warn")+"%"})},null,4)]),n("span",Sw,c(e.data?.errors?.severity?.warn),1)]),n("div",Nw,[t[47]||(t[47]=n("span",{class:"ov-ebar-label"},"Info",-1)),n("span",Rw,[n("span",{class:"ov-ebar-fill ov-ebar-info",style:$e({width:e.errPct("info")+"%"})},null,4)]),n("span",Dw,c(e.data?.errors?.severity?.info),1)])]),e.data?.repos?.recentErrors24h?(l(),d("div",Aw,[n("a",Tw,c(e.data?.repos?.recentErrors24h)+" repos in error state \u2192",1)])):f("v-if",!0)]),f(" Top routes / queues "),n("div",Pw,[t[52]||(t[52]=n("div",{class:"ov-panel-head"},[n("span",{class:"ov-panel-title"},"Queues"),n("span",{class:"ov-panel-meta"},"by state")],-1)),n("div",_w,[t[51]||(t[51]=ke('
QueueActiveWaitFailed
',1)),n("a",Ow,[t[48]||(t[48]=n("span",{class:"ov-route-name"},"download",-1)),n("span",Iw,c(e.data?.queues?.download?.active),1),n("span",Mw,c(e.data?.queues?.download?.waiting),1),n("span",{class:P(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.download?.failed>0}])},c(e.data?.queues?.download?.failed),3)]),n("a",Vw,[t[49]||(t[49]=n("span",{class:"ov-route-name"},"remove",-1)),n("span",qw,c(e.data?.queues?.remove?.active),1),n("span",$w,c(e.data?.queues?.remove?.waiting),1),n("span",{class:P(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.remove?.failed>0}])},c(e.data?.queues?.remove?.failed),3)]),n("a",Lw,[t[50]||(t[50]=n("span",{class:"ov-route-name"},"cache",-1)),n("span",Uw,c(e.data?.queues?.cache?.active),1),n("span",Fw,c(e.data?.queues?.cache?.waiting),1),n("span",{class:P(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.cache?.failed>0}])},c(e.data?.queues?.cache?.failed),3)])])])]),f(" \u2500\u2500 Services bar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",Bw,[n("div",zw,[t[53]||(t[53]=n("span",{class:"ov-panel-title"},"Services",-1)),n("span",Hw,c(e.fmt?.number(e.data?.users?.total))+" users \xB7 "+c(e.data?.conferences?.total)+" conferences",1)]),n("div",jw,[n("div",Gw,[t[55]||(t[55]=n("span",{class:"ov-svc-dot ov-dot-ok"},null,-1)),n("div",Ww,[t[54]||(t[54]=n("span",{class:"ov-svc-name"},"web",-1)),n("span",Kw,c(e.data?.system?.nodeVersion),1)]),n("span",Yw,"uptime "+c(e.humanDuration(e.data?.system?.uptime)),1)]),n("div",Xw,[n("span",{class:P(["ov-svc-dot",e.queueTotal(e.data?.queues?.download)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),n("div",Jw,[t[56]||(t[56]=n("span",{class:"ov-svc-name"},"download",-1)),e.queueTotal(e.data?.queues?.download)?(l(),d("span",Qw,c(e.queueTotal(e.data?.queues?.download))+" jobs",1)):f("v-if",!0),e.queueTotal(e.data?.queues?.download)?f("v-if",!0):(l(),d("span",Zw,"idle"))])]),n("div",xw,[n("span",{class:P(["ov-svc-dot",e.queueTotal(e.data?.queues?.cache)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),n("div",ek,[t[57]||(t[57]=n("span",{class:"ov-svc-name"},"cache",-1)),e.queueTotal(e.data?.queues?.cache)?(l(),d("span",tk,c(e.queueTotal(e.data?.queues?.cache))+" jobs",1)):f("v-if",!0),e.queueTotal(e.data?.queues?.cache)?f("v-if",!0):(l(),d("span",nk,"idle"))])]),n("div",ok,[n("span",{class:P(["ov-svc-dot",e.queueTotal(e.data?.queues?.remove)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),n("div",sk,[t[58]||(t[58]=n("span",{class:"ov-svc-name"},"remove",-1)),e.queueTotal(e.data?.queues?.remove)?(l(),d("span",ik,c(e.queueTotal(e.data?.queues?.remove))+" jobs",1)):f("v-if",!0),e.queueTotal(e.data?.queues?.remove)?f("v-if",!0):(l(),d("span",rk,"idle"))])]),n("div",ak,[n("span",{class:P(["ov-svc-dot",e.data?.repos?.recentErrors24h>10?"ov-dot-warn":"ov-dot-ok"])},null,2),n("div",lk,[t[59]||(t[59]=n("span",{class:"ov-svc-name"},"errors",-1)),n("span",dk,c(e.data?.errors?.last24h)+" / 24h",1)])])])])],512)),[[J,e.ovView==="summary"]]):f("v-if",!0),A(n("section",uk,[n("div",ck,[t[64]||(t[64]=n("div",null,[n("h2",{class:"ov-panel-title",id:"cache-heading"},"Cache"),n("p",{class:"ov-performance-note"},"Shared storage, repeated reads and anonymization work \xB7 refreshes every 30 seconds")],-1)),n("div",pk,[t[62]||(t[62]=n("label",{for:"cache-window"},"Time range",-1)),A(n("select",{id:"cache-window",class:"form-control form-control-sm","onUpdate:modelValue":t[0]||(t[0]=o=>e.cacheMinutes=o),onChange:t[1]||(t[1]=o=>e.loadCache())},[...t[60]||(t[60]=[n("option",{value:15},"Last 15 minutes",-1),n("option",{value:60},"Last hour",-1),n("option",{value:1440},"Last 24 hours",-1),n("option",{value:10080},"Last 7 days",-1)])],544),[[gn,e.cacheMinutes,void 0,{number:!0}]]),t[63]||(t[63]=n("label",{for:"cache-traffic"},"Traffic",-1)),A(n("select",{id:"cache-traffic",class:"form-control form-control-sm","onUpdate:modelValue":t[2]||(t[2]=o=>e.cacheTraffic=o)},[...t[61]||(t[61]=[ke('',6)])],512),[[gn,e.cacheTraffic]])])]),e.cacheError?(l(),d("div",fk,[n("span",null,c(e.cacheError),1),n("button",{type:"button",class:"btn btn-sm",onClick:t[3]||(t[3]=o=>e.loadCache())},"Retry")])):f("v-if",!0),!e.cacheReport&&!e.cacheError?(l(),d("p",hk,"Loading cache monitoring\u2026")):f("v-if",!0),e.cacheReport?.available?(l(),d(B,{key:2},[e.cacheReport.enabled?f("v-if",!0):(l(),d("p",mk,"Shared blob storage is disabled. Inspection and legacy-cache activity are still measured.")),e.cacheReport.filesystemSupported?f("v-if",!0):(l(),d("p",gk,"Shared blobs require a local filesystem. The configured storage continues to use its existing cache.")),e.cacheReport.dropped?(l(),d("p",vk,c(e.cacheReport.dropped)+" telemetry events were dropped. Totals may be incomplete.",1)):f("v-if",!0),e.cacheReport.source?(l(),d("div",yk,[n("table",bk,[t[65]||(t[65]=n("caption",{class:"sr-only"},"Current shared-cache storage and byte budgets",-1)),t[66]||(t[66]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Pool"),n("th",{scope:"col"},"Allocated / budget"),n("th",{scope:"col"},"Reserved for fills"),n("th",{scope:"col"},"Original bytes"),n("th",{scope:"col"},"Blobs"),n("th",{scope:"col"},"Active readers")])],-1)),n("tbody",null,[(l(!0),d(B,null,ie([{name:"Source blobs",data:e.cacheReport.source},{name:"Transformed output",data:e.cacheReport.results}],o=>A((l(),d("tr",{key:o.name},[n("th",wk,c(o.name),1),n("td",null,c(e.humanBytes(o.data?.allocatedBytes))+" / "+c(e.humanBytes(o.data?.budgetBytes)),1),n("td",null,c(e.humanBytes(o.data?.reservedBytes)),1),n("td",null,c(e.humanBytes(o.data?.originalBytes)),1),n("td",null,c(o.data?.blobs),1),n("td",null,c(o.data?.activeReaders),1)])),[[J,o.data]])),128))])])])):f("v-if",!0),e.cacheReport.source?(l(),d("p",kk,"Source request hit rate: "+c(e.cacheRate("source","count"))+" \xB7 Source byte hit rate: "+c(e.cacheRate("source","bytes"))+" \xB7 Decision hit rate: "+c(e.cacheRate("decision","count")),1)):f("v-if",!0),t[69]||(t[69]=n("p",{class:"ov-performance-note"},"Reuse counts measure consecutive reads of the same blob within each interval. Codec timings are elapsed stream time, not CPU time; eviction times measure how long a blob was idle. Known monitors are identified by request metadata; other automation may remain in file reads.",-1)),e.cacheRows().length?(l(),d("div",Ck,[n("table",Ek,[t[67]||(t[67]=n("caption",{class:"sr-only"},"Cache events for the selected time range and traffic",-1)),t[68]||(t[68]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Event"),n("th",{scope:"col"},"Traffic"),n("th",{scope:"col"},"Count"),n("th",{scope:"col"},"Bytes"),n("th",{scope:"col"},"Mean measured time"),n("th",{scope:"col"},"p95 bound")])],-1)),n("tbody",null,[(l(!0),d(B,null,ie(e.cacheRows(),o=>(l(),d("tr",{key:o.name+":"+o.traffic},[n("th",Sk,c(e.cacheEventName(o.name)),1),n("td",null,c(o.traffic),1),n("td",null,c(o.count),1),n("td",null,c(e.humanBytes(o.bytes)),1),n("td",null,c(o.ms?(o.ms/o.count).toFixed(2)+" ms":"Not timed"),1),n("td",null,c(e.cacheP95(o)),1)]))),128))])])])):(l(),d("p",Nk,"No cache events in this time range for the selected traffic.")),n("p",Rk,"Updated "+c(e.sampleAge(e.cacheReport))+" seconds ago. Minute history is retained for 48 hours; hourly history for 30 days.",1)],64)):f("v-if",!0)],512),[[J,e.ovView==="cache"]]),A(n("section",Dk,[n("div",Ak,[t[72]||(t[72]=n("div",null,[n("h2",{class:"ov-panel-title",id:"performance-heading"},"Request performance"),n("p",{class:"ov-performance-note"},"Request latency and process health \xB7 refreshes every 30 seconds")],-1)),n("div",Tk,[t[71]||(t[71]=n("label",{for:"performance-window"},"Time range",-1)),A(n("select",{id:"performance-window",class:"form-control form-control-sm","onUpdate:modelValue":t[4]||(t[4]=o=>e.performanceMinutes=o),onChange:t[5]||(t[5]=o=>e.loadPerformance()),"aria-label":"Performance time range"},[...t[70]||(t[70]=[n("option",{value:15},"Last 15 minutes",-1),n("option",{value:60},"Last hour",-1)])],544),[[gn,e.performanceMinutes,void 0,{number:!0}]])])]),e.performanceError?(l(),d("div",Pk,[t[73]||(t[73]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),n("span",null,c(e.performanceError),1),n("button",{type:"button",class:"btn btn-sm",onClick:t[6]||(t[6]=o=>e.loadPerformance())},"Retry")])):f("v-if",!0),!e.performance&&!e.performanceError?(l(),d("p",_k,"Loading performance monitoring\u2026")):f("v-if",!0),e.performance?.available?(l(),d("div",Ok,[n("div",Ik,[n("button",{id:"performance-routes-tab",type:"button",class:P(["paper-tab",{active:e.performanceTab==="routes"}]),role:"tab","aria-selected":e.performanceTab==="routes",tabindex:e.performanceTab==="routes"?0:-1,"aria-controls":"performance-routes",onClick:t[7]||(t[7]=o=>e.performanceTab="routes"),onKeydown:t[8]||(t[8]=o=>e.previewTabKeydown(o))},"Routes",42,Mk),n("button",{id:"performance-processes-tab",type:"button",class:P(["paper-tab",{active:e.performanceTab==="processes"}]),role:"tab","aria-selected":e.performanceTab==="processes",tabindex:e.performanceTab==="processes"?0:-1,"aria-controls":"performance-processes",onClick:t[9]||(t[9]=o=>e.performanceTab="processes"),onKeydown:t[10]||(t[10]=o=>e.previewTabKeydown(o))},"Processes",42,Vk),n("button",{id:"performance-stages-tab",type:"button",class:P(["paper-tab",{active:e.performanceTab==="stages"}]),role:"tab","aria-selected":e.performanceTab==="stages",tabindex:e.performanceTab==="stages"?0:-1,"aria-controls":"performance-stages",onClick:t[11]||(t[11]=o=>e.performanceTab="stages"),onKeydown:t[12]||(t[12]=o=>e.previewTabKeydown(o))},"Work stages",42,qk)]),A(n("div",$k,[e.performance.routes?.length?(l(),d("div",Lk,[n("table",Uk,[t[74]||(t[74]=n("caption",{class:"sr-only"},"Route latency for the selected time range",-1)),t[75]||(t[75]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Route"),n("th",{scope:"col",class:"num"},"Requests"),n("th",{scope:"col",class:"num"},"Average"),n("th",{scope:"col",class:"num"},"First byte p95"),n("th",{scope:"col",class:"num"},"p95"),n("th",{scope:"col",class:"num"},"p99"),n("th",{scope:"col",class:"num"},"Interrupted"),n("th",{scope:"col",class:"num"},"5xx"),n("th",{scope:"col",class:"num"},"Slow")])],-1)),n("tbody",null,[(l(!0),d(B,null,ie(e.performance.routes,o=>(l(),d("tr",{key:o.service+o.method+o.route},[n("th",Fk,[n("span",null,c(o.route),1),n("small",null,c(o.service)+" \xB7 "+c(o.method),1)]),n("td",Bk,c(e.fmt.number(o.count)),1),n("td",zk,c(e.formatMs(o.avgMs)),1),n("td",Hk,c(e.firstByteBound(o)),1),n("td",jk,c(e.latencyBound(o,"p95UpperMs")),1),n("td",Gk,c(e.latencyBound(o,"p99UpperMs")),1),n("td",{class:P(["num",{"ov-metric-warn":o.aborted>0}])},c(e.fmt.number(o.aborted)),3),n("td",{class:P(["num",{"ov-metric-warn":o.errors>0}])},c(e.fmt.number(o.errors)),3),n("td",{class:P(["num",{"ov-metric-warn":o.slow>0}])},c(e.fmt.number(o.slow)),3)]))),128))])])])):(l(),d("p",Wk,"No recorded requests in this time range yet."))],512),[[J,e.performanceTab==="routes"]]),A(n("div",Kk,[t[79]||(t[79]=n("p",{class:"ov-performance-note"},"API and streamer processes \xB7 latest sample per instance",-1)),e.performance.instances?.length?(l(),d("div",Xk,[n("table",Jk,[t[77]||(t[77]=n("caption",{class:"sr-only"},"API and streamer process resource usage",-1)),t[78]||(t[78]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Process"),n("th",{scope:"col",class:"num"},"RSS / limit"),n("th",{scope:"col",class:"num"},"CPU"),n("th",{scope:"col",class:"num"},"Event loop p95"),n("th",{scope:"col",class:"num"},"Active requests"),n("th",{scope:"col",class:"num"},"Sockets / CLOSE_WAIT"),n("th",{scope:"col",class:"num"},"Workers / waiting"),n("th",{scope:"col",class:"num"},"Sample age"),n("th",{scope:"col",class:"num"},"Dropped batches / metrics")])],-1)),n("tbody",null,[(l(!0),d(B,null,ie(e.performance.instances,o=>(l(),d("tr",{key:o.instance,class:P({"ov-metric-warning-row":e.performanceWarning(o)})},[n("th",Qk,[n("span",null,c(o.instance),1),e.performanceWarning(o)?(l(),d("small",Zk,[...t[76]||(t[76]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1),y(" Needs attention",-1)])])):f("v-if",!0)]),n("td",xk,[y(c(e.humanBytes(o.memory.rss))+" / "+c(e.humanBytes(o.memoryLimitBytes)),1),n("small",null,"Peak "+c(e.humanBytes(e.peakRss(o))),1)]),n("td",e0,c(o.cpuPercent==null?"Unavailable":o.cpuPercent.toFixed(1)+"%"),1),n("td",t0,c(o.eventLoop?.p95Ms==null?"Not applicable":o.eventLoop.p95Ms.toFixed(1)+" ms"),1),n("td",n0,c(o.activeRequests),1),n("td",o0,c(o.sockets?.descriptors??"Unavailable")+" / "+c(o.sockets?.closeWait??"Unavailable"),1),n("td",s0,c(o.workers?.running??0)+" / "+c(o.workers?.waiting??0),1),n("td",i0,c(e.sampleAge(o))+" s",1),n("td",r0,c(o.droppedBatches)+" / "+c(o.droppedMetrics),1)],2))),128))])])])):(l(),d("div",Yk,"No recent process samples. Monitoring coverage is incomplete."))],512),[[J,e.performanceTab==="processes"]]),A(n("div",a0,[e.performance.stages?.some(o=>o.metric!=="first_byte")?(l(),d("div",l0,[n("table",d0,[t[80]||(t[80]=n("caption",{class:"sr-only"},"Work stages and cache results",-1)),t[81]||(t[81]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Work stage"),n("th",{scope:"col",class:"num"},"Samples"),n("th",{scope:"col",class:"num"},"Average"),n("th",{scope:"col",class:"num"},"p95")])],-1)),n("tbody",null,[(l(!0),d(B,null,ie(e.performance.stages.filter(o=>o.metric!=="first_byte"),o=>(l(),d("tr",{key:o.service+o.metric},[n("th",u0,[n("span",null,c(o.metric),1),n("small",null,c(o.service),1)]),n("td",c0,c(e.fmt.number(o.count)),1),n("td",p0,c(e.formatMs(o.avgMs)),1),n("td",f0,c(e.latencyBound(o,"p95UpperMs")),1)]))),128))])])])):(l(),d("p",h0,"No recorded work stages or cache results in this time range yet."))],512),[[J,e.performanceTab==="stages"]]),t[82]||(t[82]=n("details",{class:"ov-performance-help"},[n("summary",null,"How to read these metrics"),n("p",null,"Latency includes upstream waits and response transfer. Percentiles show histogram bucket upper bounds, not exact timings. Process rows marked \u201CNeeds attention\u201D have stale samples, dropped monitoring data, CLOSE_WAIT sockets, high event loop delay, or high memory usage.")],-1))])):f("v-if",!0)],512),[[J,e.ovView==="performance"]])])}var m0={class:"container paper-page admin-page"},g0={class:"q-header"},v0={class:"q-header-actions"},y0={class:"q-cards"},b0=["aria-pressed","onKeydown","onClick"],w0={class:"q-card-head"},k0=["textContent"],C0=["textContent"],E0={class:"q-card-sub"},S0={key:0,class:"q-card-bar"},N0={key:0,class:"q-detail"},R0={class:"q-throughput"},D0={class:"q-range-btns"},A0={class:"q-section-label"},T0={key:0,class:"q-section-right"},P0={class:"q-chart-wrap"},_0={key:0,class:"q-chart-empty"},O0={class:"q-stats-panel"},I0={class:"q-section-label"},M0={class:"q-stats-grid"},V0={class:"q-stat"},q0=["textContent"],$0={class:"q-stat"},L0=["textContent"],U0={class:"q-stat"},F0=["textContent"],B0={class:"q-stat"},z0=["textContent"],H0={class:"q-stat"},j0=["textContent"],G0={class:"q-stat"},W0=["textContent"],K0={class:"q-stats-actions"},Y0=["disabled"],X0={class:"q-danger-group"},J0={class:"q-jobs"},Q0={class:"q-jobs-header"},Z0={class:"q-section-label"},x0={class:"q-state-filters"},e2={class:"q-state-toggle"},t2={type:"checkbox"},n2={class:"q-search-row"},o2={type:"search",class:"form-control",placeholder:"Search by job/repo id\u2026",autocomplete:"off"},s2={class:"q-auto-refresh"},i2={type:"checkbox"},r2={key:0,class:"q-table"},a2=["onClick"],l2={class:"q-cell-state"},d2=["textContent"],u2=["textContent"],c2={class:"q-cell-id"},p2=["textContent","href"],f2={class:"q-cell-payload"},h2=["textContent"],m2={key:0,class:"q-payload-detail"},g2=["textContent"],v2=["textContent"],y2={class:"q-cell-progress"},b2={key:0,class:"q-progress-wrap"},w2=["textContent"],k2={class:"q-cell-actions"},C2=["onClick"],E2=["onClick"],S2={key:0,class:"q-detail-row"},N2={colspan:"7"},R2={class:"q-job-detail"},D2={class:"q-job-detail-grid"},A2={class:"q-job-detail-item"},T2={class:"q-job-detail-value"},P2=["textContent","href"],_2={class:"q-job-detail-item"},O2={class:"q-job-detail-value"},I2=["textContent"],M2={key:0,class:"q-job-detail-item"},V2=["textContent"],q2={key:1,class:"q-job-detail-item"},$2=["textContent"],L2={key:2,class:"q-job-detail-item"},U2={class:"q-job-detail-value"},F2={key:3,class:"q-job-detail-item"},B2=["textContent"],z2={key:4,class:"q-job-detail-item"},H2=["textContent"],j2={key:5,class:"q-job-detail-item"},G2=["textContent"],W2={key:6,class:"q-job-detail-item"},K2=["textContent"],Y2={key:7,class:"q-job-detail-item"},X2=["textContent"],J2={key:0,class:"q-job-detail-error"},Q2=["textContent"],Z2={key:1},x2=["textContent"],eC={class:"q-job-detail-actions"},tC=["onClick"],nC=["onClick"],oC=["href"],sC={key:1,class:"paper-table-empty",style:{border:"1px solid var(--border-color)","border-radius":"10px",background:"var(--paper-card)"}},iC={key:0},rC={key:1};function vc(e,t){let o=De("field");return l(),d("div",m0,[t[51]||(t[51]=n("div",{class:"paper-crumbs"},[y("Admin \xA0/\xA0 "),n("span",{class:"here"},"Queues")],-1)),n("div",g0,[t[12]||(t[12]=n("h1",{class:"paper-page-title"},"Queues",-1)),n("div",v0,[n("button",{class:"btn btn-sm",onClick:t[0]||(t[0]=i=>e.pauseAll())},"Pause all queues")])]),t[52]||(t[52]=ke('',1)),f(" Queue overview cards "),n("div",y0,[(l(!0),d(B,null,ie(e.queueList,(i,s)=>(l(),d("div",{class:P(["q-card",{selected:e.selectedQueue==i?.key,paused:i?.paused}]),role:"button",tabindex:"0","aria-pressed":e.selectedQueue===i.key,onKeydown:[At(ce(r=>e.selectQueue(i.key),["prevent"]),["enter"]),At(ce(r=>e.selectQueue(i.key),["prevent"]),["space"])],onClick:r=>e.selectQueue(i.key)},[n("div",w0,[n("span",{class:P(["q-dot",{"q-dot-red":i?.paused||i?.counts?.failed>0,"q-dot-idle":!i?.counts?.active&&!i?.counts?.waiting}])},null,2),n("span",{class:"q-card-name",textContent:c(i?.label)},null,8,k0)]),n("div",{class:"q-card-count",textContent:c((i?.counts?.waiting||0)+(i?.counts?.active||0)+(i?.counts?.delayed||0))},null,8,C0),n("div",E0,[n("span",null,"waiting \xB7 "+c(i?.counts?.active||0)+" active",1),i?.counts?.active?(l(),d("div",S0,[n("div",{class:"q-card-bar-fill",style:$e({width:i?.counts?.active/((i?.counts?.waiting||0)+(i?.counts?.active||0)+(i?.counts?.delayed||0)||1)*100+"%"})},null,4)])):f("v-if",!0)])],42,b0))),256))]),f(" Detail: throughput chart + stats panel "),e.selectedStats?(l(),d("div",N0,[n("div",R0,[n("div",D0,[n("button",{class:P(["btn btn-sm",{active:e.range=="1h"}]),onClick:t[1]||(t[1]=i=>e.setRange("1h"))},"1h",2),n("button",{class:P(["btn btn-sm",{active:e.range=="6h"}]),onClick:t[2]||(t[2]=i=>e.setRange("6h"))},"6h",2),n("button",{class:P(["btn btn-sm",{active:e.range=="24h"}]),onClick:t[3]||(t[3]=i=>e.setRange("24h"))},"24h",2),n("button",{class:P(["btn btn-sm",{active:e.range=="7d"}]),onClick:t[4]||(t[4]=i=>e.setRange("7d"))},"7d",2)]),n("div",A0,[y("Throughput \xB7 "+c(e.selectedQueue)+" ",1),(e.selectedStats?.completed24h||0)+(e.selectedStats?.failed24h||0)>0?(l(),d("span",T0,[t[14]||(t[14]=n("span",{class:"q-legend-completed"},"\u25CF",-1)),t[15]||(t[15]=y(" completed ",-1)),t[16]||(t[16]=n("span",{class:"q-legend-failed"},"\u25CF",-1)),t[17]||(t[17]=y(" failed ",-1)),(e.selectedStats?.completed24h||0)+(e.selectedStats?.failed24h||0)>0?(l(),d(B,{key:0},[t[13]||(t[13]=n("span",{class:"q-legend-exec","aria-hidden":"true"},null,-1)),y(" avg time \xB7 "+c(e.range),1)],64)):f("v-if",!0)])):f("v-if",!0)]),n("div",P0,[t[19]||(t[19]=n("canvas",{id:"q-throughput-chart",height:"180"},null,-1)),(e.selectedStats?.completed24h||0)+(e.selectedStats?.failed24h||0)===0?(l(),d("div",_0,[...t[18]||(t[18]=[n("strong",null,"No jobs processed in this window",-1),n("span",null,"Completed and failed jobs will chart here.",-1)])])):f("v-if",!0),t[20]||(t[20]=n("div",{id:"q-chart-tooltip",class:"q-chart-tooltip",style:{display:"none"}},null,-1)),t[21]||(t[21]=n("div",{id:"q-chart-crosshair",class:"q-chart-crosshair",style:{display:"none"}},null,-1))])]),n("div",O0,[n("div",I0,"Stats \xB7 "+c(e.selectedQueue),1),n("div",M0,[n("div",V0,[t[22]||(t[22]=n("div",{class:"q-stat-label"},"Waiting",-1)),n("div",{class:"q-stat-value",textContent:c(e.selectedStats?.counts?.waiting||0)},null,8,q0)]),n("div",$0,[t[23]||(t[23]=n("div",{class:"q-stat-label"},"Active",-1)),n("div",{class:"q-stat-value",textContent:c(e.selectedStats?.counts?.active||0)},null,8,L0)]),n("div",U0,[t[24]||(t[24]=n("div",{class:"q-stat-label"},"Completed (24h)",-1)),n("div",{class:"q-stat-value",textContent:c(e.fmt?.number(e.selectedStats?.completed24h))},null,8,F0)]),n("div",B0,[t[25]||(t[25]=n("div",{class:"q-stat-label"},"Failed (24h)",-1)),n("div",{class:"q-stat-value",textContent:c(e.selectedStats?.failed24h||0)},null,8,z0)]),n("div",H0,[t[26]||(t[26]=n("div",{class:"q-stat-label"},"Delayed",-1)),n("div",{class:"q-stat-value",textContent:c(e.selectedStats?.counts?.delayed||0)},null,8,j0)]),n("div",G0,[t[27]||(t[27]=n("div",{class:"q-stat-label"},"Workers",-1)),n("div",{class:"q-stat-value",textContent:c(e.selectedStats?.workers||0)},null,8,W0)])]),n("div",K0,[n("button",{class:"btn btn-sm",onClick:t[5]||(t[5]=i=>e.togglePause())},c(e.selectedStats?.paused?"Resume "+e.selectedQueue:"Pause "+e.selectedQueue),1),n("button",{class:"btn btn-sm",onClick:t[6]||(t[6]=i=>e.retryFailed()),disabled:!e.selectedStats?.counts?.failed},"Retry failed",8,Y0),n("span",X0,[n("button",{class:"btn btn-sm btn-outline-danger",onClick:t[7]||(t[7]=i=>e.drainSelected())},"Drain"),n("button",{class:"btn btn-sm btn-outline-danger",onClick:t[8]||(t[8]=i=>e.emptyQueue())},"Empty")])])])])):f("v-if",!0),e.actionError?(l(),d("div",{key:1,class:"q-toast-error",onClick:t[9]||(t[9]=i=>e.actionError=null)},[t[28]||(t[28]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})],-1)),y(" "+c(e.actionError),1)])):f("v-if",!0),f(" Jobs table "),n("div",J0,[n("div",Q0,[n("div",Z0,"All jobs \xB7 "+c(e.selectedQueue),1),n("div",x0,[(l(!0),d(B,null,ie(e.allStates,(i,s)=>(l(),d("label",e2,[A(n("input",t2,null,512),[[o,{state:e.viewState,set:r=>{e.stateFilter[i]=r},value:e.stateFilter[i],form:null,options:{}}]]),n("span",{class:P("q-state-chip q-state-"+i)},c(i),3)]))),256))])]),n("div",n2,[A(n("input",o2,null,512),[[o,{state:e.viewState,set:i=>{e.query.search=i},value:e.query?.search,form:null,options:{}}]]),n("label",s2,[A(n("input",i2,null,512),[[o,{state:e.viewState,set:i=>{e.query.autoRefresh=i},value:e.query?.autoRefresh,form:null,options:{}}]]),t[29]||(t[29]=n("span",{class:"auto-refresh-label"},"Auto-refresh",-1))]),n("button",{class:"btn btn-sm btn-icon",type:"button",title:"Refresh now",onClick:t[10]||(t[10]=i=>e.refreshNow()),"aria-label":"Refresh"},[...t[30]||(t[30]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])])]),e.filteredJobs().length>0?(l(),d("table",r2,[t[49]||(t[49]=n("thead",null,[n("tr",null,[n("th",null,"State"),n("th",null,"Job ID"),n("th",null,"Payload"),n("th",null,"Attempts"),n("th",null,"Duration"),n("th",null,"Progress"),n("th")])],-1)),(l(!0),d(B,null,ie(e.filteredJobs(),(i,s)=>(l(),d("tbody",null,[n("tr",{style:{cursor:"pointer"},class:P({"q-row-failed":i?._state=="failed","q-row-expanded":e.expanded[i?.id]}),onClick:r=>e.toggleJob(i)},[n("td",l2,[n("span",{textContent:c(i?._state),class:P("q-state-badge q-state-"+i?._state)},null,10,d2),i?._state=="delayed"&&i?.delayUntil?(l(),d("span",{key:0,class:"q-delay-hint",textContent:c(e.delayCountdown(i?.delayUntil))},null,8,u2)):f("v-if",!0)]),n("td",c2,[(l(),d("svg",{class:P(["ui-icon q-chevron",{"q-chevron-open":e.expanded[i?.id]}]),"aria-hidden":"true"},[...t[31]||(t[31]=[n("use",{href:"#ui-icon-chevron-right"},null,-1)])],2)),n("a",{target:"_blank",textContent:c("job:"+e.fmt.limitTo(i?.id,6)),onClick:t[11]||(t[11]=r=>r.stopPropagation()),href:e.safeUrl("/r/"+i?.id)},null,8,p2)]),n("td",f2,[n("span",{textContent:c(i?.name||"anonymize")},null,8,h2),i?.data?.repoId&&i?.data?.repoId!==i?.name?(l(),d("span",m2," \xB7 "+c(i?.data?.repoId),1)):f("v-if",!0)]),n("td",{class:"q-cell-num",textContent:c(i?.attemptsMade||1)},null,8,g2),n("td",{class:"q-cell-num",textContent:c(e.jobDuration(i))},null,8,v2),n("td",y2,[e.jobProgressPct(i)!==null?(l(),d("div",b2,[n("div",{class:"q-progress-bar",style:$e({"--pct":e.jobProgressPct(i)+"%"})},null,4),n("span",{class:"q-progress-label",textContent:c(e.jobProgressPct(i)+"%")},null,8,w2)])):f("v-if",!0)]),n("td",k2,[i?._state=="failed"?(l(),d("button",{key:0,class:"btn btn-sm btn-icon",title:"Retry",onClick:r=>{e.retryJob(i),r.stopPropagation()},"aria-label":"Retry job"},[...t[32]||(t[32]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])],8,C2)):f("v-if",!0),n("button",{class:"btn btn-sm btn-icon",title:"Remove","aria-label":"Remove job",onClick:r=>{e.removeJob(i),r.stopPropagation()}},[...t[33]||(t[33]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1)])],8,E2)])],10,a2),e.expanded[i?.id]?(l(),d("tr",S2,[n("td",N2,[n("div",R2,[n("div",D2,[n("div",A2,[t[34]||(t[34]=n("span",{class:"q-job-detail-label"},"Job id",-1)),n("span",T2,[n("a",{target:"_blank",textContent:c(i?.id),href:e.safeUrl("/r/"+i?.id)},null,8,P2)])]),n("div",_2,[t[35]||(t[35]=n("span",{class:"q-job-detail-label"},"State",-1)),n("span",O2,[n("span",{textContent:c(i?._state),class:P("q-state-badge q-state-"+i?._state)},null,10,I2)])]),i?.data?.repoId?(l(),d("div",M2,[t[36]||(t[36]=n("span",{class:"q-job-detail-label"},"Repo ID",-1)),n("span",{class:"q-job-detail-value",textContent:c(i?.data?.repoId)},null,8,V2)])):f("v-if",!0),i?.timestamp?(l(),d("div",q2,[t[37]||(t[37]=n("span",{class:"q-job-detail-label"},"Created",-1)),n("span",{class:"q-job-detail-value",textContent:c(e.humanTime(i?.timestamp))},null,8,$2)])):f("v-if",!0),i?._state=="delayed"&&i?.delayUntil?(l(),d("div",L2,[t[38]||(t[38]=n("span",{class:"q-job-detail-label"},"Retry at",-1)),n("span",U2,c(e.humanTime(i?.delayUntil))+" ("+c(e.delayCountdown(i?.delayUntil))+")",1)])):f("v-if",!0),i?.processedOn?(l(),d("div",F2,[t[39]||(t[39]=n("span",{class:"q-job-detail-label"},"Processed",-1)),n("span",{class:"q-job-detail-value",textContent:c(e.humanTime(i?.processedOn))},null,8,B2)])):f("v-if",!0),i?.finishedOn?(l(),d("div",z2,[t[40]||(t[40]=n("span",{class:"q-job-detail-label"},"Finished",-1)),n("span",{class:"q-job-detail-value",textContent:c(e.humanTime(i?.finishedOn))},null,8,H2)])):f("v-if",!0),i?.attemptsMade?(l(),d("div",j2,[t[41]||(t[41]=n("span",{class:"q-job-detail-label"},"Attempts",-1)),n("span",{class:"q-job-detail-value",textContent:c(i?.attemptsMade)},null,8,G2)])):f("v-if",!0),i?.progress&&i?.progress?.status?(l(),d("div",W2,[t[42]||(t[42]=n("span",{class:"q-job-detail-label"},"Status",-1)),n("span",{class:"q-job-detail-value",textContent:c(i?.progress?.status)},null,8,K2)])):f("v-if",!0),e.jobProgressPct(i)!==null?(l(),d("div",Y2,[t[43]||(t[43]=n("span",{class:"q-job-detail-label"},"Progress",-1)),n("span",{class:"q-job-detail-value",textContent:c(e.jobProgressPct(i)+"%")},null,8,X2)])):f("v-if",!0)]),i?.failedReason?(l(),d("div",J2,[t[44]||(t[44]=n("span",{class:"q-job-detail-label"},"Error",-1)),n("div",{class:"q-error-reason",textContent:c(i?.failedReason)},null,8,Q2)])):f("v-if",!0),i?.stacktrace?.length?(l(),d("div",Z2,[t[45]||(t[45]=n("span",{class:"q-job-detail-label"},"Stacktrace",-1)),(l(!0),d(B,null,ie(i?.stacktrace,(r,a)=>(l(),d("pre",{class:"q-error-stack",key:a},[n("code",{textContent:c(r)},null,8,x2)]))),128))])):f("v-if",!0),n("div",eC,[i?._state=="failed"?(l(),d("button",{key:0,class:"btn btn-sm",onClick:r=>e.retryJob(i)},[...t[46]||(t[46]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),y(" Retry",-1)])],8,tC)):f("v-if",!0),n("button",{class:"btn btn-sm",onClick:r=>e.removeJob(i)},[...t[47]||(t[47]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),y(" Remove",-1)])],8,nC),n("a",{class:"btn btn-sm",target:"_blank",href:e.safeUrl("/r/"+i?.id)},[...t[48]||(t[48]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1),y(" View repo",-1)])],8,oC)])])])])):f("v-if",!0)]))),256))])):f("v-if",!0),e.filteredJobs().length==0?(l(),d("div",sC,[t[50]||(t[50]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1)),e.query?.search?f("v-if",!0):(l(),d("span",iC,"No jobs in the "+c(e.selectedQueue)+" queue.",1)),e.query?.search?(l(),d("span",rC,"No jobs match the current filters.")):f("v-if",!0)])):f("v-if",!0)])])}var aC={class:"container paper-page admin-page"},lC={class:"admin-summary"},dC={class:"summary-total"},uC={class:"summary-meta"},cC=["aria-pressed"],pC={class:"count"},fC=["aria-pressed"],hC={class:"count"},mC=["aria-pressed"],gC={class:"count"},vC=["aria-pressed"],yC={class:"count"},bC=["title","aria-pressed"],wC={class:"count"},kC={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},CC={class:"w-100 admin-filter-toolbar","aria-label":"Repositories","accept-charset":"UTF-8"},EC=["aria-expanded"],SC={class:"search-wrap"},NC={type:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search repositories\u2026",autocomplete:"off"},RC={key:0,class:"admin-search-hint"},DC={class:"admin-filter-inline"},AC={type:"text",class:"form-control form-control-sm",placeholder:"username"},TC={class:"admin-filter-inline"},PC={type:"text",class:"form-control form-control-sm",placeholder:"ID"},_C={key:0,class:"admin-filter-inline","aria-label":"Pagination"},OC=["disabled"],IC={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},MC=["disabled"],VC={key:0,class:"admin-filter-row"},qC={class:"admin-active-chips"},$C={class:"key"},LC=["onClick"],UC={key:1,class:"bulk-bar"},FC={class:"paper-table paper-table-repos has-bulk w-100",role:"table","aria-label":"Repositories"},BC={class:"paper-table-head",role:"row"},zC={role:"columnheader",style:{width:"28px"}},HC=["checked"],jC={role:"columnheader"},GC={role:"columnheader"},WC={role:"columnheader",class:"num"},KC={role:"columnheader"},YC={role:"cell",style:{width:"28px"}},XC={type:"checkbox","aria-label":"Select repository"},JC={class:"cell-anon",role:"cell"},QC={class:"anon-text"},ZC=["textContent","href"],xC={class:"anon-sub"},eE=["textContent","href"],tE={key:0,class:"meta-sep"},nE=["textContent","href"],oE={key:1,class:"meta-sep"},sE=["textContent","href"],iE={key:2,class:"meta-sep"},rE={key:3,class:"meta-sep"},aE={class:"cell-status",role:"cell"},lE={class:"status-line"},dE=["textContent"],uE=["textContent","title"],cE={class:"cell-views num",role:"cell"},pE=["textContent"],fE={class:"cell-expires",role:"cell"},hE=["textContent"],mE={class:"cell-actions",role:"cell"},gE={class:"dropdown"},vE={class:"dropdown-menu dropdown-menu-right"},yE=["href"],bE=["href"],wE=["href"],kE=["onClick"],CE=["onClick"],EE=["onClick"],SE=["onClick"],NE=["onClick"],RE=["onClick"],DE={key:0,class:"paper-table-empty"},AE={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},TE={style:{"font-size":"12px",color:"var(--ink-muted)"}},PE={key:0,class:"pagination-compact"},_E=["disabled"],OE=["max"],IE=["disabled"],ME={class:"admin-filter-inline"},VE={class:"form-control form-control-sm"};function yc(e,t){let o=De("field"),i=De("form");return l(),d("div",aC,[t[70]||(t[70]=ke('
Admin \xA0/\xA0 Repositories

Repositories

',3)),n("div",lC,[n("span",dC,[y(c(e.total>=0?e.fmt.number(e.total):"\u2026")+" ",1),n("small",null,c(e.total===1?"repository":"repositories"),1)]),n("span",uC,c(e.fmt?.humanFileSize(e.totalSize))+" on disk",1),t[25]||(t[25]=n("span",{class:"summary-show-label"},"Show:",-1)),n("button",{type:"button",class:P(["summary-pill ok",{active:e.query?.ready}]),title:"Toggle ready filter",onClick:t[0]||(t[0]=s=>{e.query.ready=!e.query.ready,e.query.page=1}),"aria-pressed":!!e.query?.ready},[t[20]||(t[20]=y("Ready ",-1)),n("span",pC,c(e.fmt?.number(e.statusCountFor("ready"))),1)],10,cC),n("button",{type:"button",class:P(["summary-pill warn",{active:e.query?.preparing}]),title:"Toggle preparing filter",onClick:t[1]||(t[1]=s=>{e.query.preparing=!e.query.preparing,e.query.page=1}),"aria-pressed":!!e.query?.preparing},[t[21]||(t[21]=y("Preparing ",-1)),n("span",hC,c(e.fmt?.number(e.statusCountFor("preparing")+e.statusCountFor("download"))),1)],10,fC),n("button",{type:"button",class:P(["summary-pill error",{active:e.query?.error}]),title:"Toggle errored filter",onClick:t[2]||(t[2]=s=>{e.query.error=!e.query.error,e.query.page=1}),"aria-pressed":!!e.query?.error},[t[22]||(t[22]=y("Errored ",-1)),n("span",gC,c(e.fmt?.number(e.statusCountFor("error"))),1)],10,mC),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.expired}]),title:"Toggle expired filter",onClick:t[3]||(t[3]=s=>{e.query.expired=!e.query.expired,e.query.page=1}),"aria-pressed":!!e.query?.expired},[t[23]||(t[23]=y("Expired ",-1)),n("span",yC,c(e.fmt?.number(e.statusCountFor("expired")+e.statusCountFor("expiring"))),1)],10,vC),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.removed}]),title:e.query?.removed?"Removed repositories are shown. Click to hide them.":"Removed repositories are hidden. Click to include them.",onClick:t[4]||(t[4]=s=>{e.query.removed=!e.query.removed,e.query.page=1}),"aria-pressed":!!e.query?.removed},[t[24]||(t[24]=y("Removed ",-1)),n("span",wC,c(e.fmt?.number(e.statusCountFor("removed")+e.statusCountFor("removing"))),1)],10,bC)]),e.fetchError?(l(),d("div",kC,[t[26]||(t[26]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),y(" "+c(e.fetchError),1)])):f("v-if",!0),A((l(),d("form",CC,[f(" Row 1: search + scoped inputs + headline actions "),n("button",{type:"button",class:"btn btn-sm admin-filters-toggle",onClick:t[5]||(t[5]=s=>e.filtersOpen=!e.filtersOpen),"aria-expanded":e.filtersOpen?"true":"false"},"Filters",8,EC),n("div",{class:P(["admin-filter-row",{"is-open":e.filtersOpen}])},[n("div",SC,[A(n("input",NC,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?f("v-if",!0):(l(),d("span",RC,"/"))]),n("span",DC,[t[27]||(t[27]=n("label",null,"Owner",-1)),A(n("input",AC,null,512),[[o,{state:e.viewState,set:s=>{e.query.owner=s},value:e.query?.owner,form:null,options:{}}]])]),n("span",TC,[t[28]||(t[28]=n("label",null,"Conference",-1)),A(n("input",PC,null,512),[[o,{state:e.viewState,set:s=>{e.query.conference=s},value:e.query?.conference,form:null,options:{}}]])]),t[32]||(t[32]=n("span",{class:"admin-filter-spacer"},null,-1)),n("button",{class:"btn btn-sm",type:"button",title:"Export current view to CSV",onClick:t[6]||(t[6]=s=>e.exportCsv())},[...t[29]||(t[29]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),y(" Export",-1)])]),e.totalPage>1?(l(),d("span",_C,[n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[7]||(t[7]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[30]||(t[30]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,OC),n("span",IC,c(e.query?.page)+"/"+c(e.totalPage||1),1),n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[8]||(t[8]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[31]||(t[31]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,MC)])):f("v-if",!0)],2),f(" Row 2: appears only when there are active filter chips "),e.chips?.length?(l(),d("div",VC,[n("div",qC,[(l(!0),d(B,null,ie(e.chips,(s,r)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[n("span",$C,c(s?.label),1),n("span",null,c(s?.value),1),n("button",{type:"button","aria-label":"Remove filter",onClick:a=>e.clearFilter(s.key)},[...t[33]||(t[33]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,LC)]))),128))])])):f("v-if",!0)])),[[i,e.viewState]]),e.selectedCount()>0?(l(),d("div",UC,[n("span",null,[n("strong",null,c(e.selectedCount()),1),t[34]||(t[34]=y(" selected",-1))]),n("button",{class:"btn btn-sm",type:"button",onClick:t[9]||(t[9]=s=>e.bulkRefresh())},[...t[35]||(t[35]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),y(" Force refresh",-1)])]),n("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[10]||(t[10]=s=>e.bulkRemoveCache())},[...t[36]||(t[36]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),y(" Remove cache",-1)])]),n("button",{class:"btn btn-sm",type:"button",onClick:t[11]||(t[11]=s=>e.clearSelection())},"Clear")])):f("v-if",!0),n("div",FC,[n("div",BC,[n("div",zC,[n("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[12]||(t[12]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,HC)]),n("div",jC,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="source.repositoryName"}]),onClick:t[13]||(t[13]=s=>e.sortBy("source.repositoryName"))},[t[38]||(t[38]=y("Repository ",-1)),e.sortIcon("source.repositoryName")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("source.repositoryName")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[37]||(t[37]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),n("div",GC,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="status"}]),onClick:t[14]||(t[14]=s=>e.sortBy("status"))},[t[40]||(t[40]=y("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[39]||(t[39]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),n("div",WC,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="pageView"}]),onClick:t[15]||(t[15]=s=>e.sortBy("pageView"))},[t[42]||(t[42]=y("Views ",-1)),e.sortIcon("pageView")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("pageView")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[41]||(t[41]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),n("div",KC,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="anonymizeDate"}]),onClick:t[16]||(t[16]=s=>e.sortBy("anonymizeDate"))},[t[44]||(t[44]=y("Anonymized ",-1)),e.sortIcon("anonymizeDate")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("anonymizeDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[43]||(t[43]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),t[45]||(t[45]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(B,null,ie(e.filteredRepositories,(s,r)=>(l(),d("div",{class:P(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error","row-selected":e.selected[s?.repoId]}]),role:"row"},[n("div",YC,[A(n("input",XC,null,512),[[o,{state:e.viewState,set:a=>{e.selected[s.repoId]=a},value:e.selected[s?.repoId],form:null,options:{}}]])]),n("div",JC,[t[47]||(t[47]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",QC,[n("a",{class:"repo-name",target:"_blank",textContent:c(s?.repoId),href:e.safeUrl("/r/"+s?.repoId)},null,8,ZC),n("div",xC,[n("a",{textContent:c(s?.source?.repositoryName),href:e.safeUrl("https://github.com/"+s?.source?.repositoryName+"/")},null,8,eE),s?.options?.update?(l(),d("span",tE,[n("a",{textContent:c(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,nE)])):f("v-if",!0),s?.options?.update?f("v-if",!0):(l(),d("span",oE,[n("a",{class:"mono-hash",textContent:c(s?.source?.commit?.substring(0,7)),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},null,8,sE)])),s?.conference?(l(),d("span",iE,[t[46]||(t[46]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),y(" "+c(s?.conference),1)])):f("v-if",!0),s?.size?.storage>0?(l(),d("span",rE,c(e.fmt?.humanFileSize(s?.size?.storage)),1)):f("v-if",!0),n("span",null,c(e.fmt?.number(s?.options?.terms?.length))+" "+c(s?.options?.terms?.length===1?"term":"terms"),1)])])]),n("div",aE,[n("span",lE,[n("span",{class:P(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),n("span",{textContent:c(e.fmt?.title(s?.status))},null,8,dE)]),s?.statusMessage?(l(),d("span",{key:0,class:"status-sub",textContent:c(e.fmt?.statusMsg(s?.statusMessage)),title:s?.statusMessage},null,8,uE)):f("v-if",!0)]),n("div",cE,[t[48]||(t[48]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),t[49]||(t[49]=y()),n("span",{textContent:c(e.fmt?.number(s?.pageView||0))},null,8,pE)]),n("div",fE,[t[50]||(t[50]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[51]||(t[51]=y()),n("span",{textContent:c((e.fmt?.humanTime(s?.anonymizeDate)||"").replace(/^on /,""))},null,8,hE)]),n("div",mE,[n("div",gE,[t[63]||(t[63]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",vE,[n("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[52]||(t[52]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),y(" Edit",-1)])],8,yE),n("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[53]||(t[53]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),y(" View repo",-1)])],8,bE),s?.options?.page&&s?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+s?.repoId+"/")},[...t[54]||(t[54]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),y(" View page",-1)])],8,wE)):f("v-if",!0),n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.fetchGithubInfo(s),["prevent"])},[...t[55]||(t[55]=[n("i",{class:"fab fa-github"},null,-1),y(" Live GitHub info",-1)])],8,kE),t[61]||(t[61]=n("div",{class:"dropdown-divider"},null,-1)),A(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updateRepository(s),["prevent"])},[...t[56]||(t[56]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),y(" Force update",-1)])],8,CE),[[J,s?.status=="ready"||s?.status=="error"]]),A(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updateRepository(s),["prevent"])},[...t[57]||(t[57]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),y(" Enable",-1)])],8,EE),[[J,s?.status=="removed"]]),A(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.showStatusMessage(s),["prevent"])},[...t[58]||(t[58]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1),y(" View status message",-1)])],8,SE),[[J,s?.statusMessage]]),t[62]||(t[62]=n("div",{class:"dropdown-divider"},null,-1)),n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.removeCache(s),["prevent"])},[...t[59]||(t[59]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),y(" Remove cache",-1)])],8,NE),A(n("a",{class:"dropdown-item text-danger",href:"#",onClick:ce(a=>e.removeRepository(s),["prevent"])},[...t[60]||(t[60]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),y(" Remove",-1)])],8,RE),[[J,s?.status=="ready"]])])])])],2))),256)),e.filteredRepositories?.length==0?(l(),d("div",DE,[t[64]||(t[64]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),t[65]||(t[65]=n("span",null,"No repositories match the current filters.",-1)),e.query.ready&&e.query.expired&&e.query.removed&&e.query.error&&e.query.preparing?f("v-if",!0):(l(),d("button",{key:0,type:"button",class:"btn btn-sm btn-outline-ink",onClick:t[17]||(t[17]=s=>e.showAllStatuses())},"Show all statuses"))])):f("v-if",!0)]),n("div",AE,[n("span",TE,c(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",PE,[n("button",{class:"btn btn-sm",onClick:t[18]||(t[18]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[66]||(t[66]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1),y(" Previous ",-1)])],8,_E),A(n("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},"aria-label":"Page",max:e.totalPage},null,8,OE),[[o,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),n("span",null,"of "+c(e.totalPage),1),n("button",{class:"btn btn-sm",onClick:t[19]||(t[19]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[67]||(t[67]=[y(" Next ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,IE)])):f("v-if",!0),n("span",ME,[t[69]||(t[69]=n("label",null,"Per page",-1)),A((l(),d("select",VE,[...t[68]||(t[68]=[ke('',5)])])),[[o,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var qE={class:"container paper-page admin-page"},$E={class:"paper-crumbs"},LE={class:"here"},UE={class:"paper-page-title"},FE={key:0,class:"user-detail-card"},BE={class:"user-header"},zE=["src"],HE={class:"status-dot-wrap"},jE=["textContent"],GE={key:0,class:"type-badge type-repo"},WE={class:"user-actions",style:{"margin-top":"4px"}},KE={class:"user-detail-grid"},YE={class:"detail-value mono-id"},XE={class:"detail-value"},JE=["href"],QE={class:"detail-value"},ZE={class:"detail-value"},xE={key:0},eS={key:1,class:"text-muted"},tS={class:"detail-value"},nS={key:0,style:{"margin-top":"20px"}},oS={class:"paper-table w-100",style:{"margin-top":"10px"}},sS={class:"paper-table-row",style:{"grid-template-columns":"1fr 160px"}},iS={class:"cell-anon",role:"cell"},rS={class:"anon-text"},aS=["textContent"],lS={class:"cell-expires",role:"cell"},dS={key:1,class:"admin-section-header"},uS={class:"section-count"},cS={key:2,class:"user-detail-card"},pS={type:"text",class:"form-control",placeholder:"Token name (e.g. dev-laptop)",required:""},fS={key:0,class:"alert alert-warning",role:"alert"},hS={style:{"white-space":"pre-wrap","word-break":"break-all",margin:"8px 0 0","font-family":"var(--font-mono)","font-size":"0.85rem"}},mS={key:1,class:"paper-table w-100"},gS={class:"paper-table-row",role:"row",style:{"grid-template-columns":"1fr 200px 200px 80px"}},vS=["textContent"],yS=["textContent"],bS={role:"cell"},wS={key:0},kS={key:1,class:"text-muted"},CS={role:"cell"},ES=["onClick"],SS={key:2,class:"paper-table-empty"},NS={class:"admin-section-header"},RS={class:"section-count"},DS={class:"admin-summary"},AS={class:"summary-total"},TS=["aria-pressed"],PS={class:"count"},_S=["aria-pressed"],OS={class:"count"},IS=["aria-pressed"],MS={class:"count"},VS=["aria-pressed"],qS={class:"count"},$S=["aria-pressed"],LS={class:"count"},US={class:"w-100 admin-filter-toolbar","aria-label":"Repositories","accept-charset":"UTF-8"},FS={class:"admin-filter-row"},BS={class:"search-wrap"},zS={type:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search repoId, source repo, error message\u2026",autocomplete:"off"},HS={key:3,class:"bulk-bar"},jS={class:"paper-table paper-table-repos has-bulk w-100",role:"table","aria-label":"Repositories"},GS={class:"paper-table-head",role:"row"},WS={role:"columnheader",style:{width:"28px"}},KS=["checked"],YS={role:"columnheader"},XS={role:"columnheader"},JS={role:"columnheader",class:"num"},QS={role:"columnheader"},ZS={role:"cell",style:{width:"28px"}},xS={type:"checkbox","aria-label":"Select repository"},eN={class:"cell-anon",role:"cell"},tN={class:"anon-text"},nN=["textContent","href"],oN={class:"anon-sub"},sN=["textContent","href"],iN={key:0},rN=["textContent","href"],aN={key:1},lN=["textContent","href"],dN={key:2},uN={class:"cell-status",role:"cell"},cN={class:"status-line"},pN=["textContent"],fN=["textContent","title"],hN=["textContent"],mN=["textContent"],gN={class:"cell-actions",role:"cell"},vN={class:"dropdown"},yN={class:"dropdown-menu dropdown-menu-right"},bN=["href"],wN=["href"],kN=["href"],CN=["onClick"],EN=["onClick"],SN=["onClick"],NN=["onClick"],RN=["onClick"],DN=["onClick"],AN={key:0,class:"paper-table-empty"};function bc(e,t){let o=De("field"),i=De("form");return l(),d("div",qE,[n("div",$E,[t[22]||(t[22]=n("a",{href:"/admin/"},"Admin",-1)),t[23]||(t[23]=y(" \xA0/\xA0 ",-1)),t[24]||(t[24]=n("a",{href:"/admin/users"},"Users",-1)),t[25]||(t[25]=y(" \xA0/\xA0 ",-1)),n("span",LE,c(e.userInfo?.username||"Profile"),1)]),n("h1",UE,c(e.userInfo?.username||"User"),1),t[87]||(t[87]=ke('',1)),e.userInfo?(l(),d("div",FE,[n("div",BE,[e.userInfo?.photo?(l(),d("img",{key:0,width:"56",height:"56",src:e.safeUrl(e.userInfo?.photo)},null,8,zE)):f("v-if",!0),n("div",null,[n("h2",null,[y(c(e.userInfo?.username)+" ",1),n("span",HE,[n("span",{class:P(["status-dot",{"status-ready":e.userInfo?.status=="active","status-removed":e.userInfo?.status!="active"}])},null,2),n("span",{textContent:c(e.fmt?.title(e.userInfo?.status))},null,8,jE)]),e.userInfo?.isAdmin?(l(),d("span",GE,"Admin")):f("v-if",!0)]),n("div",WE,[e.userInfo?.status!=="banned"&&e.userInfo?.username!==e.user?.username?(l(),d("button",{key:0,class:"btn btn-sm btn-outline-danger",onClick:t[0]||(t[0]=s=>e.banUser())},[...t[26]||(t[26]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-ban"})],-1),y(" Ban",-1)])])):f("v-if",!0),e.userInfo?.status==="banned"||e.userInfo?.status==="removed"?(l(),d("button",{key:1,class:"btn btn-sm",onClick:t[1]||(t[1]=s=>e.activateUser())},[...t[27]||(t[27]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),y(" Activate",-1)])])):f("v-if",!0),e.userInfo?.isAdmin?f("v-if",!0):(l(),d("button",{key:2,class:"btn btn-sm",onClick:t[2]||(t[2]=s=>e.promoteUser())},[...t[28]||(t[28]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user-shield"})],-1),y(" Promote to admin",-1)])])),e.userInfo?.isAdmin&&e.userInfo?.username!==e.user?.username?(l(),d("button",{key:3,class:"btn btn-sm btn-outline-ink",onClick:t[3]||(t[3]=s=>e.demoteUser())},[...t[29]||(t[29]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user-minus"})],-1),y(" Remove admin",-1)])])):f("v-if",!0)])])]),n("div",KE,[t[32]||(t[32]=n("div",{class:"detail-label"},"ID",-1)),n("div",YE,c(e.userInfo?._id),1),t[33]||(t[33]=n("div",{class:"detail-label"},"Email",-1)),n("div",{class:P(["detail-value",{"is-empty":!e.userInfo?.emails?.[0]?.email}])},c(e.userInfo?.emails?.[0]?.email||"Not shared"),3),t[34]||(t[34]=n("div",{class:"detail-label"},"Access token",-1)),n("div",{class:P(["detail-value",{"is-empty":!e.userInfo?.accessTokens?.github}]),style:{"font-family":"var(--font-mono)","font-size":"0.85rem"}},c(e.userInfo?.accessTokens?.github||"Not stored"),3),t[35]||(t[35]=n("div",{class:"detail-label"},"GitHub",-1)),n("div",XE,[n("a",{target:"_blank",href:e.safeUrl("https://github.com/"+e.userInfo?.username)},[t[30]||(t[30]=n("i",{class:"fab fa-github"},null,-1)),y(" "+c(e.userInfo?.username),1)],8,JE)]),t[36]||(t[36]=n("div",{class:"detail-label"},"Created",-1)),n("div",QE,c(e.fmt?.humanTime(e.userInfo?.dateOfEntry)),1),t[37]||(t[37]=n("div",{class:"detail-label"},"Last connection",-1)),n("div",ZE,[e.userInfo?.accessTokenDates?.github?(l(),d("span",xE,c(e.fmt?.humanTime(e.userInfo?.accessTokenDates?.github)),1)):f("v-if",!0),e.userInfo?.accessTokenDates?.github?f("v-if",!0):(l(),d("span",eS,"Not recorded (GitHub App sign-in)"))]),t[38]||(t[38]=n("div",{class:"detail-label"},"GitHub repos",-1)),n("div",tS,[y(c(e.userInfo?.repositories?.length?e.userInfo.repositories.length+" repositories":"Not synced")+" ",1),e.userInfo?.repositories?.length?(l(),d("button",{key:0,class:"btn btn-sm ml-2",onClick:t[4]||(t[4]=s=>e.showRepos=!e.showRepos)},c(e.showRepos?"Hide repos":"Show repos"),1)):f("v-if",!0),n("button",{class:"btn btn-sm ml-1",onClick:t[5]||(t[5]=s=>e.getGitHubRepositories())},[...t[31]||(t[31]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),y(" Refresh ",-1)])])])]),e.showRepos?(l(),d("div",nS,[t[41]||(t[41]=n("div",{class:"paper-section-eyebrow"},"GitHub repositories",-1)),n("div",oS,[(l(!0),d(B,null,ie(e.userInfo?.repositories,(s,r)=>(l(),d("div",sS,[n("div",iS,[t[39]||(t[39]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",rS,[n("span",{class:"repo-name",textContent:c(s?.name)},null,8,aS)])]),n("div",lS,[t[40]||(t[40]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-database"})],-1)),y(" "+c(e.fmt?.humanFileSize(s?.size)),1)])]))),256))])])):f("v-if",!0)])):f("v-if",!0),e.userInfo&&e.userInfo?.isAdmin&&e.user&&e.user?.username==e.userInfo?.username?(l(),d("div",dS,[t[42]||(t[42]=n("h2",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-key"})]),y(" API tokens")],-1)),n("span",uS,c(e.tokens?.length),1)])):f("v-if",!0),e.userInfo&&e.userInfo?.isAdmin&&e.user&&e.user?.username==e.userInfo?.username?(l(),d("div",cS,[t[48]||(t[48]=n("p",{class:"paper-page-lede"},[y("Personal API tokens for this admin account. Send as "),n("code",null,"Authorization: Bearer "),y(" to authenticate without GitHub OAuth (useful for development).")],-1)),A((l(),d("form",{class:"d-flex",style:{gap:"8px","margin-bottom":"12px"},onSubmit:t[6]||(t[6]=ce(s=>e.submitForm(s,()=>{e.createToken()}),["prevent"]))},[A(n("input",pS,null,512),[[o,{state:e.viewState,set:s=>{e.tokenForm.name=s},value:e.tokenForm?.name,form:null,options:{}}]]),t[43]||(t[43]=n("button",{type:"submit",class:"btn btn-ink"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-plus"})]),y(" Generate")],-1))],32)),[[i,e.viewState]]),e.tokenForm?.plaintext?(l(),d("div",fS,[t[44]||(t[44]=n("strong",null,"Copy this token now \u2014 it will not be shown again:",-1)),n("pre",hS,c(e.tokenForm?.plaintext),1),n("button",{class:"btn btn-sm",onClick:t[7]||(t[7]=s=>e.tokenForm.plaintext=null)},"Dismiss")])):f("v-if",!0),e.tokens?.length?(l(),d("div",mS,[t[46]||(t[46]=n("div",{class:"paper-table-head",role:"row",style:{"grid-template-columns":"1fr 200px 200px 80px"}},[n("div",{role:"columnheader"},"Name"),n("div",{role:"columnheader"},"Created"),n("div",{role:"columnheader"},"Last used"),n("div",{role:"columnheader","aria-label":"Actions"})],-1)),(l(!0),d(B,null,ie(e.tokens,(s,r)=>(l(),d("div",gS,[n("div",{role:"cell",textContent:c(s?.name)},null,8,vS),n("div",{role:"cell",textContent:c(e.fmt?.humanTime(s?.createdAt))},null,8,yS),n("div",bS,[s?.lastUsedAt?(l(),d("span",wS,c(e.fmt?.humanTime(s?.lastUsedAt)),1)):f("v-if",!0),s?.lastUsedAt?f("v-if",!0):(l(),d("span",kS,"never"))]),n("div",CS,[n("button",{class:"btn btn-sm text-danger btn-icon",title:"Revoke","aria-label":"Revoke token",onClick:a=>e.revokeToken(s)},[...t[45]||(t[45]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1)])],8,ES)])]))),256))])):f("v-if",!0),e.tokens?.length?f("v-if",!0):(l(),d("div",SS,[...t[47]||(t[47]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No tokens yet.",-1)])]))])):f("v-if",!0),n("div",NS,[t[49]||(t[49]=n("h2",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})]),y(" Anonymized repositories")],-1)),n("span",RS,c(e.repositories?.length),1)]),n("div",DS,[n("span",AS,c(e.fmt?.number(e.repositories?.length)),1),n("button",{type:"button",class:P(["summary-pill ok",{active:e.filters?.status?.ready===!1}]),title:"Toggle ready filter",onClick:t[8]||(t[8]=s=>e.filters.status.ready=!e.filters.status.ready),"aria-pressed":e.filters?.status?.ready===!1},[t[50]||(t[50]=y("Ready ",-1)),n("span",PS,c(e.fmt?.number(e.statusCountFor("ready"))),1)],10,TS),n("button",{type:"button",class:P(["summary-pill warn",{active:e.filters?.status?.preparing===!1}]),title:"Toggle preparing filter",onClick:t[9]||(t[9]=s=>e.filters.status.preparing=!e.filters.status.preparing),"aria-pressed":e.filters?.status?.preparing===!1},[t[51]||(t[51]=y("Preparing ",-1)),n("span",OS,c(e.fmt?.number(e.statusCountFor("preparing"))),1)],10,_S),n("button",{type:"button",class:P(["summary-pill error",{active:e.filters?.status?.error===!1}]),title:"Toggle errored filter",onClick:t[10]||(t[10]=s=>e.filters.status.error=!e.filters.status.error),"aria-pressed":e.filters?.status?.error===!1},[t[52]||(t[52]=y("Errored ",-1)),n("span",MS,c(e.fmt?.number(e.statusCountFor("error"))),1)],10,IS),n("button",{type:"button",class:P(["summary-pill",{active:e.filters?.status?.expired===!1}]),title:"Toggle expired filter",onClick:t[11]||(t[11]=s=>e.filters.status.expired=!e.filters.status.expired),"aria-pressed":e.filters?.status?.expired===!1},[t[53]||(t[53]=y("Expired ",-1)),n("span",qS,c(e.fmt?.number(e.statusCountFor("expired"))),1)],10,VS),n("button",{type:"button",class:P(["summary-pill",{active:e.filters?.status?.removed===!1}]),title:"Toggle removed filter",onClick:t[12]||(t[12]=s=>e.filters.status.removed=!e.filters.status.removed),"aria-pressed":e.filters?.status?.removed===!1},[t[54]||(t[54]=y("Removed ",-1)),n("span",LS,c(e.fmt?.number(e.statusCountFor("removed"))),1)],10,$S)]),A((l(),d("form",US,[n("div",FS,[n("div",BS,[A(n("input",zS,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),t[56]||(t[56]=n("span",{class:"admin-filter-spacer"},null,-1)),n("button",{class:"btn btn-sm",type:"button",title:"Export current view to CSV",onClick:t[13]||(t[13]=s=>e.exportCsv())},[...t[55]||(t[55]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),y(" Export",-1)])])])])),[[i,e.viewState]]),e.selectedCount()>0?(l(),d("div",HS,[n("span",null,[n("strong",null,c(e.selectedCount()),1),t[57]||(t[57]=y(" selected",-1))]),n("button",{class:"btn btn-sm",type:"button",onClick:t[14]||(t[14]=s=>e.bulkRefresh())},[...t[58]||(t[58]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),y(" Force refresh",-1)])]),n("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[15]||(t[15]=s=>e.bulkRemoveCache())},[...t[59]||(t[59]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),y(" Remove cache",-1)])]),n("button",{class:"btn btn-sm",type:"button",onClick:t[16]||(t[16]=s=>e.clearSelection())},"Clear")])):f("v-if",!0),n("div",jS,[n("div",GS,[n("div",WS,[n("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[17]||(t[17]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,KS)]),n("div",YS,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="source.repositoryName"}]),onClick:t[18]||(t[18]=s=>e.sortBy("source.repositoryName"))},[t[61]||(t[61]=y("Repository ",-1)),e.sortIcon("source.repositoryName")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("source.repositoryName")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[60]||(t[60]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),n("div",XS,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="status"}]),onClick:t[19]||(t[19]=s=>e.sortBy("status"))},[t[63]||(t[63]=y("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[62]||(t[62]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),n("div",JS,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="pageView"}]),onClick:t[20]||(t[20]=s=>e.sortBy("pageView"))},[t[65]||(t[65]=y("Views ",-1)),e.sortIcon("pageView")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("pageView")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[64]||(t[64]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),n("div",QS,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="anonymizeDate"}]),onClick:t[21]||(t[21]=s=>e.sortBy("anonymizeDate"))},[t[67]||(t[67]=y("Anonymized ",-1)),e.sortIcon("anonymizeDate")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("anonymizeDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[66]||(t[66]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),t[68]||(t[68]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(B,null,ie(e.filteredRepositories,(s,r)=>(l(),d("div",{class:P(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error","row-selected":e.selected[s?.repoId]}]),role:"row"},[n("div",ZS,[A(n("input",xS,null,512),[[o,{state:e.viewState,set:a=>{e.selected[s.repoId]=a},value:e.selected[s?.repoId],form:null,options:{}}]])]),n("div",eN,[t[73]||(t[73]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",tN,[n("a",{class:"repo-name",target:"_blank",textContent:c(s?.repoId),href:e.safeUrl("/r/"+s?.repoId)},null,8,nN),n("div",oN,[n("a",{textContent:c(s?.source?.fullName),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/")},null,8,sN),s?.options?.update?(l(),d("span",iN,[t[69]||(t[69]=y("\xA0\xB7\xA0",-1)),n("a",{textContent:c(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,rN)])):f("v-if",!0),s?.options?.update?f("v-if",!0):(l(),d("span",aN,[t[70]||(t[70]=y("\xA0\xB7\xA0@",-1)),n("a",{textContent:c(s?.source?.commit?.substring(0,8)),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},null,8,lN)])),s?.conference?(l(),d("span",dN,[t[71]||(t[71]=y("\xA0\xB7\xA0",-1)),t[72]||(t[72]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),y(" "+c(s?.conference),1)])):f("v-if",!0),n("span",null,"\xA0\xB7\xA0"+c(e.fmt?.humanFileSize(s?.size?.storage)),1),n("span",null,"\xA0\xB7\xA0"+c(e.fmt?.number(s?.options?.terms?.length))+" "+c(s?.options?.terms?.length===1?"term":"terms"),1)])])]),n("div",uN,[n("span",cN,[n("span",{class:P(["status-dot",{"status-removed":s?.status=="removed"||s?.status=="expired","status-ready":s?.status=="ready","status-error":s?.status=="error","status-preparing":s?.status=="preparing"}])},null,2),n("span",{textContent:c(e.fmt?.title(s?.status))},null,8,pN)]),s?.statusMessage?(l(),d("span",{key:0,class:"status-sub",textContent:c(e.fmt?.statusMsg(s?.statusMessage)),title:s?.statusMessage},null,8,fN)):f("v-if",!0)]),n("div",{class:"cell-views num",role:"cell",textContent:c(e.fmt?.number(s?.pageView||0))},null,8,hN),n("div",{class:"cell-expires",role:"cell",textContent:c(e.fmt?.humanTime(s?.anonymizeDate))},null,8,mN),n("div",gN,[n("div",vN,[t[85]||(t[85]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",yN,[n("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[74]||(t[74]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),y(" Edit",-1)])],8,bN),n("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[75]||(t[75]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),y(" View repo",-1)])],8,wN),s?.options?.page&&s?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+s?.repoId+"/")},[...t[76]||(t[76]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),y(" View page",-1)])],8,kN)):f("v-if",!0),n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.fetchGithubInfo(s),["prevent"])},[...t[77]||(t[77]=[n("i",{class:"fab fa-github"},null,-1),y(" Live GitHub info",-1)])],8,CN),t[83]||(t[83]=n("div",{class:"dropdown-divider"},null,-1)),A(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updateRepository(s),["prevent"])},[...t[78]||(t[78]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),y(" Force update",-1)])],8,EN),[[J,s?.status=="ready"||s?.status=="error"]]),A(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updateRepository(s),["prevent"])},[...t[79]||(t[79]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),y(" Enable",-1)])],8,SN),[[J,s?.status=="removed"]]),A(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.showStatusMessage(s),["prevent"])},[...t[80]||(t[80]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1),y(" View status message",-1)])],8,NN),[[J,s?.statusMessage]]),t[84]||(t[84]=n("div",{class:"dropdown-divider"},null,-1)),n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.removeCache(s),["prevent"])},[...t[81]||(t[81]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),y(" Remove cache",-1)])],8,RN),A(n("a",{class:"dropdown-item text-danger",href:"#",onClick:ce(a=>e.removeRepository(s),["prevent"])},[...t[82]||(t[82]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),y(" Remove",-1)])],8,DN),[[J,s?.status=="ready"]])])])])],2))),256)),e.filteredRepositories?.length==0?(l(),d("div",AN,[...t[86]||(t[86]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No repositories match the current filters.",-1)])])):f("v-if",!0)])])}var TN={class:"container paper-page admin-page"},PN={class:"admin-summary"},_N={class:"summary-total"},ON=["aria-pressed"],IN={class:"count"},MN=["aria-pressed"],VN={class:"count"},qN=["aria-pressed"],$N={class:"count"},LN=["aria-pressed"],UN={class:"count"},FN={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},BN={class:"w-100 admin-filter-toolbar","aria-label":"Users","accept-charset":"UTF-8"},zN={class:"admin-filter-row"},HN={class:"search-wrap"},jN={type:"search",class:"form-control","aria-label":"Search users",placeholder:"Search username or email\u2026",autocomplete:"off"},GN={key:0,class:"admin-search-hint"},WN={class:"admin-filter-inline"},KN={class:"form-control form-control-sm"},YN={key:0,class:"admin-filter-inline","aria-label":"Pagination"},XN=["disabled"],JN={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},QN=["disabled"],ZN={key:0,class:"admin-filter-row"},xN={class:"admin-active-chips"},eR={class:"key"},tR=["onClick"],nR={key:1,class:"bulk-bar"},oR={class:"paper-table w-100",role:"table","aria-label":"Users",style:{"--cols":"28px minmax(280px, 2.4fr) 100px 140px 140px 52px"}},sR={class:"paper-table-head admin-users-row",role:"row"},iR={role:"columnheader",style:{width:"28px"}},rR=["checked"],aR={role:"columnheader"},lR={role:"columnheader"},dR={role:"cell",style:{width:"28px"}},uR={type:"checkbox","aria-label":"Select user"},cR={class:"cell-anon",role:"cell"},pR=["src"],fR={key:1,class:"avatar-fallback","aria-hidden":"true"},hR={class:"anon-text"},mR=["textContent","href"],gR={class:"anon-sub"},vR={key:0},yR=["href"],bR={key:1},wR={class:"cell-views num",role:"cell"},kR=["title","textContent","href"],CR={class:"cell-status",role:"cell"},ER=["textContent"],SR={class:"cell-status",role:"cell"},NR={key:0,class:"role-pill"},RR={key:1,class:"empty-dash"},DR={class:"cell-actions",role:"cell"},AR={class:"dropdown"},TR={class:"dropdown-menu dropdown-menu-right"},PR=["href"],_R=["href"],OR=["onClick"],IR=["onClick"],MR={key:0,class:"paper-table-empty"},VR={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},qR={style:{"font-size":"12px",color:"var(--ink-muted)"}},$R={key:0,class:"pagination-compact"},LR=["disabled"],UR=["max"],FR=["disabled"],BR={class:"admin-filter-inline"},zR={class:"form-control form-control-sm"};function wc(e,t){let o=De("field"),i=De("form");return l(),d("div",TN,[t[48]||(t[48]=ke('
Admin \xA0/\xA0 Users

Users

',3)),n("div",PN,[n("span",_N,[y(c(e.total>=0?e.fmt.number(e.total):"\u2026")+" ",1),n("small",null,c(e.total===1?"user":"users"),1)]),n("button",{type:"button",class:P(["summary-pill",{active:!e.query?.status}]),onClick:t[0]||(t[0]=s=>{e.query.status="",e.query.page=1}),"aria-pressed":!e.query?.status},[t[14]||(t[14]=y("All ",-1)),n("span",IN,c(e.fmt?.number(e.total)),1)],10,ON),n("button",{type:"button",class:P(["summary-pill ok",{active:e.query?.status=="active"}]),onClick:t[1]||(t[1]=s=>{e.query.status=e.query.status=="active"?"":"active",e.query.page=1}),"aria-pressed":e.query?.status=="active"},[t[15]||(t[15]=y("Active ",-1)),n("span",VN,c(e.fmt?.number(e.statusCountFor("active"))),1)],10,MN),n("button",{type:"button",class:P(["summary-pill error",{active:e.query?.status=="banned"}]),onClick:t[2]||(t[2]=s=>{e.query.status=e.query.status=="banned"?"":"banned",e.query.page=1}),"aria-pressed":e.query?.status=="banned"},[t[16]||(t[16]=y("Banned ",-1)),n("span",$N,c(e.fmt?.number(e.statusCountFor("banned"))),1)],10,qN),n("button",{type:"button",class:P(["summary-pill",{active:e.query?.status=="removed"}]),onClick:t[3]||(t[3]=s=>{e.query.status=e.query.status=="removed"?"":"removed",e.query.page=1}),"aria-pressed":e.query?.status=="removed"},[t[17]||(t[17]=y("Removed ",-1)),n("span",UN,c(e.fmt?.number(e.statusCountFor("removed"))),1)],10,LN)]),e.fetchError?(l(),d("div",FN,[t[18]||(t[18]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),y(" "+c(e.fetchError),1)])):f("v-if",!0),A((l(),d("form",BN,[n("div",zN,[n("div",HN,[A(n("input",jN,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?f("v-if",!0):(l(),d("span",GN,"/"))]),n("span",WN,[t[20]||(t[20]=n("label",null,"Role",-1)),A((l(),d("select",KN,[...t[19]||(t[19]=[n("option",{value:""},"Any",-1),n("option",{value:"admin"},"Admin",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.role=s},value:e.query?.role,form:null,options:{}}]])]),t[24]||(t[24]=n("span",{class:"admin-filter-spacer"},null,-1)),n("button",{class:"btn btn-sm",type:"button",onClick:t[4]||(t[4]=s=>e.exportCsv())},[...t[21]||(t[21]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),y(" Export",-1)])]),e.totalPage>1?(l(),d("span",YN,[n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[5]||(t[5]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[22]||(t[22]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,XN),n("span",JN,c(e.query?.page)+"/"+c(e.totalPage||1),1),n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[6]||(t[6]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[23]||(t[23]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,QN)])):f("v-if",!0)]),e.chips?.length?(l(),d("div",ZN,[n("div",xN,[(l(!0),d(B,null,ie(e.chips,(s,r)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[n("span",eR,c(s?.label),1),n("span",null,c(s?.value),1),n("button",{type:"button",onClick:a=>e.clearFilter(s.key),"aria-label":"Clear filter"},[...t[25]||(t[25]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,tR)]))),128))])])):f("v-if",!0)])),[[i,e.viewState]]),e.selectedCount()>0?(l(),d("div",nR,[n("span",null,[n("strong",null,c(e.selectedCount()),1),t[26]||(t[26]=y(" selected",-1))]),n("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[7]||(t[7]=s=>e.bulkBan())},[...t[27]||(t[27]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-ban"})],-1),y(" Ban",-1)])]),n("button",{class:"btn btn-sm",type:"button",onClick:t[8]||(t[8]=s=>{e.selected={},e.allSelected=!1})},"Clear")])):f("v-if",!0),n("div",oR,[n("div",sR,[n("div",iR,[n("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[9]||(t[9]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,rR)]),n("div",aR,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="username"}]),onClick:t[10]||(t[10]=s=>e.sortBy("username"))},[t[29]||(t[29]=y("User ",-1)),e.sortIcon("username")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("username")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[28]||(t[28]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),t[32]||(t[32]=n("div",{role:"columnheader",class:"num",title:"Repositories discovered on the user's GitHub account"},"GitHub repos",-1)),n("div",lR,[n("button",{type:"button",class:P(["sortable",{active:e.query?.sort=="status"}]),onClick:t[11]||(t[11]=s=>e.sortBy("status"))},[t[31]||(t[31]=y("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:P(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[30]||(t[30]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),t[33]||(t[33]=n("div",{role:"columnheader"},"Role",-1)),t[34]||(t[34]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(B,null,ie(e.filteredUsers,(s,r)=>(l(),d("div",{class:P(["paper-table-row admin-users-row",{"row-selected":e.selected[s?.username]}]),role:"row"},[n("div",dR,[A(n("input",uR,null,512),[[o,{state:e.viewState,set:a=>{e.selected[s.username]=a},value:e.selected[s?.username],form:null,options:{}}]])]),n("div",cR,[s?.photo?(l(),d("img",{key:0,width:"28",height:"28",class:"rounded-circle",style:{"flex-shrink":"0"},src:e.safeUrl(s?.photo)},null,8,pR)):(l(),d("span",fR,c((s?.username||"?").charAt(0).toUpperCase()),1)),n("div",hR,[n("a",{class:"repo-name",textContent:c(s?.username),href:e.safeUrl("/admin/users/"+s?.username)},null,8,mR),n("div",gR,[s?.emails?.[0]?.email?(l(),d("span",vR,c(s?.emails?.[0]?.email)+" \xB7 ",1)):f("v-if",!0),n("a",{target:"_blank",href:e.safeUrl("https://github.com/"+s?.username)},[t[35]||(t[35]=n("i",{class:"fab fa-github"},null,-1)),y(" "+c(s?.username),1)],8,yR),s?.dateOfEntry?(l(),d("span",bR,"\xA0\xB7\xA0Joined "+c(e.fmt?.humanTime(s?.dateOfEntry)),1)):f("v-if",!0)])])]),n("div",wR,[t[36]||(t[36]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1)),n("a",{title:s?.repoCount?"Show this user\u2019s repositories":"Repositories not synced yet",textContent:c(s?.repoCount?e.fmt?.number(s.repoCount):"Not synced"),class:P({"is-unsynced":!s?.repoCount}),href:e.safeUrl("/admin/repositories?owner="+s?.username)},null,10,kR)]),n("div",CR,[n("span",{class:P(["status-dot",{"status-ready":s?.status=="active","status-removed":s?.status=="removed"||s?.status=="banned"}])},null,2),n("span",{textContent:c(e.fmt?.title(s?.status))},null,8,ER)]),n("div",SR,[s?.isAdmin?(l(),d("span",NR,"Admin")):f("v-if",!0),s?.isAdmin?f("v-if",!0):(l(),d("span",RR,"\u2014"))]),n("div",DR,[n("div",AR,[t[42]||(t[42]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",TR,[n("a",{class:"dropdown-item",href:e.safeUrl("/admin/users/"+s?.username)},[...t[37]||(t[37]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),y(" View details",-1)])],8,PR),n("a",{class:"dropdown-item",href:e.safeUrl("/admin/repositories?owner="+s?.username)},[...t[38]||(t[38]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),y(" View repositories",-1)])],8,_R),t[41]||(t[41]=n("div",{class:"dropdown-divider"},null,-1)),A(n("a",{class:"dropdown-item text-danger",href:"#",onClick:ce(a=>e.banUser(s),["prevent"])},[...t[39]||(t[39]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-ban"})],-1),y(" Ban",-1)])],8,OR),[[J,s?.status=="active"]]),A(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.activateUser(s),["prevent"])},[...t[40]||(t[40]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),y(" Activate",-1)])],8,IR),[[J,s?.status=="removed"||s?.status=="banned"]])])])])],2))),256)),e.filteredUsers?.length==0?(l(),d("div",MR,[...t[43]||(t[43]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No users match the current filters.",-1)])])):f("v-if",!0)]),n("div",VR,[n("span",qR,c(e.fmt?.number(e.total))+" results",1),e.totalPage>1?(l(),d("div",$R,[n("button",{class:"btn btn-sm",onClick:t[12]||(t[12]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[44]||(t[44]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1),y(" Previous",-1)])],8,LR),A(n("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},max:e.totalPage},null,8,UR),[[o,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),n("span",null,"of "+c(e.totalPage),1),n("button",{class:"btn btn-sm",onClick:t[13]||(t[13]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[45]||(t[45]=[y("Next ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,FR)])):f("v-if",!0),n("span",BR,[t[47]||(t[47]=n("label",null,"Per page",-1)),A((l(),d("select",zR,[...t[46]||(t[46]=[n("option",{value:"10"},"10",-1),n("option",{value:"25"},"25",-1),n("option",{value:"50"},"50",-1),n("option",{value:"100"},"100",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var HR={class:"anonymize-landing"},jR={class:"anonymize-landing-inner"},GR={class:"form-group mt-4 mb-2"},WR={class:"source-url-label-row"},KR={key:0,class:"repo-access","aria-label":"GitHub access"},YR={key:0,class:"repo-access-switch",role:"group","aria-label":"Repository connection"},XR=["aria-pressed","disabled"],JR=["aria-pressed","disabled"],QR={key:1,class:"connection-badge"},ZR={class:"landing-url-row"},xR={id:"sourceUrl-landing",onblur:"this.scrollLeft=0",type:"text",class:"form-control form-control-lg",placeholder:"https://github.com/owner/repository"},eD=["aria-disabled"],tD={key:0,class:"text-danger",role:"alert"},nD={key:1,class:"repo-access-details","aria-label":"GitHub access"},oD={class:"repo-access-main"},sD={class:"repo-access-controls"},iD={key:0,class:"access-q"},rD={key:2,class:"connection-link",href:"/connections"},aD={class:"repo-access-note"},lD={key:0},dD={class:"anonymize-workspace"},uD={class:"anonymize-topbar"},cD={class:"anonymize-topbar-inner"},pD={class:"anonymize-topbar-head"},fD={class:"paper-page-title anonymize-topbar-title"},hD={key:0},mD={key:1},gD={key:0,class:"alert alert-info",role:"status"},vD={key:1,class:"alert alert-info",role:"status"},yD={key:1},bD={class:"anonymize-mobile-tabs",role:"tablist","aria-label":"Anonymization workspace"},wD=["aria-selected","tabindex"],kD=["aria-selected","tabindex"],CD={key:2,class:"anonymize-preview-empty",id:"workspace-preview",role:"status"},ED={class:"anonymize-split"},SD=["role","aria-labelledby"],ND={class:"form needs-validation paper-settings-main",name:"anonymize",novalidate:""},RD={class:"anonymize-fields"},DD={class:"paper-settings-section"},AD={class:"form-group"},TD={class:"source-url-label-row"},PD={key:0,class:"repo-access","aria-label":"GitHub access"},_D={key:0,class:"repo-access-switch",role:"group","aria-label":"Repository connection"},OD=["aria-pressed","disabled"],ID=["aria-pressed","disabled"],MD={key:1,class:"connection-badge"},VD=["disabled"],qD={class:"invalid-feedback"},$D={class:"invalid-feedback"},LD={class:"invalid-feedback"},UD={class:"invalid-feedback"},FD={key:0,class:"repo-access-details","aria-label":"Previous repository configuration"},BD={key:0,class:"form-group"},zD=["value"],HD={key:1},jD={class:"repo-access-controls"},GD=["href"],WD={key:1,class:"repo-access-details","aria-label":"GitHub access"},KD={class:"repo-access-main"},YD={class:"repo-access-controls"},XD={key:0,class:"access-q"},JD={key:2,class:"connection-link",href:"/connections"},QD={class:"repo-access-note"},ZD={key:0},xD={key:1},eA={key:2,class:"repo-access-details"},tA=["disabled"],nA={key:0,role:"status"},oA={key:3,class:"repo-access-details"},sA={key:0,role:"status"},iA={key:4,class:"form-grid-2"},rA={class:"form-group"},aA={class:"input-group"},lA={class:"form-control",id:"branch",name:"branch"},dA=["textContent","value"],uA={class:"input-group-append"},cA={class:"form-group"},pA=["disabled"],fA={class:"invalid-feedback"},hA={class:"invalid-feedback"},mA={class:"form-check"},gA={class:"form-check-input",type:"checkbox",id:"update",name:"update"},vA={class:"paper-settings-section"},yA={class:"form-group"},bA=["disabled"],wA={class:"form-text text-muted"},kA={class:"invalid-feedback"},CA={class:"form-group"},EA=["disabled"],SA={class:"form-text text-muted"},NA={class:"invalid-feedback"},RA={class:"form-group"},DA=["disabled"],AA={class:"form-text text-muted"},TA={class:"invalid-feedback"},PA={class:"form-group"},_A=["rows"],OA={class:"redaction-syntax"},IA={class:"form-text text-muted"},MA=["onClick"],VA={key:0,class:"term-hint-more"},qA={class:"invalid-feedback"},$A={class:"preserve-row"},LA={class:"preserve-row-text"},UA={class:"preserve-row-value"},FA=["disabled"],BA={class:"preserve-tree"},zA={key:0,class:"preserve-status"},HA={key:1,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},jA=["aria-expanded","aria-label","onClick"],GA={key:1,class:"preserve-caret-space"},WA=["id","aria-label","checked",".indeterminate","disabled","onChange"],KA=["for","onClick"],YA={key:2,class:"preserve-note"},XA={key:0,class:"preserve-status"},JA={key:0,class:"preserve-status"},QA=["open"],ZA={class:"preserve-foot"},xA={class:"preserve-count","aria-live":"polite"},eT={class:"preserve-actions"},tT={class:"paper-settings-section"},nT={class:"form-check"},oT={class:"form-check-input",type:"checkbox",id:"link",name:"link"},sT={class:"form-check"},iT={class:"form-check-input",type:"checkbox",id:"image",name:"image"},rT={class:"form-check"},aT={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},lT={class:"form-check"},dT={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},uT={class:"form-check"},cT=["disabled"],pT={key:0,class:"form-text text-muted"},fT={key:1,class:"form-text text-muted"},hT={key:0,class:"form-text text-muted"},mT={class:"form-check"},gT={class:"form-check-input",type:"checkbox",id:"title-gist",name:"title-gist"},vT={class:"form-check"},yT={class:"form-check-input",type:"checkbox",id:"content-gist",name:"content-gist"},bT={class:"form-check"},wT={class:"form-check-input",type:"checkbox",id:"comments-gist",name:"comments-gist"},kT={class:"form-check"},CT={class:"form-check-input",type:"checkbox",id:"username-gist",name:"username-gist"},ET={class:"form-check"},ST={class:"form-check-input",type:"checkbox",id:"date-gist",name:"date-gist"},NT={class:"form-check"},RT={class:"form-check-input",type:"checkbox",id:"origin-gist",name:"origin-gist"},DT={class:"form-check"},AT={class:"form-check-input",type:"checkbox",id:"title",name:"title"},TT={class:"form-check"},PT={class:"form-check-input",type:"checkbox",id:"body",name:"body"},_T={class:"form-check"},OT={class:"form-check-input",type:"checkbox",id:"diff",name:"diff"},IT={class:"form-check"},MT={class:"form-check-input",type:"checkbox",id:"comments",name:"comments"},VT={class:"form-check"},qT={class:"form-check-input",type:"checkbox",id:"username",name:"username"},$T={class:"form-check"},LT={class:"form-check-input",type:"checkbox",id:"date",name:"date"},UT={class:"form-check"},FT={class:"form-check-input",type:"checkbox",id:"origin",name:"origin"},BT={class:"paper-settings-section hosting-settings",id:"repository-hosting","aria-labelledby":"hosting-heading"},zT={class:"form-group conference-field"},HT=["href"],jT={class:"invalid-feedback"},GT={class:"form-text text-muted"},WT={key:0,class:"hosting-usage"},KT={key:0},YT={key:1},XT={key:2},JT={key:1,class:"hosting-payment"},QT={key:0,class:"hosting-limit",role:"status"},ZT={key:1,class:"hosting-options"},xT={class:"hosting-options-title"},eP=["value","checked","onChange"],tP={class:"hosting-option-body"},nP={key:0,class:"hosting-cycle billing-toggle",role:"radiogroup","aria-label":"Billing frequency"},oP=["aria-checked","onClick"],sP={key:0,class:"billing-toggle-save"},iP={class:"hosting-option-price"},rP={key:2,role:"status"},aP={key:3,class:"hosting-terms"},lP={key:4,class:"hosting-terms"},dP={key:5,class:"capacity-options"},uP=["disabled"],cP={key:2,class:"hosting-subhead"},pP={class:"expiration-choices"},fP={class:"expiration-choice"},hP=["checked","disabled"],mP={key:0,class:"dated-options"},gP={key:0,class:"hosting-date"},vP=["min","max"],yP={class:"invalid-feedback"},bP={class:"invalid-feedback"},wP={class:"hosting-property"},kP={key:1,class:"expiration-choice"},CP=["checked","disabled"],EP={key:0},SP={key:3,class:"form-text text-muted"},NP={key:4,class:"inline-hosting"},RP={key:0,role:"alert",class:"text-danger"},DP={key:1,role:"alert",class:"text-danger"},AP=["disabled"],TP={key:2,role:"status"},PP={key:3,role:"status",class:"form-text text-muted"},_P={key:4,class:"hosting-terms"},OP={key:5,class:"hosting-terms"},IP={key:6,class:"repository-pass"},MP=["disabled","onClick"],VP={class:"paper-settings-section"},qP={class:"form-group"},$P={style:{position:"relative"}},LP={type:"text",id:"coauthorSearch",class:"form-control",placeholder:"Search GitHub username\u2026",autocomplete:"off"},UP={class:"dropdown-menu show",style:{display:"block","max-height":"220px","overflow-y":"auto",width:"100%"}},FP=["onClick"],BP=["src"],zP=["textContent"],HP=["textContent"],jP={class:"coauthor-list"},GP={class:"coauthor-row d-flex align-items-center",style:{padding:"6px 0",gap:"8px"}},WP=["src"],KP=["textContent","href"],YP=["onClick"],XP={class:"form-text text-muted"},JP=["textContent"],QP={class:"anonymize-submit-bar"},ZP=["disabled"],xP=["disabled"],e_=["disabled"],t_=["disabled"],n_=["disabled"],o_=["disabled"],s_={key:5,class:"checkout-return-note"},i_={key:6,class:"draft-status",role:"status"},r_={key:7,class:"draft-status"},a_=["role","aria-labelledby"],l_={class:"anonymize-preview-head"},d_={class:"anonymize-preview-sub"},u_={key:0,class:"anonymize-preview-status",role:"status"},c_={key:1,class:"anonymize-preview-status",role:"status"},p_={key:2,class:"anonymize-preview-status",role:"alert"},f_={key:3,class:"anonymize-preview-status"},h_=["innerHTML"],m_=["role","aria-labelledby"],g_={class:"anonymize-preview-head"},v_={key:0,class:"anonymize-preview-status",role:"status"},y_={key:1,class:"anonymize-preview-status",role:"status"},b_={key:2,class:"anonymize-preview-status",role:"alert"},w_={key:3,class:"anonymize-preview-body"},k_={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},C_={class:"pr-title mb-1"},E_={key:0},S_=["textContent"],N_={key:0},R_={key:1},D_={key:2},A_={class:"pr-comments mt-3"},T_={class:"pr-comment"},P_={class:"pr-comment-head"},__=["textContent"],O_={key:0,class:"pr-comment-date"},I_={key:3},M_={class:"pr-comments"},V_={class:"pr-comment"},q_={class:"pr-comment-head"},$_={key:0,class:"pr-comment-author"},L_=["textContent"],U_=["textContent"],F_={key:0,class:"pr-comment-body"},B_=["role","aria-labelledby"],z_={class:"anonymize-preview-head"},H_={key:0,class:"anonymize-preview-status",role:"status"},j_={key:1,class:"anonymize-preview-status",role:"status"},G_={key:2,class:"anonymize-preview-status",role:"alert"},W_={key:3,class:"anonymize-preview-body"},K_={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},Y_={class:"pr-title mb-1"},X_={key:0},J_=["textContent"],Q_={key:0},Z_={key:1,class:"pr-body shadow-sm p-3 mb-4 rounded",style:{background:"var(--paper-bg-alt)"}},x_={key:2,class:"paper-tabs",role:"tablist"},e4=["aria-selected","tabindex"],t4=["aria-selected","tabindex"],n4=["textContent"],o4={key:3,class:"anonymize-preview-status"},s4={class:"paper-tab-content"},i4={key:0,role:"tabpanel",id:"preview-pr-diff-panel","aria-labelledby":"preview-pr-diff-tab"},r4=["innerHTML"],a4={key:1,role:"tabpanel",id:"preview-pr-comments-panel","aria-labelledby":"preview-pr-comments-tab"},l4={class:"pr-comments"},d4={class:"pr-comment"},u4={class:"pr-comment-head"},c4={key:0,class:"pr-comment-author"},p4=["textContent"],f4=["textContent"],h4={key:0,class:"pr-comment-body"};function kc(e,t){let o=at("gist-file"),i=at("markdown"),s=De("field"),r=De("form");return l(),d("div",{class:P(["anonymize-page h-100",{"mobile-preview-active":e.mobilePane==="preview","preview-expanded":e.previewExpanded}])},[f(" ===== STATE 1: No URL \u2014 centered input ===== "),A(n("div",HR,[n("div",jR,[t[53]||(t[53]=n("div",{class:"paper-crumbs"},[y("My work \xA0/\xA0 "),n("span",{class:"here"},"New anonymization")],-1)),t[54]||(t[54]=n("h1",{class:"paper-page-title"},[y("New "),n("em",null,"anonymization")],-1)),t[55]||(t[55]=n("p",{class:"paper-page-lede"}," Paste a repository, pull request, or gist URL. You\u2019ll choose the terms to redact next. ",-1)),n("div",GR,[n("div",WR,[t[50]||(t[50]=n("label",{class:"paper-field-label",for:"sourceUrl-landing"},"Source URL",-1)),!e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",KR,[!e.isUpdate&&e.detectedType!=="gist"?(l(),d("div",YR,[n("button",{type:"button","aria-pressed":e.githubConnection==="github-app",disabled:e.githubConnection==="github-app",onClick:t[0]||(t[0]=a=>e.chooseGitHubConnection("github-app"))},[...t[49]||(t[49]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),y(),n("span",{class:"sr-only"},"Read-only ",-1),y("GitHub App",-1)])],8,XR),n("button",{type:"button","aria-pressed":e.githubConnection==="oauth",disabled:e.githubConnection==="oauth",onClick:t[1]||(t[1]=a=>e.chooseGitHubConnection("oauth"))},"Legacy OAuth",8,JR)])):f("v-if",!0),e.isUpdate||e.detectedType==="gist"?(l(),d("span",QR,c((e.detectedType==="gist"?e.githubConnections?.gistConnection==="github-app":e.githubConnection==="github-app")?"Read-only GitHub App":"Legacy OAuth"),1)):f("v-if",!0)])):f("v-if",!0)]),n("div",ZR,[A(n("input",xR,null,512),[[s,{state:e.viewState,set:a=>{e.sourceUrl=a},value:e.sourceUrl,form:null,options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.urlSelected()}}]]),n("button",{type:"button",class:"btn btn-primary landing-continue","aria-disabled":e.sourceUrl?null:"true",onClick:t[2]||(t[2]=a=>e.sourceUrl&&e.urlSelected())},"Continue",8,eD)])]),e.sourceUrlError?(l(),d("p",tD,c(e.sourceUrlError),1)):f("v-if",!0),t[56]||(t[56]=n("small",{class:"form-text",style:{color:"var(--ink-muted)"}}," Repository, pull request (\u2026/pull/42) and gist (gist.github.com/\u2026) URLs are all accepted. ",-1)),!e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected?(l(),d("aside",nD,[n("div",oD,[n("div",sD,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("span",iD,"Repository not listed?")):f("v-if",!0),e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("button",{key:1,type:"button",class:"btn btn-outline-ink",onClick:t[3]||(t[3]=a=>e.grantGitHubAccess())},[...t[51]||(t[51]=[y("Manage access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):f("v-if",!0),e.isUpdate||e.detectedType==="gist"||e.githubConnection==="oauth"?(l(),d("a",rD,c(e.isUpdate?"Change connection":"Manage connections")+" \u2192",1)):f("v-if",!0)])]),n("div",aD,[e.error&&e.detectedType!=="gist"&&e.githubConnection==="github-app"?(l(),d("span",lD,"Signing in does not grant access to private repositories. Use Manage access to select this repository, then return here. Organization access may require administrator approval.")):f("v-if",!0),t[52]||(t[52]=n("span",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),y(" Anonymized content is public, even from private repositories.")],-1))])])):f("v-if",!0)])],512),[[J,!e.workspaceOpen&&!e.isUpdate]]),f(" ===== STATE 2: URL provided \u2014 form (left) + preview (right) ===== "),A(n("div",dD,[n("header",uD,[n("div",cD,[n("div",pD,[n("h1",fD,[e.isUpdate?f("v-if",!0):(l(),d("span",hD,"New anonymization")),e.isUpdate?(l(),d("span",mD,"Edit anonymization")):f("v-if",!0)]),A(n("span",{class:P(["type-badge",{"type-repo":e.detectedType==="repo","type-pr":e.detectedType==="pr","type-gist":e.detectedType==="gist"}])},c(e.detectedType==="repo"?"Repository":e.detectedType==="pr"?"Pull request":"Gist"),3),[[J,e.detectedType]])])])]),e.detectedType==="gist"&&e.gistAppRequired?(l(),d("aside",gD,[t[57]||(t[57]=n("p",null,"Reconnect your GitHub account to read this gist. Your draft will be restored when you return.",-1)),n("button",{type:"button",class:"btn btn-ink",onClick:t[4]||(t[4]=a=>e.connectGistApp())},"Connect GitHub App to access gists")])):f("v-if",!0),e.detectedType==="gist"&&e.gistOAuthRequired?(l(),d("aside",vD,[t[58]||(t[58]=n("p",null,"Connect GitHub OAuth to access gists. Your account and existing anonymizations stay the same, and your draft will be restored when you return.",-1)),t[59]||(t[59]=n("p",null,"GitHub's legacy OAuth connection includes write access to private repositories.",-1)),e.githubConnections?.oauthEnabled?(l(),d("button",{key:0,type:"button",class:"btn btn-ink",onClick:t[5]||(t[5]=a=>e.connectGistOAuth())},"Connect GitHub OAuth to access gists")):(l(),d("p",yD,"GitHub OAuth is currently unavailable. Please try again later."))])):f("v-if",!0),n("nav",bD,[n("button",{id:"workspace-settings-tab",role:"tab",type:"button","aria-selected":e.mobilePane==="settings","aria-controls":"workspace-settings",tabindex:e.mobilePane==="settings"?0:-1,onKeydown:t[6]||(t[6]=a=>e.previewTabKeydown(a)),onClick:t[7]||(t[7]=a=>e.selectMobilePane("settings"))},"Settings",40,wD),n("button",{id:"workspace-preview-tab",role:"tab",type:"button","aria-selected":e.mobilePane==="preview","aria-controls":"workspace-preview",tabindex:e.mobilePane==="preview"?0:-1,onKeydown:t[8]||(t[8]=a=>e.previewTabKeydown(a)),onClick:t[9]||(t[9]=a=>e.selectMobilePane("preview"))},"Reviewer preview",40,kD)]),e.detectedType!=="repo"&&!e.details?(l(),d("div",CD,c(e.sourceLoading?"Loading source\u2026":"Choose an accessible source to see its preview."),1)):f("v-if",!0),n("div",ED,[f(" Form column (left) "),n("div",{id:"workspace-settings",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-settings-tab":null,class:"anonymize-form-col overflow-auto"},[A((l(),d("form",ND,[n("div",RD,[n("section",DD,[t[74]||(t[74]=n("h2",{class:"paper-section-eyebrow"},"Source & access",-1)),n("div",AD,[n("div",TD,[t[61]||(t[61]=n("label",{class:"paper-field-label",for:"sourceUrl"},"Source URL",-1)),e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",PD,[!e.isUpdate&&e.detectedType!=="gist"?(l(),d("div",_D,[n("button",{type:"button","aria-pressed":e.githubConnection==="github-app",disabled:e.githubConnection==="github-app",onClick:t[10]||(t[10]=a=>e.chooseGitHubConnection("github-app"))},[...t[60]||(t[60]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),y(),n("span",{class:"sr-only"},"Read-only ",-1),y("GitHub App",-1)])],8,OD),n("button",{type:"button","aria-pressed":e.githubConnection==="oauth",disabled:e.githubConnection==="oauth",onClick:t[11]||(t[11]=a=>e.chooseGitHubConnection("oauth"))},"Legacy OAuth",8,ID)])):f("v-if",!0),e.isUpdate||e.detectedType==="gist"?(l(),d("span",MD,c((e.detectedType==="gist"?e.githubConnections?.gistConnection==="github-app":e.githubConnection==="github-app")?"Read-only GitHub App":"Legacy OAuth"),1)):f("v-if",!0)])):f("v-if",!0)]),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.sourceUrl?.invalid}]),name:"sourceUrl",id:"sourceUrl",onblur:"this.scrollLeft=0",disabled:e.isUpdate&&e.detectedType!=="repo",placeholder:"Paste a GitHub repo or pull request URL"},null,10,VD),[[s,{state:e.viewState,set:a=>{e.sourceUrl=a},value:e.sourceUrl,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.urlSelected()}}]]),A(n("div",qD," Please provide a valid GitHub URL. ",512),[[J,e.anonymize?.sourceUrl?.errors?.github]]),A(n("div",$D," Not accessible. The organization may restrict access. ",512),[[J,e.anonymize?.sourceUrl?.errors?.access]]),A(n("div",LD," Does not exist or is not accessible. ",512),[[J,e.anonymize?.sourceUrl?.errors?.missing]]),A(n("div",UD," Already anonymized. ",512),[[J,e.anonymize?.sourceUrl?.errors?.used]])]),!e.isUpdate&&e.previousConfigurations.length?(l(),d("aside",FD,[t[63]||(t[63]=n("p",{role:"status"},"You have already anonymized this repository. Use the existing configuration to keep its anonymous link and avoid creating another repository.",-1)),e.previousConfigurations.length>1?(l(),d("div",BD,[t[62]||(t[62]=n("label",{class:"paper-field-label",for:"previousConfiguration"},"Previous anonymization",-1)),A(n("select",{id:"previousConfiguration",class:"form-control","onUpdate:modelValue":t[12]||(t[12]=a=>e.previousConfigurationId=a)},[(l(!0),d(B,null,ie(e.previousConfigurations,a=>(l(),d("option",{key:a.repoId,value:a.repoId},c(a.repoId),9,zD))),128))],512),[[gn,e.previousConfigurationId]])])):(l(),d("p",HD,c(e.previousConfigurationId),1)),t[64]||(t[64]=n("p",null,"You can review and update its settings before saving.",-1)),n("div",jD,[n("a",{class:"btn btn-ink",href:e.existingConfigurationUrl()},"Use existing configuration",8,GD),n("button",{type:"button",class:"btn btn-link",onClick:t[13]||(t[13]=a=>e.previousConfigurations=[])},"Create a separate anonymization")])])):f("v-if",!0),e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected?(l(),d("aside",WD,[n("div",KD,[n("div",YD,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"&&!e.details?(l(),d("span",XD,"Repository not listed?")):f("v-if",!0),e.detectedType!=="gist"&&e.githubConnection!=="oauth"&&!e.details?(l(),d("button",{key:1,type:"button",class:"btn btn-outline-ink",onClick:t[14]||(t[14]=a=>e.grantGitHubAccess())},[...t[65]||(t[65]=[y("Manage access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):f("v-if",!0),e.isUpdate||e.detectedType==="gist"||e.githubConnection==="oauth"?(l(),d("a",JD,c(e.isUpdate?"Change connection":"Manage connections")+" \u2192",1)):f("v-if",!0)])]),n("div",QD,[e.error&&e.detectedType!=="gist"&&e.githubConnection==="github-app"?(l(),d("span",ZD,"Signing in does not grant access to private repositories. Use Manage access to select this repository, then return here. Organization access may require administrator approval.")):f("v-if",!0),e.detectedType!=="gist"&&e.githubConnection!=="oauth"&&!e.details?(l(),d("span",xD,"Select repositories on GitHub, then return here.")):f("v-if",!0),t[66]||(t[66]=n("span",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),y(" Selected content will be published, including content from private repositories.")],-1))])])):f("v-if",!0),e.isUpdate&&e.detectedType==="repo"&&e.role==="owner"&&e.accessRepairAllowed&&e.githubConnections?.appEnabled&&e.githubConnection==="github-app"&&e.sourceUrl==="https://github.com/"+e._originalFullName?(l(),d("aside",eA,[t[67]||(t[67]=n("p",null,"If this repository became private or its App installation changed, repair its access here. This keeps the same anonymous URL and published commit.",-1)),n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.repairingGitHubAccess,onClick:t[15]||(t[15]=a=>e.repairGitHubAccess())},"Repair GitHub access",8,tA),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[16]||(t[16]=a=>e.grantGitHubAccess())},"Manage access"),e.accessRepairMessage?(l(),d("p",nA,c(e.accessRepairMessage),1)):f("v-if",!0)])):f("v-if",!0),e.isUpdate&&e.detectedType==="repo"&&e.role==="owner"&&e.sourceUrl==="https://github.com/"+e._originalFullName?(l(),d("aside",oA,[t[68]||(t[68]=n("p",null,"If you deleted and recreated this repository, reconnect it before choosing a branch.",-1)),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[17]||(t[17]=a=>e.reconnectSource())},"Reconnect source repository"),e.reconnectRepositoryId?(l(),d("p",sA,"Source reloaded. Review the branch, commit, and anonymization preview, then save to replace the published snapshot.")):f("v-if",!0)])):f("v-if",!0),e.detectedType==="repo"?(l(),d("div",iA,[n("div",rA,[t[70]||(t[70]=n("label",{class:"paper-field-label",for:"branch"},"Branch",-1)),n("div",aA,[A((l(),d("select",lA,[(l(!0),d(B,null,ie(e.branches,(a,u)=>(l(),d("option",{textContent:c(a?.name),value:a?.name},null,8,dA))),256))])),[[s,{state:e.viewState,set:a=>{e.source.branch=a},value:e.source?.branch,form:"anonymize",options:{}}]]),n("div",uA,[n("button",{class:"btn btn-icon refresh-branches",type:"button",title:"Refresh branches",onClick:t[18]||(t[18]=a=>e.getBranches(!0)),"aria-label":"Refresh branches"},[...t[69]||(t[69]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])])])])]),n("div",cA,[t[71]||(t[71]=n("label",{class:"paper-field-label",for:"commit"},"Commit",-1)),A(n("input",{class:P(["form-control",{"is-invalid":e.anonymize?.commit?.invalid}]),id:"commit",disabled:e.options.update,name:"commit",pattern:"[a-fA-Z0-9]{6,}",required:""},null,10,pA),[[s,{state:e.viewState,set:a=>{e.source.commit=a},value:e.source?.commit,form:"anonymize",options:{}}]]),A(n("div",fA," The commit SHA is not valid. ",512),[[J,e.anonymize?.commit?.errors?.pattern||e.anonymize?.commit?.errors?.required]]),A(n("div",hA," This commit no longer exists in the repository. Click refresh to get the latest. ",512),[[J,e.anonymize?.commit?.errors?.exists]])])])):f("v-if",!0),A(n("div",mA,[A(n("input",gA,null,512),[[s,{state:e.viewState,set:a=>{e.options.update=a},value:e.options?.update,form:"anonymize",options:{}}]]),t[72]||(t[72]=n("label",{class:"form-check-label",for:"update"},"Auto-update from GitHub",-1)),t[73]||(t[73]=n("small",{class:"form-text text-muted"},"Follows the latest version, at most once an hour.",-1))],512),[[J,e.detectedType]])]),A(n("section",vA,[t[100]||(t[100]=n("h2",{class:"paper-section-eyebrow"},"Anonymization",-1)),A(n("div",yA,[t[75]||(t[75]=n("label",{class:"paper-field-label",for:"repoId"},"Anonymized repository ID",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.repoId?.invalid}]),name:"repoId",id:"repoId",disabled:e.isUpdate},null,10,bA),[[s,{state:e.viewState,set:a=>{e.repoId=a},value:e.repoId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",wA,"anonymous.4open.science/r/"+c(e.repoId),1),A(n("div",kA,"ID can only contain letters and numbers.",512),[[J,e.anonymize?.repoId?.errors?.format]]),A(n("div",{class:"invalid-feedback"},c(e.repoId)+" is already used.",513),[[J,e.anonymize?.repoId?.errors?.used]])],512),[[J,e.detectedType==="repo"]]),A(n("div",CA,[t[78]||(t[78]=n("label",{class:"paper-field-label",for:"pullRequestId"},"Anonymized pull request ID",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.pullRequestId?.invalid}]),name:"pullRequestId",id:"pullRequestId",disabled:e.isUpdate},null,10,EA),[[s,{state:e.viewState,set:a=>{e.pullRequestId=a},value:e.pullRequestId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",SA,[t[76]||(t[76]=y("Your share link will be ",-1)),n("code",null,"anonymous.4open.science/pr/"+c(e.pullRequestId),1),t[77]||(t[77]=y(".",-1))]),A(n("div",NA,"ID can only contain letters and numbers.",512),[[J,e.anonymize?.pullRequestId?.errors?.format]]),A(n("div",{class:"invalid-feedback"},c(e.pullRequestId)+" is already used.",513),[[J,e.anonymize?.pullRequestId?.errors?.used]])],512),[[J,e.detectedType==="pr"]]),A(n("div",RA,[t[81]||(t[81]=n("label",{class:"paper-field-label",for:"gistId"},"Anonymized gist ID",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.gistId?.invalid}]),name:"gistId",id:"gistId",disabled:e.isUpdate},null,10,DA),[[s,{state:e.viewState,set:a=>{e.gistId=a},value:e.gistId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",AA,[t[79]||(t[79]=y("Your share link will be ",-1)),n("code",null,"anonymous.4open.science/gist/"+c(e.gistId),1),t[80]||(t[80]=y(".",-1))]),A(n("div",TA,"ID can only contain letters and numbers.",512),[[J,e.anonymize?.gistId?.errors?.format]]),A(n("div",{class:"invalid-feedback"},c(e.gistId)+" is already used.",513),[[J,e.anonymize?.gistId?.errors?.used]])],512),[[J,e.detectedType==="gist"]]),n("div",PA,[t[92]||(t[92]=n("label",{class:"paper-field-label",for:"terms"},"Terms to redact",-1)),A(n("textarea",{class:P(["form-control terms-input",{"is-invalid":e.anonymize?.terms?.invalid}]),id:"terms",name:"terms",rows:Math.min(14,Math.max(4,String(e.terms||"").split(` +Contact: jane.smith@mit.edu`,e.demoTerms="Jane Smith, Smith, MIT CSAIL, jane.smith@mit.edu",e.demoParts=function(){let u=(e.demoTerms||"").split(/[,\n]/).map(h=>h.trim()).filter(Boolean).sort((h,w)=>w.length-h.length),p=h=>h.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(!u.length)return[{text:e.demoText}];let y=new RegExp("("+u.map(p).join("|")+")","gi"),m={},b=0;return(e.demoText||"").split(y).filter(h=>h!=="").map(h=>{let w=u.find(A=>A.toLowerCase()===h.toLowerCase());return w?(m[w.toLowerCase()]||(m[w.toLowerCase()]=++b),{text:String(m[w.toLowerCase()]),redacted:!0,original:h}):{text:h}})},e.demoCount=()=>e.demoParts().filter(u=>u.redacted).length,e.cards=[{key:"repositories",total:0,label:"repositories anonymized"},{key:"users",total:0,label:"researchers"},{key:"pageViews",total:0,label:"page views"},{key:"pullRequests",total:0,label:"pull requests"}],e.statsEmpty=()=>!!e.stat&&e.cards.every(u=>!u.total);function r(){t.get("/api/stat/").then(u=>{e.stat=u.data,e.cards[0].total=u.data.nbRepositories,e.cards[1].total=u.data.nbUsers,e.cards[2].total=u.data.nbPageViews,e.cards[3].total=u.data.nbPullRequests}).catch(()=>{})}r();function a(u){let p={series:u,bars:[],viewW:100,deltaToday:0,pctChange:0,pctAbs:0,isUp:!0};if(!u||u.length<2)return p;let y=new Array(u.length-1);for(let N=1;N=2){let N=y[m-2];N&&(p.pctChange=(p.deltaToday-N)/N*100)}return p.pctAbs=Math.round(Math.abs(p.pctChange)),p.isUp=p.pctChange>=0,p}e.history={repositories:a([]),users:a([]),pageViews:a([]),pullRequests:a([])},t.get("/api/stat/history?days=60").then(u=>{let p=u.data||[];e.history={repositories:a(p.map(y=>y.nbRepositories||0)),users:a(p.map(y=>y.nbUsers||0)),pageViews:a(p.map(y=>y.nbPageViews||0)),pullRequests:a(p.map(y=>y.nbPullRequests||0))}}).catch(()=>{})},bc=function(e,t,o,i,s,r){let a=Tt();e.on("routeLeave",function(){$('[data-toggle="tooltip"]').tooltip("dispose")}),e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),a.timeout(()=>{$('[data-toggle="tooltip"]').tooltip()},250),e.quotaExpanded=!1,e.closeQuota=()=>{e.quotaExpanded=!1,ot(()=>document.querySelector(".dashboard-quota > summary")?.focus())},dn()(document,"click",D=>{e.quotaExpanded&&!D.target.closest?.(".dashboard-quota")&&(e.quotaExpanded=!1)}),e.filtersExpanded=!1,e.projectView="all",e.selectedProject=null,e.projectName="",e.nameSaving=!1,e.nameError="",e.nameMessage="",e.needsAttention=D=>D.status==="error"||D._broken||p(D.status)==="progress"&&D._stale,e.attentionCount=()=>e.dashboardTotals?.attention??e.items.filter(e.needsAttention).length,e.hasProjects=()=>(e.dashboardTotals?.total??e.items.length)>0,e.setProjectView=D=>{e.projectView=D,D==="attention"&&(e.filters.status.error=!0,e.filters.status.progress=!0)},e.idleText=D=>{let oe=Kr(D?.anonymizeDate||D?.lastView)||"";return/ ago$/.test(oe)?"No activity for "+oe.replace(/ ago$/,""):"No activity since "+oe.replace(", "+new Date().getFullYear(),"")},e.projectDetailsId=D=>"project-details-"+encodeURIComponent(D._type+":"+(D._id||D._source||"unknown")),e.showProjectDetails=async D=>{e.selectedProject=D,e.projectName=D.projectName||"",e.nameError="",e.nameMessage="",await ot();let oe=document.getElementById(e.projectDetailsId(D));oe?.focus(),oe?.scrollIntoView?.({block:"nearest"})},e.closeProjectDetails=D=>{e.selectedProject=null,ot(()=>document.querySelector(`[data-project-actions="${encodeURIComponent(D._type+":"+D._id)}"]`)?.focus())},e.saveProjectName=async D=>{if(e.nameSaving||!D._id)return;let oe=e.projectName.trim();if(oe.length>100){e.nameError="Use 100 characters or fewer.";return}e.nameSaving=!0,e.nameError="",e.nameMessage="";try{let x=await t.post("/api/user/project-name",{type:D._type,id:D._id,name:oe});D.projectName=x.data.name,D._label=D.projectName||D._fallbackLabel,e.selectedProject===D&&(e.nameMessage=oe?"Project name saved.":"Default project name restored."),C||(e.dashboardCursor=null,await V(),e.selectedProject===D&&(e.selectedProject=e.items.find(Ae=>Ae._type===D._type&&Ae._id===D._id)||null))}catch{e.selectedProject===D&&(e.nameError="The project name could not be saved. Try again.")}finally{e.nameSaving=!1}},e.copyingId=null,e.copyLink=async D=>{if(!D._viewUrl||e.copyingId)return;let oe=new URL(D._viewUrl,s.location.origin).href;e.copyingId=D._type+":"+D._id;try{await Ea(oe),e.addToast({title:"Link copied",body:"The anonymous link is ready to share."})}catch{e.addToast({title:"Copy this anonymous link",body:oe})}finally{e.copyingId=null}},e.items=[],e.search="",e.loading=!0,e.statusKeyLabels={ready:"Ready",progress:"Preparing",error:"Error",expired:"Expiring / expired",removed:"Removing / removed"};let u=["queue","download","downloaded","preparing","anonymizing"];function p(D){return D==="ready"||D==="error"?D:D==="expired"||D==="expiring"?"expired":D==="removed"||D==="removing"?"removed":(u.indexOf(D)>-1,"progress")}let y=7200*1e3,m="dashboard.filterPrefs",b={typeFilter:"all",filters:{status:{ready:!0,progress:!0,error:!0,expired:!0,removed:!1}},orderBy:"-anonymizeDate"},h=loadFilterPrefs(m)||{};e.typeFilter=h.typeFilter||b.typeFilter,e.filters={status:Object.assign({},b.filters.status,h.filters&&h.filters.status||{})},e.orderBy=h.orderBy||b.orderBy;let w={_name:{label:"Anonymous ID",defaultDesc:!1},_label:{label:"Project",defaultDesc:!1},anonymizeDate:{label:"Anonymize date",defaultDesc:!0},status:{label:"Status",defaultDesc:!1},lastView:{label:"Last view",defaultDesc:!0},pageView:{label:"Views",defaultDesc:!0},"options.expirationDate":{label:"Expiration",defaultDesc:!1}};e.sortFields=w,e.sortField=()=>e.orderBy.replace(/^-/,""),e.sortDesc=()=>e.orderBy.charAt(0)==="-",e.sortLabel=()=>{let D=w[e.sortField()];return D?D.label:"Custom"},e.isSortedBy=D=>e.sortField()===D,e.setSort=(D,oe)=>{typeof oe!="boolean"&&(oe=e.isSortedBy(D)?!e.sortDesc():!!(w[D]&&w[D].defaultDesc)),e.orderBy=(oe?"-":"")+D},e.toggleSortDirection=()=>{e.setSort(e.sortField(),!e.sortDesc())},e.watchGroup(["typeFilter","orderBy"],()=>{saveFilterPrefs(m,{typeFilter:e.typeFilter,filters:e.filters,orderBy:e.orderBy})}),e.watch("filters",()=>{saveFilterPrefs(m,{typeFilter:e.typeFilter,filters:e.filters,orderBy:e.orderBy})},!0),r.load().then(D=>{e.quota=D},console.error);function A(D,oe,x,Ae,be,le){D.pageView||(D.pageView=0),D.lastView||(D.lastView=""),D.options=D.options||{},D.options.terms=(D.options.terms||[]).filter(ke=>ke),D._id=oe||"",D._source=Ae,D._broken=!oe,D._name=oe||Ae||"(unnamed)",D._fallbackLabel=D._type==="gist"?"Gist "+(oe||Ae||"without an ID"):Ae||x||D._name,D._label=D.projectName||D._fallbackLabel,D._editUrl=oe?be:null,D._viewUrl=oe?le:null,D._broken&&(D.status="error",D.statusMessage="incomplete_record"),D._statusKey=p(D.status);let fe=D.anonymizeDate||D.lastView;if(D._stale=D._statusKey==="progress"&&!!fe&&Date.now()-new Date(fe).getTime()>y,D.status==="expired"||D.status==="expiring")D._expiry={kind:"expired",date:D.options.expirationDate},D._expiry.label=Xr(D.options.expirationDate)||void 0;else if(D.status!=="ready")D._expiry={kind:"none"};else if(D.options.expirationMode==="never"||!D.options.expirationDate)D._expiry={kind:"never"};else{D._expiry={kind:"date",date:D.options.expirationDate};let ke=new Date(D.options.expirationDate).getTime()-Date.now();if(ke>0&&ke<=168*3600*1e3){let Te=Math.max(1,Math.round(ke/36e5)),Xe=Math.round(ke/864e5);D._expiry.soon=Te<48?"in "+Te+(Te===1?" hour":" hours"):"in "+Xe+" days"}}return D}function N(D){return t.get(D).then(oe=>oe.data||[],oe=>(console.error(oe),[]))}function R(){return e.loading=!0,i.all([N("/api/user/anonymized_repositories"),N("/api/user/anonymized_pull_requests"),N("/api/user/anonymized_gists")]).then(D=>{let oe=D[0],x=D[1],Ae=D[2],be=[];oe.forEach(le=>{le._type="repo";let fe=le.source||{};be.push(A(le,le.repoId,le.repoId,fe.fullName,"/anonymize/"+le.repoId,"/r/"+le.repoId+"/"))}),x.forEach(le=>{le._type="pr";let fe=le.source||{};be.push(A(le,le.pullRequestId,le.pullRequestId,fe.repositoryFullName?fe.repositoryFullName+"#"+fe.pullRequestId:void 0,"/pull-request-anonymize/"+le.pullRequestId,"/pr/"+le.pullRequestId+"/"))}),Ae.forEach(le=>{le._type="gist";let fe=le.source||{};be.push(A(le,le.gistId,le.gistId,fe.gistId,"/gist-anonymize/"+le.gistId,"/gist/"+le.gistId+"/"))}),e.items=be,e.removedCount=be.filter(le=>le._statusKey==="removed").length,e.loading=!1})}let v=0,C=!1;e.dashboardCursor=null,e.dashboardError="";function I(D){let oe=D.source||{};return D._type==="repo"?A(D,D.repoId,D.repoId,oe.fullName,"/anonymize/"+D.repoId,"/r/"+D.repoId+"/"):D._type==="pr"?A(D,D.pullRequestId,D.pullRequestId,oe.repositoryFullName?oe.repositoryFullName+"#"+oe.pullRequestId:void 0,"/pull-request-anonymize/"+D.pullRequestId,"/pr/"+D.pullRequestId+"/"):A(D,D.gistId,D.gistId,oe.gistId,"/gist-anonymize/"+D.gistId,"/gist/"+D.gistId+"/")}function V(D=!1){if(C)return R();let oe=++v;return e.loading=!D,e.loadingMore=D,e.dashboardError="",t.get("/api/user/dashboard",{params:{q:e.search,type:e.typeFilter,sort:e.orderBy,statuses:Object.keys(e.filters.status).filter(x=>e.filters.status[x]!==!1).join(",")||"none",attention:String(e.projectView==="attention"),cursor:D?e.dashboardCursor:void 0}}).then(x=>{if(oe===v){if(!Array.isArray(x.data?.items))return C=!0,R();e.items=(D?e.items:[]).concat(x.data.items.map(I)),e.dashboardCursor=x.data.cursor,e.dashboardTotals=x.data,D||se()}},x=>{if(oe===v){if(x.status===404)return C=!0,R();e.dashboardError="Projects could not be loaded. Please try again."}}).finally(()=>{oe===v&&(e.loading=!1,e.loadingMore=!1)})}e.loadMoreProjects=()=>V(!0);let q;e.watchGroup(["search","typeFilter","orderBy","projectView"],()=>{C||(q&&a.timeout.cancel(q),q=a.timeout(()=>V(),150))},!1),e.watch("filters",()=>{C||V()},!0,!1),e.on("dispose",()=>{v++}),V(),e.openItem=(D,oe)=>{if(!D._viewUrl)return;let x=oe&&oe.target;x&&x.closest&&x.closest("a, button, .dropdown, input")||(s.location.href=D._viewUrl)},e.hiddenStatusCount=()=>Object.keys(e.filters.status).filter(D=>e.filters.status[D]===!1).length,e.hasHiddenStatus=()=>e.hiddenStatusCount()>0;let W=()=>Object.keys(e.statusKeyLabels);e.onlyRemovedShown=()=>W().every(D=>D==="removed"==(e.filters.status[D]!==!1)),e.isActiveDefault=()=>W().every(D=>D==="removed"==(e.filters.status[D]===!1)),e.statusView=()=>e.projectView==="attention"?"attention":e.onlyRemovedShown()?"removed":e.filters.status.removed===!1?"active":"custom",e.setStatusView=D=>{if(D==="attention")return e.setProjectView("attention");e.projectView="all",W().forEach(oe=>{e.filters.status[oe]=D==="removed"?oe==="removed":oe!=="removed"})},e.statusChipKeys=()=>{let D=e.statusView();return D==="removed"?[]:W().filter(oe=>e.filters.status[oe]===!1&&!(oe==="removed"&&D!=="custom"))},e.removedCount=null;function se(){if(C){e.removedCount=e.items.filter(oe=>oe._statusKey==="removed").length;return}let D=e.dashboardTotals;!D||e.projectView!=="all"||e.search.trim()||e.typeFilter!=="all"||(e.isActiveDefault()?e.removedCount=Math.max(0,D.total-D.filtered):e.onlyRemovedShown()&&(e.removedCount=D.filtered))}e.showViewTabs=()=>e.statusView()!=="active"||e.attentionCount()>0||e.removedCount>0||e.removedCount==null&&!!e.dashboardTotals&&e.dashboardTotals.total>e.dashboardTotals.filtered,e.hasActiveFilters=()=>e.projectView!=="all"||e.typeFilter!=="all"||e.search.trim().length>0||Object.keys(e.filters.status).some(D=>e.filters.status[D]===!1),e.showClearFilters=()=>e.search.trim().length>0||e.typeFilter!=="all"||e.statusChipKeys().length>0,e.isPlainView=()=>!e.showClearFilters(),e.clearFilters=()=>{let D=e.statusView();e.typeFilter="all",e.search="",e.setStatusView(D==="removed"?"removed":"active")};function Q(D,oe,x,Ae){t.get("/api/repo/"+D).then(async be=>{let le=Ae!==void 0&&Ae!==be.data.status;for(let fe of e.items)if(fe._type==="repo"&&fe.repoId==D){le=le||fe.status!==be.data.status;let ke=e.needsAttention(fe);fe.status=be.data.status,fe.statusMessage=be.data.statusMessage,fe._statusKey=p(fe.status),fe._statusKey!=="progress"&&(fe._stale=!1);let Te=e.needsAttention(fe);e.dashboardTotals&&ke!==Te&&(e.dashboardTotals.attention=Math.max(0,e.dashboardTotals.attention+(Te?1:-1)));break}if(le&&!C){e.dashboardCursor=null;let fe=e.selectedProject;await V(),fe&&e.selectedProject===fe&&(e.selectedProject=e.items.find(ke=>ke._type===fe._type&&ke._id===fe._id)||null)}if(be.data.status=="ready"||be.data.status=="error"||be.data.status=="removed"||be.data.status=="expired"){oe(be.data);return}a.timeout(()=>Q(D,oe,x,be.data.status),2500)},x)}let ne=D=>D==="repo"?"repository":D==="gist"?"gist":"pull request",Ee=D=>D==="repo"?"/api/repo":D==="gist"?"/api/gist":"/api/pr";e.removeItem=D=>{let oe=ne(D._type);if(confirm(`Are you sure that you want to remove the ${oe} ${D._id}?`)){let x=nt({title:`Removing ${D._id}...`,date:new Date,body:`The ${oe} ${D._id} is going to be removed.`});e.addToast(x);let Ae=`${Ee(D._type)}/${D._id}`;t.delete(Ae).then(()=>{D._type==="repo"?Q(D._id,()=>{x.title=`${D._id} is removed.`,x.body=`The ${oe} ${D._id} is removed.`},void 0,D.status):(x.title=`${D._id} is removed.`,x.body=`The ${oe} ${D._id} is removed.`,V())},be=>{x.title=`Error during the removal of ${D._id}.`,x.body=be.body,V()})}},e.refreshItem=D=>{let oe=ne(D._type),x=nt({title:`Refreshing ${D._id}...`,date:new Date,body:`The ${oe} ${D._id} is going to be refreshed.`});e.addToast(x);let Ae=le=>{x.title=`Error during the refresh of ${D._id}.`,x.body=le.data?.error||le.body||"The refresh could not be completed. Please try again.",V()},be=`${Ee(D._type)}/${D._id}/refresh`;t.post(be).then(()=>{D._type==="repo"?Q(D._id,le=>{if(le.status!=="ready"){Ae({body:le.statusMessage||`The repository is ${le.status}.`});return}x.title=`${D._id} is refreshed.`,x.body=`The ${oe} ${D._id} is refreshed.`},Ae,D.status):(x.title=`${D._id} is refreshed.`,x.body=`The ${oe} ${D._id} is refreshed.`,V())},Ae)},e.extendItem=D=>{let oe=ne(D._type),x=nt({title:`Extending ${D._id}...`,date:new Date,body:`The expiration of ${oe} ${D._id} is being extended.`});e.addToast(x);let Ae=`${Ee(D._type)}/${D._id}/extend`;t.post(Ae).then(be=>{let le=be?.data?.expirationDate?` until ${new Date(be.data.expirationDate).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}`:"";D._type==="repo"?Q(D._id,()=>{x.title=`${D._id} is extended.`,x.body=`${oe} ${D._id} is extended${le}.`},void 0,D.status):(x.title=`${D._id} is extended.`,x.body=`${oe} ${D._id} is extended${le}.`,V())},be=>{x.title=`Error during the extension of ${D._id}.`;let le=be.data&&be.data.error;x.body=le||be.body,le&&Object.prototype.hasOwnProperty.call(lo.ERRORS,le)&&(x.body=lo.ERRORS[le]),V()})},e.itemFilter=D=>{if(e.projectView==="attention"&&!e.needsAttention(D)||e.typeFilter!=="all"&&D._type!==e.typeFilter||e.filters.status[D._statusKey]===!1)return!1;let oe=e.search.trim().toLowerCase();return!!(oe.length==0||D._label&&String(D._label).toLowerCase().indexOf(oe)>-1||D._source&&String(D._source).toLowerCase().indexOf(oe)>-1||D._id&&String(D._id).toLowerCase().indexOf(oe)>-1||D.conference&&String(D.conference).toLowerCase().indexOf(oe)>-1)}};var wc=function(e,t,o){let i=Tt();e.repoId=o.repoId,e.reviewUrl=window.location.origin+"/r/"+encodeURIComponent(o.repoId)+"/",e.repo=null,e.progress=0,e.rateLimitResetAt=0,e.rateLimitCountdown="",e.shareUrl=(window.location?.origin||"")+"/r/"+encodeURIComponent(e.repoId)+"/",e.copied=!1;let s=null;e.copyShareUrl=async()=>{try{await Ea(e.shareUrl),e.copied=!0,s&&i.timeout.cancel(s),s=i.timeout(()=>{e.copied=!1},2e3)}catch{e.addToast?.({title:"Copy this anonymous link",body:e.shareUrl})}},e.selectShareUrl=m=>{let b=window.getSelection?.();if(!b||!m?.target)return;let h=document.createRange();h.selectNodeContents(m.target),b.removeAllRanges(),b.addRange(h)};var r=null;let a=null,u=!1;function p(m){e.rateLimitResetAt=m,r&&i.interval.cancel(r);function b(){var h=Math.max(0,Math.ceil((m-Date.now())/1e3));if(h<=0)e.rateLimitCountdown="",e.rateLimitResetAt=0,i.interval.cancel(r),r=null;else{var w=Math.floor(h/60),A=h%60;e.rateLimitCountdown=w>0?w+"m "+A+"s":A+"s"}}b(),r=i.interval(b,1e3)}e.on("dispose",function(){u=!0,r&&i.interval.cancel(r),a&&i.timeout.cancel(a)});function y(m){if(!m)return m;var b=m.match(/^rate_limited:(\d+)$/);return b?(p(parseInt(b[1],10)),null):(e.rateLimitResetAt=0,m)}e.getStatus=()=>{u||t.get("/api/repo/"+e.repoId,{repoId:e.repoId,repoUrl:e.repoUrl}).then(m=>{if(!u){e.repo=m.data,m.data.rateLimitResetAt?p(m.data.rateLimitResetAt):e.repo.statusMessage=y(e.repo.statusMessage),e.repo.status=="ready"?e.progress=100:e.repo.status=="queue"?e.progress=10:e.repo.status=="downloaded"?e.progress=50:e.repo.status=="download"||e.repo.status=="preparing"?e.progress=25:e.repo.status=="anonymizing"&&(e.progress=75);var b=!["ready","removed","expired"].includes(e.repo.status);e.repo.status=="error"&&!e.rateLimitResetAt&&(b=!1),b&&(a=i.timeout(e.getStatus,2e3))}},m=>{e.error=m.data.error})},e.getStatus()},Hi=function(e,t,o,i,s,r,a){pc(),e.renderRedacted=Oi,e.sourceUrl="",e.workspaceOpen=!1,e.sourceUrlError="",e.previewStatus="idle",e.sourceLoading=!1,e.mobilePane="settings";let u=window.matchMedia?.("(max-width: 767px)");e.mobileWorkspace=!!u?.matches,u?.addEventListener&&dn()(u,"change",k=>{e.mobileWorkspace=k.matches}),e.selectMobilePane=k=>{e.mobilePane=k};let p=0,y=!1,m=new Set,b=(k,_=!1)=>!y&&k.generation===p&&k.url===e.sourceUrl.trim()&&k.connection===e.githubConnection&&(!_||k.branch===e.source.branch),h=()=>{let k={generation:p,url:e.sourceUrl.trim(),connection:e.githubConnection,branch:e.source.branch};return m.add(k),e.sourceLoading=!0,k},w=k=>{m.delete(k),y||(e.sourceLoading=[...m].some(_=>b(_)))};e.on("dispose",()=>{y=!0,p++});let A=null,N=k=>k.gistId&&!k.repo?"gist:"+k.gistId.toLowerCase():(k.owner+"/"+k.repo).toLowerCase()+(k.pullRequestId?"/pull/"+k.pullRequestId:""),R=Wr(e,["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"],"anonymize:"+(s.path?.()||"")),v=null,C=null,I=null;e.hostingReview=!1,e.previewExpanded=!1,e.taskValidationError="",e.editRepository=()=>{e.mobilePane="settings",e.previewExpanded=!1,ot(()=>document.querySelector(".anonymize-fields .is-invalid")?.focus())},e.submitRepository=k=>{if(e.taskValidationError="",!(e.sourceLoading||e.billingBusy||e.hostingSaving||e.billingPending)){if(ze()||e.anonymize?.invalid||e.sourceUrlError){e.taskValidationError="Check the highlighted fields before continuing.",e.editRepository();return}return e.hostingNeedsPayment()?e.checkoutRepository(Ni(e.hostingChoice())?e.hostingChoice():""):e.anonymizeRepo(k)}},e.hostingPayment=!1,e.hostingAlternatives=!1,e.hostingPrice=k=>k.amount==null?"Price shown at checkout":new Intl.NumberFormat(void 0,{style:"currency",currency:k.currency,minimumFractionDigits:0,maximumFractionDigits:2}).format(k.amount/100)+(k.interval==="year"?" billed annually":" billed monthly"),e.hostingPlan="",e.hostingSaving=!1,e.selectedHostingPlan=()=>e.authorPlans().find(k=>k.id===e.hostingPlan)||e.hostingSubscriptionPlan?.();let V=()=>t.get("/api/user/quota").then(k=>{e.hostingQuota=k.data});Di(e,t,async()=>{await V(),e.hostingQuotaBlocked=!1},{confirmedMessage:"Hosting status refreshed. Your draft is ready to continue."}),V().catch(()=>{}),e.authorPlans=()=>(e.billing?.plans||[]).filter(k=>["author_monthly","author_annual"].includes(k.id)),e.conferenceHosting=()=>!!(e.conference&&e.conference_data?.hosting),e.hasAuthorHosting=()=>["author_monthly","author_annual"].includes(e.billing?.allowance?.plan),e.hostingNeedsPayment=()=>!e.billing?.enabled||e.detectedType!=="repo"||e.hasAuthorHosting()||e.isUpdate&&e.role!=="owner"?!1:!!(e.options?.expirationMode==="never"&&!e._existingNever&&!e.repositoryGrants("repo_never").length||!e.conferenceHosting()&&e.hostingQuotaBlocked),e.repositoryGrants=k=>(e.billing?.grants||[]).filter(_=>_.planId===k&&_.scope===`repo:${e.repoId}`&&["active","paid","past_due"].includes(_.status)&&new Date(_.until).getTime()>Date.now()),e.repositoryAddonPlans=()=>(e.billing?.plans||[]).filter(k=>Ni(k.id)&&(["repo_extend","repo_pack"].includes(k.id)||!e.repositoryGrants(k.id).length)),e.hostingOneTimePlans=()=>{let k=_=>_.map(U=>(e.billing?.plans||[]).find(j=>j.id===U&&!e.repositoryGrants(U).length)).filter(Boolean);return e.options?.expirationMode==="never"&&!e._existingNever&&!e.repositoryGrants("repo_never").length?k(["repo_never"]):e.hostingQuotaBlocked&&!e.conferenceHosting()?k(["repo_slot","repo_pack"]):[]},e.hostingOneTime=()=>e.hostingOneTimePlans()[0],e.neverExpireTag=()=>{if(e.hasAuthorHosting())return"Included in your subscription";if(e.repositoryGrants("repo_never").length)return"Paid for this repository";let k=(e.billing?.plans||[]).find(_=>_.id==="repo_never");return k?.amount!=null?`${e.billingAmount(k)} once, or with a subscription`:"Subscription or one-time add-on"},e.hostingCycle="author_annual",e.hostingSubscriptionPlan=()=>e.authorPlans().find(k=>k.id===e.hostingCycle)||e.authorPlans().find(k=>k.interval==="year")||e.authorPlans()[0],e.hostingAnnualSavings=()=>{let k=e.authorPlans().find(U=>U.interval==="month")?.amount,_=e.authorPlans().find(U=>U.interval==="year")?.amount;return k&&_&&_e.hostingOneTimePlans().concat(e.authorPlans().length?[e.hostingSubscriptionPlan()]:[]),e.hostingOptionName=k=>({repo_slot:"Add this repository",repo_pack:"Paper pack",repo_never:"Never expire",author_annual:"Author subscription",author_monthly:"Author subscription"})[k.id]||k.name,e.hostingOptionBlurb=k=>({repo_slot:"Hosted outside your free repositories. Refresh it by hand.",repo_pack:"Adds automatic updates for 180 days and keeps the link online for a year.",repo_never:"This link never expires. No subscription."})[k.id]||`${k.repositories} repositories, ${e.billingBytes(k.storage)}, automatic updates and links that never expire.`,e.hostingChoice=()=>{let k=e.hostingOneTimePlans();return k.some(_=>_.id===e.hostingPlan)||e.authorPlans().some(_=>_.id===e.hostingPlan)?e.hostingPlan:k[0]?.id||e.hostingSubscriptionPlan()?.id||""},e.checkoutRepository=async(k="")=>{if(!(e.hostingSaving||e.billingBusy||!e.billing?.csrf||e.sourceLoading)){e.hostingSaving=!0,e.billingError="";try{let _=R.checkpoint(),U=JSON.stringify(_);(!C||U!==I)&&(C=(await t.post("/api/billing/draft",{path:s.path(),values:_},{headers:{"x-csrf-token":e.billing.csrf}})).data.id,I=U);let j=e.authorPlans().find(ue=>ue.id===e.hostingPlan)||e.hostingSubscriptionPlan();if(!k&&!j)throw new Error("No author plan available");await e.checkout(k||j.id,k?e.repoId:"",{draftId:C})}catch{e.billingError="Your draft could not be saved for checkout. Your form is unchanged. Please try again."}finally{e.hostingSaving=!1}}},e.useDatedHosting=()=>{e.options.expirationMode="remove"},e.discardDraft=async()=>{R.discard(),e.workspaceOpen=!!e.sourceUrl,e.error=null,e.sourceUrl?await e.urlSelected(!0):(p++,e.sourceLoading=!1,e.detectedType=null,e.details=null,e.sourceUrlError="",te.cancel(),ae.cancel(),Re.cancel(),e.previewStatus="idle")},e.githubConnection=void 0,e.githubConnections=null,e.gistOAuthRequired=!1,e.gistAppRequired=!1;let q=()=>{let k={};for(let _ of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])k[_]=e[_];sessionStorage.setItem("github-access-draft",JSON.stringify({path:s.path(),savedAt:Date.now(),draft:k}))};e.connectGistApp=()=>{q(),window.location.href="/github/app/login?returnTo="+encodeURIComponent(s.path())},e.connectGistOAuth=()=>{q(),window.location.href="/github/login?returnTo="+encodeURIComponent(s.path())},e.grantGitHubAccess=()=>{q();let k=s.path(),_=Ae(e.sourceUrl)||"",U=e.githubConnections?.appConnected?"/github/app/install":"/github/app/login";window.location.href=U+"?returnTo="+encodeURIComponent(k)+"&repository="+encodeURIComponent(_)+"&install=1"},e.chooseGitHubConnection=async k=>{e.githubConnection=k,e.readme="",e.sourceUrl&&await le()},e.detectedType=null,e.repoId="",e.pullRequestId="",e.gistId="",e.terms="",e.defaultTerms="",e.branches=[],e.source={branch:"",commit:""},e.options={expirationMode:"remove",expirationDate:new Date,update:!1,image:!0,pdf:!0,notebook:!0,link:!0,body:!0,title:!0,origin:!1,diff:!0,content:!0,comments:!0,username:!0,date:!0};function W(){let k=new Date;return k.setMonth(k.getMonth()+6),k}e.options.expirationDate=W();function se(k){let _=k.getFullYear(),U=String(k.getMonth()+1).padStart(2,"0"),j=String(k.getDate()).padStart(2,"0");return`${_}-${U}-${j}`}e.minExpirationDate=se(new Date);let Q=()=>{let k=new Date,_=new Date(k);if(_.setFullYear(_.getFullYear()+1),e.billing?.enabled&&e.detectedType==="repo"&&!e.hasAuthorHosting()){_=new Date(k),_.setMonth(_.getMonth()+(e.billing.freeExpirationMonths||5));for(let ue of e.repositoryGrants("repo_extend"))new Date(ue.until)>_&&(_=new Date(ue.until));e.conference_data?.endDate&&new Date(e.conference_data.endDate)>_&&(_=new Date(e.conference_data.endDate)),e._savedExpirationDate&&e._savedExpirationDate>_&&(_=new Date(e._savedExpirationDate));let U=e.options?.expirationDate,j=e._savedExpirationDate&&U instanceof Date&&U.getTime()===e._savedExpirationDate.getTime();U instanceof Date&&U>_&&!j&&(e.options.expirationDate=new Date(_))}e.maxExpirationDate=se(_)};Q(),e.watch(()=>[e.billing,e.repoId,e.conference_data,e.isUpdate,e._savedExpirationDate,e.options?.expirationMode,e.detectedType],Q,!0,!1),e.anonymize_readme="",e.readme="",e.html_readme="",e.isUpdate=!1,e.userRepos=[],e.userReposStatus="idle",e.userRepoFilter="",e.loadUserRepos=(k=!1)=>{e.userReposStatus!=="loading"&&(e.userReposStatus="loading",t.get("/api/user/all_repositories",k?{params:{force:"1"}}:{}).then(_=>{if(y)return;let U=Array.isArray(_.data)?_.data.filter(j=>j&&j.fullName):[];e.userRepos=U.sort((j,ue)=>j.fullName.localeCompare(ue.fullName,void 0,{sensitivity:"base"})),e.userReposStatus="ready"},()=>{y||(e.userReposStatus="error")}))},e.filteredUserRepos=()=>{let k=String(e.userRepoFilter||"").trim().toLowerCase(),_=e.userRepos||[];return k?_.filter(U=>U.fullName.toLowerCase().includes(k)):_},e.selectUserRepo=k=>{if(k?.fullName)return e.sourceUrl="https://github.com/"+k.fullName,e.urlSelected()},!i.repoId&&!i.pullRequestId&&!i.gistId&&Promise.resolve().then(()=>{y||e.loadUserRepos()}),e.previousConfigurations=[],e.previousConfigurationId="";let ne,Ee=k=>String(k||"").replace(/\/$/,"").replace(/\.git$/i,"").toLowerCase();async function D(){if(e.isUpdate||i.repoId||i.pullRequestId||i.gistId)return;let k={generation:p,url:e.sourceUrl.trim(),connection:e.githubConnection};try{ne||(ne=t.get("/api/user/anonymized_repositories").then(j=>j.data));let _=await ne;if(!b(k))return;let U=Ee(Ae(k.url));e.previousConfigurations=_.filter(j=>j.repoId&&j.options&&Ee(j.source?.fullName)===U).sort((j,ue)=>(Date.parse(ue.anonymizeDate)||0)-(Date.parse(j.anonymizeDate)||0)),e.previousConfigurationId=e.previousConfigurations[0]?.repoId||""}catch{ne=void 0}}e.sourceSummary=()=>{let k=String(e.sourceUrl||""),_=/github\.com\/([^/\s]+\/[^/\s]+)\/pull\/(\d+)/i.exec(k);return _?_[1]+" \xB7 PR #"+_[2]:(_=/gist\.github\.com\/([^/\s]+)\/([0-9a-f]{8,})/i.exec(k),_?_[1]+" \xB7 gist "+(_[2].length>12?_[2].slice(0,7)+"\u2026"+_[2].slice(-4):_[2]):"")},e.previewId=()=>e.detectedType==="pr"?e.pullRequestId:e.detectedType==="gist"?e.gistId:e.repoId,e.previewPath=()=>{let k=e.previewId();return k?(e.detectedType==="pr"?"/pr/":e.detectedType==="gist"?"/gist/":"/r/")+encodeURIComponent(k)+"/":""},e.previewUrl=()=>{let k=e.previewPath();return k?"anonymous.4open.science"+k.replace(/\/$/,""):""},e.previewRedactions=()=>{let k=j=>typeof j=="string"?(j.match(uo)||[]).length:0;if(e.detectedType==="repo")return k(String(e.html_readme||"").replace(/<[^>]*>/g," "));let _=e.detectedType==="pr"?G:pe,U=0;return _.forEach(j=>{U+=k(j)}),U},e.previewTree=()=>{if(!e.preserve.commit||!We)return[];let k=We.dirs.get("");if(!k)return[];let _=k.files.find(ue=>/^readme(\.|$)/i.test(ue)),U=k.dirs.slice(0,9).map(ue=>({name:ue,dir:!0})),j=[...k.files].sort((ue,we)=>ue.localeCompare(we,void 0,{sensitivity:"base"})).slice(0,Math.max(3,14-U.length)).map(ue=>({name:ue,dir:!1,readme:ue===_}));return _&&!j.some(ue=>ue.readme)&&j.push({name:_,dir:!1,readme:!0}),[...U,...j]},e.existingConfigurationUrl=()=>{let k=e.previousConfigurations.find(_=>_.repoId===e.previousConfigurationId);return k?"/anonymize/"+encodeURIComponent(k.repoId):null};function oe(k){t.get("/api/user/default").then(_=>{let U=_.data;U.terms&&(e.defaultTerms=U.terms.join(` +`)),e.options=Object.assign({},e.options,U.options),e.options.expirationDate=U.options&&U.options.expirationDate?new Date(U.options.expirationDate):W(),!i.repoId&&!i.pullRequestId&&!i.gistId&&!e.anonymize?.terms?.dirty&&(e.terms=e.defaultTerms),k&&k()})}function x(k,_,U){e.anonymize&&e.anonymize[k]&&e.anonymize[k].setValidity(_,U)}function Ae(k){try{let _=parseGithubUrl(k);if(_&&_.owner&&_.repo)return _.owner+"/"+_.repo}catch{}return null}e.accessRepairAllowed=!1,e.repairingGitHubAccess=!1,e.accessRepairMessage="",e.repairGitHubAccess=async()=>{if(!e.accessRepairAllowed||e.repairingGitHubAccess||!e.githubConnections?.appEnabled||!i.repoId||e.role!=="owner"||e.githubConnection!=="github-app"||Ae(e.sourceUrl)!==e._originalFullName)return;e.repairingGitHubAccess=!0,e.accessRepairMessage="";let k=h();try{let _=await t.get("/github/connections");if(e.githubConnections=_.data,!_.data.appEnabled)return;let U=await t.post("/github/connections/migrate",{type:"repository",id:i.repoId,connection:"github-app"},{headers:{"X-CSRF-Token":_.data.csrf}});if(!b(k))return;e.error=null,U.data.fullName&&(e._originalFullName=U.data.fullName,e.source.fullName=U.data.fullName,e.sourceUrl="https://github.com/"+U.data.fullName),e.accessRepairMessage="GitHub access repaired. Your anonymous URL and published commit are unchanged.",await e.urlSelected(!0)}catch{b(k)&&(e.accessRepairMessage="Unable to repair GitHub access. Check the App's repository permissions in Manage access, then retry. Your published snapshot has not been replaced.")}finally{e.repairingGitHubAccess=!1,w(k)}},e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,e.reconnectSource=async()=>{if(confirm("Reconnect to the repository currently at this GitHub URL? Review its branch and commit before saving. Saving will replace the published snapshot.")){e.reconnectingSource=!0,e.reconnectRepositoryId=void 0,e.source.commit="",e.source.branch="",e.readme="",e.branches=[];try{await ke()}catch{}}};function be(){return e.reconnectingSource||!e.isUpdate||!e._originalRepositoryID?void 0:Ae(e.sourceUrl)===e._originalFullName?e._originalRepositoryID:void 0}async function le(){e._preservingDraft=!0;try{await e.urlSelected(!0)}finally{e._preservingDraft=!1}}async function fe(){let k=new URLSearchParams(window.location.search).get("billingDraft");if(k){R.restore();try{let U=(await t.get("/api/billing/draft/"+encodeURIComponent(k))).data;if(U.path!==s.path())throw new Error("Wrong task");v=U.values.conference||null;for(let j of["sourceUrl","terms","repoId","source","options","conference","githubConnection"])Object.prototype.hasOwnProperty.call(U.values,j)&&(e[j]=U.values[j]);return e.options?.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate)),C=U.id,I=JSON.stringify(R.checkpoint()),e.draftRestored=!0,e.hostingReview=!0,e.sourceUrl&&await le(),s.replace?.(s.path()),!0}catch{e.billingError="The checkout draft could not be restored. Retry by reloading this page; any local draft is still available."}}let _;try{_=JSON.parse(sessionStorage.getItem("github-access-draft")||"null")}catch{return!1}if(!_||_.path!==s.path()||Date.now()-_.savedAt>=30*6e4)return R.restore()?(e.sourceUrl&&await le(),!0):!1;R.restore();for(let U of["sourceUrl","terms","repoId","pullRequestId","gistId","source","options","conference","githubConnection"])Object.prototype.hasOwnProperty.call(_.draft,U)&&(e[U]=_.draft[U]);return e.options.expirationDate&&(e.options.expirationDate=new Date(e.options.expirationDate)),await le(),sessionStorage.removeItem("github-access-draft"),!0}oe(()=>{!i.repoId&&!i.pullRequestId&&!i.gistId&&a(fe,0),i.repoId&&i.repoId!=""&&(e.isUpdate=!0,e.detectedType="repo",e.repoId=i.repoId,t.get("/api/repo/"+e.repoId).then(async k=>{e.accessRepairAllowed=!["removed","archived","preparing","queue","download","removing","expiring"].includes(k.data.status),e.githubConnection=k.data.connection||"oauth",e.sourceUrl="https://github.com/"+k.data.source.fullName,e._originalFullName=k.data.source.fullName,e.terms=k.data.options.terms.filter(_=>_).join(` +`),e.source=k.data.source,e.role=k.data.role||"owner",e._existingNever=k.data.options.expirationMode==="never",e._savedExpirationDate=k.data.options.expirationDate?new Date(k.data.options.expirationDate):null,e.coauthors=k.data.coauthors||[],e._originalBranch=k.data.source.branch,e.options=Object.assign({},e.options,k.data.options),e.conference=k.data.conference,e._originalConference=k.data.conference,e.repositoryID=k.data.source.repositoryID,e._originalRepositoryID=k.data.source.repositoryID,k.data.options.expirationDate&&(e.options.expirationDate=new Date(k.data.options.expirationDate)),A=N(parseGithubUrl(e.sourceUrl)),!await fe()&&(await Promise.all([ke(),Te()]),J())},()=>{s.url("/404")})),i.pullRequestId&&i.pullRequestId!=""&&(e.isUpdate=!0,e.detectedType="pr",e.pullRequestId=i.pullRequestId,t.get("/api/pr/"+e.pullRequestId).then(async k=>{if(e.githubConnection=k.data.connection||"oauth",e.sourceUrl="https://github.com/"+k.data.source.repositoryFullName+"/pull/"+k.data.source.pullRequestId,e.terms=k.data.options.terms.filter(_=>_).join(` +`),e.source=k.data.source,e.options=Object.assign({},e.options,k.data.options),e.conference=k.data.conference,e._originalConference=k.data.conference,k.data.options.expirationDate&&(e.options.expirationDate=new Date(k.data.options.expirationDate)),A=N(parseGithubUrl(e.sourceUrl)),!await fe())try{await Z()}catch{}},()=>{s.url("/404")})),i.gistId&&i.gistId!=""&&(e.isUpdate=!0,e.detectedType="gist",e.gistId=i.gistId,t.get("/api/gist/"+e.gistId).then(async k=>{e.sourceUrl="https://gist.github.com/"+k.data.source.gistId,e.terms=k.data.options.terms.filter(_=>_).join(` +`),e.source=k.data.source,e.options=Object.assign({},e.options,k.data.options),e.conference=k.data.conference,e._originalConference=k.data.conference,k.data.options.expirationDate&&(e.options.expirationDate=new Date(k.data.options.expirationDate)),A=N(parseGithubUrl(e.sourceUrl)),!await fe()&&await de()},()=>{s.url("/404")}))}),t.get("/github/connections").then(k=>{e.githubConnections=k.data,!i.repoId&&!i.pullRequestId&&!i.gistId&&e.githubConnection===void 0&&k.data.appEnabled&&k.data.appConnected&&(e.githubConnection="github-app",e.sourceUrl&&e.workspaceOpen&&le())}).catch(()=>{}),e.urlSelected=async(k=!1)=>{let _=++p;e.previousConfigurations=[],e.previousConfigurationId="";let U;try{U=parseGithubUrl(e.sourceUrl.trim())}catch{e.sourceLoading=!1,te.cancel(),ae.cancel(),Re.cancel(),e.previewStatus="idle",e.sourceUrlError=e.sourceUrl?"Please provide a valid GitHub URL.":"",x("sourceUrl","github",!1);return}let j=N(U),ue=k||A===j;A=j,e.sourceUrlError="",x("sourceUrl","github",!0);let we=document.activeElement?.id==="sourceUrl-landing";e.workspaceOpen=!0,setTimeout(()=>{let Ze=window.document.getElementById("sourceUrl");if(Ze){try{Ze.setSelectionRange(0,0)}catch{}Ze.scrollLeft=0}},50),we&&a(()=>document.getElementById("sourceUrl")?.focus(),0),e.reconnectingSource=!1,e.reconnectRepositoryId=void 0,!ue&&!e.isUpdate&&(e.repoId="",e.pullRequestId="",e.gistId=""),e.details=null,e.branches=[],ue||(e.source={type:"GitHubStream",branch:"",commit:""}),te.cancel(),ae.cancel(),Re.cancel(),G.clear(),pe.clear(),e.previewStatus="idle",e.anonymize_readme="",e.readme="",e.html_readme="",e.detectedType=null,e.gistOAuthRequired=!1,e.gistAppRequired=!1,e._preservingDraft=ue;try{U.gistId&&!U.repo?(e.detectedType="gist",e.source={gistId:U.gistId},await de()):U.pullRequestId?(e.detectedType="pr",e.source={repositoryFullName:U.owner+"/"+U.repo,pullRequestId:U.pullRequestId},await Z()):(e.detectedType="repo",D(),await Promise.all([ke(),Te()]),J())}catch{}finally{_===p&&(e._preservingDraft=!1)}$('[data-toggle="tooltip"]').tooltip()},$('[data-toggle="tooltip"]').tooltip(),e.watch("source.branch",async()=>{if(e.detectedType!=="repo")return;let k=e.branches.filter(U=>U.name==e.source.branch)[0];if(!k)return;!(!e.reconnectingSource&&e.isUpdate&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=k.commit),e.readme=k.readme,await Te(),J()}),e.getBranches=async k=>{let _=parseGithubUrl(e.sourceUrl),U=h();try{let j=await t.get(`/api/repo/${_.owner}/${_.repo}/branches`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&Ae(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,force:k===!0||e.reconnectingSource?"1":"0",repositoryID:be()}});if(!b(U))return;e.branches=j.data,e.sourceUnreachable=!1,e.source.branch||(e.source.branch=e.details.defaultBranch);let ue=e.branches.filter(we=>we.name==e.source.branch);ue.length>0&&(!(!e.reconnectingSource&&!k&&e.isUpdate&&!e.options.update&&e._originalBranch===e.source.branch&&e.source.commit)&&!(e._preservingDraft&&e.source.commit)&&(e.source.commit=ue[0].commit),e.readme=ue[0].readme,await Te(k))}catch(j){if(!b(U))return;e.branches=[],e.sourceUnreachable=j&&(j.status===404||j.data&&j.data.error==="repo_not_found");let ue=j&&j.data&&j.data.error||(j&&j.status===404?"repo_not_found":"unknown_error");r("ERRORS."+ue).then(we=>{e.toasts=e.toasts||[],e.addToast({title:"Error",date:new Date,body:we}),e.error=we},console.error),typeof x=="function"&&x("sourceUrl","missing",!1)}finally{w(U)}};async function ke(){let k=parseGithubUrl(e.sourceUrl),_=h();try{Se();let U=await t.get(`/api/repo/${k.owner}/${k.repo}/`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&Ae(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,repositoryID:be(),force:"1"}});if(!b(_))return;e.details=U.data,e.reconnectingSource&&(e.reconnectRepositoryId=e.details.externalId),e.details&&e.details.id&&(e.repositoryID=e.details.id),e.repoId||(e.repoId=e.details.repo+"-"+generateRandomId(4)),await e.getBranches(e.reconnectingSource)}catch(U){if(!b(_))return;throw U.data&&(r("ERRORS."+U.data.error).then(j=>{e.addToast({title:"Error",date:new Date,body:j}),e.error=j},console.error),Fe(U.data.error)),x("sourceUrl","missing",!1),U}finally{w(_)}}async function Te(k){if(e.readme&&!k)return e.readme;let _=parseGithubUrl(e.sourceUrl),U=h();try{let j=await t.get(`/api/repo/${_.owner}/${_.repo}/readme`,{params:{reconnect:e.reconnectingSource?"1":void 0,anonymizedRepoId:e.isUpdate&&i.repoId&&Ae(e.sourceUrl)===e._originalFullName?i.repoId:void 0,connection:e.githubConnection,force:k===!0?"1":"0",branch:e.source.branch,repositoryID:be()}});b(U,!0)&&(e.readme=j.data)}catch{b(U,!0)&&(e.readme="")}finally{w(U)}}let Xe={magicalBraces:!0},rt=k=>k.startsWith("/")&&!k.endsWith("/")&&In(ro(k.slice(1),Xe),Xe)===k.slice(1),at=()=>Object.keys(e.preserve.picked).filter(k=>e.preserve.picked[k]).sort().map(k=>"/"+In(k,Xe)),Qe=k=>"/"+In(k,Xe)+"/**",wt=k=>"!/"+In(k,Xe)+"/",et=()=>String(e.preserve.patterns||"").split(` +`).map(k=>k.trim()).filter(Boolean),We=null,X=0,he=null,M=()=>!1;function F(){let k=X+"\0"+e.preserve.patterns;if(k!==he){he=k;try{M=wa(ba([...at(),...et()]))}catch{M=()=>!1}}return M}function B(k){let _=new Map([["",{dirs:[],files:[]}]]);for(let U of k){let j=U.split("/"),ue="";for(let we=0;we_.startsWith(k+"/"))),We.descendants.get(k)}let E=k=>F()(k);function S(k){let _=K(k),U=0;for(let j of _)E(j)&&U++;return U===0?"none":U===_.length?"all":"some"}e.preserve={open:!1,loading:!1,error:"",truncated:!1,commit:"",search:"",expanded:{},picked:{},patterns:"",patternsOpen:!1},e.preserveSummary=()=>{let k=(e.options?.preserveFiles||[]).map(_=>String(_).trim()).filter(Boolean).map(_=>rt(_)?ro(_.slice(1),Xe):_);return k.length?k.slice(0,2).join(", ")+(k.length>2?` and ${k.length-2} more`:""):"None. Every file is redacted."};async function O(){let k=e.source?.commit;if(!(We&&e.preserve.commit===k)){e.preserve.loading=!0,e.preserve.error="",We=null;try{let _=parseGithubUrl(e.sourceUrl),U=await t.get(`/api/repo/${_.owner}/${_.repo}/tree`,{params:{commit:k,connection:e.githubConnection,anonymizedRepoId:e.isUpdate&&i.repoId&&Ae(e.sourceUrl)===e._originalFullName?i.repoId:void 0,repositoryID:be()}});if(e.source?.commit!==k)return;We=bo(B(U.data.files||[])),e.preserve.commit=k,e.preserve.truncated=!!U.data.truncated}catch{e.preserve.error="The file list could not be loaded from GitHub. You can still use patterns.",e.preserve.patternsOpen=!0}finally{e.preserve.loading=!1}}}e.watch("source.commit",k=>{e.detectedType==="repo"&&k&&e.sourceUrl&&O().catch(()=>{})}),e.openPreserveFiles=()=>{let k={},_=[];for(let j of e.options?.preserveFiles||[]){let ue=String(j).trim();ue&&(!_.length&&rt(ue)?k[ro(ue.slice(1),Xe)]=!0:_.push(ue))}let U={};for(let j of Object.keys(k)){let ue=j.split("/");for(let we=1;we0}),X++,a(()=>{let j=document.getElementById("preserve-files-dialog");j?.showModal&&!j.open&&j.showModal(),document.getElementById("preserve-files-search")?.focus()},0),O()},e.closePreserveFiles=()=>{document.getElementById("preserve-files-dialog")?.close?.(),e.preserve.open=!1},e.savePreserveFiles=()=>{e.options.preserveFiles=ba([...at(),...et()]),e.closePreserveFiles()},e.preserveRows=()=>{if(!We)return[];let k=F(),_=(we,Ze,Yt)=>{let kt=!!e.preserve.picked[we],$n=k(we);return{kind:"file",path:we,label:Yt,depth:Ze,state:$n?"all":"none",locked:!kt&&$n,note:!kt&&$n?"matched by a pattern":kt&&!$n?"excluded by a pattern":""}},U=String(e.preserve.search||"").trim().toLowerCase();if(U)return We.files.filter(we=>we.toLowerCase().includes(U)).slice(0,300).map(we=>_(we,0,we));let j=[],ue=(we,Ze)=>{let Yt=We.dirs.get(we);for(let kt of Yt.dirs){let $n=!!e.preserve.expanded[kt],Da=et().includes(Qe(kt));j.push({kind:"dir",path:kt,label:kt.slice(we?we.length+1:0)+"/",depth:Ze,open:$n,state:S(kt),locked:!1,note:Da?"whole folder":""}),$n&&ue(kt,Ze+1)}for(let kt of Yt.files)j.push(_(kt,Ze,kt.slice(we?we.length+1:0)))};return ue("",0),j},e.preserveCount=()=>We?We.files.filter(E).length:0,e.togglePreserveDir=k=>{e.preserve.expanded[k]=!e.preserve.expanded[k]},e.togglePreserveFile=k=>{e.preserve.picked[k]=!e.preserve.picked[k],X++},e.togglePreserveFolder=k=>{let _=Qe(k),U=wt(k),j=et().filter(we=>we!==_&&we!==U),ue=S(k)==="all"||et().includes(_);for(let we of K(k))e.preserve.picked[we]=!1;X++,e.preserve.patterns=(ue?j:[...j,_]).join(` +`),ue&&K(k).some(E)&&(e.preserve.patterns=[...j,U].join(` +`))};let H=[".github","","docs"].flatMap(k=>["README.md","README","README.markdown","README.rst","README.txt","readme.md"].map(_=>(k?k+"/":"")+_));e.readmePreserved=()=>{if(e.detectedType!=="repo")return!1;let k=(e.options?.preserveFiles||[]).map(_=>String(_).trim()).filter(Boolean);if(!k.length)return!1;try{let _=wa(k);return H.some(U=>_(U))}catch{return!1}};function z(){let k={terms:e.terms&&!e.readmePreserved()?e.terms.split(` +`):[],image:!!e.options.image,link:!!e.options.link,repoId:e.repoId};e.source&&e.source.branch&&(k.branchName=e.source.branch);try{let _=parseGithubUrl(e.sourceUrl);k.repoName=`${_.owner}/${_.repo}`}catch{}return k}function Y(k,_,U){let j=null,ue=0,we=()=>{if(e.detectedType!==k)return;j&&a.cancel(j);let Ze=++ue;e.previewStatus="loading",j=a(()=>{j=null;let Yt=_();if(!Yt){e.previewStatus="idle";return}t.post("/api/anonymize-preview",Yt).then(kt=>{Ze===ue&&(U(kt.data,Yt),e.previewStatus="ready")}).catch(()=>{Ze===ue&&(e.previewStatus="error")})},200)};return we.cancel=()=>{ue++,j&&a.cancel(j),j=null},e.on("dispose",we.cancel),we}e.retryPreview=()=>{e.detectedType==="repo"&&te(),e.detectedType==="pr"&&ae(),e.detectedType==="gist"&&Re()};let te=Y("repo",()=>e.readme?{content:e.readme,options:z()}:null,k=>{if(typeof k?.content!="string")throw Error("Invalid preview response");e.anonymize_readme=k.content;let _="";try{let j=parseGithubUrl(e.sourceUrl),ue=e.source.branch||e.details&&e.details.defaultBranch||"main";_=`https://github.com/${j.owner}/${j.repo}/raw/${ue}/`}catch{}let U=renderMD(e.anonymize_readme,_);e.html_readme=U,a(()=>{Prism.highlightAll(),typeof bs=="function"&&document.querySelectorAll(".reviewer-preview .anonymize-preview-body").forEach(bs)},150)});function J(){!e.anonymize||!e.anonymize.terms||te()}async function Z(){let k=parseGithubUrl(e.sourceUrl),_=h();try{Se();let U=await t.get(`/api/pr/${k.owner}/${k.repo}/${k.pullRequestId}`,{params:{connection:e.githubConnection}});if(!b(_))return;e.details=U.data,e.pullRequestId||(e.pullRequestId=k.repo+"-PR"+k.pullRequestId+"-"+generateRandomId(4))}catch(U){if(!b(_))return;throw U.data&&(r("ERRORS."+U.data.error).then(j=>{e.addToast({title:"Error",date:new Date,body:j}),e.error=j},console.error),Fe(U.data.error)),x("sourceUrl","missing",!1),U}finally{w(_)}}let G=nt(new Map);function ge(){let k=new Set,_=e.details&&e.details.pullRequest;if(!_)return k;typeof _.title=="string"&&k.add(_.title),typeof _.body=="string"&&k.add(_.body),typeof _.diff=="string"&&k.add(_.diff);let U=_.comments||[];for(let j of U)typeof j.author=="string"&&k.add(j.author),typeof j.body=="string"&&k.add(j.body);return k}let ae=Y("pr",()=>{let k=ge(),_=Array.from(k);return _.length===0?null:{contents:_,options:z()}},(k,_)=>{if(!Array.isArray(k?.contents)||k.contents.length!==_.contents.length||k.contents.some(ue=>typeof ue!="string"))throw Error("Invalid preview response");let U=_.contents,j=new Map;for(let ue=0;ueG.set(we,ue))});e.anonymizePrContent=function(k){return k&&(G.has(k)?G.get(k):"")};async function de(){let k=parseGithubUrl(e.sourceUrl),_=h();try{Se(),e.gistOAuthRequired=!1,e.gistAppRequired=!1;let U=await t.get(`/api/gist/source/${k.gistId}`);if(!b(_))return;e.details=U.data,e.gistId||(e.gistId="gist-"+k.gistId.substring(0,6)+"-"+generateRandomId(4))}catch(U){if(!b(_))return;if(U.data?.error==="github_app_reconnect_required"){e.gistAppRequired=!0,x("sourceUrl","missing",!1);return}if(U.data?.error==="github_oauth_required"){e.gistOAuthRequired=!0,x("sourceUrl","missing",!1);return}throw U.data&&(r("ERRORS."+U.data.error).then(j=>{e.addToast({title:"Error",date:new Date,body:j}),e.error=j},console.error),Fe(U.data.error)),x("sourceUrl","missing",!1),U}finally{w(_)}}let pe=nt(new Map);function De(){let k=new Set,_=e.details&&e.details.gist;if(!_)return k;typeof _.description=="string"&&k.add(_.description),typeof _.ownerLogin=="string"&&k.add(_.ownerLogin);let U=_.files||[];for(let ue of U)typeof ue.filename=="string"&&k.add(ue.filename),typeof ue.content=="string"&&k.add(ue.content);let j=_.comments||[];for(let ue of j)typeof ue.author=="string"&&k.add(ue.author),typeof ue.body=="string"&&k.add(ue.body);return k}let Re=Y("gist",()=>{let k=De(),_=Array.from(k);return _.length===0?null:{contents:_,options:z()}},(k,_)=>{if(!Array.isArray(k?.contents)||k.contents.length!==_.contents.length||k.contents.some(ue=>typeof ue!="string"))throw Error("Invalid preview response");let U=_.contents,j=new Map;for(let ue=0;uepe.set(we,ue)),_e()});e.anonymizeGistContent=function(k){return k&&(pe.has(k)?pe.get(k):"")},e.previewGistFiles=[];function _e(){let k=e.details&&e.details.gist&&e.details.gist.files||[];e.previewGistFiles=k.map(_=>({filename:e.anonymizeGistContent(_.filename),content:e.anonymizeGistContent(_.content),language:_.language}))}e.watch("details.gist.files",_e,!0),e.watch("terms",_e);function me(){let k=e.conference;if(e.conference_data=null,!k)return;let _=k===v||e.isUpdate&&k===e._originalConference;k!==v&&(v=null),t.get("/api/conferences/"+k).then(U=>{e.conference===k&&(e.conference_data=U.data,e.conference_data.startDate=new Date(e.conference_data.startDate),e.conference_data.endDate=new Date(e.conference_data.endDate),!_&&(e.options.expirationDate=new Date(e.conference_data.endDate),e.options.expirationMode="remove",e.options.update=e.conference_data.options.update,e.options.image=e.conference_data.options.image,e.options.pdf=e.conference_data.options.pdf,e.options.notebook=e.conference_data.options.notebook,e.options.link=e.conference_data.options.link))},()=>{e.conference===k&&(e.conference_data=null)})}function Se(){x("repoId","used",!0),x("repoId","format",!0),x("pullRequestId","used",!0),x("pullRequestId","format",!0),x("gistId","used",!0),x("gistId","format",!0),x("sourceUrl","used",!0),x("sourceUrl","missing",!0),x("sourceUrl","access",!0),x("sourceUrl","github",!0),x("commit","exists",!0),x("conference","activated",!0),x("terms","format",!0),e.termHints=[]}function ze(){if(e.detectedType==="repo"&&e.options.expirationMode==="never")return!1;let k=e.anonymize&&e.anonymize.expirationDate;return!e.options.expirationDate||k&&k.invalid?(k&&k.setDirty&&k.setDirty(),e.error="Please choose a valid expiration date.",!0):!1}function Fe(k){let _=e.detectedType==="pr"?"pullRequestId":e.detectedType==="gist"?"gistId":"repoId";switch(k){case"repoId_already_used":x(_,"used",!1);break;case"invalid_repoId":x(_,"format",!1);break;case"options_not_provided":x(_,"format",!1);break;case"repo_already_anonymized":x("sourceUrl","used",!1);break;case"invalid_terms_format":x("terms","format",!1);break;case"repo_not_found":x("sourceUrl","missing",!1);break;case"repo_not_accessible":x("sourceUrl","access",!1);break;case"commit_not_found":x("commit","exists",!1);break;case"conf_not_activated":x("conference","activated",!1);break}}e.coauthors=e.coauthors||[],e.coauthorResults=[],e.coauthorError="",e.searchCoauthors=()=>{let k=(e.coauthorSearch||"").trim();if(e.coauthorError="",k.length<2){e.coauthorResults=[];return}t.get("/api/user/search/github-users",{params:{q:k}}).then(_=>{let U=new Set((e.coauthors||[]).map(j=>(j.username||"").toLowerCase()));e.coauthorResults=(_.data||[]).filter(j=>!U.has((j.username||"").toLowerCase()))},()=>{e.coauthorResults=[]})},e.addCoauthor=(k,_)=>{_&&_.preventDefault(),!(!k||!k.username)&&t.post("/api/repo/"+e.repoId+"/coauthors",{username:k.username}).then(U=>{e.coauthors=U.data||[],e.coauthorResults=[],e.coauthorSearch="",e.coauthorError=""},U=>{let j=U&&U.data&&U.data.error||"unknown_error";e.coauthorError=j})},e.removeCoauthor=k=>{!k||!k.username||confirm("Remove co-author "+k.username+"?")&&t.delete("/api/repo/"+e.repoId+"/coauthors/"+encodeURIComponent(k.username)).then(_=>{e.coauthors=_.data||[]},_=>{let U=_&&_.data&&_.data.error||"unknown_error";e.coauthorError=U})},e.anonymizeRepo=k=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(e.reconnectingSource&&!e.reconnectRepositoryId)return;if(ze()){e.editRepository();return}if(e.anonymize?.invalid||e.sourceUrlError){e.editRepository(),e.error="Please correct the highlighted fields before saving.";return}if(e.hostingNeedsPayment()&&e.options.expirationMode==="never"){e.hostingReview=!0,ot(()=>document.getElementById("repository-hosting")?.scrollIntoView({block:"center"}));return}let _=k.currentTarget||k.target.closest?.("button")||k.target;_.disabled=!0;let U=parseGithubUrl(e.sourceUrl),j={repoId:e.repoId,terms:e.terms.trim().split(` +`).filter(we=>we),connection:e.githubConnection,fullName:`${U.owner}/${U.repo}`,repository:e.sourceUrl,reconnectRepositoryId:e.reconnectRepositoryId,options:e.options,source:e.source,conference:e.conference};e.details&&(j.options.pageSource=e.details.pageSource),Se();let ue=e.isUpdate?"/api/repo/"+e.repoId:"/api/repo/";t.post(ue,j,{headers:{"Content-Type":"application/json"}}).then(()=>{R.clear(),window.location.href="/status/"+e.repoId},we=>{if(we.data){let Ze=["quota_exceeded","subscription_required_for_never_expiration"].includes(we.data.error);Ze||r("ERRORS."+we.data.error).then(Yt=>{e.error=Yt},console.error),Fe(we.data.error),Ze&&(we.data.error==="subscription_required_for_never_expiration"&&(e._existingNever=!1),e.hostingQuotaBlocked=!0,e.hostingReview=!0,ot(()=>document.getElementById("repository-hosting")?.scrollIntoView({block:"center"})))}}).finally(()=>{_.disabled=!1})},e.anonymizeGist=k=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(ze())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let _=k.currentTarget||k.target.closest?.("button")||k.target;_.disabled=!0;let U=parseGithubUrl(e.sourceUrl),j={gistId:e.gistId,terms:e.terms.trim().split(` +`).filter(we=>we),source:{gistId:U.gistId},options:e.options,conference:e.conference};Se();let ue=e.isUpdate?"/api/gist/"+e.gistId:"/api/gist/";t.post(ue,j,{headers:{"Content-Type":"application/json"}}).then(()=>{R.clear(),window.location.href="/gist/"+e.gistId},we=>{we.data&&(r("ERRORS."+we.data.error).then(Ze=>{e.error=Ze},console.error),Fe(we.data.error))}).finally(()=>{_.disabled=!1})},e.anonymizePullRequest=k=>{if(e.sourceLoading){e.error="Wait for the source to finish loading before saving.";return}if(ze())return;if(e.anonymize?.invalid||e.sourceUrlError){e.error="Please correct the highlighted fields before saving.";return}let _=k.currentTarget||k.target.closest?.("button")||k.target;_.disabled=!0;let U=parseGithubUrl(e.sourceUrl),j={pullRequestId:e.pullRequestId,connection:e.githubConnection,terms:e.terms.trim().split(` +`).filter(we=>we),source:{repositoryFullName:`${U.owner}/${U.repo}`,pullRequestId:U.pullRequestId},options:e.options,conference:e.conference};Se();let ue=e.isUpdate?"/api/pr/"+e.pullRequestId:"/api/pr/";t.post(ue,j,{headers:{"Content-Type":"application/json"}}).then(()=>{R.clear(),window.location.href="/pr/"+e.pullRequestId},we=>{we.data&&(r("ERRORS."+we.data.error).then(Ze=>{e.error=Ze},console.error),Fe(we.data.error))}).finally(()=>{_.disabled=!1})},e.watch("conference",()=>{me()}),e.termHints=[],e.matchTermAsWritten=k=>{e.terms=uc(e.terms,k)},e.watch("options.preserveFiles",()=>{e.detectedType==="repo"&&te()}),e.watch("terms",()=>{e.termHints=dc(e.terms),e.detectedType==="repo"&&J(),e.detectedType==="pr"&&ae(),e.detectedType==="gist"&&Re()}),e.watch("options.image",()=>{e.detectedType==="repo"&&J(),e.detectedType==="pr"&&ae(),e.detectedType==="gist"&&Re()}),e.watch("options.link",()=>{e.detectedType==="repo"&&J(),e.detectedType==="pr"&&ae(),e.detectedType==="gist"&&Re()}),e.watch("details",()=>{e.detectedType==="pr"&&ae(),e.detectedType==="gist"&&Re()},!0)},Sa=function(e,t,o,i,s,r){let a=Tt();pc();let u=dn();e.on("dark-mode",(M,F)=>{e.aceOption&&(F?e.aceOption.theme="nord_dark":e.aceOption.theme="chrome")});let p=0,y=null,m=null;e.fileLoadingSlow=!1,e.fileReceivedBytes=0;function b(){y&&(y.resolve(),y=null),m&&(a.timeout.cancel(m),m=null)}let h=!1;e.on("dispose",()=>{h=!0,p++,b(),w&&w.resolve()}),e.files=[],e.isMac=/Mac|iPhone|iPad|iPod/.test(navigator.platform||navigator.userAgent),e.fileSearchQuery="",e.fileSearchResults=null,e.fileSearchLoading=!1,u(document,"click",M=>{e.symbolsOpen&&!M.target.closest?.(".symbols")&&(e.symbolsOpen=!1),e.moreOpen&&!M.target.closest?.(".tb-more")&&(e.moreOpen=!1),e.tocOpen&&!M.target.closest?.(".tb-toc-m")&&(e.tocOpen=!1),e.gotoOpen&&M.target.isConnected&&!M.target.closest?.(".goto-pop, .btn-goto, .tb-more")&&(e.gotoOpen=!1),e.accountOpen&&!M.target.closest?.(".acct")&&(e.accountOpen=!1),e.helpOpen&&!M.target.closest?.(".vb-help")&&(e.helpOpen=!1)}),u(document,"keydown",M=>{M.key==="Escape"&&(e.symbolsOpen=!1,e.moreOpen=!1,e.tocOpen=!1,e.gotoOpen=!1,e.accountOpen=!1,e.helpOpen=!1),(M.ctrlKey||M.metaKey)&&!M.altKey&&M.key&&M.key.toLowerCase()==="f"&&e.type==="html"&&window.document.querySelector(".reading-layout")&&(M.preventDefault(),e.toggleMdFind(!0))}),u(document,"keydown",function(M){if((M.metaKey||M.ctrlKey)&&M.key==="k"){M.preventDefault();var F=document.querySelector(".tree-search-input");F&&(F.focus(),F.select())}});var w=null;e.onFileSearchChange=function(){w&&(w.resolve(),w=null);let M=e.fileSearchQuery;if(!M||M.length<2){e.fileSearchResults=null,e.fileSearchLoading=!1;return}e.fileSearchLoading=!0;let F=r.defer();w=F,t.get(`/api/repo/${e.repoId}/files/search?q=${encodeURIComponent(M)}`,{timeout:F.promise}).then(function(B){if(!(h||w!==F)){w=null,e.fileSearchLoading=!1;var K={};e.files.forEach(function(pe){K[(pe.path||"")+"/"+pe.name]=!0});for(var E=[],S={},O=0;O0&&e.files.push.apply(e.files,E);for(var G=[],ge=0;ge0&&e.files.push.apply(e.files,G),e.fileSearchResults=B.data}},function(){!h&&w===F&&(w=null,e.fileSearchLoading=!1,e.fileSearchResults=[])})};let A={yml:"yaml",txt:"text",py:"python",js:"javascript",ts:"typescript"},N=["license","txt"],R=["png","jpg","jpeg","gif","svg","ico","bmp","tiff","tif","webp","avif","heif","heic"],v=["wav","mp3","ogg","wma","flac","aac","m4a"],C=["mp4","avi","webm","mov","mpg","mpeg","mkv","flv","wmv","3gp","3g2","m4v","f4v","f4p","f4a","f4b"];e.on("routeUpdate",function(M,F){if(e.repoId!=i.repoId)return he();if((i.path||"")!=e.filePath){window.matchMedia?.("(max-width: 767px)").matches&&(e.sidebarCollapsed=!0),e.filePath=i.path||"",e.paths=e.filePath.split("/").filter(B=>B&&B.trim().length>0),et();for(let B=0;B0?e.paths.slice(0,B).join("/"):"";e.files.some(S=>S.path===K)||e.getFiles(K)}}});function I(){if(e.paths[0]!="")return;let M=["readme.md","readme.txt","readme.org","readme.1st","readme"],F={};for(let K of e.files)K.name.toLowerCase().indexOf("readme")>-1&&(F[K.name.toLowerCase()]=K.name);let B=null;for(let K of M)if(F[K]){B=K;break}if(!B&&Object.keys(F).length>0&&(B=Object.keys(F)[0]),B){let K=o.url();K[K.length-1]!="/"&&(K+="/"),o.url(K+encodePathForUrl(F[B]))}}e.fileCounts=null;let V=0,q=new Set,W=!1;e.getFiles=function(M,F=!1){let B=e.repoId,K=V;return t.get(`/api/repo/${e.repoId}/files/?path=${encodeURIComponent(M)}&v=${e.options.lastUpdateDate}`).then(function(E){if(h||B!==e.repoId||K!==V)return[];let S=M||"";return e.files=e.files.filter(O=>O.path!==S),e.files.push(...E.data),e.loadedFolders={...e.loadedFolders,[S]:!0},se(S,K),E.data},function(E){if(h||B!==e.repoId||K!==V)return[];F||(e.type="error",e.content=Ca(E),e.files=[])})};function se(M,F){if(W||q.has(M))return;q.add(M);let B=e.repoId;t.get(`/api/repo/${e.repoId}/files/counts?path=${encodeURIComponent(M)}`).then(function(K){h||B!==e.repoId||F!==V||(e.fileCounts={...e.fileCounts,...K.data})},function(){h||B!==e.repoId||F!==V||(W=!0)})}function Q(){return e.files.filter(M=>M.name==e.paths[e.paths.length-1]&&M.path==e.paths.slice(0,e.paths.length-1).join("/"))[0]}var ne=null;e.on("dispose",function(){ne&&a.interval.cancel(ne)});function Ee(M){if(h)return;let F=e.repoId;t.get(`/api/repo/${e.repoId}/options`).then(B=>{if(!(h||F!==e.repoId)){if(e.options=B.data,e.options.url){window.location=e.options.url;return}M&&M(B.data)}},B=>{if(!(h||F!==e.repoId)){var K=B.data||{};if(K.error==="rate_limited"&&K.resetAt){let S=function(){var O=Math.max(0,Math.ceil((e.rateLimitResetAt-Date.now())/1e3));if(O<=0)e.rateLimitCountdown="",e.rateLimitResetAt=0,ne&&(a.interval.cancel(ne),ne=null),Ee(M);else{var H=Math.floor(O/60),z=O%60;e.rateLimitCountdown=H>0?H+"m "+z+"s":z+"s"}};var E=S;e.type="rate_limited",e.rateLimitResetAt=K.resetAt,ne&&a.interval.cancel(ne),S(),ne=a.interval(S,1e3)}else K.error==="repository_not_ready"?(e.type="loading",a.timeout(function(){Ee(M)},3e3)):(e.type="error",e.content=Ca(B))}})}e.toggleSource=function(){e.showSource=!e.showSource},e.toggleAllowScripts=function(){e.allowScripts=!e.allowScripts};let D=(()=>{try{return window.localStorage?.getItem("wrapLines")}catch{return null}})();e.wrapLines=(D??(window.matchMedia?.("(max-width: 767px)").matches?"false":"true"))!=="false",e.toggleWrap=function(){e.wrapLines=!e.wrapLines;try{window.localStorage?.setItem("wrapLines",String(e.wrapLines))}catch{}e.codeEditor?.session.setUseWrapMode(e.wrapLines)};function oe(){return window.document.querySelector(".reading-layout .markdown-body")}function x(){let M=oe();M&&(M.querySelectorAll("mark.md-find").forEach(F=>{F.replaceWith(window.document.createTextNode(F.textContent))}),M.normalize())}e.runMdFind=function(){x(),e.mdFindTotal=0,e.mdFindIndex=0;let M=(e.mdFindQuery||"").trim(),F=oe();if(!M||!F)return;let B=!!e.mdFindCase,K=B?M:M.toLowerCase(),E=window.document.createTreeWalker(F,4),S=[];for(;E.nextNode();)(B?E.currentNode.nodeValue:E.currentNode.nodeValue.toLowerCase()).includes(K)&&S.push(E.currentNode);let O=0;for(let H of S){let z=H.nodeValue,Y=B?z:z.toLowerCase(),te=window.document.createDocumentFragment(),J=0,Z;for(;(Z=Y.indexOf(K,J))!==-1;){te.appendChild(window.document.createTextNode(z.slice(J,Z)));let G=window.document.createElement("mark");G.className="md-find",G.textContent=z.slice(Z,Z+M.length),te.appendChild(G),O++,J=Z+M.length}te.appendChild(window.document.createTextNode(z.slice(J))),H.parentNode.replaceChild(te,H)}e.mdFindTotal=O,O&&e.stepMdFind(0)},e.stepMdFind=function(M){let F=oe();if(!F||!e.mdFindTotal)return;let B=F.querySelectorAll("mark.md-find");e.mdFindIndex=(e.mdFindIndex+M+B.length)%B.length,B.forEach((K,E)=>K.classList.toggle("is-current",E===e.mdFindIndex)),B[e.mdFindIndex]?.scrollIntoView({block:"center",behavior:"smooth"})},e.toggleMdFind=function(M){if(e.mdFindOpen=M===void 0?!e.mdFindOpen:M,!e.mdFindOpen){x(),e.mdFindTotal=0;return}ot(()=>window.document.querySelector(".md-find-input")?.focus())},e.findInFile=function(){let M=e.codeEditor;if(!M)return;M.focus(),M.execCommand("find");let F=()=>{let B=M.searchBox?.element;B&&(M.renderer.setScrollMargin(52,12,0,0),!B._dockObserver&&(B._dockObserver=new MutationObserver(()=>{M.renderer.setScrollMargin(B.style.display!=="none"?52:12,12,0,0)}),B._dockObserver.observe(B,{attributes:!0,attributeFilter:["style"]})))};F(),setTimeout(F,150)};let Ae=[[/^\s*(?:export\s+)?(?:default\s+)?(?:abstract\s+)?class\s+([A-Za-z_$][\w$]*)/,"class"],[/^\s*(?:export\s+)?(?:default\s+)?(?:async\s+)?function\s*\*?\s*([A-Za-z_$][\w$]*)/,"function"],[/^\s*(?:export\s+)?(?:const|let|var)\s+([A-Za-z_$][\w$]*)\s*=\s*(?:async\s*)?(?:function|\([^)]*\)\s*=>|[A-Za-z_$][\w$]*\s*=>)/,"function"],[/^\s*(?:async\s+)?def\s+([A-Za-z_]\w*)/,"function"],[/^\s*class\s+([A-Za-z_]\w*)/,"class"],[/^\s*func\s+(?:\([^)]*\)\s*)?([A-Za-z_]\w*)/,"function"],[/^\s*(?:pub\s+)?fn\s+([A-Za-z_]\w*)/,"function"],[/^\s*(?:public|private|protected|static|\s)+[\w<>\[\],\s]+\s+([A-Za-z_]\w*)\s*\([^;]*\)\s*\{?\s*$/,"function"]],be={content:null,list:[]};e.symbolsOpen=!1,e.symbols=function(){if(typeof e.content!="string"||e.content.length>2e6)return[];if(be.content===e.content)return be.list;let M=[];return e.content.split(` +`).forEach((F,B)=>{for(let[K,E]of Ae){let S=K.exec(F);if(S&&!/^(if|for|while|switch|return|catch)$/.test(S[1])){M.push({name:S[1],kind:E,line:B+1});break}}}),be={content:e.content,list:M.slice(0,300)},be.list},e.goToSymbol=function(M){e.symbolsOpen=!1;let F=e.codeEditor;F&&(F.scrollToLine(M-1,!0,!0,()=>{}),F.gotoLine(M,0,!0),window.history.replaceState(null,"",window.location.pathname+window.location.search+"#L"+M),window.dispatchEvent(new HashChangeEvent("hashchange")))},e.gotoLine=function(){e.codeEditor&&(e.moreOpen=!1,e.gotoError="",e.gotoValue=String(e.codeEditor.getCursorPosition().row+1),e.gotoOpen=!0,setTimeout(()=>{let M=window.document.getElementById("goto-input");M&&(M.focus(),M.select())},0))},e.closeGoto=function(){e.gotoOpen=!1,e.gotoError="",e.codeEditor?.focus()},e.submitGoto=function(){let M=e.codeEditor;if(!M)return;let F=/^\s*:?\s*(\d+)\s*(?:[:,]\s*(\d+))?\s*$/.exec(e.gotoValue||""),B=M.session.getLength();if(!F||+F[1]<1||+F[1]>B){e.gotoError="Enter a line from 1 to "+B;return}M.gotoLine(+F[1],F[2]?Math.max(0,+F[2]-1):0,!0),e.gotoOpen=!1,e.gotoError="",M.focus()},e.rootEntries=function(){return[...e.files||[]].sort((M,F)=>{let B=M.size==null,K=F.size==null;return B!==K?B?-1:1:M.name.localeCompare(F.name)})},e.formatSize=function(M){if(M==null)return"";if(M<1024)return M+" B";let F=M/1024,B=K=>K.toFixed(1).replace(/\.0$/,"");return F<1024?B(F)+" KB":F<1024*1024?B(F/1024)+" MB":B(F/1024/1024)+" GB"},e.fileSize=function(M){if(!M)return null;let F=M.replace(/^\/+/,""),B=(e.files||[]).find(K=>(K.path?K.path+"/":"")+K.name===F);return B&&B.size!=null?B.size:null},e.revealFolder=function(M){e.sidebarHidden=!1,e.sidebarCollapsed=!1,ot(()=>{let F=window.document.querySelector('.files a[data-path="/'+(window.CSS?.escape?window.CSS.escape(M):M)+'"]');F&&(F.closest("li")?.classList.contains("open")||F.click(),F.scrollIntoView({block:"nearest"}),F.focus())})};let le={content:null,n:0},fe=M=>{if(le.content===M)return le.n;let F=M;if(typeof F=="string")try{F=JSON.parse(F)}catch{F=null}let B=[],K=S=>{Array.isArray(S)?B.push(S.join("")):typeof S=="string"&&B.push(S)};(F&&(F.cells||(F.worksheets||[]).flatMap(S=>S.cells||[]))||[]).forEach(S=>{K(S?.source??S?.input),(S?.outputs||[]).forEach(O=>{K(O?.text),O?.data&&(K(O.data["text/plain"]),K(O.data["text/markdown"]),K(O.data["text/html"])),K(O?.traceback)})});let E=B.reduce((S,O)=>S+(O.match(uo)||[]).length,0);return le={content:M,n:E},E};e.redactionCount=function(){return e.type==="IPython"?fe(e.content):typeof e.content!="string"?0:((e.type==="html"?e.content.replace(/<[^>]*>/g," "):e.content).match(uo)||[]).length},e.renderRedacted=Oi;let ke=M=>M.toLowerCase().trim().replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").slice(0,60)||"section";e.renderReadme=function(M){let F=e.renderRedacted(M);if(!F||typeof window.DOMParser!="function")return F;let B=new window.DOMParser().parseFromString("
"+F+"
","text/html"),K={};return B.querySelectorAll("h1, h2, h3").forEach(E=>{let S=E.id||ke(E.textContent);K[S]?S+="-"+ ++K[S]:K[S]=1,E.id=S}),B.body.firstChild.innerHTML};let Te={content:null,list:[]};e.readmeToc=function(){if(e.type!=="html"||typeof e.content!="string")return[];if(Te.content===e.content)return Te.list;let F=[...new window.DOMParser().parseFromString("
"+e.renderReadme(e.sanitize?e.sanitize(e.content):e.content)+"
","text/html").querySelectorAll("h2, h3")].map(B=>({id:B.id,text:B.textContent.trim(),level:B.tagName==="H3"?3:2})).slice(0,40);return Te={content:e.content,list:F},F},e.activeHeading=null,u(window,"scroll",()=>{let M=e.readmeToc?e.readmeToc():[];if(!M.length)return;let F=150,B="",K="";for(let E of M){let S=window.document.getElementById(E.id);if(!S)continue;let O=S.getBoundingClientRect().top;O{let B=[],K=[],E="",S=!1;for(let O=0;OO.length>1||O[0]!=="")};e.isCsv=()=>typeof e.content=="string"&&e.type!=="html"&&/\.(csv|tsv)$/i.test(e.filePath||"")&&e.content.length<=1024*1024,e.csvRows=()=>{if(Xe.content!==e.content){let M=/\.tsv$/i.test(e.filePath||"")?" ":",";Xe={content:e.content,rows:rt(e.content,M)}}return Xe.rows},e.csvNumCol=M=>{let F=e.csvRows().slice(1).map(B=>B[M]).filter(B=>B!=null&&String(B).trim()!=="");return F.length>0&&F.every(B=>e.csvNumeric(B))},e.csvNumeric=M=>/^\s*[-+]?(\d[\d,]*)?(\.\d+)?(e[-+]?\d+)?%?\s*$/i.test(M)&&/\d/.test(M),e.redactParts=function(M){let F=[],B=0,K,E=/\bXXXX-(\d+)\b/g;for(M=String(M||"");K=E.exec(M);)K.index>B&&F.push({t:M.slice(B,K.index)}),F.push({n:K[1]}),B=K.index+K[0].length;return B{e.pathCopied=!1},1600))},e.contentCopied=!1,e.copyContent=async function(){if(typeof e.content!="string"||!window.navigator.clipboard?.writeText)return;let M=e.content;if(e.type==="html"&&e.url)try{M=await(await window.fetch(e.url,{credentials:"same-origin"})).text()}catch{return}await window.navigator.clipboard.writeText(M),e.contentCopied=!0,setTimeout(()=>{e.contentCopied=!1},1600)};function at(M){return A[M]?A[M]:M}function Qe(M){return M=="pdf"?"pdf":M=="html"||M=="htm"?"html-doc":M=="md"?"md":M=="org"?"org":M=="ipynb"?"IPython":N.indexOf(M)>-1?"text":R.indexOf(M)>-1?"image":C.indexOf(M)>-1?"media":v.indexOf(M)>-1?"audio":"code"}function wt(M,F){let B=p;if(!M){e.type="error",e.content="no_file_selected";return}let K=e.type;(K==="code"||K==="text")&&qs().catch(()=>{}),e.type="loading",e.content="loading",e.fileLoadingSlow=!1,e.fileReceivedBytes=0;let E=r.defer();y=E,m=a.timeout(()=>{!h&&B===p&&e.type==="loading"&&(e.fileLoadingSlow=!0)},1500);let S=F&&F.sha||"0";t.get(`/api/repo/${e.repoId}/file/${encodePathForUrl(M)}?v=`+S,{timeout:E.promise,onDownloadProgress:O=>{!h&&B===p&&(e.fileReceivedBytes=O)},transformResponse:O=>O}).then(O=>{if(!(h||B!==p)){if(b(),e.type=K,e.content=O.data,e.content==""&&(e.content=null),e.type=="md"&&(e.content=renderMD(O.data,o.url()+"/../"),e.type="html"),e.type=="org"){let z=contentAbs2Relative(O.data);var H=new Org.Parser().parse(z).convert(Org.ConverterHTML,{headerOffset:1,exportFromLineNumber:!1,suppressSubScriptHandling:!0,suppressAutoLink:!1});e.content=DOMPurify.sanitize(H.toString()),e.type="html"}e.type=="code"&&O.headers("content-type")=="application/octet-stream"&&(e.type="binary",e.content="binary"),a.timeout(()=>{Prism.highlightAll()},50)}},O=>{h||B!==p||(b(),e.type="error",e.content=Ca(O))})}function et(){p++,b(),e.content="",e.file=Q();let M="0";e.file&&e.file.sha&&(M=e.file.sha),e.url=`/api/repo/${e.repoId}/file/${encodePathForUrl(e.filePath)}?v=${M}`;let F=e.filePath.substring(0,e.filePath.lastIndexOf("/")+1);e.fileBaseUrl=`/api/repo/${e.repoId}/file/${F?encodePathForUrl(F):""}`,e.showSource=!1,e.imageSize="",e.allowScripts=!1;let B=e.filePath.toLowerCase(),K=B.lastIndexOf(".");K>-1&&(B=B.substring(K+1));let E={javascript:"JavaScript",typescript:"TypeScript",tsx:"TSX",jsx:"JSX",python:"Python",java:"Java",c_cpp:"C/C++",csharp:"C#",golang:"Go",rust:"Rust",ruby:"Ruby",php:"PHP",html:"HTML",css:"CSS",scss:"SCSS",json:"JSON",yaml:"YAML",markdown:"Markdown",sh:"Shell",dockerfile:"Dockerfile",xml:"XML",sql:"SQL",kotlin:"Kotlin",swift:"Swift",scala:"Scala",r:"R",julia:"Julia",latex:"LaTeX",toml:"TOML",csv:"CSV",tsv:"TSV",text:""},S=at(B);if(e.languageName=E[S]??(S?S.charAt(0).toUpperCase()+S.slice(1):""),e.aceOption={readOnly:!0,useWrapMode:!0,showGutter:!0,theme:"chrome",useSoftTab:!0,tabSize:2,fontSize:window.matchMedia?.("(max-width: 767px)").matches?12:13,keyBinding:"vscode",fullLineSelection:!0,highlightActiveLine:!1,highlightGutterLine:!1,cursor:"hide",showInvisibles:!1,showIndentGuides:!1,showPrintMargin:!1,highlightSelectedWord:!1,enableBehaviours:!0,fadeFoldWidgets:!1,mode:at(B),onLoad:function(O){e.codeEditor=bo(O);{let de=O.session,pe=de.getTokens.bind(de),De=/\bXXXX-\d+\b/g;if(de.getTokens=function(Re){let _e=pe(Re);if(!_e.some(Se=>Se.value.indexOf("XXXX-")!==-1))return _e;let me=[];for(let Se of _e){if(Se.value.indexOf("XXXX-")===-1){me.push(Se);continue}let ze=0;De.lastIndex=0;let Fe;for(;Fe=De.exec(Se.value);)Fe.index>ze&&me.push({type:Se.type,value:Se.value.slice(ze,Fe.index)}),me.push({type:"redacted.n"+Fe[0].slice(5),value:Fe[0]}),ze=Fe.index+Fe[0].length;ze`.ace_redacted.ace_n${me+1}::after{content:"${me+1}"}`).join(""),window.document.head.appendChild(Re)}O.renderer.updateFull(!0)}O.session.setUseWrapMode(e.wrapLines!==!1);let H=O.container.closest?.(".file-card"),z=()=>{if(!H)return;let de=O.renderer,pe=(de.layerConfig?.width||0)-(de.$size?.scrollerWidth||0);H.classList.toggle("at-right-edge",pe<=2||de.getScrollLeft()>=pe-2)};O.session.on("changeScrollLeft",z),O.renderer.on("afterRender",z),window.matchMedia?.("(max-width: 767px)").matches&&O.setOption("hScrollBarAlwaysVisible",!0);let Y=ace.require("ace/range").Range,te=null;function J(de,pe){te!==null&&(O.session.removeMarker(te),te=null),de!=null&&(te=O.session.addMarker(new Y(de,0,pe,1),"highlighted-line","fullLine"))}function Z(de){let pe=window.location.hash.match(/^#L(\d+)(?:-L(\d+))?/);if(!pe){J(null);return}let De=parseInt(pe[1])-1,Re=pe[2]?parseInt(pe[2])-1:De;J(De,Re),de&&a.timeout(()=>{O.scrollToLine(De,!0,!0,function(){})},100)}Z(!0);let G=null;O.on("guttermousedown",function(de){let pe=de.getDocumentPosition().row,De=de.domEvent&&de.domEvent.shiftKey,Re=pe,_e=pe;De&&G!==null?(Re=Math.min(G,pe),_e=Math.max(G,pe)):G=pe;let me=Re===_e?`#L${Re+1}`:`#L${Re+1}-L${_e+1}`,Se=window.location.pathname+window.location.search+me;window.history.replaceState(null,"",Se),J(Re,_e),de.stop()});let ge=u(window,"hashchange",()=>Z(!1));O.setFontSize(e.aceOption.fontSize),O.setOptions({fontFamily:"'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace"}),O.container.style.lineHeight="20px",O.renderer.setPadding(16),O.renderer.setScrollMargin(12,12,0,0),O.renderer.updateFontSize(),O.setReadOnly(e.aceOption.readOnly),O.setKeyboardHandler(e.aceOption.keyBinding),O.setSelectionStyle(e.aceOption.fullLineSelection?"line":"text"),O.setOption("displayIndentGuides",!1),O.setHighlightActiveLine(e.aceOption.highlightActiveLine),e.aceOption.cursor=="hide"&&(O.renderer.$cursorLayer.element.style.display="none"),O.setHighlightGutterLine(e.aceOption.highlightGutterLine),O.setShowInvisibles(e.aceOption.showInvisibles),O.setDisplayIndentGuides(e.aceOption.showIndentGuides),O.renderer.setShowPrintMargin(e.aceOption.showPrintMargin),O.setHighlightSelectedWord(e.aceOption.highlightSelectedWord),O.session.setUseSoftTabs(e.aceOption.useSoftTab),O.session.setTabSize(e.aceOption.tabSize),O.setBehavioursEnabled(e.aceOption.enableBehaviours),O.setFadeFoldWidgets(e.aceOption.fadeFoldWidgets);let ae=u(window,"keydown",de=>{if((de.ctrlKey||de.metaKey)&&!de.altKey&&de.key.toLowerCase()==="g"&&document.body.contains(O.container)){de.preventDefault(),e.gotoLine();return}if(de.altKey&&!de.ctrlKey&&!de.metaKey&&de.key.toLowerCase()==="z"&&document.body.contains(O.container)){de.preventDefault(),e.toggleWrap();return}(de.ctrlKey||de.metaKey)&&!de.altKey&&de.key.toLowerCase()==="f"&&document.body.contains(O.container)&&(de.preventDefault(),e.findInFile())});return()=>{ge(),ae()}}},e.isDarkMode&&(e.aceOption.theme="nord_dark"),e.type=Qe(B),e.type=="pdf"){e.content="pdf";return}if(e.type=="media"||e.type=="audio"){e.content=e.type;return}wt(e.filePath,e.file)}let We=["image","media","audio","pdf","IPython","binary"],X=["file_too_big","file_not_found","file_not_accessible","file_not_supported","folder_not_supported"];e.fileFrame=()=>e.filePath?We.includes(e.type)?e.content!=null:e.type==="error"?X.includes(e.content):e.content==null&&["code","text"].includes(e.type):!1,e.fileKind=()=>{let M=(e.paths||[])[(e.paths||[]).length-1]||"",F=M.lastIndexOf("."),B=F>0?M.slice(F+1).toUpperCase():"";if(e.type==="image")return(B==="JPG"?"JPEG":B)+" image";let K={WEBM:"WebM",OGG:"Ogg",OGV:"Ogg",MOV:"QuickTime",M4V:"M4V",MKV:"Matroska"};return e.type==="media"?(K[B]||B)+" video":e.type==="audio"?B+" audio":e.type==="pdf"?"PDF":e.type==="IPython"?"Jupyter notebook":e.type==="binary"?"Binary file":e.languageName||(B?B+" file":"File")},e.imageSize="",e.onImageLoad=M=>{let F=M.target;F?.naturalWidth&&(e.imageSize=`${F.naturalWidth} \xD7 ${F.naturalHeight}`)},e.isSourceAccessError=()=>["repo_not_found","token_expired","github_app_access_required","github_app_reconnect_required","repo_saml_enforcement","repo_access_limited"].includes(e.content),e.retryContent=()=>he();function he(){p++,b(),e.files=[],e.loadedFolders={},e.content=null,e.fileCounts=null,V++,q=new Set,W=!1,e.fileSearchQuery="",e.onFileSearchChange(),e.repoId=i.repoId,e.type="loading",e.filePath=i.path||"",e.paths=e.filePath.split("/");let M=e.repoId;Ee(function(F){if(e.filePath){et();let K=[...new Set(e.paths.map((E,S)=>e.paths.slice(0,S).join("/")))];r.all(K.map(E=>e.getFiles(E,!0)));return}var B=r.resolve();for(let K=0;K0?e.paths.slice(0,K).join("/"):"";B=B.then(function(){return e.getFiles(E)}).then(function(){if(e.type==="error")return r.reject("error")})}B.then(function(){h||M!==e.repoId||(e.files.length==1&&e.files[0].name==""?(e.files=[],e.type="empty"):(I(),et()))})})}he()},kc=function(e,t,o,i,s){async function r(p){t.get(`/api/pr/${e.pullRequestId}/options`).then(y=>{if(e.options=y.data,e.options.url){window.location=e.options.url;return}p&&p(y.data)},y=>{e.type="error",e.content=y.data.error})}async function a(p){t.get(`/api/pr/${e.pullRequestId}/content`).then(y=>{e.details=y.data,e.tabState={active:y.data.diff?"diff":"comments"},p&&p(y.data)},y=>{e.type="error",e.content=y.data.error})}function u(){e.pullRequestId=i.pullRequestId,e.type="loading",r(p=>{a()})}u()},Cc=function(e,t,o,i,s){async function r(p){t.get(`/api/gist/${e.gistId}/options`).then(y=>{if(e.options=y.data,e.options.url){window.location=e.options.url;return}p&&p(y.data)},y=>{e.type="error",e.content=y.data.error})}async function a(p){t.get(`/api/gist/${e.gistId}/content`).then(y=>{e.details=y.data;let m=y.data&&y.data.files&&y.data.files.length;e.tabState={active:m?"files":"comments"},p&&p(y.data)},y=>{e.type="error",e.content=y.data.error})}function u(){e.gistId=i.gistId,e.type="loading",r(()=>{a()})}u()},Ec=function(e,t,o){e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.conferences=[],e.loading=!0,e.error="",e.search="";let i="conferences.filterPrefs",s={filters:{status:{ready:!0,expired:!1,removed:!1}},orderBy:"name"},r=loadFilterPrefs(i)||{};e.filters={status:Object.assign({},s.filters.status,r.filters&&r.filters.status||{})},e.orderBy=r.orderBy||s.orderBy,e.watch("orderBy",()=>{saveFilterPrefs(i,{filters:e.filters,orderBy:e.orderBy})}),e.watch("filters",()=>{saveFilterPrefs(i,{filters:e.filters,orderBy:e.orderBy})},!0),e.removeConference=function(a){if(!a.removing&&confirm(`Are you sure that you want to remove the conference ${a.name}? All the repositories linked to this conference will expire.`)){a.removing=!0;let u=nt({title:`Removing ${a.name}...`,date:new Date,body:`The conference ${a.name} is going to be removed.`});e.addToast(u),t.delete(`/api/conferences/${a.conferenceID}`).then(()=>{u.title=`${a.name} is removed.`,u.body=`The conference ${a.name} is removed.`,e.loadConferences()}).catch(()=>{u.title="Unable to remove conference",u.body="Please try again. The conference has not been removed."}).finally(()=>{a.removing=!1})}},e.loadConferences=()=>(e.loading=!0,e.error="",t.get("/api/conferences/").then(a=>{e.conferences=a.data||[]},a=>{e.error="Unable to load your conferences. Please try again."}).finally(()=>{e.loading=!1})),e.loadConferences(),e.conferenceFilter=a=>{if(e.filters.status[a.status]==!1)return!1;let u=e.search.trim().toLowerCase();return!!(!u||(a.name||"").toLowerCase().includes(u)||(a.conferenceID||"").toLowerCase().includes(u))}},Na=function(e,t,o,i){e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/");let s=()=>{for(let[h,w,A]of[["startDate","Starts","startDate"],["endDate","Ends","endDate"]]){let N=document.getElementById(h);if(!N)continue;let R=N.parentElement.querySelector(":scope > .date-echo");R||(R=document.createElement("p"),R.className="date-echo",R.setAttribute("aria-live","polite"),N.insertAdjacentElement("afterend",R));let v=Yr(e.options?.[A]);R.textContent=v?w+" "+v:"",R.hidden=!v}};typeof e.watchGroup=="function"&&e.watchGroup(["options.startDate","options.endDate"],()=>ot(s));let r=(h=20)=>{let w=document.querySelector("input#name.form-control"),A=document.querySelector("input#conferenceID.form-control");A&&(A.placeholder="e.g. ICSE27"),w?w.placeholder="e.g. ICSE 2027":h>0&&setTimeout(()=>r(h-1),50)};setTimeout(()=>r(),0),e.plans=[],e.plansLoaded=!1,e.conferenceBilling=null,Ri(t).then(h=>{e.conferenceBilling=h.data}).catch(()=>{}),e.conferenceTiers=()=>e.plans.filter(h=>h.id!=="free_conference").map(h=>{let w=(e.conferenceBilling?.plans||[]).find(A=>A.id===h.id)||{};return{...h,storage:h.storagePerRepo,...w,id:h.id,name:h.name}}),e.conferenceAudience=h=>({conference_workshop:"Workshops and small venues",conference:"A typical conference",conference_large:"Large or multi-track venues"})[h]||"",e.conferencePlanName=h=>Sc(h),e.conferenceAmount=(h,w=h?.amount)=>new Intl.NumberFormat(void 0,{style:"currency",currency:h?.currency||"eur",minimumFractionDigits:w%100?2:0,maximumFractionDigits:2}).format(w/100),e.conferenceBytes=h=>{let w=Number(h)||0,A=Math.min(4,Math.floor(Math.log2(Math.max(w,1))/10));return`${new Intl.NumberFormat(void 0,{maximumFractionDigits:1}).format(w/1024**A)} ${["B","KB","MB","GB","TB"][A]}`},e.editionMode=!1,e.saving=!1,e.error="";function a(){return t.get("/api/conferences/"+i.conferenceId).then(h=>{e.options={...e.options,...h.data,billing:h.data.billing||{}},e.options.startDate=new Date(e.options.startDate),e.options.endDate=new Date(e.options.endDate)})}i.conferenceId&&(e.editionMode=!0,a());function u(){t.get("/api/conferences/plans").then(h=>{e.plans=h.data,e.plansLoaded=!0,!e.editionMode&&e.plans.length&&!e.plans.some(w=>w.id==e.options.plan.planID)&&(e.options.plan.planID=(e.plans.find(w=>w.id==="conference")||e.plans[0]).id),e.plan=e.plans.filter(w=>w.id==e.options.plan.planID)[0]})}u();let p=new Date;p.setDate(1),p.setMonth(p.getMonth()+1);let y=new Date(p);y.setTime(p.getTime()+179*864e5),e.options={billing:{},startDate:p,endDate:y,plan:{planID:"free_conference"},options:{link:!0,image:!0,pdf:!0,notebook:!0,update:!0,page:!0}},e.plan=null,e.watch("options.plan.planID",()=>{e.plan=e.plans.filter(h=>h.id==e.options.plan.planID)[0]});function m(){e.conference.name.setValidity("required",!0),e.conference.conferenceID.setValidity("pattern",!0),e.conference.conferenceID.setValidity("required",!0),e.conference.conferenceID.setValidity("used",!0),e.conference.startDate.setValidity("required",!0),e.conference.startDate.setValidity("invalid",!0),e.conference.endDate.setValidity("required",!0),e.conference.endDate.setValidity("invalid",!0),e.conference.setValidity("error",!0)}function b(h){switch(h){case"conf_name_missing":e.conference.name.setValidity("required",!1);break;case"conf_id_missing":e.conference.conferenceID.setValidity("required",!1);break;case"conf_id_format":e.conference.conferenceID.setValidity("pattern",!1);break;case"conf_id_used":e.conference.conferenceID.setValidity("used",!1);break;case"conf_start_date_missing":e.conference.startDate.setValidity("required",!1);break;case"conf_end_date_missing":e.conference.endDate.setValidity("required",!1);break;case"conf_start_date_invalid":e.conference.startDate.setValidity("invalid",!1);break;case"conf_end_date_invalid":e.conference.endDate.setValidity("invalid",!1);break;default:e.conference.setValidity("error",!1);break}}e.submit=function(){if(e.saving)return;e.saving=!0,e.error="";let h=JSON.parse(JSON.stringify(e.options)),w=nt({title:`Creating ${h.name}...`,date:new Date,body:`The conference ${h.conferenceID} is in creation.`});e.editionMode&&(w.title=`Updating ${h.name}...`,w.body=`The conference '${h.conferenceID}' is updating.`),e.addToast(w),m(),t.post("/api/conferences/"+(e.editionMode?h.conferenceID:""),h).then(()=>{e.editionMode?(w.title=`${h.name} updated`,w.body=`The conference '${h.conferenceID}' is updated.`):(w.title=`${h.name} created`,w.body=`The conference '${h.conferenceID}' is created.`),o.url("/conference/"+h.conferenceID)},A=>{b(A.data?.error),e.error="Unable to save the conference. Please correct any highlighted fields and try again.",e.removeToast(w)}).finally(()=>{e.saving=!1})}};function Sc(e){return{free_conference:"Free (no longer offered to new conferences)",conference_workshop:"Workshop package",conference:"Conference package",conference_large:"Large conference package",premium_conference:"Premium (legacy)",unlimited_conference:"Unlimited (legacy)"}[e]||e||"Free"}var Nc=function(e,t,o,i){Di(e,t,()=>u(),{confirmedMessage:"Payment status checked. Your conference is ready for submissions once payment is confirmed."}),e.conferencePlanName=p=>Sc(p),e.watch("user.status",()=>{e.user==null&&o.url("/")}),e.user==null&&o.url("/"),e.conference=null,e.search="",e.filters={status:{ready:!0,preparing:!0,error:!0,expired:!0,removed:!1}},e.orderBy="-anonymizeDate";let s=Ti,r=["ready","preparing","error","expired","removed"],a={current:p=>p!=="removed",attention:p=>p==="error",removed:p=>p==="removed"};e.confView=()=>Object.keys(a).find(p=>r.every(y=>a[p](y)===(e.filters.status[y]!==!1)))||"custom",e.setConfView=p=>{r.forEach(y=>{e.filters.status[y]=(a[p]||a.current)(y)})},e.confCount=p=>(e.conference?.repositories||[]).filter(y=>a[p](s(y.status))).length,e.copyingId=null,e.copyRepoLink=async p=>{if(!p?.repoId||e.copyingId)return;let y=new URL("/r/"+p.repoId+"/",window.location.origin).href;e.copyingId=p.repoId;try{await Ea(y),e.addToast({title:"Link copied",body:"The anonymous link is ready to share."})}catch{e.addToast({title:"Copy this anonymous link",body:y})}finally{e.copyingId=null}},e.extendingId=null,e.extendRepo=p=>{!p?.repoId||e.extendingId||(e.extendingId=p.repoId,t.post("/api/repo/"+p.repoId+"/extend").then(y=>{let m=y?.data?.expirationDate?` until ${new Date(y.data.expirationDate).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}`:"";e.addToast({title:`${p.repoId} is extended.`,body:`Reviewers can open it again${m}.`}),p.status="ready",y?.data?.expirationDate&&(p.options={...p.options||{},expirationDate:y.data.expirationDate}),e.extendingId=null},y=>{let m=y?.status||y?.data?.status;e.addToast({title:`Couldn't extend ${p.repoId}.`,body:m===401||m===403?"Only the repository's authors can extend this link. Ask them to extend it from My work.":"Try again in a moment."}),e.extendingId=null}))},e.repoFiler=p=>{if(e.filters.status[s(p.status)]==!1)return!1;let y=e.search.trim().toLowerCase();return!!(!y||(p.source?.fullName||"").toLowerCase().includes(y)||(p.repoId||"").toLowerCase().includes(y))};function u(){t.get("/api/conferences/"+i.conferenceId).then(p=>{e.conference=p.data})}u()},Rc=function(e,t){e.notificationEmail="",e.emailSaved=!1,e.saveNotificationEmail=async()=>{e.busy=!0,e.emailSaved=!1,e.connectionError="";try{let o=await t.post("/github/connections/email",{email:e.notificationEmail},{headers:{"X-CSRF-Token":e.connections.csrf}});e.notificationEmail=o.data.notificationEmail,e.user&&(e.user.notificationEmail=o.data.notificationEmail),e.emailSaved=!0}catch(o){e.connectionError=o.data?.error||"Unable to save email address."}finally{e.busy=!1}},e.connections=null,e.connectionError="",e.busy=!1,e.loadConnections=()=>t.get("/github/connections").then(o=>{e.connections=o.data,e.notificationEmail=o.data.notificationEmail||""}).catch(o=>{e.connectionError=o.data?.error||"Unable to load connections."}),e.changeConnection=async(o,i,s)=>{e.busy=!0,e.connectionError="";try{let r=await t.post("/github/connections/migrate",{type:o.type,id:o.id,connection:i,preview:s},{headers:{"X-CSRF-Token":e.connections.csrf}});s?o.eligible=r.data.eligible:await e.loadConnections()}catch(r){e.connectionError=r.data?.error||"Unable to change connection."}finally{e.busy=!1}},e.disconnectOAuth=async()=>{e.busy=!0;try{await t.post("/github/connections/disconnect-oauth",{},{headers:{"X-CSRF-Token":e.connections.csrf}}),await e.loadConnections()}catch(o){e.connectionError=o.data?.error||"Unable to disconnect OAuth."}finally{e.busy=!1}},e.loadConnections()},Dc=function(e,t){e.accountRecovery=!1,t.get("/github/account-recovery").then(o=>{e.accountRecovery=o.data.required}).catch(()=>{})};typeof document<"u"&&document.addEventListener("scroll",e=>{let t=e.target;!t||!t.classList||!t.classList.contains("repo-picker-list")||t.classList.toggle("is-end",t.scrollTop+t.clientHeight>=t.scrollHeight-2)},!0);var Ac=[{path:"/review-link",template:"partials/reviewConsent.htm",title:"Artifact consent \u2013 Anonymous GitHub",setup:(e,t)=>Ia(e,t)},{path:"/connections",template:"partials/connections.htm",title:"GitHub connections \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Rc(e,t.http)},{path:"/signin",template:"partials/signin.htm",title:"Sign in \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Dc(e,t.http)},{path:"/",template:"partials/home.htm",title:"Anonymous GitHub \u2013 Share the code, not the author",preserveExplorer:!1,setup:(e,t)=>yc(e,t.http,t.location,t.window,t.timeout)},{path:"/dashboard",template:"partials/dashboard.htm",title:"Your anonymizations \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>bc(e,t.http,t.location,t.promises,t.window,t.quotaService)},{path:"/pr-dashboard",redirect:"/dashboard"},{path:"/anonymize/:repoId?",template:"partials/anonymize.htm",title:"New anonymization \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Hi(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/pull-request-anonymize/:pullRequestId?",template:"partials/anonymize.htm",title:"Anonymize a pull request \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Hi(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/gist-anonymize/:gistId?",template:"partials/anonymize.htm",title:"Anonymize a gist \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Hi(e,t.http,t.html,t.params,t.location,t.translate,t.timeout)},{path:"/status/:repoId",template:"partials/status.htm",title:"Repository status \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>wc(e,t.http,t.params)},{path:"/conferences",template:"partials/conferences.htm",title:"Your conferences \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Ec(e,t.http,t.location)},{path:"/conference/new",template:"partials/newConference.htm",title:"New conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Na(e,t.http,t.location,t.params)},{path:"/conference/:conferenceId/edit",template:"partials/newConference.htm",title:"Edit conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Na(e,t.http,t.location,t.params)},{path:"/conference/:conferenceId",template:"partials/conference.htm",title:"Conference \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Nc(e,t.http,t.location,t.params)},{path:"/faq",template:"partials/faq.htm",title:"FAQ \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>mc(e,t.http)},{path:"/profile",template:"partials/profile.htm",title:"Your settings \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>gc(e,t.http,t.translate,t.timeout,t.quotaService)},{path:"/claim",template:"partials/claim.htm",title:"Claim an anonymization \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>vc(e,t.http,t.location)},{path:"/pr/:pullRequestId/:path(.*)*",template:"partials/pullRequest.htm",title:"Anonymous pull request \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>kc(e,t.http,t.location,t.params,t.html)},{path:"/gist/:gistId/:path(.*)*",template:"partials/gist.htm",title:"Anonymous gist \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>Cc(e,t.http,t.location,t.params,t.html)},{path:"/r/:repoId/:path(.*)*",template:"partials/explorer.htm",title:"Anonymous repository \u2013 Anonymous GitHub",preserveExplorer:!0,setup:(e,t)=>Sa(e,t.http,t.location,t.params,t.html,t.promises)},{path:"/repository/:repoId/:path(.*)*",template:"partials/explorer.htm",title:"Anonymous repository \u2013 Anonymous GitHub",preserveExplorer:!0,setup:(e,t)=>Sa(e,t.http,t.location,t.params,t.html,t.promises)},{path:"/admin/",template:"partials/admin/overview.htm",title:"Admin \xB7 Overview \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>gu(e,t.http,t.location,t.interval)},{path:"/admin/repositories",template:"partials/admin/repositories.htm",title:"Admin \xB7 Repositories \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>uu(e,t.http,t.location)},{path:"/admin/users",template:"partials/admin/users.htm",title:"Admin \xB7 Users \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>cu(e,t.http,t.location)},{path:"/admin/users/:username",template:"partials/admin/user.htm",title:"Admin \xB7 User details \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>pu(e,t.http,t.location,t.params)},{path:"/admin/conferences",template:"partials/admin/conferences.htm",title:"Admin \xB7 Conferences \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>fu(e,t.http,t.location)},{path:"/admin/queues",template:"partials/admin/queues.htm",title:"Admin \xB7 Queues \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>hu(e,t.http,t.location,t.interval,t.timeout)},{path:"/admin/errors",template:"partials/admin/errors.htm",title:"Admin \xB7 Errors \u2013 Anonymous GitHub",preserveExplorer:!1,setup:(e,t)=>mu(e,t.http,t.location,t.interval)},{path:"/404",template:"partials/404.htm",title:"Page not found \u2013 Anonymous GitHub",preserveExplorer:!1,setup:()=>{}},{path:"/:pathMatch(.*)*",template:"partials/404.htm",title:"Page not found \u2013 Anonymous GitHub",setup:()=>{}}];var xg={class:"container py-4",style:{"max-width":"48rem","overflow-wrap":"anywhere"}},ev={key:0},tv={key:1,role:"alert"},nv={key:2,role:"status"},ov={key:0},sv={key:1},iv=["disabled"],rv=["disabled"],av=["disabled"],lv={key:5,class:"mt-4","aria-labelledby":"review-policy-title"},dv={id:"review-policy-title"},uv={key:0,role:"alert"},cv=["disabled"],pv=["disabled"],fv=["disabled"],hv={key:6,role:"status"};function Tc(e,t){return l(),d("section",xg,[t[12]||(t[12]=n("a",{href:"/"},"Anonymous GitHub",-1)),t[13]||(t[13]=n("h1",{class:"mt-3"},"Approve artifact access",-1)),t[14]||(t[14]=n("p",null,"This records your approval as the repository owner or an authorized co-author.",-1)),e.user?.username?f("v-if",!0):(l(),d("p",ev,[...t[6]||(t[6]=[g("Sign in first, then reopen the artifact link from your submission. ",-1),n("a",{href:"/signin"},"Sign in",-1)])])),e.error?(l(),d("p",tv,c(e.error),1)):f("v-if",!0),e.saved?(l(),d("p",nv,[t[7]||(t[7]=g("Consent recorded. ",-1)),e.handoffEnabled?(l(),d("span",ov,"Continue to review to finish linking.")):(l(),d("span",sv,"Artifact linking is not complete. Return to your submission to check its status."))])):f("v-if",!0),e.saved&&e.handoffEnabled?(l(),d("button",{key:3,class:"btn btn-primary",type:"button",onClick:t[0]||(t[0]=(...o)=>e.continueReview&&e.continueReview(...o)),disabled:e.busy},"Continue to review",8,iv)):f("v-if",!0),e.user?.username&&!e.saved?(l(),d("form",{key:4,onSubmit:t[2]||(t[2]=ce((...o)=>e.loadPreview&&e.loadPreview(...o),["prevent"]))},[t[8]||(t[8]=n("label",{for:"review-repository"},"Anonymous repository ID",-1)),P(n("input",{id:"review-repository",class:"form-control","onUpdate:modelValue":t[1]||(t[1]=o=>e.repositoryId=o),maxlength:"128",autocomplete:"off",disabled:e.busy||e.uncertain,"aria-describedby":"review-repository-help"},null,8,rv),[[dt,e.repositoryId]]),t[9]||(t[9]=n("p",{id:"review-repository-help"},"Use the ID after /r/ in the anonymous repository URL.",-1)),n("button",{type:"submit",class:"btn btn-primary",disabled:e.busy||e.uncertain},"Preview access and retention",8,av)],32)):f("v-if",!0),e.preview&&!e.saved?(l(),d("section",lv,[n("h2",dv,c(e.preview.repositoryName),1),n("p",null,"Access: "+c(e.preview.policy.access==="anonymous-link"?"Anyone with the anonymous link":"Restricted review access")+".",1),n("p",null,"Retain until "+c(e.preview.policy.retainUntil)+". Policy version "+c(e.preview.policy.version)+".",1),e.expired?(l(),d("p",uv,"This preview expired. Open a new artifact link from your submission.")):f("v-if",!0),n("div",null,[n("label",null,[P(n("input",{type:"checkbox","onUpdate:modelValue":t[3]||(t[3]=o=>e.acceptAccess=o),disabled:e.busy||e.uncertain||e.expired},null,8,cv),[[_r,e.acceptAccess]]),t[10]||(t[10]=g(" I approve the access policy above.",-1))])]),n("div",null,[n("label",null,[P(n("input",{type:"checkbox","onUpdate:modelValue":t[4]||(t[4]=o=>e.acceptRetention=o),disabled:e.busy||e.uncertain||e.expired},null,8,pv),[[_r,e.acceptRetention]]),t[11]||(t[11]=g(" I approve retention until the date above.",-1))])]),n("button",{class:"btn btn-primary",type:"button",onClick:t[5]||(t[5]=(...o)=>e.confirmConsent&&e.confirmConsent(...o)),disabled:e.busy||e.expired||!e.acceptAccess||!e.acceptRetention},c(e.uncertain?"Retry confirmation":"Confirm consent"),9,fv)])):f("v-if",!0),e.busy?(l(),d("p",hv,"Waiting for the server\u2026")):f("v-if",!0)])}var mv={class:"container paper-page connections-page"},gv={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},vv={key:1,role:"status"},yv=["disabled"],bv={key:3},wv={key:0,class:"connection-resources"},kv=["disabled"],Cv=["disabled"],Ev={key:0,role:"status"},Sv={class:"connections-grid"},Nv={key:0},Rv={class:"connection-title"},Dv={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},Av={class:"connection-actions"},Tv={key:0,class:"btn btn-ink",target:"_self",href:"/github/app/install"},Pv=["disabled"],Ov={key:1,class:"connection-installations"},Iv={key:0},_v=["href"],Mv={class:"sr-only"},Vv={class:"connection-title"},qv={key:0,target:"_self",href:"/github/login",class:"btn btn-outline-ink"},$v={key:1,class:"connection-revoke"},Lv={key:0},Uv=["disabled"],Fv={class:"connection-resources"},Bv={class:"connection-title"},zv={class:"connection-count"},Hv={key:0,class:"connection-empty"},jv={class:"connection-resource-name"},Gv={key:0,class:"connection-resource-actions"},Wv=["disabled","onClick"],Kv=["disabled","onClick"],Yv={key:1,class:"connection-help",role:"status"},Xv=["disabled","onClick"];function Pc(e,t){return l(),d("div",mv,[t[27]||(t[27]=Ce('
My work \xA0/\xA0 GitHub connections

GitHub connections

Manage how GitHub shares your code. Your anonymizations and URLs stay the same.

',2)),e.connectionError?(l(),d("p",gv,c(e.connectionError),1)):f("v-if",!0),!e.connections&&!e.connectionError?(l(),d("p",vv,"Loading your connections\u2026")):f("v-if",!0),!e.connections&&e.connectionError?(l(),d("button",{key:2,class:"btn btn-outline-ink",disabled:e.busy,onClick:t[0]||(t[0]=o=>e.loadConnections())},"Try again",8,yv)):f("v-if",!0),e.connections?(l(),d("div",bv,[e.connections.emailNotificationsEnabled?(l(),d("section",wv,[t[6]||(t[6]=n("h2",null,"Email alerts",-1)),t[7]||(t[7]=n("p",null,"We will email you if your GitHub connection stops working or a repository becomes inaccessible. Your address is never shown on anonymous pages.",-1)),n("form",{onSubmit:t[2]||(t[2]=ce(o=>e.saveNotificationEmail(),["prevent"]))},[t[5]||(t[5]=n("label",{for:"notification-email"},"Email address",-1)),P(n("input",{id:"notification-email",class:"form-control",type:"email",autocomplete:"email",maxlength:"254",required:"","onUpdate:modelValue":t[1]||(t[1]=o=>e.notificationEmail=o),disabled:e.busy},null,8,kv),[[dt,e.notificationEmail]]),n("button",{class:"btn btn-ink mt-2",type:"submit",disabled:e.busy},"Save email address",8,Cv),e.emailSaved?(l(),d("p",Ev,"Email address saved.")):f("v-if",!0)],32)])):f("v-if",!0),n("div",Sv,[e.connections.appEnabled?(l(),d("section",Nv,[t[15]||(t[15]=n("div",{class:"connection-top"},[n("i",{class:"fab fa-github","aria-hidden":"true"}),n("span",{class:"connection-badge"},"Recommended")],-1)),n("div",Rv,[t[8]||(t[8]=n("h2",null,"GitHub App",-1)),n("span",{class:T(["connection-status",{"is-connected":e.connections.appConnected&&!e.connections.appError}])},c(e.connections.appError?"Needs attention":e.connections.appConnected?"Connected":"Not connected"),3)]),t[16]||(t[16]=n("p",null,"Read-only access to gists and the repositories you choose.",-1)),e.connections.appError?(l(),d("p",Dv,c(e.connections.appError)+". Reconnect to restore access.",1)):f("v-if",!0),n("div",Av,[e.connections.appConnected&&!e.connections.appError?(l(),d("a",Tv,[...t[9]||(t[9]=[g("Manage repository access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):f("v-if",!0),n("a",{class:T(e.connections.appConnected&&!e.connections.appError?"connection-link":"btn btn-ink"),target:"_self",href:"/github/app/login"},c(e.connections.appConnected?"Reconnect account":"Connect GitHub account"),3),e.connections.appConnected?(l(),d("button",{key:1,class:"connection-link connection-refresh",title:"Refresh access",disabled:e.busy,onClick:t[3]||(t[3]=o=>e.loadConnections())},[...t[10]||(t[10]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),n("span",{class:"sr-only"},"Refresh access",-1)])],8,Pv)):f("v-if",!0)]),t[17]||(t[17]=n("p",{class:"connection-help"},"Choose repositories on GitHub. Organization access may need an administrator's approval.",-1)),e.connections.installations?.length?(l(),d("ul",Ov,[(l(!0),d(L,null,ie(e.connections.installations,o=>(l(),d("li",{key:o.id},[n("div",null,[t[11]||(t[11]=n("span",{class:"connection-label"},"Installed on",-1)),t[12]||(t[12]=g()),n("strong",null,c(o.account),1),o.suspended?(l(),d("span",Iv," \xB7 Suspended")):f("v-if",!0)]),e.connections.installations.length>1?(l(),d("a",{key:0,target:"_self",href:"/github/app/install?installationId="+o.id},[t[13]||(t[13]=g("Manage access ",-1)),n("span",Mv,"for "+c(o.account),1),t[14]||(t[14]=g(" \u2192",-1))],8,_v)):f("v-if",!0)]))),128))])):f("v-if",!0)])):f("v-if",!0),n("section",null,[t[20]||(t[20]=n("div",{class:"connection-top"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-key"})]),n("span",{class:"connection-badge connection-badge-muted"},"Legacy")],-1)),n("div",Vv,[t[18]||(t[18]=n("h2",null,"GitHub OAuth",-1)),n("span",{class:T(["connection-status",{"is-connected":e.connections.oauthConnected}])},c(e.connections.oauthConnected?"Connected":"Not connected"),3)]),t[21]||(t[21]=n("p",null,"For existing OAuth anonymizations.",-1)),t[22]||(t[22]=n("p",{class:"connection-help"},"This connection uses GitHub's broader repository permissions. Existing work keeps using it until you switch below.",-1)),e.connections.oauthEnabled?(l(),d("a",qv,c(e.connections.oauthConnected?"Reconnect OAuth":"Connect legacy OAuth"),1)):f("v-if",!0),e.connections.oauthConnected?(l(),d("div",$v,[e.connections.gistCount?(l(),d("p",Lv,c(e.connections.gistCount)+" gist(s) use your GitHub App connection when available.",1)):f("v-if",!0),t[19]||(t[19]=n("p",null,"Switch all dependent repositories before revoking access. Gists can use your GitHub App connection.",-1)),e.connections.appConnected?(l(),d("button",{key:1,class:"btn btn-sm btn-outline-danger connection-danger",disabled:e.busy||e.connections.resources.some(o=>o.connection==="oauth"),onClick:t[4]||(t[4]=o=>e.disconnectOAuth())},"Revoke OAuth access",8,Uv)):f("v-if",!0)])):f("v-if",!0)])]),n("section",Fv,[n("div",Bv,[t[23]||(t[23]=n("h2",null,"Repository connections",-1)),n("span",zv,c(e.connections.resources?.length||0)+" "+c((e.connections.resources?.length||0)===1?"resource":"resources"),1)]),t[25]||(t[25]=n("p",null,"Check access, then switch each resource to the GitHub App. After reinstalling the App, reconnect existing resources here to keep their anonymous URLs and published snapshots.",-1)),e.connections.resources?.length?f("v-if",!0):(l(),d("div",Hv,[...t[24]||(t[24]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),n("div",null,[n("h3",null,"No repository connections yet"),n("p",null,"Your repositories and pull requests will appear here once you anonymize them.")],-1),n("a",{class:"connection-link",href:"/anonymize"},"New anonymization \u2192",-1)])])),(l(!0),d(L,null,ie(e.connections.resources,o=>(l(),d("div",{class:"connection-resource",key:o.type+o.id},[n("div",jv,[n("strong",null,c(o.name||o.id),1),n("small",null,c(o.type)+" \xB7 "+c(o.id),1)]),n("span",{class:T(["connection-badge",{"connection-badge-muted":o.connection==="oauth"}])},c(o.connection==="github-app"?"Read-only App":"Legacy OAuth"),3),!["archived","removed","preparing","queue","removing","expiring"].includes(o.status)&&(o.status!=="download"||o.type==="pull-request"&&(!o.statusDate||new Date(o.statusDate).getTime()<=Date.now()-3e5))&&e.connections.appEnabled&&e.connections.appConnected?(l(),d("div",Gv,[n("button",{class:"btn btn-outline-ink",disabled:e.busy,onClick:i=>e.changeConnection(o,"github-app",!0)},"Check read-only access",8,Wv),o.eligible?(l(),d("button",{key:0,class:"btn btn-ink",disabled:e.busy,onClick:i=>e.changeConnection(o,"github-app",!1)},c(o.connection==="github-app"?"Reconnect read-only access":"Switch to read-only access"),9,Kv)):f("v-if",!0),o.eligible===!1?(l(),d("span",Yv,"Access unavailable. Allow this repository on GitHub, then check again.")):f("v-if",!0)])):f("v-if",!0),!["archived","removed","preparing","queue","removing","expiring"].includes(o.status)&&(o.status!=="download"||o.type==="pull-request"&&(!o.statusDate||new Date(o.statusDate).getTime()<=Date.now()-3e5))&&o.connection==="github-app"&&e.connections.oauthConnected?(l(),d("button",{key:1,class:"connection-link",disabled:e.busy,onClick:i=>e.changeConnection(o,"oauth",!1)},"Use OAuth",8,Xv)):f("v-if",!0)]))),128)),t[26]||(t[26]=n("p",{class:"connection-footnote"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),g(" Removing access stops new fetches from GitHub. Published content keeps its current expiration and removal settings.")],-1))])])):f("v-if",!0)])}var Jv={class:"container paper-page auth-page"},Qv={class:"auth-layout"},Zv={class:"auth-options"},xv={key:0},ey={key:0,class:"btn btn-ink auth-continue",target:"_self",href:"/github/login?recover=1"},ty={key:1},ny={key:1,class:"auth-card"},oy={key:2,class:"auth-legacy"},sy={key:3,role:"status"};function Oc(e,t){let o=Ye("partial-view");return l(),d(L,null,[n("div",Jv,[n("div",Qv,[t[4]||(t[4]=Ce('
Your research, ready for review

Your code.
Your identity,
protected.
Sign in to GitHub

Sign in to create and manage your anonymizations.

',1)),n("div",Zv,[e.accountRecovery?(l(),d("section",xv,[t[0]||(t[0]=n("h2",null,"Verify your existing account",-1)),t[1]||(t[1]=n("p",null,"We found an existing account. Verify it with your previous GitHub connection to keep your anonymizations. Future sign-ins will use the GitHub App.",-1)),e.site_options?.GITHUB_OAUTH_ENABLED?(l(),d("a",ey,"Verify with previous GitHub connection")):(l(),d("p",ty,"Account verification is currently unavailable. Please try again later."))])):f("v-if",!0),e.site_options?.GITHUB_APP_ENABLED&&!e.accountRecovery?(l(),d("section",ny,[...t[2]||(t[2]=[Ce('

Continue with GitHub

Connect through the GitHub App with read-only repository access.

  • You choose which repositories to share
  • No permission to write to your code
Sign in with GitHubYour existing anonymizations and connections stay with your account.',5)])])):f("v-if",!0),!e.site_options?.GITHUB_APP_ENABLED&&e.site_options?.GITHUB_OAUTH_ENABLED&&!e.accountRecovery?(l(),d("section",oy,[...t[3]||(t[3]=[n("div",{class:"connection-title"},[n("h2",null,"Continue with GitHub")],-1),n("p",null,"Sign in to access your account. GitHub OAuth includes write access to private repositories.",-1),n("a",{class:"connection-link",target:"_self",href:"/github/login"},[g("Sign in with GitHub "),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-arrow-right"})])],-1)])])):f("v-if",!0),e.site_options&&!e.site_options.GITHUB_APP_ENABLED&&!e.site_options.GITHUB_OAUTH_ENABLED?(l(),d("p",sy,"GitHub sign-in is currently unavailable. Please try again later.")):f("v-if",!0)])])]),Me(o,{name:"partials/footer.htm",state:e.viewState},null,8,["state"])],64)}function Ic(e,t){let o=Ye("partial-view");return l(),d(L,null,[t[0]||(t[0]=Ce('
Error \xB7 404

This link
isn\u2019t here.

The anonymous mirror you\u2019re looking for has expired, been removed by its owner, or never existed. If you received this URL from an author, ask them to re-issue it.

',1)),Me(o,{name:"partials/footer.htm",state:e.viewState},null,8,["state"])],64)}var iy={class:"container paper-page admin-page"},ry={class:"seg-bar"},ay={class:"seg-filter",role:"radiogroup","aria-label":"Filter by status"},ly=["aria-checked"],dy={class:"count"},uy=["aria-checked"],cy={class:"count"},py=["aria-checked"],fy={class:"count"},hy=["aria-checked"],my={class:"count"},gy=["aria-checked"],vy={class:"count"},yy=["aria-checked"],by={class:"count"},wy={class:"seg-countline",role:"status"},ky={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},Cy={class:"w-100 admin-filter-toolbar","aria-label":"Conferences","accept-charset":"UTF-8"},Ey={class:"admin-filter-row"},Sy={class:"search-wrap"},Ny={type:"search",class:"form-control",placeholder:"Search conferences\u2026",autocomplete:"off"},Ry={key:0,class:"admin-search-hint"},Dy={key:1,class:"admin-filter-inline","aria-label":"Pagination"},Ay=["disabled"],Ty={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},Py=["disabled"],Oy={key:0,class:"admin-filter-row"},Iy={class:"admin-active-chips"},_y={class:"key"},My=["onClick"],Vy={class:"paper-table paper-table-conferences w-100",role:"table","aria-label":"Conferences"},qy={key:0,class:"paper-table-head",role:"row"},$y={role:"columnheader"},Ly={role:"columnheader"},Uy={role:"columnheader"},Fy={class:"paper-table-row",role:"row"},By={class:"cell-anon",role:"cell"},zy={class:"anon-text"},Hy=["textContent","href"],jy={class:"anon-sub"},Gy={class:"cell-status",role:"cell"},Wy=["textContent"],Ky={class:"cell-views num",role:"cell"},Yy=["textContent","href"],Xy={class:"cell-expires",role:"cell"},Jy={class:"cell-actions",role:"cell"},Qy={class:"dropdown"},Zy={class:"dropdown-menu dropdown-menu-right"},xy=["href"],eb=["href"],tb=["href"],ob=["onClick"],sb={key:1,class:"paper-table-empty"},ib={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},rb={key:0,class:"pagination-compact"},ab=["disabled"],lb=["max"],db=["disabled"],ub={class:"admin-filter-inline"},cb={class:"form-control form-control-sm"};function _c(e,t){let o=Pe("field"),i=Pe("form");return l(),d("div",iy,[t[55]||(t[55]=Ce('
Admin \xA0/\xA0 Conferences

Conferences

',3)),n("div",ry,[n("div",ay,[n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="all"}]),"aria-checked":e.segView()==="all",onClick:t[0]||(t[0]=s=>e.setSegView("all"))},[t[14]||(t[14]=g("All ",-1)),n("span",dy,c(e.fmt?.number(e.segCount("all"))),1)],10,ly),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="ready","is-empty":!e.segCount("ready")}]),"aria-checked":e.segView()==="ready",onClick:t[1]||(t[1]=s=>e.setSegView("ready"))},[t[15]||(t[15]=n("span",{class:"seg-dot ok","aria-hidden":"true"},null,-1)),t[16]||(t[16]=g("Ready ",-1)),n("span",cy,c(e.fmt?.number(e.segCount("ready"))),1)],10,uy),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="preparing","is-empty":!e.segCount("preparing")}]),"aria-checked":e.segView()==="preparing",onClick:t[2]||(t[2]=s=>e.setSegView("preparing"))},[t[17]||(t[17]=n("span",{class:"seg-dot warn","aria-hidden":"true"},null,-1)),t[18]||(t[18]=g("Preparing ",-1)),n("span",fy,c(e.fmt?.number(e.segCount("preparing"))),1)],10,py),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="error","is-empty":!e.segCount("error")}]),"aria-checked":e.segView()==="error",onClick:t[3]||(t[3]=s=>e.setSegView("error"))},[t[19]||(t[19]=n("span",{class:"seg-dot bad","aria-hidden":"true"},null,-1)),t[20]||(t[20]=g("Error ",-1)),n("span",my,c(e.fmt?.number(e.segCount("error"))),1)],10,hy),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="expired","is-empty":!e.segCount("expired")}]),"aria-checked":e.segView()==="expired",onClick:t[4]||(t[4]=s=>e.setSegView("expired"))},[t[21]||(t[21]=n("span",{class:"seg-dot off","aria-hidden":"true"},null,-1)),t[22]||(t[22]=g("Expired ",-1)),n("span",vy,c(e.fmt?.number(e.segCount("expired"))),1)],10,gy),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="removed","is-empty":!e.segCount("removed")}]),"aria-checked":e.segView()==="removed",onClick:t[5]||(t[5]=s=>e.setSegView("removed"))},[t[23]||(t[23]=n("span",{class:"seg-dot off","aria-hidden":"true"},null,-1)),t[24]||(t[24]=g("Removed ",-1)),n("span",by,c(e.fmt?.number(e.segCount("removed"))),1)],10,yy)]),n("p",wy,[n("strong",null,c(e.total>=0?e.fmt.number(e.total):"\u2026"),1),t[25]||(t[25]=g(" shown",-1))])]),e.fetchError?(l(),d("div",ky,[t[26]||(t[26]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),g(" "+c(e.fetchError),1)])):f("v-if",!0),P((l(),d("form",Cy,[n("div",Ey,[n("div",Sy,[P(n("input",Ny,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?f("v-if",!0):(l(),d("span",Ry,"/"))]),t[30]||(t[30]=n("span",{class:"admin-filter-spacer"},null,-1)),e.total>0?(l(),d("button",{key:0,class:"btn btn-sm",type:"button",onClick:t[6]||(t[6]=s=>e.exportCsv())},[...t[27]||(t[27]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),g(" Export",-1)])])):f("v-if",!0),e.totalPage>1?(l(),d("span",Dy,[n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[7]||(t[7]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[28]||(t[28]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,Ay),n("span",Ty,c(e.query?.page)+"/"+c(e.totalPage||1),1),n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[8]||(t[8]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[29]||(t[29]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,Py)])):f("v-if",!0)]),e.chips?.length?(l(),d("div",Oy,[n("div",Iy,[(l(!0),d(L,null,ie(e.chips,(s,r)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[n("span",_y,c(s?.label),1),n("span",null,c(s?.value),1),n("button",{type:"button",onClick:a=>e.clearFilter(s.key),"aria-label":"Clear filter"},[...t[31]||(t[31]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,My)]))),128))])])):f("v-if",!0)])),[[i,e.viewState]]),n("div",Vy,[e.total!==0?(l(),d("div",qy,[n("div",$y,[n("button",{type:"button",class:T(["sortable",{active:e.query?.sort=="name"}]),onClick:t[9]||(t[9]=s=>e.sortBy("name"))},[t[33]||(t[33]=g("Conference ",-1)),e.sortIcon("name")?(l(),d("svg",{key:0,class:T(["ui-icon sort-direction",{ascending:e.sortIcon("name")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[32]||(t[32]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),n("div",Ly,[n("button",{type:"button",class:T(["sortable",{active:e.query?.sort=="status"}]),onClick:t[10]||(t[10]=s=>e.sortBy("status"))},[t[35]||(t[35]=g("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:T(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[34]||(t[34]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),t[38]||(t[38]=n("div",{role:"columnheader",class:"num"},"Repos",-1)),n("div",Uy,[n("button",{type:"button",class:T(["sortable",{active:e.query?.sort=="startDate"}]),onClick:t[11]||(t[11]=s=>e.sortBy("startDate"))},[t[37]||(t[37]=g("Window ",-1)),e.sortIcon("startDate")?(l(),d("svg",{key:0,class:T(["ui-icon sort-direction",{ascending:e.sortIcon("startDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[36]||(t[36]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),t[39]||(t[39]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))])):f("v-if",!0),(l(!0),d(L,null,ie(e.filteredConferences,(s,r)=>(l(),d("div",Fy,[n("div",By,[t[40]||(t[40]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Conference"},[n("use",{href:"#project-icon-conference"})],-1)),n("div",zy,[n("a",{class:"repo-name",textContent:c(s?.name),href:e.safeUrl("/conference/"+s?.conferenceID)},null,8,Hy),n("div",jy,[n("span",null,c(s?.conferenceID),1),n("span",null,c(e.fmt?.money(s?.price||0)),1)])])]),n("div",Gy,[n("span",{class:T(["status-dot","st-"+(s?.status||"unknown")])},null,2),n("span",{textContent:c(e.fmt?.statusLabel(s?.status))},null,8,Wy)]),n("div",Ky,[t[41]||(t[41]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1)),n("a",{title:"Show repositories in this conference",textContent:c(e.fmt?.number(s?.repositories?.length||0)),href:e.safeUrl("/admin/?conference="+s?.conferenceID)},null,8,Yy)]),n("div",Xy,[t[42]||(t[42]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),g(" "+c(e.fmt?.date(s?.startDate))+" \u2013 "+c(e.fmt?.date(s?.endDate)),1)]),n("div",Jy,[n("div",Qy,[t[48]||(t[48]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",Zy,[n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/edit")},[...t[43]||(t[43]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),g(" Edit",-1)])],8,xy),n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/")},[...t[44]||(t[44]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),g(" View",-1)])],8,eb),n("a",{class:"dropdown-item",href:e.safeUrl("/admin/?conference="+s?.conferenceID)},[...t[45]||(t[45]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),g(" View repositories",-1)])],8,tb),t[47]||(t[47]=n("div",{class:"dropdown-divider"},null,-1)),P(n("a",{class:"dropdown-item text-danger",href:"#",onClick:ce(a=>e.removeConference(s),["prevent"])},[...t[46]||(t[46]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),g(" Remove",-1)])],8,ob),[[ee,s?.status!="removed"]])])])])]))),256)),e.filteredConferences?.length==0?(l(),d("div",sb,[t[49]||(t[49]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),n("span",null,c(e.total?"No conferences match the current filters.":"No conferences yet."),1)])):f("v-if",!0)]),n("div",ib,[t[54]||(t[54]=n("span",{"aria-hidden":"true"},null,-1)),e.totalPage>1?(l(),d("div",rb,[n("button",{class:"btn btn-sm",onClick:t[12]||(t[12]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[50]||(t[50]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1),g(" Previous",-1)])],8,ab),P(n("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},max:e.totalPage},null,8,lb),[[o,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),n("span",null,"of "+c(e.totalPage),1),n("button",{class:"btn btn-sm",onClick:t[13]||(t[13]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[51]||(t[51]=[g("Next ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,db)])):f("v-if",!0),n("span",ub,[t[53]||(t[53]=n("label",null,"Per page",-1)),P((l(),d("select",cb,[...t[52]||(t[52]=[Ce('',5)])])),[[o,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var pb={class:"container paper-page admin-page errors-page"},fb={class:"errors-header"},hb={class:"errors-actions"},mb={class:"kpi-grid"},gb={class:"kpi-card"},vb={class:"kpi-value"},yb={key:0},bb={key:1},wb={key:2},kb=["aria-pressed"],Cb={class:"kpi-value"},Eb={class:"kpi-sub"},Sb=["aria-pressed"],Nb={class:"kpi-value"},Rb={class:"kpi-sub"},Db=["aria-pressed"],Ab={class:"kpi-value"},Tb={class:"kpi-sub"},Pb={class:"kpi-value"},Ob={class:"kpi-sub"},Ib={key:0,class:"dropped-warn"},_b={class:"volume-chart"},Mb={class:"volume-head"},Vb={class:"volume-legend"},qb={key:0},$b={key:1},Lb={key:2},Ub={class:"volume-bars"},Fb=["title"],Bb={class:"errors-toolbar","aria-label":"Error filters"},zb={class:"seg-filter",role:"radiogroup","aria-label":"Filter by severity"},Hb=["aria-checked"],jb={class:"count"},Gb=["aria-checked"],Wb={class:"count"},Kb=["aria-checked"],Yb={class:"count"},Xb=["aria-checked"],Jb={class:"count"},Qb={class:"search-wrap"},Zb={type:"search",class:"form-control",placeholder:"Search errors\u2026",title:"Search messages, or filter with code:repo_not_found module:route status:>=400",autocomplete:"off"},xb={key:0,class:"filter-count"},e1={class:"select-wrap"},t1={class:"form-control form-control-sm"},n1={class:"select-wrap"},o1={class:"form-control form-control-sm"},s1={class:"autoref"},i1={type:"checkbox"},r1={key:0,class:"admin-empty"},a1={key:1,class:"errors-pager"},l1={key:2,class:"errors-list"},d1={key:0,class:"errors-group-head"},u1={class:"errors-group-count"},c1={key:0,class:"errors-group-note"},p1=["onClick"],f1={class:"col-when"},h1={class:"when-rel"},m1={class:"when-abs"},g1={class:"col-sev"},v1={class:"sev-label"},y1={class:"col-mod"},b1={class:"pill pill-module"},w1={class:"col-msg"},k1={class:"msg-code"},C1={key:0,class:"msg-context"},E1={key:1,class:"msg-detail"},S1=["title"],N1={class:"col-count"},R1={key:0,class:"count-pill"},D1={key:1,class:"count-pill count-pill-muted"},A1={class:"col-status"},T1=["title"],P1={key:1,class:"status-empty",title:"No HTTP status for this event"},O1={key:0,class:"errors-row-detail"},I1={class:"detail-tabs"},_1=["onClick"],M1=["onClick"],V1=["onClick"],q1={class:"detail-body"},$1={class:"detail-main"},L1={key:0},U1={key:1,class:"stack-pre"},F1={key:2,class:"related-list"},B1={class:"when-abs"},z1={class:"msg-url"},H1={class:"detail-actions"},j1=["onClick"],G1=["onClick"],W1={key:0,class:"copy-hint"},K1={class:"detail-aside"},Y1={class:"aside-block"},X1=["title"],J1={class:"aside-block"},Q1=["title"],Z1={class:"aside-block"},x1={class:"aside-value"},ew={key:0,class:"aside-sub"},tw={key:0,class:"aside-block"},nw=["href"],ow={key:1,class:"aside-block"},sw={class:"aside-value mono"};function Mc(e,t){let o=Pe("field"),i=Pe("form");return l(),d("div",pb,[t[49]||(t[49]=n("div",{class:"paper-crumbs"},[g("Admin \xA0/\xA0 "),n("span",{class:"here"},"Errors")],-1)),n("header",fb,[t[16]||(t[16]=n("h1",{class:"paper-page-title"},"Errors",-1)),n("div",hb,[n("button",{class:"btn btn-sm",type:"button",onClick:t[0]||(t[0]=s=>e.exportCsv())},[...t[14]||(t[14]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),g(" Export CSV",-1)])]),n("button",{class:"btn btn-sm btn-outline-danger",type:"button",onClick:t[1]||(t[1]=s=>e.clearAll())},[...t[15]||(t[15]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),g(" Clear all",-1)])])])]),t[50]||(t[50]=Ce('',1)),n("section",mb,[n("div",gb,[t[17]||(t[17]=n("div",{class:"kpi-label"},"Occurrences \xB7 24h",-1)),n("div",vb,c(e.fmt?.number(e.stats?.last24h??0)),1),n("div",{class:T(["kpi-sub",{up:e.stats?.delta>0,down:e.stats?.delta<0}])},[e.stats?.prev24h>=20?(l(),d("span",yb,c((e.stats?.last24h??0)-(e.stats?.prev24h??0)>=0?"+":"")+c(Math.round(((e.stats?.last24h??0)-(e.stats?.prev24h??0))/e.stats.prev24h*100))+"% vs yesterday",1)):e.stats?.prev24h!==void 0?(l(),d("span",bb,c(e.fmt?.number(e.stats?.prev24h??0))+" in prior 24h",1)):f("v-if",!0),e.stats?.prev24h?f("v-if",!0):(l(),d("span",wb,"no prior baseline"))],2)]),n("div",{class:T(["kpi-card kpi-error kpi-filter",{"is-selected":e.query?.bucket==="error"}]),role:"button",tabindex:"0","aria-pressed":e.query?.bucket==="error",title:"Show only errors (5xx)",onClick:t[2]||(t[2]=s=>e.setBucket(e.query?.bucket==="error"?"":"error")),onKeydown:t[3]||(t[3]=mt(ce(s=>e.setBucket(e.query?.bucket==="error"?"":"error"),["prevent"]),["enter"]))},[t[18]||(t[18]=n("div",{class:"kpi-label"},"Error",-1)),n("div",Cb,c(e.fmt?.number(e.stats?.severity?.error??0)),1),n("div",Eb,"5xx \xB7 "+c(e.stats?.unique?.error)+" unique",1)],42,kb),n("div",{class:T(["kpi-card kpi-warn kpi-filter",{"is-selected":e.query?.bucket==="warn"}]),role:"button",tabindex:"0","aria-pressed":e.query?.bucket==="warn",title:"Show only warnings (4xx, aborted requests)",onClick:t[4]||(t[4]=s=>e.setBucket(e.query?.bucket==="warn"?"":"warn")),onKeydown:t[5]||(t[5]=mt(ce(s=>e.setBucket(e.query?.bucket==="warn"?"":"warn"),["prevent"]),["enter"]))},[t[19]||(t[19]=n("div",{class:"kpi-label"},"Warning",-1)),n("div",Nb,c(e.fmt?.number(e.stats?.severity?.warn??0)),1),n("div",Rb,"4xx, aborted \xB7 "+c(e.stats?.unique?.warn)+" unique",1)],42,Sb),n("div",{class:T(["kpi-card kpi-info kpi-filter",{"is-selected":e.query?.bucket==="info"}]),role:"button",tabindex:"0","aria-pressed":e.query?.bucket==="info",title:"Show only info events",onClick:t[6]||(t[6]=s=>e.setBucket(e.query?.bucket==="info"?"":"info")),onKeydown:t[7]||(t[7]=mt(ce(s=>e.setBucket(e.query?.bucket==="info"?"":"info"),["prevent"]),["enter"]))},[t[20]||(t[20]=n("div",{class:"kpi-label"},"Info",-1)),n("div",Ab,c(e.fmt?.number(e.stats?.severity?.info??0)),1),n("div",Tb,"Auth, 404 \xB7 "+c(e.stats?.unique?.info)+" unique",1)],42,Db),n("div",{class:T(["kpi-card",{"kpi-error":e.stats?.dropped>0}])},[t[21]||(t[21]=n("div",{class:"kpi-label"},"Distinct errors stored",-1)),n("div",Pb,c(e.fmt?.number(e.total)),1),n("div",Ob,[g(" all time \xB7 cap "+c(e.fmt?.number(e.cap))+" \xB7 "+c(e.available?"live":"redis off")+" ",1),e.stats?.dropped>0?(l(),d("span",Ib," \xB7 "+c(e.stats?.dropped)+" dropped",1)):f("v-if",!0)])],2)]),n("section",_b,[n("div",Mb,[t[25]||(t[25]=n("span",{class:"volume-title"},"Volume \xB7 24h \xB7 1h buckets",-1)),n("span",Vb,[e.stats?.severity?.error?(l(),d("span",qb,[...t[22]||(t[22]=[n("span",{class:"dot dot-error"},null,-1),g("Error",-1)])])):f("v-if",!0),e.stats?.severity?.warn?(l(),d("span",$b,[...t[23]||(t[23]=[n("span",{class:"dot dot-warn"},null,-1),g("Warning",-1)])])):f("v-if",!0),e.stats?.severity?.info?(l(),d("span",Lb,[...t[24]||(t[24]=[n("span",{class:"dot dot-info"},null,-1),g("Info",-1)])])):f("v-if",!0)])]),n("div",Ub,[(l(!0),d(L,null,ie(e.stats?.buckets,(s,r)=>(l(),d("div",{class:"volume-bar",key:r,title:e.bucketTitle(s)},[n("span",{class:"seg seg-error",style:$e({height:e.barPx(s,"error")+"px"})},null,4),n("span",{class:"seg seg-warn",style:$e({height:e.barPx(s,"warn")+"px"})},null,4),n("span",{class:"seg seg-info",style:$e({height:e.barPx(s,"info")+"px"})},null,4)],8,Fb))),128))]),t[26]||(t[26]=n("div",{class:"volume-axis","aria-hidden":"true"},[n("span",null,"24h ago"),n("span",null,"12h ago"),n("span",null,"now")],-1))]),P((l(),d("form",Bb,[n("div",zb,[n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:(e.query?.bucket||"")===""}]),"aria-checked":(e.query?.bucket||"")==="",onClick:t[8]||(t[8]=s=>e.setBucket(""))},[t[27]||(t[27]=g("All ",-1)),n("span",jb,c(e.fmt?.number((e.stats?.severity?.error??0)+(e.stats?.severity?.warn??0)+(e.stats?.severity?.info??0))),1)],10,Hb),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:(e.query?.bucket||"")==="error","is-empty":!e.stats?.severity?.error}]),"aria-checked":(e.query?.bucket||"")==="error",onClick:t[9]||(t[9]=s=>e.setBucket("error"))},[t[28]||(t[28]=n("span",{class:"seg-dot bad","aria-hidden":"true"},null,-1)),t[29]||(t[29]=g("Error ",-1)),n("span",Wb,c(e.fmt?.number(e.stats?.severity?.error??0)),1)],10,Gb),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:(e.query?.bucket||"")==="warn","is-empty":!e.stats?.severity?.warn}]),"aria-checked":(e.query?.bucket||"")==="warn",onClick:t[10]||(t[10]=s=>e.setBucket("warn"))},[t[30]||(t[30]=n("span",{class:"seg-dot warn","aria-hidden":"true"},null,-1)),t[31]||(t[31]=g("Warning ",-1)),n("span",Yb,c(e.fmt?.number(e.stats?.severity?.warn??0)),1)],10,Kb),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:(e.query?.bucket||"")==="info","is-empty":!e.stats?.severity?.info}]),"aria-checked":(e.query?.bucket||"")==="info",onClick:t[11]||(t[11]=s=>e.setBucket("info"))},[t[32]||(t[32]=n("span",{class:"seg-dot off","aria-hidden":"true"},null,-1)),t[33]||(t[33]=g("Info ",-1)),n("span",Jb,c(e.fmt?.number(e.stats?.severity?.info??0)),1)],10,Xb)]),n("div",Qb,[t[34]||(t[34]=n("svg",{class:"ui-icon search-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)),P(n("input",Zb,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.parsedFilterCount?(l(),d("span",xb,c(e.parsedFilterCount)+" filter"+c(e.parsedFilterCount>1?"s":""),1)):f("v-if",!0)]),n("div",e1,[t[36]||(t[36]=n("label",null,"Sort",-1)),P((l(),d("select",t1,[...t[35]||(t[35]=[n("option",{value:"recent"},"Most recent",-1),n("option",{value:"count"},"Most frequent",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.sort=s},value:e.query?.sort,form:null,options:{}}]])]),n("div",n1,[t[38]||(t[38]=n("label",{title:"Rows are always sectioned by severity. This merges repeated events inside each section."},"Merge",-1)),P((l(),d("select",o1,[...t[37]||(t[37]=[n("option",{value:""},"Don't merge",-1),n("option",{value:"code"},"Same error",-1),n("option",{value:"module"},"Same module",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.group=s},value:e.query?.group,form:null,options:{}}]])]),n("label",s1,[P(n("input",i1,null,512),[[o,{state:e.viewState,set:s=>{e.query.autoRefresh=s},value:e.query?.autoRefresh,form:null,options:{}}]]),t[39]||(t[39]=n("span",{class:"auto-refresh-label"},"Auto-refresh",-1))]),n("button",{class:"btn btn-sm btn-icon",type:"button",title:"Refresh now",onClick:t[12]||(t[12]=s=>e.refreshNow()),"aria-label":"Refresh"},[...t[40]||(t[40]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])])])),[[i,e.viewState]]),e.visible?.length?f("v-if",!0):(l(),d("div",r1,"No errors captured.")),e.canLoadMore()&&e.visible?.length?(l(),d("div",a1,[n("span",null,c(e.query?.group&&e.visible?.length!==e.entries?.length?e.fmt?.number(e.visible?.length)+(e.visible?.length===1?" group":" groups")+" from ":"")+c(e.fmt?.number(e.entries?.length))+" of "+c(e.fmt?.number(e.total))+" stored errors loaded",1),n("button",{class:"btn btn-sm",type:"button",onClick:t[13]||(t[13]=s=>e.loadMore())},"Load 250 older")])):f("v-if",!0),e.visible?.length?(l(),d("div",l1,[t[48]||(t[48]=Ce('
WhenSeverityModuleMessageTotalStatus
',1)),(l(!0),d(L,null,ie(e.visible,(s,r)=>(l(),d(L,{key:s?._key},[r===0||e.visible[r-1]?._bucket!==s?._bucket?(l(),d("div",d1,[n("span",{class:T(["sev-dot","sev-"+s?._bucket])},null,2),g(c(s?._bucket==="error"?"Error":s?._bucket==="warn"?"Warning":"Info"),1),n("span",u1,c(e.fmt?.number(e.visible.filter(a=>a?._bucket===s?._bucket).length)),1),r===0?(l(),d("span",c1,"By severity \xB7 "+c(e.query?.group==="code"?"repeats merged by error \xB7 ":e.query?.group==="module"?"repeats merged by module \xB7 ":"")+c(e.query?.sort==="count"?"most frequent first":"most recent first"),1)):f("v-if",!0)])):f("v-if",!0),n("div",{class:T(["errors-row",{open:e.expanded[s?._key]}])},[n("div",{class:"errors-row-main",onClick:a=>e.toggle(s)},[n("div",f1,[n("div",h1,c(e.relTime(s?.ts)),1),n("div",m1,c(e.absTimeShort(s?.ts)),1)]),n("div",g1,[n("span",{class:T(["sev-dot","sev-"+s?._bucket])},null,2),n("span",v1,c(s?._bucket==="error"?"Error":s?._bucket==="warn"?"Warning":"Info"),1)]),n("div",y1,[n("span",b1,c(s?.module),1)]),n("div",w1,[n("strong",k1,c(s?.displayMessage),1),s?.displayContext&&s?.displayContext!==s?.displayMessage?(l(),d("span",C1,c(s?.displayContext),1)):f("v-if",!0),s?._detail?(l(),d("span",E1,c(s?._detail),1)):f("v-if",!0),s?._url?(l(),d("div",{key:2,class:"msg-url",title:s?._url},c(s?._url),9,S1)):f("v-if",!0)]),n("div",N1,[s?.count>1?(l(),d("span",R1,"\xD7"+c(s?.count),1)):f("v-if",!0),s?.count===1?(l(),d("span",D1,"\xD71")):f("v-if",!0)]),n("div",A1,[s?._status?(l(),d("span",{key:0,class:T(["status-pill",String(s?._status).match(/^[23]/)?"status-neutral":"status-"+s?._bucket]),title:String(s?._status).match(/^2/)&&s?._bucket==="warn"?"Client closed the connection":null},c(String(s?._status).match(/^2/)&&s?._bucket==="warn"?"\u2014":s?._status),11,T1)):f("v-if",!0),s?._status?f("v-if",!0):(l(),d("span",P1,"\u2014"))])],8,p1),e.expanded[s?._key]?(l(),d("div",O1,[n("div",I1,[n("button",{type:"button",class:T({active:e.detailTab[s?._key]==="raw"||!e.detailTab[s?._key]}),onClick:a=>e.detailTab[s._key]="raw"},"Raw",10,_1),s?._stack?(l(),d("button",{key:0,type:"button",class:T({active:e.detailTab[s?._key]==="stack"}),onClick:a=>e.detailTab[s._key]="stack"},"Stack",10,M1)):f("v-if",!0),s?.count>1?(l(),d("button",{key:1,type:"button",class:T({active:e.detailTab[s?._key]==="related"}),onClick:a=>e.detailTab[s._key]="related"},"Related ("+c(s?.count)+")",11,V1)):f("v-if",!0)]),n("div",q1,[n("div",$1,[(e.detailTab[s?._key]||"raw")==="raw"?(l(),d("pre",L1,c(s?._detailJson),1)):f("v-if",!0),e.detailTab[s?._key]==="stack"?(l(),d("pre",U1,c(s?._stack),1)):f("v-if",!0),e.detailTab[s?._key]==="related"?(l(),d("div",F1,[(l(!0),d(L,null,ie(s?._related,(a,u)=>(l(),d("div",{class:"related-row",key:u},[n("span",B1,c(e.absTimeShort(a?.ts)),1),n("span",z1,c(a?._url),1),a?._status?(l(),d("span",{key:0,class:T(["status-pill","status-"+a?._bucket])},c(a?._status),3)):f("v-if",!0)]))),128))])):f("v-if",!0),n("div",H1,[n("button",{class:"btn btn-sm",type:"button",title:"Copy a curl that reproduces the request",onClick:a=>e.copyCurl(s)},[...t[41]||(t[41]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),g(" Copy curl",-1)])],8,j1),n("button",{class:"btn btn-sm",type:"button",onClick:a=>e.copyJson(s)},[...t[42]||(t[42]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-clipboard"})],-1),g(" Copy JSON",-1)])],8,G1),e.copyHint?(l(),d("span",W1,c(e.copyHint),1)):f("v-if",!0)])]),n("aside",K1,[n("div",Y1,[t[43]||(t[43]=n("div",{class:"aside-label"},"First seen",-1)),n("div",{class:"aside-value",title:e.absTime(s?._firstSeen)},c(e.relTime(s?._firstSeen)),9,X1)]),n("div",J1,[t[44]||(t[44]=n("div",{class:"aside-label"},"Last seen",-1)),n("div",{class:"aside-value",title:e.absTime(s?.ts)},c(e.relTime(s?.ts)),9,Q1)]),n("div",Z1,[t[45]||(t[45]=n("div",{class:"aside-label"},"Occurrences",-1)),n("div",x1,[g(c(s?.count),1),s?._lastHourCount?(l(),d("span",ew," \xB7 "+c(s?._lastHourCount)+" this hour",1)):f("v-if",!0)])]),s?._repoId?(l(),d("div",tw,[t[46]||(t[46]=n("div",{class:"aside-label"},"Repository",-1)),n("a",{class:"aside-value",href:e.safeUrl("/r/"+s?._repoId)},c(s?._repoId),9,nw)])):f("v-if",!0),s?._url?(l(),d("div",ow,[t[47]||(t[47]=n("div",{class:"aside-label"},"URL",-1)),n("div",sw,c(s?._url),1)])):f("v-if",!0)])])])):f("v-if",!0)],2)],64))),128))])):f("v-if",!0)])}var iw={class:"container paper-page admin-page overview-page"},rw={key:0,class:"admin-empty"},aw={key:1,class:"alert alert-danger",style:{margin:"12px 0"}},lw={class:"ov-views",role:"tablist","aria-label":"Overview sections"},dw=["aria-selected","onClick"],uw={key:2},cw={key:0,class:"ov-health",role:"status"},pw={class:"ov-kpi-row"},fw={class:"ov-kpi-card"},hw={class:"ov-kpi-value"},mw={class:"ov-kpi-sub"},gw={class:"ov-kpi-card"},vw={class:"ov-kpi-sub"},yw={class:"ov-kpi-card"},bw={class:"ov-kpi-sub"},ww={class:"ov-kpi-card"},kw={class:"ov-kpi-sub"},Cw={class:"ov-kpi-card"},Ew={class:"ov-kpi-value"},Sw={class:"ov-kpi-sub"},Nw={class:"ov-daily-row"},Rw={class:"ov-daily-card"},Dw={class:"ov-daily-value"},Aw={class:"ov-daily-card"},Tw={class:"ov-daily-value"},Pw={class:"ov-daily-sub"},Ow={class:"ov-daily-card"},Iw={class:"ov-daily-value"},_w={class:"ov-chart-card"},Mw={class:"ov-chart-head"},Vw={class:"ov-chart-legends"},qw={class:"ov-chart-legend"},$w={key:0,class:"ov-legend-missing"},Lw={key:0,class:"ov-spark-bars ov-has-axis"},Uw={class:"ov-yaxis","aria-hidden":"true"},Fw=["data-tip","aria-label"],Bw={key:1,class:"ov-spark-x"},zw={class:"ov-chart-card"},Hw={class:"ov-chart-head"},jw={class:"ov-chart-legends"},Gw={class:"ov-chart-legend"},Ww={key:0,class:"ov-legend-missing"},Kw={key:0,class:"ov-spark-bars ov-has-axis"},Yw={class:"ov-yaxis","aria-hidden":"true"},Xw=["data-tip","aria-label"],Jw={key:1,class:"ov-spark-x"},Qw={key:0,class:"ov-chart-card"},Zw={class:"ov-chart-head"},xw={class:"ov-chart-legends"},ek={class:"ov-chart-legend"},tk={key:0,class:"ov-legend-missing"},nk={key:0,class:"ov-spark-bars ov-spark-step ov-has-axis"},ok={class:"ov-yaxis","aria-hidden":"true"},sk=["viewBox","aria-label"],ik=["d"],rk=["d"],ak={key:1,class:"ov-spark-x"},lk={class:"ov-chart-card"},dk={class:"ov-chart-head"},uk={class:"ov-chart-legends"},ck={class:"ov-chart-legend"},pk={key:0,class:"ov-legend-missing"},fk={key:0,class:"ov-spark-bars ov-has-axis"},hk={class:"ov-yaxis","aria-hidden":"true"},mk=["data-tip","aria-label"],gk={key:1,class:"ov-spark-x"},vk={class:"ov-triple-row"},yk={class:"ov-panel-card"},bk={class:"ov-panel-head"},wk={class:"ov-panel-meta"},kk={class:"ov-stacked-bar"},Ck={class:"ov-bar-legend"},Ek={href:"/admin/repositories",class:"ov-legend-item"},Sk={class:"ov-legend-n"},Nk={href:"/admin/repositories",class:"ov-legend-item"},Rk={class:"ov-legend-n"},Dk={href:"/admin/repositories",class:"ov-legend-item"},Ak={class:"ov-legend-n"},Tk={href:"/admin/repositories",class:"ov-legend-item"},Pk={class:"ov-legend-n"},Ok={href:"/admin/repositories",class:"ov-legend-item"},Ik={class:"ov-legend-n"},_k={class:"ov-panel-card"},Mk={class:"ov-panel-head"},Vk={class:"ov-panel-meta"},qk={class:"ov-error-bars"},$k={class:"ov-ebar-row"},Lk={class:"ov-ebar-track"},Uk={class:"ov-ebar-n"},Fk={class:"ov-ebar-row"},Bk={class:"ov-ebar-track"},zk={class:"ov-ebar-n"},Hk={key:0,class:"ov-ehours",role:"img","aria-label":"Errors per hour over the last 24 hours"},jk={class:"ov-ehours-legend"},Gk={class:"ov-ehours-note"},Wk={class:"ov-ehours-bars"},Kk=["title"],Yk={key:0,class:"ov-ehours-zero"},Xk={class:"ov-ebar-note"},Jk={key:0,class:"ov-panel-foot"},Qk={href:"/admin/errors"},Zk={class:"ov-panel-card"},xk={class:"ov-routes-table"},e0={class:"ov-route-row",href:"/admin/queues"},t0={class:"ov-route-n"},n0={class:"ov-route-n"},o0={class:"ov-route-row",href:"/admin/queues"},s0={class:"ov-route-n"},i0={class:"ov-route-n"},r0={class:"ov-route-row",href:"/admin/queues"},a0={class:"ov-route-n"},l0={class:"ov-route-n"},d0={class:"ov-services-card"},u0={class:"ov-services-head"},c0={class:"ov-panel-meta"},p0={class:"ov-services-grid"},f0={class:"ov-svc"},h0={class:"ov-svc-info"},m0={class:"ov-svc-meta"},g0={class:"ov-svc"},v0={class:"ov-svc-info"},y0={key:0,class:"ov-svc-meta"},b0={key:1,class:"ov-svc-meta"},w0={class:"ov-svc"},k0={class:"ov-svc-info"},C0={key:0,class:"ov-svc-meta"},E0={key:1,class:"ov-svc-meta"},S0={class:"ov-svc"},N0={class:"ov-svc-info"},R0={key:0,class:"ov-svc-meta"},D0={key:1,class:"ov-svc-meta"},A0={class:"ov-svc"},T0=["title"],P0={class:"ov-svc-info"},O0={class:"ov-svc-meta"},I0={class:"ov-panel-card ov-cache","aria-labelledby":"cache-heading"},_0={class:"ov-panel-head ov-performance-head"},M0={class:"ov-performance-window"},V0={key:0,class:"ov-performance-message ov-performance-warning",role:"alert"},q0={key:1,class:"ov-performance-empty",role:"status"},$0={key:0,class:"ov-performance-note"},L0={key:1,class:"ov-performance-note"},U0={key:2,class:"ov-performance-message ov-performance-warning",role:"status"},F0={key:3,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Cache storage budgets"},B0={class:"ov-metrics-table"},z0={scope:"row",class:"ov-event-name"},H0=["title"],j0={key:0,class:"ov-metric-bad-text"},G0={key:1,class:"budget-bar","aria-hidden":"true"},W0={class:"num"},K0={class:"num"},Y0={class:"num"},X0={class:"num"},J0={key:4,class:"ov-cache-rates"},Q0={key:5,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Cache events and processing durations"},Z0={class:"ov-metrics-table"},x0={scope:"row",class:"ov-event-name"},e2={class:"ov-event-traffic"},t2={class:"num"},n2={class:"num"},o2={key:6,class:"ov-performance-empty",role:"status"},s2={class:"ov-performance-note"},i2={class:"ov-panel-card ov-performance","aria-labelledby":"performance-heading"},r2={class:"ov-panel-head ov-performance-head"},a2={class:"ov-performance-window"},l2={key:0,class:"ov-performance-message ov-performance-warning",role:"alert"},d2={key:1,class:"ov-performance-empty",role:"status"},u2={key:2},c2={id:"performance-routes",role:"region","aria-label":"Routes"},p2={key:0,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Route latency metrics, scroll for more columns"},f2={class:"ov-metrics-table"},h2={scope:"row",class:"ov-metric-name"},m2={class:"num"},g2={class:"num"},v2={class:"num"},y2={class:"num"},b2={class:"num"},w2={key:1,class:"ov-performance-empty"},k2={id:"performance-processes",role:"region","aria-label":"Processes"},C2={key:0,class:"ov-performance-message ov-performance-warning",role:"status"},E2={key:1,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Process resource metrics, scroll for more columns"},S2={class:"ov-metrics-table"},N2={scope:"row",class:"ov-metric-name"},R2={key:0,class:"ov-metric-warn"},D2={class:"num"},A2={class:"num"},T2={class:"num"},P2={class:"num"},O2={class:"num"},I2={class:"num"},_2={class:"num"},M2={class:"num"},V2={id:"performance-stages",role:"region","aria-label":"Work stages"},q2={key:0,class:"ov-metrics-scroll",tabindex:"0",role:"region","aria-label":"Work stage metrics, scroll for more columns"},$2={class:"ov-metrics-table"},L2={scope:"row",class:"ov-metric-name"},U2={class:"num"},F2={class:"num"},B2={class:"num"},z2={key:1,class:"ov-performance-empty"};function Vc(e,t){return l(),d("div",iw,[t[95]||(t[95]=Ce('
Admin \xA0/\xA0 Overview

Overview

Live \xB7 refreshes every 30s
',2)),e.loading?(l(),d("div",rw,"Loading overview\u2026")):f("v-if",!0),e.error?(l(),d("div",aw,[t[8]||(t[8]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),g(" "+c(e.error),1)])):f("v-if",!0),n("div",lw,[(l(),d(L,null,ie([{id:"summary",label:"Summary"},{id:"performance",label:"Performance"},{id:"cache",label:"Cache"}],o=>n("button",{type:"button",role:"tab",key:o.id,"aria-selected":e.ovView===o.id?"true":"false",class:T({active:e.ovView===o.id}),onClick:i=>e.setOvView(o.id)},c(o.label),11,dw)),64))]),e.data?P((l(),d("div",uw,[e.data?.system?.memPercent>90||e.data?.system?.diskPercent>90?(l(),d("div",cw,[t[10]||(t[10]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),n("span",null,[t[9]||(t[9]=n("b",null,"Server needs attention.",-1)),g(" "+c(e.healthAlert()),1)])])):f("v-if",!0),f(" \u2500\u2500 Top KPI row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",pw,[n("div",fw,[t[11]||(t[11]=n("div",{class:"ov-kpi-label"},"Live repositories",-1)),n("div",hw,c(e.humanNum((e.data?.repos?.statusBreakdown||[]).filter(o=>o._id!=="removed"&&o._id!=="expired").reduce((o,i)=>o+(i.count||0),0))),1),n("div",mw,c(e.humanNum(((e.data?.repos?.statusBreakdown||[]).find(o=>o._id==="removed")||{}).count||0))+" removed \xB7 "+c(e.humanNum(e.data?.repos?.total))+" total",1)]),n("div",gw,[t[12]||(t[12]=n("div",{class:"ov-kpi-label"},"CPU",-1)),n("div",{class:T(["ov-kpi-value",{"ov-val-warn":e.data?.system?.cpuPercent>=75}])},c(e.data?.system?.cpuPercent)+"%",3),n("div",{class:T(["ov-meter",{warn:e.data?.system?.cpuPercent>=75,crit:e.data?.system?.cpuPercent>90}])},[n("span",{style:$e({width:Math.min(100,e.data?.system?.cpuPercent||0)+"%"})},null,4)],2),n("div",vw,[e.data?.system?.cpuPercent>=75?(l(),d("b",{key:0,class:T(["ov-flag",{critical:e.data?.system?.cpuPercent>90}])},c(e.data?.system?.cpuPercent>90?"Critical":"High")+" \xB7 ",3)):f("v-if",!0),g(c(e.data?.system?.cpuCount)+" cores \xB7 load "+c(e.data?.system?.loadAvg?.[0]?.toFixed(1)),1)])]),n("div",yw,[t[13]||(t[13]=n("div",{class:"ov-kpi-label"},"Memory",-1)),n("div",{class:T(["ov-kpi-value",{"ov-val-warn":e.data?.system?.memPercent>=75}])},c(e.data?.system?.memPercent)+"%",3),n("div",{class:T(["ov-meter",{warn:e.data?.system?.memPercent>=75,crit:e.data?.system?.memPercent>90}])},[n("span",{style:$e({width:Math.min(100,e.data?.system?.memPercent||0)+"%"})},null,4)],2),n("div",bw,[e.data?.system?.memPercent>=75?(l(),d("b",{key:0,class:T(["ov-flag",{critical:e.data?.system?.memPercent>90}])},c(e.data?.system?.memPercent>90?"Critical":"High")+" \xB7 ",3)):f("v-if",!0),g(c(e.humanBytes(e.data?.system?.memUsed).replace(/\s*GB$/,""))+" / "+c(e.humanBytes(e.data?.system?.memTotal)),1)])]),n("div",ww,[t[14]||(t[14]=n("div",{class:"ov-kpi-label"},"Disk",-1)),n("div",{class:T(["ov-kpi-value",{"ov-val-warn":e.data?.system?.diskPercent>=75}])},c(e.data?.system?.diskPercent)+"%",3),n("div",{class:T(["ov-meter",{warn:e.data?.system?.diskPercent>=75,crit:e.data?.system?.diskPercent>90}])},[n("span",{style:$e({width:Math.min(100,e.data?.system?.diskPercent||0)+"%"})},null,4)],2),n("div",kw,[e.data?.system?.diskPercent>=75?(l(),d("b",{key:0,class:T(["ov-flag",{critical:e.data?.system?.diskPercent>90}])},c(e.data?.system?.diskPercent>90?"Critical":"High")+" \xB7 ",3)):f("v-if",!0),g(c(e.humanBytes(e.data?.system?.diskUsed).replace(/\s*GB$/,""))+" / "+c(e.humanBytes(e.data?.system?.diskTotal)),1),e.data?.system?.diskMount&&e.data.system.diskMount!=="/"?(l(),d(L,{key:1},[g(" \xB7 "+c(e.data?.system?.diskMount),1)],64)):f("v-if",!0)])]),n("div",Cw,[t[15]||(t[15]=n("div",{class:"ov-kpi-label"},"Uptime",-1)),n("div",Ew,c(e.humanDuration(e.data?.system?.uptime)),1),n("div",Sw,c(e.data?.system?.nodeVersion)+" \xB7 "+c(e.data?.system?.platform),1)])]),f(" \u2500\u2500 Daily activity highlights \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",Nw,[n("div",Rw,[t[16]||(t[16]=n("div",{class:"ov-daily-label"},"New repos today",-1)),n("div",Dw,c(e.fmt?.number(e.data?.daily?.today?.repositories||0)),1),t[17]||(t[17]=n("div",{class:"ov-daily-sub"},"so far today",-1))]),n("div",Aw,[t[18]||(t[18]=n("div",{class:"ov-daily-label"},"New users today",-1)),n("div",Tw,c(e.fmt?.number(e.data?.daily?.today?.users||0)),1),n("div",Pw,c(e.fmt?.number(e.data?.users?.total))+" total \xB7 +"+c(e.fmt?.number(e.usersGained()))+" in 30 days",1)]),n("div",Ow,[t[19]||(t[19]=n("div",{class:"ov-daily-label"},"Page views today",-1)),n("div",Iw,c(e.fmt?.number(e.data?.daily?.today?.pageViews||0)),1),t[20]||(t[20]=n("div",{class:"ov-daily-sub"},"so far today",-1))])]),f(" \u2500\u2500 Daily charts \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",{class:T(["ov-chart-row",{"is-three":e.usersTiny()}])},[n("div",_w,[n("div",Mw,[t[23]||(t[23]=n("span",{class:"ov-chart-title"},"Daily page views \xB7 30d",-1)),n("span",Vw,[n("span",qw,[t[21]||(t[21]=n("span",{class:"ov-dot-legend ov-dot-accent"},null,-1)),g("views/day \xB7 peak "+c(e.fmt?.number(e.historyMax("dailyPageViews"))),1)]),e.historyHasMissing()?(l(),d("span",$w,[...t[22]||(t[22]=[n("span",{class:"ov-swatch-missing","aria-hidden":"true"},null,-1),g("No data",-1)])])):f("v-if",!0)])]),e.data?.history?.length?(l(),d("div",Lw,[n("div",Uw,[n("span",null,c(e.fmt?.number(e.axisMax("dailyPageViews"))),1),n("span",null,c(e.fmt?.number(e.axisMax("dailyPageViews")/2)),1),t[24]||(t[24]=n("span",null,"0",-1))]),(l(!0),d(L,null,ie(e.data?.history,(o,i)=>(l(),d("div",{class:T(["ov-spark-col has-tip",{"is-missing":o?._empty}]),key:i,"data-tip":o?._empty?e.historyLabel(o)+": no data":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyPageViews)+(o?.dailyPageViews===1?" view":" views"),"aria-label":o?._empty?e.historyLabel(o)+": no data":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyPageViews)+(o?.dailyPageViews===1?" view":" views")},[n("span",{class:"ov-spark-fill",style:$e({height:e.historyBarH(o,"dailyPageViews")+"px"})},null,4)],10,Fw))),128))])):f("v-if",!0),e.data?.history?.length?(l(),d("div",Bw,[n("span",null,c(e.historyLabel(e.data?.history[0])),1),n("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):f("v-if",!0)]),n("div",zw,[n("div",Hw,[t[27]||(t[27]=n("span",{class:"ov-chart-title"},"New repos \xB7 30d",-1)),n("span",jw,[n("span",Gw,[t[25]||(t[25]=n("span",{class:"ov-dot-legend ov-dot-ok-fill"},null,-1)),g("repos/day \xB7 peak "+c(e.fmt?.number(e.historyMax("dailyRepositories"))),1)]),e.historyHasMissing()?(l(),d("span",Ww,[...t[26]||(t[26]=[n("span",{class:"ov-swatch-missing","aria-hidden":"true"},null,-1),g("No data",-1)])])):f("v-if",!0)])]),e.data?.history?.length?(l(),d("div",Kw,[n("div",Yw,[n("span",null,c(e.fmt?.number(e.axisMax("dailyRepositories"))),1),n("span",null,c(e.fmt?.number(e.axisMax("dailyRepositories")/2)),1),t[28]||(t[28]=n("span",null,"0",-1))]),(l(!0),d(L,null,ie(e.data?.history,(o,i)=>(l(),d("div",{class:T(["ov-spark-col has-tip",{"is-missing":o?._empty}]),key:i,"data-tip":o?._empty?e.historyLabel(o)+": no data":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyRepositories)+(o?.dailyRepositories===1?" repo":" repos"),"aria-label":o?._empty?e.historyLabel(o)+": no data":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyRepositories)+(o?.dailyRepositories===1?" repo":" repos")},[n("span",{class:"ov-spark-fill ov-spark-fill-alt",style:$e({height:e.historyBarH(o,"dailyRepositories")+"px"})},null,4)],10,Xw))),128))])):f("v-if",!0),e.data?.history?.length?(l(),d("div",Jw,[n("span",null,c(e.historyLabel(e.data?.history[0])),1),n("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):f("v-if",!0)]),e.usersTiny()?f("v-if",!0):(l(),d("div",Qw,[n("div",Zw,[t[31]||(t[31]=n("span",{class:"ov-chart-title"},"Users \xB7 30d",-1)),n("span",xw,[n("span",ek,[t[29]||(t[29]=n("span",{class:"ov-dot-legend ov-dot-user-fill"},null,-1)),g("total users \xB7 "+c(e.fmt?.number(e.historyRange("nbUsers").max))+" now \xB7 +"+c(e.fmt?.number(Math.max(0,e.historyRange("nbUsers").max-e.usersFirst())))+" in 30 days",1)]),e.historyHasMissing()?(l(),d("span",tk,[...t[30]||(t[30]=[n("span",{class:"ov-swatch-missing","aria-hidden":"true"},null,-1),g("No data",-1)])])):f("v-if",!0)])]),e.data?.history?.length?(l(),d("div",nk,[n("div",ok,[n("span",null,c(e.fmt?.number(e.userAxis().hi)),1),n("span",null,c(e.fmt?.number((e.userAxis().hi+e.userAxis().lo)/2)),1),n("span",null,c(e.fmt?.number(e.userAxis().lo)),1)]),(l(),d("svg",{class:"ov-step-svg",viewBox:"0 0 "+e.data.history.length+" 140",preserveAspectRatio:"none",role:"img","aria-label":"Total users over 30 days, from "+e.fmt?.number(e.usersFirst())+" to "+e.fmt?.number(e.historyRange("nbUsers").max)},[e.userAxis().lo===0?(l(),d("path",{key:0,class:"ov-step-area",d:e.userStepPath(!0)},null,8,ik)):f("v-if",!0),n("path",{class:"ov-step-line",d:e.userStepPath(!1),"vector-effect":"non-scaling-stroke"},null,8,rk)],8,sk)),e.firstDataIndex()>0?(l(),d("div",{key:0,class:"ov-step-missing",style:$e({width:e.firstDataIndex()/e.data.history.length*100+"%"})},null,4)):f("v-if",!0)])):f("v-if",!0),e.data?.history?.length?(l(),d("div",ak,[n("span",null,c(e.historyLabel(e.data?.history[0])),1),n("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):f("v-if",!0)])),n("div",lk,[n("div",dk,[t[34]||(t[34]=n("span",{class:"ov-chart-title"},"New users \xB7 30d",-1)),n("span",uk,[n("span",ck,[t[32]||(t[32]=n("span",{class:"ov-dot-legend ov-dot-new-user-fill"},null,-1)),g("users/day \xB7 peak "+c(e.fmt?.number(e.historyMax("dailyUsers"))),1)]),e.historyHasMissing()?(l(),d("span",pk,[...t[33]||(t[33]=[n("span",{class:"ov-swatch-missing","aria-hidden":"true"},null,-1),g("No data",-1)])])):f("v-if",!0)])]),e.data?.history?.length?(l(),d("div",fk,[n("div",hk,[n("span",null,c(e.fmt?.number(e.axisMax("dailyUsers"))),1),n("span",null,c(e.fmt?.number(e.axisMax("dailyUsers")/2)),1),t[35]||(t[35]=n("span",null,"0",-1))]),(l(!0),d(L,null,ie(e.data?.history,(o,i)=>(l(),d("div",{class:T(["ov-spark-col has-tip",{"is-missing":o?._empty}]),key:i,"data-tip":o?._empty?e.historyLabel(o)+": no data":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyUsers)+(o?.dailyUsers===1?" user":" users"),"aria-label":o?._empty?e.historyLabel(o)+": no data":e.historyLabel(o)+": +"+e.fmt?.number(o?.dailyUsers)+(o?.dailyUsers===1?" user":" users")},[n("span",{class:"ov-spark-fill ov-spark-fill-new-user",style:$e({height:e.historyBarH(o,"dailyUsers")+"px"})},null,4)],10,mk))),128))])):f("v-if",!0),e.data?.history?.length?(l(),d("div",gk,[n("span",null,c(e.historyLabel(e.data?.history[0])),1),n("span",null,c(e.historyLabel(e.data?.history[Math?.floor(e.data?.history?.length/2)])),1),n("span",null,c(e.historyLabel(e.data?.history[e.data?.history?.length-1])),1)])):f("v-if",!0)])],2),f(" \u2500\u2500 Three-panel row: Status / Errors / Queues \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",vk,[f(" Repo status breakdown "),n("div",yk,[n("div",bk,[t[36]||(t[36]=n("span",{class:"ov-panel-title"},"Repo status",-1)),n("span",wk,c(e.fmt?.number(e.data?.repos?.total))+" total",1)]),n("div",kk,[e.barPct("ready")>0?(l(),d("span",{key:0,class:"ov-bar-seg ov-bar-ready",title:"Ready",style:$e({width:e.barPct("ready")+"%"})},null,4)):f("v-if",!0),e.barPct("preparing")>0?(l(),d("span",{key:1,class:"ov-bar-seg ov-bar-preparing",title:"Preparing",style:$e({width:e.barPct("preparing")+"%"})},null,4)):f("v-if",!0),e.barPct("error")>0?(l(),d("span",{key:2,class:"ov-bar-seg ov-bar-error",title:"Error",style:$e({width:e.barPct("error")+"%"})},null,4)):f("v-if",!0),e.barPct("expired")>0?(l(),d("span",{key:3,class:"ov-bar-seg ov-bar-expired",title:"Expiring / expired",style:$e({width:e.barPct("expired")+"%"})},null,4)):f("v-if",!0),e.barPct("removed")>0?(l(),d("span",{key:4,class:"ov-bar-seg ov-bar-removed",title:"Removing / removed",style:$e({width:e.barPct("removed")+"%"})},null,4)):f("v-if",!0)]),n("div",Ck,[n("a",Ek,[t[37]||(t[37]=n("span",{class:"ov-swatch ov-bar-ready"},null,-1)),t[38]||(t[38]=g(" Ready ",-1)),n("span",Sk,c(e.fmt?.number(e.statusCount("ready"))),1)]),n("a",Nk,[t[39]||(t[39]=n("span",{class:"ov-swatch ov-bar-preparing"},null,-1)),t[40]||(t[40]=g(" Preparing ",-1)),n("span",Rk,c(e.fmt?.number(e.statusCount("preparing")+e.statusCount("download"))),1)]),n("a",Dk,[t[41]||(t[41]=n("span",{class:"ov-swatch ov-bar-error"},null,-1)),t[42]||(t[42]=g(" Error ",-1)),n("span",Ak,c(e.fmt?.number(e.statusCount("error"))),1)]),n("a",Tk,[t[43]||(t[43]=n("span",{class:"ov-swatch ov-bar-expired"},null,-1)),t[44]||(t[44]=g(" Expiring / expired ",-1)),n("span",Pk,c(e.fmt?.number(e.statusCount("expired")+e.statusCount("expiring"))),1)]),n("a",Ok,[t[45]||(t[45]=n("span",{class:"ov-swatch ov-bar-removed"},null,-1)),t[46]||(t[46]=g(" Removing / removed ",-1)),n("span",Ik,c(e.fmt?.number(e.statusCount("removed")+e.statusCount("removing"))),1)])])]),f(" Error breakdown "),n("div",_k,[n("div",Mk,[t[47]||(t[47]=n("span",{class:"ov-panel-title"},"Errors \xB7 24h",-1)),n("span",Vk,c(e.fmt?.number(e.realErrors()))+" "+c(e.realErrors()===1?"error":"errors"),1)]),n("div",qk,[n("div",$k,[t[48]||(t[48]=n("span",{class:"ov-ebar-label"},"Error",-1)),n("span",Lk,[n("span",{class:"ov-ebar-fill ov-ebar-error",style:$e({width:e.errPct("error")+"%"})},null,4)]),n("span",Uk,c(e.data?.errors?.severity?.error),1)]),n("div",Fk,[t[49]||(t[49]=n("span",{class:"ov-ebar-label"},"Warning",-1)),n("span",Bk,[n("span",{class:"ov-ebar-fill ov-ebar-warn",style:$e({width:e.errPct("warn")+"%"})},null,4)]),n("span",zk,c(e.data?.errors?.severity?.warn),1)]),e.errorHours().length?(l(),d("div",Hk,[n("div",jk,[t[52]||(t[52]=n("span",{class:"ov-ehours-key"},[n("span",{class:"ov-ehours-swatch is-error","aria-hidden":"true"}),g("Error")],-1)),t[53]||(t[53]=n("span",{class:"ov-ehours-key"},[n("span",{class:"ov-ehours-swatch is-warn","aria-hidden":"true"}),g("Warning")],-1)),n("span",Gk,[t[50]||(t[50]=g("Per hour",-1)),t[51]||(t[51]=n("span",{class:"seg-sep","aria-hidden":"true"},"\xB7",-1)),g("peak "+c(e.fmt?.number(e.errorHoursPeak())),1)])]),n("div",Wk,[(l(!0),d(L,null,ie(e.errorHours(),o=>(l(),d("span",{key:o.key,class:T({"is-bad":o.bad,"is-zero":o.zero}),title:o.title},[o.zero?(l(),d("i",Yk)):(l(),d(L,{key:1},[o.errPct?(l(),d("i",{key:0,class:"ov-ehours-e",style:$e({height:o.errPct+"%"})},null,4)):f("v-if",!0),o.warnPct?(l(),d("i",{key:1,class:"ov-ehours-w",style:$e({height:o.warnPct+"%"})},null,4)):f("v-if",!0)],64))],10,Kk))),128))]),t[54]||(t[54]=n("div",{class:"ov-ehours-x"},[n("span",null,"24h ago"),n("span",null,"now")],-1))])):f("v-if",!0),n("p",Xk,"Info "+c(e.fmt?.number(e.data?.errors?.severity?.info||0))+" \xB7 logged, not counted as errors",1)]),e.data?.repos?.recentErrors24h?(l(),d("div",Jk,[n("a",Qk,c(e.data?.repos?.recentErrors24h)+" repos in error state \u2192",1)])):f("v-if",!0)]),f(" Top routes / queues "),n("div",Zk,[t[59]||(t[59]=n("div",{class:"ov-panel-head"},[n("span",{class:"ov-panel-title"},"Queues"),n("span",{class:"ov-panel-meta"},"by state")],-1)),n("div",xk,[t[58]||(t[58]=Ce('
QueueActiveWaitFailed
',1)),n("a",e0,[t[55]||(t[55]=n("span",{class:"ov-route-name"},"Download",-1)),n("span",t0,c(e.data?.queues?.download?.active),1),n("span",n0,c(e.data?.queues?.download?.waiting),1),n("span",{class:T(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.download?.failed>0}])},c(e.data?.queues?.download?.failed),3)]),n("a",o0,[t[56]||(t[56]=n("span",{class:"ov-route-name"},"Remove",-1)),n("span",s0,c(e.data?.queues?.remove?.active),1),n("span",i0,c(e.data?.queues?.remove?.waiting),1),n("span",{class:T(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.remove?.failed>0}])},c(e.data?.queues?.remove?.failed),3)]),n("a",r0,[t[57]||(t[57]=n("span",{class:"ov-route-name"},"Cache cleanup",-1)),n("span",a0,c(e.data?.queues?.cache?.active),1),n("span",l0,c(e.data?.queues?.cache?.waiting),1),n("span",{class:T(["ov-route-n ov-route-lat",{"ov-n-bad":e.data?.queues?.cache?.failed>0}])},c(e.data?.queues?.cache?.failed),3)])])])]),f(" \u2500\u2500 Services bar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 "),n("section",d0,[n("div",u0,[t[60]||(t[60]=n("span",{class:"ov-panel-title"},"Services",-1)),n("span",c0,"5 services \xB7 "+c(e.realErrors()>0?"1 needs attention":"all healthy"),1)]),n("div",p0,[n("div",f0,[t[62]||(t[62]=n("span",{class:"ov-svc-dot ov-dot-ok"},null,-1)),n("div",h0,[t[61]||(t[61]=n("span",{class:"ov-svc-name"},"web",-1)),n("span",m0,c(e.data?.system?.nodeVersion)+" \xB7 up "+c(e.humanDuration(e.data?.system?.uptime)),1)])]),n("div",g0,[n("span",{class:T(["ov-svc-dot",e.queueTotal(e.data?.queues?.download)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),n("div",v0,[t[63]||(t[63]=n("span",{class:"ov-svc-name"},"download",-1)),e.queueTotal(e.data?.queues?.download)?(l(),d("span",y0,c(e.queueTotal(e.data?.queues?.download))+" "+c(e.queueTotal(e.data?.queues?.download)===1?"job":"jobs"),1)):f("v-if",!0),e.queueTotal(e.data?.queues?.download)?f("v-if",!0):(l(),d("span",b0,"idle"))])]),n("div",w0,[n("span",{class:T(["ov-svc-dot",e.queueTotal(e.data?.queues?.cache)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),n("div",k0,[t[64]||(t[64]=n("span",{class:"ov-svc-name"},"cache",-1)),e.queueTotal(e.data?.queues?.cache)?(l(),d("span",C0,c(e.queueTotal(e.data?.queues?.cache))+" "+c(e.queueTotal(e.data?.queues?.cache)===1?"job":"jobs"),1)):f("v-if",!0),e.queueTotal(e.data?.queues?.cache)?f("v-if",!0):(l(),d("span",E0,"idle"))])]),n("div",S0,[n("span",{class:T(["ov-svc-dot",e.queueTotal(e.data?.queues?.remove)>0?"ov-dot-ok":"ov-dot-idle"])},null,2),n("div",N0,[t[65]||(t[65]=n("span",{class:"ov-svc-name"},"remove",-1)),e.queueTotal(e.data?.queues?.remove)?(l(),d("span",R0,c(e.queueTotal(e.data?.queues?.remove))+" "+c(e.queueTotal(e.data?.queues?.remove)===1?"job":"jobs"),1)):f("v-if",!0),e.queueTotal(e.data?.queues?.remove)?f("v-if",!0):(l(),d("span",D0,"idle"))])]),n("div",A0,[n("span",{class:T(["ov-svc-dot",e.realErrors()>0?"ov-dot-warn":"ov-dot-ok"]),title:e.realErrors()>0?"Errors in the last 24 hours":"No errors in the last 24 hours"},null,10,T0),n("div",P0,[t[66]||(t[66]=n("span",{class:"ov-svc-name"},"errors",-1)),n("span",O0,c(e.fmt?.number(e.realErrors()))+" / 24h",1)])])])])],512)),[[ee,e.ovView==="summary"]]):f("v-if",!0),P(n("section",I0,[n("div",_0,[t[71]||(t[71]=n("div",null,[n("h2",{class:"ov-panel-title",id:"cache-heading"},"Cache"),n("p",{class:"ov-performance-note"},"Shared storage, repeated reads and anonymization work")],-1)),n("div",M0,[t[69]||(t[69]=n("label",{for:"cache-window"},"Time range",-1)),P(n("select",{id:"cache-window",class:"form-control form-control-sm","onUpdate:modelValue":t[0]||(t[0]=o=>e.cacheMinutes=o),onChange:t[1]||(t[1]=o=>e.loadCache())},[...t[67]||(t[67]=[n("option",{value:15},"Last 15 minutes",-1),n("option",{value:60},"Last hour",-1),n("option",{value:1440},"Last 24 hours",-1),n("option",{value:10080},"Last 7 days",-1)])],544),[[an,e.cacheMinutes,void 0,{number:!0}]]),t[70]||(t[70]=n("label",{for:"cache-traffic"},"Traffic",-1)),P(n("select",{id:"cache-traffic",class:"form-control form-control-sm","onUpdate:modelValue":t[2]||(t[2]=o=>e.cacheTraffic=o)},[...t[68]||(t[68]=[Ce('',6)])],512),[[an,e.cacheTraffic]])])]),e.cacheError?(l(),d("div",V0,[n("span",null,c(e.cacheError),1),n("button",{type:"button",class:"btn btn-sm",onClick:t[3]||(t[3]=o=>e.loadCache())},"Retry")])):f("v-if",!0),!e.cacheReport&&!e.cacheError?(l(),d("p",q0,"Loading cache monitoring\u2026")):f("v-if",!0),e.cacheReport?.available?(l(),d(L,{key:2},[e.cacheReport.enabled?f("v-if",!0):(l(),d("p",$0,"Shared blob storage is disabled. Inspection and legacy-cache activity are still measured.")),e.cacheReport.filesystemSupported?f("v-if",!0):(l(),d("p",L0,"Shared blobs require a local filesystem. The configured storage continues to use its existing cache.")),e.cacheReport.dropped?(l(),d("p",U0,c(e.cacheReport.dropped)+" telemetry events were dropped. Totals may be incomplete.",1)):f("v-if",!0),e.cacheReport.source?(l(),d("div",F0,[n("table",B0,[t[72]||(t[72]=n("caption",{class:"sr-only"},"Current shared-cache storage and byte budgets",-1)),t[73]||(t[73]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Pool"),n("th",{scope:"col",class:"num"},"Allocated / budget"),n("th",{scope:"col",class:"num"},"Reserved for fills"),n("th",{scope:"col",class:"num"},"Original bytes"),n("th",{scope:"col",class:"num"},"Blobs"),n("th",{scope:"col",class:"num"},"Active readers")])],-1)),n("tbody",null,[(l(!0),d(L,null,ie([{name:"Source blobs",data:e.cacheReport.source},{name:"Transformed output",data:e.cacheReport.results}],o=>P((l(),d("tr",{key:o.name},[n("th",z0,c(o.name),1),n("td",{class:T(["num budget-cell",{"is-over":o.data?.budgetBytes&&o.data?.allocatedBytes>o.data?.budgetBytes}]),title:o.data?.budgetBytes?Math.round(100*(o.data?.allocatedBytes||0)/o.data.budgetBytes)+"% of budget":null},[o.data?.budgetBytes&&o.data?.allocatedBytes>o.data?.budgetBytes?(l(),d("span",j0,"Over budget \xB7 ")):f("v-if",!0),g(c(e.humanBytes(o.data?.allocatedBytes))+" / "+c(e.humanBytes(o.data?.budgetBytes)),1),o.data?.budgetBytes?(l(),d("span",G0,[n("i",{style:$e({width:Math.min(100,Math.round(100*(o.data?.allocatedBytes||0)/o.data.budgetBytes))+"%"})},null,4)])):f("v-if",!0)],10,H0),n("td",W0,c(e.humanBytes(o.data?.reservedBytes)),1),n("td",K0,c(e.humanBytes(o.data?.originalBytes)),1),n("td",Y0,c(e.fmt?.number(o.data?.blobs)),1),n("td",X0,c(e.fmt?.number(o.data?.activeReaders)),1)])),[[ee,o.data]])),128))])])])):f("v-if",!0),e.cacheReport.source?(l(),d("dl",J0,[n("div",null,[t[74]||(t[74]=n("dt",null,"Source request hit rate",-1)),n("dd",null,c(e.cacheRate("source","count")),1)]),n("div",null,[t[75]||(t[75]=n("dt",null,"Source byte hit rate",-1)),n("dd",null,c(e.cacheRate("source","bytes")),1)]),n("div",null,[t[76]||(t[76]=n("dt",null,"Decision hit rate",-1)),n("dd",null,c(e.cacheRate("decision","count")),1)])])):f("v-if",!0),t[79]||(t[79]=n("p",{class:"ov-performance-note"},"Reuse counts measure consecutive reads of the same blob within each interval. Codec timings are elapsed stream time, not CPU time; eviction times measure how long a blob was idle. Known monitors are identified by request metadata; other automation may remain in file reads.",-1)),e.cacheRows().length?(l(),d("div",Q0,[n("table",Z0,[t[77]||(t[77]=n("caption",{class:"sr-only"},"Cache events for the selected time range and traffic",-1)),t[78]||(t[78]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Event"),n("th",{scope:"col"},"Traffic"),n("th",{scope:"col",class:"num"},"Count"),n("th",{scope:"col",class:"num"},"Bytes"),n("th",{scope:"col",class:"num"},"Mean measured time"),n("th",{scope:"col",class:"num"},"p95 bound")])],-1)),n("tbody",null,[(l(!0),d(L,null,ie(e.cacheRows(),o=>(l(),d("tr",{key:o.name+":"+o.traffic},[n("th",x0,c(e.cacheEventName(o.name)),1),n("td",e2,c(o.traffic),1),n("td",t2,c(e.fmt?.number(o.count)),1),n("td",n2,c(e.humanBytes(o.bytes)),1),n("td",{class:T(["num",{"ov-muted":!o.ms}])},c(o.ms?e.fmt.duration(o.ms/o.count):"Not timed"),3),n("td",{class:T(["num",{"ov-muted":!o.ms}])},c(e.cacheP95(o)),3)]))),128))])])])):(l(),d("p",o2,"No cache events in this time range for the selected traffic.")),n("p",s2,"Updated "+c(e.sampleAge(e.cacheReport))+" seconds ago. Minute history is retained for 48 hours; hourly history for 30 days.",1)],64)):f("v-if",!0)],512),[[ee,e.ovView==="cache"]]),P(n("section",i2,[n("div",r2,[t[84]||(t[84]=n("div",null,[n("h2",{class:"ov-panel-title",id:"performance-heading"},"Request performance"),n("p",{class:"ov-performance-note"},"Request latency and process health")],-1)),n("div",a2,[e.performance?.available?(l(),d(L,{key:0},[t[81]||(t[81]=n("label",{for:"performance-view"},"Show",-1)),P(n("select",{id:"performance-view",class:"form-control form-control-sm","onUpdate:modelValue":t[4]||(t[4]=o=>e.performanceTab=o),"aria-label":"Performance metrics"},[...t[80]||(t[80]=[n("option",{value:"routes"},"Routes",-1),n("option",{value:"processes"},"Processes",-1),n("option",{value:"stages"},"Work stages",-1)])],512),[[an,e.performanceTab]])],64)):f("v-if",!0),t[83]||(t[83]=n("label",{for:"performance-window"},"Time range",-1)),P(n("select",{id:"performance-window",class:"form-control form-control-sm","onUpdate:modelValue":t[5]||(t[5]=o=>e.performanceMinutes=o),onChange:t[6]||(t[6]=o=>e.loadPerformance()),"aria-label":"Performance time range"},[...t[82]||(t[82]=[n("option",{value:15},"Last 15 minutes",-1),n("option",{value:60},"Last hour",-1)])],544),[[an,e.performanceMinutes,void 0,{number:!0}]])])]),e.performanceError?(l(),d("div",l2,[t[85]||(t[85]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),n("span",null,c(e.performanceError),1),n("button",{type:"button",class:"btn btn-sm",onClick:t[7]||(t[7]=o=>e.loadPerformance())},"Retry")])):f("v-if",!0),!e.performance&&!e.performanceError?(l(),d("p",d2,"Loading performance monitoring\u2026")):f("v-if",!0),e.performance?.available?(l(),d("div",u2,[P(n("div",c2,[e.performance.routes?.length?(l(),d("div",p2,[n("table",f2,[t[86]||(t[86]=n("caption",{class:"sr-only"},"Route latency for the selected time range",-1)),t[87]||(t[87]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Route"),n("th",{scope:"col",class:"num"},"Requests"),n("th",{scope:"col",class:"num"},"Average"),n("th",{scope:"col",class:"num"},"First byte p95"),n("th",{scope:"col",class:"num"},"p95"),n("th",{scope:"col",class:"num"},"p99"),n("th",{scope:"col",class:"num"},"Interrupted"),n("th",{scope:"col",class:"num"},"5xx"),n("th",{scope:"col",class:"num"},"Slow")])],-1)),n("tbody",null,[(l(!0),d(L,null,ie(e.performance.routes,o=>(l(),d("tr",{key:o.service+o.method+o.route},[n("th",h2,[n("span",null,c(o.route),1),n("small",null,c(o.service)+" \xB7 "+c(o.method),1)]),n("td",m2,c(e.fmt.number(o.count)),1),n("td",g2,c(e.formatMs(o.avgMs)),1),n("td",v2,c(e.firstByteBound(o)),1),n("td",y2,c(e.latencyBound(o,"p95UpperMs")),1),n("td",b2,c(e.latencyBound(o,"p99UpperMs")),1),n("td",{class:T(["num",{"ov-metric-warn":o.aborted>0}])},c(e.fmt.number(o.aborted)),3),n("td",{class:T(["num",{"ov-metric-bad":o.errors>0}])},c(e.fmt.number(o.errors)),3),n("td",{class:T(["num",{"ov-metric-warn":o.slow>0}])},c(e.fmt.number(o.slow)),3)]))),128))])])])):(l(),d("p",w2,"No recorded requests in this time range yet."))],512),[[ee,e.performanceTab==="routes"]]),P(n("div",k2,[t[91]||(t[91]=n("p",{class:"ov-performance-note"},"API and streamer processes \xB7 latest sample per instance",-1)),e.performance.instances?.length?(l(),d("div",E2,[n("table",S2,[t[89]||(t[89]=n("caption",{class:"sr-only"},"API and streamer process resource usage",-1)),t[90]||(t[90]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Process"),n("th",{scope:"col",class:"num"},"RSS / limit"),n("th",{scope:"col",class:"num"},"CPU"),n("th",{scope:"col",class:"num"},"Event loop p95"),n("th",{scope:"col",class:"num"},"Active requests"),n("th",{scope:"col",class:"num"},"Sockets / CLOSE_WAIT"),n("th",{scope:"col",class:"num"},"Workers / waiting"),n("th",{scope:"col",class:"num"},"Sample age"),n("th",{scope:"col",class:"num"},"Dropped batches / metrics")])],-1)),n("tbody",null,[(l(!0),d(L,null,ie(e.performance.instances,o=>(l(),d("tr",{key:o.instance,class:T({"ov-metric-warning-row":e.performanceWarning(o)})},[n("th",N2,[n("span",null,c(o.instance),1),e.performanceWarning(o)?(l(),d("small",R2,[...t[88]||(t[88]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1),g(" Needs attention",-1)])])):f("v-if",!0)]),n("td",D2,[g(c(e.humanBytes(o.memory.rss))+" / "+c(e.humanBytes(o.memoryLimitBytes)),1),n("small",null,"Peak "+c(e.humanBytes(e.peakRss(o))),1)]),n("td",A2,c(o.cpuPercent==null?"Unavailable":o.cpuPercent.toFixed(1)+"%"),1),n("td",T2,c(o.eventLoop?.p95Ms==null?"Not applicable":e.fmt.duration(o.eventLoop.p95Ms)),1),n("td",P2,c(o.activeRequests),1),n("td",O2,c(o.sockets?.descriptors??"Unavailable")+" / "+c(o.sockets?.closeWait??"Unavailable"),1),n("td",I2,c(o.workers?.running??0)+" / "+c(o.workers?.waiting??0),1),n("td",_2,c(e.sampleAge(o))+" s",1),n("td",M2,c(o.droppedBatches)+" / "+c(o.droppedMetrics),1)],2))),128))])])])):(l(),d("div",C2,"No recent process samples. Monitoring coverage is incomplete."))],512),[[ee,e.performanceTab==="processes"]]),P(n("div",V2,[e.performance.stages?.some(o=>o.metric!=="first_byte")?(l(),d("div",q2,[n("table",$2,[t[92]||(t[92]=n("caption",{class:"sr-only"},"Work stages and cache results",-1)),t[93]||(t[93]=n("thead",null,[n("tr",null,[n("th",{scope:"col"},"Work stage"),n("th",{scope:"col",class:"num"},"Samples"),n("th",{scope:"col",class:"num"},"Average"),n("th",{scope:"col",class:"num"},"p95")])],-1)),n("tbody",null,[(l(!0),d(L,null,ie(e.performance.stages.filter(o=>o.metric!=="first_byte"),o=>(l(),d("tr",{key:o.service+o.metric},[n("th",L2,[n("span",null,c(o.metric),1),n("small",null,c(o.service),1)]),n("td",U2,c(e.fmt.number(o.count)),1),n("td",F2,c(e.formatMs(o.avgMs)),1),n("td",B2,c(e.latencyBound(o,"p95UpperMs")),1)]))),128))])])])):(l(),d("p",z2,"No recorded work stages or cache results in this time range yet."))],512),[[ee,e.performanceTab==="stages"]]),t[94]||(t[94]=n("details",{class:"ov-performance-help"},[n("summary",null,"How to read these metrics"),n("p",null,"Latency includes upstream waits and response transfer. Percentiles show histogram bucket upper bounds, not exact timings. Process rows marked \u201CNeeds attention\u201D have stale samples, dropped monitoring data, CLOSE_WAIT sockets, high event loop delay, or high memory usage.")],-1))])):f("v-if",!0)],512),[[ee,e.ovView==="performance"]])])}var H2={class:"container paper-page admin-page"},j2={class:"q-header"},G2={class:"q-header-actions"},W2={class:"q-cards"},K2=["aria-pressed","onKeydown","onClick"],Y2={class:"q-card-head"},X2=["title"],J2=["textContent"],Q2=["textContent"],Z2={class:"q-card-sub"},x2={class:"q-card-failed"},eC={key:0,class:"q-card-bar"},tC={key:0,class:"q-detail"},nC={class:"q-throughput"},oC={class:"q-range-btns"},sC={class:"q-section-label"},iC={key:0,class:"q-section-right"},rC={class:"q-chart-wrap"},aC={key:0,class:"q-chart-empty"},lC={class:"q-stats-panel"},dC={class:"q-section-label"},uC={class:"q-stats-grid"},cC={class:"q-stat"},pC=["textContent"],fC={class:"q-stat"},hC=["textContent"],mC={class:"q-stat"},gC=["textContent"],vC={class:"q-stat"},yC=["textContent"],bC={class:"q-stat"},wC=["textContent"],kC={class:"q-stat"},CC=["textContent"],EC={class:"q-stats-actions"},SC=["disabled"],NC={class:"q-danger-group"},RC={class:"q-jobs"},DC={class:"q-jobs-header"},AC={class:"q-section-label"},TC={class:"seg-filter",role:"radiogroup","aria-label":"Filter jobs by state"},PC=["aria-checked"],OC={class:"count"},IC=["aria-checked"],_C={class:"count"},MC=["aria-checked"],VC={class:"count"},qC=["aria-checked"],$C={class:"count"},LC=["aria-checked"],UC={class:"count"},FC=["aria-checked"],BC={class:"count"},zC={class:"q-search-row"},HC={type:"search",class:"form-control",placeholder:"Search by job/repo id\u2026",autocomplete:"off"},jC={class:"q-auto-refresh"},GC={type:"checkbox"},WC={key:0,class:"q-table"},KC=["onClick"],YC={class:"q-cell-state"},XC=["textContent"],JC=["textContent"],QC=["title"],ZC=["textContent","href"],xC=["title","textContent"],eE=["textContent"],tE=["textContent"],nE={class:"q-cell-progress"},oE=["aria-label"],sE=["textContent"],iE={class:"q-cell-actions"},rE=["onClick"],aE=["onClick"],lE={key:0,class:"q-detail-row"},dE={colspan:"7"},uE={class:"q-job-detail"},cE={class:"q-job-detail-grid"},pE={class:"q-job-detail-item"},fE={class:"q-job-detail-value"},hE=["textContent","href"],mE={class:"q-job-detail-item"},gE={class:"q-job-detail-value"},vE=["textContent"],yE={key:0,class:"q-job-detail-item"},bE=["textContent"],wE={key:1,class:"q-job-detail-item"},kE=["textContent"],CE={key:2,class:"q-job-detail-item"},EE={class:"q-job-detail-value"},SE={key:3,class:"q-job-detail-item"},NE=["textContent"],RE={key:4,class:"q-job-detail-item"},DE=["textContent"],AE={key:5,class:"q-job-detail-item"},TE=["textContent"],PE={key:6,class:"q-job-detail-item"},OE=["textContent"],IE={key:7,class:"q-job-detail-item"},_E=["textContent"],ME={key:0,class:"q-job-detail-error"},VE=["textContent"],qE={key:1},$E=["textContent"],LE={class:"q-job-detail-actions"},UE=["onClick"],FE=["onClick"],BE=["href"],zE={key:1,class:"paper-table-empty",style:{border:"1px solid var(--border-color)","border-radius":"10px",background:"var(--paper-card)"}},HE={key:0},jE={key:1};function qc(e,t){let o=Pe("field");return l(),d("div",H2,[t[71]||(t[71]=n("div",{class:"paper-crumbs"},[g("Admin \xA0/\xA0 "),n("span",{class:"here"},"Queues")],-1)),n("div",j2,[t[18]||(t[18]=n("h1",{class:"paper-page-title"},"Queues",-1)),n("div",G2,[n("button",{class:"btn btn-sm",onClick:t[0]||(t[0]=i=>e.pauseAll())},"Pause all queues")])]),t[72]||(t[72]=Ce('',1)),f(" Queue overview cards "),n("div",W2,[(l(!0),d(L,null,ie(e.queueList,(i,s)=>(l(),d("div",{class:T(["q-card",{selected:e.selectedQueue==i?.key,paused:i?.paused}]),role:"button",tabindex:"0","aria-pressed":e.selectedQueue===i.key,onKeydown:[mt(ce(r=>e.selectQueue(i.key),["prevent"]),["enter"]),mt(ce(r=>e.selectQueue(i.key),["prevent"]),["space"])],onClick:r=>e.selectQueue(i.key)},[n("div",Y2,[n("span",{class:T(["q-dot",{"q-dot-red":i?.paused||i?.counts?.failed>0,"q-dot-idle":!i?.counts?.active&&!i?.counts?.waiting}]),title:i?.paused?"Paused":i?.counts?.failed>0?i.counts.failed+" failed jobs":i?.counts?.active||i?.counts?.waiting?"Running":"Idle"},null,10,X2),n("span",{class:"q-card-name",textContent:c(i?.label)},null,8,J2)]),n("div",{class:"q-card-count",textContent:c((i?.counts?.waiting||0)+(i?.counts?.active||0)+(i?.counts?.delayed||0))},null,8,Q2),n("div",Z2,[n("span",null,[g("waiting \xB7 "+c(i?.counts?.active||0)+" active",1),i?.counts?.failed?(l(),d(L,{key:0},[t[19]||(t[19]=g(" \xB7 ",-1)),n("b",x2,c(i.counts.failed)+" failed",1)],64)):f("v-if",!0),i?.paused?(l(),d(L,{key:1},[t[20]||(t[20]=g(" \xB7 ",-1)),t[21]||(t[21]=n("b",{class:"q-card-failed"},"paused",-1))],64)):f("v-if",!0)]),i?.counts?.active?(l(),d("div",eC,[n("div",{class:"q-card-bar-fill",style:$e({width:i?.counts?.active/((i?.counts?.waiting||0)+(i?.counts?.active||0)+(i?.counts?.delayed||0)||1)*100+"%"})},null,4)])):f("v-if",!0)])],42,K2))),256))]),f(" Detail: throughput chart + stats panel "),e.selectedStats?(l(),d("div",tC,[n("div",nC,[n("div",oC,[n("button",{class:T(["btn btn-sm",{active:e.range=="1h"}]),onClick:t[1]||(t[1]=i=>e.setRange("1h"))},"1h",2),n("button",{class:T(["btn btn-sm",{active:e.range=="6h"}]),onClick:t[2]||(t[2]=i=>e.setRange("6h"))},"6h",2),n("button",{class:T(["btn btn-sm",{active:e.range=="24h"}]),onClick:t[3]||(t[3]=i=>e.setRange("24h"))},"24h",2),n("button",{class:T(["btn btn-sm",{active:e.range=="7d"}]),onClick:t[4]||(t[4]=i=>e.setRange("7d"))},"7d",2)]),n("div",sC,[g("Throughput \xB7 "+c(e.selectedQueue)+" ",1),(e.selectedStats?.completed24h||0)+(e.selectedStats?.failed24h||0)>0?(l(),d("span",iC,[t[23]||(t[23]=n("span",{class:"q-legend-completed"},"\u25CF",-1)),t[24]||(t[24]=g(" Completed ",-1)),t[25]||(t[25]=n("span",{class:"q-legend-failed"},"\u25CF",-1)),t[26]||(t[26]=g(" Failed ",-1)),(e.selectedStats?.completed24h||0)+(e.selectedStats?.failed24h||0)>0?(l(),d(L,{key:0},[t[22]||(t[22]=n("span",{class:"q-legend-exec","aria-hidden":"true"},null,-1)),g(" Avg time \xB7 "+c(e.range),1)],64)):f("v-if",!0)])):f("v-if",!0)]),n("div",rC,[t[28]||(t[28]=n("canvas",{id:"q-throughput-chart",height:"180"},null,-1)),(e.selectedStats?.completed24h||0)+(e.selectedStats?.failed24h||0)===0?(l(),d("div",aC,[...t[27]||(t[27]=[n("strong",null,"No jobs processed in this window",-1),n("span",null,"Completed and failed jobs will chart here.",-1)])])):f("v-if",!0),t[29]||(t[29]=n("div",{id:"q-chart-tooltip",class:"q-chart-tooltip",style:{display:"none"}},null,-1)),t[30]||(t[30]=n("div",{id:"q-chart-crosshair",class:"q-chart-crosshair",style:{display:"none"}},null,-1))])]),n("div",lC,[n("div",dC,"Stats \xB7 "+c(e.selectedQueue),1),n("div",uC,[n("div",cC,[t[31]||(t[31]=n("div",{class:"q-stat-label"},"Waiting",-1)),n("div",{class:"q-stat-value",textContent:c(e.selectedStats?.counts?.waiting||0)},null,8,pC)]),n("div",fC,[t[32]||(t[32]=n("div",{class:"q-stat-label"},"Active",-1)),n("div",{class:"q-stat-value",textContent:c(e.selectedStats?.counts?.active||0)},null,8,hC)]),n("div",mC,[t[33]||(t[33]=n("div",{class:"q-stat-label"},"Completed (24h)",-1)),n("div",{class:"q-stat-value",textContent:c(e.fmt?.number(e.selectedStats?.completed24h))},null,8,gC)]),n("div",vC,[t[34]||(t[34]=n("div",{class:"q-stat-label"},"Failed (24h)",-1)),n("div",{class:"q-stat-value",textContent:c(e.selectedStats?.failed24h||0)},null,8,yC)]),n("div",bC,[t[35]||(t[35]=n("div",{class:"q-stat-label"},"Delayed",-1)),n("div",{class:"q-stat-value",textContent:c(e.selectedStats?.counts?.delayed||0)},null,8,wC)]),n("div",kC,[t[36]||(t[36]=n("div",{class:"q-stat-label"},"Workers",-1)),n("div",{class:"q-stat-value",textContent:c(e.selectedStats?.workers||0)},null,8,CC)])]),n("div",EC,[n("button",{class:"btn btn-sm",onClick:t[5]||(t[5]=i=>e.togglePause())},c(e.selectedStats?.paused?"Resume "+e.selectedQueue:"Pause "+e.selectedQueue),1),n("button",{class:"btn btn-sm",onClick:t[6]||(t[6]=i=>e.retryFailed()),disabled:!e.selectedStats?.counts?.failed},"Retry failed",8,SC),n("span",NC,[n("button",{class:"btn btn-sm btn-outline-danger",onClick:t[7]||(t[7]=i=>e.drainSelected())},"Drain"),n("button",{class:"btn btn-sm btn-outline-danger",onClick:t[8]||(t[8]=i=>e.emptyQueue())},"Empty")])])])])):f("v-if",!0),e.actionError?(l(),d("div",{key:1,class:"q-toast-error",onClick:t[9]||(t[9]=i=>e.actionError=null)},[t[37]||(t[37]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})],-1)),g(" "+c(e.actionError),1)])):f("v-if",!0),f(" Jobs table "),n("div",RC,[n("div",DC,[n("div",AC,"All jobs \xB7 "+c(e.selectedQueue),1),n("div",TC,[n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="all"}]),"aria-checked":e.segView()==="all",onClick:t[10]||(t[10]=i=>e.setSegView("all"))},[t[38]||(t[38]=g("All ",-1)),n("span",OC,c(e.fmt?.number(e.segCount("all"))),1)],10,PC),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="active","is-empty":!e.segCount("active")}]),"aria-checked":e.segView()==="active",onClick:t[11]||(t[11]=i=>e.setSegView("active"))},[t[39]||(t[39]=n("span",{class:"seg-dot ok","aria-hidden":"true"},null,-1)),t[40]||(t[40]=g("Active ",-1)),n("span",_C,c(e.fmt?.number(e.segCount("active"))),1)],10,IC),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="waiting","is-empty":!e.segCount("waiting")}]),"aria-checked":e.segView()==="waiting",onClick:t[12]||(t[12]=i=>e.setSegView("waiting"))},[t[41]||(t[41]=n("span",{class:"seg-dot warn","aria-hidden":"true"},null,-1)),t[42]||(t[42]=g("Waiting ",-1)),n("span",VC,c(e.fmt?.number(e.segCount("waiting"))),1)],10,MC),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="delayed","is-empty":!e.segCount("delayed")}]),"aria-checked":e.segView()==="delayed",onClick:t[13]||(t[13]=i=>e.setSegView("delayed"))},[t[43]||(t[43]=n("span",{class:"seg-dot warn","aria-hidden":"true"},null,-1)),t[44]||(t[44]=g("Delayed ",-1)),n("span",$C,c(e.fmt?.number(e.segCount("delayed"))),1)],10,qC),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="failed","is-empty":!e.segCount("failed")}]),"aria-checked":e.segView()==="failed",onClick:t[14]||(t[14]=i=>e.setSegView("failed"))},[t[45]||(t[45]=n("span",{class:"seg-dot bad","aria-hidden":"true"},null,-1)),t[46]||(t[46]=g("Failed ",-1)),n("span",UC,c(e.fmt?.number(e.segCount("failed"))),1)],10,LC),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="completed","is-empty":!e.segCount("completed")}]),"aria-checked":e.segView()==="completed",onClick:t[15]||(t[15]=i=>e.setSegView("completed"))},[t[47]||(t[47]=n("span",{class:"seg-dot done","aria-hidden":"true"},null,-1)),t[48]||(t[48]=g("Completed ",-1)),n("span",BC,c(e.fmt?.number(e.segCount("completed"))),1)],10,FC)])]),n("div",zC,[P(n("input",HC,null,512),[[o,{state:e.viewState,set:i=>{e.query.search=i},value:e.query?.search,form:null,options:{}}]]),n("label",jC,[P(n("input",GC,null,512),[[o,{state:e.viewState,set:i=>{e.query.autoRefresh=i},value:e.query?.autoRefresh,form:null,options:{}}]]),t[49]||(t[49]=n("span",{class:"auto-refresh-label"},"Auto-refresh",-1))]),n("button",{class:"btn btn-sm btn-icon",type:"button",title:"Refresh now",onClick:t[16]||(t[16]=i=>e.refreshNow()),"aria-label":"Refresh"},[...t[50]||(t[50]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])])]),e.filteredJobs().length>0?(l(),d("table",WC,[t[69]||(t[69]=n("thead",null,[n("tr",null,[n("th",null,"State"),n("th",null,"Job"),n("th",null,"Detail"),n("th",null,"Attempts"),n("th",{class:"q-th-num"},"Duration"),n("th",null,"Progress"),n("th")])],-1)),(l(!0),d(L,null,ie(e.filteredJobs(),(i,s)=>(l(),d("tbody",null,[n("tr",{style:{cursor:"pointer"},class:T({"q-row-failed":i?._state=="failed","q-row-expanded":e.expanded[i?.id]}),onClick:r=>e.toggleJob(i)},[n("td",YC,[n("span",{textContent:c(i?._state),class:T("q-state-badge q-state-"+i?._state)},null,10,XC),i?._state=="delayed"&&i?.delayUntil?(l(),d("span",{key:0,class:"q-delay-hint",textContent:c(e.delayCountdown(i?.delayUntil))},null,8,JC)):f("v-if",!0)]),n("td",{class:"q-cell-id",title:"job:"+i?.id+(i?.name&&i?.name!==i?.id?" \xB7 "+i.name:"")+(i?.data?.repoId&&i?.data?.repoId!==i?.id?" \xB7 "+i.data.repoId:"")},[(l(),d("svg",{class:T(["ui-icon q-chevron",{"q-chevron-open":e.expanded[i?.id]}]),"aria-hidden":"true"},[...t[51]||(t[51]=[n("use",{href:"#ui-icon-chevron-right"},null,-1)])],2)),n("a",{target:"_blank",class:"q-job-link",textContent:c(i?.data?.repoId||i?.id),onClick:t[17]||(t[17]=r=>r.stopPropagation()),href:e.safeUrl("/r/"+(i?.data?.repoId||i?.id))},null,8,ZC)],8,QC),n("td",{class:T(["q-cell-detail",{"is-error":i?._state=="failed"}]),title:i?._state=="failed"?i?.failedReason:"",textContent:c(e.jobDetail(i))},null,10,xC),n("td",{class:"q-cell-num",textContent:c(i?.attemptsMade||1)},null,8,eE),n("td",{class:"q-cell-num q-cell-duration",textContent:c(e.jobDuration(i))},null,8,tE),n("td",nE,[n("div",{class:T(["q-progress-wrap",{"is-indeterminate":e.jobProgressPct(i)===null}]),"aria-label":e.jobProgressPct(i)===null?"Progress not reported":e.jobProgressPct(i)+"% done"},[n("div",{class:"q-progress-bar",style:$e({"--pct":(e.jobProgressPct(i)||0)+"%"})},null,4),n("span",{class:"q-progress-label",textContent:c(e.jobProgressPct(i)===null?"\u2014":e.jobProgressPct(i)+"%")},null,8,sE)],10,oE)]),n("td",iE,[i?._state=="failed"?(l(),d("button",{key:0,class:"btn btn-sm btn-icon",title:"Retry",onClick:r=>{e.retryJob(i),r.stopPropagation()},"aria-label":"Retry job"},[...t[52]||(t[52]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])],8,rE)):f("v-if",!0),n("button",{class:"btn btn-sm btn-icon",title:"Remove","aria-label":"Remove job",onClick:r=>{e.removeJob(i),r.stopPropagation()}},[...t[53]||(t[53]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1)])],8,aE)])],10,KC),e.expanded[i?.id]?(l(),d("tr",lE,[n("td",dE,[n("div",uE,[n("div",cE,[n("div",pE,[t[54]||(t[54]=n("span",{class:"q-job-detail-label"},"Job id",-1)),n("span",fE,[n("a",{target:"_blank",textContent:c(i?.id),href:e.safeUrl("/r/"+i?.id)},null,8,hE)])]),n("div",mE,[t[55]||(t[55]=n("span",{class:"q-job-detail-label"},"State",-1)),n("span",gE,[n("span",{textContent:c(i?._state),class:T("q-state-badge q-state-"+i?._state)},null,10,vE)])]),i?.data?.repoId?(l(),d("div",yE,[t[56]||(t[56]=n("span",{class:"q-job-detail-label"},"Repo ID",-1)),n("span",{class:"q-job-detail-value",textContent:c(i?.data?.repoId)},null,8,bE)])):f("v-if",!0),i?.timestamp?(l(),d("div",wE,[t[57]||(t[57]=n("span",{class:"q-job-detail-label"},"Created",-1)),n("span",{class:"q-job-detail-value",textContent:c(e.humanTime(i?.timestamp))},null,8,kE)])):f("v-if",!0),i?._state=="delayed"&&i?.delayUntil?(l(),d("div",CE,[t[58]||(t[58]=n("span",{class:"q-job-detail-label"},"Retry at",-1)),n("span",EE,c(e.humanTime(i?.delayUntil))+" ("+c(e.delayCountdown(i?.delayUntil))+")",1)])):f("v-if",!0),i?.processedOn?(l(),d("div",SE,[t[59]||(t[59]=n("span",{class:"q-job-detail-label"},"Processed",-1)),n("span",{class:"q-job-detail-value",textContent:c(e.humanTime(i?.processedOn))},null,8,NE)])):f("v-if",!0),i?.finishedOn?(l(),d("div",RE,[t[60]||(t[60]=n("span",{class:"q-job-detail-label"},"Finished",-1)),n("span",{class:"q-job-detail-value",textContent:c(e.humanTime(i?.finishedOn))},null,8,DE)])):f("v-if",!0),i?.attemptsMade?(l(),d("div",AE,[t[61]||(t[61]=n("span",{class:"q-job-detail-label"},"Attempts",-1)),n("span",{class:"q-job-detail-value",textContent:c(i?.attemptsMade)},null,8,TE)])):f("v-if",!0),i?.progress&&i?.progress?.status?(l(),d("div",PE,[t[62]||(t[62]=n("span",{class:"q-job-detail-label"},"Status",-1)),n("span",{class:"q-job-detail-value",textContent:c(i?.progress?.status)},null,8,OE)])):f("v-if",!0),e.jobProgressPct(i)!==null?(l(),d("div",IE,[t[63]||(t[63]=n("span",{class:"q-job-detail-label"},"Progress",-1)),n("span",{class:"q-job-detail-value",textContent:c(e.jobProgressPct(i)+"%")},null,8,_E)])):f("v-if",!0)]),i?.failedReason?(l(),d("div",ME,[t[64]||(t[64]=n("span",{class:"q-job-detail-label"},"Error",-1)),n("div",{class:"q-error-reason",textContent:c(i?.failedReason)},null,8,VE)])):f("v-if",!0),i?.stacktrace?.length?(l(),d("div",qE,[t[65]||(t[65]=n("span",{class:"q-job-detail-label"},"Stacktrace",-1)),(l(!0),d(L,null,ie(i?.stacktrace,(r,a)=>(l(),d("pre",{class:"q-error-stack",key:a},[n("code",{textContent:c(r)},null,8,$E)]))),128))])):f("v-if",!0),n("div",LE,[i?._state=="failed"?(l(),d("button",{key:0,class:"btn btn-sm",onClick:r=>e.retryJob(i)},[...t[66]||(t[66]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),g(" Retry",-1)])],8,UE)):f("v-if",!0),n("button",{class:"btn btn-sm",onClick:r=>e.removeJob(i)},[...t[67]||(t[67]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),g(" Remove",-1)])],8,FE),n("a",{class:"btn btn-sm",target:"_blank",href:e.safeUrl("/r/"+i?.id)},[...t[68]||(t[68]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1),g(" View repo",-1)])],8,BE)])])])])):f("v-if",!0)]))),256))])):f("v-if",!0),e.filteredJobs().length==0?(l(),d("div",zE,[t[70]||(t[70]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1)),e.query?.search?f("v-if",!0):(l(),d("span",HE,"No jobs in the "+c(e.selectedQueue)+" queue.",1)),e.query?.search?(l(),d("span",jE,"No jobs match the current filters.")):f("v-if",!0)])):f("v-if",!0)])])}var GE={class:"container paper-page admin-page"},WE={class:"seg-bar"},KE={class:"seg-filter",role:"radiogroup","aria-label":"Filter by status"},YE=["aria-checked"],XE={class:"count"},JE=["aria-checked"],QE={class:"count"},ZE=["aria-checked"],xE={class:"count"},eS=["aria-checked"],tS={class:"count"},nS=["aria-checked"],oS={class:"count"},sS=["aria-checked"],iS={class:"count"},rS={class:"seg-countline",role:"status"},aS={class:"seg-meta"},lS={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},dS={class:"w-100 admin-filter-toolbar","aria-label":"Repositories","accept-charset":"UTF-8"},uS=["aria-expanded"],cS={class:"search-wrap"},pS={type:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search repositories\u2026",autocomplete:"off"},fS={key:0,class:"admin-search-hint"},hS={class:"admin-filter-inline"},mS={type:"text",class:"form-control form-control-sm",placeholder:"username"},gS={class:"admin-filter-inline"},vS={type:"text",class:"form-control form-control-sm",placeholder:"ID"},yS={key:0,class:"admin-filter-inline","aria-label":"Pagination"},bS=["disabled"],wS={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},kS=["disabled"],CS={key:0,class:"admin-filter-row"},ES={class:"admin-active-chips"},SS={class:"key"},NS=["onClick"],RS={key:1,class:"bulk-bar"},DS={class:"paper-table paper-table-repos has-bulk w-100",role:"table","aria-label":"Repositories"},AS={class:"paper-table-head",role:"row"},TS={role:"columnheader",style:{width:"28px"}},PS=["checked"],OS={role:"columnheader"},IS={role:"columnheader"},_S={role:"columnheader",class:"num"},MS={role:"columnheader"},VS={role:"cell",style:{width:"28px"}},qS={type:"checkbox","aria-label":"Select repository"},$S={class:"cell-anon",role:"cell"},LS={class:"anon-text"},US=["textContent","href"],FS=["title"],BS=["href"],zS=["textContent"],HS=["textContent"],jS=["data-meta-label"],GS=["title","textContent","href"],WS=["data-meta-label"],KS=["textContent","href"],YS=["data-meta-label"],XS={key:3,class:"meta-item"},JS={class:"meta-item"},QS={class:"cell-status",role:"cell"},ZS={class:"status-line"},xS=["textContent"],eN=["textContent","title"],tN=["data-unit"],nN=["textContent"],oN={class:"cell-expires",role:"cell"},sN=["textContent"],iN={class:"cell-actions",role:"cell"},rN={class:"dropdown"},aN={class:"dropdown-menu dropdown-menu-right"},lN=["href"],dN=["href"],uN=["href"],cN=["onClick"],pN=["onClick"],fN=["onClick"],hN=["onClick"],mN=["onClick"],gN=["onClick"],vN={key:0,class:"paper-table-empty"},yN={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},bN={key:0,class:"pagination-compact"},wN=["disabled"],kN=["max"],CN=["disabled"],EN={class:"admin-filter-inline"},SN={class:"form-control form-control-sm"};function $c(e,t){let o=Pe("field"),i=Pe("form");return l(),d("div",GE,[t[80]||(t[80]=Ce('
Admin \xA0/\xA0 Repositories

Repositories

',3)),n("div",WE,[n("div",KE,[n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="all"}]),"aria-checked":e.segView()==="all",onClick:t[0]||(t[0]=s=>e.setSegView("all"))},[t[21]||(t[21]=g("All ",-1)),n("span",XE,c(e.fmt?.number(e.segCount("all"))),1)],10,YE),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="ready","is-empty":!e.segCount("ready")}]),"aria-checked":e.segView()==="ready",onClick:t[1]||(t[1]=s=>e.setSegView("ready"))},[t[22]||(t[22]=n("span",{class:"seg-dot ok","aria-hidden":"true"},null,-1)),t[23]||(t[23]=g("Ready ",-1)),n("span",QE,c(e.fmt?.number(e.segCount("ready"))),1)],10,JE),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="preparing","is-empty":!e.segCount("preparing")}]),"aria-checked":e.segView()==="preparing",onClick:t[2]||(t[2]=s=>e.setSegView("preparing"))},[t[24]||(t[24]=n("span",{class:"seg-dot warn","aria-hidden":"true"},null,-1)),t[25]||(t[25]=g("Preparing ",-1)),n("span",xE,c(e.fmt?.number(e.segCount("preparing"))),1)],10,ZE),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="error","is-empty":!e.segCount("error")}]),"aria-checked":e.segView()==="error",onClick:t[3]||(t[3]=s=>e.setSegView("error"))},[t[26]||(t[26]=n("span",{class:"seg-dot bad","aria-hidden":"true"},null,-1)),t[27]||(t[27]=g("Error ",-1)),n("span",tS,c(e.fmt?.number(e.segCount("error"))),1)],10,eS),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="expired","is-empty":!e.segCount("expired")}]),"aria-checked":e.segView()==="expired",onClick:t[4]||(t[4]=s=>e.setSegView("expired"))},[t[28]||(t[28]=n("span",{class:"seg-dot off","aria-hidden":"true"},null,-1)),t[29]||(t[29]=g("Expiring / expired ",-1)),n("span",oS,c(e.fmt?.number(e.segCount("expired"))),1)],10,nS),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="removed","is-empty":!e.segCount("removed")}]),"aria-checked":e.segView()==="removed",onClick:t[5]||(t[5]=s=>e.setSegView("removed"))},[t[30]||(t[30]=n("span",{class:"seg-dot off","aria-hidden":"true"},null,-1)),t[31]||(t[31]=g("Removing / removed ",-1)),n("span",iS,c(e.fmt?.number(e.segCount("removed"))),1)],10,sS)]),n("p",rS,[n("strong",null,c(e.total>=0?e.fmt.number(e.total):"\u2026"),1),t[32]||(t[32]=g(" shown",-1)),t[33]||(t[33]=n("span",{class:"seg-sep"},"\xB7",-1)),n("span",aS,c(e.fmt?.humanFileSize(e.totalSize))+" on disk",1)])]),e.fetchError?(l(),d("div",lS,[t[34]||(t[34]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),g(" "+c(e.fetchError),1)])):f("v-if",!0),P((l(),d("form",dS,[f(" Row 1: search + scoped inputs + headline actions "),n("button",{type:"button",class:"btn btn-sm admin-filters-toggle",onClick:t[6]||(t[6]=s=>e.filtersOpen=!e.filtersOpen),"aria-expanded":e.filtersOpen?"true":"false"},"Filters",8,uS),n("div",{class:T(["admin-filter-row",{"is-open":e.filtersOpen}])},[n("div",cS,[P(n("input",pS,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?f("v-if",!0):(l(),d("span",fS,"/"))]),n("span",hS,[t[35]||(t[35]=n("label",null,"Owner",-1)),P(n("input",mS,null,512),[[o,{state:e.viewState,set:s=>{e.query.owner=s},value:e.query?.owner,form:null,options:{}}]])]),n("span",gS,[t[36]||(t[36]=n("label",null,"Conference",-1)),P(n("input",vS,null,512),[[o,{state:e.viewState,set:s=>{e.query.conference=s},value:e.query?.conference,form:null,options:{}}]])]),t[40]||(t[40]=n("span",{class:"admin-filter-spacer"},null,-1)),n("button",{class:"btn btn-sm",type:"button",title:"Export current view to CSV",onClick:t[7]||(t[7]=s=>e.exportCsv())},[...t[37]||(t[37]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),g(" Export",-1)])]),e.totalPage>1?(l(),d("span",yS,[n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[8]||(t[8]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[38]||(t[38]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,bS),n("span",wS,c(e.query?.page)+"/"+c(e.totalPage||1),1),n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[9]||(t[9]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[39]||(t[39]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,kS)])):f("v-if",!0)],2),f(" Row 2: appears only when there are active filter chips "),e.chips?.length?(l(),d("div",CS,[n("div",ES,[(l(!0),d(L,null,ie(e.chips,(s,r)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[n("span",SS,c(s?.label),1),n("span",null,c(s?.value),1),n("button",{type:"button","aria-label":"Remove filter",onClick:a=>e.clearFilter(s.key)},[...t[41]||(t[41]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,NS)]))),128))])])):f("v-if",!0)])),[[i,e.viewState]]),e.selectedCount()>0?(l(),d("div",RS,[n("span",null,[n("strong",null,c(e.selectedCount()),1),t[42]||(t[42]=g(" selected",-1))]),n("button",{class:"btn btn-sm",type:"button",onClick:t[10]||(t[10]=s=>e.bulkRefresh())},[...t[43]||(t[43]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),g(" Force refresh",-1)])]),n("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[11]||(t[11]=s=>e.bulkRemoveCache())},[...t[44]||(t[44]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),g(" Remove cache",-1)])]),n("button",{class:"btn btn-sm",type:"button",onClick:t[12]||(t[12]=s=>e.clearSelection())},"Clear")])):f("v-if",!0),n("div",DS,[n("div",AS,[n("div",TS,[n("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[13]||(t[13]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,PS)]),n("div",OS,[n("button",{type:"button",class:T(["sortable",{active:e.query?.sort=="source.repositoryName"}]),onClick:t[14]||(t[14]=s=>e.sortBy("source.repositoryName"))},[t[46]||(t[46]=g("Repository ",-1)),e.sortIcon("source.repositoryName")?(l(),d("svg",{key:0,class:T(["ui-icon sort-direction",{ascending:e.sortIcon("source.repositoryName")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[45]||(t[45]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),n("div",IS,[n("button",{type:"button",class:T(["sortable",{active:e.query?.sort=="status"}]),onClick:t[15]||(t[15]=s=>e.sortBy("status"))},[t[48]||(t[48]=g("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:T(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[47]||(t[47]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),n("div",_S,[n("button",{type:"button",class:T(["sortable",{active:e.query?.sort=="pageView"}]),onClick:t[16]||(t[16]=s=>e.sortBy("pageView"))},[t[50]||(t[50]=g("Views ",-1)),e.sortIcon("pageView")?(l(),d("svg",{key:0,class:T(["ui-icon sort-direction",{ascending:e.sortIcon("pageView")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[49]||(t[49]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),n("div",MS,[n("button",{type:"button",class:T(["sortable",{active:e.query?.sort=="anonymizeDate"}]),onClick:t[17]||(t[17]=s=>e.sortBy("anonymizeDate"))},[t[52]||(t[52]=g("Anonymized ",-1)),e.sortIcon("anonymizeDate")?(l(),d("svg",{key:0,class:T(["ui-icon sort-direction",{ascending:e.sortIcon("anonymizeDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[51]||(t[51]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),t[53]||(t[53]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(L,null,ie(e.filteredRepositories,(s,r)=>(l(),d("div",{class:T(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error","row-selected":e.selected[s?.repoId]}]),role:"row"},[n("div",VS,[P(n("input",qS,null,512),[[o,{state:e.viewState,set:a=>{e.selected[s.repoId]=a},value:e.selected[s?.repoId],form:null,options:{}}]])]),n("div",$S,[t[56]||(t[56]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",LS,[n("a",{class:"repo-name",target:"_blank",textContent:c(s?.repoId),href:e.safeUrl("/r/"+s?.repoId)},null,8,US),n("div",{class:"anon-sub anon-meta","data-meta-fit":"",title:[s?.source?.fullName||s?.source?.repositoryName,s?.options?.update?"branch "+s?.source?.branch:"commit "+s?.source?.commit?.substring(0,7),s?.conference?"conference "+s?.conference:"",s?.size?.storage>0?e.fmt?.humanFileSize(s?.size?.storage):"",e.fmt?.number(s?.options?.terms?.length)+(s?.options?.terms?.length===1?" term":" terms")].filter(Boolean).join(" \xB7 ")},[n("a",{class:"src-path",href:e.safeUrl("https://github.com/"+s?.source?.repositoryName+"/")},[(s?.source?.repositoryName||"").includes("/")?(l(),d("span",{key:0,class:"src-owner",textContent:c((a=>a.length>16?a.slice(0,14)+"\u2026":a)((s?.source?.repositoryName||"").split("/")[0]))},null,8,zS)):f("v-if",!0),n("span",{class:"src-repo",textContent:c((s?.source?.repositoryName||"").includes("/")?"/"+(s?.source?.repositoryName||"").split("/").slice(1).join("/"):s?.source?.repositoryName)},null,8,HS)],8,BS),s?.options?.update?f("v-if",!0):(l(),d("span",{key:0,class:"meta-item","data-meta-label":"commit "+(s?.source?.commit||"").substring(0,7)},[n("a",{class:"mono-hash",title:s?.source?.commit,textContent:c(s?.source?.commit?.substring(0,7)),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},null,8,GS)],8,jS)),s?.options?.update?(l(),d("span",{key:1,class:"meta-item","data-meta-label":"branch "+(s?.source?.branch||"")},[n("a",{textContent:c(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,KS)],8,WS)):f("v-if",!0),s?.conference?(l(),d("span",{key:2,class:"meta-item meta-conf","data-meta-label":"conference "+s?.conference},[t[54]||(t[54]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),g(" "+c(s?.conference),1)],8,YS)):f("v-if",!0),s?.size?.storage>0?(l(),d("span",XS,c(e.fmt?.humanFileSize(s?.size?.storage)),1)):f("v-if",!0),n("span",JS,c(e.fmt?.number(s?.options?.terms?.length))+" "+c(s?.options?.terms?.length===1?"term":"terms"),1),t[55]||(t[55]=n("span",{class:"meta-more",hidden:""},null,-1))],8,FS)])]),n("div",QS,[n("span",ZS,[n("span",{class:T(["status-dot","st-"+(s?.status||"unknown")])},null,2),n("span",{textContent:c(e.fmt?.statusLabel(s?.status))},null,8,xS)]),s?.statusMessage?(l(),d("span",{key:0,class:"status-sub",textContent:c(e.fmt?.statusMsg(s?.statusMessage)),title:s?.statusMessage},null,8,eN)):f("v-if",!0)]),n("div",{class:"cell-views num",role:"cell","data-unit":(s?.pageView||0)===1?"view":"views"},[t[57]||(t[57]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),t[58]||(t[58]=g()),n("span",{textContent:c(e.fmt?.number(s?.pageView||0))},null,8,nN)],8,tN),n("div",oN,[t[59]||(t[59]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[60]||(t[60]=g()),n("span",{textContent:c((e.fmt?.humanTime(s?.anonymizeDate)||"").replace(/^on /,""))},null,8,sN)]),n("div",iN,[n("div",rN,[t[72]||(t[72]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",aN,[n("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[61]||(t[61]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),g(" Edit",-1)])],8,lN),n("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[62]||(t[62]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),g(" View repo",-1)])],8,dN),s?.options?.page&&s?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+s?.repoId+"/")},[...t[63]||(t[63]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),g(" View page",-1)])],8,uN)):f("v-if",!0),n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.fetchGithubInfo(s),["prevent"])},[...t[64]||(t[64]=[n("i",{class:"fab fa-github"},null,-1),g(" Live GitHub info",-1)])],8,cN),t[70]||(t[70]=n("div",{class:"dropdown-divider"},null,-1)),P(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updateRepository(s),["prevent"])},[...t[65]||(t[65]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),g(" Force update",-1)])],8,pN),[[ee,s?.status=="ready"||s?.status=="error"]]),P(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updateRepository(s),["prevent"])},[...t[66]||(t[66]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),g(" Enable",-1)])],8,fN),[[ee,s?.status=="removed"]]),P(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.showStatusMessage(s),["prevent"])},[...t[67]||(t[67]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1),g(" View status message",-1)])],8,hN),[[ee,s?.statusMessage]]),t[71]||(t[71]=n("div",{class:"dropdown-divider"},null,-1)),n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.removeCache(s),["prevent"])},[...t[68]||(t[68]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),g(" Remove cache",-1)])],8,mN),P(n("a",{class:"dropdown-item text-danger",href:"#",onClick:ce(a=>e.removeRepository(s),["prevent"])},[...t[69]||(t[69]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),g(" Remove",-1)])],8,gN),[[ee,s?.status=="ready"]])])])])],2))),256)),e.filteredRepositories?.length==0?(l(),d("div",vN,[t[73]||(t[73]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),t[74]||(t[74]=n("span",null,"No repositories match the current filters.",-1)),e.query.ready&&e.query.expired&&e.query.removed&&e.query.error&&e.query.preparing?f("v-if",!0):(l(),d("button",{key:0,type:"button",class:"btn btn-sm btn-outline-ink",onClick:t[18]||(t[18]=s=>e.showAllStatuses())},"Show all statuses"))])):f("v-if",!0)]),n("div",yN,[t[79]||(t[79]=n("span",{"aria-hidden":"true"},null,-1)),e.totalPage>1?(l(),d("div",bN,[n("button",{class:"btn btn-sm",onClick:t[19]||(t[19]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[75]||(t[75]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1),g(" Previous ",-1)])],8,wN),P(n("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},"aria-label":"Page",max:e.totalPage},null,8,kN),[[o,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),n("span",null,"of "+c(e.totalPage),1),n("button",{class:"btn btn-sm",onClick:t[20]||(t[20]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[76]||(t[76]=[g(" Next ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,CN)])):f("v-if",!0),n("span",EN,[t[78]||(t[78]=n("label",null,"Per page",-1)),P((l(),d("select",SN,[...t[77]||(t[77]=[Ce('',5)])])),[[o,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var NN={class:"container paper-page admin-page"},RN={class:"paper-crumbs"},DN={class:"here"},AN={class:"paper-page-title"},TN={key:0,class:"user-detail-card"},PN={class:"user-header"},ON=["src"],IN={class:"user-header-status"},_N={class:"status-dot-wrap"},MN=["textContent"],VN={key:0,class:"type-badge type-repo"},qN={class:"user-actions",style:{"margin-top":"4px"}},$N={class:"user-detail-grid"},LN={class:"detail-value mono-id"},UN={class:"detail-value"},FN=["href"],BN={class:"detail-value"},zN={class:"detail-value"},HN={key:0},jN={key:1,class:"text-muted"},GN={class:"detail-value"},WN={key:0,style:{"margin-top":"20px"}},KN={class:"paper-table w-100",style:{"margin-top":"10px"}},YN={class:"paper-table-row",style:{"grid-template-columns":"1fr 160px"}},XN={class:"cell-anon",role:"cell"},JN={class:"anon-text"},QN=["textContent"],ZN={class:"cell-expires",role:"cell"},xN={key:1,class:"admin-section-header"},eR={class:"section-count"},tR={key:2,class:"user-detail-card"},nR={type:"text",class:"form-control",placeholder:"Token name (e.g. dev-laptop)",required:""},oR={key:0,class:"alert alert-warning",role:"alert"},sR={style:{"white-space":"pre-wrap","word-break":"break-all",margin:"8px 0 0","font-family":"var(--font-mono)","font-size":"0.85rem"}},iR={key:1,class:"paper-table w-100"},rR={class:"paper-table-row",role:"row",style:{"grid-template-columns":"1fr 200px 200px 80px"}},aR=["textContent"],lR=["textContent"],dR={role:"cell"},uR={key:0},cR={key:1,class:"text-muted"},pR={role:"cell"},fR=["onClick"],hR={key:2,class:"paper-table-empty"},mR={class:"admin-section-header"},gR={class:"section-count"},vR={class:"seg-bar"},yR={class:"seg-filter",role:"radiogroup","aria-label":"Filter by status"},bR=["aria-checked"],wR={class:"count"},kR=["aria-checked"],CR={class:"count"},ER=["aria-checked"],SR={class:"count"},NR=["aria-checked"],RR={class:"count"},DR=["aria-checked"],AR={class:"count"},TR=["aria-checked"],PR={class:"count"},OR={class:"seg-countline",role:"status"},IR={class:"w-100 admin-filter-toolbar","aria-label":"Repositories","accept-charset":"UTF-8"},_R={class:"admin-filter-row"},MR={class:"search-wrap"},VR={type:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search repositories or errors\u2026",autocomplete:"off"},qR={key:3,class:"bulk-bar"},$R={class:"paper-table paper-table-repos has-bulk w-100",role:"table","aria-label":"Repositories"},LR={class:"paper-table-head",role:"row"},UR={role:"columnheader",style:{width:"28px"}},FR=["checked"],BR={role:"columnheader"},zR={role:"columnheader"},HR={role:"columnheader",class:"num"},jR={role:"columnheader"},GR={role:"cell",style:{width:"28px"}},WR={type:"checkbox","aria-label":"Select repository"},KR={class:"cell-anon",role:"cell"},YR={class:"anon-text"},XR=["textContent","href"],JR=["title"],QR=["href"],ZR=["textContent"],xR=["textContent"],eD=["data-meta-label"],tD=["title","textContent","href"],nD=["data-meta-label"],oD=["textContent","href"],sD=["data-meta-label"],iD={key:3,class:"meta-item"},rD={class:"meta-item"},aD={class:"cell-status",role:"cell"},lD={class:"status-line"},dD=["textContent"],uD=["textContent","title"],cD=["data-unit","textContent"],pD=["textContent"],fD={class:"cell-actions",role:"cell"},hD={class:"dropdown"},mD={class:"dropdown-menu dropdown-menu-right"},gD=["href"],vD=["href"],yD=["href"],bD=["onClick"],wD=["onClick"],kD=["onClick"],CD=["onClick"],ED=["onClick"],SD=["onClick"],ND={key:0,class:"paper-table-empty"};function Lc(e,t){let o=Pe("field"),i=Pe("form");return l(),d("div",NN,[n("div",RN,[t[23]||(t[23]=n("a",{href:"/admin/"},"Admin",-1)),t[24]||(t[24]=g(" \xA0/\xA0 ",-1)),t[25]||(t[25]=n("a",{href:"/admin/users"},"Users",-1)),t[26]||(t[26]=g(" \xA0/\xA0 ",-1)),n("span",DN,c(e.userInfo?.username||"Profile"),1)]),n("h1",AN,c(e.userInfo?.username||"User"),1),t[93]||(t[93]=Ce('',1)),e.userInfo?(l(),d("div",TN,[n("div",PN,[e.userInfo?.photo?(l(),d("img",{key:0,width:"56",height:"56",src:e.safeUrl(e.userInfo?.photo)},null,8,ON)):f("v-if",!0),n("div",null,[n("div",IN,[n("span",_N,[n("span",{class:T(["status-dot","st-"+(e.userInfo?.status||"unknown")])},null,2),n("span",{textContent:c(e.fmt?.title(e.userInfo?.status))},null,8,MN)]),e.userInfo?.isAdmin?(l(),d("span",VN,"Admin")):f("v-if",!0)]),n("div",qN,[e.userInfo?.status!=="banned"&&e.userInfo?.username!==e.user?.username?(l(),d("button",{key:0,class:"btn btn-sm btn-outline-danger",onClick:t[0]||(t[0]=s=>e.banUser())},[...t[27]||(t[27]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-ban"})],-1),g(" Ban",-1)])])):f("v-if",!0),e.userInfo?.status==="banned"||e.userInfo?.status==="removed"?(l(),d("button",{key:1,class:"btn btn-sm",onClick:t[1]||(t[1]=s=>e.activateUser())},[...t[28]||(t[28]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),g(" Activate",-1)])])):f("v-if",!0),e.userInfo?.isAdmin?f("v-if",!0):(l(),d("button",{key:2,class:"btn btn-sm",onClick:t[2]||(t[2]=s=>e.promoteUser())},[...t[29]||(t[29]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user-shield"})],-1),g(" Promote to admin",-1)])])),e.userInfo?.isAdmin&&e.userInfo?.username!==e.user?.username?(l(),d("button",{key:3,class:"btn btn-sm btn-outline-ink",onClick:t[3]||(t[3]=s=>e.demoteUser())},[...t[30]||(t[30]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user-minus"})],-1),g(" Remove admin",-1)])])):f("v-if",!0)])])]),n("div",$N,[t[33]||(t[33]=n("div",{class:"detail-label"},"ID",-1)),n("div",LN,c(e.userInfo?._id),1),t[34]||(t[34]=n("div",{class:"detail-label"},"Email",-1)),n("div",{class:T(["detail-value",{"is-empty":!e.userInfo?.emails?.[0]?.email}])},c(e.userInfo?.emails?.[0]?.email||"Not shared"),3),t[35]||(t[35]=n("div",{class:"detail-label"},"Access token",-1)),n("div",{class:T(["detail-value",{"is-empty":!e.userInfo?.accessTokens?.github}]),style:{"font-family":"var(--font-mono)","font-size":"0.85rem"}},c(e.userInfo?.accessTokens?.github||"Not stored"),3),t[36]||(t[36]=n("div",{class:"detail-label"},"GitHub",-1)),n("div",UN,[n("a",{target:"_blank",href:e.safeUrl("https://github.com/"+e.userInfo?.username)},[t[31]||(t[31]=n("i",{class:"fab fa-github"},null,-1)),g(" "+c(e.userInfo?.username),1)],8,FN)]),t[37]||(t[37]=n("div",{class:"detail-label"},"Created",-1)),n("div",BN,c(e.fmt?.humanTime(e.userInfo?.dateOfEntry)),1),t[38]||(t[38]=n("div",{class:"detail-label"},"Last connection",-1)),n("div",zN,[e.userInfo?.accessTokenDates?.github?(l(),d("span",HN,c(e.fmt?.humanTime(e.userInfo?.accessTokenDates?.github)),1)):f("v-if",!0),e.userInfo?.accessTokenDates?.github?f("v-if",!0):(l(),d("span",jN,"Not recorded (GitHub App sign-in)"))]),t[39]||(t[39]=n("div",{class:"detail-label"},"GitHub repos",-1)),n("div",GN,[g(c(e.userInfo?.repositories?.length?e.userInfo.repositories.length+" repositories":"Not synced")+" ",1),e.userInfo?.repositories?.length?(l(),d("button",{key:0,class:"btn btn-sm ml-2",onClick:t[4]||(t[4]=s=>e.showRepos=!e.showRepos)},c(e.showRepos?"Hide repos":"Show repos"),1)):f("v-if",!0),n("button",{class:"btn btn-sm ml-1",onClick:t[5]||(t[5]=s=>e.getGitHubRepositories())},[...t[32]||(t[32]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),g(" Refresh ",-1)])])])]),e.showRepos?(l(),d("div",WN,[t[42]||(t[42]=n("div",{class:"paper-section-eyebrow"},"GitHub repositories",-1)),n("div",KN,[(l(!0),d(L,null,ie(e.userInfo?.repositories,(s,r)=>(l(),d("div",YN,[n("div",XN,[t[40]||(t[40]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",JN,[n("span",{class:"repo-name",textContent:c(s?.name)},null,8,QN)])]),n("div",ZN,[t[41]||(t[41]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-database"})],-1)),g(" "+c(e.fmt?.humanFileSize(s?.size)),1)])]))),256))])])):f("v-if",!0)])):f("v-if",!0),e.userInfo&&e.userInfo?.isAdmin&&e.user&&e.user?.username==e.userInfo?.username?(l(),d("div",xN,[t[43]||(t[43]=n("h2",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-key"})]),g(" API tokens")],-1)),n("span",eR,c(e.tokens?.length),1)])):f("v-if",!0),e.userInfo&&e.userInfo?.isAdmin&&e.user&&e.user?.username==e.userInfo?.username?(l(),d("div",tR,[t[49]||(t[49]=n("p",{class:"paper-page-lede"},[g("Personal API tokens for this admin account. Send as "),n("code",null,"Authorization: Bearer "),g(" to authenticate without GitHub OAuth (useful for development).")],-1)),P((l(),d("form",{class:"d-flex",style:{gap:"8px","margin-bottom":"12px"},onSubmit:t[6]||(t[6]=ce(s=>e.submitForm(s,()=>{e.createToken()}),["prevent"]))},[P(n("input",nR,null,512),[[o,{state:e.viewState,set:s=>{e.tokenForm.name=s},value:e.tokenForm?.name,form:null,options:{}}]]),t[44]||(t[44]=n("button",{type:"submit",class:"btn btn-ink"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-plus"})]),g(" Generate")],-1))],32)),[[i,e.viewState]]),e.tokenForm?.plaintext?(l(),d("div",oR,[t[45]||(t[45]=n("strong",null,"Copy this token now \u2014 it will not be shown again:",-1)),n("pre",sR,c(e.tokenForm?.plaintext),1),n("button",{class:"btn btn-sm",onClick:t[7]||(t[7]=s=>e.tokenForm.plaintext=null)},"Dismiss")])):f("v-if",!0),e.tokens?.length?(l(),d("div",iR,[t[47]||(t[47]=n("div",{class:"paper-table-head",role:"row",style:{"grid-template-columns":"1fr 200px 200px 80px"}},[n("div",{role:"columnheader"},"Name"),n("div",{role:"columnheader"},"Created"),n("div",{role:"columnheader"},"Last used"),n("div",{role:"columnheader","aria-label":"Actions"})],-1)),(l(!0),d(L,null,ie(e.tokens,(s,r)=>(l(),d("div",rR,[n("div",{role:"cell",textContent:c(s?.name)},null,8,aR),n("div",{role:"cell",textContent:c(e.fmt?.humanTime(s?.createdAt))},null,8,lR),n("div",dR,[s?.lastUsedAt?(l(),d("span",uR,c(e.fmt?.humanTime(s?.lastUsedAt)),1)):f("v-if",!0),s?.lastUsedAt?f("v-if",!0):(l(),d("span",cR,"never"))]),n("div",pR,[n("button",{class:"btn btn-sm text-danger btn-icon",title:"Revoke","aria-label":"Revoke token",onClick:a=>e.revokeToken(s)},[...t[46]||(t[46]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1)])],8,fR)])]))),256))])):f("v-if",!0),e.tokens?.length?f("v-if",!0):(l(),d("div",hR,[...t[48]||(t[48]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No tokens yet.",-1)])]))])):f("v-if",!0),n("div",mR,[t[50]||(t[50]=n("h2",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})]),g(" Anonymized repositories")],-1)),n("span",gR,c(e.repositories?.length),1)]),n("div",vR,[n("div",yR,[n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="all"}]),"aria-checked":e.segView()==="all",onClick:t[8]||(t[8]=s=>e.setSegView("all"))},[t[51]||(t[51]=g("All ",-1)),n("span",wR,c(e.fmt?.number(e.segCount("all"))),1)],10,bR),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="ready","is-empty":!e.segCount("ready")}]),"aria-checked":e.segView()==="ready",onClick:t[9]||(t[9]=s=>e.setSegView("ready"))},[t[52]||(t[52]=n("span",{class:"seg-dot ok","aria-hidden":"true"},null,-1)),t[53]||(t[53]=g("Ready ",-1)),n("span",CR,c(e.fmt?.number(e.segCount("ready"))),1)],10,kR),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="preparing","is-empty":!e.segCount("preparing")}]),"aria-checked":e.segView()==="preparing",onClick:t[10]||(t[10]=s=>e.setSegView("preparing"))},[t[54]||(t[54]=n("span",{class:"seg-dot warn","aria-hidden":"true"},null,-1)),t[55]||(t[55]=g("Preparing ",-1)),n("span",SR,c(e.fmt?.number(e.segCount("preparing"))),1)],10,ER),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="error","is-empty":!e.segCount("error")}]),"aria-checked":e.segView()==="error",onClick:t[11]||(t[11]=s=>e.setSegView("error"))},[t[56]||(t[56]=n("span",{class:"seg-dot bad","aria-hidden":"true"},null,-1)),t[57]||(t[57]=g("Error ",-1)),n("span",RR,c(e.fmt?.number(e.segCount("error"))),1)],10,NR),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="expired","is-empty":!e.segCount("expired")}]),"aria-checked":e.segView()==="expired",onClick:t[12]||(t[12]=s=>e.setSegView("expired"))},[t[58]||(t[58]=n("span",{class:"seg-dot off","aria-hidden":"true"},null,-1)),t[59]||(t[59]=g("Expiring / expired ",-1)),n("span",AR,c(e.fmt?.number(e.segCount("expired"))),1)],10,DR),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.segView()==="removed","is-empty":!e.segCount("removed")}]),"aria-checked":e.segView()==="removed",onClick:t[13]||(t[13]=s=>e.setSegView("removed"))},[t[60]||(t[60]=n("span",{class:"seg-dot off","aria-hidden":"true"},null,-1)),t[61]||(t[61]=g("Removing / removed ",-1)),n("span",PR,c(e.fmt?.number(e.segCount("removed"))),1)],10,TR)]),n("p",OR,[n("strong",null,c(e.fmt.number(e.filteredRepositories?.length||0)),1),t[62]||(t[62]=g(" shown",-1))])]),P((l(),d("form",IR,[n("div",_R,[n("div",MR,[P(n("input",VR,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),t[64]||(t[64]=n("span",{class:"admin-filter-spacer"},null,-1)),n("button",{class:"btn btn-sm",type:"button",title:"Export current view to CSV",onClick:t[14]||(t[14]=s=>e.exportCsv())},[...t[63]||(t[63]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),g(" Export",-1)])])])])),[[i,e.viewState]]),e.selectedCount()>0?(l(),d("div",qR,[n("span",null,[n("strong",null,c(e.selectedCount()),1),t[65]||(t[65]=g(" selected",-1))]),n("button",{class:"btn btn-sm",type:"button",onClick:t[15]||(t[15]=s=>e.bulkRefresh())},[...t[66]||(t[66]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),g(" Force refresh",-1)])]),n("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[16]||(t[16]=s=>e.bulkRemoveCache())},[...t[67]||(t[67]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),g(" Remove cache",-1)])]),n("button",{class:"btn btn-sm",type:"button",onClick:t[17]||(t[17]=s=>e.clearSelection())},"Clear")])):f("v-if",!0),n("div",$R,[n("div",LR,[n("div",UR,[n("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[18]||(t[18]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,FR)]),n("div",BR,[n("button",{type:"button",class:T(["sortable",{active:e.query?.sort=="source.repositoryName"}]),onClick:t[19]||(t[19]=s=>e.sortBy("source.repositoryName"))},[t[69]||(t[69]=g("Repository ",-1)),e.sortIcon("source.repositoryName")?(l(),d("svg",{key:0,class:T(["ui-icon sort-direction",{ascending:e.sortIcon("source.repositoryName")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[68]||(t[68]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),n("div",zR,[n("button",{type:"button",class:T(["sortable",{active:e.query?.sort=="status"}]),onClick:t[20]||(t[20]=s=>e.sortBy("status"))},[t[71]||(t[71]=g("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:T(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[70]||(t[70]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),n("div",HR,[n("button",{type:"button",class:T(["sortable",{active:e.query?.sort=="pageView"}]),onClick:t[21]||(t[21]=s=>e.sortBy("pageView"))},[t[73]||(t[73]=g("Views ",-1)),e.sortIcon("pageView")?(l(),d("svg",{key:0,class:T(["ui-icon sort-direction",{ascending:e.sortIcon("pageView")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[72]||(t[72]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),n("div",jR,[n("button",{type:"button",class:T(["sortable",{active:e.query?.sort=="anonymizeDate"}]),onClick:t[22]||(t[22]=s=>e.sortBy("anonymizeDate"))},[t[75]||(t[75]=g("Anonymized ",-1)),e.sortIcon("anonymizeDate")?(l(),d("svg",{key:0,class:T(["ui-icon sort-direction",{ascending:e.sortIcon("anonymizeDate")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[74]||(t[74]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),t[76]||(t[76]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(L,null,ie(e.filteredRepositories,(s,r)=>(l(),d("div",{class:T(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error","row-selected":e.selected[s?.repoId]}]),role:"row"},[n("div",GR,[P(n("input",WR,null,512),[[o,{state:e.viewState,set:a=>{e.selected[s.repoId]=a},value:e.selected[s?.repoId],form:null,options:{}}]])]),n("div",KR,[t[79]||(t[79]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",YR,[n("a",{class:"repo-name",target:"_blank",textContent:c(s?.repoId),href:e.safeUrl("/r/"+s?.repoId)},null,8,XR),n("div",{class:"anon-sub anon-meta","data-meta-fit":"",title:[s?.source?.fullName||s?.source?.repositoryName,s?.options?.update?"branch "+s?.source?.branch:"commit "+s?.source?.commit?.substring(0,7),s?.conference?"conference "+s?.conference:"",s?.size?.storage>0?e.fmt?.humanFileSize(s?.size?.storage):"",e.fmt?.number(s?.options?.terms?.length)+(s?.options?.terms?.length===1?" term":" terms")].filter(Boolean).join(" \xB7 ")},[n("a",{class:"src-path",href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/")},[(s?.source?.fullName||"").includes("/")?(l(),d("span",{key:0,class:"src-owner",textContent:c((a=>a.length>16?a.slice(0,14)+"\u2026":a)((s?.source?.fullName||"").split("/")[0]))},null,8,ZR)):f("v-if",!0),n("span",{class:"src-repo",textContent:c((s?.source?.fullName||"").includes("/")?"/"+(s?.source?.fullName||"").split("/").slice(1).join("/"):s?.source?.fullName)},null,8,xR)],8,QR),s?.options?.update?f("v-if",!0):(l(),d("span",{key:0,class:"meta-item","data-meta-label":"commit "+(s?.source?.commit||"").substring(0,7)},[n("a",{class:"mono-hash",title:s?.source?.commit,textContent:c(s?.source?.commit?.substring(0,7)),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},null,8,tD)],8,eD)),s?.options?.update?(l(),d("span",{key:1,class:"meta-item","data-meta-label":"branch "+(s?.source?.branch||"")},[n("a",{textContent:c(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,oD)],8,nD)):f("v-if",!0),s?.conference?(l(),d("span",{key:2,class:"meta-item meta-conf","data-meta-label":"conference "+s?.conference},[t[77]||(t[77]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),g(" "+c(s?.conference),1)],8,sD)):f("v-if",!0),s?.size?.storage>0?(l(),d("span",iD,c(e.fmt?.humanFileSize(s?.size?.storage)),1)):f("v-if",!0),n("span",rD,c(e.fmt?.number(s?.options?.terms?.length))+" "+c(s?.options?.terms?.length===1?"term":"terms"),1),t[78]||(t[78]=n("span",{class:"meta-more",hidden:""},null,-1))],8,JR)])]),n("div",aD,[n("span",lD,[n("span",{class:T(["status-dot","st-"+(s?.status||"unknown")])},null,2),n("span",{textContent:c(e.fmt?.statusLabel(s?.status))},null,8,dD)]),s?.statusMessage?(l(),d("span",{key:0,class:"status-sub",textContent:c(e.fmt?.statusMsg(s?.statusMessage)),title:s?.statusMessage},null,8,uD)):f("v-if",!0)]),n("div",{class:"cell-views num",role:"cell","data-unit":(s?.pageView||0)===1?"view":"views",textContent:c(e.fmt?.number(s?.pageView||0))},null,8,cD),n("div",{class:"cell-expires",role:"cell",textContent:c(e.fmt?.humanTime(s?.anonymizeDate))},null,8,pD),n("div",fD,[n("div",hD,[t[91]||(t[91]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",mD,[n("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[80]||(t[80]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),g(" Edit",-1)])],8,gD),n("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[81]||(t[81]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),g(" View repo",-1)])],8,vD),s?.options?.page&&s?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+s?.repoId+"/")},[...t[82]||(t[82]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),g(" View page",-1)])],8,yD)):f("v-if",!0),n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.fetchGithubInfo(s),["prevent"])},[...t[83]||(t[83]=[n("i",{class:"fab fa-github"},null,-1),g(" Live GitHub info",-1)])],8,bD),t[89]||(t[89]=n("div",{class:"dropdown-divider"},null,-1)),P(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updateRepository(s),["prevent"])},[...t[84]||(t[84]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),g(" Force update",-1)])],8,wD),[[ee,s?.status=="ready"||s?.status=="error"]]),P(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updateRepository(s),["prevent"])},[...t[85]||(t[85]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),g(" Enable",-1)])],8,kD),[[ee,s?.status=="removed"]]),P(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.showStatusMessage(s),["prevent"])},[...t[86]||(t[86]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1),g(" View status message",-1)])],8,CD),[[ee,s?.statusMessage]]),t[90]||(t[90]=n("div",{class:"dropdown-divider"},null,-1)),n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.removeCache(s),["prevent"])},[...t[87]||(t[87]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-broom"})],-1),g(" Remove cache",-1)])],8,ED),P(n("a",{class:"dropdown-item text-danger",href:"#",onClick:ce(a=>e.removeRepository(s),["prevent"])},[...t[88]||(t[88]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),g(" Remove",-1)])],8,SD),[[ee,s?.status=="ready"]])])])])],2))),256)),e.filteredRepositories?.length==0?(l(),d("div",ND,[...t[92]||(t[92]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No repositories match the current filters.",-1)])])):f("v-if",!0)])])}var RD={class:"container paper-page admin-page"},DD={class:"seg-bar"},AD={class:"seg-filter",role:"radiogroup","aria-label":"Filter by status"},TD=["aria-checked"],PD={class:"count"},OD=["aria-checked"],ID={class:"count"},_D=["aria-checked"],MD={class:"count"},VD=["aria-checked"],qD={class:"count"},$D={class:"seg-countline",role:"status"},LD={key:0,class:"alert alert-danger",style:{margin:"8px 0"}},UD={class:"w-100 admin-filter-toolbar","aria-label":"Users","accept-charset":"UTF-8"},FD={class:"admin-filter-row"},BD={class:"search-wrap"},zD={type:"search",class:"form-control","aria-label":"Search users",placeholder:"Search username or email\u2026",autocomplete:"off"},HD={key:0,class:"admin-search-hint"},jD={class:"admin-filter-inline"},GD={class:"form-control form-control-sm"},WD={key:0,class:"admin-filter-inline","aria-label":"Pagination"},KD=["disabled"],YD={style:{"font-family":"var(--font-mono)","font-size":"12px",color:"var(--ink-muted)"}},XD=["disabled"],JD={key:0,class:"admin-filter-row"},QD={class:"admin-active-chips"},ZD={class:"key"},xD=["onClick"],e4={key:1,class:"bulk-bar"},t4={class:"paper-table w-100",role:"table","aria-label":"Users",style:{"--cols":"28px minmax(280px, 2.4fr) 100px 140px 140px 52px"}},n4={class:"paper-table-head admin-users-row",role:"row"},o4={role:"columnheader",style:{width:"28px"}},s4=["checked"],i4={role:"columnheader"},r4={role:"columnheader"},a4={role:"cell",style:{width:"28px"}},l4={type:"checkbox","aria-label":"Select user"},d4={class:"cell-anon",role:"cell"},u4=["src"],c4={key:1,class:"avatar-fallback","aria-hidden":"true"},p4={class:"anon-text"},f4={class:"user-name-line"},h4=["textContent","href"],m4=["href","title","aria-label"],g4={class:"anon-sub meta-dots"},v4=["title"],y4={key:1},b4={class:"cell-views num",role:"cell"},w4=["title","textContent","href"],k4={class:"cell-status",role:"cell"},C4=["textContent"],E4={class:"cell-status",role:"cell"},S4={key:0,class:"role-pill"},N4={key:1,class:"empty-dash"},R4={class:"cell-actions",role:"cell"},D4={class:"dropdown"},A4={class:"dropdown-menu dropdown-menu-right"},T4=["href"],P4=["href"],O4=["onClick"],I4=["onClick"],_4={key:0,class:"paper-table-empty"},M4={class:"admin-toolbar",style:{"justify-content":"space-between","border-bottom":"none"}},V4={key:0,class:"pagination-compact"},q4=["disabled"],$4=["max"],L4=["disabled"],U4={class:"admin-filter-inline"},F4={class:"form-control form-control-sm"};function Uc(e,t){let o=Pe("field"),i=Pe("form");return l(),d("div",RD,[t[53]||(t[53]=Ce('
Admin \xA0/\xA0 Users

Users

',3)),n("div",DD,[n("div",AD,[n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:!e.query?.status}]),"aria-checked":!e.query?.status,onClick:t[0]||(t[0]=s=>{e.query.status="",e.query.page=1})},[t[14]||(t[14]=g("All ",-1)),n("span",PD,c(e.fmt?.number(e.statusCountFor("active")+e.statusCountFor("banned")+e.statusCountFor("removed"))),1)],10,TD),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.query?.status==="active","is-empty":!e.statusCountFor("active")}]),"aria-checked":e.query?.status==="active",onClick:t[1]||(t[1]=s=>{e.query.status="active",e.query.page=1})},[t[15]||(t[15]=n("span",{class:"seg-dot ok","aria-hidden":"true"},null,-1)),t[16]||(t[16]=g("Active ",-1)),n("span",ID,c(e.fmt?.number(e.statusCountFor("active"))),1)],10,OD),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.query?.status==="banned","is-empty":!e.statusCountFor("banned")}]),"aria-checked":e.query?.status==="banned",onClick:t[2]||(t[2]=s=>{e.query.status="banned",e.query.page=1})},[t[17]||(t[17]=n("span",{class:"seg-dot bad","aria-hidden":"true"},null,-1)),t[18]||(t[18]=g("Banned ",-1)),n("span",MD,c(e.fmt?.number(e.statusCountFor("banned"))),1)],10,_D),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.query?.status==="removed","is-empty":!e.statusCountFor("removed")}]),"aria-checked":e.query?.status==="removed",onClick:t[3]||(t[3]=s=>{e.query.status="removed",e.query.page=1})},[t[19]||(t[19]=n("span",{class:"seg-dot off","aria-hidden":"true"},null,-1)),t[20]||(t[20]=g("Removed ",-1)),n("span",qD,c(e.fmt?.number(e.statusCountFor("removed"))),1)],10,VD)]),n("p",$D,[n("strong",null,c(e.total>=0?e.fmt.number(e.total):"\u2026"),1),t[21]||(t[21]=g(" shown",-1))])]),e.fetchError?(l(),d("div",LD,[t[22]||(t[22]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),g(" "+c(e.fetchError),1)])):f("v-if",!0),P((l(),d("form",UD,[n("div",FD,[n("div",BD,[P(n("input",zD,null,512),[[o,{state:e.viewState,set:s=>{e.query.search=s},value:e.query?.search,form:null,options:{}}]]),e.query?.search?f("v-if",!0):(l(),d("span",HD,"/"))]),n("span",jD,[t[24]||(t[24]=n("label",null,"Role",-1)),P((l(),d("select",GD,[...t[23]||(t[23]=[n("option",{value:""},"Any",-1),n("option",{value:"admin"},"Admin",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.role=s},value:e.query?.role,form:null,options:{}}]])]),t[28]||(t[28]=n("span",{class:"admin-filter-spacer"},null,-1)),n("button",{class:"btn btn-sm",type:"button",onClick:t[4]||(t[4]=s=>e.exportCsv())},[...t[25]||(t[25]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-export"})],-1),g(" Export",-1)])]),e.totalPage>1?(l(),d("span",WD,[n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[5]||(t[5]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1,"aria-label":"Previous page"},[...t[26]||(t[26]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,KD),n("span",YD,c(e.query?.page)+"/"+c(e.totalPage||1),1),n("button",{class:"btn btn-sm btn-icon",type:"button",onClick:t[6]||(t[6]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage,"aria-label":"Next page"},[...t[27]||(t[27]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,XD)])):f("v-if",!0)]),e.chips?.length?(l(),d("div",JD,[n("div",QD,[(l(!0),d(L,null,ie(e.chips,(s,r)=>(l(),d("span",{class:"admin-active-chip",key:s?.key},[n("span",ZD,c(s?.label),1),n("span",null,c(s?.value),1),n("button",{type:"button",onClick:a=>e.clearFilter(s.key),"aria-label":"Clear filter"},[...t[29]||(t[29]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,xD)]))),128))])])):f("v-if",!0)])),[[i,e.viewState]]),e.selectedCount()>0?(l(),d("div",e4,[n("span",null,[n("strong",null,c(e.selectedCount()),1),t[30]||(t[30]=g(" selected",-1))]),n("button",{class:"btn btn-sm text-danger",type:"button",onClick:t[7]||(t[7]=s=>e.bulkBan())},[...t[31]||(t[31]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-ban"})],-1),g(" Ban",-1)])]),n("button",{class:"btn btn-sm",type:"button",onClick:t[8]||(t[8]=s=>{e.selected={},e.allSelected=!1})},"Clear")])):f("v-if",!0),n("div",t4,[n("div",n4,[n("div",o4,[n("input",{type:"checkbox","aria-label":"Select all on page",onClick:t[9]||(t[9]=s=>e.selectAllOnPage()),checked:e.allSelected},null,8,s4)]),n("div",i4,[n("button",{type:"button",class:T(["sortable",{active:e.query?.sort=="username"}]),onClick:t[10]||(t[10]=s=>e.sortBy("username"))},[t[33]||(t[33]=g("User ",-1)),e.sortIcon("username")?(l(),d("svg",{key:0,class:T(["ui-icon sort-direction",{ascending:e.sortIcon("username")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[32]||(t[32]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),t[36]||(t[36]=n("div",{role:"columnheader",class:"num",title:"Repositories discovered on the user's GitHub account"},"GitHub repos",-1)),n("div",r4,[n("button",{type:"button",class:T(["sortable",{active:e.query?.sort=="status"}]),onClick:t[11]||(t[11]=s=>e.sortBy("status"))},[t[35]||(t[35]=g("Status ",-1)),e.sortIcon("status")?(l(),d("svg",{key:0,class:T(["ui-icon sort-direction",{ascending:e.sortIcon("status")==="fa-arrow-up"}]),"aria-hidden":"true"},[...t[34]||(t[34]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)]),t[37]||(t[37]=n("div",{role:"columnheader"},"Role",-1)),t[38]||(t[38]=n("div",{role:"columnheader","aria-label":"Actions"},null,-1))]),(l(!0),d(L,null,ie(e.filteredUsers,(s,r)=>(l(),d("div",{class:T(["paper-table-row admin-users-row",{"row-selected":e.selected[s?.username]}]),role:"row"},[n("div",a4,[P(n("input",l4,null,512),[[o,{state:e.viewState,set:a=>{e.selected[s.username]=a},value:e.selected[s?.username],form:null,options:{}}]])]),n("div",d4,[s?.photo?(l(),d("img",{key:0,width:"28",height:"28",class:"rounded-circle",style:{"flex-shrink":"0"},src:e.safeUrl(s?.photo)},null,8,u4)):(l(),d("span",c4,c((s?.username||"?").charAt(0).toUpperCase()),1)),n("div",p4,[n("span",f4,[n("a",{class:"repo-name",textContent:c(s?.username),href:e.safeUrl("/admin/users/"+s?.username)},null,8,h4),n("a",{class:"user-gh-link",target:"_blank",rel:"noopener",href:e.safeUrl("https://github.com/"+s?.username),title:s?.username+" on GitHub","aria-label":s?.username+" on GitHub"},[...t[39]||(t[39]=[n("i",{class:"fab fa-github","aria-hidden":"true"},null,-1)])],8,m4)]),n("div",g4,[s?.emails?.[0]?.email?(l(),d("span",{key:0,class:"meta-email meta-tail",title:s?.emails?.[0]?.email},c(s?.emails?.[0]?.email),9,v4)):f("v-if",!0),s?.dateOfEntry?(l(),d("span",y4,"Joined "+c(e.fmt?.humanTime(s?.dateOfEntry)),1)):f("v-if",!0)])])]),n("div",b4,[t[40]||(t[40]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1)),n("a",{title:s?.repoCount?"Show this user\u2019s repositories":"Repositories not synced yet",textContent:c(s?.repoCount?e.fmt?.number(s.repoCount):"Not synced"),class:T({"is-unsynced":!s?.repoCount}),href:e.safeUrl("/admin/repositories?owner="+s?.username)},null,10,w4)]),n("div",k4,[n("span",{class:T(["status-dot","st-"+(s?.status||"unknown")])},null,2),n("span",{textContent:c(e.fmt?.title(s?.status))},null,8,C4)]),n("div",E4,[s?.isAdmin?(l(),d("span",S4,"Admin")):f("v-if",!0),s?.isAdmin?f("v-if",!0):(l(),d("span",N4,"\u2014"))]),n("div",R4,[n("div",D4,[t[46]||(t[46]=n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})])],-1)),n("div",A4,[n("a",{class:"dropdown-item",href:e.safeUrl("/admin/users/"+s?.username)},[...t[41]||(t[41]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),g(" View details",-1)])],8,T4),n("a",{class:"dropdown-item",href:e.safeUrl("/admin/repositories?owner="+s?.username)},[...t[42]||(t[42]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),g(" View repositories",-1)])],8,P4),t[45]||(t[45]=n("div",{class:"dropdown-divider"},null,-1)),P(n("a",{class:"dropdown-item text-danger",href:"#",onClick:ce(a=>e.banUser(s),["prevent"])},[...t[43]||(t[43]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-ban"})],-1),g(" Ban",-1)])],8,O4),[[ee,s?.status=="active"]]),P(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.activateUser(s),["prevent"])},[...t[44]||(t[44]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),g(" Activate",-1)])],8,I4),[[ee,s?.status=="removed"||s?.status=="banned"]])])])])],2))),256)),e.filteredUsers?.length==0?(l(),d("div",_4,[...t[47]||(t[47]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No users match the current filters.",-1)])])):f("v-if",!0)]),n("div",M4,[t[52]||(t[52]=n("span",{"aria-hidden":"true"},null,-1)),e.totalPage>1?(l(),d("div",V4,[n("button",{class:"btn btn-sm",onClick:t[12]||(t[12]=s=>e.query.page=Math.max(1,e.query.page-1)),disabled:e.query?.page<=1},[...t[48]||(t[48]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1),g(" Previous",-1)])],8,q4),P(n("input",{type:"number",class:"form-control form-control-sm",min:"1",style:{width:"56px"},max:e.totalPage},null,8,$4),[[o,{state:e.viewState,set:s=>{e.query.page=s},value:e.query?.page,form:null,options:{}}]]),n("span",null,"of "+c(e.totalPage),1),n("button",{class:"btn btn-sm",onClick:t[13]||(t[13]=s=>e.query.page=Math.min(e.totalPage,e.query.page+1)),disabled:e.query?.page>=e.totalPage},[...t[49]||(t[49]=[g("Next ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,L4)])):f("v-if",!0),n("span",U4,[t[51]||(t[51]=n("label",null,"Per page",-1)),P((l(),d("select",F4,[...t[50]||(t[50]=[n("option",{value:"10"},"10",-1),n("option",{value:"25"},"25",-1),n("option",{value:"50"},"50",-1),n("option",{value:"100"},"100",-1)])])),[[o,{state:e.viewState,set:s=>{e.query.limit=s},value:e.query?.limit,form:null,options:{}}]])])])])}var B4={class:"anonymize-landing"},z4={class:"anonymize-landing-inner"},H4={class:"form-group mt-4 mb-2"},j4={class:"source-url-label-row"},G4={key:0,class:"repo-access","aria-label":"GitHub access"},W4={key:0,class:"repo-access-switch",role:"group","aria-label":"Repository connection"},K4=["aria-pressed","disabled"],Y4=["aria-pressed","disabled"],X4={key:1,class:"connection-badge"},J4={class:"landing-url-row"},Q4={id:"sourceUrl-landing",onblur:"this.scrollLeft=0",type:"text",class:"form-control form-control-lg",placeholder:"https://github.com/owner/repository"},Z4=["aria-disabled"],x4={key:0,class:"text-danger",role:"alert"},eA={class:"repo-picker","aria-labelledby":"repo-picker-title"},tA={class:"repo-picker-head"},nA={class:"repo-picker-title"},oA={key:0,class:"repo-picker-count","aria-live":"polite"},sA={key:0,class:"repo-picker-list","aria-busy":"true","aria-label":"Loading your repositories"},iA={class:"repo-picker-row is-skeleton","aria-hidden":"true"},rA={key:1,class:"repo-picker-list"},aA=["title"],lA={class:"repo-picker-owner"},dA={class:"repo-picker-repo"},uA=["onClick","aria-label"],cA={key:2,class:"repo-picker-state"},pA={key:3,class:"repo-picker-state"},fA={key:4,class:"repo-picker-state",role:"alert"},hA={key:5,class:"repo-access-details","aria-label":"GitHub access"},mA={class:"repo-access-main"},gA={class:"repo-access-controls"},vA={key:0,class:"access-q"},yA={key:2,class:"connection-link",href:"/connections"},bA={class:"repo-access-note"},wA={key:0},kA={class:"anonymize-workspace"},CA={class:"anonymize-topbar"},EA={class:"anonymize-topbar-inner"},SA={class:"paper-crumbs"},NA={class:"here"},RA={class:"anonymize-topbar-head"},DA={class:"paper-page-title anonymize-topbar-title"},AA={key:0},TA={key:1},PA={class:"paper-page-lede anonymize-topbar-lede"},OA={key:0,class:"task-trail flow-trail","aria-label":"Anonymization steps"},IA={key:0,class:"alert alert-info",role:"status"},_A={key:1,class:"alert alert-info",role:"status"},MA={key:1},VA={class:"anonymize-mobile-tabs",role:"tablist","aria-label":"Anonymization workspace"},qA=["aria-selected","tabindex"],$A=["aria-selected","tabindex"],LA={class:"anonymize-split"},UA=["role","aria-labelledby"],FA={class:"form needs-validation paper-settings-main",name:"anonymize",novalidate:""},BA={class:"anonymize-fields"},zA={class:"paper-settings-section"},HA={class:"form-group"},jA={class:"source-url-label-row"},GA={key:0,class:"repo-access","aria-label":"GitHub access"},WA={key:0,class:"repo-access-switch",role:"group","aria-label":"Repository connection"},KA=["aria-pressed","disabled"],YA=["aria-pressed","disabled"],XA={key:1,class:"connection-badge"},JA=["disabled"],QA={key:0,class:"source-summary"},ZA={class:"invalid-feedback"},xA={class:"invalid-feedback"},eT={class:"invalid-feedback"},tT={class:"invalid-feedback"},nT={key:0,class:"repo-access-details","aria-label":"Previous repository configuration"},oT={key:0,class:"form-group"},sT=["value"],iT={key:1},rT={class:"repo-access-controls"},aT=["href"],lT={key:1,class:"repo-access-details","aria-label":"GitHub access"},dT={class:"repo-access-main"},uT={class:"repo-access-controls"},cT={key:0,class:"access-q"},pT={key:2,class:"connection-link",href:"/connections"},fT={class:"repo-access-note"},hT={key:0},mT={key:1},gT=["open"],vT={key:0,class:"repair-step"},yT=["disabled"],bT={key:0,role:"status"},wT={class:"repair-step"},kT={key:0,role:"status"},CT={key:3,class:"form-grid-2"},ET={class:"form-group"},ST={class:"input-group"},NT={class:"form-control",id:"branch",name:"branch"},RT=["textContent","value"],DT={class:"input-group-append"},AT={class:"form-group"},TT=["disabled"],PT={class:"invalid-feedback"},OT={class:"invalid-feedback"},IT={class:"form-check"},_T={class:"form-check-input",type:"checkbox",id:"update",name:"update"},MT={class:"paper-settings-section"},VT={class:"form-group"},qT=["disabled"],$T={class:"form-text text-muted anon-url-echo"},LT={class:"anon-url-id"},UT={class:"invalid-feedback"},FT={class:"form-group"},BT=["disabled"],zT={class:"form-text text-muted anon-url-echo"},HT={class:"anon-url-id"},jT={class:"invalid-feedback"},GT={class:"form-group"},WT=["disabled"],KT={class:"form-text text-muted anon-url-echo"},YT={class:"anon-url-id"},XT={class:"invalid-feedback"},JT={class:"form-group"},QT=["rows"],ZT={class:"redaction-syntax"},xT={class:"form-text text-muted"},e3=["onClick"],t3={key:0,class:"term-hint-more"},n3={class:"invalid-feedback"},o3={class:"preserve-row"},s3={class:"preserve-row-text"},i3={class:"preserve-row-value"},r3=["disabled"],a3={class:"preserve-tree"},l3={key:0,class:"preserve-status"},d3={key:1,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},u3=["aria-expanded","aria-label","onClick"],c3={key:1,class:"preserve-caret-space"},p3=["id","aria-label","checked",".indeterminate","disabled","onChange"],f3=["for","onClick"],h3={key:2,class:"preserve-note"},m3={key:0,class:"preserve-status"},g3={key:0,class:"preserve-status"},v3=["open"],y3={class:"preserve-foot"},b3={class:"preserve-count","aria-live":"polite"},w3={class:"preserve-actions"},k3={class:"paper-settings-section"},C3={class:"form-check"},E3={class:"form-check-input",type:"checkbox",id:"link",name:"link"},S3={class:"form-check"},N3={class:"form-check-input",type:"checkbox",id:"image",name:"image"},R3={class:"form-check"},D3={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},A3={class:"form-check"},T3={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},P3={class:"form-check"},O3=["disabled"],I3={key:0,class:"form-text text-muted"},_3={key:1,class:"form-text text-muted"},M3={key:0,class:"form-text text-muted"},V3={class:"form-check"},q3={class:"form-check-input",type:"checkbox",id:"title-gist",name:"title-gist"},$3={class:"form-check"},L3={class:"form-check-input",type:"checkbox",id:"content-gist",name:"content-gist"},U3={class:"form-check"},F3={class:"form-check-input",type:"checkbox",id:"comments-gist",name:"comments-gist"},B3={class:"form-check"},z3={class:"form-check-input",type:"checkbox",id:"username-gist",name:"username-gist"},H3={class:"form-check"},j3={class:"form-check-input",type:"checkbox",id:"date-gist",name:"date-gist"},G3={class:"form-check"},W3={class:"form-check-input",type:"checkbox",id:"origin-gist",name:"origin-gist"},K3={class:"form-check"},Y3={class:"form-check-input",type:"checkbox",id:"title",name:"title"},X3={class:"form-check"},J3={class:"form-check-input",type:"checkbox",id:"body",name:"body"},Q3={class:"form-check"},Z3={class:"form-check-input",type:"checkbox",id:"diff",name:"diff"},x3={class:"form-check"},eP={class:"form-check-input",type:"checkbox",id:"comments",name:"comments"},tP={class:"form-check"},nP={class:"form-check-input",type:"checkbox",id:"username",name:"username"},oP={class:"form-check"},sP={class:"form-check-input",type:"checkbox",id:"date",name:"date"},iP={class:"form-check"},rP={class:"form-check-input",type:"checkbox",id:"origin",name:"origin"},aP={class:"paper-settings-section hosting-settings",id:"repository-hosting","aria-labelledby":"hosting-heading"},lP={class:"form-group conference-field"},dP=["href"],uP={class:"invalid-feedback"},cP={class:"form-text text-muted"},pP={key:0,class:"hosting-usage"},fP={key:0},hP={key:1},mP={key:2},gP={key:1,class:"hosting-payment"},vP={key:0,class:"hosting-limit",role:"status"},yP={key:1,class:"hosting-options"},bP={class:"hosting-options-title"},wP=["value","checked","onChange"],kP={class:"hosting-option-body"},CP={key:0,class:"hosting-cycle billing-toggle",role:"radiogroup","aria-label":"Billing frequency"},EP=["aria-checked","onClick"],SP={key:0,class:"billing-toggle-save"},NP={class:"hosting-option-price"},RP={key:2,role:"status"},DP={key:3,class:"hosting-terms"},AP={key:4,class:"hosting-terms"},TP={key:5,class:"capacity-options"},PP=["disabled"],OP={key:2,class:"hosting-subhead"},IP={class:"expiration-choices"},_P={class:"expiration-choice"},MP=["checked","disabled"],VP={key:0,class:"dated-options"},qP={key:0,class:"hosting-date"},$P=["min","max"],LP={key:0,class:"date-echo","aria-live":"polite"},UP={class:"invalid-feedback"},FP={class:"invalid-feedback"},BP={class:"hosting-property"},zP={key:1,class:"expiration-choice"},HP=["checked","disabled"],jP={key:0},GP={key:3,class:"form-text text-muted"},WP={key:4,class:"inline-hosting"},KP={key:0,role:"alert",class:"text-danger"},YP={key:1,role:"alert",class:"text-danger"},XP=["disabled"],JP={key:2,role:"status"},QP={key:3,role:"status",class:"form-text text-muted"},ZP={key:4,class:"hosting-terms"},xP={key:5,class:"hosting-terms"},eO={key:6,class:"repository-pass"},tO=["disabled","onClick"],nO={class:"paper-settings-section"},oO={class:"form-group"},sO={style:{position:"relative"}},iO={type:"text",id:"coauthorSearch",class:"form-control",placeholder:"Search GitHub username\u2026",autocomplete:"off"},rO={class:"dropdown-menu show",style:{display:"block","max-height":"220px","overflow-y":"auto",width:"100%"}},aO=["onClick"],lO=["src"],dO=["textContent"],uO=["textContent"],cO={class:"coauthor-list"},pO={class:"coauthor-row d-flex align-items-center",style:{padding:"6px 0",gap:"8px"}},fO=["src"],hO=["textContent","href"],mO=["onClick"],gO={class:"form-text text-muted"},vO=["textContent"],yO={class:"anonymize-submit-bar"},bO=["disabled"],wO=["disabled"],kO=["disabled"],CO=["disabled"],EO=["disabled"],SO=["disabled"],NO={key:5,class:"submit-reason",role:"status"},RO={key:6,class:"submit-reason",role:"status"},DO={key:7,class:"checkout-return-note"},AO={key:8,class:"draft-status",role:"status"},TO={key:9,class:"draft-status"},PO=["role","aria-labelledby"],OO={class:"rp-caption"},IO=["title"],_O={class:"redact-slot","aria-hidden":"true"},MO={key:1,class:"rp-count rp-count-none"},VO={key:2,class:"rp-count rp-count-none"},qO=["href"],$O=["aria-pressed"],LO={class:"rp-open-icon",viewBox:"0 0 16 16","aria-hidden":"true"},UO={key:0,d:"M9.5 2.5h4v4M13.5 2.5 9 7M6.5 13.5h-4v-4M2.5 13.5 7 9"},FO={key:1,d:"M13.5 6.5h-4v-4M9.5 6.5 14 2M2.5 9.5h4v4M6.5 9.5 2 14"},BO={class:"rp-window"},zO={class:"rp-chrome","aria-hidden":"true"},HO={class:"rp-url"},jO={class:"rp-bar","aria-hidden":"true"},GO={key:0,class:"rp-bar-id"},WO={key:1,class:"rp-bar-kind"},KO={key:0,class:"rp-tree","aria-label":"Files reviewers will see"},YO={class:"rp-tree-icon",viewBox:"0 0 16 16","aria-hidden":"true"},XO={key:0,d:"M1.5 3.5h4l1.5 1.5h7.5v8h-13z"},JO={key:1,d:"M3.5 1.5h6l3 3v10h-9z"},QO={class:"rp-tree-name"},ZO={key:1,class:"rp-tree-label"},xO={key:2,class:"rp-tree-note"},eI={class:"rp-doc"},tI={key:0,class:"rp-file-head"},nI={key:1,class:"rp-state rp-loading",role:"status"},oI={class:"rp-state-text"},sI={class:"rp-state rp-error",role:"alert"},iI={class:"rp-state-actions"},rI={key:1,class:"btn btn-outline-ink btn-sm",href:"/connections"},aI={key:3,class:"rp-state rp-error",role:"alert"},lI={class:"rp-state-actions"},dI={class:"rp-state rp-error",role:"alert"},uI={class:"rp-state-actions"},cI={key:5,class:"rp-state rp-empty"},pI=["innerHTML"],fI={key:7,class:"anonymize-preview-body"},hI={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},mI={class:"pr-title mb-1"},gI={key:0},vI=["textContent"],yI={key:0},bI={key:1},wI={key:2},kI={class:"pr-comments mt-3"},CI={class:"pr-comment"},EI={class:"pr-comment-head"},SI=["textContent"],NI={key:0,class:"pr-comment-date"},RI={key:3},DI={class:"pr-comments"},AI={class:"pr-comment"},TI={class:"pr-comment-head"},PI={key:0,class:"pr-comment-author"},OI=["textContent"],II=["textContent"],_I={key:0,class:"pr-comment-body"},MI={key:8,class:"anonymize-preview-body"},VI={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},qI={class:"pr-title mb-1"},$I={key:0},LI=["textContent"],UI={key:0},FI={key:1,class:"pr-body"},BI={key:2,class:"paper-tabs",role:"tablist"},zI=["aria-selected","tabindex"],HI=["aria-selected","tabindex"],jI=["textContent"],GI={key:3,class:"anonymize-preview-status"},WI={class:"paper-tab-content"},KI={key:0,role:"tabpanel",id:"preview-pr-diff-panel","aria-labelledby":"preview-pr-diff-tab"},YI=["innerHTML"],XI={key:1,role:"tabpanel",id:"preview-pr-comments-panel","aria-labelledby":"preview-pr-comments-tab"},JI={class:"pr-comments"},QI={class:"pr-comment"},ZI={class:"pr-comment-head"},xI={key:0,class:"pr-comment-author"},e5=["textContent"],t5=["textContent"],n5={key:0,class:"pr-comment-body"},o5={key:9,class:"rp-more"},s5=["href"],i5={key:2,class:"rp-more-btn is-hint","aria-hidden":"true"};function Fc(e,t){let o=Ye("gist-file"),i=Ye("markdown"),s=Pe("field"),r=Pe("form");return l(),d("div",{class:T(["anonymize-page h-100",{"mobile-preview-active":e.mobilePane==="preview","preview-expanded":e.previewExpanded}])},[f(" ===== STATE 1: No URL \u2014 centered input ===== "),P(n("div",B4,[n("div",z4,[t[62]||(t[62]=Ce('
My work \xA0/\xA0 New anonymization

New anonymization

Paste a repository, pull request, or gist URL, or pick one of your repositories. You\u2019ll choose the terms to redact next.

  1. 1. Repository
  2. 2. Review and hosting
  3. 3. Review link
',2)),n("div",H4,[n("div",j4,[t[53]||(t[53]=n("label",{class:"paper-field-label",for:"sourceUrl-landing"},"Source URL",-1)),!e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",G4,[!e.isUpdate&&e.detectedType!=="gist"?(l(),d("div",W4,[n("button",{type:"button","aria-pressed":e.githubConnection==="github-app",disabled:e.githubConnection==="github-app",onClick:t[0]||(t[0]=a=>e.chooseGitHubConnection("github-app"))},[...t[52]||(t[52]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),g(),n("span",{class:"sr-only"},"Read-only ",-1),g("GitHub App",-1)])],8,K4),n("button",{type:"button","aria-pressed":e.githubConnection==="oauth",disabled:e.githubConnection==="oauth",onClick:t[1]||(t[1]=a=>e.chooseGitHubConnection("oauth"))},"Legacy OAuth",8,Y4)])):f("v-if",!0),e.isUpdate||e.detectedType==="gist"?(l(),d("span",X4,c((e.detectedType==="gist"?e.githubConnections?.gistConnection==="github-app":e.githubConnection==="github-app")?"Read-only GitHub App":"Legacy OAuth"),1)):f("v-if",!0)])):f("v-if",!0)]),n("div",J4,[P(n("input",Q4,null,512),[[s,{state:e.viewState,set:a=>{e.sourceUrl=a},value:e.sourceUrl,form:null,options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.urlSelected()}}]]),n("button",{type:"button",class:"btn btn-primary landing-continue","aria-disabled":e.sourceUrl?.trim()?null:"true",onClick:t[2]||(t[2]=a=>e.sourceUrl?.trim()&&e.urlSelected())},"Continue",8,Z4)])]),e.sourceUrlError?(l(),d("p",x4,c(e.sourceUrlError),1)):f("v-if",!0),t[63]||(t[63]=n("small",{class:"form-text landing-help",style:{color:"var(--ink-muted)"}}," Repository, pull request (\u2026/pull/42) and gist (gist.github.com/\u2026) URLs are all accepted. ",-1)),n("section",eA,[n("div",tA,[n("div",nA,[t[55]||(t[55]=n("h2",{id:"repo-picker-title"},"Your repositories",-1)),e.userReposStatus==="ready"&&e.userRepos.length>0?(l(),d("span",oA,[e.userRepoFilter&&e.filteredUserRepos().length!==e.userRepos.length?(l(),d(L,{key:0},[g(c(e.filteredUserRepos().length)+" of ",1)],64)):f("v-if",!0),g(c(e.userRepos.length)+" "+c(e.userRepos.length===1?"repository":"repositories"),1),t[54]||(t[54]=n("span",{class:"repo-picker-more"},[n("span",{class:"repo-picker-more-sep"}," \xB7 "),g("scroll for more")],-1))])):f("v-if",!0)]),e.userReposStatus==="ready"&&e.userRepos.length>0?P((l(),d("input",{key:0,type:"search",class:"form-control repo-picker-filter",placeholder:"Filter\u2026","aria-label":"Filter your repositories",autocomplete:"off","onUpdate:modelValue":t[3]||(t[3]=a=>e.userRepoFilter=a)},null,512)),[[dt,e.userRepoFilter]]):f("v-if",!0)]),e.userReposStatus==="loading"||e.userReposStatus==="idle"?(l(),d("ul",sA,[(l(),d(L,null,ie([1,2,3,4],(a,u)=>n("li",iA,[n("span",{class:"skeleton skeleton-line",style:$e({width:34+a*9+"%"})},null,4)])),64))])):f("v-if",!0),e.userReposStatus==="ready"&&e.filteredUserRepos().length>0?(l(),d("ul",rA,[(l(!0),d(L,null,ie(e.filteredUserRepos(),(a,u)=>(l(),d("li",{key:a.id||a.fullName,class:"repo-picker-row"},[t[57]||(t[57]=n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1)),n("span",{class:"repo-picker-name",title:a.fullName},[n("span",lA,[g(c(a.fullName.split("/")[0]),1),t[56]||(t[56]=n("span",{class:"repo-picker-slash"},"/",-1))]),n("span",dA,c(a.fullName.split("/").slice(1).join("/")),1)],8,aA),n("button",{type:"button",class:"btn btn-outline-ink btn-sm repo-picker-select",onClick:p=>e.selectUserRepo(a),"aria-label":"Select "+a.fullName},"Select",8,uA)]))),128))])):f("v-if",!0),e.userReposStatus==="ready"&&e.userRepos.length>0&&e.filteredUserRepos().length===0?(l(),d("p",cA,"No repository matches \u201C"+c(e.userRepoFilter)+"\u201D.",1)):f("v-if",!0),e.userReposStatus==="ready"&&e.userRepos.length===0?(l(),d("p",pA,"No repositories found for your GitHub account. Paste a URL above, or grant access below.")):f("v-if",!0),e.userReposStatus==="error"?(l(),d("p",fA,[t[58]||(t[58]=g("Your repositories could not be loaded. ",-1)),n("button",{type:"button",class:"task-text-button",onClick:t[4]||(t[4]=a=>e.loadUserRepos(!0))},"Try again")])):f("v-if",!0),!e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected?(l(),d("aside",hA,[n("div",mA,[n("div",gA,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("span",vA,"Repository not listed?")):f("v-if",!0),e.detectedType!=="gist"&&e.githubConnection!=="oauth"?(l(),d("button",{key:1,type:"button",class:"btn btn-outline-ink",onClick:t[5]||(t[5]=a=>e.grantGitHubAccess())},[...t[59]||(t[59]=[g("Manage GitHub access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):f("v-if",!0),e.isUpdate||e.detectedType==="gist"||e.githubConnection==="oauth"?(l(),d("a",yA,[...t[60]||(t[60]=[g("Manage GitHub access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):f("v-if",!0)])]),n("div",bA,[e.error&&e.detectedType!=="gist"&&e.githubConnection==="github-app"?(l(),d("span",wA,"Signing in does not grant access to private repositories. Use Manage GitHub access to select this repository, then return here. Organization access may require administrator approval.")):f("v-if",!0),t[61]||(t[61]=n("span",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),g(" Anonymized content is public, even from private repositories.")],-1))])])):f("v-if",!0)])])],512),[[ee,!e.workspaceOpen&&!e.isUpdate]]),f(" ===== STATE 2: URL provided \u2014 form (left) + preview (right) ===== "),P(n("div",kA,[n("header",CA,[n("div",EA,[n("div",SA,[t[64]||(t[64]=n("a",{href:"/dashboard"},"My work",-1)),t[65]||(t[65]=g(" \xA0/\xA0 ",-1)),n("span",NA,c(e.isUpdate?"Edit anonymization":"New anonymization"),1)]),n("div",RA,[n("h1",DA,[e.isUpdate?f("v-if",!0):(l(),d("span",AA,"New anonymization")),e.isUpdate?(l(),d("span",TA,"Edit anonymization")):f("v-if",!0)]),P(n("span",{class:T(["type-badge",{"type-repo":e.detectedType==="repo","type-pr":e.detectedType==="pr","type-gist":e.detectedType==="gist"}])},c(e.detectedType==="repo"?"Repository":e.detectedType==="pr"?"Pull request":"Gist"),3),[[ee,e.detectedType]])]),n("p",PA,c(e.isUpdate?"Changes apply to the existing anonymous link; reviewers keep the same URL.":"Choose the terms to redact, what reviewers see, and when the link expires."),1),e.isUpdate?f("v-if",!0):(l(),d("ol",OA,[...t[66]||(t[66]=[n("li",null,"1. Repository",-1),n("li",{"aria-current":"step"},"2. Review and hosting",-1),n("li",null,"3. Review link",-1)])]))])]),e.detectedType==="gist"&&e.gistAppRequired?(l(),d("aside",IA,[t[67]||(t[67]=n("p",null,"Reconnect your GitHub account to read this gist. Your draft will be restored when you return.",-1)),n("button",{type:"button",class:"btn btn-ink",onClick:t[6]||(t[6]=a=>e.connectGistApp())},"Connect GitHub App to access gists")])):f("v-if",!0),e.detectedType==="gist"&&e.gistOAuthRequired?(l(),d("aside",_A,[t[68]||(t[68]=n("p",null,"Connect GitHub OAuth to access gists. Your account and existing anonymizations stay the same, and your draft will be restored when you return.",-1)),t[69]||(t[69]=n("p",null,"GitHub's legacy OAuth connection includes write access to private repositories.",-1)),e.githubConnections?.oauthEnabled?(l(),d("button",{key:0,type:"button",class:"btn btn-ink",onClick:t[7]||(t[7]=a=>e.connectGistOAuth())},"Connect GitHub OAuth to access gists")):(l(),d("p",MA,"GitHub OAuth is currently unavailable. Please try again later."))])):f("v-if",!0),n("nav",VA,[n("button",{id:"workspace-settings-tab",role:"tab",type:"button","aria-selected":e.mobilePane==="settings","aria-controls":"workspace-settings",tabindex:e.mobilePane==="settings"?0:-1,onKeydown:t[8]||(t[8]=a=>e.previewTabKeydown(a)),onClick:t[9]||(t[9]=a=>e.selectMobilePane("settings"))},"Settings",40,qA),n("button",{id:"workspace-preview-tab",role:"tab",type:"button","aria-selected":e.mobilePane==="preview","aria-controls":"workspace-preview",tabindex:e.mobilePane==="preview"?0:-1,onKeydown:t[10]||(t[10]=a=>e.previewTabKeydown(a)),onClick:t[11]||(t[11]=a=>e.selectMobilePane("preview"))},"Reviewer preview",40,$A)]),n("div",LA,[f(" Form column (left) "),n("div",{id:"workspace-settings",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-settings-tab":null,class:"anonymize-form-col overflow-auto"},[P((l(),d("form",FA,[n("div",BA,[n("section",zA,[t[88]||(t[88]=n("h2",{class:"paper-section-eyebrow"},"Source & access",-1)),n("div",HA,[n("div",jA,[t[71]||(t[71]=n("label",{class:"paper-field-label",for:"sourceUrl"},"Source URL",-1)),e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected&&e.githubConnections.oauthConnected?(l(),d("aside",GA,[!e.isUpdate&&e.detectedType!=="gist"?(l(),d("div",WA,[n("button",{type:"button","aria-pressed":e.githubConnection==="github-app",disabled:e.githubConnection==="github-app",onClick:t[12]||(t[12]=a=>e.chooseGitHubConnection("github-app"))},[...t[70]||(t[70]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),g(),n("span",{class:"sr-only"},"Read-only ",-1),g("GitHub App",-1)])],8,KA),n("button",{type:"button","aria-pressed":e.githubConnection==="oauth",disabled:e.githubConnection==="oauth",onClick:t[13]||(t[13]=a=>e.chooseGitHubConnection("oauth"))},"Legacy OAuth",8,YA)])):f("v-if",!0),e.isUpdate||e.detectedType==="gist"?(l(),d("span",XA,c((e.detectedType==="gist"?e.githubConnections?.gistConnection==="github-app":e.githubConnection==="github-app")?"Read-only GitHub App":"Legacy OAuth"),1)):f("v-if",!0)])):f("v-if",!0)]),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.anonymize?.sourceUrl?.invalid}]),name:"sourceUrl",id:"sourceUrl",onblur:"this.scrollLeft=0",disabled:e.isUpdate&&e.detectedType!=="repo",placeholder:"Paste a GitHub repo or pull request URL"},null,10,JA),[[s,{state:e.viewState,set:a=>{e.sourceUrl=a},value:e.sourceUrl,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.urlSelected()}}]]),e.sourceSummary()&&!e.anonymize?.sourceUrl?.invalid?(l(),d("p",QA,[t[72]||(t[72]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check"})],-1)),g(c(e.sourceSummary()),1)])):f("v-if",!0),P(n("div",ZA," Please provide a valid GitHub URL. ",512),[[ee,e.anonymize?.sourceUrl?.errors?.github]]),P(n("div",xA," Not accessible. The organization may restrict access. ",512),[[ee,e.anonymize?.sourceUrl?.errors?.access]]),P(n("div",eT," Does not exist or is not accessible. ",512),[[ee,e.anonymize?.sourceUrl?.errors?.missing]]),P(n("div",tT," Already anonymized. ",512),[[ee,e.anonymize?.sourceUrl?.errors?.used]])]),!e.isUpdate&&e.previousConfigurations.length?(l(),d("aside",nT,[t[74]||(t[74]=n("p",{role:"status"},"You have already anonymized this repository. Use the existing configuration to keep its anonymous link and avoid creating another repository.",-1)),e.previousConfigurations.length>1?(l(),d("div",oT,[t[73]||(t[73]=n("label",{class:"paper-field-label",for:"previousConfiguration"},"Previous anonymization",-1)),P(n("select",{id:"previousConfiguration",class:"form-control","onUpdate:modelValue":t[14]||(t[14]=a=>e.previousConfigurationId=a)},[(l(!0),d(L,null,ie(e.previousConfigurations,a=>(l(),d("option",{key:a.repoId,value:a.repoId},c(a.repoId),9,sT))),128))],512),[[an,e.previousConfigurationId]])])):(l(),d("p",iT,c(e.previousConfigurationId),1)),t[75]||(t[75]=n("p",null,"You can review and update its settings before saving.",-1)),n("div",rT,[n("a",{class:"btn btn-ink",href:e.existingConfigurationUrl()},"Use existing configuration",8,aT),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[15]||(t[15]=a=>e.previousConfigurations=[])},"Create a separate one")])])):f("v-if",!0),e.sourceUrl&&e.githubConnections?.appEnabled&&e.githubConnections.appConnected?(l(),d("aside",lT,[n("div",dT,[n("div",uT,[e.detectedType!=="gist"&&e.githubConnection!=="oauth"&&!e.details?(l(),d("span",cT,"Repository not listed?")):f("v-if",!0),e.detectedType!=="gist"&&e.githubConnection!=="oauth"&&!e.details?(l(),d("button",{key:1,type:"button",class:"btn btn-outline-ink",onClick:t[16]||(t[16]=a=>e.grantGitHubAccess())},[...t[76]||(t[76]=[g("Manage GitHub access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):f("v-if",!0),e.isUpdate||e.detectedType==="gist"||e.githubConnection==="oauth"?(l(),d("a",pT,[...t[77]||(t[77]=[g("Manage GitHub access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):f("v-if",!0)])]),n("div",fT,[e.error&&e.detectedType!=="gist"&&e.githubConnection==="github-app"?(l(),d("span",hT,"Signing in does not grant access to private repositories. Use Manage GitHub access to select this repository, then return here. Organization access may require administrator approval.")):f("v-if",!0),e.detectedType!=="gist"&&e.githubConnection!=="oauth"&&!e.details?(l(),d("span",mT,"Select repositories on GitHub, then return here.")):f("v-if",!0),t[78]||(t[78]=n("span",null,[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),g(" Selected content will be published, including content from private repositories.")],-1))])])):f("v-if",!0),e.isUpdate&&e.detectedType==="repo"&&e.role==="owner"&&e.sourceUrl==="https://github.com/"+e._originalFullName?(l(),d("details",{key:2,class:"repair-disclosure",open:!!(e.error||e.accessRepairMessage||e.reconnectRepositoryId)},[t[82]||(t[82]=n("summary",null,"Connection problems?",-1)),e.accessRepairAllowed&&e.githubConnections?.appEnabled&&e.githubConnection==="github-app"&&e.sourceUrl==="https://github.com/"+e._originalFullName?(l(),d("div",vT,[t[80]||(t[80]=n("p",null,"If this repository became private or its App installation changed, repair its access here. This keeps the same anonymous URL and published commit.",-1)),n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.repairingGitHubAccess,onClick:t[17]||(t[17]=a=>e.repairGitHubAccess())},"Repair GitHub access",8,yT),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[18]||(t[18]=a=>e.grantGitHubAccess())},[...t[79]||(t[79]=[g("Manage GitHub access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])]),e.accessRepairMessage?(l(),d("p",bT,c(e.accessRepairMessage),1)):f("v-if",!0)])):f("v-if",!0),n("div",wT,[t[81]||(t[81]=n("p",null,"If you deleted and recreated this repository, reconnect it before choosing a branch.",-1)),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[19]||(t[19]=a=>e.reconnectSource())},"Reconnect source repository"),e.reconnectRepositoryId?(l(),d("p",kT,"Source reloaded. Review the branch, commit, and anonymization preview, then save to replace the published snapshot.")):f("v-if",!0)])],8,gT)):f("v-if",!0),e.detectedType==="repo"?(l(),d("div",CT,[n("div",ET,[t[84]||(t[84]=n("label",{class:"paper-field-label",for:"branch"},"Branch",-1)),n("div",ST,[P((l(),d("select",NT,[(l(!0),d(L,null,ie(e.branches,(a,u)=>(l(),d("option",{textContent:c(a?.name),value:a?.name},null,8,RT))),256))])),[[s,{state:e.viewState,set:a=>{e.source.branch=a},value:e.source?.branch,form:"anonymize",options:{}}]]),n("div",DT,[n("button",{class:"btn btn-icon refresh-branches",type:"button",title:"Refresh branches",onClick:t[20]||(t[20]=a=>e.getBranches(!0)),"aria-label":"Refresh branches"},[...t[83]||(t[83]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1)])])])])]),n("div",AT,[t[85]||(t[85]=n("label",{class:"paper-field-label",for:"commit"},"Commit",-1)),P(n("input",{class:T(["form-control",{"is-invalid":e.anonymize?.commit?.invalid}]),id:"commit",disabled:e.options.update,name:"commit",pattern:"[a-fA-Z0-9]{6,}",required:""},null,10,TT),[[s,{state:e.viewState,set:a=>{e.source.commit=a},value:e.source?.commit,form:"anonymize",options:{}}]]),P(n("div",PT," The commit SHA is not valid. ",512),[[ee,e.anonymize?.commit?.errors?.pattern||e.anonymize?.commit?.errors?.required]]),P(n("div",OT," This commit no longer exists in the repository. Click refresh to get the latest. ",512),[[ee,e.anonymize?.commit?.errors?.exists]])])])):f("v-if",!0),P(n("div",IT,[P(n("input",_T,null,512),[[s,{state:e.viewState,set:a=>{e.options.update=a},value:e.options?.update,form:"anonymize",options:{}}]]),t[86]||(t[86]=n("label",{class:"form-check-label",for:"update"},"Auto-update from GitHub",-1)),t[87]||(t[87]=n("small",{class:"form-text text-muted"},"Follows the latest version, at most once an hour.",-1))],512),[[ee,e.detectedType]])]),P(n("section",MT,[t[122]||(t[122]=n("h2",{class:"paper-section-eyebrow"},"Anonymization",-1)),P(n("div",VT,[t[93]||(t[93]=n("label",{class:"paper-field-label",for:"repoId"},"Anonymized repository ID",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.anonymize?.repoId?.invalid}]),name:"repoId",id:"repoId",disabled:e.isUpdate},null,10,qT),[[s,{state:e.viewState,set:a=>{e.repoId=a},value:e.repoId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",$T,[t[89]||(t[89]=g("anonymous.4open.science/",-1)),t[90]||(t[90]=n("wbr",null,null,-1)),t[91]||(t[91]=g("r/",-1)),t[92]||(t[92]=n("wbr",null,null,-1)),n("span",LT,c(e.repoId),1)]),P(n("div",UT,"ID can only contain letters and numbers.",512),[[ee,e.anonymize?.repoId?.errors?.format]]),P(n("div",{class:"invalid-feedback"},c(e.repoId)+" is already used.",513),[[ee,e.anonymize?.repoId?.errors?.used]])],512),[[ee,e.detectedType==="repo"]]),P(n("div",FT,[t[98]||(t[98]=n("label",{class:"paper-field-label",for:"pullRequestId"},"Anonymized pull request ID",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.anonymize?.pullRequestId?.invalid}]),name:"pullRequestId",id:"pullRequestId",disabled:e.isUpdate},null,10,BT),[[s,{state:e.viewState,set:a=>{e.pullRequestId=a},value:e.pullRequestId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",zT,[t[94]||(t[94]=g("anonymous.4open.science/",-1)),t[95]||(t[95]=n("wbr",null,null,-1)),t[96]||(t[96]=g("pr/",-1)),t[97]||(t[97]=n("wbr",null,null,-1)),n("span",HT,c(e.pullRequestId),1)]),P(n("div",jT,"ID can only contain letters and numbers.",512),[[ee,e.anonymize?.pullRequestId?.errors?.format]]),P(n("div",{class:"invalid-feedback"},c(e.pullRequestId)+" is already used.",513),[[ee,e.anonymize?.pullRequestId?.errors?.used]])],512),[[ee,e.detectedType==="pr"]]),P(n("div",GT,[t[103]||(t[103]=n("label",{class:"paper-field-label",for:"gistId"},"Anonymized gist ID",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.anonymize?.gistId?.invalid}]),name:"gistId",id:"gistId",disabled:e.isUpdate},null,10,WT),[[s,{state:e.viewState,set:a=>{e.gistId=a},value:e.gistId,form:"anonymize",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",KT,[t[99]||(t[99]=g("anonymous.4open.science/",-1)),t[100]||(t[100]=n("wbr",null,null,-1)),t[101]||(t[101]=g("gist/",-1)),t[102]||(t[102]=n("wbr",null,null,-1)),n("span",YT,c(e.gistId),1)]),P(n("div",XT,"ID can only contain letters and numbers.",512),[[ee,e.anonymize?.gistId?.errors?.format]]),P(n("div",{class:"invalid-feedback"},c(e.gistId)+" is already used.",513),[[ee,e.anonymize?.gistId?.errors?.used]])],512),[[ee,e.detectedType==="gist"]]),n("div",JT,[t[114]||(t[114]=n("label",{class:"paper-field-label",for:"terms"},"Terms to redact",-1)),P(n("textarea",{class:T(["form-control terms-input",{"is-invalid":e.anonymize?.terms?.invalid}]),id:"terms",name:"terms",rows:Math.min(14,Math.max(4,String(e.terms||"").split(` `).length+1)),placeholder:`Jane Smith MIT CSAIL -jane.smith@example.org`},null,10,_A),[[s,{state:e.viewState,set:a=>{e.terms=a},value:e.terms,form:"anonymize",options:{debounce:250}}]]),t[93]||(t[93]=n("small",{class:"form-text text-muted"},"One term per line.",-1)),n("details",OA,[t[88]||(t[88]=n("summary",null,"Regex & replacement syntax",-1)),t[89]||(t[89]=y()),n("small",IA,[t[82]||(t[82]=y("Regex is supported. Replaced by ",-1)),n("code",null,c(e.site_options?.ANONYMIZATION_MASK)+"-[N]",1),t[83]||(t[83]=y(", or use ",-1)),t[84]||(t[84]=n("code",null,"term=>replacement",-1)),t[85]||(t[85]=y(" to pick your own (e.g. ",-1)),t[86]||(t[86]=n("code",null,"Anonymous=>ABC",-1)),t[87]||(t[87]=y(").",-1))])]),(l(!0),d(B,null,ie((e.termHints||[]).slice(0,3),a=>(l(),d("div",{class:"term-hint",key:a.line},[n("span",null,[t[90]||(t[90]=y("In ",-1)),n("code",null,c(a.term),1),t[91]||(t[91]=y(", ",-1)),n("code",null,c(a.symbols.join(" ")),1),y(" "+c(a.symbols.length>1?"are regex symbols":"is a regex symbol")+", so it may not match the text as written.",1)]),n("button",{type:"button",class:"btn btn-outline-ink btn-sm",onClick:u=>e.matchTermAsWritten(a.line)},"Match as written",8,MA)]))),128)),(e.termHints||[]).length>3?(l(),d("div",VA,c(e.termHints.length-3)+" more "+c(e.termHints.length-3===1?"term uses":"terms use")+" regex symbols.",1)):f("v-if",!0),A(n("div",qA,"Terms are in an invalid format.",512),[[J,e.anonymize?.terms?.errors?.format]])]),A(n("div",$A,[n("div",LA,[t[94]||(t[94]=n("span",{class:"paper-field-label",id:"preserve-files-label"},"Unredacted files",-1)),n("span",UA,c(e.preserveSummary()),1)]),n("button",{type:"button",class:"btn btn-outline-ink btn-sm","aria-describedby":"preserve-files-label",disabled:!e.source?.commit,onClick:t[19]||(t[19]=a=>e.openPreserveFiles())},c((e.options?.preserveFiles||[]).length?"Edit":"Choose files"),9,FA)],512),[[J,e.detectedType==="repo"]]),e.preserve?.open?(l(),d("dialog",{key:0,id:"preserve-files-dialog",class:"preserve-dialog","aria-labelledby":"preserve-files-title",onCancel:t[24]||(t[24]=ce(a=>e.closePreserveFiles(),["prevent"]))},[n("form",{onSubmit:t[23]||(t[23]=ce(a=>e.savePreserveFiles(),["prevent"]))},[t[98]||(t[98]=n("h2",{id:"preserve-files-title"},"Leave files unredacted",-1)),t[99]||(t[99]=n("p",{class:"preserve-intro"},"Checked files are shown exactly as written, for example a bibliography where redacted self-citations would reveal you. File names are still redacted.",-1)),A(n("input",{type:"search",id:"preserve-files-search",class:"form-control",placeholder:"Search files","aria-label":"Search files",autocomplete:"off","onUpdate:modelValue":t[20]||(t[20]=a=>e.preserve.search=a)},null,512),[[ct,e.preserve.search]]),n("div",BA,[e.preserve.loading?(l(),d("p",zA,"Loading files from GitHub\u2026")):e.preserve.error?(l(),d("p",HA,c(e.preserve.error),1)):(l(),d(B,{key:2},[(l(!0),d(B,null,ie(e.preserveRows(),(a,u)=>(l(),d("div",{class:"preserve-item",key:a.kind+":"+a.path,style:$e({paddingLeft:a.depth*18+6+"px"})},[a.kind==="dir"?(l(),d("button",{key:0,type:"button",class:"preserve-caret","aria-expanded":a.open?"true":"false","aria-label":(a.open?"Collapse ":"Expand ")+a.label,onClick:p=>e.togglePreserveDir(a.path)},c(a.open?"\u25BE":"\u25B8"),9,jA)):(l(),d("span",GA)),n("input",{type:"checkbox",id:"pf-"+u,"aria-label":a.kind==="dir"?"Leave folder "+a.path+" unredacted":null,checked:a.state==="all",".indeterminate":a.state==="some",disabled:a.locked,onChange:p=>a.kind==="dir"?e.togglePreserveFolder(a.path):e.togglePreserveFile(a.path)},null,40,WA),n("label",{for:a.kind==="file"?"pf-"+u:null,class:"preserve-name",onClick:p=>a.kind==="dir"&&e.togglePreserveDir(a.path)},c(a.label),9,KA),a.note?(l(),d("span",YA,c(a.note),1)):f("v-if",!0)],4))),128)),!e.preserve.loading&&!e.preserveRows().length?(l(),d("p",XA,c(e.preserve.search?"No file matches your search.":"No text files in this commit."),1)):f("v-if",!0)],64))]),e.preserve.truncated?(l(),d("p",JA,"This repository has too many files to list them all. Use a pattern for files you cannot find.")):f("v-if",!0),n("details",{class:"preserve-patterns",open:e.preserve.patternsOpen},[t[95]||(t[95]=n("summary",null,"Patterns",-1)),A(n("textarea",{class:"form-control",rows:"3","aria-label":"Patterns",placeholder:`*.bib -paper/appendix/**`,"onUpdate:modelValue":t[21]||(t[21]=a=>e.preserve.patterns=a)},null,512),[[ct,e.preserve.patterns]]),t[96]||(t[96]=n("small",{class:"form-text text-muted"},[y("One per line, as in .gitignore: "),n("code",null,"*.bib"),y(" matches in any folder; "),n("code",null,"/refs.bib"),y(" and "),n("code",null,"paper/refs.bib"),y(" match from the repository root; a folder name such as "),n("code",null,"drafts/"),y(" covers everything inside it; "),n("code",null,"!private.bib"),y(" excludes again.")],-1))],8,QA),n("div",ZA,[n("span",xA,c(e.preserve.loading||e.preserve.error?"":e.preserveCount()+(e.preserveCount()===1?" file":" files")+" will be shown as written"),1),n("span",eT,[n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[22]||(t[22]=a=>e.closePreserveFiles())},"Cancel"),t[97]||(t[97]=n("button",{type:"submit",class:"btn btn-ink"},"Save",-1))])])],32)],32)):f("v-if",!0)],512),[[J,e.detectedType]]),A(n("section",tT,[t[120]||(t[120]=n("h2",{class:"paper-section-eyebrow"},"Display",-1)),A(n("div",null,[n("div",nT,[A(n("input",oT,null,512),[[s,{state:e.viewState,set:a=>{e.options.link=a},value:e.options?.link,form:"anonymize",options:{}}]]),t[101]||(t[101]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1))]),n("div",sT,[A(n("input",iT,null,512),[[s,{state:e.viewState,set:a=>{e.options.image=a},value:e.options?.image,form:"anonymize",options:{}}]]),t[102]||(t[102]=n("label",{class:"form-check-label",for:"image"},"Display images",-1))]),n("div",rT,[A(n("input",aT,null,512),[[s,{state:e.viewState,set:a=>{e.options.pdf=a},value:e.options?.pdf,form:"anonymize",options:{}}]]),t[103]||(t[103]=n("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1))]),n("div",lT,[A(n("input",dT,null,512),[[s,{state:e.viewState,set:a=>{e.options.notebook=a},value:e.options?.notebook,form:"anonymize",options:{}}]]),t[104]||(t[104]=n("label",{class:"form-check-label",for:"notebook"},"Display Notebooks",-1))]),n("div",uT,[A(n("input",{class:"form-check-input",type:"checkbox",id:"page",name:"page",disabled:!e.details?.hasPage||e.details?.pageSource&&e.details?.pageSource?.branch!==e.source?.branch},null,8,cT),[[s,{state:e.viewState,set:a=>{e.options.page=a},value:e.options?.page,form:"anonymize",options:{}}]]),t[105]||(t[105]=n("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),e.details?.hasPage?f("v-if",!0):(l(),d("small",pT,c(e.fmt?.translate("WARNINGS.page_not_enabled_on_repo")),1)),e.details?.hasPage&&e.details?.pageSource?.branch&&e.source?.branch&&e.details.pageSource.branch!==e.source.branch?(l(),d("small",fT,c(e.fmt?.translate("WARNINGS.page_branch_mismatch",{pageBranch:e.details?.pageSource?.branch,selectedBranch:e.source?.branch})),1)):f("v-if",!0)])],512),[[J,e.detectedType==="repo"]]),e.detectedType==="repo"&&(e.options.image||e.options.pdf)?(l(),d("p",hT,[...t[106]||(t[106]=[y("Images and PDFs are served unchanged. Review their contents and metadata before sharing. ",-1),n("a",{href:"/faq#formats"},"Supported formats",-1)])])):f("v-if",!0),A(n("div",null,[n("div",mT,[A(n("input",gT,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[107]||(t[107]=n("label",{class:"form-check-label",for:"title-gist"},"Gist description",-1))]),n("div",vT,[A(n("input",yT,null,512),[[s,{state:e.viewState,set:a=>{e.options.content=a},value:e.options?.content,form:"anonymize",options:{}}]]),t[108]||(t[108]=n("label",{class:"form-check-label",for:"content-gist"},"File contents",-1))]),n("div",bT,[A(n("input",wT,null,512),[[s,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[109]||(t[109]=n("label",{class:"form-check-label",for:"comments-gist"},"Comments",-1))]),n("div",kT,[A(n("input",CT,null,512),[[s,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[110]||(t[110]=n("label",{class:"form-check-label",for:"username-gist"},"Usernames",-1))]),n("div",ET,[A(n("input",ST,null,512),[[s,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[111]||(t[111]=n("label",{class:"form-check-label",for:"date-gist"},"Dates",-1))]),n("div",NT,[A(n("input",RT,null,512),[[s,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[112]||(t[112]=n("label",{class:"form-check-label",for:"origin-gist"},"Source gist ID",-1))])],512),[[J,e.detectedType==="gist"]]),A(n("div",null,[n("div",DT,[A(n("input",AT,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[113]||(t[113]=n("label",{class:"form-check-label",for:"title"},"PR title",-1))]),n("div",TT,[A(n("input",PT,null,512),[[s,{state:e.viewState,set:a=>{e.options.body=a},value:e.options?.body,form:"anonymize",options:{}}]]),t[114]||(t[114]=n("label",{class:"form-check-label",for:"body"},"PR body",-1))]),n("div",_T,[A(n("input",OT,null,512),[[s,{state:e.viewState,set:a=>{e.options.diff=a},value:e.options?.diff,form:"anonymize",options:{}}]]),t[115]||(t[115]=n("label",{class:"form-check-label",for:"diff"},"Diff",-1))]),n("div",IT,[A(n("input",MT,null,512),[[s,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[116]||(t[116]=n("label",{class:"form-check-label",for:"comments"},"Comments",-1))]),n("div",VT,[A(n("input",qT,null,512),[[s,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[117]||(t[117]=n("label",{class:"form-check-label",for:"username"},"Usernames",-1))]),n("div",$T,[A(n("input",LT,null,512),[[s,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[118]||(t[118]=n("label",{class:"form-check-label",for:"date"},"Dates",-1))]),n("div",UT,[A(n("input",FT,null,512),[[s,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[119]||(t[119]=n("label",{class:"form-check-label",for:"origin"},"Project name",-1))])],512),[[J,e.detectedType==="pr"]])],512),[[J,e.detectedType]]),A(n("section",BT,[t[133]||(t[133]=n("h2",{class:"paper-section-eyebrow",id:"hosting-heading"},"Hosting & expiration",-1)),n("div",zT,[t[121]||(t[121]=n("label",{class:"paper-field-label",for:"conference"},[y("Conference code "),n("span",{class:"paper-optional"},"(optional)")],-1)),A(n("input",{class:P(["form-control",{"is-invalid":e.anonymize?.conference?.invalid}]),id:"conference",name:"conference"},null,2),[[s,{state:e.viewState,set:a=>{e.conference=a},value:e.conference,form:"anonymize",options:{debounce:{default:800,blur:0},updateOn:"default blur"}}]]),A(n("p",{class:P(["conference-hosting",{"is-covered":e.conferenceHosting()}]),role:"status"},[n("a",{target:"_blank",href:e.safeUrl(e.conference_data?.url)},c(e.conference_data?.name),9,HT),e.conferenceHosting()?(l(),d(B,{key:0},[y(" hosts this repository until "+c(e.fmt?.date(e.conference_data?.endDate))+", with automatic updates. You don't pay anything.",1)],64)):e.billing?.enabled&&e.detectedType==="repo"?(l(),d(B,{key:1},[y(" runs until "+c(e.fmt?.date(e.conference_data?.endDate))+". It doesn't pay for hosting, so this repository uses your own allowance.",1)],64)):(l(),d(B,{key:2},[y(" runs until "+c(e.fmt?.date(e.conference_data?.endDate))+".",1)],64))],2),[[J,e.conference_data]]),A(n("div",jT,"The conference is not activated.",512),[[J,e.anonymize?.conference?.errors?.activated]]),A(n("small",GT,"Submitting to a conference? Its code applies the venue's settings, and a paid conference hosts the repository for you.",512),[[J,!e.conference_data]])]),e.detectedType==="repo"&&e.billing?.enabled&&!e.conferenceHosting()?(l(),d("p",WT,[e.isUpdate&&e.role!=="owner"?(l(),d("span",KT,"Uses the owner's hosting")):e.hasAuthorHosting()?(l(),d("span",YT,"Your author subscription is active.")):e.hostingQuota?.repository?(l(),d("span",XT,c(e.hostingQuota.repository.used)+" of "+c(e.hostingQuota.repository.total)+" active repositories \xB7 Free",1)):f("v-if",!0)])):f("v-if",!0),e.detectedType==="repo"&&e.billing?.enabled?(l(),d("div",JT,[e.hostingNeedsPayment()&&!e.billingPending?(l(),d(B,{key:0},[e.options.expirationMode!=="never"||e.hostingQuotaBlocked?(l(),d("p",QT,c(e.options.update&&!e.hostingQuotaBlocked&&e.hostingQuota?.repository?.used(l(),d("label",{class:P(["hosting-option",{"is-selected":e.hostingChoice()===a.id||a.interval&&e.authorPlans().some(u=>u.id===e.hostingChoice())}]),key:a.id},[n("input",{type:"radio",name:"hosting-plan",value:a.id,checked:e.hostingChoice()===a.id||a.interval&&e.authorPlans().some(u=>u.id===e.hostingChoice()),onChange:u=>e.hostingPlan=a.interval?e.hostingSubscriptionPlan().id:a.id},null,40,eP),n("span",tP,[n("strong",null,c(e.hostingOptionName(a)),1),n("small",null,c(e.hostingOptionBlurb(a)),1),a.interval&&e.authorPlans().length>1&&e.authorPlans().some(u=>u.id===e.hostingChoice())?(l(),d("span",nP,[(l(!0),d(B,null,ie(e.authorPlans(),u=>(l(),d("button",{type:"button",role:"radio",key:u.id,"aria-checked":e.hostingSubscriptionPlan().id===u.id?"true":"false",class:P({"is-on":e.hostingSubscriptionPlan().id===u.id}),onClick:ce(p=>{e.hostingCycle=u.id,e.hostingPlan=u.id},["prevent"])},[y(c(u.interval==="year"?"Yearly":"Monthly"),1),u.interval==="year"&&e.hostingAnnualSavings()?(l(),d("span",sP,"\u2212"+c(e.hostingAnnualSavings())+"%",1)):f("v-if",!0)],10,oP))),128))])):f("v-if",!0)]),n("span",iP,[n("strong",null,c(e.billingAmount(a.interval?e.hostingSubscriptionPlan():a)),1),n("small",null,c(a.interval?"per "+e.hostingSubscriptionPlan().interval:"once"),1)])],2))),128))])):(l(),d("p",rP,"New purchases are temporarily unavailable. Your draft is kept.")),e.authorPlans().some(a=>a.id===e.hostingChoice())?(l(),d("p",aP,"Renews "+c(e.hostingChoice()==="author_annual"?"yearly":"monthly")+" until you cancel. Tax shown at checkout.",1)):(l(),d("p",lP,"One-time payment, nothing renews. Tax shown at checkout.")),e.options.expirationMode!=="never"?(l(),d("details",dP,[t[122]||(t[122]=n("summary",null,"Keep using free hosting",-1)),t[123]||(t[123]=n("p",null,"Remove a repository you no longer need, or enter the code of a paid conference above. Removing a repository affects its review link.",-1)),t[124]||(t[124]=n("a",{href:"/dashboard"},"Review my repositories",-1)),n("button",{type:"button",class:"task-text-button",onClick:t[25]||(t[25]=a=>e.anonymizeRepo(a)),disabled:e.sourceLoading||e.billingBusy},"Recheck capacity and submit",8,uP)])):f("v-if",!0)],64)):f("v-if",!0)])):f("v-if",!0),e.hostingNeedsPayment()&&!e.billingPending?(l(),d("h4",cP,"Expiration")):f("v-if",!0),n("fieldset",pP,[t[130]||(t[130]=n("legend",{class:"sr-only"},"Expiration",-1)),n("label",fP,[n("input",{type:"radio",name:"expiration-choice",checked:e.options.expirationMode!=="never",onChange:t[26]||(t[26]=a=>e.useDatedHosting()),disabled:e.billingPending},null,40,hP),t[125]||(t[125]=n("span",null,"Expire on a date",-1))]),e.options.expirationMode!=="never"?(l(),d("div",mP,[e.options?.expirationMode!=="never"?(l(),d("div",gP,[t[126]||(t[126]=n("label",{class:"paper-field-label",for:"expirationDate"},"Expires",-1)),A(n("input",{class:P(["form-control",{"is-invalid":e.anonymize?.expirationDate?.invalid}]),type:"date",name:"expirationDate",id:"expirationDate",required:"",min:e.minExpirationDate,max:e.maxExpirationDate},null,10,vP),[[s,{state:e.viewState,set:a=>{e.options.expirationDate=a},value:e.options?.expirationDate,form:"anonymize",options:{}}]]),A(n("div",yP,"Pick a date in the future.",512),[[J,e.anonymize?.expirationDate?.errors?.min]]),A(n("div",{class:"invalid-feedback"},"Pick a date on or before "+c(e.fmt?.date(e.maxExpirationDate))+".",513),[[J,e.anonymize?.expirationDate?.errors?.max]]),A(n("div",bP,"Enter a valid expiration date.",512),[[J,e.anonymize?.expirationDate?.errors?.required||e.anonymize?.expirationDate?.errors?.date]])])):f("v-if",!0),n("div",wP,[t[128]||(t[128]=n("label",{for:"expiration"},"Then",-1)),A(n("select",{id:"expiration",class:"form-control","onUpdate:modelValue":t[27]||(t[27]=a=>e.options.expirationMode=a)},[...t[127]||(t[127]=[n("option",{value:"remove"},"Remove content",-1),n("option",{value:"redirect"},"Redirect to GitHub",-1)])],512),[[gn,e.options.expirationMode]])])])):f("v-if",!0),e.detectedType==="repo"?(l(),d("label",kP,[n("input",{type:"radio",name:"expiration-choice",checked:e.options.expirationMode==="never",onChange:t[28]||(t[28]=a=>e.options.expirationMode="never"),disabled:e.billingPending},null,40,CP),n("span",null,[t[129]||(t[129]=y("Never expire",-1)),(e.options.expirationMode!=="never"||e.hasAuthorHosting()||e.repositoryGrants("repo_never").length)&&!(e.hostingNeedsPayment()&&e.hostingOptionPlans().length)?(l(),d("small",EP,c(e.neverExpireTag()),1)):f("v-if",!0)])])):f("v-if",!0)]),e.options.expirationMode==="redirect"?(l(),d("p",SP,"Visitors will be redirected to the original GitHub source on this date, revealing its identity.")):f("v-if",!0),e.detectedType==="repo"&&e.billing?.enabled?(l(),d("div",NP,[e.taskValidationError?(l(),d("p",RP,c(e.taskValidationError),1)):f("v-if",!0),e.billingError?(l(),d("p",DP,[y(c(e.billingError)+" ",1),n("button",{type:"button",class:"task-text-button",onClick:t[29]||(t[29]=a=>e.loadBilling()),disabled:e.billingBusy},"Reload billing",8,AP)])):f("v-if",!0),e.billingPending?(l(),d("div",TP,[...t[131]||(t[131]=[n("p",null,[n("strong",null,"Confirming your payment\u2026")],-1),n("p",{class:"form-text text-muted"},"Your draft is saved. Please do not pay again.",-1)])])):e.billingNotice?(l(),d("p",PP,c(e.billingNotice),1)):e.options.expirationMode==="never"&&!e.billingPending&&!e.hasAuthorHosting()&&e.repositoryGrants("repo_never").length?(l(),d("p",_P,"No scheduled expiration. Paid once for this repository.")):e.options.expirationMode==="never"&&!e.billingPending?(l(),d("p",OP,"No scheduled expiration while subscribed. A 90-day grace period applies if paid access ends.")):f("v-if",!0),e.isUpdate&&e.role==="owner"&&!e.hasAuthorHosting()&&!e.hostingNeedsPayment()&&e.repositoryAddonPlans().length?(l(),d("details",IP,[t[132]||(t[132]=n("summary",null,"Pay once for just this repository",-1)),(l(!0),d(B,null,ie(e.repositoryAddonPlans(),a=>(l(),d("div",{key:a.id},[n("p",null,[n("strong",null,c(a.name),1),y(" \xB7 "+c(e.billingPrice(a))+". "+c(a.description),1)]),n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.billingBusy||e.hostingSaving||e.sourceLoading||e.billing.checkoutEnabled===!1||e.billingPending,onClick:u=>e.checkoutRepository(a.id)},"Buy "+c(a.name.toLowerCase()),9,MP)]))),128))])):f("v-if",!0)])):f("v-if",!0)],512),[[J,e.detectedType]]),A(n("section",VP,[t[137]||(t[137]=n("h2",{class:"paper-section-eyebrow"},"Coauthors",-1)),t[138]||(t[138]=n("p",{class:"form-text text-muted",style:{"margin-bottom":"8px"}}," Co-authors can view and edit these settings. They cannot delete the anonymization or manage co-authors. ",-1)),A(n("div",qP,[t[134]||(t[134]=n("label",{class:"paper-field-label",for:"coauthorSearch"},"Add a GitHub user",-1)),n("div",$P,[A(n("input",LP,null,512),[[s,{state:e.viewState,set:a=>{e.coauthorSearch=a},value:e.coauthorSearch,form:"anonymize",options:{debounce:300},change:()=>{e.searchCoauthors()}}]]),A(n("div",UP,[(l(!0),d(B,null,ie(e.coauthorResults,(a,u)=>(l(),d("a",{href:"#",class:"dropdown-item d-flex align-items-center",onClick:ce(p=>e.addCoauthor(a,p),["prevent"])},[n("img",{alt:"",style:{width:"22px",height:"22px","border-radius":"50%","margin-right":"8px"},src:e.safeUrl(a?.photo)},null,8,BP),n("span",{textContent:c(a?.username)},null,8,zP)],8,FP))),256))],512),[[J,e.coauthorResults?.length>0]])]),A(n("small",{class:"form-text text-muted",textContent:c(e.coauthorError)},null,8,HP),[[J,e.coauthorError]])],512),[[J,e.role==="owner"||e.role==="admin"]]),n("div",jP,[(l(!0),d(B,null,ie(e.coauthors,(a,u)=>(l(),d("div",GP,[a?.photo?(l(),d("img",{key:0,alt:"",style:{width:"24px",height:"24px","border-radius":"50%"},src:e.safeUrl(a?.photo)},null,8,WP)):f("v-if",!0),n("a",{target:"_blank",textContent:c(a?.username),href:e.safeUrl("https://github.com/"+a?.username)},null,8,KP),t[136]||(t[136]=n("span",{class:"type-badge type-coauthor"},"Co-author",-1)),A(n("button",{type:"button",class:"btn btn-sm btn-icon",style:{"margin-left":"auto"},title:"Remove co-author",onClick:p=>e.removeCoauthor(a),"aria-label":"Remove co-author"},[...t[135]||(t[135]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,YP),[[J,e.role==="owner"||e.role==="admin"]])]))),256)),A(n("div",XP," No co-authors yet. ",512),[[J,!e.coauthors||e.coauthors?.length===0]])])],512),[[J,e.isUpdate&&e.detectedType==="repo"]]),e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:c(e.error)},null,8,JP)):f("v-if",!0)]),n("button",{type:"button",class:"btn btn-outline-ink mobile-preview-jump",onClick:t[30]||(t[30]=a=>e.selectMobilePane("preview"))},[...t[139]||(t[139]=[y("Review preview ",-1),n("span",{"aria-hidden":"true"},"\u2192",-1)])]),A(n("div",QP,[e.detectedType==="repo"?(l(),d(B,{key:0},[e.billingPending?(l(),d("button",{key:0,type:"button",class:"btn btn-ink",onClick:t[31]||(t[31]=a=>e.refreshBilling()),disabled:e.billingBusy},"Check payment status",8,ZP)):(l(),d("button",{key:1,type:"submit",class:"btn btn-ink",disabled:e.sourceLoading||e.billingBusy||e.hostingSaving||e.billingLoading||e.hostingNeedsPayment()&&(!e.authorPlans().length&&!e.hostingOneTime()||e.billing?.checkoutEnabled===!1),onClick:t[32]||(t[32]=ce(a=>e.submitForm(a,()=>{e.submitRepository(a)}),["prevent"]))},c(e.hostingSaving?"Saving draft\u2026":e.hostingNeedsPayment()?"Continue to checkout":e.isUpdate?"Save changes":"Create anonymous link"),9,xP))],64)):f("v-if",!0),e.detectedType==="pr"&&!e.isUpdate?(l(),d("button",{key:1,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[33]||(t[33]=ce(a=>e.submitForm(a,()=>{e.anonymizePullRequest(a)}),["prevent"]))},[...t[140]||(t[140]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),y(" Anonymize Pull Request ",-1)])],8,e_)):f("v-if",!0),e.detectedType==="pr"&&e.isUpdate?(l(),d("button",{key:2,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[34]||(t[34]=ce(a=>e.submitForm(a,()=>{e.anonymizePullRequest(a)}),["prevent"]))},[...t[141]||(t[141]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-save"})],-1),y(" Update Pull Request ",-1)])],8,t_)):f("v-if",!0),e.detectedType==="gist"&&!e.isUpdate?(l(),d("button",{key:3,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[35]||(t[35]=ce(a=>e.submitForm(a,()=>{e.anonymizeGist(a)}),["prevent"]))},[...t[142]||(t[142]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),y(" Anonymize Gist ",-1)])],8,n_)):f("v-if",!0),e.detectedType==="gist"&&e.isUpdate?(l(),d("button",{key:4,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[36]||(t[36]=ce(a=>e.submitForm(a,()=>{e.anonymizeGist(a)}),["prevent"]))},[...t[143]||(t[143]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-save"})],-1),y(" Update Gist ",-1)])],8,o_)):f("v-if",!0),e.hostingNeedsPayment()&&!e.billingPending?(l(),d("p",s_,"You pay in Stripe, then come back here to finish.")):f("v-if",!0),e.draftRestored?(l(),d("div",i_,[t[144]||(t[144]=y("Your unsaved draft was restored. ",-1)),n("button",{type:"button",class:"draft-discard",onClick:t[37]||(t[37]=a=>e.discardDraft())},"Discard draft")])):e.unsavedChanges?(l(),d("div",r_,[y(c(e.draftSaved?"Draft saved \xB7":"Unsaved changes \xB7")+" ",1),n("button",{type:"button",class:"draft-discard",onClick:t[38]||(t[38]=a=>e.discardDraft())},c(e.isUpdate?"Restore saved":"Discard"),1)])):f("v-if",!0)],512),[[J,e.detectedType]])])),[[r,e.viewState]])],8,SD),f(" Preview column (right) "),e.detectedType==="repo"?(l(),d("div",{key:0,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[n("div",l_,[t[145]||(t[145]=n("span",{class:"paper-eyebrow"},"Live preview",-1)),n("span",d_,c(e.previewStatus!=="ready"?"README preview":e.readmePreserved()?"README left unredacted (Unredacted files)":String(e.terms||"").trim()?"README with redactions applied":"No terms yet. Add some to see them redacted here."),1),n("button",{type:"button",class:"task-text-button preview-expand",onClick:t[39]||(t[39]=a=>e.previewExpanded=!e.previewExpanded)},c(e.previewExpanded?"Restore split view":"Expand preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",u_,"Loading source\u2026")):f("v-if",!0),e.previewStatus==="loading"?(l(),d("div",c_,"Updating the anonymized preview\u2026")):f("v-if",!0),e.previewStatus==="error"?(l(),d("div",p_,[t[146]||(t[146]=n("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),n("button",{class:"btn btn-outline-ink",type:"button",onClick:t[40]||(t[40]=a=>e.retryPreview())},"Retry preview")])):f("v-if",!0),!e.sourceLoading&&!e.readme&&e.previewStatus==="idle"?(l(),d("div",f_,"No README is available to preview. Review the published files before sharing.")):f("v-if",!0),e.previewStatus==="ready"?(l(),d("div",{key:4,class:"anonymize-preview-body markdown-body body",innerHTML:e.renderRedacted(e.sanitize(e.html_readme))},null,8,h_)):f("v-if",!0)],8,a_)):f("v-if",!0),e.detectedType==="gist"&&e.details?(l(),d("div",{key:1,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[n("div",g_,[t[147]||(t[147]=n("strong",null,"Gist preview",-1)),n("button",{type:"button",class:"task-text-button preview-expand",onClick:t[41]||(t[41]=a=>e.previewExpanded=!e.previewExpanded)},c(e.previewExpanded?"Restore split view":"Expand preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",v_,"Loading source\u2026")):f("v-if",!0),e.previewStatus==="loading"?(l(),d("div",y_,"Updating the anonymized preview\u2026")):f("v-if",!0),e.previewStatus==="error"?(l(),d("div",b_,[t[148]||(t[148]=n("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),n("button",{class:"btn btn-outline-ink",type:"button",onClick:t[42]||(t[42]=a=>e.retryPreview())},"Retry preview")])):f("v-if",!0),e.previewStatus==="ready"?(l(),d("div",w_,[n("div",k_,[n("h2",C_,[e.options?.title?(l(),d("span",E_,c(e.anonymizeGistContent(e.details?.gist?.description)||"Untitled gist"),1)):f("v-if",!0),n("span",{class:P(["badge",{"badge-success":e.details?.gist?.isPublic,"badge-secondary":!e.details?.gist?.isPublic}])},c(e.details?.gist?.isPublic?"public":"secret"),3)]),e.options?.date?(l(),d("small",{key:0,textContent:c(e.fmt?.date(e.details?.gist?.updatedDate))},null,8,S_)):f("v-if",!0)]),e.options?.origin?(l(),d("small",N_,"Gist ID: "+c(e.details?.source?.gistId),1)):f("v-if",!0),e.options?.username&&e.details?.gist?.ownerLogin?(l(),d("small",R_,"By @"+c(e.anonymizeGistContent(e.details?.gist?.ownerLogin)),1)):f("v-if",!0),e.options?.content&&e.previewGistFiles?.length?(l(),d("div",D_,[n("ul",A_,[(l(!0),d(B,null,ie(e.previewGistFiles,(a,u)=>(l(),d("li",T_,[n("div",P_,[n("strong",{textContent:c(a?.filename)},null,8,__),a?.language?(l(),d("span",O_,c(a?.language),1)):f("v-if",!0)]),Ue(o,{file:a,terms:e.terms,options:e.options},null,8,["file","terms","options"])]))),256))])])):f("v-if",!0),e.options?.comments&&e.details?.gist?.comments&&e.details?.gist?.comments?.length?(l(),d("div",I_,[t[151]||(t[151]=n("h3",{class:"paper-section-eyebrow mt-3"},"Comments",-1)),n("ul",M_,[(l(!0),d(B,null,ie(e.details?.gist?.comments,(a,u)=>(l(),d("li",V_,[n("div",q_,[e.options?.username?(l(),d("span",$_,[t[149]||(t[149]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[150]||(t[150]=y(" @",-1)),n("span",{textContent:c(e.anonymizeGistContent(a?.author))},null,8,L_)])):f("v-if",!0),e.options?.date?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(a?.updatedDate))},null,8,U_)):f("v-if",!0)]),e.options?.body?(l(),d("div",F_,[Ue(i,{content:e.anonymizeGistContent(a?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):f("v-if",!0)]))),256))])])):f("v-if",!0)])):f("v-if",!0)],8,m_)):f("v-if",!0),e.detectedType==="pr"&&e.details?(l(),d("div",{key:2,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col"},[n("div",z_,[t[152]||(t[152]=n("strong",null,"Pull request preview",-1)),n("button",{type:"button",class:"task-text-button preview-expand",onClick:t[43]||(t[43]=a=>e.previewExpanded=!e.previewExpanded)},c(e.previewExpanded?"Restore split view":"Expand preview"),1)]),e.sourceLoading&&e.previewStatus==="idle"?(l(),d("div",H_,"Loading source\u2026")):f("v-if",!0),e.previewStatus==="loading"?(l(),d("div",j_,"Updating the anonymized preview\u2026")):f("v-if",!0),e.previewStatus==="error"?(l(),d("div",G_,[t[153]||(t[153]=n("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),n("button",{class:"btn btn-outline-ink",type:"button",onClick:t[44]||(t[44]=a=>e.retryPreview())},"Retry preview")])):f("v-if",!0),e.previewStatus==="ready"?(l(),d("div",W_,[n("div",K_,[n("h2",Y_,[e.options?.title?(l(),d("span",X_,c(e.anonymizePrContent(e.details?.pullRequest?.title)),1)):f("v-if",!0),n("span",{class:P(["badge",{"badge-success":e.details?.pullRequest?.merged,"badge-warning":e.details?.pullRequest?.state=="open","badge-danger":e.details?.pullRequest?.state=="closed"&&!e.details?.pullRequest?.merged}])},c(e.fmt?.title(e.details?.pullRequest?.merged?"merged":e.details?.pullRequest?.state)),3)]),e.options?.date?(l(),d("small",{key:0,textContent:c(e.fmt?.date(e.details?.pullRequest?.updatedDate))},null,8,J_)):f("v-if",!0)]),e.options?.origin?(l(),d("small",Q_,"Pull Request on "+c(e.details?.pullRequest?.baseRepositoryFullName),1)):f("v-if",!0),e.options?.body?(l(),d("div",Z_,[Ue(i,{content:e.anonymizePrContent(e.details?.pullRequest?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):f("v-if",!0),e.options?.diff||e.options?.comments?(l(),d("nav",x_,[e.options?.diff?(l(),d("button",{key:0,class:P(["paper-tab",{active:e.prTabState?.active=="diff"}]),type:"button",role:"tab",id:"preview-pr-diff-tab","aria-selected":e.prTabState?.active==="diff","aria-controls":"preview-pr-diff-panel",tabindex:e.prTabState?.active==="diff"?0:-1,onKeydown:t[45]||(t[45]=a=>e.previewTabKeydown(a)),onClick:t[46]||(t[46]=a=>e.prTabState.active="diff")},[...t[154]||(t[154]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),y(" Diff ",-1)])],42,e4)):f("v-if",!0),e.options?.comments?(l(),d("button",{key:1,class:P(["paper-tab",{active:e.prTabState?.active=="comments"}]),type:"button",role:"tab",id:"preview-pr-comments-tab","aria-selected":e.prTabState?.active==="comments","aria-controls":"preview-pr-comments-panel",tabindex:e.prTabState?.active==="comments"?0:-1,onKeydown:t[47]||(t[47]=a=>e.previewTabKeydown(a)),onClick:t[48]||(t[48]=a=>e.prTabState.active="comments")},[t[155]||(t[155]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1)),n("span",{textContent:c(e.fmt.plural(e.details?.pullRequest?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,n4)],42,t4)):f("v-if",!0)])):f("v-if",!0),!e.options?.diff&&!e.options?.comments?(l(),d("div",o4,"Diff and comments are hidden by your display settings.")):f("v-if",!0),n("div",s4,[e.options?.diff&&e.prTabState?.active=="diff"?(l(),d("div",i4,[n("div",{class:"pr-diff",innerHTML:e.sanitize(e.fmt?.diff(e.anonymizePrContent(e.details?.pullRequest?.diff)))},null,8,r4)])):f("v-if",!0),e.options?.comments&&e.prTabState?.active=="comments"?(l(),d("div",a4,[n("ul",l4,[(l(!0),d(B,null,ie(e.details?.pullRequest?.comments,(a,u)=>(l(),d("li",d4,[n("div",u4,[e.options?.username?(l(),d("span",c4,[t[156]||(t[156]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[157]||(t[157]=y(" @",-1)),n("span",{textContent:c(e.anonymizePrContent(a?.author))},null,8,p4)])):f("v-if",!0),e.options?.date?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(a?.updatedDate))},null,8,f4)):f("v-if",!0)]),e.options?.body?(l(),d("div",h4,[Ue(i,{content:e.anonymizePrContent(a?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):f("v-if",!0)]))),256))])])):f("v-if",!0)])])):f("v-if",!0)],8,B_)):f("v-if",!0)])],512),[[J,e.workspaceOpen||e.isUpdate]])],2)}var m4={class:"container-fluid h-100 anonymize-page"},g4={class:"row h-100 flex-column flex-md-row"},v4={class:"col-md sidePanel shadow overflow-auto anonymize-form-col"},y4={class:"form-group"},b4={class:"form-group"},w4={class:"form-check"},k4={class:"form-check-input",type:"checkbox",id:"update",name:"update"},C4={class:"form-group"},E4={class:"form-text text-muted"},S4=["href"],N4={class:"invalid-feedback"},R4={class:"form-text text-muted"},D4={class:"form-group"},A4={id:"idHelp",class:"form-text text-muted"},T4={class:"invalid-feedback"},P4={class:"form-group"},_4={class:"invalid-feedback"},O4={class:"form-group"},I4={class:"form-control",id:"expiration",name:"expiration"},M4={class:"form-group",id:"expiration-date-form"},V4={class:"form-control",type:"date",name:"expirationDate",id:"expirationDate"},q4={class:"accordion mb-3",id:"options"},$4={class:"card"},L4={id:"collapseOne",class:"collapse show","aria-labelledby":"headingOne","data-parent":"#options"},U4={class:"card-body"},F4={class:"form-group mb-0"},B4={class:"form-check"},z4={class:"form-check-input",type:"checkbox",id:"link",name:"link"},H4={class:"form-check"},j4={class:"form-check-input",type:"checkbox",id:"image",name:"image"},G4={class:"form-check"},W4={class:"form-check-input",type:"checkbox",id:"date",name:"date"},K4={class:"form-check"},Y4={class:"form-check-input",type:"checkbox",id:"username",name:"username"},X4={class:"form-check"},J4={class:"form-check-input",type:"checkbox",id:"comments",name:"comments"},Q4={class:"form-check"},Z4={class:"form-check-input",type:"checkbox",id:"diff",name:"diff"},x4={class:"form-check"},eO={class:"form-check-input",type:"checkbox",id:"origin",name:"origin"},tO={class:"form-check"},nO={class:"form-check-input",type:"checkbox",id:"title",name:"title"},oO={class:"form-check"},sO={class:"form-check-input",type:"checkbox",id:"body",name:"body"},iO=["textContent"],rO={class:"anonymize-submit-bar"},aO={key:0,class:"col-md-8 p-2 overflow-auto anonymize-preview-col"},lO={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},dO={class:"pr-title mb-1"},uO={key:0},cO=["textContent"],pO={key:0},fO={key:1,class:"pr-body shadow-sm p-3 mb-4 rounded",style:{background:"var(--sidebar-bg-color)"}},hO={class:"nav nav-tabs",id:"myTab",role:"tablist"},mO={key:0,class:"nav-item",role:"presentation"},gO={key:1,class:"nav-item",role:"presentation"},vO=["textContent"],yO={class:"tab-content",id:"pills-tabContent"},bO={class:"tab-pane show active",id:"pills-diff",role:"tabpanel","aria-labelledby":"pills-diff-tab"},wO={key:0,class:"pr-diff shadow-sm p-3 mb-4 rounded",style:{background:"var(--sidebar-bg-color)"}},kO={style:{"overflow-x":"auto"}},CO=["innerHTML"],EO={key:0,class:"pr-comments list-group"},SO={class:"pr-comment list-group-item"},NO={class:"d-flex w-100 justify-content-between flex-wrap"},RO={key:0,class:"mb-1"},DO=["textContent"],AO={class:"mb-1"};function Cc(e,t){let o=at("markdown"),i=De("field"),s=De("form");return l(),d("div",m4,[n("div",g4,[n("div",v4,[n("div",{class:P(["p-0 py-2 m-auto",{card:!e.pullRequestUrl,container:e.pullRequestUrl}])},[A((l(),d("form",{class:P(["form needs-validation",{"card-body":!e.pullRequestUrl}]),name:"anonymizeForm",novalidate:""},[t[30]||(t[30]=ke('
Anonymize \xA0/\xA0 Pull request

Anonymize a pull request

Fill in the details \u2014 it only takes a minute.

Source
',4)),f(" pullRequestUrl "),n("div",y4,[t[2]||(t[2]=n("label",{for:"pullRequestUrl"},"URL of your pull request",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.pullRequestUrl?.invalid}]),name:"pullRequestUrl",id:"pullRequestUrl",placeholder:"https://github.com/owner/repo/pull/123"},null,2),[[i,{state:e.viewState,set:r=>{e.pullRequestUrl=r},value:e.pullRequestUrl,form:"anonymizeForm",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.pullRequestSelected()}}]]),A(n("div",{class:"invalid-feedback"},c(e.pullRequestUrl)+" is not accessible. Some organizations are restricting the access to the repositories. ",513),[[J,e.anonymize?.pullRequestUrl?.errors?.access]]),A(n("div",{class:"invalid-feedback"},c(e.pullRequestUrl)+" does not exist or is not accessible ",513),[[J,e.anonymize?.pullRequestUrl?.errors?.missing]]),A(n("div",{class:"invalid-feedback"},c(e.pullRequestUrl)+" is already anonymized ",513),[[J,e.anonymize?.pullRequestUrl?.errors?.used]])]),A(n("div",null,[n("div",b4,[n("div",w4,[A(n("input",k4,null,512),[[i,{state:e.viewState,set:r=>{e.options.update=r},value:e.options?.update,form:"anonymizeForm",options:{}}]]),t[3]||(t[3]=n("label",{class:"form-check-label",for:"update"},"Auto update",-1)),t[4]||(t[4]=n("small",{id:"updateHelp",class:"form-text text-muted"},"Automatically update the anonymized pull request with the latest updates. The pull request is updated once per day maximum.",-1))])]),t[26]||(t[26]=n("div",{class:"paper-section-eyebrow anonymize-section-title"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})]),y(" Conference ID ")],-1)),f(" Conference "),n("div",C4,[t[5]||(t[5]=n("label",{for:"conference"},[y("Conference ID "),n("span",{class:"text-muted"},"(Optional)")],-1)),A(n("input",{class:P(["form-control",{"is-invalid":e.anonymize?.conference?.invalid}]),id:"conference",name:"conference"},null,2),[[i,{state:e.viewState,set:r=>{e.conference=r},value:e.conference,form:"anonymizeForm",options:{debounce:{default:800,blur:0},updateOn:"default blur"}}]]),A(n("small",E4,[n("a",{target:"_target",href:e.safeUrl(e.conference_data?.url)},c(e.conference_data?.name),9,S4),y(" will expire on "+c(e.fmt?.date(e.conference_data?.endDate))+".",1)],512),[[J,e.conference_data]]),A(n("div",N4," The conference is not activated. ",512),[[J,e.anonymize?.conference?.errors?.activated]]),A(n("small",R4," Use the Conference ID that your conference provided you. This will update automatically the anonymization options based on the conference preferences. ",512),[[J,!e.conference_data]])]),t[27]||(t[27]=n("div",{class:"paper-section-eyebrow anonymize-section-title"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})]),y(" Anonymization Options ")],-1)),f(" Pull Request ID "),n("div",D4,[t[6]||(t[6]=n("label",{for:"pullRequestId"},"Anonymized pull request id",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.anonymize?.pullRequestId?.invalid}]),name:"pullRequestId",id:"pullRequestId"},null,2),[[i,{state:e.viewState,set:r=>{e.pullRequestId=r},value:e.pullRequestId,form:"anonymizeForm",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",A4,"Id used in the url: https://anonymous.4open.science/r/"+c(e.pullRequestId),1),A(n("div",T4," Repository id can only contain letters and numbers ",512),[[J,e.anonymize?.pullRequestId?.errors?.format]]),A(n("div",{class:"invalid-feedback"},c(e.pullRequestId)+" is already used ",513),[[J,e.anonymize?.pullRequestId?.errors?.used]])]),f(" Terms "),n("div",P4,[t[7]||(t[7]=n("label",{for:"terms"},"Terms to anonymize",-1)),A(n("textarea",{class:P(["form-control",{"is-invalid":e.anonymize?.terms?.invalid}]),id:"terms",name:"terms",rows:"3"},null,2),[[i,{state:e.viewState,set:r=>{e.terms=r},value:e.terms,form:"anonymizeForm",options:{debounce:250}}]]),t[8]||(t[8]=n("small",{id:"termsHelp",class:"form-text text-muted"},"One term per line. Each term will be replaced by XXX.",-1)),A(n("div",_4," Terms are in an invalid format ",512),[[J,e.anonymize?.terms?.errors?.format]])]),n("div",O4,[t[10]||(t[10]=n("label",{for:"expiration"},"Expiration strategy",-1)),A((l(),d("select",I4,[...t[9]||(t[9]=[n("option",{value:"never",selected:""},"Never expire",-1),n("option",{value:"redirect"}," Redirect to GitHub when expired ",-1),n("option",{value:"remove"},"Remove when expired",-1)])])),[[i,{state:e.viewState,set:r=>{e.options.expirationMode=r},value:e.options?.expirationMode,form:"anonymizeForm",options:{}}]]),t[11]||(t[11]=n("small",{class:"form-text text-muted"},"Define the expiration strategy for the anonymized repository.",-1))]),A(n("div",M4,[t[12]||(t[12]=n("label",{for:"expirationDate"},"Expiration date of the anonymized repository",-1)),A(n("input",V4,null,512),[[i,{state:e.viewState,set:r=>{e.options.expirationDate=r},value:e.options?.expirationDate,form:"anonymizeForm",options:{}}]]),A(n("small",{class:"form-text text-muted"},"After "+c(e.fmt?.date(e.options?.expirationDate))+", the repository will be removed and the visitor will not be able to see the content of the repository.",513),[[J,e.options?.expirationMode=="remove"]]),A(n("small",{class:"form-text text-muted"},"After "+c(e.fmt?.date(e.options?.expirationDate))+", the visitors of the anonymized repository will be redirected to "+c(e.pullRequestUrl)+".",513),[[J,e.options?.expirationMode=="redirect"]])],512),[[J,e.options?.expirationMode!="never"]]),n("div",q4,[n("div",$4,[t[25]||(t[25]=ke('

',1)),n("div",L4,[n("div",U4,[n("div",F4,[n("div",B4,[A(n("input",z4,null,512),[[i,{state:e.viewState,set:r=>{e.options.link=r},value:e.options?.link,form:"anonymizeForm",options:{}}]]),t[13]||(t[13]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[14]||(t[14]=n("small",{class:"form-text text-muted"},"Keep or remove all the links.",-1))]),n("div",H4,[A(n("input",j4,null,512),[[i,{state:e.viewState,set:r=>{e.options.image=r},value:e.options?.image,form:"anonymizeForm",options:{}}]]),t[15]||(t[15]=n("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[16]||(t[16]=n("small",{class:"form-text text-muted"},"Images are not anonymized",-1))]),n("div",G4,[A(n("input",W4,null,512),[[i,{state:e.viewState,set:r=>{e.options.date=r},value:e.options?.date,form:"anonymizeForm",options:{}}]]),t[17]||(t[17]=n("label",{class:"form-check-label",for:"date"},"Display dates",-1)),t[18]||(t[18]=n("small",{class:"form-text text-muted"},"Display the date of the Pull Request and the date of the comments.",-1))]),n("div",K4,[A(n("input",Y4,null,512),[[i,{state:e.viewState,set:r=>{e.options.username=r},value:e.options?.username,form:"anonymizeForm",options:{}}]]),t[19]||(t[19]=n("label",{class:"form-check-label",for:"username"},"Display username",-1))]),n("div",X4,[A(n("input",J4,null,512),[[i,{state:e.viewState,set:r=>{e.options.comments=r},value:e.options?.comments,form:"anonymizeForm",options:{}}]]),t[20]||(t[20]=n("label",{class:"form-check-label",for:"comments"},"Display comments",-1))]),n("div",Q4,[A(n("input",Z4,null,512),[[i,{state:e.viewState,set:r=>{e.options.diff=r},value:e.options?.diff,form:"anonymizeForm",options:{}}]]),t[21]||(t[21]=n("label",{class:"form-check-label",for:"diff"},"Display diff",-1))]),n("div",x4,[A(n("input",eO,null,512),[[i,{state:e.viewState,set:r=>{e.options.origin=r},value:e.options?.origin,form:"anonymizeForm",options:{}}]]),t[22]||(t[22]=n("label",{class:"form-check-label",for:"origin"},"Display the project name",-1))]),n("div",tO,[A(n("input",nO,null,512),[[i,{state:e.viewState,set:r=>{e.options.title=r},value:e.options?.title,form:"anonymizeForm",options:{}}]]),t[23]||(t[23]=n("label",{class:"form-check-label",for:"title"},"Display the PR title",-1))]),n("div",oO,[A(n("input",sO,null,512),[[i,{state:e.viewState,set:r=>{e.options.body=r},value:e.options?.body,form:"anonymizeForm",options:{}}]]),t[24]||(t[24]=n("label",{class:"form-check-label",for:"body"},"Display the PR body and comment bodies",-1))])])])])])])],512),[[J,e.pullRequestUrl]]),e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:c(e.error)},null,8,iO)):f("v-if",!0),A(n("div",rO,[e.isUpdate?f("v-if",!0):(l(),d("button",{key:0,id:"submit",type:"submit",class:"btn btn-ink btn-block",onClick:t[0]||(t[0]=ce(r=>e.submitForm(r,()=>{e.anonymizePullRequest(r)}),["prevent"]))},[...t[28]||(t[28]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),y(" Anonymize ",-1)])])),e.isUpdate?(l(),d("button",{key:1,id:"submit",type:"submit",class:"btn btn-ink btn-block",onClick:t[1]||(t[1]=ce(r=>e.submitForm(r,()=>{e.updatePullRequest(r)}),["prevent"]))},[...t[29]||(t[29]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-save"})],-1),y(" Update ",-1)])])):f("v-if",!0)],512),[[J,e.pullRequestUrl]])],2)),[[s,e.viewState]])],2)]),e.details?(l(),d("div",aO,[n("div",lO,[n("h2",dO,[e.options?.title?(l(),d("span",uO,c(e.anonymize(e.details?.pullRequest?.title)),1)):f("v-if",!0),n("span",{class:P(["badge",{"badge-success":e.details?.pullRequest?.merged,"badge-warning":e.details?.pullRequest?.state=="open","badge-danger":e.details?.pullRequest?.state=="closed"&&!e.details?.pullRequest?.merged}])},c(e.fmt?.title(e.details?.pullRequest?.merged?"merged":e.details?.pullRequest?.state)),3)]),e.options?.date?(l(),d("small",{key:0,textContent:c(e.fmt?.date(e.details?.pullRequest?.updatedDate))},null,8,cO)):f("v-if",!0)]),e.options?.origin?(l(),d("small",pO,"Pull Request on "+c(e.details?.pullRequest?.baseRepositoryFullName),1)):f("v-if",!0),e.options?.body?(l(),d("div",fO,[Ue(o,{content:e.anonymize(e.details?.pullRequest?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):f("v-if",!0),n("ul",hO,[e.options?.diff?(l(),d("li",mO,[...t[31]||(t[31]=[n("button",{class:"nav-link active",id:"pills-diff-tab","data-toggle":"pill","data-target":"#pills-diff",type:"button",role:"tab","aria-controls":"pills-diff","aria-selected":"true"}," Diff ",-1)])])):f("v-if",!0),e.options?.comments?(l(),d("li",gO,[n("button",{class:P(["nav-link",{active:!e.options?.diff}]),id:"pills-comments-tab","data-toggle":"pill","data-target":"#pills-comments",type:"button",role:"tab","aria-controls":"pills-comments","aria-selected":"false"},[n("span",{textContent:c(e.fmt.plural(e.details?.pullRequest?.comments?.length,{0:"No comment",one:"One Comment",other:"{} Comments"}))},null,8,vO)],2)])):f("v-if",!0)]),n("div",yO,[n("div",bO,[e.options?.diff?(l(),d("div",wO,[n("pre",kO,[n("code",{innerHTML:e.sanitize(e.fmt?.diff(e.anonymize(e.details?.pullRequest?.diff)))},null,8,CO)])])):f("v-if",!0)]),n("div",{class:P(["tab-pane",{"show active":!e.options?.diff}]),id:"pills-comments",role:"tabpanel","aria-labelledby":"pills-comments-tab"},[e.options?.comments?(l(),d("ul",EO,[(l(!0),d(B,null,ie(e.details?.pullRequest?.comments,(r,a)=>(l(),d("li",SO,[n("div",NO,[e.options?.username?(l(),d("h5",RO," @"+c(e.anonymize(r?.author)),1)):f("v-if",!0),e.options?.date?(l(),d("small",{key:1,textContent:c(e.fmt?.date(r?.updatedDate))},null,8,DO)):f("v-if",!0)]),n("p",AO,[e.options?.body?(l(),sn(o,{key:0,class:"pr-comment-body",content:e.anonymize(r?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])):f("v-if",!0)])]))),256))])):f("v-if",!0)],2)])])):f("v-if",!0)])])}var TO={class:"container paper-page claim-page"},PO={class:"paper-settings-main claim-form"},_O={class:"form-group"},OO={class:"invalid-feedback"},IO={class:"form-group"};function Ec(e,t){let o=De("field"),i=De("form");return l(),d("div",TO,[t[6]||(t[6]=ke('
My work \xA0/\xA0 Claim

Claim an anonymization

Take ownership of an existing anonymized repository so it appears on your dashboard.

',3)),n("div",PO,[t[5]||(t[5]=n("p",{class:"paper-section-copy"},"Use this when an anonymization was created by a co-author or from another account. You must have access to the GitHub repository it was made from.",-1)),A((l(),d("form",{class:"form needs-validation",name:"claimForm",novalidate:"",onSubmit:t[0]||(t[0]=ce(s=>e.submitForm(s,()=>{e.claim()}),["prevent"]))},[n("div",_O,[t[1]||(t[1]=n("label",{class:"paper-field-label",for:"repoUrl"},"GitHub repository URL",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.claimForm?.repoUrl?.invalid&&(e.claimForm?.repoUrl?.touched||e.claimForm?.submitted)}]),name:"repoUrl",id:"repoUrl",placeholder:"https://github.com/owner/repository",required:""},null,2),[[o,{state:e.viewState,set:s=>{e.repoUrl=s},value:e.repoUrl,form:"claimForm",options:{}}]]),A(n("div",OO," No anonymization matches this repository and ID. Check both values and that you can access the repository on GitHub. ",512),[[J,e.claimForm?.repoUrl?.errors?.not_found]])]),n("div",IO,[t[2]||(t[2]=n("label",{class:"paper-field-label",for:"repoId"},"Anonymized repository ID",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.claimForm?.repoId?.invalid&&(e.claimForm?.repoId?.touched||e.claimForm?.submitted)}]),name:"repoId",id:"repoId",placeholder:"e.g. my-paper-7F2A","aria-describedby":"idHelp",required:""},null,2),[[o,{state:e.viewState,set:s=>{e.repoId=s},value:e.repoId,form:"claimForm",options:{}}]]),t[3]||(t[3]=n("small",{id:"idHelp",class:"form-text text-muted"},[y("The ID is the last part of the anonymized URL: "),n("code",null,"anonymous.4open.science/r/"),y(".")],-1))]),t[4]||(t[4]=n("button",{id:"submit",type:"submit",class:"btn btn-ink"}," Claim anonymization ",-1))],32)),[[i,e.viewState]])])])}var MO={class:"container page paper-page conference-page"},VO={class:"paper-crumbs"},qO={class:"here"},$O={class:"d-flex align-items-end flex-wrap",style:{gap:"12px","justify-content":"space-between"}},LO=["textContent"],UO={key:0,class:"paper-page-lede"},FO=["textContent","href"],BO={class:"d-flex align-items-center flex-wrap",style:{gap:"10px"}},zO=["textContent"],HO=["href"],jO={class:"paper-meta-rule"},GO=["textContent"],WO=["textContent"],KO={key:0},YO={key:0,class:"conference-payment-status",role:"status"},XO=["disabled"],JO={key:1,role:"alert"},QO={key:2,class:"paper-settings-section","aria-labelledby":"conference-payment-heading"},ZO={key:0,role:"status"},xO={key:1,role:"alert"},e3=["onClick","disabled"],t3={class:"search-wrap"},n3={type:"search",id:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search by ID or source repository\u2026",autocomplete:"off"},o3={class:"dashboard-filter-controls"},s3={class:"dropdown"},i3={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},r3={class:"filter-btn-value"},a3={class:"dropdown-menu","aria-labelledby":"dropdownSort"},l3={class:"form-check dropdown-item"},d3={class:"form-check-input",type:"radio",name:"sort",id:"anonymizeDate",value:"-anonymizeDate"},u3={class:"form-check dropdown-item"},c3={class:"form-check-input",type:"radio",name:"sort",id:"sortID",value:"repoId"},p3={class:"form-check dropdown-item"},f3={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},h3={class:"form-check dropdown-item"},m3={class:"form-check-input",type:"radio",name:"sort",id:"sortViews",value:"-pageView"},g3={class:"dropdown"},v3={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},y3={key:0,class:"filter-btn-value"},b3={key:1,class:"filter-btn-value"},w3={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},k3={class:"form-check dropdown-item"},C3=["id"],E3=["for"],S3={class:"dashboard-meta"},N3={class:"dashboard-count"},R3={key:0},D3={key:0},A3={key:1},T3={key:1},P3={key:0,class:"filter-chip"},_3=["onClick","aria-label"],O3={class:"paper-table paper-table-repos w-100",role:"table","aria-label":"Repositories"},I3={class:"cell-anon",role:"cell"},M3={class:"anon-text"},V3=["textContent","href"],q3={class:"anon-sub"},$3={class:"anon-source"},L3=["textContent","href"],U3={key:0},F3=["textContent","href"],B3={key:1},z3=["href"],H3={class:"cell-status",role:"cell"},j3={class:"status-line"},G3=["textContent"],W3={key:0,class:"status-sub"},K3={class:"cell-views num",role:"cell"},Y3=["textContent"],X3={class:"cell-expires",role:"cell"},J3={key:0,class:"expires-never"},Q3=["textContent"],Z3={key:2,class:"expires-past"},x3={key:0},eI={key:3,class:"empty-dash","aria-label":"Not applicable"},tI={class:"cell-actions",role:"cell"},nI={class:"dropdown"},oI=["aria-label"],sI={class:"dropdown-menu dropdown-menu-right"},iI=["href"],rI=["href"],aI={key:0,class:"paper-table-empty"},lI={key:0},dI={key:1},uI={key:2,class:"paper-table-empty-actions"};function Sc(e,t){let o=De("field"),i=De("form");return l(),d("div",MO,[n("div",null,[n("div",VO,[t[3]||(t[3]=n("a",{href:"/dashboard"},"My work",-1)),t[4]||(t[4]=y(" \xA0/\xA0 ",-1)),t[5]||(t[5]=n("a",{href:"/conferences"},"Conferences",-1)),t[6]||(t[6]=y(" \xA0/\xA0 ",-1)),n("span",qO,c(e.conference?.conferenceID),1)]),n("div",$O,[n("div",null,[n("h1",{class:"paper-page-title",textContent:c(e.conference?.name)},null,8,LO),e.conference?.url?(l(),d("p",UO,[n("a",{target:"_blank",rel:"noopener",textContent:c(e.conference?.url),href:e.safeUrl(e.conference?.url)},null,8,FO)])):f("v-if",!0)]),n("div",BO,[n("span",{class:P(["status-pill",{"status-pill-ready":e.conference?.status=="ready","status-pill-removed":e.conference?.status=="removed"||e.conference?.status=="expired"}])},[n("span",{class:P(["status-dot","status-"+e.conference?.status]),"aria-hidden":"true"},null,2),n("span",{textContent:c(e.fmt?.statusLabel(e.conference?.status))},null,8,zO)],2),n("a",{class:"btn btn-outline-ink",href:e.safeUrl("/conference/"+e.conference?.conferenceID+"/edit")},[...t[7]||(t[7]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),y(" Edit conference",-1)])],8,HO)])]),n("div",jO,[n("span",null,[t[8]||(t[8]=y("ID ",-1)),n("b",{class:"commit-hash",textContent:c(e.conference?.conferenceID)},null,8,GO)]),n("span",null,[t[9]||(t[9]=y("Review window ",-1)),n("b",null,c(e.fmt?.date(e.conference?.startDate,"mediumDate"))+" \u2013 "+c(e.fmt?.date(e.conference?.endDate,"mediumDate")),1)]),n("span",null,[t[10]||(t[10]=y("Repositories ",-1)),n("b",null,c(e.fmt?.number(e.conference?.repositories?.length)),1)]),n("span",null,[t[11]||(t[11]=y("Plan ",-1)),n("b",{textContent:c(e.conferencePlanName(e.conference?.plan?.planID))},null,8,WO)]),e.conference?.price?(l(),d("span",KO,[t[12]||(t[12]=y("Cost so far ",-1)),n("b",null,c(e.fmt?.number(e.conference?.price,2))+" \u20AC",1)])):f("v-if",!0)]),e.billingNotice?(l(),d("div",YO,[n("p",null,c(e.billingNotice),1),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[0]||(t[0]=s=>e.refreshBilling()),disabled:e.billingBusy},"Check payment status",8,XO)])):f("v-if",!0),e.billingError&&e.conference?.status!=="pending_payment"?(l(),d("p",JO,c(e.billingError),1)):f("v-if",!0),e.conference?.status==="pending_payment"?(l(),d("section",QO,[t[13]||(t[13]=n("h2",{id:"conference-payment-heading"},"Activate your review package",-1)),t[14]||(t[14]=n("p",null,"This conference is waiting for payment. Authors can join after payment is confirmed. Checkout returns to this conference. Authors within the package do not pay separately.",-1)),e.billingLoading?(l(),d("p",ZO,"Loading payment options\u2026")):f("v-if",!0),e.billingError?(l(),d("p",xO,c(e.billingError),1)):f("v-if",!0),(l(!0),d(B,null,ie((e.billing?.plans||[]).filter(s=>s.id===e.conference?.plan?.planID),s=>(l(),d("div",{key:s.id},[n("p",null,[n("strong",null,c(s.name)+" package",1),y(": "+c(e.billingPrice(s))+" for up to "+c(s.repositories)+" repositories and "+c(e.billingBytes(s.storage))+" of source files during the review window. Taxes, if applicable, appear at checkout.",1)]),n("button",{type:"button",class:"btn btn-primary",onClick:r=>e.checkout(s.id,e.conference.conferenceID),disabled:e.billingBusy||e.billingPending||e.billing?.checkoutEnabled===!1},c(e.billingBusy?"Please wait\u2026":"Pay for review package"),9,e3)]))),128)),t[15]||(t[15]=n("p",null,[n("a",{href:"/profile#settings-billing"},"Manage invoices")],-1))])):f("v-if",!0),t[36]||(t[36]=n("div",{class:"paper-section-eyebrow"},"Repositories",-1)),A((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter repositories","accept-charset":"UTF-8",onSubmit:t[1]||(t[1]=ce(s=>e.submitForm(s,()=>{s.preventDefault()}),["prevent"]))},[n("div",t3,[A(n("input",n3,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),n("div",o3,[n("div",s3,[n("button",i3,[t[16]||(t[16]=n("span",{class:"filter-btn-label"},"Sort",-1)),n("span",r3,c({"-anonymizeDate":"Anonymize date",repoId:"ID","-status":"Status","-pageView":"Views"}[e.orderBy]||"Custom"),1)]),n("div",a3,[t[21]||(t[21]=n("h6",{class:"dropdown-header"},"Order by",-1)),n("div",l3,[A(n("input",d3,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[17]||(t[17]=n("label",{class:"form-check-label",for:"anonymizeDate"},"Anonymize date",-1))]),n("div",u3,[A(n("input",c3,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[18]||(t[18]=n("label",{class:"form-check-label",for:"sortID"},"ID",-1))]),n("div",p3,[A(n("input",f3,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[19]||(t[19]=n("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))]),n("div",h3,[A(n("input",m3,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[20]||(t[20]=n("label",{class:"form-check-label",for:"sortViews"},"Views",-1))])])]),n("div",g3,[n("button",v3,[t[22]||(t[22]=n("span",{class:"filter-btn-label"},"Status",-1)),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?(l(),d("span",y3,"All")):f("v-if",!0),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?f("v-if",!0):(l(),d("span",b3,c((e.filters?.status?.ready?0:1)+(e.filters?.status?.expired?0:1)+(e.filters?.status?.removed?0:1))+" hidden ",1))]),n("div",w3,[t[23]||(t[23]=n("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(B,null,ie(e.statusLabels,(s,r,a)=>(l(),d("div",k3,[A(n("input",{class:"form-check-input",type:"checkbox",id:"status-"+r},null,8,C3),[[o,{state:e.viewState,set:u=>{e.filters.status[r]=u},value:e.filters?.status[r],form:null,options:{}}]]),n("label",{class:"form-check-label",for:"status-"+r},c(s),9,E3)]))),256))])])])],32)),[[i,e.viewState]]),n("div",S3,[n("span",N3,[e.filteredRepositories?.length===e.conference?.repositories?.length?(l(),d("span",R3,[y(c(e.fmt?.number(e.conference?.repositories?.length))+" repositor",1),e.conference?.repositories?.length===1?(l(),d("span",D3,"y")):f("v-if",!0),e.conference?.repositories?.length!==1?(l(),d("span",A3,"ies")):f("v-if",!0)])):f("v-if",!0),e.filteredRepositories?.length!==e.conference?.repositories?.length?(l(),d("span",T3,c(e.fmt?.number(e.filteredRepositories?.length))+" of "+c(e.fmt?.number(e.conference?.repositories?.length))+" shown",1)):f("v-if",!0)]),(l(!0),d(B,null,ie(e.filters?.status,(s,r,a)=>(l(),d(B,null,[s===!1?(l(),d("span",P3,[y(" Hiding "+c(e.statusLabels[r])+" ",1),n("button",{type:"button",class:"filter-chip-close",onClick:u=>{e.filters.status[r]=!0},"aria-label":"Show "+e.statusLabels[r]+" again"},"\xD7",8,_3)])):f("v-if",!0)],64))),256))]),n("div",O3,[t[35]||(t[35]=n("div",{class:"paper-table-head",role:"row"},[n("div",{role:"columnheader"},"Repository"),n("div",{role:"columnheader"},"Status"),n("div",{role:"columnheader",class:"num"},"Views"),n("div",{role:"columnheader"},"Expires"),n("div",{role:"columnheader"},[n("span",{class:"sr-only"},"Actions")])],-1)),(l(!0),d(B,null,ie(e.filteredRepositories,(s,r)=>(l(),d("div",{class:P(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error"}]),role:"row",key:s?.repoId},[n("div",I3,[t[26]||(t[26]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Repository"},[n("use",{href:"#project-type-repo"})],-1)),n("div",M3,[n("a",{class:"repo-name",textContent:c(s?.repoId),href:e.safeUrl("/r/"+s?.repoId+"/")},null,8,V3),n("div",q3,[n("span",$3,[n("a",{target:"_blank",rel:"noopener",textContent:c(s?.source?.fullName),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/")},null,8,L3),s?.options?.update&&s?.source?.branch?(l(),d("span",U3,[t[24]||(t[24]=y(" \xB7 ",-1)),n("a",{target:"_blank",rel:"noopener",textContent:c(s?.source?.branch),href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.branch)},null,8,F3)])):f("v-if",!0),s?.source?.commit?(l(),d("span",B3,[t[25]||(t[25]=y(" \xB7 ",-1)),n("a",{class:"commit-hash",target:"_blank",rel:"noopener",href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/tree/"+s?.source?.commit)},"@"+c(s?.source?.commit?.substring(0,8)),9,z3)])):f("v-if",!0)])])])]),n("div",H3,[n("div",j3,[n("span",{class:P(["status-dot","status-"+(s?.status=="error"?"error":s?.status=="ready"?"ready":s?.status=="expired"||s?.status=="removed"?s?.status:"progress")]),"aria-hidden":"true"},null,2),n("span",{class:"status-word",textContent:c(e.fmt?.statusLabel(s?.status))},null,8,G3)]),s?.anonymizeDate?(l(),d("div",W3,"anonymized "+c(e.fmt?.humanTime(s?.anonymizeDate)),1)):f("v-if",!0)]),n("div",K3,[t[27]||(t[27]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),t[28]||(t[28]=y()),n("span",{textContent:c(e.fmt?.number(s?.pageView))},null,8,Y3)]),n("div",X3,[t[30]||(t[30]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),s?.status=="ready"&&(s?.options?.expirationMode==="never"||!s?.options?.expirationDate)?(l(),d("span",J3,"Never")):f("v-if",!0),s?.status=="ready"&&s?.options?.expirationMode!=="never"&&s?.options?.expirationDate?(l(),d("span",{key:1,textContent:c(e.fmt?.humanTime(s?.options?.expirationDate))},null,8,Q3)):f("v-if",!0),s?.status=="expired"?(l(),d("span",Z3,[t[29]||(t[29]=y("Expired",-1)),s?.options?.expirationDate?(l(),d("span",x3,c(e.fmt?.humanTime(s?.options?.expirationDate)),1)):f("v-if",!0)])):f("v-if",!0),s?.status!="ready"&&s?.status!="expired"?(l(),d("span",eI,"\u2014")):f("v-if",!0)]),n("div",tI,[n("div",nI,[n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions for "+s?.repoId},[...t[31]||(t[31]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})],-1)])],8,oI),n("div",sI,[n("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},[...t[32]||(t[32]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),y(" View ",-1)])],8,iI),n("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},[...t[33]||(t[33]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),y(" Edit ",-1)])],8,rI)])])])],2))),128)),e.filteredRepositories?.length==0?(l(),d("div",aI,[t[34]||(t[34]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),e.conference?.repositories?.length?f("v-if",!0):(l(),d("span",lI,"No repository has been submitted to this conference yet.")),e.conference?.repositories?.length?(l(),d("span",dI,"Nothing matches the current filters.")):f("v-if",!0),e.conference?.repositories?.length?(l(),d("div",uI,[n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[2]||(t[2]=s=>{e.search="",e.filters.status.ready=!0,e.filters.status.expired=!0,e.filters.status.removed=!0})},"Clear filters")])):f("v-if",!0)])):f("v-if",!0)])])])}var cI={class:"container page paper-page conferences-page"},pI={class:"row"},fI={class:"w-100"},hI={class:"search-wrap"},mI={type:"search",id:"search",class:"form-control","aria-label":"Search conferences",placeholder:"Search by name or ID\u2026",autocomplete:"off"},gI={class:"dashboard-filter-controls"},vI={class:"dropdown"},yI={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},bI={class:"filter-btn-value"},wI={class:"dropdown-menu","aria-labelledby":"dropdownSort"},kI={class:"form-check dropdown-item"},CI={class:"form-check-input",type:"radio",name:"sort",id:"sortName",value:"name"},EI={class:"form-check dropdown-item"},SI={class:"form-check-input",type:"radio",name:"sort",id:"sortID",value:"conferenceID"},NI={class:"form-check dropdown-item"},RI={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},DI={class:"dropdown"},AI={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},TI={key:0,class:"filter-btn-value"},PI={key:1,class:"filter-btn-value"},_I={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},OI={class:"form-check dropdown-item"},II=["id"],MI=["for"],VI={key:1,class:"dashboard-meta"},qI={class:"dashboard-count"},$I={key:0},LI={key:0},UI={key:1},FI={key:0,class:"filter-chip"},BI=["onClick","aria-label"],zI={key:0,class:"conference-feedback",role:"alert"},HI={key:1,class:"conference-feedback",role:"status"},jI={class:"paper-table paper-table-conferences w-100",role:"table","aria-label":"Conferences"},GI={class:"cell-anon",role:"cell"},WI={class:"anon-text"},KI=["textContent","href"],YI={class:"anon-sub"},XI={class:"anon-source"},JI=["textContent"],QI={key:0},ZI=["textContent","href"],xI={class:"cell-status",role:"cell"},e5={class:"status-line"},t5=["textContent"],n5={class:"cell-views num",role:"cell"},o5=["textContent"],s5={class:"cell-expires",role:"cell"},i5={key:0},r5={key:1,class:"empty-dash","aria-label":"No review window"},a5={class:"cell-actions",role:"cell"},l5={class:"dropdown"},d5=["disabled","aria-label"],u5={class:"dropdown-menu dropdown-menu-right"},c5=["href"],p5=["href"],f5={key:0},h5=["onClick"],m5={key:0,class:"paper-table-empty"},g5={key:1},v5={class:"paper-table-empty-actions"};function Nc(e,t){let o=De("field"),i=De("form");return l(),d("div",cI,[n("div",pI,[n("div",fI,[t[10]||(t[10]=ke('
My work \xA0/\xA0 Conferences

Your conferences

Group anonymizations by venue, give chairs a shared dashboard, and set one expiry for every submission.

New conference
',2)),e.conferences?.length>0?A((l(),d("form",{key:0,class:"w-100 dashboard-filter-row","aria-label":"Filter conferences","accept-charset":"UTF-8",onSubmit:t[0]||(t[0]=ce(s=>e.submitForm(s,()=>{s.preventDefault()}),["prevent"]))},[n("div",hI,[A(n("input",mI,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),n("div",gI,[n("div",vI,[n("button",yI,[t[3]||(t[3]=n("span",{class:"filter-btn-label"},"Sort",-1)),n("span",bI,c({name:"Name",conferenceID:"ID","-status":"Status"}[e.orderBy]||"Custom"),1)]),n("div",wI,[t[7]||(t[7]=n("h6",{class:"dropdown-header"},"Order by",-1)),n("div",kI,[A(n("input",CI,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[4]||(t[4]=n("label",{class:"form-check-label",for:"sortName"},"Name",-1))]),n("div",EI,[A(n("input",SI,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[5]||(t[5]=n("label",{class:"form-check-label",for:"sortID"},"ID",-1))]),n("div",NI,[A(n("input",RI,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[6]||(t[6]=n("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))])])]),n("div",DI,[n("button",AI,[t[8]||(t[8]=n("span",{class:"filter-btn-label"},"Status",-1)),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?(l(),d("span",TI,"All")):f("v-if",!0),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?f("v-if",!0):(l(),d("span",PI,c((e.filters?.status?.ready?0:1)+(e.filters?.status?.expired?0:1)+(e.filters?.status?.removed?0:1))+" hidden ",1))]),n("div",_I,[t[9]||(t[9]=n("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(B,null,ie(e.statusLabels,(s,r,a)=>(l(),d("div",OI,[A(n("input",{class:"form-check-input",type:"checkbox",id:"status-"+r},null,8,II),[[o,{state:e.viewState,set:u=>{e.filters.status[r]=u},value:e.filters?.status[r],form:null,options:{}}]]),n("label",{class:"form-check-label",for:"status-"+r},c(s),9,MI)]))),256))])])])],32)),[[i,e.viewState]]):f("v-if",!0),e.conferences?.length>0?(l(),d("div",VI,[n("span",qI,[e.filteredConferences?.length===e.conferences?.length?(l(),d("span",$I,[y(c(e.fmt?.number(e.conferences?.length))+" conference",1),e.conferences?.length!==1?(l(),d("span",LI,"s")):f("v-if",!0)])):f("v-if",!0),e.filteredConferences?.length!==e.conferences?.length?(l(),d("span",UI,c(e.fmt?.number(e.filteredConferences?.length))+" of "+c(e.fmt?.number(e.conferences?.length))+" shown",1)):f("v-if",!0)]),(l(!0),d(B,null,ie(e.filters?.status,(s,r,a)=>(l(),d(B,null,[s===!1?(l(),d("span",FI,[y(" Hiding "+c(e.statusLabels[r])+" ",1),n("button",{type:"button",class:"filter-chip-close",onClick:u=>{e.filters.status[r]=!0},"aria-label":"Show "+e.statusLabels[r]+" again"},"\xD7",8,BI)])):f("v-if",!0)],64))),256))])):f("v-if",!0)]),e.error?(l(),d("div",zI,[n("span",null,c(e.error),1),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[1]||(t[1]=s=>e.loadConferences())},"Retry")])):f("v-if",!0),e.loading?(l(),d("div",HI,"Loading conferences\u2026")):f("v-if",!0),n("div",jI,[t[25]||(t[25]=n("div",{class:"paper-table-head",role:"row"},[n("div",{role:"columnheader"},"Conference"),n("div",{role:"columnheader"},"Status"),n("div",{role:"columnheader",class:"num"},"Repos"),n("div",{role:"columnheader"},"Review window"),n("div",{role:"columnheader"},[n("span",{class:"sr-only"},"Actions")])],-1)),(l(!0),d(B,null,ie(e.filteredConferences,(s,r)=>(l(),d("div",{class:P(["paper-table-row row-clickable",{"repo-inactive":s?.status=="expired"||s?.status=="removed"}]),role:"row",key:s?.conferenceID},[n("div",GI,[t[13]||(t[13]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Conference"},[n("use",{href:"#project-icon-conference"})],-1)),n("div",WI,[n("a",{class:"repo-name",textContent:c(s?.name),href:e.safeUrl("/conference/"+s?.conferenceID)},null,8,KI),n("div",YI,[n("span",XI,[t[12]||(t[12]=y("ID ",-1)),n("span",{class:"commit-hash",textContent:c(s?.conferenceID)},null,8,JI),s?.url?(l(),d("span",QI,[t[11]||(t[11]=y(" \xB7 ",-1)),n("a",{target:"_blank",rel:"noopener",textContent:c(e.fmt?.limitTo(s?.url,60)),href:e.safeUrl(s?.url)},null,8,ZI)])):f("v-if",!0)])])])]),n("div",xI,[n("div",e5,[n("span",{class:P(["status-dot","status-"+s?.status]),"aria-hidden":"true"},null,2),n("span",{class:"status-word",textContent:c(e.fmt?.statusLabel(s?.status))},null,8,t5)])]),n("div",n5,[t[14]||(t[14]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1)),t[15]||(t[15]=y()),n("span",{textContent:c(e.fmt?.number(s?.nbRepositories||0))},null,8,o5)]),n("div",s5,[t[16]||(t[16]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),s?.startDate?(l(),d("span",i5,c(e.fmt?.date(s?.startDate,"mediumDate"))+" \u2013 "+c(e.fmt?.date(s?.endDate,"mediumDate")),1)):f("v-if",!0),s?.startDate?f("v-if",!0):(l(),d("span",r5,"\u2014"))]),n("div",a5,[n("div",l5,[n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:s?.removing,"aria-label":"Actions for "+s?.name},[...t[17]||(t[17]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})],-1)])],8,d5),n("div",u5,[n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/")},[...t[18]||(t[18]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),y(" View ",-1)])],8,c5),n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/edit")},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),y(" Edit ",-1)])],8,p5),s?.status!="removed"?(l(),d("div",f5,[t[21]||(t[21]=n("div",{class:"dropdown-divider"},null,-1)),n("button",{type:"button",class:"dropdown-item dropdown-item-danger",onClick:a=>e.removeConference(s)},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),y(" Remove ",-1)])],8,h5)])):f("v-if",!0)])])])],2))),128)),!e.loading&&!e.error&&e.filteredConferences?.length==0?(l(),d("div",m5,[t[24]||(t[24]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),e.conferences?.length==0?(l(),d(B,{key:0},[t[22]||(t[22]=n("strong",{class:"empty-title"},"No conferences yet",-1)),t[23]||(t[23]=n("span",null,"Create one to group submissions for a venue, share a dashboard with chairs, and set a single expiry date.",-1))],64)):f("v-if",!0),e.conferences?.length>0?(l(),d("span",g5,"Nothing matches the current filters.")):f("v-if",!0),n("div",v5,[f("v-if",!0),e.conferences?.length>0?(l(),d("button",{key:1,type:"button",class:"btn btn-outline-ink",onClick:t[2]||(t[2]=s=>{e.search="",e.filters.status.ready=!0,e.filters.status.expired=!0,e.filters.status.removed=!0})},"Clear filters")):f("v-if",!0)])])):f("v-if",!0)])])])}var y5={class:"container page dashboard-page paper-page"},b5={class:"row"},w5={class:"w-100"},k5={class:"dashboard-heading"},C5={class:"dashboard-heading-actions"},E5=["open"],S5=["aria-expanded"],N5=["stroke-dasharray"],R5={key:1,d:"M7 12c0-4 4-4 5 0s5 4 5 0-4-4-5 0-5 4-5 0",class:"quota-ring-unlimited"},D5={key:0,class:"quota-summary-value"},A5={key:0},T5={class:"quota-panel",id:"dashboard-usage"},P5={class:"quota-panel-heading"},_5={key:1,class:"quota-loading",role:"status"},O5={class:"search-wrap"},I5={type:"search",id:"search",class:"form-control","aria-label":"Search anonymizations",placeholder:"Search projects\u2026",autocomplete:"off"},M5=["aria-expanded"],V5={class:"btn-group",role:"group","aria-label":"Type"},q5=["aria-pressed"],$5=["aria-pressed"],L5=["aria-pressed"],U5=["aria-pressed"],F5={class:"dropdown"},B5={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},z5={class:"filter-btn-value"},H5={class:"sr-only"},j5={class:"dropdown-menu","aria-labelledby":"dropdownSort"},G5={class:"form-check dropdown-item"},W5=["onClick","checked","id"],K5=["for"],Y5={class:"dropdown"},X5={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},J5={key:0,class:"filter-btn-value"},Q5={key:1,class:"filter-btn-value"},Z5={key:2,class:"filter-btn-value"},x5={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},eM={class:"form-check dropdown-item"},tM=["id"],nM=["for"],oM={key:0,class:"dashboard-meta"},sM={key:0,class:"dashboard-view-tabs",role:"group","aria-label":"Project view"},iM=["aria-pressed"],rM=["aria-pressed","aria-label"],aM={class:"dashboard-count"},lM={key:0},dM={key:0},uM={key:1},cM={class:"dashboard-active-filters"},pM=["onClick","aria-label","title"],fM=["aria-busy"],hM={class:"paper-table-head",role:"row"},mM=["aria-sort"],gM=["aria-sort"],vM=["aria-sort"],yM=["aria-sort"],bM={key:0,class:"paper-table-row paper-table-skeleton",role:"row","aria-hidden":"true"},wM=["onClick"],kM={class:"cell-anon",role:"cell"},CM=["aria-label","title"],EM={class:"project-type-svg","aria-hidden":"true"},SM=["href"],NM={class:"anon-text"},RM={class:"anon-title"},DM=["title","textContent","href"],AM=["textContent"],TM={key:2,class:"type-badge type-coauthor",title:"You are a co-author on this anonymization"},PM={class:"anon-sub"},_M=["title"],OM=["title"],IM=["title"],MM=["textContent"],VM={class:"dashboard-row-meta",role:"presentation"},qM={class:"cell-status",role:"cell"},$M={key:1,class:"ui-icon status-ended-icon","aria-hidden":"true"},LM=["href"],UM=["textContent"],FM=["textContent","title"],BM=["title"],zM=["href"],HM=["onClick"],jM={key:4,class:"status-sub status-sub-date"},GM=["aria-label"],WM={class:"cell-expires",role:"cell"},KM={key:0,class:"expires-never"},YM=["textContent"],XM={key:2,class:"expires-past"},JM={key:3,class:"expires-past"},QM={key:4,class:"empty-dash","aria-label":"Not applicable"},ZM={class:"cell-actions",role:"cell"},xM={key:0,class:"ended-row"},e8=["onClick"],t8=["onClick"],n8=["onClick","disabled","title","aria-label"],o8={class:"sr-only","aria-live":"polite"},s8={class:"project-type-svg","aria-hidden":"true"},i8=["href"],r8=["onClick","data-project-actions","aria-controls","aria-expanded"],a8=["href","aria-label"],l8=["href","title","aria-label"],d8={key:5,class:"dropdown"},u8=["data-project-actions","aria-label"],c8={class:"dropdown-menu dropdown-menu-right"},p8=["onClick","aria-controls","aria-expanded"],f8=["href"],h8=["href"],m8=["onClick","disabled"],g8=["href"],v8=["onClick"],y8=["onClick"],b8=["onClick"],w8={key:5},k8=["onClick"],C8={key:1,class:"project-details-row",role:"row"},E8=["id","onKeydown"],S8={class:"project-details-heading"},N8=["onClick"],R8={class:"project-details-list"},D8={key:0},A8={key:1},T8={key:0},P8={key:2},_8={key:0,class:"project-progress-help"},O8=["href"],I8=["onSubmit"],M8=["for"],V8=["id"],q8={class:"project-name-controls"},$8=["id","aria-describedby","disabled"],L8=["disabled"],U8={key:0,class:"project-name-error",role:"alert"},F8={key:1,role:"status"},B8={key:0,class:"paper-table-empty"},z8={key:0},H8={key:1},j8={class:"paper-table-empty-actions"},G8={key:1,href:"/anonymize",class:"btn btn-ink"},W8={key:0,class:"dashboard-pagination"},K8={key:0,role:"alert"},Y8=["disabled"];function Rc(e,t){let o=at("quota-usage"),i=De("field"),s=De("form");return l(),d("div",y5,[n("div",b5,[n("div",w5,[n("div",k5,[t[29]||(t[29]=n("div",null,[n("h1",{class:"paper-page-title"},"My work"),n("p",{class:"paper-page-lede"},"Manage your anonymous links.")],-1)),n("div",C5,[n("details",{class:"dashboard-quota",open:e.quotaExpanded,onToggle:t[1]||(t[1]=r=>e.quotaExpanded=r.target.open),onKeydown:t[2]||(t[2]=At(ce(r=>e.closeQuota(),["prevent","stop"]),["esc"]))},[n("summary",{"aria-controls":"dashboard-usage","aria-expanded":e.quotaExpanded,style:$e(e.quota&&!e.quota.repository.unlimited?{"--quota-pct":e.quota.repository.percent+"%"}:null)},[(l(),d("svg",{class:P(["quota-summary-ring",e.quota?"quota-"+e.quota.repository.level:""]),viewBox:"0 0 24 24","aria-hidden":"true"},[t[22]||(t[22]=n("circle",{class:"quota-ring-track",cx:"12",cy:"12",r:"9"},null,-1)),e.quota&&!e.quota.repository.unlimited?(l(),d("circle",{key:0,class:"quota-ring-fill",cx:"12",cy:"12",r:"9",pathLength:"100","stroke-dasharray":e.quota.repository.percent+" 100"},null,8,N5)):f("v-if",!0),e.quota?.repository.unlimited?(l(),d("path",R5)):f("v-if",!0)],2)),t[24]||(t[24]=n("span",{class:"quota-summary-label"},"Usage",-1)),e.quota?(l(),d("span",D5,[y(c(e.fmt.number(e.quota.repository.used)),1),e.quota.repository.unlimited?f("v-if",!0):(l(),d("span",A5," / "+c(e.fmt.number(e.quota.repository.total)),1)),t[23]||(t[23]=y(" repos",-1))])):f("v-if",!0),t[25]||(t[25]=n("svg",{class:"project-type-svg quota-summary-chevron","aria-hidden":"true"},[n("use",{href:"#project-icon-chevron"})],-1))],12,S5),n("div",T5,[n("div",P5,[t[27]||(t[27]=n("h2",null,"Account usage",-1)),n("button",{type:"button",class:"project-close","aria-label":"Close usage",onClick:t[0]||(t[0]=r=>e.closeQuota())},[...t[26]||(t[26]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])])]),e.quota?(l(),sn(o,{key:0,quota:e.quota,fmt:e.fmt},null,8,["quota","fmt"])):(l(),d("p",_5,"Loading usage\u2026"))])],40,E5),t[28]||(t[28]=ke('New anonymization',1))])]),f(" Search + filters "),A((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter anonymizations","accept-charset":"UTF-8",onSubmit:t[9]||(t[9]=ce(r=>e.submitForm(r,()=>{r.preventDefault()}),["prevent"]))},[n("div",O5,[A(n("input",I5,null,512),[[i,{state:e.viewState,set:r=>{e.search=r},value:e.search,form:null,options:{}}]])]),n("button",{class:"btn dashboard-filters-toggle",type:"button","aria-expanded":e.filtersExpanded,"aria-controls":"dashboard-filter-controls",onClick:t[3]||(t[3]=r=>e.filtersExpanded=!e.filtersExpanded)},[...t[30]||(t[30]=[y("Filters",-1),n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-filter"})],-1)])],8,M5),n("div",{id:"dashboard-filter-controls",class:P(["dashboard-filter-controls",{expanded:e.filtersExpanded}])},[n("div",V5,[n("button",{type:"button",class:P(["btn",{"btn-primary":e.typeFilter==="all"}]),onClick:t[4]||(t[4]=r=>e.typeFilter="all"),"aria-pressed":e.typeFilter==="all"},"All",10,q5),n("button",{type:"button",class:P(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="repo"}]),title:"Repositories",onClick:t[5]||(t[5]=r=>e.typeFilter="repo"),"aria-pressed":e.typeFilter==="repo"},[...t[31]||(t[31]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),n("span",{class:"type-filter-label"},"Repos",-1)])],10,$5),n("button",{type:"button",class:P(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="pr"}]),title:"Pull requests",onClick:t[6]||(t[6]=r=>e.typeFilter="pr"),"aria-pressed":e.typeFilter==="pr"},[...t[32]||(t[32]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-type-pr"})],-1),n("span",{class:"type-filter-label"},"PRs",-1)])],10,L5),n("button",{type:"button",class:P(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="gist"}]),title:"Gists",onClick:t[7]||(t[7]=r=>e.typeFilter="gist"),"aria-pressed":e.typeFilter==="gist"},[...t[33]||(t[33]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-type-gist"})],-1),n("span",{class:"type-filter-label"},"Gists",-1)])],10,U5)]),n("div",{id:"dashboard-extra-filters",class:P(["dashboard-extra-filters",{expanded:e.filtersExpanded}])},[n("div",F5,[n("button",B5,[t[35]||(t[35]=n("span",{class:"filter-btn-label"},"Sort",-1)),n("span",z5,c(e.sortLabel()),1),(l(),d("svg",{class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[34]||(t[34]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)),n("span",H5,c(e.sortDesc()?"descending":"ascending"),1)]),n("div",j5,[t[36]||(t[36]=n("h6",{class:"dropdown-header"},"Order by",-1)),(l(!0),d(B,null,ie(e.sortFields,(r,a,u)=>(l(),d("div",G5,[n("input",{class:"form-check-input",type:"radio",name:"sort",onClick:p=>e.setSort(a,r.defaultDesc),checked:e.isSortedBy(a),id:"sort-"+u},null,8,W5),n("label",{class:"form-check-label",for:"sort-"+u},c(r?.label),9,K5)]))),256)),t[37]||(t[37]=n("div",{class:"dropdown-divider"},null,-1)),n("button",{type:"button",class:"dropdown-item",onClick:t[8]||(t[8]=r=>e.toggleSortDirection())},c(e.sortDesc()?"Switch to ascending":"Switch to descending"),1)])]),n("div",Y5,[n("button",X5,[t[38]||(t[38]=n("span",{class:"filter-btn-label"},"Status",-1)),e.hasHiddenStatus()?f("v-if",!0):(l(),d("span",J5,"All")),e.hiddenStatusCount()===1&&e.filters?.status?.removed===!1?(l(),d("span",Q5,"Active")):f("v-if",!0),e.hasHiddenStatus()&&!(e.hiddenStatusCount()===1&&e.filters?.status?.removed===!1)?(l(),d("span",Z5,c(e.hiddenStatusCount()===1?"Hiding "+(e.statusKeyLabels[Object.keys(e.filters?.status||{}).find(r=>e.filters.status[r]===!1)]||"").toLowerCase():e.hiddenStatusCount()+" hidden"),1)):f("v-if",!0)]),n("div",x5,[t[39]||(t[39]=n("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(B,null,ie(e.statusKeyLabels,(r,a,u)=>(l(),d("div",eM,[A(n("input",{class:"form-check-input",type:"checkbox",id:"status-"+a},null,8,tM),[[i,{state:e.viewState,set:p=>{e.filters.status[a]=p},value:e.filters?.status[a],form:null,options:{}}]]),n("label",{class:"form-check-label",for:"status-"+a},c(r),9,nM)]))),256))])])],2)],2)],32)),[[s,e.viewState]]),f(" Result count + active filter chips "),e.loading?f("v-if",!0):(l(),d("div",oM,[e.attentionCount()>0||e.projectView==="attention"?(l(),d("div",sM,[n("button",{type:"button","aria-pressed":e.projectView==="all",onClick:t[10]||(t[10]=r=>e.setProjectView("all")),"aria-label":"All projects"},[...t[40]||(t[40]=[n("span",{class:"dashboard-view-long"},"All projects",-1),n("span",{class:"dashboard-view-short","aria-hidden":"true"},"All",-1)])],8,iM),e.attentionCount()>0||e.projectView==="attention"?(l(),d("button",{key:0,type:"button","aria-pressed":e.projectView==="attention",onClick:t[11]||(t[11]=r=>e.setProjectView("attention")),"aria-label":"Needs attention "+e.attentionCount()},[t[41]||(t[41]=n("span",{class:"dashboard-attention-prefix"},"Needs ",-1)),t[42]||(t[42]=n("span",null,"attention",-1)),t[43]||(t[43]=y()),n("span",{class:P(["attention-count",{"has-attention":e.attentionCount()>0}])},c(e.attentionCount()),3)],8,rM)):f("v-if",!0)])):f("v-if",!0),n("span",aM,[(e.dashboardTotals?.filtered??e.filteredItems?.length)===(e.dashboardTotals?.total??e.items?.length)?(l(),d("span",lM,[y(c(e.fmt?.number(e.dashboardTotals?.total??e.items?.length))+" project",1),(e.dashboardTotals?.total??e.items?.length)!==1?(l(),d("span",dM,"s")):f("v-if",!0)])):(l(),d("span",uM,[y(c(e.fmt?.number(e.dashboardTotals?.filtered??e.filteredItems?.length))+" shown \xB7 ",1),n("button",{type:"button",class:"btn-link-inline hidden-toggle",onClick:t[12]||(t[12]=r=>e.clearFilters())},"Show "+c(e.fmt?.number((e.dashboardTotals?.total??e.items?.length)-(e.dashboardTotals?.filtered??e.filteredItems?.length)))+" removed",1)]))]),n("div",cM,[(l(!0),d(B,null,ie(e.filters?.status,(r,a,u)=>(l(),d(B,null,[r===!1&&!(a==="removed"&&e.hiddenStatusCount()===1)?(l(),d("button",{key:0,type:"button",class:"filter-chip",onClick:p=>e.filters.status[a]=!0,"aria-label":"Show "+e.statusKeyLabels[a]+" again",title:"Show "+e.statusKeyLabels[a]+" again"},[y("Hiding "+c((e.statusKeyLabels[a]||"").toLowerCase()),1),t[44]||(t[44]=n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1))],8,pM)):f("v-if",!0)],64))),256)),e.typeFilter!=="all"?(l(),d("button",{key:0,type:"button",class:"filter-chip",onClick:t[13]||(t[13]=r=>e.typeFilter="all"),"aria-label":"Show all project types"},[y(c(e.typeFilter==="repo"?"Repositories":e.typeFilter==="pr"?"Pull requests":"Gists"),1),t[45]||(t[45]=n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1))])):f("v-if",!0),e.showClearFilters()?(l(),d("button",{key:1,type:"button",class:"btn-link-inline",onClick:t[14]||(t[14]=r=>e.clearFilters())},"Clear filters")):f("v-if",!0)])]))]),f(" Table "),n("div",{class:"paper-table paper-table-dashboard",role:"table","aria-label":"Anonymizations","aria-busy":e.loading},[n("div",hM,[n("div",{role:"columnheader","aria-sort":e.isSortedBy("_label")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:P(["sortable",{active:e.isSortedBy("_label")}]),onClick:t[15]||(t[15]=r=>e.setSort("_label"))},[t[47]||(t[47]=y(" Project ",-1)),e.isSortedBy("_label")?(l(),d("svg",{key:0,class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[46]||(t[46]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)],8,mM),n("div",{role:"columnheader","aria-sort":e.isSortedBy("status")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:P(["sortable",{active:e.isSortedBy("status")}]),onClick:t[16]||(t[16]=r=>e.setSort("status"))},[t[49]||(t[49]=y(" Status ",-1)),e.isSortedBy("status")?(l(),d("svg",{key:0,class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[48]||(t[48]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)],8,gM),n("div",{role:"columnheader",class:"num","aria-sort":e.isSortedBy("pageView")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:P(["sortable",{active:e.isSortedBy("pageView")}]),onClick:t[17]||(t[17]=r=>e.setSort("pageView"))},[t[51]||(t[51]=y(" Views ",-1)),e.isSortedBy("pageView")?(l(),d("svg",{key:0,class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[50]||(t[50]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)],8,vM),n("div",{role:"columnheader","aria-sort":e.isSortedBy("options.expirationDate")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:P(["sortable",{active:e.isSortedBy("options.expirationDate")}]),onClick:t[18]||(t[18]=r=>e.setSort("options.expirationDate"))},[t[53]||(t[53]=y(" Expires ",-1)),e.isSortedBy("options.expirationDate")?(l(),d("svg",{key:0,class:P(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[52]||(t[52]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)],8,yM),t[54]||(t[54]=n("div",{role:"columnheader",class:"col-link"},[n("span",{class:"sr-only"},"Actions")],-1))]),f(" Loading skeleton: keeps the layout stable while the three lists load "),(l(),d(B,null,ie([1,2,3,4],(r,a)=>(l(),d(B,null,[e.loading?(l(),d("div",bM,[...t[55]||(t[55]=[n("div",{class:"cell-anon",role:"cell"},[n("span",{class:"skeleton skeleton-badge"}),n("div",{class:"anon-text"},[n("span",{class:"skeleton skeleton-line",style:{width:"38%"}}),n("span",{class:"skeleton skeleton-line skeleton-line-sm",style:{width:"56%"}})])],-1),n("div",{class:"cell-status",role:"cell"},[n("span",{class:"skeleton skeleton-line",style:{width:"60%"}})],-1),n("div",{class:"cell-views num",role:"cell"},[n("span",{class:"skeleton skeleton-line",style:{width:"40%"}})],-1),n("div",{class:"cell-expires",role:"cell"},[n("span",{class:"skeleton skeleton-line",style:{width:"55%"}})],-1),n("div",{class:"cell-actions",role:"cell"},null,-1)])])):f("v-if",!0)],64))),64)),(l(!0),d(B,null,ie(e.filteredItems,(r,a)=>(l(),d(B,{key:r?._type+":"+(r?._id||a)},[e.loading?f("v-if",!0):(l(),d("div",{key:0,class:P(["paper-table-row",{"repo-inactive":r?._statusKey=="expired"||r?._statusKey=="removed","repo-error":r?.status=="error","row-clickable":!!r?._viewUrl}]),role:"row",onClick:u=>e.openItem(r,u)},[n("div",kM,[n("span",{class:"project-type-icon",role:"img","aria-label":r?._type==="repo"?"Repository":r?._type==="pr"?"Pull request":"Gist",title:r?._type==="repo"?"Repository":r?._type==="pr"?"Pull request":"Gist"},[(l(),d("svg",EM,[n("use",{href:"#project-type-"+r._type},null,8,SM)]))],8,CM),n("div",NM,[n("div",RM,[r?._viewUrl?(l(),d("a",{key:0,class:"repo-name",title:r._label,textContent:c(r?._label),href:e.safeUrl(r?._viewUrl)},null,8,DM)):f("v-if",!0),r?._viewUrl?f("v-if",!0):(l(),d("span",{key:1,class:"repo-name repo-name-static",textContent:c(r?._label)},null,8,AM)),r?.role==="coauthor"?(l(),d("span",TM,"Co-author")):f("v-if",!0)]),n("div",PM,[r?._id?(l(),d("code",{key:0,class:"anonymous-id",title:r._id},c(r._id),9,_M)):f("v-if",!0),r?._type==="repo"&&r?.source?.commit?(l(),d("span",{key:1,class:"commit-hash",title:r.source.commit},c(r.source.commit.substring(0,8)),9,OM)):f("v-if",!0),r?.conference?(l(),d("span",{key:2,class:"cell-conf conf-tag",title:r?.conference},[t[56]||(t[56]=n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),t[57]||(t[57]=y()),n("span",{textContent:c(r?.conference)},null,8,MM)],8,IM)):f("v-if",!0)])])]),n("div",VM,[n("div",qM,[n("div",{class:P(["status-line",{"status-ended":r?._statusKey=="expired"||r?._statusKey=="removed",["status-ended-"+r?._statusKey]:r?._statusKey=="expired"||r?._statusKey=="removed"}])},[r?._statusKey=="expired"||r?._statusKey=="removed"?f("v-if",!0):(l(),d("span",{key:0,class:P(["status-dot","status-"+r?._statusKey]),"aria-hidden":"true"},null,2)),r?._statusKey=="expired"||r?._statusKey=="removed"?(l(),d("svg",$M,[n("use",{href:r?._statusKey=="removed"?"#ui-icon-trash":"#ui-icon-hourglass"},null,8,LM)])):f("v-if",!0),n("span",{class:"status-word",textContent:c(e.fmt?.statusLabel(r?.status))},null,8,UM)],2),r?.status=="error"&&r?.statusMessage?(l(),d("div",{key:0,class:"status-sub status-sub-error",textContent:c(e.fmt?.statusMsg(r?.statusMessage)),title:r?.statusMessage},null,8,FM)):f("v-if",!0),r?._stale?(l(),d("div",{key:1,class:"status-sub status-sub-warn",title:"Last activity "+e.fmt?.humanTime(r?.anonymizeDate||r?.lastView)}," Last activity "+c(e.fmt?.humanTime(r?.anonymizeDate||r?.lastView))+" \xB7 may be stuck ",9,BM)):f("v-if",!0),r.status==="error"&&r._editUrl?(l(),d("a",{key:2,class:"project-attention-action",href:e.safeUrl(r._editUrl)},"Fix source",8,zM)):f("v-if",!0),r._stale||r._broken?(l(),d("button",{key:3,type:"button",class:"project-attention-action",onClick:ce(u=>e.showProjectDetails(r),["stop"])},c(r._broken?"Review details":"Check progress"),9,HM)):f("v-if",!0),r?.status!="error"&&!r?._stale&&r?.anonymizeDate?(l(),d("div",jM," anonymized "+c(e.fmt?.humanTime(r?.anonymizeDate)),1)):f("v-if",!0)]),n("div",{class:"cell-views num",role:"cell","aria-label":e.fmt.number(r.pageView)+" views"},[t[58]||(t[58]=n("svg",{class:"project-type-svg mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),n("span",null,c(e.fmt.number(r.pageView)),1)],8,GM),n("div",WM,[t[59]||(t[59]=n("svg",{class:"project-type-svg mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),r?._expiry?.kind==="never"?(l(),d("span",KM,"Never")):f("v-if",!0),r?._expiry?.kind==="date"?(l(),d("span",{key:1,textContent:c((e.fmt?.humanTime(r?._expiry?.date)||"").replace(/^on /,""))},null,8,YM)):f("v-if",!0),r?._expiry?.kind==="expired"&&r?._expiry?.date?(l(),d("span",XM,"Expired "+c(e.fmt?.humanTime(r?._expiry?.date)),1)):f("v-if",!0),r?._expiry?.kind==="expired"&&!r?._expiry?.date?(l(),d("span",JM,"Expired")):f("v-if",!0),r?._expiry?.kind==="none"?(l(),d("span",QM,"\u2014")):f("v-if",!0)])]),n("div",ZM,[r?._statusKey=="expired"||r?._statusKey=="removed"?(l(),d("div",xM,[t[60]||(t[60]=n("span",{class:"ended-link",title:"Reviewers can no longer open this link"},"Link offline",-1)),r?.status=="removed"?(l(),d("button",{key:0,type:"button",class:"ended-action",onClick:ce(u=>e.refreshItem(r),["stop"])},"Enable",8,e8)):f("v-if",!0),r?.status=="expired"?(l(),d("button",{key:1,type:"button",class:"ended-action",onClick:ce(u=>e.extendItem(r),["stop"])},"Extend",8,t8)):f("v-if",!0)])):f("v-if",!0),r._viewUrl&&!(r?._statusKey=="expired"||r?._statusKey=="removed")?(l(),d("button",{key:1,type:"button",class:"copy-url",onClick:ce(u=>e.copyLink(r),["stop"]),disabled:!!e.copyingId,title:"Copy link: "+r._viewUrl,"aria-label":"Copy anonymous link for "+r._label},[n("span",o8,c(e.copyingId===r._type+":"+r._id?"Link copied":""),1),(l(),d("svg",s8,[n("use",{href:e.copyingId===r._type+":"+r._id?"#ui-icon-check":"#project-icon-copy"},null,8,i8)]))],8,n8)):f("v-if",!0),r._broken?(l(),d("button",{key:2,type:"button",class:"project-details-button",onClick:ce(u=>e.showProjectDetails(r),["stop"]),"data-project-actions":encodeURIComponent(r._type+":"+r._id),"aria-controls":e.projectDetailsId(r),"aria-expanded":e.selectedProject===r},"Details",8,r8)):f("v-if",!0),r._viewUrl&&!(r?._statusKey=="expired"||r?._statusKey=="removed")?(l(),d("a",{key:3,class:"row-edit row-open",href:e.safeUrl(r._viewUrl),target:"_blank",rel:"noopener",title:"Open what reviewers see","aria-label":"Open anonymous page for "+r._label},[...t[61]||(t[61]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])],8,a8)):f("v-if",!0),r?._editUrl&&!r?._broken?(l(),d("a",{key:4,class:"row-edit",href:e.safeUrl(r._editUrl),title:"Edit "+r._name,"aria-label":"Edit "+r._name},[...t[62]||(t[62]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1)])],8,l8)):f("v-if",!0),r?._broken?f("v-if",!0):(l(),d("div",d8,[n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","data-project-actions":encodeURIComponent(r._type+":"+r._id),"aria-label":"Actions for "+r?._name},[...t[63]||(t[63]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})],-1)])],8,u8),n("div",c8,[n("button",{type:"button",class:"dropdown-item",onClick:u=>e.showProjectDetails(r),"aria-controls":e.projectDetailsId(r),"aria-expanded":e.selectedProject===r},"Project details & name",8,p8),n("a",{class:"dropdown-item",href:e.safeUrl(r?._viewUrl)}," View ",8,f8),r?._type==="repo"&&r?.options?.page&&r?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+r?.repoId+"/")}," View page ",8,h8)):f("v-if",!0),r?._viewUrl?(l(),d("button",{key:1,type:"button",class:"dropdown-item",onClick:u=>e.copyLink(r),disabled:!!e.copyingId}," Copy anonymous link ",8,m8)):f("v-if",!0),n("a",{class:"dropdown-item",href:e.safeUrl(r?._editUrl)}," Edit ",8,g8),r?.status=="ready"||r?.status=="error"?(l(),d("button",{key:2,type:"button",class:"dropdown-item",onClick:u=>e.refreshItem(r)}," Force update ",8,v8)):f("v-if",!0),r?.status=="removed"?(l(),d("button",{key:3,type:"button",class:"dropdown-item",onClick:u=>e.refreshItem(r)}," Enable ",8,y8)):f("v-if",!0),r?.status=="expired"?(l(),d("button",{key:4,type:"button",class:"dropdown-item",onClick:u=>e.extendItem(r)}," Extend 6 months ",8,b8)):f("v-if",!0),(r?.status=="ready"||r?.status=="expired"||r?.status=="error")&&r?.role!=="coauthor"?(l(),d("div",w8,[t[64]||(t[64]=n("div",{class:"dropdown-divider"},null,-1)),n("button",{type:"button",class:"dropdown-item dropdown-item-danger",onClick:u=>e.removeItem(r)}," Remove ",8,k8)])):f("v-if",!0)])]))])],10,wM)),!e.loading&&e.selectedProject===r?(l(),d("div",C8,[n("div",{class:"project-details",role:"cell","aria-colspan":"5",id:e.projectDetailsId(r),tabindex:"-1",onKeydown:At(ce(u=>e.closeProjectDetails(r),["stop"]),["esc"])},[n("div",S8,[t[66]||(t[66]=n("h2",null,"Project details",-1)),n("button",{type:"button",class:"project-close",onClick:u=>e.closeProjectDetails(r),"aria-label":"Close project details"},[...t[65]||(t[65]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,N8)]),n("dl",R8,[n("div",null,[t[67]||(t[67]=n("dt",null,"Source",-1)),n("dd",null,c(r._source||"Not available"),1)]),n("div",null,[t[68]||(t[68]=n("dt",null,"Anonymous ID",-1)),n("dd",null,[n("code",null,c(r._id||"Missing identifier"),1)])]),r.source?.commit?(l(),d("div",D8,[t[69]||(t[69]=n("dt",null,"Commit",-1)),n("dd",null,[n("code",null,c(r.source.commit),1)])])):f("v-if",!0),r.conference?(l(),d("div",A8,[t[70]||(t[70]=n("dt",null,"Conference",-1)),n("dd",null,c(r.conference),1)])):f("v-if",!0),n("div",null,[t[71]||(t[71]=n("dt",null,"Status",-1)),n("dd",null,[y(c(e.fmt.statusLabel(r.status)),1),r.statusMessage?(l(),d("span",T8," \xB7 "+c(e.fmt.statusMsg(r.statusMessage)),1)):f("v-if",!0)])]),r.anonymizeDate?(l(),d("div",P8,[t[72]||(t[72]=n("dt",null,"Last anonymized",-1)),n("dd",null,c(e.fmt.humanTime(r.anonymizeDate)),1)])):f("v-if",!0)]),r._stale?(l(),d("p",_8,"This download has not progressed recently. Check the source access and selected branch before retrying.")):f("v-if",!0),r._editUrl?(l(),d("a",{key:1,class:"project-attention-action",href:e.safeUrl(r._editUrl)},c(e.needsAttention(r)?"Check source settings":"Edit anonymization settings"),9,O8)):f("v-if",!0),r._id?(l(),d("form",{key:2,class:"project-name-form",onSubmit:ce(u=>e.saveProjectName(r),["prevent"])},[n("label",{for:"project-name-"+r._type+"-"+r._id},"Project name",8,M8),n("p",{id:"project-name-help-"+r._type+"-"+r._id},"Only you see this name. Leave it blank to use the default.",8,V8),n("div",q8,[A(n("input",{class:"form-control",type:"text",id:"project-name-"+r._type+"-"+r._id,"aria-describedby":"project-name-help-"+r._type+"-"+r._id,maxlength:"100","onUpdate:modelValue":t[19]||(t[19]=u=>e.projectName=u),disabled:e.nameSaving},null,8,$8),[[ct,e.projectName]]),n("button",{class:"btn btn-ink",type:"submit",disabled:e.nameSaving},c(e.nameSaving?"Saving\u2026":"Save name"),9,L8)]),e.nameError?(l(),d("p",U8,c(e.nameError),1)):f("v-if",!0),e.nameMessage?(l(),d("p",F8,c(e.nameMessage),1)):f("v-if",!0)],40,I8)):f("v-if",!0)],40,E8)])):f("v-if",!0)],64))),128)),!e.loading&&e.filteredItems?.length==0?(l(),d("div",B8,[t[74]||(t[74]=n("svg",{class:"project-type-svg project-empty-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),e.hasProjects()?f("v-if",!0):(l(),d("span",z8,"You have no anonymizations yet.")),e.hasProjects()?(l(),d("span",H8,"Nothing matches the current filters.")):f("v-if",!0),n("div",j8,[e.hasActiveFilters()?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[20]||(t[20]=r=>e.clearFilters())},"Clear filters")):f("v-if",!0),e.hasProjects()?f("v-if",!0):(l(),d("a",G8,[...t[73]||(t[73]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-plus"})],-1),y(" New anonymization",-1)])]))])])):f("v-if",!0)],8,fM)]),e.dashboardCursor||e.dashboardError?(l(),d("div",W8,[e.dashboardError?(l(),d("p",K8,c(e.dashboardError),1)):f("v-if",!0),e.dashboardCursor?(l(),d("button",{key:1,type:"button",class:"btn",onClick:t[21]||(t[21]=r=>e.loadMoreProjects()),disabled:e.loadingMore},c(e.loadingMore?"Loading\u2026":"Load more projects"),9,Y8)):f("v-if",!0)])):f("v-if",!0)])}var X8={class:"viewer-bar"},J8={class:"vb-left"},Q8=["aria-label","title"],Z8={class:"vb-right"},x8=["title"],e6={class:"vb-help"},t6=["aria-expanded"],n6={key:0,class:"acct-menu vb-help-menu",role:"menu"},o6=["aria-label","title"],s6={class:"ui-icon","aria-hidden":"true"},i6=["href"],r6={key:1,class:"acct"},a6=["aria-label","aria-expanded"],l6=["src"],d6={key:1,class:"acct-initial"},u6={key:0,class:"acct-menu",role:"menu"},c6={class:"acct-menu-head"},p6={key:2,class:"vb-signin",href:"/signin",target:"_self"},f6=["aria-label"],h6={class:"ui-icon","aria-hidden":"true"},m6=["href"],g6=["textContent"],v6={class:"leftCol-head"},y6={class:"leftCol-search"},b6={class:"tree-search-box"},w6=["href"],k6={type:"text",class:"tree-search-input",placeholder:"Search files","aria-label":"Search files"},C6=["title","href"],E6={class:"leftCol-body"},S6={key:0,class:"paper-inline-warning",role:"alert"},N6={key:1,class:"paper-inline-warning",role:"alert"},R6={class:"explorer-main"},D6={class:"breadcrumb paths","aria-label":"Path"},A6={class:"breadcrumb-item breadcrumb-root"},T6=["href","title","textContent"],P6=["aria-current","textContent"],_6=["aria-label","title"],O6={class:"ui-icon","aria-hidden":"true"},I6=["href"],M6={class:"status-bar-actions"},V6=["href"],q6={class:"d-none d-md-inline"},$6={class:"ui-icon","aria-hidden":"true"},L6=["href"],U6={class:"d-none d-md-inline"},F6=["href"],B6={class:"explorer-content"};function Dc(e,t){let o=at("tree"),i=at("partial-view"),s=De("field");return l(),d("div",{class:P(["explorer-page",{"files-hidden":e.sidebarHidden}]),style:$e({"--sidebar-w":e.sidebarWidth+"px"})},[n("header",X8,[n("div",J8,[t[14]||(t[14]=n("a",{class:"vb-logo",href:"/"},[y("Anonymous "),n("em",null,"GitHub")],-1)),n("button",{type:"button",class:"vb-icon vb-sidebar","aria-label":e.sidebarHidden?"Show file tree":"Hide file tree",title:e.sidebarHidden?"Show file tree":"Hide file tree",onClick:t[0]||(t[0]=r=>e.sidebarHidden=!e.sidebarHidden)},[...t[13]||(t[13]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-sidebar"})],-1)])],8,Q8)]),n("div",Z8,[e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate?(l(),d("span",{key:0,class:"vb-snapshot",title:(e.options?.expirationDate?"Available until "+e.fmt?.date(e.options.expirationDate)+". ":"")+(e.options?.anonymizedAt&&!e.options?.publishedAt?"Older repositories have no recorded publication date. The source commit date does not establish when files became available here.":(e.options?.sourceCommitDate?"Source commit ":e.options?.anonymizedAt?"Anonymized ":"Updated ")+e.fmt?.date(e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate)+(e.options?.publishedAt?" \xB7 snapshot ready "+e.fmt?.date(e.options.publishedAt):""))},[t[15]||(t[15]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[16]||(t[16]=n("span",null,"Snapshot",-1)),n("span",null,c(e.fmt?.date(e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate)),1)],8,x8)):f("v-if",!0),t[24]||(t[24]=n("a",{class:"vb-support",href:"https://ko-fi.com/tdurieux",target:"_blank",rel:"noopener",title:"Support Anonymous GitHub \u2014 help keep it free for researchers"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-heart"})]),n("span",null,"Support")],-1)),n("div",e6,[n("button",{type:"button",class:"vb-help-btn","aria-haspopup":"true","aria-expanded":e.helpOpen?"true":"false",onClick:t[1]||(t[1]=ce(r=>e.helpOpen=!e.helpOpen,["stop"]))},[...t[17]||(t[17]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-help"})],-1),n("span",null,"Help",-1)])],8,t6),e.helpOpen?(l(),d("div",n6,[...t[18]||(t[18]=[n("a",{role:"menuitem",href:"/faq"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-help"})]),n("span",null,[y("FAQ"),n("small",null,"How anonymization works")])],-1),n("a",{role:"menuitem",href:"https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml",target:"_blank",rel:"noopener"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-bug"})]),n("span",null,[y("Report a bug"),n("small",null,"About this service, not the paper")])],-1)])])):f("v-if",!0)]),n("button",{type:"button",class:"vb-icon","aria-label":e.isDarkMode?"Switch to light mode":"Switch to dark mode",title:e.isDarkMode?"Light mode":"Dark mode",onClick:t[2]||(t[2]=r=>e.darkMode(!e.isDarkMode))},[(l(),d("svg",s6,[n("use",{href:e.isDarkMode?"#ui-icon-sun":"#ui-icon-moon"},null,8,i6)]))],8,o6),e.user?(l(),d("div",r6,[n("button",{type:"button",class:"acct-chip","aria-haspopup":"true","aria-label":"Account: "+e.user?.username,"aria-expanded":e.accountOpen?"true":"false",onClick:t[3]||(t[3]=ce(r=>e.accountOpen=!e.accountOpen,["stop"]))},[e.user?.photo?(l(),d("img",{key:0,src:e.safeUrl(e.user.photo),alt:"",width:"26",height:"26"},null,8,l6)):(l(),d("span",d6,c((e.user?.username||"?").charAt(0).toUpperCase()),1))],8,a6),e.accountOpen?(l(),d("div",u6,[n("div",c6,[t[19]||(t[19]=y("Signed in as ",-1)),n("b",null,"@"+c(e.user?.username),1)]),t[20]||(t[20]=n("a",{role:"menuitem",href:"/dashboard"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-grid"})]),y("My work")],-1)),t[21]||(t[21]=n("a",{role:"menuitem",href:"/profile"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})]),y("Settings")],-1)),t[22]||(t[22]=n("a",{role:"menuitem",href:"/api/user/logout",target:"_self"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-logout"})]),y("Sign out")],-1))])):f("v-if",!0)])):(l(),d("a",p6,[...t[23]||(t[23]=[n("i",{class:"fab fa-github","aria-hidden":"true"},null,-1),y("Sign in",-1)])]))])]),A(n("button",{class:"sidebar-toggle",onClick:t[4]||(t[4]=r=>e.sidebarCollapsed=!e.sidebarCollapsed),"aria-label":e.sidebarCollapsed?"Show files":"Hide files"},[(l(),d("svg",h6,[n("use",{href:e.sidebarCollapsed?"#ui-icon-folder":"#project-icon-close"},null,8,m6)])),n("span",{textContent:c(e.sidebarCollapsed?"Files":"Close")},null,8,g6)],8,f6),[[J,e.files?.length]]),A(n("div",{class:P(["leftCol",{collapsed:e.sidebarCollapsed}])},[n("div",v6,[t[26]||(t[26]=n("span",{class:"leftCol-eyebrow"},"Files",-1)),n("button",{class:"leftCol-close","aria-label":"Close files",onClick:t[5]||(t[5]=r=>e.sidebarCollapsed=!0)},[...t[25]||(t[25]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])])]),n("div",y6,[n("div",b6,[(l(),d("svg",{class:P(["ui-icon tree-search-icon",{"fa-spin":e.fileSearchLoading}]),"aria-hidden":"true"},[n("use",{href:e.fileSearchLoading?"#ui-icon-spinner":"#ui-icon-search"},null,8,w6)],2)),A(n("input",k6,null,512),[[s,{state:e.viewState,set:r=>{e.fileSearchQuery=r},value:e.fileSearchQuery,form:null,options:{debounce:300},change:()=>{e.onFileSearchChange()}}]]),A(n("kbd",{class:"tree-search-kbd"},c(e.isMac?"\u2318":"Ctrl+")+"K",513),[[J,!e.fileSearchQuery]]),A(n("button",{class:"tree-search-clear","aria-label":"Clear search",onClick:t[6]||(t[6]=r=>{e.fileSearchQuery="",e.onFileSearchChange()})},"\xD7",512),[[J,e.fileSearchQuery]])]),e.options?.download?(l(),d("a",{key:0,target:"_self",class:"search-zip","aria-label":"Download repository as ZIP",title:"Download the repository (snapshot "+e.fmt?.date(e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate)+") as ZIP",href:e.safeUrl("/api/repo/"+e.repoId+"/zip")},[...t[27]||(t[27]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1),n("span",{class:"search-zip-label","aria-hidden":"true"},"ZIP",-1)])],8,C6)):f("v-if",!0)]),n("div",E6,[e.options?.truncatedFolders?.length>0?(l(),d("div",S6,[t[28]||(t[28]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),y(" "+c(e.fmt?.translate("WARNINGS.repo_truncated")),1)])):f("v-if",!0),e.options?.hasSubmodules?(l(),d("div",N6,[t[29]||(t[29]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),y(" "+c(e.fmt?.translate("WARNINGS.submodules_not_included")),1)])):f("v-if",!0),Ue(o,{class:"files",file:e.files,"search-query":e.fileSearchQuery,"search-results":e.fileSearchResults,page:e.viewState},null,8,["file","search-query","search-results","page"])])],2),[[J,e.files?.length]]),A(n("div",{class:"leftCol-resizer",role:"separator","aria-orientation":"vertical","aria-label":"Resize file tree",title:"Drag to resize",onPointerdown:t[7]||(t[7]=r=>e.startSidebarResize(r))},null,544),[[J,e.files?.length&&!e.sidebarHidden]]),A(n("div",{class:"leftCol-backdrop",onClick:t[8]||(t[8]=r=>e.sidebarCollapsed=!0)},null,512),[[J,e.files?.length&&!e.sidebarCollapsed]]),n("div",R6,[A(n("div",{class:P(["status-bar",{"is-redundant":["code","text","html"].includes(e.type)&&e.content!=null}])},[A(n("button",{type:"button",class:"btn btn-sm status-files-btn","aria-label":"Show files",title:"Show files",onClick:t[9]||(t[9]=r=>e.sidebarHidden?e.sidebarHidden=!1:e.sidebarCollapsed=!1)},[...t[30]||(t[30]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-folder"})],-1),n("span",null,"Files",-1)])],512),[[J,e.files?.length]]),n("ol",D6,[n("li",A6,[n("a",{href:e.safeUrl("/r/"+e.repoId+"/"),title:e.repoId,textContent:c(/^[0-9a-f]{8}-[0-9a-f]{4}-/i.test(e.repoId||"")?"repository":e.repoId)},null,8,T6)]),(l(!0),d(B,null,ie(e.paths,(r,a)=>(l(),d("li",{class:"breadcrumb-item","aria-current":a===e.paths.length-1?"page":null,textContent:c(r)},null,8,P6))),256))]),A(n("button",{type:"button",class:"btn btn-sm btn-icon-only btn-ghost copy-path-btn","aria-label":e.pathCopied?"Path copied":"Copy path",title:e.pathCopied?"Path copied":"Copy path",onClick:t[10]||(t[10]=r=>e.copyPath())},[(l(),d("svg",O6,[n("use",{href:e.pathCopied?"#ui-icon-check":"#project-icon-copy"},null,8,I6)]))],8,_6),[[J,e.filePath]]),n("div",M6,[e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[31]||(t[31]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),n("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,V6)):f("v-if",!0),e.type=="html-doc"&&!e.showSource?(l(),d("button",{key:1,class:P(["btn btn-sm",{"btn-active":e.allowScripts}]),"aria-label":"Allow this document to run JavaScript",title:"Scripts in this file are blocked by default. Enable them only if you trust the repository \u2014 the document stays isolated from your session either way.",onClick:t[11]||(t[11]=r=>e.toggleAllowScripts())},[t[32]||(t[32]=n("i",{class:"fab fa-js"},null,-1)),n("span",q6,c(e.allowScripts?"JS on":"JS off"),1)],2)):f("v-if",!0),e.type=="html-doc"?(l(),d("button",{key:2,class:"btn btn-sm","aria-label":"Toggle between the rendered document and its source",title:"Toggle between the rendered document and its source",onClick:t[12]||(t[12]=r=>e.toggleSource())},[(l(),d("svg",$6,[n("use",{href:e.showSource?"#project-icon-eye":"#ui-icon-code"},null,8,L6)])),n("span",U6,c(e.showSource?"Rendered":"Source"),1)])):f("v-if",!0),e.options?.hasWebsite?(l(),d("a",{key:3,target:"_self",class:"btn btn-sm","aria-label":"Website",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[33]||(t[33]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),n("span",{class:"d-none d-md-inline"}," Website",-1)])],8,F6)):f("v-if",!0)])],2),[[J,e.type!="error"||e.files?.length]]),n("div",B6,[Ue(i,{name:"partials/pageView.htm",state:e.viewState},null,8,["state"])])])],6)}var z6={class:"paper-faq"},H6={class:"paper-faq-body"},j6={class:"paper-faq-toc"};function Ac(e,t){let o=De("paper-scrollspy");return l(),d("div",z6,[t[3]||(t[3]=n("div",{class:"paper-faq-hero"},[n("div",{class:"paper-faq-eyebrow"},"Help"),n("h1",{class:"paper-faq-title"},[y("Mirrors, redaction, and "),n("em",null,"what reviewers see.")]),n("p",{class:"paper-faq-lede"}," How to set up an anonymous mirror, what it hides, and how long it stays online. ")],-1)),n("div",H6,[A((l(),d("aside",j6,[...t[0]||(t[0]=[ke('
Contents
',2)])])),[[o]]),t[1]||(t[1]=n("section",{class:"faq-section","aria-label":"FAQs"},[n("div",null,[f(" General "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),y("General ")]),n("div",{class:"panel-group",id:"faq-general",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingWhatIs"},[n("h3",{class:"panel-title"},[n("a",{role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#whatIs","aria-expanded":"true","aria-controls":"whatIs"}," What is Anonymous GitHub? ")])]),n("div",{id:"whatIs",class:"panel-collapse collapse show",role:"tabpanel","aria-labelledby":"headingWhatIs"},[n("div",{class:"panel-body p-3"},[n("p",null," Anonymous GitHub is an open-source tool with free hosting and optional paid plans that anonymizes GitHub repositories and pull requests for double-anonymous (double-blind) peer review. It replaces identifying information, such as the repository owner, organization name, and custom terms, so that reviewers cannot determine the identity of the authors through the code repository. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingHowWork"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#howWork","aria-expanded":"false","aria-controls":"howWork"}," How does Anonymous GitHub work? ")])]),n("div",{id:"howWork",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingHowWork"},[n("div",{class:"panel-body p-3"},[n("p",null," Anonymous GitHub either downloads the complete repository and anonymizes the content, or proxies requests to GitHub on the fly. In both cases, the original and anonymized versions of files are cached on the server. The system automatically detects and replaces the repository owner, organization name, and repository name. You can also specify additional custom terms to anonymize using one-per-line regex patterns. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingScope"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#scope","aria-expanded":"false","aria-controls":"scope"}," What is the scope of anonymization? ")])]),n("div",{id:"scope",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingScope"},[n("div",{class:"panel-body p-3"},[n("p",null," In double-anonymous peer review, the boundary of anonymization is the paper plus its online appendix, not the entire internet. Searching for any part of the paper or the online appendix can be considered a deliberate attempt to break anonymity. Anonymous GitHub anonymizes the repository owner, organization, repository name, file and directory names, and file contents across all text-based file types. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCost"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#cost","aria-expanded":"false","aria-controls":"cost"}," How much does it cost? ")])]),n("div",{id:"cost",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCost"},[n("div",{class:"panel-body p-3"},[n("p",null," A free account includes 5 owned repositories and 2 GiB of source files. Optional paid plans offer more capacity, automatic refresh, and, with an author subscription, never-expiring repositories. Reviewers can read shared repositories without an account or payment. "),n("p",null,[y(" See "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),y(" for available plans and current prices. Offers depend on whether payments are enabled on this instance; the checkout shows the amount before you pay. Subscriptions help fund hosting, storage, backups, and continued maintenance. ")]),n("p",null,[y(" You can also support development through "),n("a",{href:"https://github.com/sponsors/tdurieux/",target:"_blank",rel:"noopener"},"GitHub Sponsors"),y(" or "),n("a",{href:"https://ko-fi.com/tdurieux",target:"_blank",rel:"noopener"},"Ko-fi"),y(". Donations are separate from subscriptions and do not automatically unlock paid features. ")])])])])]),f(" Plans and billing "),n("h4",{class:"faq-cat",id:"faq-plans-title"},"Plans and billing"),n("div",{class:"panel-group",id:"faq-plans",role:"tablist","aria-label":"Plans and billing","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingWhyPaid"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#whyPaid","aria-expanded":"false","aria-controls":"whyPaid"},"Why is Anonymous GitHub no longer completely free?")])]),n("div",{id:"whyPaid",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingWhyPaid"},[n("div",{class:"panel-body p-3"},[n("p",null,"Anonymous GitHub started as a small free service and was paid for out of pocket. Three things have changed since then:"),n("ul",null,[n("li",null,[n("strong",null,"Servers cost much more."),y(" Every hosted repository needs storage, bandwidth and backups, and these costs have risen sharply.")]),n("li",null,[n("strong",null,"Many more people use it."),y(" More users means more repositories to store and keep up to date, more support requests and more maintenance.")]),n("li",null,[n("strong",null,"AI has made security work heavier."),y(" AI-driven scrapers and automated abuse send far more traffic than before. Blocking them and keeping hosted content safe takes constant work.")])]),n("p",null,"The core service stays free: anonymizing a repository, sharing the link and reviewer access cost nothing, and reviewers never need an account. Most authors never need to pay. The paid options are small one-time payments for one repository, plus an optional subscription for heavy users. They are priced to cover running costs, not to make a profit."),n("p",null,[y("The source code remains open, so you can still "),n("a",{href:"#faq-hosting"},"host your own instance"),y(" for free.")])])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingFreePlan"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#freePlan","aria-expanded":"false","aria-controls":"freePlan"},"What is included in a free account?")])]),n("div",{id:"freePlan",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingFreePlan"},[n("div",{class:"panel-body p-3"},[n("p",null,"The default free allowance is 5 repositories you own and 2 GiB of source files in total. Core anonymization and reviewer access remain free. You can manually refresh a repository within your allowance and choose a dated expiration up to 5 months ahead, then extend it again before it expires. Repositories submitted to a conference can stay online until the end of its review window."),n("p",null,"Repositories shared with you as a coauthor do not use your own slots. Gists and pull requests are not included in these repository quotas. The usage shown in your account is the allowance available on this instance.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingAuthorPlans"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#authorPlans","aria-expanded":"false","aria-controls":"authorPlans"},"What do monthly and annual author subscriptions include?")])]),n("div",{id:"authorPlans",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingAuthorPlans"},[n("div",{class:"panel-body p-3"},[n("p",null,[y("Both include 20 owned repositories and 10 GiB of source files in total. They also allow automatic refresh when enabled in repository settings and let the owner choose "),n("strong",null,"Never expire"),y(".")]),n("p",null,[y("Monthly and annual plans offer the same features with different billing periods. They renew automatically until you cancel renewal. Current prices are shown in "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),y(".")]),n("p",null,"Paid plans do not change how anonymization works. File-size limits and other service safeguards still apply. Review your anonymized content before sharing it.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingReviewPass"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#reviewPass","aria-expanded":"false","aria-controls":"reviewPass"},"Can I pay for one repository without subscribing?")])]),n("div",{id:"reviewPass",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingReviewPass"},[n("div",{class:"panel-body p-3"},[n("p",null,"Yes. These one-time add-ons apply to a single repository you own. None of them renews automatically:"),n("ul",null,[n("li",null,[n("strong",null,"Paper pack"),y(": an extra repository, automatic updates for 180 days and one more year before it expires, in a single payment. It covers what one paper usually needs during review.")]),n("li",null,[n("strong",null,"Extra repository"),y(": host one more repository once your free repositories are used up. It has its own 2 GiB allowance and does not count toward your free repositories. It lasts as long as the repository exists.")]),n("li",null,[n("strong",null,"Live updates"),y(": automatic refresh for 180 days, with a separate 2 GiB allowance.")]),n("li",null,[n("strong",null,"Extended expiration"),y(": choose an expiration date up to one year after purchase. Buying it again adds another year.")]),n("li",null,[n("strong",null,"Never expire"),y(": the repository has no expiration date. A full refund or a payment dispute ends it after a 90-day grace period.")])]),n("p",null,[y("When your free allowance is full, the Extra repository and Paper pack options are offered as you create the repository. You can also buy an add-on from the repository's edit page, or enter the anonymized ID of an existing repository in "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),y(". Current prices are shown there.")])])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingConferencePlans"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#conferencePlans","aria-expanded":"false","aria-controls":"conferencePlans"},"Can a conference or lab pay for a group?")])]),n("div",{id:"conferencePlans",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingConferencePlans"},[n("div",{class:"panel-body p-3"},[n("p",null,"A conference review package provides a shared allowance for a review window of up to 180 days, with automatic updates for every submission. It comes in three sizes: Workshop (25 repositories, 10 GiB), Conference (100 repositories, 50 GiB) and Large conference (400 repositories, 200 GiB). Choose the size when you create the conference; it cannot change afterwards. The organizer pays once and authors pay nothing (the price is shown when you create the conference); the package does not renew automatically. A lab organizing a review can use this shared package too."),n("p",null,"New conferences no longer have a free plan: every new conference is a review package. Conferences created earlier keep working as before. The conference must be activated by payment before authors can submit under its Conference ID. Eligible repositories use the conference allowance before an author's personal allowance, so authors do not each need a subscription for that capacity."),n("p",null,"The package has a fixed review window. Never expire still requires the repository owner's author subscription or a Never expire add-on for that repository.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPaidCoauthors"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#paidCoauthors","aria-expanded":"false","aria-controls":"paidCoauthors"},"Does every coauthor need to pay?")])]),n("div",{id:"paidCoauthors",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPaidCoauthors"},[n("div",{class:"panel-body p-3"},[n("p",null,"No. Coauthors can collaborate without buying a subscription. A shared repository uses its owner's allowance, unless a repository pass or paid conference covers it. It does not consume each coauthor's personal allowance."),n("p",null,"A coauthor's subscription does not increase the owner's allowance. If the owner's available capacity is exhausted, a coauthor's refresh or edit may also be blocked. Reviewers never need a paid account.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCapacity"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#capacity","aria-expanded":"false","aria-controls":"capacity"},"What counts toward my allowance, and what happens at the limit?")])]),n("div",{id:"capacity",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCapacity"},[n("div",{class:"panel-body p-3"},[n("p",null,"The repository limit counts work you own. Storage counts the source-file sizes reserved for those repositories, not just files a reviewer opens. Archived or failed repositories can still reserve capacity, and a refresh does not automatically reduce a previous storage reservation."),n("p",null,"At the repository limit you cannot add another repository to that allowance. An edit or refresh must also fit the available storage. Remove work you no longer need, add an Extra repository for the new one, choose a subscription, or use an eligible conference allowance."),n("p",null,"Removing a repository releases its reservation when capacity is next checked. Expired repositories may continue to reserve capacity until cleanup. Reaching a limit does not itself delete existing review links.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingNeverExpire"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#neverExpire","aria-expanded":"false","aria-controls":"neverExpire"},"What happens to Never expire repositories if I stop subscribing?")])]),n("div",{id:"neverExpire",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingNeverExpire"},[n("div",{class:"panel-body p-3"},[n("p",null,[y("Never expire is available to monthly and annual author subscribers, or for one repository with the one-time Never expire add-on. If a subscription ends, these repositories remain available for a "),n("strong",null,"90-day grace period"),y(", then expire and their hosted content is removed.")]),n("p",null,"Renewing during the grace period keeps them active. After expiration, you must renew and explicitly reactivate the repository; restoring content also requires access to its GitHub source. A repository does not become public on GitHub when it expires."),n("p",null,"Existing never-expiring repositories created before this billing policy retain their settings. Never expire is not a guarantee of perpetual service availability.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCancelPlan"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#cancelPlan","aria-expanded":"false","aria-controls":"cancelPlan"},"How do I cancel, and what happens after paid access ends?")])]),n("div",{id:"cancelPlan",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCancelPlan"},[n("div",{class:"panel-body p-3"},[n("p",null,[y("Open "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),y(" and choose "),n("strong",null,"Manage billing and invoices"),y(" to manage renewal. Cancelling renewal keeps subscription benefits until the end of the paid period.")]),n("p",null,"After paid access ends, repositories fall back to another eligible allowance or the free allowance. Automatic refresh pauses on the free allowance; manual refresh remains available within its limits. Existing review links keep their configured expiration dates, except paid Never expire repositories, which follow the 90-day grace period described above."),n("p",null,"A repository pass or conference package ends after its paid window without automatic renewal.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingRefunds"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#refunds","aria-expanded":"false","aria-controls":"refunds"},"Can I get a refund?")])]),n("div",{id:"refunds",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingRefunds"},[n("div",{class:"panel-body p-3"},[n("p",null,[y("Refunds are handled case by case. "),n("a",{href:"mailto:tdurieux@anonymous.4open.science"},"Email the maintainer"),y(" with the date of the payment and the repository it was for.")]),n("p",null,"A full refund ends what that payment bought. For a Paper pack, this means all three parts: the extra repository, automatic updates and the extended expiration. A Never expire repository then expires after a 90-day grace period. A partial refund keeps your access."),n("p",null,"To stop a subscription, cancel its renewal instead of asking for a refund. You keep access until the end of the period you paid for.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPaymentHandling"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#paymentHandling","aria-expanded":"false","aria-controls":"paymentHandling"},"How are payments handled?")])]),n("div",{id:"paymentHandling",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPaymentHandling"},[n("div",{class:"panel-body p-3"},[n("p",null,[y("Stripe processes checkout and billing management. Anonymous GitHub does not store your card details. You can access billing management and invoices from "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),y(".")]),n("p",null,[y("Paid access is activated after payment is confirmed. If checkout succeeds but your account has not updated, choose "),n("strong",null,"Refresh payment status"),y(" before trying another purchase. If paid plans are unavailable on this instance, no checkout is offered.")])])])])]),f(" Features "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#project-icon-filter"})]),y("Features ")]),n("div",{class:"panel-group",id:"faq-features",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingFormats"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#formats","aria-expanded":"false","aria-controls":"formats"}," Which file formats are supported? ")])]),n("div",{id:"formats",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingFormats"},[n("div",{class:"panel-body p-3"},[n("p",null," Anonymous GitHub can display and render a wide variety of file types: "),n("ul",null,[n("li",null,[n("strong",null,"Text and source code"),y(": displayed with syntax highlighting")]),n("li",null,[n("strong",null,"Markdown"),y(": rendered as formatted HTML")]),n("li",null,[n("strong",null,"Images"),y(" (PNG, JPG, SVG, etc.): displayed inline")]),n("li",null,[n("strong",null,"PDFs"),y(": rendered directly in the browser")]),n("li",null,[n("strong",null,"Jupyter Notebooks"),y(": rendered with code cells and outputs")])]),n("p",null," Only text-based files are anonymized. Anonymous GitHub analyzes the content of each file to determine whether it is textual or binary. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPR"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#pullRequests","aria-expanded":"false","aria-controls":"pullRequests"}," Can I anonymize pull requests? ")])]),n("div",{id:"pullRequests",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPR"},[n("div",{class:"panel-body p-3"},[n("p",null," Yes. In addition to full repositories, Anonymous GitHub supports anonymizing individual pull requests. Simply paste the URL of a GitHub pull request when creating a new anonymized repository, and the system will automatically detect that it is a pull request and anonymize it accordingly. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingConference"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#conference","aria-expanded":"false","aria-controls":"conference"}," What is the Conference ID feature? ")])]),n("div",{id:"conference",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingConference"},[n("div",{class:"panel-body p-3"},[n("p",null," When creating an anonymized repository, you can associate it with a Conference ID. This allows conferences to define default anonymization settings (such as expiration dates) that are automatically applied to repositories submitted under that conference. If your conference provides a Conference ID, enter it during the anonymization setup. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingExpiration"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#expiration","aria-expanded":"false","aria-controls":"expiration"}," What happens when an anonymized repository expires? ")])]),n("div",{id:"expiration",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingExpiration"},[n("div",{class:"panel-body p-3"},[n("p",null," You can configure one of three expiration strategies when creating your anonymized repository: "),n("ul",null,[n("li",null,[n("strong",null,"Never expire"),y(": with a monthly or annual author subscription, no scheduled expiration while subscribed. A 90-day grace period applies after paid access ends. See "),n("a",{href:"#neverExpire"},"the subscription expiration policy"),y(".")]),n("li",null,[n("strong",null,"Redirect to GitHub"),y(": after expiration, visitors are redirected to the original GitHub repository.")]),n("li",null,[n("strong",null,"Remove content"),y(": after expiration, the anonymized content is deleted from the server.")])])])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingDownload"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#download","aria-expanded":"false","aria-controls":"download"}," Can I download an anonymized repository? ")])]),n("div",{id:"download",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDownload"},[n("div",{class:"panel-body p-3"},[n("p",null," Yes. Anonymized repositories can be downloaded as a ZIP file. This is useful if reviewers want to build or test the code locally. The downloaded archive contains the fully anonymized version of the repository. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingUpdates"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#updates","aria-expanded":"false","aria-controls":"updates"}," Are updates to the original repository reflected in the anonymized version? ")])]),n("div",{id:"updates",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingUpdates"},[n("div",{class:"panel-body p-3"},[n("p",null," You can refresh the anonymized repository from GitHub without creating a new share link. Free accounts can request a manual refresh within their allowance. Automatic refresh requires an eligible paid allowance and must be enabled in repository settings. It pauses when the repository falls back to the free allowance. "),n("p",null," After changing files or contributor names, review your anonymization terms before sharing the updated content. If GitHub access is revoked or the source is deleted, the service cannot fetch updates. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCLI"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#cli","aria-expanded":"false","aria-controls":"cli"}," Is there a command-line tool? ")])]),n("div",{id:"cli",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCLI"},[n("div",{class:"panel-body p-3"},[n("p",null," Yes. Anonymous GitHub provides a CLI tool that lets you anonymize repositories locally, generating an anonymized ZIP file on your machine. Install it via npm: "),n("pre",{style:{"background-color":"var(--hover-bg-color)",padding:"12px","border-radius":"4px","margin-top":"8px",color:"var(--color)"}},[n("code",null,`npm install -g @tdurieux/anonymous_github -anonymous_github`)])])])])]),f(" Limitations "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})]),y("Limitations ")]),n("div",{class:"panel-group",id:"faq-limitations",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingLimitation"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-limitations",href:"#limitation","aria-expanded":"false","aria-controls":"limitation"}," What are the limitations of Anonymous GitHub? ")])]),n("div",{id:"limitation",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingLimitation"},[n("div",{class:"panel-body p-3"},[n("ul",null,[n("li",null," Anonymous GitHub only anonymizes text-based files. Binary files (compiled executables, archives, etc.) are served as-is without anonymization. "),n("li",null," Files larger than 8 MB are not supported. "),n("li",null," Static site generators (such as Jekyll) used with GitHub Pages are not fully supported, although Markdown files are converted to HTML. "),n("li",null," The anonymization of terms within source code may change the behavior of the program (e.g., if a replaced term appears in a string literal or identifier). ")])])])])]),f(" Privacy & Security "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})]),y("Privacy & Security ")]),n("div",{class:"panel-group",id:"faq-privacy",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingData"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#data","aria-expanded":"false","aria-controls":"data"}," How is my data handled? ")])]),n("div",{id:"data",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingData"},[n("div",{class:"panel-body p-3"},[n("p",null," Repository data is used to provide the anonymization service. If you purchase a plan, Stripe processes payment and billing information. When a repository is removed or expires, only its configuration is retained. This makes it easy to restore the repository if needed and ensures that no future repository reuses the same ID. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPermissions"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#permissions","aria-expanded":"false","aria-controls":"permissions"}," Why does GitHub say Anonymous GitHub asks for write access? ")])]),n("div",{id:"permissions",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPermissions"},[n("div",{class:"panel-body p-3"},[n("p",null,[y("The GitHub App has read-only access to the repositories you choose. You can change repository access on your "),n("a",{href:"/connections"},"GitHub connections"),y(" page.")]),n("p",null,"Legacy GitHub OAuth includes write access to private repositories because GitHub's OAuth scopes do not offer a read-only option for them. Existing OAuth anonymizations and gists can still use this connection."),n("p",null,"Anonymous GitHub reads repository content. It never pushes, modifies, or deletes files on GitHub.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingViewer"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#viewer","aria-expanded":"false","aria-controls":"viewer"}," Can repository owners see who viewed their anonymized repository? ")])]),n("div",{id:"viewer",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingViewer"},[n("div",{class:"panel-body p-3"},[n("p",null," No. Only the total number of views is tracked as an incremental counter. It is not possible for the repository owner or for Anonymous GitHub to identify individual viewers. Reviewer anonymity is fully preserved. ")])])])]),f(" Self-Hosting "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#project-icon-storage"})]),y("Self-Hosting ")]),n("div",{class:"panel-group",id:"faq-hosting",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingDeploy"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-hosting",href:"#deploy","aria-expanded":"false","aria-controls":"deploy"}," Can I deploy my own instance? ")])]),n("div",{id:"deploy",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDeploy"},[n("div",{class:"panel-body p-3"},[n("p",null,[y(" Yes. Anonymous GitHub is fully open source (GPL-3.0) and supports Docker-based deployment. Billing is optional and disabled by default for self-hosted instances; paid hosted plans are not required to run your own server. You will need to configure a GitHub OAuth app and provide a GitHub token. Detailed setup instructions are available on the "),n("a",{href:"https://github.com/tdurieux/anonymous_github/",target:"_blank"},"GitHub repository"),y(". ")]),n("p",null," The basic steps are: "),n("ol",null,[n("li",null,"Clone the repository and install dependencies"),n("li",null,[y("Create a "),n("code",null,".env"),y(" file with your GitHub token, OAuth client ID, and client secret")]),n("li",null,[y("Run "),n("code",null,"docker-compose up -d")])])])])])]),n("div",{class:"text-center mt-5 mb-5 p-4",style:{"background-color":"var(--hover-bg-color)","border-radius":"8px"}},[n("p",{class:"mb-2",style:{"font-size":"1.1rem"}}," Still have questions? "),n("p",{class:"text-muted mb-0"},[y(" Open an issue on the "),n("a",{href:"https://github.com/tdurieux/anonymous_github/issues",target:"_blank"},"GitHub repository"),y(" and we'll be happy to help. ")])])])],-1)),t[2]||(t[2]=n("aside",{class:"paper-faq-help","aria-label":"More help"},[n("div",{class:"paper-faq-help-card"},[n("strong",null,"Still stuck?"),n("p",null,"Open an issue on GitHub about the service. For a paper's content, contact the conference instead."),n("a",{class:"btn btn-outline-ink btn-sm",target:"_blank",rel:"noopener",href:"https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml"},"Open an issue")])],-1))])])}var G6={class:"pr-page"},W6={class:"container paper-page pr-page-inner"},K6={class:"pr-header"},Y6={class:"pr-title-row"},X6={class:"paper-page-title pr-title"},J6=["textContent"],Q6={key:1,class:"text-muted"},Z6=["href"],x6={class:"pr-header-meta"},eV={key:0,class:"pr-meta-item"},tV=["textContent"],nV={key:1,class:"pr-meta-item"},oV=["textContent"],sV={key:2,class:"pr-meta-item"},iV=["textContent"],rV={key:0,class:"paper-tabs",role:"tablist"},aV=["aria-selected","tabindex"],lV=["textContent"],dV=["aria-selected","tabindex"],uV=["textContent"],cV={class:"paper-tab-content"},pV={key:0,role:"tabpanel",id:"gist-files-panel","aria-labelledby":"gist-files-tab"},fV={class:"pr-comments"},hV={class:"pr-comment"},mV={class:"pr-comment-head"},gV=["textContent"],vV={key:0,class:"pr-comment-date"},yV={key:0,class:"paper-table-empty"},bV={key:1,role:"tabpanel",id:"gist-comments-panel","aria-labelledby":"gist-comments-tab"},wV={class:"pr-comments"},kV={class:"pr-comment"},CV={class:"pr-comment-head"},EV={key:0,class:"pr-comment-author"},SV=["textContent"],NV=["textContent"],RV={key:0,class:"pr-comment-body"},DV={key:0,class:"paper-table-empty"};function Tc(e,t){let o=at("gist-file"),i=at("markdown");return l(),d("div",G6,[n("div",W6,[t[17]||(t[17]=n("div",{class:"paper-crumbs"},[n("a",{href:"/dashboard"},"Reviewer"),y(" \xA0/\xA0 "),n("span",{class:"here"},"Gist")],-1)),n("header",K6,[n("div",Y6,[n("h1",X6,[e.details?.description?(l(),d("span",{key:0,textContent:c(e.details?.description)},null,8,J6)):f("v-if",!0),e.details?.description?f("v-if",!0):(l(),d("span",Q6,"Untitled gist"))]),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/gist-anonymize/"+e.gistId)},[...t[4]||(t[4]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),n("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,Z6)):f("v-if",!0)]),n("div",x6,[n("span",{class:P(["paper-pill",{good:e.details?.isPublic,warn:!e.details?.isPublic}])},c(e.details?.isPublic?"Public":"Secret"),3),e.details?.ownerLogin?(l(),d("span",eV,[t[5]||(t[5]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[6]||(t[6]=y(" @",-1)),n("span",{textContent:c(e.details?.ownerLogin)},null,8,tV)])):f("v-if",!0),e.details?.updatedDate?(l(),d("span",nV,[t[7]||(t[7]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[8]||(t[8]=y()),n("span",{textContent:c(e.fmt?.date(e.details?.updatedDate))},null,8,oV)])):f("v-if",!0),e.details?.anonymizeDate?(l(),d("span",sV,[t[9]||(t[9]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1)),t[10]||(t[10]=y(" Anonymized ",-1)),n("span",{textContent:c(e.fmt?.date(e.details?.anonymizeDate))},null,8,iV)])):f("v-if",!0)])]),e.details?.files&&e.details?.files?.length||e.details?.comments&&e.details?.comments?.length?(l(),d("nav",rV,[e.details?.files?(l(),d("button",{key:0,class:P(["paper-tab",{active:e.tabState?.active=="files"}]),type:"button",role:"tab",id:"gist-files-tab","aria-selected":e.tabState?.active==="files","aria-controls":"gist-files-panel",tabindex:e.tabState?.active==="files"?0:-1,onKeydown:t[0]||(t[0]=s=>e.previewTabKeydown(s)),onClick:t[1]||(t[1]=s=>e.tabState.active="files")},[t[11]||(t[11]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-gist"})],-1)),n("span",{textContent:c(e.fmt.plural(e.details?.files?.length,{0:"No files",one:"1 file",other:"{} files"}))},null,8,lV)],42,aV)):f("v-if",!0),e.details?.comments?(l(),d("button",{key:1,class:P(["paper-tab",{active:e.tabState?.active=="comments"}]),type:"button",role:"tab",id:"gist-comments-tab","aria-selected":e.tabState?.active==="comments","aria-controls":"gist-comments-panel",tabindex:e.tabState?.active==="comments"?0:-1,onKeydown:t[2]||(t[2]=s=>e.previewTabKeydown(s)),onClick:t[3]||(t[3]=s=>e.tabState.active="comments")},[t[12]||(t[12]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1)),n("span",{textContent:c(e.fmt.plural(e.details?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,uV)],42,dV)):f("v-if",!0)])):f("v-if",!0),n("div",cV,[e.details?.files&&e.tabState?.active=="files"?(l(),d("div",pV,[n("ul",fV,[(l(!0),d(B,null,ie(e.details?.files,(s,r)=>(l(),d("li",hV,[n("div",mV,[n("strong",{textContent:c(s?.filename)},null,8,gV),s?.language?(l(),d("span",vV,c(s?.language),1)):f("v-if",!0)]),Ue(o,{file:s},null,8,["file"])]))),256)),e.details?.files?.length?f("v-if",!0):(l(),d("li",yV,[...t[13]||(t[13]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-file"})],-1),n("span",null,"No files in this gist.",-1)])]))])])):f("v-if",!0),e.details?.comments&&e.tabState?.active=="comments"?(l(),d("div",bV,[n("ul",wV,[(l(!0),d(B,null,ie(e.details?.comments,(s,r)=>(l(),d("li",kV,[n("div",CV,[s?.author?(l(),d("span",EV,[t[14]||(t[14]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[15]||(t[15]=y(" @",-1)),n("span",{textContent:c(s?.author)},null,8,SV)])):f("v-if",!0),s?.updatedDate?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(s?.updatedDate))},null,8,NV)):f("v-if",!0)]),s?.body?(l(),d("div",RV,[Ue(i,{content:s?.body},null,8,["content"])])):f("v-if",!0)]))),256)),e.details?.comments?.length?f("v-if",!0):(l(),d("li",DV,[...t[16]||(t[16]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1),n("span",null,"No comments on this gist.",-1)])]))])])):f("v-if",!0)])])])}var AV={key:0,class:"nav-support",href:"https://ko-fi.com/tdurieux",target:"_blank",rel:"noopener",title:"Donate on Ko-fi to help cover hosting costs","aria-label":"Donate on Ko-fi to help cover hosting costs"},TV={key:1,class:"nav-heart-m",href:"https://ko-fi.com/tdurieux",target:"_blank",rel:"noopener","aria-label":"Support Anonymous GitHub",title:"Support Anonymous GitHub"},PV=["aria-label","title"],_V={class:"ui-icon","aria-hidden":"true"},OV=["href"],IV={key:3,class:"nav-signin-m",href:"/signin",target:"_self","aria-label":"Sign in with GitHub"},MV={class:"collapse navbar-collapse",id:"navbarSupportedContent"},VV={class:"navbar-nav mr-auto smooth-scroll"},qV={key:0,class:"nav-item nav-home-item"},$V={key:1,class:"nav-item"},LV={key:2,class:"nav-item"},UV={key:3,class:"nav-item"},FV={class:"nav-item"},BV={key:4,class:"nav-item"},zV={class:"navbar-nav"},HV={key:0,class:"nav-item d-lg-none"},jV={key:1,class:"nav-item"},GV={key:2,class:"nav-item"},WV={key:3,class:"nav-item nav-signin-item"},KV={key:4,class:"nav-item"},YV={key:5,class:"nav-item dropdown user-chip-wrap"},XV={class:"nav-link user-chip dropdown-toggle",href:"#",id:"navbarDropdownMenuLink",role:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},JV=["src"],QV={class:"user-chip-name"},ZV={class:"dropdown-menu dropdown-menu-right user-menu","aria-labelledby":"navbarDropdownMenuLink"},xV={class:"dropdown-header"},eq={key:0,class:"dropdown-item um-extra",href:"https://ko-fi.com/tdurieux",target:"_blank",rel:"noopener"},tq=["innerHTML"],nq=["disabled"],oq={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},sq={class:"email-prompt-actions"},iq=["disabled"],rq=["disabled"],aq=["disabled"];function Pc(e,t){return l(),d(B,null,[n("nav",{class:P(["navbar navbar-expand-lg",{"navbar-dark":e.isDarkMode}])},[t[27]||(t[27]=n("a",{class:"navbar-brand",href:"/"},[y("Anonymous "),n("em",null,"GitHub")],-1)),e.headerShowSupport?(l(),d("a",AV,[...t[9]||(t[9]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-heart"})],-1),n("span",{class:"nav-support-label"},"Support",-1)])])):f("v-if",!0),/^\/(r|w|pr|gist)\//.test(e.path||"")?f("v-if",!0):(l(),d("a",TV,[...t[10]||(t[10]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-heart"})],-1)])])),/^\/(r|w|pr|gist)\//.test(e.path||"")?f("v-if",!0):(l(),d("button",{key:2,type:"button",class:"nav-theme-m","aria-label":e.isDarkMode?"Switch to light mode":"Switch to dark mode",title:e.isDarkMode?"Switch to light mode":"Switch to dark mode",onClick:t[0]||(t[0]=o=>e.darkMode(!e.isDarkMode))},[(l(),d("svg",_V,[n("use",{href:e.isDarkMode?"#ui-icon-sun":"#ui-icon-moon"},null,8,OV)]))],8,PV)),!e.user&&!/^\/(r|w|pr|gist)\//.test(e.path||"")?(l(),d("a",IV,[...t[11]||(t[11]=[n("i",{class:"fab fa-github","aria-hidden":"true"},null,-1),y("Sign in",-1)])])):f("v-if",!0),t[28]||(t[28]=n("button",{class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#navbarSupportedContent","aria-controls":"navbarSupportedContent","aria-expanded":"false","aria-label":"Toggle navigation"},[n("span",{class:"navbar-toggler-icon"})],-1)),n("div",MV,[n("ul",VV,[e.user?f("v-if",!0):(l(),d("li",qV,[n("a",{class:P(["nav-link",{active:e.path=="/"}]),href:"/"},[...t[12]||(t[12]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-home"})],-1),y(" Home ",-1)])],2)])),e.user?(l(),d("li",$V,[n("a",{class:P(["nav-link",{active:e.path=="/dashboard"}]),href:"/dashboard"},[...t[13]||(t[13]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-grid"})],-1),y(" My work ",-1)])],2)])):f("v-if",!0),e.user?(l(),d("li",LV,[n("a",{class:P(["nav-link",{active:e.path=="/anonymize"||e.path=="/pull-request-anonymize"}]),href:"/anonymize"},[...t[14]||(t[14]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),y(" Anonymize ",-1)])],2)])):f("v-if",!0),e.user?(l(),d("li",UV,[n("a",{class:P(["nav-link",{active:e.path=="/conferences"||e.path?.startsWith("/conference/")}]),href:"/conferences"},[...t[15]||(t[15]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1),y(" Conferences ",-1)])],2)])):f("v-if",!0),n("li",FV,[n("a",{class:P(["nav-link",{active:e.path=="/faq"}]),href:"/faq"},[...t[16]||(t[16]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-help"})],-1),y("FAQ",-1)])],2)]),e.user&&e.user?.isAdmin?(l(),d("li",BV,[n("a",{class:P(["nav-link",{active:e.path?.indexOf("/admin")===0}]),href:"/admin/"},[...t[17]||(t[17]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-user-shield"})],-1),y(" Admin ",-1)])],2)])):f("v-if",!0)]),n("ul",zV,[e.user||!e.isReviewerRoute?(l(),d("li",HV,[...t[18]||(t[18]=[n("a",{class:"nav-link nav-icon",target:"_blank",href:"https://github.com/tdurieux/anonymous_github/",title:"Anonymous GitHub source code","aria-label":"Anonymous GitHub source code on GitHub",rel:"noopener","data-offset":"30"},[n("i",{class:"fab fa-github","aria-hidden":"true"})],-1)])])):f("v-if",!0),f(` "Report a bug" is about this service. Reviewers who land on an +jane.smith@example.org`},null,10,QT),[[s,{state:e.viewState,set:a=>{e.terms=a},value:e.terms,form:"anonymize",options:{debounce:250}}]]),t[115]||(t[115]=n("small",{class:"form-text text-muted"},"One term per line.",-1)),n("details",ZT,[t[110]||(t[110]=n("summary",null,"Regex & replacement syntax",-1)),t[111]||(t[111]=g()),n("small",xT,[t[104]||(t[104]=g("Regex is supported. Replaced by ",-1)),n("code",null,c(e.site_options?.ANONYMIZATION_MASK)+"-[N]",1),t[105]||(t[105]=g(", or use ",-1)),t[106]||(t[106]=n("code",null,"term=>replacement",-1)),t[107]||(t[107]=g(" to pick your own (e.g. ",-1)),t[108]||(t[108]=n("code",null,"Anonymous=>ABC",-1)),t[109]||(t[109]=g(").",-1))])]),(l(!0),d(L,null,ie((e.termHints||[]).slice(0,3),a=>(l(),d("div",{class:"term-hint",key:a.line},[n("span",null,[t[112]||(t[112]=g("In ",-1)),n("code",null,c(a.term),1),t[113]||(t[113]=g(", ",-1)),n("code",null,c(a.symbols.join(" ")),1),g(" "+c(a.symbols.length>1?"are regex symbols":"is a regex symbol")+", so it may not match the text as written.",1)]),n("button",{type:"button",class:"btn btn-outline-ink btn-sm",onClick:u=>e.matchTermAsWritten(a.line)},"Match as written",8,e3)]))),128)),(e.termHints||[]).length>3?(l(),d("div",t3,c(e.termHints.length-3)+" more "+c(e.termHints.length-3===1?"term uses":"terms use")+" regex symbols.",1)):f("v-if",!0),P(n("div",n3,"Terms are in an invalid format.",512),[[ee,e.anonymize?.terms?.errors?.format]])]),P(n("div",o3,[n("div",s3,[t[116]||(t[116]=n("span",{class:"paper-field-label",id:"preserve-files-label"},"Unredacted files",-1)),n("span",i3,c(e.preserveSummary()),1)]),n("button",{type:"button",class:"btn btn-outline-ink btn-sm","aria-describedby":"preserve-files-label",disabled:!e.source?.commit,onClick:t[21]||(t[21]=a=>e.openPreserveFiles())},c((e.options?.preserveFiles||[]).length?"Edit":"Choose files"),9,r3)],512),[[ee,e.detectedType==="repo"]]),e.preserve?.open?(l(),d("dialog",{key:0,id:"preserve-files-dialog",class:"preserve-dialog","aria-labelledby":"preserve-files-title",onCancel:t[26]||(t[26]=ce(a=>e.closePreserveFiles(),["prevent"]))},[n("form",{onSubmit:t[25]||(t[25]=ce(a=>e.savePreserveFiles(),["prevent"]))},[t[120]||(t[120]=n("h2",{id:"preserve-files-title"},"Leave files unredacted",-1)),t[121]||(t[121]=n("p",{class:"preserve-intro"},"Checked files are shown exactly as written, for example a bibliography where redacted self-citations would reveal you. File names are still redacted.",-1)),P(n("input",{type:"search",id:"preserve-files-search",class:"form-control",placeholder:"Search files","aria-label":"Search files",autocomplete:"off","onUpdate:modelValue":t[22]||(t[22]=a=>e.preserve.search=a)},null,512),[[dt,e.preserve.search]]),n("div",a3,[e.preserve.loading?(l(),d("p",l3,"Loading files from GitHub\u2026")):e.preserve.error?(l(),d("p",d3,c(e.preserve.error),1)):(l(),d(L,{key:2},[(l(!0),d(L,null,ie(e.preserveRows(),(a,u)=>(l(),d("div",{class:"preserve-item",key:a.kind+":"+a.path,style:$e({paddingLeft:a.depth*18+6+"px"})},[a.kind==="dir"?(l(),d("button",{key:0,type:"button",class:"preserve-caret","aria-expanded":a.open?"true":"false","aria-label":(a.open?"Collapse ":"Expand ")+a.label,onClick:p=>e.togglePreserveDir(a.path)},c(a.open?"\u25BE":"\u25B8"),9,u3)):(l(),d("span",c3)),n("input",{type:"checkbox",id:"pf-"+u,"aria-label":a.kind==="dir"?"Leave folder "+a.path+" unredacted":null,checked:a.state==="all",".indeterminate":a.state==="some",disabled:a.locked,onChange:p=>a.kind==="dir"?e.togglePreserveFolder(a.path):e.togglePreserveFile(a.path)},null,40,p3),n("label",{for:a.kind==="file"?"pf-"+u:null,class:"preserve-name",onClick:p=>a.kind==="dir"&&e.togglePreserveDir(a.path)},c(a.label),9,f3),a.note?(l(),d("span",h3,c(a.note),1)):f("v-if",!0)],4))),128)),!e.preserve.loading&&!e.preserveRows().length?(l(),d("p",m3,c(e.preserve.search?"No file matches your search.":"No text files in this commit."),1)):f("v-if",!0)],64))]),e.preserve.truncated?(l(),d("p",g3,"This repository has too many files to list them all. Use a pattern for files you cannot find.")):f("v-if",!0),n("details",{class:"preserve-patterns",open:e.preserve.patternsOpen},[t[117]||(t[117]=n("summary",null,"Patterns",-1)),P(n("textarea",{class:"form-control",rows:"3","aria-label":"Patterns",placeholder:`*.bib +paper/appendix/**`,"onUpdate:modelValue":t[23]||(t[23]=a=>e.preserve.patterns=a)},null,512),[[dt,e.preserve.patterns]]),t[118]||(t[118]=n("small",{class:"form-text text-muted"},[g("One per line, as in .gitignore: "),n("code",null,"*.bib"),g(" matches in any folder; "),n("code",null,"/refs.bib"),g(" and "),n("code",null,"paper/refs.bib"),g(" match from the repository root; a folder name such as "),n("code",null,"drafts/"),g(" covers everything inside it; "),n("code",null,"!private.bib"),g(" excludes again.")],-1))],8,v3),n("div",y3,[n("span",b3,c(e.preserve.loading||e.preserve.error?"":e.preserveCount()+(e.preserveCount()===1?" file":" files")+" will be shown as written"),1),n("span",w3,[n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[24]||(t[24]=a=>e.closePreserveFiles())},"Cancel"),t[119]||(t[119]=n("button",{type:"submit",class:"btn btn-ink"},"Save",-1))])])],32)],32)):f("v-if",!0)],512),[[ee,e.detectedType]]),P(n("section",k3,[t[142]||(t[142]=n("h2",{class:"paper-section-eyebrow"},"Display",-1)),P(n("div",null,[n("div",C3,[P(n("input",E3,null,512),[[s,{state:e.viewState,set:a=>{e.options.link=a},value:e.options?.link,form:"anonymize",options:{}}]]),t[123]||(t[123]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1))]),n("div",S3,[P(n("input",N3,null,512),[[s,{state:e.viewState,set:a=>{e.options.image=a},value:e.options?.image,form:"anonymize",options:{}}]]),t[124]||(t[124]=n("label",{class:"form-check-label",for:"image"},"Display images",-1))]),n("div",R3,[P(n("input",D3,null,512),[[s,{state:e.viewState,set:a=>{e.options.pdf=a},value:e.options?.pdf,form:"anonymize",options:{}}]]),t[125]||(t[125]=n("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1))]),n("div",A3,[P(n("input",T3,null,512),[[s,{state:e.viewState,set:a=>{e.options.notebook=a},value:e.options?.notebook,form:"anonymize",options:{}}]]),t[126]||(t[126]=n("label",{class:"form-check-label",for:"notebook"},"Display notebooks",-1))]),n("div",P3,[P(n("input",{class:"form-check-input",type:"checkbox",id:"page",name:"page",disabled:!e.details?.hasPage||e.details?.pageSource&&e.details?.pageSource?.branch!==e.source?.branch},null,8,O3),[[s,{state:e.viewState,set:a=>{e.options.page=a},value:e.options?.page,form:"anonymize",options:{}}]]),t[127]||(t[127]=n("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),e.details?.hasPage?f("v-if",!0):(l(),d("small",I3,c(e.fmt?.translate("WARNINGS.page_not_enabled_on_repo")),1)),e.details?.hasPage&&e.details?.pageSource?.branch&&e.source?.branch&&e.details.pageSource.branch!==e.source.branch?(l(),d("small",_3,c(e.fmt?.translate("WARNINGS.page_branch_mismatch",{pageBranch:e.details?.pageSource?.branch,selectedBranch:e.source?.branch})),1)):f("v-if",!0)])],512),[[ee,e.detectedType==="repo"]]),e.detectedType==="repo"&&(e.options.image||e.options.pdf)?(l(),d("p",M3,[...t[128]||(t[128]=[g("Images and PDFs are served unchanged. Review their contents and metadata before sharing. ",-1),n("a",{href:"/faq#formats"},"Supported formats",-1)])])):f("v-if",!0),P(n("div",null,[n("div",V3,[P(n("input",q3,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[129]||(t[129]=n("label",{class:"form-check-label",for:"title-gist"},"Gist description",-1))]),n("div",$3,[P(n("input",L3,null,512),[[s,{state:e.viewState,set:a=>{e.options.content=a},value:e.options?.content,form:"anonymize",options:{}}]]),t[130]||(t[130]=n("label",{class:"form-check-label",for:"content-gist"},"File contents",-1))]),n("div",U3,[P(n("input",F3,null,512),[[s,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[131]||(t[131]=n("label",{class:"form-check-label",for:"comments-gist"},"Comments",-1))]),n("div",B3,[P(n("input",z3,null,512),[[s,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[132]||(t[132]=n("label",{class:"form-check-label",for:"username-gist"},"Usernames",-1))]),n("div",H3,[P(n("input",j3,null,512),[[s,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[133]||(t[133]=n("label",{class:"form-check-label",for:"date-gist"},"Dates",-1))]),n("div",G3,[P(n("input",W3,null,512),[[s,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[134]||(t[134]=n("label",{class:"form-check-label",for:"origin-gist"},"Source gist ID",-1))])],512),[[ee,e.detectedType==="gist"]]),P(n("div",null,[n("div",K3,[P(n("input",Y3,null,512),[[s,{state:e.viewState,set:a=>{e.options.title=a},value:e.options?.title,form:"anonymize",options:{}}]]),t[135]||(t[135]=n("label",{class:"form-check-label",for:"title"},"PR title",-1))]),n("div",X3,[P(n("input",J3,null,512),[[s,{state:e.viewState,set:a=>{e.options.body=a},value:e.options?.body,form:"anonymize",options:{}}]]),t[136]||(t[136]=n("label",{class:"form-check-label",for:"body"},"PR body",-1))]),n("div",Q3,[P(n("input",Z3,null,512),[[s,{state:e.viewState,set:a=>{e.options.diff=a},value:e.options?.diff,form:"anonymize",options:{}}]]),t[137]||(t[137]=n("label",{class:"form-check-label",for:"diff"},"Diff",-1))]),n("div",x3,[P(n("input",eP,null,512),[[s,{state:e.viewState,set:a=>{e.options.comments=a},value:e.options?.comments,form:"anonymize",options:{}}]]),t[138]||(t[138]=n("label",{class:"form-check-label",for:"comments"},"Comments",-1))]),n("div",tP,[P(n("input",nP,null,512),[[s,{state:e.viewState,set:a=>{e.options.username=a},value:e.options?.username,form:"anonymize",options:{}}]]),t[139]||(t[139]=n("label",{class:"form-check-label",for:"username"},"Usernames",-1))]),n("div",oP,[P(n("input",sP,null,512),[[s,{state:e.viewState,set:a=>{e.options.date=a},value:e.options?.date,form:"anonymize",options:{}}]]),t[140]||(t[140]=n("label",{class:"form-check-label",for:"date"},"Dates",-1))]),n("div",iP,[P(n("input",rP,null,512),[[s,{state:e.viewState,set:a=>{e.options.origin=a},value:e.options?.origin,form:"anonymize",options:{}}]]),t[141]||(t[141]=n("label",{class:"form-check-label",for:"origin"},"Project name",-1))])],512),[[ee,e.detectedType==="pr"]])],512),[[ee,e.detectedType]]),P(n("section",aP,[t[155]||(t[155]=n("h2",{class:"paper-section-eyebrow",id:"hosting-heading"},"Hosting & expiration",-1)),n("div",lP,[t[143]||(t[143]=n("label",{class:"paper-field-label",for:"conference"},[g("Conference code "),n("span",{class:"paper-optional"},"(optional)")],-1)),P(n("input",{class:T(["form-control",{"is-invalid":e.anonymize?.conference?.invalid}]),id:"conference",name:"conference"},null,2),[[s,{state:e.viewState,set:a=>{e.conference=a},value:e.conference,form:"anonymize",options:{debounce:{default:800,blur:0},updateOn:"default blur"}}]]),P(n("p",{class:T(["conference-hosting",{"is-covered":e.conferenceHosting()}]),role:"status"},[n("a",{target:"_blank",href:e.safeUrl(e.conference_data?.url)},c(e.conference_data?.name),9,dP),e.conferenceHosting()?(l(),d(L,{key:0},[g(" hosts this repository until "+c(e.fmt?.date(e.conference_data?.endDate))+", with automatic updates. You don't pay anything.",1)],64)):e.billing?.enabled&&e.detectedType==="repo"?(l(),d(L,{key:1},[g(" runs until "+c(e.fmt?.date(e.conference_data?.endDate))+". It doesn't pay for hosting, so this repository uses your own allowance.",1)],64)):(l(),d(L,{key:2},[g(" runs until "+c(e.fmt?.date(e.conference_data?.endDate))+".",1)],64))],2),[[ee,e.conference_data]]),P(n("div",uP,"The conference is not activated.",512),[[ee,e.anonymize?.conference?.errors?.activated]]),P(n("small",cP,"Submitting to a conference? Its code applies the venue's settings, and a paid conference hosts the repository for you.",512),[[ee,!e.conference_data]])]),e.detectedType==="repo"&&e.billing?.enabled&&!e.conferenceHosting()?(l(),d("p",pP,[e.isUpdate&&e.role!=="owner"?(l(),d("span",fP,"Uses the owner's hosting")):e.hasAuthorHosting()?(l(),d("span",hP,"Your author subscription is active.")):e.hostingQuota?.repository?(l(),d("span",mP,c(e.hostingQuota.repository.used)+" of "+c(e.hostingQuota.repository.total)+" active repositories \xB7 Free",1)):f("v-if",!0)])):f("v-if",!0),e.detectedType==="repo"&&e.billing?.enabled?(l(),d("div",gP,[e.hostingNeedsPayment()&&!e.billingPending?(l(),d(L,{key:0},[e.options.expirationMode!=="never"||e.hostingQuotaBlocked?(l(),d("p",vP,c(e.options.update&&!e.hostingQuotaBlocked&&e.hostingQuota?.repository?.used(l(),d("label",{class:T(["hosting-option",{"is-selected":e.hostingChoice()===a.id||a.interval&&e.authorPlans().some(u=>u.id===e.hostingChoice())}]),key:a.id},[n("input",{type:"radio",name:"hosting-plan",value:a.id,checked:e.hostingChoice()===a.id||a.interval&&e.authorPlans().some(u=>u.id===e.hostingChoice()),onChange:u=>e.hostingPlan=a.interval?e.hostingSubscriptionPlan().id:a.id},null,40,wP),n("span",kP,[n("strong",null,c(e.hostingOptionName(a)),1),n("small",null,c(e.hostingOptionBlurb(a)),1),a.interval&&e.authorPlans().length>1&&e.authorPlans().some(u=>u.id===e.hostingChoice())?(l(),d("span",CP,[(l(!0),d(L,null,ie(e.authorPlans(),u=>(l(),d("button",{type:"button",role:"radio",key:u.id,"aria-checked":e.hostingSubscriptionPlan().id===u.id?"true":"false",class:T({"is-on":e.hostingSubscriptionPlan().id===u.id}),onClick:ce(p=>{e.hostingCycle=u.id,e.hostingPlan=u.id},["prevent"])},[g(c(u.interval==="year"?"Yearly":"Monthly"),1),u.interval==="year"&&e.hostingAnnualSavings()?(l(),d("span",SP,"\u2212"+c(e.hostingAnnualSavings())+"%",1)):f("v-if",!0)],10,EP))),128))])):f("v-if",!0)]),n("span",NP,[n("strong",null,c(e.billingAmount(a.interval?e.hostingSubscriptionPlan():a)),1),n("small",null,c(a.interval?"per "+e.hostingSubscriptionPlan().interval:"once"),1)])],2))),128))])):(l(),d("p",RP,"New purchases are temporarily unavailable. Your draft is kept.")),e.authorPlans().some(a=>a.id===e.hostingChoice())?(l(),d("p",DP,"Renews "+c(e.hostingChoice()==="author_annual"?"yearly":"monthly")+" until you cancel. Tax shown at checkout.",1)):(l(),d("p",AP,"One-time payment, nothing renews. Tax shown at checkout.")),e.options.expirationMode!=="never"?(l(),d("details",TP,[t[144]||(t[144]=n("summary",null,"Keep using free hosting",-1)),t[145]||(t[145]=n("p",null,"Remove a repository you no longer need, or enter the code of a paid conference above. Removing a repository affects its review link.",-1)),t[146]||(t[146]=n("a",{href:"/dashboard"},"Review my repositories",-1)),n("button",{type:"button",class:"task-text-button",onClick:t[27]||(t[27]=a=>e.anonymizeRepo(a)),disabled:e.sourceLoading||e.billingBusy},"Recheck capacity and submit",8,PP)])):f("v-if",!0)],64)):f("v-if",!0)])):f("v-if",!0),e.hostingNeedsPayment()&&!e.billingPending?(l(),d("h4",OP,"Expiration")):f("v-if",!0),n("fieldset",IP,[t[152]||(t[152]=n("legend",{class:"sr-only"},"Expiration",-1)),n("label",_P,[n("input",{type:"radio",name:"expiration-choice",checked:e.options.expirationMode!=="never",onChange:t[28]||(t[28]=a=>e.useDatedHosting()),disabled:e.billingPending},null,40,MP),t[147]||(t[147]=n("span",null,"Expire on a date",-1))]),e.options.expirationMode!=="never"?(l(),d("div",VP,[e.options?.expirationMode!=="never"?(l(),d("div",qP,[t[148]||(t[148]=n("label",{class:"paper-field-label",for:"expirationDate"},"Expires",-1)),P(n("input",{class:T(["form-control",{"is-invalid":e.anonymize?.expirationDate?.invalid}]),type:"date",name:"expirationDate",id:"expirationDate",required:"",min:e.minExpirationDate,max:e.maxExpirationDate},null,10,$P),[[s,{state:e.viewState,set:a=>{e.options.expirationDate=a},value:e.options?.expirationDate,form:"anonymize",options:{}}]]),e.fmt?.dateEcho(e.options?.expirationDate)?(l(),d("p",LP,"Expires "+c(e.fmt?.dateEcho(e.options?.expirationDate)),1)):f("v-if",!0),P(n("div",UP,"Pick a date in the future.",512),[[ee,e.anonymize?.expirationDate?.errors?.min]]),P(n("div",{class:"invalid-feedback"},"Pick a date on or before "+c(e.fmt?.date(e.maxExpirationDate))+".",513),[[ee,e.anonymize?.expirationDate?.errors?.max]]),P(n("div",FP,"Enter a valid expiration date.",512),[[ee,e.anonymize?.expirationDate?.errors?.required||e.anonymize?.expirationDate?.errors?.date]])])):f("v-if",!0),n("div",BP,[t[150]||(t[150]=n("label",{for:"expiration"},"Then",-1)),P(n("select",{id:"expiration",class:"form-control","onUpdate:modelValue":t[29]||(t[29]=a=>e.options.expirationMode=a)},[...t[149]||(t[149]=[n("option",{value:"remove"},"Remove content",-1),n("option",{value:"redirect"},"Redirect to GitHub",-1)])],512),[[an,e.options.expirationMode]])])])):f("v-if",!0),e.detectedType==="repo"?(l(),d("label",zP,[n("input",{type:"radio",name:"expiration-choice",checked:e.options.expirationMode==="never",onChange:t[30]||(t[30]=a=>e.options.expirationMode="never"),disabled:e.billingPending},null,40,HP),n("span",null,[t[151]||(t[151]=g("Never expire",-1)),(e.options.expirationMode!=="never"||e.hasAuthorHosting()||e.repositoryGrants("repo_never").length)&&!(e.hostingNeedsPayment()&&e.hostingOptionPlans().length)?(l(),d("small",jP,c(e.neverExpireTag()),1)):f("v-if",!0)])])):f("v-if",!0)]),e.options.expirationMode==="redirect"?(l(),d("p",GP,"Visitors will be redirected to the original GitHub source on this date, revealing its identity.")):f("v-if",!0),e.detectedType==="repo"&&e.billing?.enabled?(l(),d("div",WP,[e.taskValidationError?(l(),d("p",KP,c(e.taskValidationError),1)):f("v-if",!0),e.billingError?(l(),d("p",YP,[g(c(e.billingError)+" ",1),n("button",{type:"button",class:"task-text-button",onClick:t[31]||(t[31]=a=>e.loadBilling()),disabled:e.billingBusy},"Reload billing",8,XP)])):f("v-if",!0),e.billingPending?(l(),d("div",JP,[...t[153]||(t[153]=[n("p",null,[n("strong",null,"Confirming your payment\u2026")],-1),n("p",{class:"form-text text-muted"},"Your draft is saved. Please do not pay again.",-1)])])):e.billingNotice?(l(),d("p",QP,c(e.billingNotice),1)):e.options.expirationMode==="never"&&!e.billingPending&&!e.hasAuthorHosting()&&e.repositoryGrants("repo_never").length?(l(),d("p",ZP,"No scheduled expiration. Paid once for this repository.")):e.options.expirationMode==="never"&&!e.billingPending?(l(),d("p",xP,"No scheduled expiration while subscribed. A 90-day grace period applies if paid access ends.")):f("v-if",!0),e.isUpdate&&e.role==="owner"&&!e.hasAuthorHosting()&&!e.hostingNeedsPayment()&&e.repositoryAddonPlans().length?(l(),d("details",eO,[t[154]||(t[154]=n("summary",null,"Pay once for just this repository",-1)),(l(!0),d(L,null,ie(e.repositoryAddonPlans(),a=>(l(),d("div",{key:a.id},[n("p",null,[n("strong",null,c(a.name),1),g(" \xB7 "+c(e.billingPrice(a))+". "+c(a.description),1)]),n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.billingBusy||e.hostingSaving||e.sourceLoading||e.billing.checkoutEnabled===!1||e.billingPending,onClick:u=>e.checkoutRepository(a.id)},"Buy "+c(a.name.toLowerCase()),9,tO)]))),128))])):f("v-if",!0)])):f("v-if",!0)],512),[[ee,e.detectedType]]),P(n("section",nO,[t[159]||(t[159]=n("h2",{class:"paper-section-eyebrow"},"Co-authors",-1)),t[160]||(t[160]=n("p",{class:"form-text text-muted",style:{"margin-bottom":"8px"}}," Co-authors can view and edit these settings. They cannot delete the anonymization or manage co-authors. ",-1)),P(n("div",oO,[t[156]||(t[156]=n("label",{class:"paper-field-label",for:"coauthorSearch"},"Add a GitHub user",-1)),n("div",sO,[P(n("input",iO,null,512),[[s,{state:e.viewState,set:a=>{e.coauthorSearch=a},value:e.coauthorSearch,form:"anonymize",options:{debounce:300},change:()=>{e.searchCoauthors()}}]]),P(n("div",rO,[(l(!0),d(L,null,ie(e.coauthorResults,(a,u)=>(l(),d("a",{href:"#",class:"dropdown-item d-flex align-items-center",onClick:ce(p=>e.addCoauthor(a,p),["prevent"])},[n("img",{alt:"",style:{width:"22px",height:"22px","border-radius":"50%","margin-right":"8px"},src:e.safeUrl(a?.photo)},null,8,lO),n("span",{textContent:c(a?.username)},null,8,dO)],8,aO))),256))],512),[[ee,e.coauthorResults?.length>0]])]),P(n("small",{class:"form-text text-muted",textContent:c(e.coauthorError)},null,8,uO),[[ee,e.coauthorError]])],512),[[ee,e.role==="owner"||e.role==="admin"]]),n("div",cO,[(l(!0),d(L,null,ie(e.coauthors,(a,u)=>(l(),d("div",pO,[a?.photo?(l(),d("img",{key:0,alt:"",style:{width:"24px",height:"24px","border-radius":"50%"},src:e.safeUrl(a?.photo)},null,8,fO)):f("v-if",!0),n("a",{target:"_blank",textContent:c(a?.username),href:e.safeUrl("https://github.com/"+a?.username)},null,8,hO),t[158]||(t[158]=n("span",{class:"type-badge type-coauthor"},"Co-author",-1)),P(n("button",{type:"button",class:"btn btn-sm btn-icon",style:{"margin-left":"auto"},title:"Remove co-author",onClick:p=>e.removeCoauthor(a),"aria-label":"Remove co-author"},[...t[157]||(t[157]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,mO),[[ee,e.role==="owner"||e.role==="admin"]])]))),256)),P(n("div",gO," No co-authors yet. ",512),[[ee,!e.coauthors||e.coauthors?.length===0]])])],512),[[ee,e.isUpdate&&e.detectedType==="repo"]]),e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:c(e.error)},null,8,vO)):f("v-if",!0)]),n("button",{type:"button",class:"btn btn-outline-ink mobile-preview-jump",onClick:t[32]||(t[32]=a=>e.selectMobilePane("preview"))},[...t[161]||(t[161]=[g("Review preview ",-1),n("span",{"aria-hidden":"true"},"\u2192",-1)])]),P(n("div",yO,[e.detectedType==="repo"?(l(),d(L,{key:0},[e.billingPending?(l(),d("button",{key:0,type:"button",class:"btn btn-ink",onClick:t[33]||(t[33]=a=>e.refreshBilling()),disabled:e.billingBusy},"Check payment status",8,bO)):(l(),d("button",{key:1,type:"submit",class:"btn btn-ink",disabled:e.sourceLoading||e.billingBusy||e.hostingSaving||e.billingLoading||e.hostingNeedsPayment()&&(!e.authorPlans().length&&!e.hostingOneTime()||e.billing?.checkoutEnabled===!1),onClick:t[34]||(t[34]=ce(a=>e.submitForm(a,()=>{e.submitRepository(a)}),["prevent"]))},c(e.hostingSaving?"Saving draft\u2026":e.hostingNeedsPayment()?"Continue to checkout":e.isUpdate?"Save changes":"Create anonymous link"),9,wO))],64)):f("v-if",!0),e.detectedType==="pr"&&!e.isUpdate?(l(),d("button",{key:1,type:"submit",disabled:e.sourceLoading||!e.details,class:"btn btn-ink",onClick:t[35]||(t[35]=ce(a=>e.submitForm(a,()=>{e.anonymizePullRequest(a)}),["prevent"]))}," Create anonymous link ",8,kO)):f("v-if",!0),e.detectedType==="pr"&&e.isUpdate?(l(),d("button",{key:2,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[36]||(t[36]=ce(a=>e.submitForm(a,()=>{e.anonymizePullRequest(a)}),["prevent"]))}," Save changes ",8,CO)):f("v-if",!0),e.detectedType==="gist"&&!e.isUpdate?(l(),d("button",{key:3,type:"submit",disabled:e.sourceLoading||!e.details,class:"btn btn-ink",onClick:t[37]||(t[37]=ce(a=>e.submitForm(a,()=>{e.anonymizeGist(a)}),["prevent"]))}," Create anonymous link ",8,EO)):f("v-if",!0),e.detectedType==="gist"&&e.isUpdate?(l(),d("button",{key:4,type:"submit",disabled:e.sourceLoading,class:"btn btn-ink",onClick:t[38]||(t[38]=ce(a=>e.submitForm(a,()=>{e.anonymizeGist(a)}),["prevent"]))}," Save changes ",8,SO)):f("v-if",!0),e.sourceLoading?(l(),d("p",NO,c(e.detectedType==="pr"?"Waiting for the pull request to load from GitHub\u2026":e.detectedType==="gist"?"Waiting for the gist to load from GitHub\u2026":"Waiting for the repository to load from GitHub\u2026"),1)):!e.details&&!e.isUpdate?(l(),d("p",RO,"Load an accessible source to continue. See the preview for details.")):f("v-if",!0),e.hostingNeedsPayment()&&!e.billingPending?(l(),d("p",DO,"You pay in Stripe, then come back here to finish.")):f("v-if",!0),e.draftRestored?(l(),d("div",AO,[t[162]||(t[162]=g("Your unsaved draft was restored. ",-1)),n("button",{type:"button",class:"draft-discard",onClick:t[39]||(t[39]=a=>e.discardDraft())},"Discard draft")])):e.unsavedChanges?(l(),d("div",TO,[g(c(e.draftSaved?"Draft saved \xB7":"Unsaved changes \xB7")+" ",1),n("button",{type:"button",class:"draft-discard",onClick:t[40]||(t[40]=a=>e.discardDraft())},c(e.isUpdate?"Restore saved":"Discard"),1)])):f("v-if",!0)],512),[[ee,e.detectedType]])])),[[r,e.viewState]])],8,UA),f(' Preview column (right): "What reviewers will see", a miniature reviewer window '),e.detectedType?(l(),d("div",{key:0,id:"workspace-preview",role:e.mobileWorkspace?"tabpanel":null,"aria-labelledby":e.mobileWorkspace?"workspace-preview-tab":null,class:"anonymize-preview-col reviewer-preview"},[n("div",OO,[t[165]||(t[165]=n("span",{class:"rp-title"},"What reviewers will see",-1)),e.previewStatus==="ready"&&e.previewRedactions()>0?(l(),d("span",{key:0,class:"rp-count",title:e.previewRedactions()+" redacted terms in this preview"},[n("span",_O,[n("i",null,c(e.previewRedactions()),1)]),t[163]||(t[163]=g(" redacted",-1))],8,IO)):e.previewStatus==="ready"&&!String(e.terms||"").trim()?(l(),d("span",MO,"No terms yet")):e.previewStatus==="ready"&&e.readmePreserved()?(l(),d("span",VO,"README left unredacted")):f("v-if",!0),t[166]||(t[166]=n("span",{class:"rp-spacer"},null,-1)),e.isUpdate&&e.previewUrl()?(l(),d("a",{key:3,class:"rp-open is-external",href:e.safeUrl(e.previewPath()),target:"_blank",rel:"noopener"},[...t[164]||(t[164]=[g("Open reviewer page ",-1),n("span",{"aria-hidden":"true"},"\u2197",-1)])],8,qO)):(l(),d("button",{key:4,type:"button",class:"rp-open is-toggle",onClick:t[41]||(t[41]=a=>e.previewExpanded=!e.previewExpanded),"aria-pressed":!!e.previewExpanded},[(l(),d("svg",LO,[e.previewExpanded?(l(),d("path",FO)):(l(),d("path",UO))])),g(c(e.previewExpanded?"Back to settings":"Expand preview"),1)],8,$O))]),n("div",BO,[n("div",zO,[t[167]||(t[167]=n("i",null,null,-1)),t[168]||(t[168]=n("i",null,null,-1)),t[169]||(t[169]=n("i",null,null,-1)),n("span",HO,c(e.previewUrl()||"anonymous.4open.science"),1)]),n("div",jO,[t[170]||(t[170]=n("span",{class:"vb-logo"},[g("Anonymous "),n("em",null,"GitHub")],-1)),e.previewId()?(l(),d("span",GO,c(e.previewId()),1)):f("v-if",!0),e.detectedType!=="repo"?(l(),d("span",WO,c(e.detectedType==="pr"?"Pull request":"Gist"),1)):f("v-if",!0)]),n("div",{class:T(["rp-body",{"has-tree":e.detectedType==="repo"}])},[e.detectedType==="repo"?(l(),d("nav",KO,[e.previewTree().length?(l(!0),d(L,{key:0},ie(e.previewTree(),a=>(l(),d("span",{class:T(["rp-tree-row",{"is-dir":a.dir,"is-active":a.readme}]),key:a.name},[(l(),d("svg",YO,[a.dir?(l(),d("path",XO)):(l(),d("path",JO))])),n("span",QO,c(a.name),1)],2))),128)):(l(),d(L,{key:1},[e.preserve.loading?(l(),d(L,{key:0},ie([62,48,70,40],a=>n("span",{class:"rp-tree-row rp-skel-row",key:a},[n("i",{class:"rp-skel",style:$e({width:a+"%"})},null,4)])),64)):f("v-if",!0),e.preserve.loading?f("v-if",!0):(l(),d("span",ZO,[...t[171]||(t[171]=[n("svg",{class:"rp-tree-icon",viewBox:"0 0 16 16","aria-hidden":"true"},[n("path",{d:"M1.5 3.5h4l1.5 1.5h7.5v8h-13z"})],-1),g("Files",-1)])])),e.preserve.loading?f("v-if",!0):(l(),d("span",xO,"Every other file at this commit appears here, with the same redactions."))],64))])):f("v-if",!0),n("div",eI,[e.detectedType==="repo"&&(e.previewStatus==="ready"||e.readme)?(l(),d("div",tI,[...t[172]||(t[172]=[n("span",{class:"rp-file-name"},"README.md",-1),n("span",{class:"rp-file-meta"},"Markdown",-1)])])):f("v-if",!0),f(" Loading: skeleton inside the window "),e.previewStatus==="loading"||e.sourceLoading&&e.previewStatus!=="ready"&&e.previewStatus!=="error"?(l(),d("div",nI,[n("span",oI,c(e.previewStatus==="loading"?"Updating the anonymized preview\u2026":e.detectedType==="pr"?"Loading the pull request from GitHub\u2026":e.detectedType==="gist"?"Loading the gist from GitHub\u2026":"Loading the repository from GitHub\u2026"),1),t[173]||(t[173]=Ce('',7))])):!e.details&&e.detectedType!=="repo"?(l(),d(L,{key:2},[f(" The source itself could not be loaded "),n("div",sI,[n("strong",null,"Couldn't load "+c(e.sourceSummary()||(e.detectedType==="pr"?"this pull request":"this gist")),1),n("p",null,c(e.error||"GitHub did not return it. Check that the link is right and that Anonymous GitHub can read it."),1),n("div",iI,[n("button",{type:"button",class:"btn btn-ink btn-sm",onClick:t[42]||(t[42]=a=>e.urlSelected(!0))},"Retry"),e.detectedType==="pr"&&e.githubConnection!=="oauth"?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink btn-sm",onClick:t[43]||(t[43]=a=>e.grantGitHubAccess())},[...t[174]||(t[174]=[g("Manage GitHub access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):(l(),d("a",rI,[...t[175]||(t[175]=[g("Manage GitHub access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])]))])])],2112)):!e.details&&e.detectedType==="repo"&&!e.isUpdate&&e.error?(l(),d("div",aI,[t[177]||(t[177]=n("strong",null,"Couldn't load this repository",-1)),n("p",null,c(e.error),1),n("div",lI,[n("button",{type:"button",class:"btn btn-ink btn-sm",onClick:t[44]||(t[44]=a=>e.urlSelected(!0))},"Retry"),e.githubConnection!=="oauth"?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink btn-sm",onClick:t[45]||(t[45]=a=>e.grantGitHubAccess())},[...t[176]||(t[176]=[g("Manage GitHub access ",-1),n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])])):f("v-if",!0)])])):e.previewStatus==="error"?(l(),d(L,{key:4},[f(" The anonymized preview failed "),n("div",dI,[t[178]||(t[178]=n("strong",null,"Couldn't apply the redactions",-1)),t[179]||(t[179]=n("p",null,"Unable to generate the anonymized preview. The latest redactions have not been verified.",-1)),n("div",uI,[n("button",{class:"btn btn-ink btn-sm",type:"button",onClick:t[46]||(t[46]=a=>e.retryPreview())},"Retry preview")])])],2112)):e.detectedType==="repo"&&!e.readme&&e.previewStatus==="idle"?(l(),d("div",cI,[...t[180]||(t[180]=[n("strong",null,"No README",-1),n("p",null,"Reviewers land on the file list. Open the files you will share and check them before sending the link.",-1)])])):e.detectedType==="repo"&&e.previewStatus==="ready"?(l(),d("div",{key:6,class:"anonymize-preview-body markdown-body body",innerHTML:e.renderRedacted(e.sanitize(e.html_readme))},null,8,pI)):e.detectedType==="gist"&&e.previewStatus==="ready"?(l(),d("div",fI,[n("div",hI,[n("h2",mI,[e.options?.title?(l(),d("span",gI,c(e.anonymizeGistContent(e.details?.gist?.description)||"Untitled gist"),1)):f("v-if",!0),n("span",{class:T(["badge",{"badge-success":e.details?.gist?.isPublic,"badge-secondary":!e.details?.gist?.isPublic}])},c(e.details?.gist?.isPublic?"public":"secret"),3)]),e.options?.date?(l(),d("small",{key:0,textContent:c(e.fmt?.date(e.details?.gist?.updatedDate))},null,8,vI)):f("v-if",!0)]),e.options?.origin?(l(),d("small",yI,"Gist ID: "+c(e.details?.source?.gistId),1)):f("v-if",!0),e.options?.username&&e.details?.gist?.ownerLogin?(l(),d("small",bI,"By @"+c(e.anonymizeGistContent(e.details?.gist?.ownerLogin)),1)):f("v-if",!0),e.options?.content&&e.previewGistFiles?.length?(l(),d("div",wI,[n("ul",kI,[(l(!0),d(L,null,ie(e.previewGistFiles,(a,u)=>(l(),d("li",CI,[n("div",EI,[n("strong",{textContent:c(a?.filename)},null,8,SI),a?.language?(l(),d("span",NI,c(a?.language),1)):f("v-if",!0)]),Me(o,{file:a,terms:e.terms,options:e.options},null,8,["file","terms","options"])]))),256))])])):f("v-if",!0),e.options?.comments&&e.details?.gist?.comments&&e.details?.gist?.comments?.length?(l(),d("div",RI,[t[183]||(t[183]=n("h3",{class:"paper-section-eyebrow mt-3"},"Comments",-1)),n("ul",DI,[(l(!0),d(L,null,ie(e.details?.gist?.comments,(a,u)=>(l(),d("li",AI,[n("div",TI,[e.options?.username?(l(),d("span",PI,[t[181]||(t[181]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[182]||(t[182]=g(" @",-1)),n("span",{textContent:c(e.anonymizeGistContent(a?.author))},null,8,OI)])):f("v-if",!0),e.options?.date?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(a?.updatedDate))},null,8,II)):f("v-if",!0)]),e.options?.body?(l(),d("div",_I,[Me(i,{content:e.anonymizeGistContent(a?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):f("v-if",!0)]))),256))])])):f("v-if",!0)])):e.detectedType==="pr"&&e.previewStatus==="ready"?(l(),d("div",MI,[n("div",VI,[n("h2",qI,[e.options?.title?(l(),d("span",$I,c(e.anonymizePrContent(e.details?.pullRequest?.title)),1)):f("v-if",!0),n("span",{class:T(["badge",{"badge-success":e.details?.pullRequest?.merged,"badge-warning":e.details?.pullRequest?.state=="open","badge-danger":e.details?.pullRequest?.state=="closed"&&!e.details?.pullRequest?.merged}])},c(e.fmt?.title(e.details?.pullRequest?.merged?"merged":e.details?.pullRequest?.state)),3)]),e.options?.date?(l(),d("small",{key:0,textContent:c(e.fmt?.date(e.details?.pullRequest?.updatedDate))},null,8,LI)):f("v-if",!0)]),e.options?.origin?(l(),d("small",UI,"Pull Request on "+c(e.details?.pullRequest?.baseRepositoryFullName),1)):f("v-if",!0),e.options?.body?(l(),d("div",FI,[Me(i,{content:e.anonymizePrContent(e.details?.pullRequest?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):f("v-if",!0),e.options?.diff||e.options?.comments?(l(),d("nav",BI,[e.options?.diff?(l(),d("button",{key:0,class:T(["paper-tab",{active:e.prTabState?.active=="diff"}]),type:"button",role:"tab",id:"preview-pr-diff-tab","aria-selected":e.prTabState?.active==="diff","aria-controls":"preview-pr-diff-panel",tabindex:e.prTabState?.active==="diff"?0:-1,onKeydown:t[47]||(t[47]=a=>e.previewTabKeydown(a)),onClick:t[48]||(t[48]=a=>e.prTabState.active="diff")},[...t[184]||(t[184]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),g(" Diff ",-1)])],42,zI)):f("v-if",!0),e.options?.comments?(l(),d("button",{key:1,class:T(["paper-tab",{active:e.prTabState?.active=="comments"}]),type:"button",role:"tab",id:"preview-pr-comments-tab","aria-selected":e.prTabState?.active==="comments","aria-controls":"preview-pr-comments-panel",tabindex:e.prTabState?.active==="comments"?0:-1,onKeydown:t[49]||(t[49]=a=>e.previewTabKeydown(a)),onClick:t[50]||(t[50]=a=>e.prTabState.active="comments")},[t[185]||(t[185]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1)),n("span",{textContent:c(e.fmt.plural(e.details?.pullRequest?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,jI)],42,HI)):f("v-if",!0)])):f("v-if",!0),!e.options?.diff&&!e.options?.comments?(l(),d("div",GI,"Diff and comments are hidden by your display settings.")):f("v-if",!0),n("div",WI,[e.options?.diff&&e.prTabState?.active=="diff"?(l(),d("div",KI,[n("div",{class:"pr-diff",innerHTML:e.sanitize(e.fmt?.diff(e.anonymizePrContent(e.details?.pullRequest?.diff)))},null,8,YI)])):f("v-if",!0),e.options?.comments&&e.prTabState?.active=="comments"?(l(),d("div",XI,[n("ul",JI,[(l(!0),d(L,null,ie(e.details?.pullRequest?.comments,(a,u)=>(l(),d("li",QI,[n("div",ZI,[e.options?.username?(l(),d("span",xI,[t[186]||(t[186]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[187]||(t[187]=g(" @",-1)),n("span",{textContent:c(e.anonymizePrContent(a?.author))},null,8,e5)])):f("v-if",!0),e.options?.date?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(a?.updatedDate))},null,8,t5)):f("v-if",!0)]),e.options?.body?(l(),d("div",n5,[Me(i,{content:e.anonymizePrContent(a?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):f("v-if",!0)]))),256))])])):f("v-if",!0)])])):f("v-if",!0),f(" More below: a fade with a way to keep reading (hidden by CSS once the window is scrolled to the end) "),e.previewStatus==="ready"?(l(),d("div",o5,[e.isUpdate&&e.previewUrl()?(l(),d("a",{key:0,class:"rp-more-btn",href:e.safeUrl(e.previewPath()),target:"_blank",rel:"noopener"},[...t[188]||(t[188]=[g("Continue reading on the reviewer page ",-1),n("span",{"aria-hidden":"true"},"\u2197",-1)])],8,s5)):e.previewExpanded?(l(),d("span",i5,"Scroll for more")):(l(),d("button",{key:1,type:"button",class:"rp-more-btn",onClick:t[51]||(t[51]=a=>e.previewExpanded=!0)},"Continue reading in the expanded preview"))])):f("v-if",!0)])],2)])],8,PO)):f("v-if",!0)])],512),[[ee,e.workspaceOpen||e.isUpdate]])],2)}var r5={class:"container-fluid h-100 anonymize-page"},a5={class:"row h-100 flex-column flex-md-row"},l5={class:"col-md sidePanel shadow overflow-auto anonymize-form-col"},d5={class:"form-group"},u5={class:"form-group"},c5={class:"form-check"},p5={class:"form-check-input",type:"checkbox",id:"update",name:"update"},f5={class:"form-group"},h5={class:"form-text text-muted"},m5=["href"],g5={class:"invalid-feedback"},v5={class:"form-text text-muted"},y5={class:"form-group"},b5={id:"idHelp",class:"form-text text-muted"},w5={class:"invalid-feedback"},k5={class:"form-group"},C5={class:"invalid-feedback"},E5={class:"form-group"},S5={class:"form-control",id:"expiration",name:"expiration"},N5={class:"form-group",id:"expiration-date-form"},R5={class:"form-control",type:"date",name:"expirationDate",id:"expirationDate"},D5={key:0,class:"date-echo","aria-live":"polite"},A5={class:"accordion mb-3",id:"options"},T5={class:"card"},P5={id:"collapseOne",class:"collapse show","aria-labelledby":"headingOne","data-parent":"#options"},O5={class:"card-body"},I5={class:"form-group mb-0"},_5={class:"form-check"},M5={class:"form-check-input",type:"checkbox",id:"link",name:"link"},V5={class:"form-check"},q5={class:"form-check-input",type:"checkbox",id:"image",name:"image"},$5={class:"form-check"},L5={class:"form-check-input",type:"checkbox",id:"date",name:"date"},U5={class:"form-check"},F5={class:"form-check-input",type:"checkbox",id:"username",name:"username"},B5={class:"form-check"},z5={class:"form-check-input",type:"checkbox",id:"comments",name:"comments"},H5={class:"form-check"},j5={class:"form-check-input",type:"checkbox",id:"diff",name:"diff"},G5={class:"form-check"},W5={class:"form-check-input",type:"checkbox",id:"origin",name:"origin"},K5={class:"form-check"},Y5={class:"form-check-input",type:"checkbox",id:"title",name:"title"},X5={class:"form-check"},J5={class:"form-check-input",type:"checkbox",id:"body",name:"body"},Q5=["textContent"],Z5={class:"anonymize-submit-bar"},x5={key:0,class:"col-md-8 p-2 overflow-auto anonymize-preview-col"},e8={class:"d-flex w-100 justify-content-between align-items-center flex-wrap"},t8={class:"pr-title mb-1"},n8={key:0},o8=["textContent"],s8={key:0},i8={key:1,class:"pr-body shadow-sm p-3 mb-4 rounded",style:{background:"var(--sidebar-bg-color)"}},r8={class:"nav nav-tabs",id:"myTab",role:"tablist"},a8={key:0,class:"nav-item",role:"presentation"},l8={key:1,class:"nav-item",role:"presentation"},d8=["textContent"],u8={class:"tab-content",id:"pills-tabContent"},c8={class:"tab-pane show active",id:"pills-diff",role:"tabpanel","aria-labelledby":"pills-diff-tab"},p8={key:0,class:"pr-diff shadow-sm p-3 mb-4 rounded",style:{background:"var(--sidebar-bg-color)"}},f8={style:{"overflow-x":"auto"}},h8=["innerHTML"],m8={key:0,class:"pr-comments list-group"},g8={class:"pr-comment list-group-item"},v8={class:"d-flex w-100 justify-content-between flex-wrap"},y8={key:0,class:"mb-1"},b8=["textContent"],w8={class:"mb-1"};function Bc(e,t){let o=Ye("markdown"),i=Pe("field"),s=Pe("form");return l(),d("div",r5,[n("div",a5,[n("div",l5,[n("div",{class:T(["p-0 py-2 m-auto",{card:!e.pullRequestUrl,container:e.pullRequestUrl}])},[P((l(),d("form",{class:T(["form needs-validation",{"card-body":!e.pullRequestUrl}]),name:"anonymizeForm",novalidate:""},[t[30]||(t[30]=Ce('
Anonymize \xA0/\xA0 Pull request

Anonymize a pull request

Fill in the details \u2014 it only takes a minute.

Source
',4)),f(" pullRequestUrl "),n("div",d5,[t[2]||(t[2]=n("label",{for:"pullRequestUrl"},"URL of your pull request",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.anonymize?.pullRequestUrl?.invalid}]),name:"pullRequestUrl",id:"pullRequestUrl",placeholder:"https://github.com/owner/repo/pull/123"},null,2),[[i,{state:e.viewState,set:r=>{e.pullRequestUrl=r},value:e.pullRequestUrl,form:"anonymizeForm",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"},change:()=>{e.pullRequestSelected()}}]]),P(n("div",{class:"invalid-feedback"},c(e.pullRequestUrl)+" is not accessible. Some organizations are restricting the access to the repositories. ",513),[[ee,e.anonymize?.pullRequestUrl?.errors?.access]]),P(n("div",{class:"invalid-feedback"},c(e.pullRequestUrl)+" does not exist or is not accessible ",513),[[ee,e.anonymize?.pullRequestUrl?.errors?.missing]]),P(n("div",{class:"invalid-feedback"},c(e.pullRequestUrl)+" is already anonymized ",513),[[ee,e.anonymize?.pullRequestUrl?.errors?.used]])]),P(n("div",null,[n("div",u5,[n("div",c5,[P(n("input",p5,null,512),[[i,{state:e.viewState,set:r=>{e.options.update=r},value:e.options?.update,form:"anonymizeForm",options:{}}]]),t[3]||(t[3]=n("label",{class:"form-check-label",for:"update"},"Auto update",-1)),t[4]||(t[4]=n("small",{id:"updateHelp",class:"form-text text-muted"},"Automatically update the anonymized pull request with the latest updates. The pull request is updated once per day maximum.",-1))])]),t[26]||(t[26]=n("div",{class:"paper-section-eyebrow anonymize-section-title"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})]),g(" Conference ID ")],-1)),f(" Conference "),n("div",f5,[t[5]||(t[5]=n("label",{for:"conference"},[g("Conference ID "),n("span",{class:"text-muted"},"(Optional)")],-1)),P(n("input",{class:T(["form-control",{"is-invalid":e.anonymize?.conference?.invalid}]),id:"conference",name:"conference"},null,2),[[i,{state:e.viewState,set:r=>{e.conference=r},value:e.conference,form:"anonymizeForm",options:{debounce:{default:800,blur:0},updateOn:"default blur"}}]]),P(n("small",h5,[n("a",{target:"_target",href:e.safeUrl(e.conference_data?.url)},c(e.conference_data?.name),9,m5),g(" will expire on "+c(e.fmt?.date(e.conference_data?.endDate))+".",1)],512),[[ee,e.conference_data]]),P(n("div",g5," The conference is not activated. ",512),[[ee,e.anonymize?.conference?.errors?.activated]]),P(n("small",v5," Use the Conference ID that your conference provided you. This will update automatically the anonymization options based on the conference preferences. ",512),[[ee,!e.conference_data]])]),t[27]||(t[27]=n("div",{class:"paper-section-eyebrow anonymize-section-title"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})]),g(" Anonymization Options ")],-1)),f(" Pull Request ID "),n("div",y5,[t[6]||(t[6]=n("label",{for:"pullRequestId"},"Anonymized pull request id",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.anonymize?.pullRequestId?.invalid}]),name:"pullRequestId",id:"pullRequestId"},null,2),[[i,{state:e.viewState,set:r=>{e.pullRequestId=r},value:e.pullRequestId,form:"anonymizeForm",options:{debounce:{default:1e3,blur:0,click:0},updateOn:"default blur click"}}]]),n("small",b5,"Id used in the url: https://anonymous.4open.science/r/"+c(e.pullRequestId),1),P(n("div",w5," Repository id can only contain letters and numbers ",512),[[ee,e.anonymize?.pullRequestId?.errors?.format]]),P(n("div",{class:"invalid-feedback"},c(e.pullRequestId)+" is already used ",513),[[ee,e.anonymize?.pullRequestId?.errors?.used]])]),f(" Terms "),n("div",k5,[t[7]||(t[7]=n("label",{for:"terms"},"Terms to anonymize",-1)),P(n("textarea",{class:T(["form-control",{"is-invalid":e.anonymize?.terms?.invalid}]),id:"terms",name:"terms",rows:"3"},null,2),[[i,{state:e.viewState,set:r=>{e.terms=r},value:e.terms,form:"anonymizeForm",options:{debounce:250}}]]),t[8]||(t[8]=n("small",{id:"termsHelp",class:"form-text text-muted"},"One term per line. Each term will be replaced by XXX.",-1)),P(n("div",C5," Terms are in an invalid format ",512),[[ee,e.anonymize?.terms?.errors?.format]])]),n("div",E5,[t[10]||(t[10]=n("label",{for:"expiration"},"Expiration strategy",-1)),P((l(),d("select",S5,[...t[9]||(t[9]=[n("option",{value:"never",selected:""},"Never expire",-1),n("option",{value:"redirect"}," Redirect to GitHub when expired ",-1),n("option",{value:"remove"},"Remove when expired",-1)])])),[[i,{state:e.viewState,set:r=>{e.options.expirationMode=r},value:e.options?.expirationMode,form:"anonymizeForm",options:{}}]]),t[11]||(t[11]=n("small",{class:"form-text text-muted"},"Define the expiration strategy for the anonymized repository.",-1))]),P(n("div",N5,[t[12]||(t[12]=n("label",{for:"expirationDate"},"Expiration date of the anonymized repository",-1)),P(n("input",R5,null,512),[[i,{state:e.viewState,set:r=>{e.options.expirationDate=r},value:e.options?.expirationDate,form:"anonymizeForm",options:{}}]]),e.fmt?.dateEcho(e.options?.expirationDate)?(l(),d("p",D5,"Expires "+c(e.fmt?.dateEcho(e.options?.expirationDate)),1)):f("v-if",!0),P(n("small",{class:"form-text text-muted"},"After "+c(e.fmt?.date(e.options?.expirationDate))+", the repository will be removed and the visitor will not be able to see the content of the repository.",513),[[ee,e.options?.expirationMode=="remove"]]),P(n("small",{class:"form-text text-muted"},"After "+c(e.fmt?.date(e.options?.expirationDate))+", the visitors of the anonymized repository will be redirected to "+c(e.pullRequestUrl)+".",513),[[ee,e.options?.expirationMode=="redirect"]])],512),[[ee,e.options?.expirationMode!="never"]]),n("div",A5,[n("div",T5,[t[25]||(t[25]=Ce('

',1)),n("div",P5,[n("div",O5,[n("div",I5,[n("div",_5,[P(n("input",M5,null,512),[[i,{state:e.viewState,set:r=>{e.options.link=r},value:e.options?.link,form:"anonymizeForm",options:{}}]]),t[13]||(t[13]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[14]||(t[14]=n("small",{class:"form-text text-muted"},"Keep or remove all the links.",-1))]),n("div",V5,[P(n("input",q5,null,512),[[i,{state:e.viewState,set:r=>{e.options.image=r},value:e.options?.image,form:"anonymizeForm",options:{}}]]),t[15]||(t[15]=n("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[16]||(t[16]=n("small",{class:"form-text text-muted"},"Images are not anonymized",-1))]),n("div",$5,[P(n("input",L5,null,512),[[i,{state:e.viewState,set:r=>{e.options.date=r},value:e.options?.date,form:"anonymizeForm",options:{}}]]),t[17]||(t[17]=n("label",{class:"form-check-label",for:"date"},"Display dates",-1)),t[18]||(t[18]=n("small",{class:"form-text text-muted"},"Display the date of the Pull Request and the date of the comments.",-1))]),n("div",U5,[P(n("input",F5,null,512),[[i,{state:e.viewState,set:r=>{e.options.username=r},value:e.options?.username,form:"anonymizeForm",options:{}}]]),t[19]||(t[19]=n("label",{class:"form-check-label",for:"username"},"Display username",-1))]),n("div",B5,[P(n("input",z5,null,512),[[i,{state:e.viewState,set:r=>{e.options.comments=r},value:e.options?.comments,form:"anonymizeForm",options:{}}]]),t[20]||(t[20]=n("label",{class:"form-check-label",for:"comments"},"Display comments",-1))]),n("div",H5,[P(n("input",j5,null,512),[[i,{state:e.viewState,set:r=>{e.options.diff=r},value:e.options?.diff,form:"anonymizeForm",options:{}}]]),t[21]||(t[21]=n("label",{class:"form-check-label",for:"diff"},"Display diff",-1))]),n("div",G5,[P(n("input",W5,null,512),[[i,{state:e.viewState,set:r=>{e.options.origin=r},value:e.options?.origin,form:"anonymizeForm",options:{}}]]),t[22]||(t[22]=n("label",{class:"form-check-label",for:"origin"},"Display the project name",-1))]),n("div",K5,[P(n("input",Y5,null,512),[[i,{state:e.viewState,set:r=>{e.options.title=r},value:e.options?.title,form:"anonymizeForm",options:{}}]]),t[23]||(t[23]=n("label",{class:"form-check-label",for:"title"},"Display the PR title",-1))]),n("div",X5,[P(n("input",J5,null,512),[[i,{state:e.viewState,set:r=>{e.options.body=r},value:e.options?.body,form:"anonymizeForm",options:{}}]]),t[24]||(t[24]=n("label",{class:"form-check-label",for:"body"},"Display the PR body and comment bodies",-1))])])])])])])],512),[[ee,e.pullRequestUrl]]),e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:c(e.error)},null,8,Q5)):f("v-if",!0),P(n("div",Z5,[e.isUpdate?f("v-if",!0):(l(),d("button",{key:0,id:"submit",type:"submit",class:"btn btn-ink btn-block",onClick:t[0]||(t[0]=ce(r=>e.submitForm(r,()=>{e.anonymizePullRequest(r)}),["prevent"]))},[...t[28]||(t[28]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),g(" Anonymize ",-1)])])),e.isUpdate?(l(),d("button",{key:1,id:"submit",type:"submit",class:"btn btn-ink btn-block",onClick:t[1]||(t[1]=ce(r=>e.submitForm(r,()=>{e.updatePullRequest(r)}),["prevent"]))},[...t[29]||(t[29]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-save"})],-1),g(" Update ",-1)])])):f("v-if",!0)],512),[[ee,e.pullRequestUrl]])],2)),[[s,e.viewState]])],2)]),e.details?(l(),d("div",x5,[n("div",e8,[n("h2",t8,[e.options?.title?(l(),d("span",n8,c(e.anonymize(e.details?.pullRequest?.title)),1)):f("v-if",!0),n("span",{class:T(["badge",{"badge-success":e.details?.pullRequest?.merged,"badge-warning":e.details?.pullRequest?.state=="open","badge-danger":e.details?.pullRequest?.state=="closed"&&!e.details?.pullRequest?.merged}])},c(e.fmt?.title(e.details?.pullRequest?.merged?"merged":e.details?.pullRequest?.state)),3)]),e.options?.date?(l(),d("small",{key:0,textContent:c(e.fmt?.date(e.details?.pullRequest?.updatedDate))},null,8,o8)):f("v-if",!0)]),e.options?.origin?(l(),d("small",s8,"Pull Request on "+c(e.details?.pullRequest?.baseRepositoryFullName),1)):f("v-if",!0),e.options?.body?(l(),d("div",i8,[Me(o,{content:e.anonymize(e.details?.pullRequest?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])])):f("v-if",!0),n("ul",r8,[e.options?.diff?(l(),d("li",a8,[...t[31]||(t[31]=[n("button",{class:"nav-link active",id:"pills-diff-tab","data-toggle":"pill","data-target":"#pills-diff",type:"button",role:"tab","aria-controls":"pills-diff","aria-selected":"true"}," Diff ",-1)])])):f("v-if",!0),e.options?.comments?(l(),d("li",l8,[n("button",{class:T(["nav-link",{active:!e.options?.diff}]),id:"pills-comments-tab","data-toggle":"pill","data-target":"#pills-comments",type:"button",role:"tab","aria-controls":"pills-comments","aria-selected":"false"},[n("span",{textContent:c(e.fmt.plural(e.details?.pullRequest?.comments?.length,{0:"No comment",one:"One Comment",other:"{} Comments"}))},null,8,d8)],2)])):f("v-if",!0)]),n("div",u8,[n("div",c8,[e.options?.diff?(l(),d("div",p8,[n("pre",f8,[n("code",{innerHTML:e.sanitize(e.fmt?.diff(e.anonymize(e.details?.pullRequest?.diff)))},null,8,h8)])])):f("v-if",!0)]),n("div",{class:T(["tab-pane",{"show active":!e.options?.diff}]),id:"pills-comments",role:"tabpanel","aria-labelledby":"pills-comments-tab"},[e.options?.comments?(l(),d("ul",m8,[(l(!0),d(L,null,ie(e.details?.pullRequest?.comments,(r,a)=>(l(),d("li",g8,[n("div",v8,[e.options?.username?(l(),d("h5",y8," @"+c(e.anonymize(r?.author)),1)):f("v-if",!0),e.options?.date?(l(),d("small",{key:1,textContent:c(e.fmt?.date(r?.updatedDate))},null,8,b8)):f("v-if",!0)]),n("p",w8,[e.options?.body?(l(),sn(o,{key:0,class:"pr-comment-body",content:e.anonymize(r?.body),options:e.options,terms:e.terms},null,8,["content","options","terms"])):f("v-if",!0)])]))),256))])):f("v-if",!0)],2)])])):f("v-if",!0)])])}var k8={class:"container paper-page claim-page"},C8={class:"paper-settings-main claim-form"},E8={class:"form-group"},S8={class:"invalid-feedback"},N8={class:"form-group"};function zc(e,t){let o=Pe("field"),i=Pe("form");return l(),d("div",k8,[t[6]||(t[6]=Ce('
My work \xA0/\xA0 Claim

Claim an anonymization

Take ownership of an existing anonymized repository so it appears on your dashboard.

',3)),n("div",C8,[t[5]||(t[5]=n("p",{class:"paper-section-copy"},"Use this when an anonymization was created by a co-author or from another account. You must have access to the GitHub repository it was made from.",-1)),P((l(),d("form",{class:"form needs-validation",name:"claimForm",novalidate:"",onSubmit:t[0]||(t[0]=ce(s=>e.submitForm(s,()=>{e.claim()}),["prevent"]))},[n("div",E8,[t[1]||(t[1]=n("label",{class:"paper-field-label",for:"repoUrl"},"GitHub repository URL",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.claimForm?.repoUrl?.invalid&&(e.claimForm?.repoUrl?.touched||e.claimForm?.submitted)}]),name:"repoUrl",id:"repoUrl",placeholder:"https://github.com/owner/repository",required:""},null,2),[[o,{state:e.viewState,set:s=>{e.repoUrl=s},value:e.repoUrl,form:"claimForm",options:{}}]]),P(n("div",S8," No anonymization matches this repository and ID. Check both values and that you can access the repository on GitHub. ",512),[[ee,e.claimForm?.repoUrl?.errors?.not_found]])]),n("div",N8,[t[2]||(t[2]=n("label",{class:"paper-field-label",for:"repoId"},"Anonymized repository ID",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.claimForm?.repoId?.invalid&&(e.claimForm?.repoId?.touched||e.claimForm?.submitted)}]),name:"repoId",id:"repoId",placeholder:"e.g. my-paper-7F2A","aria-describedby":"idHelp",required:""},null,2),[[o,{state:e.viewState,set:s=>{e.repoId=s},value:e.repoId,form:"claimForm",options:{}}]]),t[3]||(t[3]=n("small",{id:"idHelp",class:"form-text text-muted"},[g("The ID is the last part of the anonymized URL: "),n("code",null,"anonymous.4open.science/r/"),g(".")],-1))]),t[4]||(t[4]=n("button",{id:"submit",type:"submit",class:"btn btn-ink"}," Claim anonymization ",-1))],32)),[[i,e.viewState]])])])}var R8={class:"container page paper-page conference-page"},D8={class:"paper-crumbs"},A8={class:"here"},T8={class:"d-flex align-items-end flex-wrap",style:{gap:"12px","justify-content":"space-between"}},P8={class:"conf-title-row"},O8=["textContent"],I8={key:0,class:"conf-status"},_8=["textContent"],M8={key:0,class:"paper-page-lede"},V8=["textContent","href"],q8={class:"d-flex align-items-center flex-wrap",style:{gap:"10px"}},$8=["href"],L8={class:"paper-meta-rule"},U8=["textContent"],F8=["textContent"],B8={key:0},z8={key:0,class:"conference-payment-status",role:"status"},H8=["disabled"],j8={key:1,role:"alert"},G8={key:2,class:"paper-settings-section","aria-labelledby":"conference-payment-heading"},W8={key:0,role:"status"},K8={key:1,role:"alert"},Y8=["onClick","disabled"],X8={class:"dashboard-meta conf-view-meta"},J8={class:"dashboard-view-tabs",role:"group","aria-label":"Repository view"},Q8=["aria-pressed"],Z8=["aria-pressed","aria-label"],x8=["aria-pressed"],e_={class:"attention-count"},t_={class:"dashboard-count",role:"status"},n_={class:"search-wrap"},o_={type:"search",id:"search",class:"form-control","aria-label":"Search repositories",placeholder:"Search repositories\u2026",autocomplete:"off"},s_={class:"dashboard-filter-controls"},i_={class:"dropdown"},r_={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},a_={class:"filter-btn-value"},l_={class:"dropdown-menu","aria-labelledby":"dropdownSort"},d_={class:"form-check dropdown-item"},u_={class:"form-check-input",type:"radio",name:"sort",id:"anonymizeDate",value:"-anonymizeDate"},c_={class:"form-check dropdown-item"},p_={class:"form-check-input",type:"radio",name:"sort",id:"sortID",value:"repoId"},f_={class:"form-check dropdown-item"},h_={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},m_={class:"form-check dropdown-item"},g_={class:"form-check-input",type:"radio",name:"sort",id:"sortViews",value:"-pageView"},v_={class:"dashboard-page conf-rows"},y_={class:"cell-anon",role:"cell"},b_={class:"anon-text"},w_={class:"anon-title"},k_=["title","href"],C_={class:"rn-owner"},E_={class:"rn-repo"},S_={class:"anon-sub"},N_=["title"],R_={class:"id-head"},D_={class:"id-tail"},A_=["title"],T_={class:"dashboard-row-meta",role:"presentation"},P_={class:"cell-status",role:"cell"},O_={class:"status-line"},I_=["textContent"],__=["textContent","title"],M_=["href"],V_=["onClick","disabled"],q_={key:3,class:"status-sub status-sub-date"},$_=["data-unit","aria-label"],L_={class:"cell-expires",role:"cell"},U_={key:0,class:"expires-never"},F_=["textContent"],B_={key:2,class:"expires-past"},z_={key:3,class:"empty-dash","aria-label":"Not applicable"},H_={class:"cell-actions",role:"cell"},j_=["onClick","disabled","title","aria-label"],G_={class:"sr-only","aria-live":"polite"},W_={class:"project-type-svg","aria-hidden":"true"},K_=["href"],Y_={class:"copy-url-label","aria-hidden":"true"},X_=["href","aria-label"],J_={class:"dropdown"},Q_=["aria-label"],Z_={class:"dropdown-menu dropdown-menu-right"},x_=["href"],eM=["href"],tM=["href"],nM={key:0,class:"paper-table-empty"},oM={key:0},sM={key:1},iM={key:2,class:"paper-table-empty-actions"};function Hc(e,t){let o=Pe("field"),i=Pe("form");return l(),d("div",R8,[n("div",null,[n("div",D8,[t[6]||(t[6]=n("a",{href:"/dashboard"},"My work",-1)),t[7]||(t[7]=g(" \xA0/\xA0 ",-1)),t[8]||(t[8]=n("a",{href:"/conferences"},"Conferences",-1)),t[9]||(t[9]=g(" \xA0/\xA0 ",-1)),n("span",A8,c(e.conference?.conferenceID),1)]),n("div",T8,[n("div",null,[n("div",P8,[n("h1",{class:"paper-page-title",textContent:c(e.conference?.name)},null,8,O8),e.conference?.status?(l(),d("span",I8,[n("span",{class:T(["status-dot","status-"+e.conference?.status]),"aria-hidden":"true"},null,2),n("span",{textContent:c(e.fmt?.statusLabel(e.conference?.status))},null,8,_8)])):f("v-if",!0)]),e.conference?.url?(l(),d("p",M8,[n("a",{target:"_blank",rel:"noopener",textContent:c(e.conference?.url),href:e.safeUrl(e.conference?.url)},null,8,V8)])):f("v-if",!0)]),n("div",q8,[n("a",{class:"btn btn-outline-ink",href:e.safeUrl("/conference/"+e.conference?.conferenceID+"/edit")},[...t[10]||(t[10]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),g(" Edit conference",-1)])],8,$8)])]),n("div",L8,[n("span",null,[t[11]||(t[11]=g("ID ",-1)),n("b",{class:"commit-hash",textContent:c(e.conference?.conferenceID)},null,8,U8)]),n("span",null,[t[12]||(t[12]=g("Review window ",-1)),n("b",null,c(e.fmt?.date(e.conference?.startDate,"mediumDate"))+" \u2013 "+c(e.fmt?.date(e.conference?.endDate,"mediumDate")),1)]),n("span",null,[t[13]||(t[13]=g("Repositories ",-1)),n("b",null,c(e.fmt?.number(e.conference?.repositories?.length)),1)]),n("span",null,[t[14]||(t[14]=g("Plan ",-1)),n("b",{textContent:c(e.conferencePlanName(e.conference?.plan?.planID))},null,8,F8)]),e.conference?.price?(l(),d("span",B8,[t[15]||(t[15]=g("Cost so far ",-1)),n("b",null,c(e.fmt?.money(e.conference?.price)),1)])):f("v-if",!0)]),e.billingNotice?(l(),d("div",z8,[n("p",null,c(e.billingNotice),1),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[0]||(t[0]=s=>e.refreshBilling()),disabled:e.billingBusy},"Check payment status",8,H8)])):f("v-if",!0),e.billingError&&e.conference?.status!=="pending_payment"?(l(),d("p",j8,c(e.billingError),1)):f("v-if",!0),e.conference?.status==="pending_payment"?(l(),d("section",G8,[t[16]||(t[16]=n("h2",{id:"conference-payment-heading"},"Activate your review package",-1)),t[17]||(t[17]=n("p",null,"This conference is waiting for payment. Authors can join after payment is confirmed. Checkout returns to this conference. Authors within the package do not pay separately.",-1)),e.billingLoading?(l(),d("p",W8,"Loading payment options\u2026")):f("v-if",!0),e.billingError?(l(),d("p",K8,c(e.billingError),1)):f("v-if",!0),(l(!0),d(L,null,ie((e.billing?.plans||[]).filter(s=>s.id===e.conference?.plan?.planID),s=>(l(),d("div",{key:s.id},[n("p",null,[n("strong",null,c(s.name)+" package",1),g(": "+c(e.billingPrice(s))+" for up to "+c(s.repositories)+" repositories and "+c(e.billingBytes(s.storage))+" of source files during the review window. Taxes, if applicable, appear at checkout.",1)]),n("button",{type:"button",class:"btn btn-primary",onClick:r=>e.checkout(s.id,e.conference.conferenceID),disabled:e.billingBusy||e.billingPending||e.billing?.checkoutEnabled===!1},c(e.billingBusy?"Please wait\u2026":"Pay for review package"),9,Y8)]))),128)),t[18]||(t[18]=n("p",null,[n("a",{href:"/profile#settings-billing"},"Manage invoices")],-1))])):f("v-if",!0),n("div",X8,[n("div",J8,[n("button",{type:"button","aria-pressed":e.confView()==="current",onClick:t[1]||(t[1]=s=>e.setConfView("current")),title:"Every repository except removed links"},"Current",8,Q8),e.confCount("attention")>0||e.confView()==="attention"?(l(),d("button",{key:0,type:"button","aria-pressed":e.confView()==="attention",onClick:t[2]||(t[2]=s=>e.setConfView("attention")),"aria-label":"Needs attention "+e.confCount("attention")},[t[19]||(t[19]=n("span",{class:"dashboard-attention-prefix"},"Needs ",-1)),t[20]||(t[20]=n("span",null,"attention",-1)),t[21]||(t[21]=g()),n("span",{class:T(["attention-count",{"has-attention":e.confCount("attention")>0}])},c(e.fmt?.number(e.confCount("attention"))),3)],8,Z8)):f("v-if",!0),e.confCount("removed")>0||e.confView()==="removed"?(l(),d("button",{key:1,type:"button","aria-pressed":e.confView()==="removed",onClick:t[3]||(t[3]=s=>e.setConfView("removed")),title:"Links reviewers can no longer open"},[t[22]||(t[22]=g("Removed ",-1)),n("span",e_,c(e.fmt?.number(e.confCount("removed"))),1)],8,x8)):f("v-if",!0)]),n("span",t_,c(e.search.trim()?e.fmt?.number(e.filteredRepositories?.length||0)+" shown":e.fmt?.number(e.filteredRepositories?.length||0)+((e.filteredRepositories?.length||0)===1?" repository":" repositories")),1)]),P((l(),d("form",{class:"w-100 conf-repo-toolbar","aria-label":"Filter repositories","accept-charset":"UTF-8",onSubmit:t[4]||(t[4]=ce(s=>e.submitForm(s,()=>{s.preventDefault()}),["prevent"]))},[n("div",n_,[P(n("input",o_,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),n("div",s_,[n("div",i_,[n("button",r_,[t[23]||(t[23]=n("span",{class:"filter-btn-label"},"Sort",-1)),n("span",a_,c({"-anonymizeDate":"Anonymize date",repoId:"ID","-status":"Status","-pageView":"Views"}[e.orderBy]||"Custom"),1)]),n("div",l_,[t[28]||(t[28]=n("h6",{class:"dropdown-header"},"Order by",-1)),n("div",d_,[P(n("input",u_,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[24]||(t[24]=n("label",{class:"form-check-label",for:"anonymizeDate"},"Anonymize date",-1))]),n("div",c_,[P(n("input",p_,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[25]||(t[25]=n("label",{class:"form-check-label",for:"sortID"},"ID",-1))]),n("div",f_,[P(n("input",h_,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[26]||(t[26]=n("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))]),n("div",m_,[P(n("input",g_,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[27]||(t[27]=n("label",{class:"form-check-label",for:"sortViews"},"Views",-1))])])])])],32)),[[i,e.viewState]]),n("div",v_,[n("div",{class:T(["paper-table paper-table-dashboard paper-table-conf w-100",{"is-removed-view":e.confView()==="removed"}]),role:"table","aria-label":"Repositories"},[t[37]||(t[37]=n("div",{class:"paper-table-head",role:"row"},[n("div",{role:"columnheader"},"Repository"),n("div",{role:"columnheader"},"Status"),n("div",{role:"columnheader",class:"num"},"Views"),n("div",{role:"columnheader"},"Expires"),n("div",{role:"columnheader"},[n("span",{class:"sr-only"},"Actions")])],-1)),(l(!0),d(L,null,ie(e.filteredRepositories,(s,r)=>(l(),d("div",{class:T(["paper-table-row",{"repo-inactive":s?.status=="expired"||s?.status=="removed","repo-error":s?.status=="error"}]),role:"row",key:s?.repoId},[n("div",y_,[t[30]||(t[30]=n("span",{class:"project-type-icon",role:"img","aria-label":"Repository",title:"Repository"},[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})])],-1)),n("div",b_,[n("div",w_,[n("a",{class:"repo-name",title:s?.source?.fullName,href:e.safeUrl("/r/"+s?.repoId+"/")},[(s?.source?.fullName||"").indexOf("/")>0?(l(),d(L,{key:0},[n("span",C_,c(s.source.fullName.slice(0,s.source.fullName.indexOf("/")+1)),1),t[29]||(t[29]=n("wbr",null,null,-1)),n("span",E_,c(s.source.fullName.slice(s.source.fullName.indexOf("/")+1)),1)],64)):(l(),d(L,{key:1},[g(c(s?.source?.fullName||s?.repoId),1)],64))],8,k_)]),n("div",S_,[n("code",{class:"anonymous-id",title:s?.repoId},[(s?.repoId||"").length>14?(l(),d(L,{key:0},[n("span",R_,c(s.repoId.slice(0,-6)),1),n("span",D_,c(s.repoId.slice(-6)),1)],64)):(l(),d(L,{key:1},[g(c(s?.repoId),1)],64))],8,N_),s?.source?.commit?(l(),d("span",{key:0,class:"commit-hash",title:s.source.commit},c(s.source.commit.substring(0,7)),9,A_)):f("v-if",!0)])])]),n("div",T_,[n("div",P_,[n("div",O_,[n("span",{class:T(["status-dot","status-"+(s?.status=="error"?"error":s?.status=="ready"?"ready":s?.status=="expired"||s?.status=="removed"?s?.status:"progress")]),"aria-hidden":"true"},null,2),n("span",{class:"status-word",textContent:c(e.fmt?.statusLabel(s?.status))},null,8,I_)]),s?.status=="error"&&s?.statusMessage?(l(),d("div",{key:0,class:"status-sub status-sub-error",textContent:c(e.fmt?.statusMsg(s?.statusMessage)),title:s?.statusMessage},null,8,__)):f("v-if",!0),s?.status=="error"?(l(),d("a",{key:1,class:"project-attention-action",href:e.safeUrl("/status/"+s?.repoId)},"View status",8,M_)):f("v-if",!0),s?.status=="expired"?(l(),d("button",{key:2,type:"button",class:"project-attention-action",onClick:ce(a=>e.extendRepo(s),["stop"]),disabled:e.extendingId===s?.repoId,title:"Reviewers can no longer open this link"},"Extend 6 months",8,V_)):f("v-if",!0),s?.anonymizeDate&&s?.status!="error"&&s?.status!="expired"?(l(),d("div",q_,"anonymized "+c(e.fmt?.humanTime(s?.anonymizeDate)),1)):f("v-if",!0)]),n("div",{class:"cell-views num",role:"cell","data-unit":(s?.pageView||0)===1?"view":"views","aria-label":e.fmt?.number(s?.pageView||0)+((s?.pageView||0)===1?" view":" views")},[t[31]||(t[31]=n("svg",{class:"project-type-svg mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),n("span",null,c(e.fmt?.number(s?.pageView||0)),1)],8,$_),n("div",L_,[t[33]||(t[33]=n("svg",{class:"project-type-svg mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),s?.status=="ready"&&(s?.options?.expirationMode==="never"||!s?.options?.expirationDate)?(l(),d("span",U_,"No expiry")):f("v-if",!0),s?.status=="ready"&&s?.options?.expirationMode!=="never"&&s?.options?.expirationDate?(l(),d("span",{key:1,textContent:c((e.fmt?.humanTime(s?.options?.expirationDate)||"").replace(/^on /,""))},null,8,F_)):f("v-if",!0),s?.status=="expired"?(l(),d("span",B_,[t[32]||(t[32]=n("span",{class:"expires-past-prefix"},"Expired ",-1)),g(c(e.fmt?.shortDate(s?.options?.expirationDate)),1)])):f("v-if",!0),s?.status!="ready"&&s?.status!="expired"?(l(),d("span",z_,"\u2014")):f("v-if",!0)])]),n("div",H_,[s?.status!="expired"&&s?.status!="removed"?(l(),d("button",{key:0,type:"button",class:"copy-url",onClick:ce(a=>e.copyRepoLink(s),["stop"]),disabled:!!e.copyingId,title:"Copy link: /r/"+s?.repoId+"/","aria-label":"Copy anonymous link for "+s?.repoId},[n("span",G_,c(e.copyingId===s?.repoId?"Link copied":""),1),(l(),d("svg",W_,[n("use",{href:e.copyingId===s?.repoId?"#ui-icon-check":"#project-icon-copy"},null,8,K_)])),n("span",Y_,c(e.copyingId===s?.repoId?"Copied":"Copy link"),1)],8,j_)):f("v-if",!0),s?.status!="expired"&&s?.status!="removed"?(l(),d("a",{key:1,class:"row-edit row-open",href:e.safeUrl("/r/"+s?.repoId+"/"),target:"_blank",rel:"noopener",title:"Open what reviewers see","aria-label":"Open anonymous page for "+s?.repoId},[...t[34]||(t[34]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])],8,X_)):f("v-if",!0),n("div",J_,[n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"Actions for "+s?.repoId},[...t[35]||(t[35]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})],-1)])],8,Q_),n("div",Z_,[n("a",{class:"dropdown-item",href:e.safeUrl("/r/"+s?.repoId+"/")},"View",8,x_),n("a",{class:"dropdown-item",href:e.safeUrl("https://github.com/"+s?.source?.fullName+"/"),target:"_blank",rel:"noopener"},"Open source on GitHub",8,eM),n("a",{class:"dropdown-item",href:e.safeUrl("/anonymize/"+s?.repoId)},"Edit",8,tM)])])])],2))),128)),e.filteredRepositories?.length==0?(l(),d("div",nM,[t[36]||(t[36]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),e.conference?.repositories?.length?f("v-if",!0):(l(),d("span",oM,"No repository has been submitted to this conference yet.")),e.conference?.repositories?.length?(l(),d("span",sM,"Nothing matches the current filters.")):f("v-if",!0),e.conference?.repositories?.length?(l(),d("div",iM,[n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[5]||(t[5]=s=>{e.search="",e.setConfView("current")})},"Clear filters")])):f("v-if",!0)])):f("v-if",!0)],2)])])])}var rM={class:"container page paper-page conferences-page"},aM={class:"row"},lM={class:"w-100"},dM={class:"d-flex align-items-start justify-content-between flex-wrap page-head-row page-head page-head-main",style:{gap:"12px"}},uM={key:0,href:"/conference/new",class:"btn btn-primary"},cM={class:"search-wrap"},pM={type:"search",id:"search",class:"form-control","aria-label":"Search conferences",placeholder:"Search by name or ID\u2026",autocomplete:"off"},fM={class:"dashboard-filter-controls"},hM={class:"dropdown"},mM={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},gM={class:"filter-btn-value"},vM={class:"dropdown-menu","aria-labelledby":"dropdownSort"},yM={class:"form-check dropdown-item"},bM={class:"form-check-input",type:"radio",name:"sort",id:"sortName",value:"name"},wM={class:"form-check dropdown-item"},kM={class:"form-check-input",type:"radio",name:"sort",id:"sortID",value:"conferenceID"},CM={class:"form-check dropdown-item"},EM={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},SM={class:"dropdown"},NM={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},RM={key:0,class:"filter-btn-value"},DM={key:1,class:"filter-btn-value"},AM={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},TM={class:"form-check dropdown-item"},PM=["id"],OM=["for"],IM={key:1,class:"dashboard-meta"},_M={class:"dashboard-count"},MM={key:0},VM={key:0},qM={key:1},$M={key:0,class:"filter-chip"},LM=["onClick","aria-label"],UM={key:0,class:"conference-feedback",role:"alert"},FM={key:1,class:"conference-feedback",role:"status"},BM={class:"paper-table paper-table-conferences w-100",role:"table","aria-label":"Conferences"},zM={class:"cell-anon",role:"cell"},HM={class:"anon-text"},jM=["textContent","href"],GM={class:"anon-sub"},WM={class:"anon-source"},KM=["textContent"],YM={key:0},XM=["textContent","href"],JM={class:"cell-status",role:"cell"},QM={class:"status-line"},ZM=["textContent"],xM={class:"cell-views num",role:"cell"},e6=["textContent"],t6={class:"cell-expires",role:"cell"},n6={key:0},o6={key:1,class:"empty-dash","aria-label":"No review window"},s6={class:"cell-actions",role:"cell"},i6={class:"dropdown"},r6=["disabled","aria-label"],a6={class:"dropdown-menu dropdown-menu-right"},l6=["href"],d6=["href"],u6={key:0},c6=["onClick"],p6={key:0,class:"paper-table-empty"},f6={key:0,class:"empty-icon","aria-hidden":"true"},h6={key:1,class:"ui-icon","aria-hidden":"true"},m6={key:3},g6={class:"paper-table-empty-actions"},v6={key:0,href:"/conference/new",class:"btn btn-primary conf-empty-new"};function jc(e,t){let o=Pe("field"),i=Pe("form");return l(),d("div",rM,[n("div",aM,[n("div",lM,[n("div",dM,[t[4]||(t[4]=n("div",null,[n("h1",{class:"paper-page-title"},[g("Your "),n("em",null,"conferences")]),n("p",{class:"paper-page-lede"},"Group anonymizations by venue, give chairs a shared dashboard, and set one expiry for every submission.")],-1)),e.conferences&&e.conferences.length==0?f("v-if",!0):(l(),d("a",uM,[...t[3]||(t[3]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#project-icon-plus"})],-1),g(" New conference ",-1)])]))]),e.conferences?.length>0?P((l(),d("form",{key:0,class:"w-100 dashboard-filter-row","aria-label":"Filter conferences","accept-charset":"UTF-8",onSubmit:t[0]||(t[0]=ce(s=>e.submitForm(s,()=>{s.preventDefault()}),["prevent"]))},[n("div",cM,[P(n("input",pM,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),n("div",fM,[n("div",hM,[n("button",mM,[t[5]||(t[5]=n("span",{class:"filter-btn-label"},"Sort",-1)),n("span",gM,c({name:"Name",conferenceID:"ID","-status":"Status"}[e.orderBy]||"Custom"),1)]),n("div",vM,[t[9]||(t[9]=n("h6",{class:"dropdown-header"},"Order by",-1)),n("div",yM,[P(n("input",bM,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[6]||(t[6]=n("label",{class:"form-check-label",for:"sortName"},"Name",-1))]),n("div",wM,[P(n("input",kM,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[7]||(t[7]=n("label",{class:"form-check-label",for:"sortID"},"ID",-1))]),n("div",CM,[P(n("input",EM,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[8]||(t[8]=n("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))])])]),n("div",SM,[n("button",NM,[t[10]||(t[10]=n("span",{class:"filter-btn-label"},"Status",-1)),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?(l(),d("span",RM,"All")):f("v-if",!0),e.filters?.status?.ready&&e.filters?.status?.expired&&e.filters?.status?.removed?f("v-if",!0):(l(),d("span",DM,c((e.filters?.status?.ready?0:1)+(e.filters?.status?.expired?0:1)+(e.filters?.status?.removed?0:1))+" hidden ",1))]),n("div",AM,[t[11]||(t[11]=n("h6",{class:"dropdown-header"},"Show statuses",-1)),(l(!0),d(L,null,ie(e.statusLabels,(s,r,a)=>(l(),d("div",TM,[P(n("input",{class:"form-check-input",type:"checkbox",id:"status-"+r},null,8,PM),[[o,{state:e.viewState,set:u=>{e.filters.status[r]=u},value:e.filters?.status[r],form:null,options:{}}]]),n("label",{class:"form-check-label",for:"status-"+r},c(s),9,OM)]))),256))])])])],32)),[[i,e.viewState]]):f("v-if",!0),e.conferences?.length>0?(l(),d("div",IM,[n("span",_M,[e.filteredConferences?.length===e.conferences?.length?(l(),d("span",MM,[g(c(e.fmt?.number(e.conferences?.length))+" conference",1),e.conferences?.length!==1?(l(),d("span",VM,"s")):f("v-if",!0)])):f("v-if",!0),e.filteredConferences?.length!==e.conferences?.length?(l(),d("span",qM,c(e.fmt?.number(e.filteredConferences?.length))+" of "+c(e.fmt?.number(e.conferences?.length))+" shown",1)):f("v-if",!0)]),(l(!0),d(L,null,ie(e.filters?.status,(s,r,a)=>(l(),d(L,null,[s===!1?(l(),d("span",$M,[g(" Hiding "+c(e.statusLabels[r])+" ",1),n("button",{type:"button",class:"filter-chip-close",onClick:u=>{e.filters.status[r]=!0},"aria-label":"Show "+e.statusLabels[r]+" again"},"\xD7",8,LM)])):f("v-if",!0)],64))),256))])):f("v-if",!0)]),e.error?(l(),d("div",UM,[n("span",null,c(e.error),1),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[1]||(t[1]=s=>e.loadConferences())},"Retry")])):f("v-if",!0),e.loading?(l(),d("div",FM,"Loading conferences\u2026")):f("v-if",!0),n("div",BM,[t[28]||(t[28]=n("div",{class:"paper-table-head",role:"row"},[n("div",{role:"columnheader"},"Conference"),n("div",{role:"columnheader"},"Status"),n("div",{role:"columnheader",class:"num"},"Repos"),n("div",{role:"columnheader"},"Review window"),n("div",{role:"columnheader"},[n("span",{class:"sr-only"},"Actions")])],-1)),(l(!0),d(L,null,ie(e.filteredConferences,(s,r)=>(l(),d("div",{class:T(["paper-table-row row-clickable",{"repo-inactive":s?.status=="expired"||s?.status=="removed"}]),role:"row",key:s?.conferenceID},[n("div",zM,[t[14]||(t[14]=n("svg",{class:"ui-icon record-type-icon",role:"img","aria-label":"Conference"},[n("use",{href:"#project-icon-conference"})],-1)),n("div",HM,[n("a",{class:"repo-name",textContent:c(s?.name),href:e.safeUrl("/conference/"+s?.conferenceID)},null,8,jM),n("div",GM,[n("span",WM,[t[13]||(t[13]=g("ID ",-1)),n("span",{class:"commit-hash",textContent:c(s?.conferenceID)},null,8,KM),s?.url?(l(),d("span",YM,[t[12]||(t[12]=g(" \xB7 ",-1)),n("a",{target:"_blank",rel:"noopener",textContent:c(e.fmt?.limitTo(s?.url,60)),href:e.safeUrl(s?.url)},null,8,XM)])):f("v-if",!0)])])])]),n("div",JM,[n("div",QM,[n("span",{class:T(["status-dot","status-"+s?.status]),"aria-hidden":"true"},null,2),n("span",{class:"status-word",textContent:c(e.fmt?.statusLabel(s?.status))},null,8,ZM)])]),n("div",xM,[t[15]||(t[15]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1)),t[16]||(t[16]=g()),n("span",{textContent:c(e.fmt?.number(s?.nbRepositories||0))},null,8,e6)]),n("div",t6,[t[17]||(t[17]=n("svg",{class:"ui-icon mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),s?.startDate?(l(),d("span",n6,c(e.fmt?.date(s?.startDate,"mediumDate"))+" \u2013 "+c(e.fmt?.date(s?.endDate,"mediumDate")),1)):f("v-if",!0),s?.startDate?f("v-if",!0):(l(),d("span",o6,"\u2014"))]),n("div",s6,[n("div",i6,[n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:s?.removing,"aria-label":"Actions for "+s?.name},[...t[18]||(t[18]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})],-1)])],8,r6),n("div",a6,[n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/")},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),g(" View ",-1)])],8,l6),n("a",{class:"dropdown-item",href:e.safeUrl("/conference/"+s?.conferenceID+"/edit")},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),g(" Edit ",-1)])],8,d6),s?.status!="removed"?(l(),d("div",u6,[t[22]||(t[22]=n("div",{class:"dropdown-divider"},null,-1)),n("button",{type:"button",class:"dropdown-item dropdown-item-danger",onClick:a=>e.removeConference(s)},[...t[21]||(t[21]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),g(" Remove ",-1)])],8,c6)])):f("v-if",!0)])])])],2))),128)),!e.loading&&!e.error&&e.filteredConferences?.length==0?(l(),d("div",p6,[e.conferences?.length==0?(l(),d("span",f6,[...t[23]||(t[23]=[n("svg",{class:"ui-icon"},[n("use",{href:"#project-icon-conference"})],-1)])])):f("v-if",!0),e.conferences?.length>0?(l(),d("svg",h6,[...t[24]||(t[24]=[n("use",{href:"#project-icon-inbox"},null,-1)])])):f("v-if",!0),e.conferences?.length==0?(l(),d(L,{key:2},[t[25]||(t[25]=n("strong",{class:"empty-title"},"No conferences yet",-1)),t[26]||(t[26]=n("span",null,"Create one to group submissions for a venue, share a dashboard with chairs, and set a single expiry date.",-1))],64)):f("v-if",!0),e.conferences?.length>0?(l(),d("span",m6,"Nothing matches the current filters.")):f("v-if",!0),n("div",g6,[e.conferences?.length==0?(l(),d("a",v6,[...t[27]||(t[27]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-plus"})],-1),g(" New conference",-1)])])):f("v-if",!0),e.conferences?.length>0?(l(),d("button",{key:1,type:"button",class:"btn btn-outline-ink",onClick:t[2]||(t[2]=s=>{e.search="",e.filters.status.ready=!0,e.filters.status.expired=!0,e.filters.status.removed=!0})},"Clear filters")):f("v-if",!0)])])):f("v-if",!0)])])])}var y6={class:"container page dashboard-page paper-page"},b6={class:"row"},w6={class:"w-100"},k6={class:"dashboard-heading page-head page-head-main"},C6={class:"dashboard-title-line"},E6={key:0,class:"dashboard-count-head","aria-hidden":"true"},S6={key:0},N6={class:"dashboard-heading-actions"},R6=["open"],D6=["aria-expanded"],A6=["stroke-dasharray"],T6={key:1,d:"M7 12c0-4 4-4 5 0s5 4 5 0-4-4-5 0-5 4-5 0",class:"quota-ring-unlimited"},P6={key:0,class:"quota-summary-value"},O6={key:0},I6={class:"quota-panel",id:"dashboard-usage"},_6={class:"quota-panel-heading"},M6={key:1,class:"quota-loading",role:"status"},V6={key:0,class:"dashboard-meta"},q6={key:0,class:"dashboard-view-tabs",role:"group","aria-label":"Project view"},$6=["aria-pressed"],L6=["aria-pressed","aria-label"],U6=["aria-pressed","aria-label"],F6={key:0,class:"attention-count"},B6={key:0},z6={key:0},H6={key:1},j6={class:"search-wrap"},G6={type:"search",id:"search",class:"form-control","aria-label":"Search anonymizations",placeholder:"Search projects\u2026",autocomplete:"off"},W6=["aria-expanded"],K6={class:"btn-group",role:"group","aria-label":"Type"},Y6=["aria-pressed"],X6=["aria-pressed"],J6=["aria-pressed"],Q6=["aria-pressed"],Z6={class:"dropdown"},x6={class:"btn dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},eV={class:"filter-btn-value"},tV={class:"sr-only"},nV={class:"dropdown-menu","aria-labelledby":"dropdownSort"},oV={class:"form-check dropdown-item"},sV=["onClick","checked","id"],iV=["for"],rV=["inert"],aV={class:"btn dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},lV={class:"filter-btn-value"},dV={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},uV={key:0,class:"form-check dropdown-item"},cV=["id"],pV=["for"],fV={key:1,class:"dashboard-active-filters dashboard-active-filters-row"},hV=["onClick","aria-label","title"],mV=["aria-busy"],gV={class:"paper-table-head",role:"row"},vV=["aria-sort"],yV=["aria-sort"],bV=["aria-sort"],wV=["aria-sort"],kV={key:0,class:"paper-table-row paper-table-skeleton",role:"row","aria-hidden":"true"},CV=["onClick"],EV={class:"cell-anon",role:"cell"},SV=["aria-label","title"],NV={class:"project-type-svg","aria-hidden":"true"},RV=["href"],DV={class:"anon-text"},AV={class:"anon-title"},TV=["title","href"],PV={class:"rn-owner"},OV={class:"rn-repo"},IV={key:1,class:"repo-name repo-name-static"},_V={class:"rn-owner"},MV={class:"rn-repo"},VV={key:2,class:"type-badge type-coauthor",title:"You are a co-author on this anonymization"},qV={key:0,class:"anon-sub"},$V=["title"],LV={class:"id-head"},UV={class:"id-tail"},FV=["title"],BV=["title"],zV=["textContent"],HV={class:"dashboard-row-meta",role:"presentation"},jV={class:"cell-status",role:"cell"},GV={class:"status-line"},WV=["textContent"],KV=["onClick"],YV=["textContent","title"],XV=["title"],JV=["href"],QV={key:3,class:"status-action-line"},ZV={key:0,class:"status-stuck"},xV=["onClick","data-project-actions","aria-controls","aria-expanded"],eq=["onClick"],tq={key:5,class:"status-sub status-sub-date status-sub-removed"},nq={key:6,class:"status-sub status-sub-date"},oq=["data-unit","aria-label"],sq={class:"cell-expires",role:"cell"},iq={key:0,class:"expires-never"},rq=["textContent"],aq=["title"],lq={key:3,class:"expires-past"},dq={key:4,class:"expires-past"},uq={key:5,class:"empty-dash","aria-label":"Not applicable"},cq={class:"cell-actions",role:"cell"},pq=["onClick","disabled","title","aria-label"],fq={class:"sr-only","aria-live":"polite"},hq={class:"project-type-svg","aria-hidden":"true"},mq=["href"],gq={class:"copy-url-label","aria-hidden":"true"},vq=["href","aria-label"],yq=["href","title","aria-label"],bq=["title","aria-label"],wq=["title","aria-label"],kq=["aria-label"],Cq={key:6,class:"dropdown is-disabled"},Eq=["aria-label"],Sq={key:7,class:"dropdown"},Nq=["data-project-actions","aria-label"],Rq={class:"dropdown-menu dropdown-menu-right"},Dq=["onClick","aria-controls","aria-expanded"],Aq=["href"],Tq=["href"],Pq=["onClick","disabled"],Oq=["href"],Iq=["onClick"],_q=["onClick"],Mq=["onClick"],Vq={key:5},qq=["onClick"],$q={key:1,class:"project-details-row",role:"row"},Lq=["id","onKeydown"],Uq={class:"project-details-heading"},Fq=["onClick"],Bq={class:"project-details-list"},zq={key:0},Hq={key:1},jq={key:0},Gq={key:2},Wq={key:0,class:"project-progress-help"},Kq=["href"],Yq=["onSubmit"],Xq=["for"],Jq=["id"],Qq={class:"project-name-controls"},Zq=["id","aria-describedby","disabled"],xq=["disabled"],e$={key:0,class:"project-name-error",role:"alert"},t$={key:1,role:"status"},n$={key:0,class:"paper-table-empty"},o$={key:0},s$={key:1},i$={class:"paper-table-empty-actions"},r$={key:1,href:"/anonymize",class:"btn btn-ink"},a$={key:0,class:"dashboard-pagination"},l$={key:0,role:"alert"},d$=["disabled"];function Gc(e,t){let o=Ye("quota-usage"),i=Pe("field"),s=Pe("form");return l(),d("div",y6,[n("div",b6,[n("div",w6,[n("div",k6,[n("div",null,[n("div",C6,[t[27]||(t[27]=n("h1",{class:"paper-page-title"},"My work",-1)),!e.loading&&e.isPlainView()?(l(),d("span",E6,[g(c(e.fmt?.number(e.dashboardTotals?.filtered??e.filteredItems?.length))+" project",1),(e.dashboardTotals?.filtered??e.filteredItems?.length)!==1?(l(),d("span",S6,"s")):f("v-if",!0)])):f("v-if",!0)]),t[28]||(t[28]=n("p",{class:"paper-page-lede"},"Manage your anonymous links.",-1))]),n("div",N6,[n("details",{class:"dashboard-quota",open:e.quotaExpanded,onToggle:t[1]||(t[1]=r=>e.quotaExpanded=r.target.open),onKeydown:t[2]||(t[2]=mt(ce(r=>e.closeQuota(),["prevent","stop"]),["esc"]))},[n("summary",{"aria-controls":"dashboard-usage","aria-expanded":e.quotaExpanded,class:T(e.quota?"quota-level-"+e.quota.repository.level:""),style:$e(e.quota&&!e.quota.repository.unlimited?{"--quota-pct":e.quota.repository.percent+"%"}:null)},[(l(),d("svg",{class:T(["quota-summary-ring",e.quota?"quota-"+e.quota.repository.level:""]),viewBox:"0 0 24 24","aria-hidden":"true"},[t[29]||(t[29]=n("circle",{class:"quota-ring-track",cx:"12",cy:"12",r:"9"},null,-1)),e.quota&&!e.quota.repository.unlimited?(l(),d("circle",{key:0,class:"quota-ring-fill",cx:"12",cy:"12",r:"9",pathLength:"100","stroke-dasharray":e.quota.repository.percent+" 100"},null,8,A6)):f("v-if",!0),e.quota?.repository.unlimited?(l(),d("path",T6)):f("v-if",!0)],2)),t[31]||(t[31]=n("span",{class:"quota-summary-label"},"Usage",-1)),e.quota?(l(),d("span",P6,[g(c(e.fmt.number(e.quota.repository.used)),1),e.quota.repository.unlimited?f("v-if",!0):(l(),d("span",O6," / "+c(e.fmt.number(e.quota.repository.total)),1)),t[30]||(t[30]=g(" repos",-1))])):f("v-if",!0),t[32]||(t[32]=n("svg",{class:"project-type-svg quota-summary-chevron","aria-hidden":"true"},[n("use",{href:"#project-icon-chevron"})],-1))],14,D6),n("div",I6,[n("div",_6,[t[34]||(t[34]=n("h2",null,"Account usage",-1)),n("button",{type:"button",class:"project-close","aria-label":"Close usage",onClick:t[0]||(t[0]=r=>e.closeQuota())},[...t[33]||(t[33]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])])]),e.quota?(l(),sn(o,{key:0,quota:e.quota,fmt:e.fmt},null,8,["quota","fmt"])):(l(),d("p",M6,"Loading usage\u2026"))])],40,R6),t[35]||(t[35]=Ce('New anonymization',1))])]),f(" Result count + active filter chips "),e.loading?f("v-if",!0):(l(),d("div",V6,[e.showViewTabs()?(l(),d("div",q6,[n("button",{type:"button","aria-pressed":e.statusView()==="active",onClick:t[3]||(t[3]=r=>e.setStatusView("active")),title:"Every project except removed links"},"Current",8,$6),e.attentionCount()>0||e.statusView()==="attention"?(l(),d("button",{key:0,type:"button","aria-pressed":e.statusView()==="attention",onClick:t[4]||(t[4]=r=>e.setStatusView("attention")),"aria-label":"Needs attention "+e.attentionCount()},[t[36]||(t[36]=n("span",{class:"dashboard-attention-prefix"},"Needs ",-1)),t[37]||(t[37]=n("span",null,"attention",-1)),t[38]||(t[38]=g()),n("span",{class:T(["attention-count",{"has-attention":e.attentionCount()>0}])},c(e.attentionCount()),3)],8,L6)):f("v-if",!0),e.removedCount>0||e.statusView()==="removed"||e.removedCount==null&&e.dashboardTotals?.total>e.dashboardTotals?.filtered?(l(),d("button",{key:1,type:"button","aria-pressed":e.statusView()==="removed",onClick:t[5]||(t[5]=r=>e.setStatusView("removed")),"aria-label":"Removed "+(e.removedCount??""),title:"Links reviewers can no longer open"},[t[39]||(t[39]=g("Removed ",-1)),e.removedCount!=null?(l(),d("span",F6,c(e.fmt?.number(e.removedCount)),1)):f("v-if",!0)],8,U6)):f("v-if",!0)])):f("v-if",!0),n("span",{class:T(["dashboard-count",{"is-plain":e.isPlainView()}])},[e.isPlainView()?(l(),d("span",B6,[g(c(e.fmt?.number(e.dashboardTotals?.filtered??e.filteredItems?.length))+" project",1),(e.dashboardTotals?.filtered??e.filteredItems?.length)!==1?(l(),d("span",z6,"s")):f("v-if",!0)])):(l(),d("span",H6,c(e.fmt?.number(e.dashboardTotals?.filtered??e.filteredItems?.length))+" shown",1))],2)])),f(" Search + filters "),P((l(),d("form",{class:"w-100 dashboard-filter-row","aria-label":"Filter anonymizations","accept-charset":"UTF-8",onSubmit:t[13]||(t[13]=ce(r=>e.submitForm(r,()=>{r.preventDefault()}),["prevent"]))},[n("div",j6,[P(n("input",G6,null,512),[[i,{state:e.viewState,set:r=>{e.search=r},value:e.search,form:null,options:{}}]])]),n("button",{class:"btn dashboard-filters-toggle",type:"button","aria-expanded":e.filtersExpanded,"aria-controls":"dashboard-filter-controls",onClick:t[6]||(t[6]=r=>e.filtersExpanded=!e.filtersExpanded)},[...t[40]||(t[40]=[g("Filters",-1),n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-filter"})],-1)])],8,W6),n("div",{id:"dashboard-filter-controls",class:T(["dashboard-filter-controls",{expanded:e.filtersExpanded}])},[n("div",K6,[n("button",{type:"button",class:T(["btn",{"btn-primary":e.typeFilter==="all"}]),onClick:t[7]||(t[7]=r=>e.typeFilter="all"),"aria-pressed":e.typeFilter==="all"},"All",10,Y6),n("button",{type:"button",class:T(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="repo"}]),title:"Repositories",onClick:t[8]||(t[8]=r=>e.typeFilter="repo"),"aria-pressed":e.typeFilter==="repo"},[...t[41]||(t[41]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-type-repo"})],-1),n("span",{class:"type-filter-label"},"Repos",-1)])],10,X6),n("button",{type:"button",class:T(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="pr"}]),title:"Pull requests",onClick:t[9]||(t[9]=r=>e.typeFilter="pr"),"aria-pressed":e.typeFilter==="pr"},[...t[42]||(t[42]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-type-pr"})],-1),n("span",{class:"type-filter-label"},"PRs",-1)])],10,J6),n("button",{type:"button",class:T(["btn dashboard-type-filter",{"btn-primary":e.typeFilter==="gist"}]),title:"Gists",onClick:t[10]||(t[10]=r=>e.typeFilter="gist"),"aria-pressed":e.typeFilter==="gist"},[...t[43]||(t[43]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-type-gist"})],-1),n("span",{class:"type-filter-label"},"Gists",-1)])],10,Q6)]),n("div",{id:"dashboard-extra-filters",class:T(["dashboard-extra-filters",{expanded:e.filtersExpanded}])},[n("div",Z6,[n("button",x6,[t[45]||(t[45]=n("span",{class:"filter-btn-label"},"Sort",-1)),n("span",eV,c(e.sortLabel()),1),(l(),d("svg",{class:T(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[44]||(t[44]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)),n("span",tV,c(e.sortDesc()?"descending":"ascending"),1)]),n("div",nV,[t[46]||(t[46]=n("h6",{class:"dropdown-header"},"Order by",-1)),(l(!0),d(L,null,ie(e.sortFields,(r,a,u)=>(l(),d("div",oV,[n("input",{class:"form-check-input",type:"radio",name:"sort",onClick:p=>e.setSort(a,r.defaultDesc),checked:e.isSortedBy(a),id:"sort-"+u},null,8,sV),n("label",{class:"form-check-label",for:"sort-"+u},c(r?.label),9,iV)]))),256)),t[47]||(t[47]=n("div",{class:"dropdown-divider"},null,-1)),n("button",{type:"button",class:"dropdown-item",onClick:t[11]||(t[11]=r=>e.toggleSortDirection())},c(e.sortDesc()?"Switch to ascending":"Switch to descending"),1)])]),n("div",{class:T(["dropdown dashboard-status-filter",{"is-view-hidden":e.statusView()==="removed"}]),inert:e.statusView()==="removed"?!0:null},[n("button",aV,[t[48]||(t[48]=n("span",{class:"filter-btn-label"},"Status",-1)),n("span",lV,c(e.statusChipKeys().length===0?"Any":e.statusChipKeys().length===1?"Hiding "+(e.statusKeyLabels[e.statusChipKeys()[0]]||"").toLowerCase():e.statusChipKeys().length+" hidden"),1)]),n("div",dV,[t[49]||(t[49]=n("h6",{class:"dropdown-header"},"Show statuses",-1)),n("button",{type:"button",class:T(["dropdown-item status-preset",{active:e.statusChipKeys().length===0}]),onClick:t[12]||(t[12]=r=>e.statusChipKeys().forEach(a=>{e.filters.status[a]=!0}))},"Any status",2),t[50]||(t[50]=n("div",{class:"dropdown-divider"},null,-1)),(l(!0),d(L,null,ie(e.statusKeyLabels,(r,a,u)=>(l(),d(L,{key:a},[a!=="removed"?(l(),d("div",uV,[P(n("input",{class:"form-check-input",type:"checkbox",id:"status-"+a},null,8,cV),[[i,{state:e.viewState,set:p=>{e.filters.status[a]=p},value:e.filters?.status[a],form:null,options:{}}]]),n("label",{class:"form-check-label",for:"status-"+a},c(r),9,pV)])):f("v-if",!0)],64))),128))])],10,rV)],2)],2)],32)),[[s,e.viewState]]),!e.loading&&e.showClearFilters()?(l(),d("div",fV,[(l(!0),d(L,null,ie(e.statusChipKeys(),r=>(l(),d("button",{key:r,type:"button",class:"filter-chip",onClick:a=>e.filters.status[r]=!0,"aria-label":"Show "+e.statusKeyLabels[r]+" again",title:"Show "+e.statusKeyLabels[r]+" again"},[g("Hiding "+c((e.statusKeyLabels[r]||"").toLowerCase()),1),t[51]||(t[51]=n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1))],8,hV))),128)),e.typeFilter!=="all"?(l(),d("button",{key:0,type:"button",class:"filter-chip",onClick:t[14]||(t[14]=r=>e.typeFilter="all"),"aria-label":"Show all project types"},[g(c(e.typeFilter==="repo"?"Repositories":e.typeFilter==="pr"?"Pull requests":"Gists"),1),t[52]||(t[52]=n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1))])):f("v-if",!0),e.showClearFilters()?(l(),d("button",{key:1,type:"button",class:"btn-link-inline",onClick:t[15]||(t[15]=r=>e.clearFilters())},"Clear filters")):f("v-if",!0)])):f("v-if",!0)]),f(" Table "),n("div",{class:T(["paper-table paper-table-dashboard",{"is-removed-view":e.statusView()==="removed"}]),role:"table","aria-label":"Anonymizations","aria-busy":e.loading},[n("div",gV,[n("div",{role:"columnheader","aria-sort":e.isSortedBy("_label")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:T(["sortable",{active:e.isSortedBy("_label")}]),onClick:t[16]||(t[16]=r=>e.setSort("_label"))},[t[54]||(t[54]=g(" Project ",-1)),e.isSortedBy("_label")?(l(),d("svg",{key:0,class:T(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[53]||(t[53]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)],8,vV),n("div",{role:"columnheader","aria-sort":e.isSortedBy("status")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:T(["sortable",{active:e.isSortedBy("status")}]),onClick:t[17]||(t[17]=r=>e.setSort("status"))},[t[56]||(t[56]=g(" Status ",-1)),e.isSortedBy("status")?(l(),d("svg",{key:0,class:T(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[55]||(t[55]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)],8,yV),n("div",{role:"columnheader",class:"num","aria-sort":e.isSortedBy("pageView")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:T(["sortable",{active:e.isSortedBy("pageView")}]),onClick:t[18]||(t[18]=r=>e.setSort("pageView"))},[t[58]||(t[58]=g(" Views ",-1)),e.isSortedBy("pageView")?(l(),d("svg",{key:0,class:T(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[57]||(t[57]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)],8,bV),n("div",{role:"columnheader","aria-sort":e.isSortedBy("options.expirationDate")?e.sortDesc()?"descending":"ascending":"none"},[n("button",{type:"button",class:T(["sortable",{active:e.isSortedBy("options.expirationDate")}]),onClick:t[19]||(t[19]=r=>e.setSort("options.expirationDate"))},[t[60]||(t[60]=g(" Expires ",-1)),e.isSortedBy("options.expirationDate")?(l(),d("svg",{key:0,class:T(["project-type-svg sort-direction",{ascending:!e.sortDesc()}]),"aria-hidden":"true"},[...t[59]||(t[59]=[n("use",{href:"#project-icon-arrow"},null,-1)])],2)):f("v-if",!0)],2)],8,wV),t[61]||(t[61]=n("div",{role:"columnheader",class:"col-link"},[n("span",{class:"sr-only"},"Actions")],-1))]),f(" Loading skeleton: keeps the layout stable while the three lists load "),(l(),d(L,null,ie([1,2,3,4],(r,a)=>(l(),d(L,null,[e.loading?(l(),d("div",kV,[...t[62]||(t[62]=[n("div",{class:"cell-anon",role:"cell"},[n("span",{class:"skeleton skeleton-badge"}),n("div",{class:"anon-text"},[n("span",{class:"skeleton skeleton-line",style:{width:"38%"}}),n("span",{class:"skeleton skeleton-line skeleton-line-sm",style:{width:"56%"}})])],-1),n("div",{class:"cell-status",role:"cell"},[n("span",{class:"skeleton skeleton-line",style:{width:"60%"}})],-1),n("div",{class:"cell-views num",role:"cell"},[n("span",{class:"skeleton skeleton-line",style:{width:"40%"}})],-1),n("div",{class:"cell-expires",role:"cell"},[n("span",{class:"skeleton skeleton-line",style:{width:"55%"}})],-1),n("div",{class:"cell-actions",role:"cell"},null,-1)])])):f("v-if",!0)],64))),64)),(l(!0),d(L,null,ie(e.filteredItems,(r,a)=>(l(),d(L,{key:r?._type+":"+(r?._id||a)},[e.loading?f("v-if",!0):(l(),d("div",{key:0,class:T(["paper-table-row",{"repo-inactive":r?._statusKey=="expired"||r?._statusKey=="removed","repo-error":r?.status=="error","row-clickable":!!r?._viewUrl}]),role:"row",onClick:u=>e.openItem(r,u)},[n("div",EV,[n("span",{class:"project-type-icon",role:"img","aria-label":r?._type==="repo"?"Repository":r?._type==="pr"?"Pull request":"Gist",title:r?._type==="repo"?"Repository":r?._type==="pr"?"Pull request":"Gist"},[(l(),d("svg",NV,[n("use",{href:"#project-type-"+r._type},null,8,RV)]))],8,SV),n("div",DV,[n("div",AV,[r?._viewUrl?(l(),d("a",{key:0,class:"repo-name",title:r._label,href:e.safeUrl(r?._viewUrl)},[(r?._label||"").indexOf("/")>0?(l(),d(L,{key:0},[n("span",PV,c(r._label.slice(0,r._label.indexOf("/")+1)),1),t[63]||(t[63]=n("wbr",null,null,-1)),n("span",OV,c(r._label.slice(r._label.indexOf("/")+1)),1)],64)):(l(),d(L,{key:1},[g(c(r?._label),1)],64))],8,TV)):f("v-if",!0),r?._viewUrl?f("v-if",!0):(l(),d("span",IV,[(r?._label||"").indexOf("/")>0?(l(),d(L,{key:0},[n("span",_V,c(r._label.slice(0,r._label.indexOf("/")+1)),1),t[64]||(t[64]=n("wbr",null,null,-1)),n("span",MV,c(r._label.slice(r._label.indexOf("/")+1)),1)],64)):(l(),d(L,{key:1},[g(c(r?._label),1)],64))])),r?.role==="coauthor"?(l(),d("span",VV,"Co-author")):f("v-if",!0)]),r?._id||r?._type==="repo"&&r?.source?.commit||r?.conference?(l(),d("div",qV,[r?._id?(l(),d("code",{key:0,class:"anonymous-id",title:r._id},[r._id.length>14?(l(),d(L,{key:0},[n("span",LV,c(r._id.slice(0,-6)),1),n("span",UV,c(r._id.slice(-6)),1)],64)):(l(),d(L,{key:1},[g(c(r._id),1)],64))],8,$V)):f("v-if",!0),r?._type==="repo"&&r?.source?.commit?(l(),d("span",{key:1,class:"commit-hash",title:r.source.commit},c(r.source.commit.substring(0,7)),9,FV)):f("v-if",!0),r?.conference?(l(),d("span",{key:2,class:"cell-conf conf-tag",title:"Conference: "+r.conference},[t[65]||(t[65]=n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),n("span",{class:"conf-name",textContent:c(r?.conference)},null,8,zV)],8,BV)):f("v-if",!0)])):f("v-if",!0)])]),n("div",HV,[n("div",jV,[n("div",GV,[n("span",{class:T(["status-dot","status-"+r?._statusKey]),"aria-hidden":"true"},null,2),n("span",{class:"status-word",textContent:c(e.fmt?.statusLabel(r?.status))},null,8,WV),r?.status=="removed"?(l(),d(L,{key:0},[t[66]||(t[66]=n("span",{class:"seg-sep status-removed-sep","aria-hidden":"true"},"\xB7",-1)),n("button",{type:"button",class:"project-attention-action status-enable",onClick:ce(u=>e.refreshItem(r),["stop"]),title:"Reviewers can no longer open this link"},"Enable again",8,KV)],64)):f("v-if",!0)]),r?.status=="error"&&r?.statusMessage?(l(),d("div",{key:0,class:"status-sub status-sub-error",textContent:c(e.fmt?.statusMsg(r?.statusMessage)),title:r?.statusMessage},null,8,YV)):f("v-if",!0),r?._stale?(l(),d("div",{key:1,class:"status-sub status-sub-warn",title:"Last activity "+e.fmt?.humanTime(r?.anonymizeDate||r?.lastView)},c(e.idleText(r)),9,XV)):f("v-if",!0),r.status==="error"&&r._editUrl?(l(),d("a",{key:2,class:"project-attention-action",href:e.safeUrl(r._editUrl)},"Fix source",8,JV)):f("v-if",!0),r._stale||r._broken?(l(),d("div",QV,[r._stale&&!r._broken?(l(),d("span",ZV,[...t[67]||(t[67]=[g("May be stuck",-1),n("span",{"aria-hidden":"true"}," \xB7 ",-1)])])):f("v-if",!0),r._stale||r._broken?(l(),d("button",{key:1,type:"button",class:"project-attention-action",onClick:ce(u=>e.showProjectDetails(r),["stop"]),"data-project-actions":r._broken?encodeURIComponent(r._type+":"+r._id):null,"aria-controls":r._broken?e.projectDetailsId(r):null,"aria-expanded":r._broken?e.selectedProject===r:null},c(r._broken?"Review details":"Check progress"),9,xV)):f("v-if",!0)])):f("v-if",!0),r?.status=="expired"?(l(),d("button",{key:4,type:"button",class:"project-attention-action",onClick:ce(u=>e.extendItem(r),["stop"]),title:"Reviewers can no longer open this link"},"Extend 6 months",8,eq)):f("v-if",!0),r?.status=="removed"&&r?.anonymizeDate?(l(),d("div",tq,"anonymized "+c(e.fmt?.humanTime(r?.anonymizeDate)),1)):f("v-if",!0),r?.status!="error"&&r?.status!="expired"&&r?.status!="removed"&&!r?._stale&&r?.anonymizeDate?(l(),d("div",nq," anonymized "+c(e.fmt?.humanTime(r?.anonymizeDate)),1)):f("v-if",!0)]),n("div",{class:"cell-views num",role:"cell","data-unit":r.pageView===1?"view":"views","aria-label":e.fmt.number(r.pageView)+(r.pageView===1?" view":" views")},[t[68]||(t[68]=n("svg",{class:"project-type-svg mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),n("span",null,c(e.fmt.number(r.pageView)),1)],8,oq),n("div",sq,[t[72]||(t[72]=n("svg",{class:"project-type-svg mobile-meta-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),r?._expiry?.kind==="never"?(l(),d("span",iq,"No expiry")):f("v-if",!0),r?._expiry?.kind==="date"&&!r?._expiry?.soon?(l(),d("span",{key:1,textContent:c((e.fmt?.humanTime(r?._expiry?.date)||"").replace(/^on /,""))},null,8,rq)):f("v-if",!0),r?._expiry?.kind==="date"&&r?._expiry?.soon?(l(),d("span",{key:2,class:"expires-soon",title:"Expires "+e.fmt?.humanTime(r?._expiry?.date)},[t[69]||(t[69]=n("svg",{class:"project-type-svg expires-soon-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[70]||(t[70]=n("span",{class:"expires-soon-prefix"},"Expires ",-1)),g(c(r._expiry.soon),1)],8,aq)):f("v-if",!0),r?._expiry?.kind==="expired"&&r?._expiry?.date?(l(),d("span",lq,[t[71]||(t[71]=n("span",{class:"expires-past-prefix"},"Expired ",-1)),g(c(r?._expiry?.label||e.fmt?.humanTime(r?._expiry?.date)),1)])):f("v-if",!0),r?._expiry?.kind==="expired"&&!r?._expiry?.date?(l(),d("span",dq,"Expired")):f("v-if",!0),r?._expiry?.kind==="none"?(l(),d("span",uq,"\u2014")):f("v-if",!0)])]),n("div",cq,[r._viewUrl&&!(r?._statusKey=="expired"||r?._statusKey=="removed")?(l(),d("button",{key:0,type:"button",class:"copy-url",onClick:ce(u=>e.copyLink(r),["stop"]),disabled:!!e.copyingId,title:"Copy link: "+r._viewUrl,"aria-label":"Copy anonymous link for "+r._label},[n("span",fq,c(e.copyingId===r._type+":"+r._id?"Link copied":""),1),(l(),d("svg",hq,[n("use",{href:e.copyingId===r._type+":"+r._id?"#ui-icon-check":"#project-icon-copy"},null,8,mq)])),n("span",gq,c(e.copyingId===r._type+":"+r._id?"Copied":"Copy link"),1)],8,pq)):f("v-if",!0),r._viewUrl&&!(r?._statusKey=="expired"||r?._statusKey=="removed")?(l(),d("a",{key:1,class:"row-edit row-open",href:e.safeUrl(r._viewUrl),target:"_blank",rel:"noopener",title:"Open what reviewers see","aria-label":"Open anonymous page for "+r._label},[...t[73]||(t[73]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])],8,vq)):f("v-if",!0),r?._editUrl&&!r?._broken&&r?._statusKey!="removed"?(l(),d("a",{key:2,class:"row-edit",href:e.safeUrl(r._editUrl),title:"Edit "+r._name,"aria-label":"Edit "+r._name},[...t[74]||(t[74]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1)])],8,yq)):f("v-if",!0),!(r._viewUrl&&!(r?._statusKey=="expired"||r?._statusKey=="removed"))&&r?._statusKey!="removed"&&r?._statusKey!="expired"?(l(),d("button",{key:3,type:"button",class:"copy-url is-disabled","aria-disabled":"true",onClick:t[20]||(t[20]=ce(()=>{},["stop"])),title:r?._statusKey=="expired"?"Link expired: reviewers can no longer open it":r?._statusKey=="removed"?"Link offline: reviewers can no longer open it":"No link: this record is incomplete","aria-label":"Copy link unavailable for "+r._label},[...t[75]||(t[75]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-copy"})],-1),n("span",{class:"copy-url-label","aria-hidden":"true"},"Copy link",-1)])],8,bq)):f("v-if",!0),!(r._viewUrl&&!(r?._statusKey=="expired"||r?._statusKey=="removed"))&&r?._statusKey!="removed"&&r?._statusKey!="expired"?(l(),d("button",{key:4,type:"button",class:"row-edit row-open is-disabled","aria-disabled":"true",onClick:t[21]||(t[21]=ce(()=>{},["stop"])),title:r?._statusKey=="expired"?"Link expired: reviewers can no longer open it":r?._statusKey=="removed"?"Link offline: reviewers can no longer open it":"No link: this record is incomplete","aria-label":"Open unavailable for "+r._label},[...t[76]||(t[76]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-external-link"})],-1)])],8,wq)):f("v-if",!0),r?._editUrl&&!r?._broken?f("v-if",!0):(l(),d("button",{key:5,type:"button",class:"row-edit is-disabled","aria-disabled":"true",onClick:t[22]||(t[22]=ce(()=>{},["stop"])),title:"Can't edit: this record is incomplete","aria-label":"Edit unavailable for "+r._label},[...t[77]||(t[77]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1)])],8,kq)),r?._broken?(l(),d("div",Cq,[n("button",{type:"button",class:"btn btn-icon-dots is-disabled","aria-disabled":"true",onClick:t[23]||(t[23]=ce(()=>{},["stop"])),title:"No actions: this record is incomplete. Use Review details.","aria-label":"No actions available for "+r._label},[...t[78]||(t[78]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})],-1)])],8,Eq)])):f("v-if",!0),r?._broken?f("v-if",!0):(l(),d("div",Sq,[n("button",{class:"btn btn-icon-dots",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","data-project-actions":encodeURIComponent(r._type+":"+r._id),"aria-label":"Actions for "+r?._name},[...t[79]||(t[79]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-more"})],-1)])],8,Nq),n("div",Rq,[n("button",{type:"button",class:"dropdown-item",onClick:u=>e.showProjectDetails(r),"aria-controls":e.projectDetailsId(r),"aria-expanded":e.selectedProject===r},"Project details & name",8,Dq),n("a",{class:"dropdown-item",href:e.safeUrl(r?._viewUrl)}," View ",8,Aq),r?._type==="repo"&&r?.options?.page&&r?.status=="ready"?(l(),d("a",{key:0,class:"dropdown-item",target:"_self",href:e.safeUrl("/w/"+r?.repoId+"/")}," View page ",8,Tq)):f("v-if",!0),r?._viewUrl?(l(),d("button",{key:1,type:"button",class:"dropdown-item",onClick:u=>e.copyLink(r),disabled:!!e.copyingId}," Copy anonymous link ",8,Pq)):f("v-if",!0),n("a",{class:"dropdown-item",href:e.safeUrl(r?._editUrl)}," Edit ",8,Oq),r?.status=="ready"||r?.status=="error"?(l(),d("button",{key:2,type:"button",class:"dropdown-item",onClick:u=>e.refreshItem(r)}," Force update ",8,Iq)):f("v-if",!0),r?.status=="removed"?(l(),d("button",{key:3,type:"button",class:"dropdown-item",onClick:u=>e.refreshItem(r)}," Enable ",8,_q)):f("v-if",!0),r?.status=="expired"?(l(),d("button",{key:4,type:"button",class:"dropdown-item",onClick:u=>e.extendItem(r)}," Extend 6 months ",8,Mq)):f("v-if",!0),(r?.status=="ready"||r?.status=="expired"||r?.status=="error")&&r?.role!=="coauthor"?(l(),d("div",Vq,[t[80]||(t[80]=n("div",{class:"dropdown-divider"},null,-1)),n("button",{type:"button",class:"dropdown-item dropdown-item-danger",onClick:u=>e.removeItem(r)}," Remove ",8,qq)])):f("v-if",!0)])]))])],10,CV)),!e.loading&&e.selectedProject===r?(l(),d("div",$q,[n("div",{class:"project-details",role:"cell","aria-colspan":"5",id:e.projectDetailsId(r),tabindex:"-1",onKeydown:mt(ce(u=>e.closeProjectDetails(r),["stop"]),["esc"])},[n("div",Uq,[t[82]||(t[82]=n("h2",null,"Project details",-1)),n("button",{type:"button",class:"project-close",onClick:u=>e.closeProjectDetails(r),"aria-label":"Close project details"},[...t[81]||(t[81]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])],8,Fq)]),n("dl",Bq,[n("div",null,[t[83]||(t[83]=n("dt",null,"Source",-1)),n("dd",null,c(r._source||"Not available"),1)]),n("div",null,[t[84]||(t[84]=n("dt",null,"Anonymous ID",-1)),n("dd",null,[n("code",null,c(r._id||"Missing identifier"),1)])]),r.source?.commit?(l(),d("div",zq,[t[85]||(t[85]=n("dt",null,"Commit",-1)),n("dd",null,[n("code",null,c(r.source.commit),1)])])):f("v-if",!0),r.conference?(l(),d("div",Hq,[t[86]||(t[86]=n("dt",null,"Conference",-1)),n("dd",null,c(r.conference),1)])):f("v-if",!0),n("div",null,[t[87]||(t[87]=n("dt",null,"Status",-1)),n("dd",null,[g(c(e.fmt.statusLabel(r.status)),1),r.statusMessage?(l(),d("span",jq," \xB7 "+c(e.fmt.statusMsg(r.statusMessage)),1)):f("v-if",!0)])]),r.anonymizeDate?(l(),d("div",Gq,[t[88]||(t[88]=n("dt",null,"Last anonymized",-1)),n("dd",null,c(e.fmt.humanTime(r.anonymizeDate)),1)])):f("v-if",!0)]),r._stale?(l(),d("p",Wq,"This download has not progressed recently. Check the source access and selected branch before retrying.")):f("v-if",!0),r._editUrl?(l(),d("a",{key:1,class:"project-attention-action",href:e.safeUrl(r._editUrl)},c(e.needsAttention(r)?"Check source settings":"Edit anonymization settings"),9,Kq)):f("v-if",!0),r._id?(l(),d("form",{key:2,class:"project-name-form",onSubmit:ce(u=>e.saveProjectName(r),["prevent"])},[n("label",{for:"project-name-"+r._type+"-"+r._id},"Project name",8,Xq),n("p",{id:"project-name-help-"+r._type+"-"+r._id},"Only you see this name. Leave it blank to use the default.",8,Jq),n("div",Qq,[P(n("input",{class:"form-control",type:"text",id:"project-name-"+r._type+"-"+r._id,"aria-describedby":"project-name-help-"+r._type+"-"+r._id,maxlength:"100","onUpdate:modelValue":t[24]||(t[24]=u=>e.projectName=u),disabled:e.nameSaving},null,8,Zq),[[dt,e.projectName]]),n("button",{class:"btn btn-ink",type:"submit",disabled:e.nameSaving},c(e.nameSaving?"Saving\u2026":"Save name"),9,xq)]),e.nameError?(l(),d("p",e$,c(e.nameError),1)):f("v-if",!0),e.nameMessage?(l(),d("p",t$,c(e.nameMessage),1)):f("v-if",!0)],40,Yq)):f("v-if",!0)],40,Lq)])):f("v-if",!0)],64))),128)),!e.loading&&e.filteredItems?.length==0?(l(),d("div",n$,[t[90]||(t[90]=n("svg",{class:"project-type-svg project-empty-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1)),e.hasProjects()?f("v-if",!0):(l(),d("span",o$,"You have no anonymizations yet.")),e.hasProjects()?(l(),d("span",s$,"Nothing matches the current filters.")):f("v-if",!0),n("div",i$,[e.hasActiveFilters()?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[25]||(t[25]=r=>e.clearFilters())},"Clear filters")):f("v-if",!0),e.hasProjects()?f("v-if",!0):(l(),d("a",r$,[...t[89]||(t[89]=[n("svg",{class:"project-type-svg","aria-hidden":"true"},[n("use",{href:"#project-icon-plus"})],-1),g(" New anonymization",-1)])]))])])):f("v-if",!0)],10,mV)]),e.dashboardCursor||e.dashboardError?(l(),d("div",a$,[e.dashboardError?(l(),d("p",l$,c(e.dashboardError),1)):f("v-if",!0),e.dashboardCursor?(l(),d("button",{key:1,type:"button",class:"btn",onClick:t[26]||(t[26]=r=>e.loadMoreProjects()),disabled:e.loadingMore},c(e.loadingMore?"Loading\u2026":"Load more projects"),9,d$)):f("v-if",!0)])):f("v-if",!0)])}var u$={class:"viewer-bar"},c$={class:"vb-left"},p$=["aria-label","title"],f$=["href","title"],h$={class:"vb-artifact-id"},m$={class:"vb-right"},g$=["title"],v$={class:"vb-help"},y$=["aria-expanded"],b$={key:0,class:"acct-menu vb-help-menu",role:"menu"},w$=["aria-label","title"],k$={class:"ui-icon","aria-hidden":"true"},C$=["href"],E$={key:1,class:"acct"},S$=["aria-label","aria-expanded"],N$=["src"],R$={key:1,class:"acct-initial"},D$={key:0,class:"acct-menu",role:"menu"},A$={class:"acct-menu-head"},T$={key:2,class:"vb-signin",href:"/signin",target:"_self"},P$={key:0,class:"vb-context"},O$=["href","title"],I$={key:0,class:"vb-context-date"},_$=["aria-label"],M$={class:"ui-icon","aria-hidden":"true"},V$=["href"],q$=["textContent"],$$={class:"leftCol-head"},L$={class:"leftCol-search"},U$={class:"tree-search-box"},F$=["href"],B$={type:"text",class:"tree-search-input",placeholder:"Search files","aria-label":"Search files"},z$=["title","href"],H$={class:"leftCol-body"},j$={key:0,class:"paper-inline-warning",role:"alert"},G$={key:1,class:"paper-inline-warning",role:"alert"},W$={class:"explorer-main"},K$={class:"breadcrumb paths","aria-label":"Path"},Y$={class:"breadcrumb-item breadcrumb-root"},X$=["href","title","textContent"],J$=["aria-current","textContent"],Q$=["aria-label","title"],Z$={class:"ui-icon","aria-hidden":"true"},x$=["href"],eL={class:"status-bar-actions"},tL=["href"],nL={class:"d-none d-md-inline"},oL={class:"ui-icon","aria-hidden":"true"},sL=["href"],iL={class:"d-none d-md-inline"},rL=["href"],aL={class:"explorer-content"};function Wc(e,t){let o=Ye("tree"),i=Ye("partial-view"),s=Pe("field");return l(),d("div",{class:T(["explorer-page",{"files-hidden":e.sidebarHidden}]),style:$e({"--sidebar-w":e.sidebarWidth+"px"})},[n("header",u$,[n("div",c$,[t[15]||(t[15]=n("a",{class:"vb-logo",href:"/"},[g("Anonymous "),n("em",null,"GitHub")],-1)),n("button",{type:"button",class:"vb-icon vb-sidebar","aria-label":e.sidebarHidden?"Show file tree":"Hide file tree",title:e.sidebarHidden?"Show file tree":"Hide file tree",onClick:t[0]||(t[0]=r=>e.sidebarHidden=!e.sidebarHidden)},[...t[13]||(t[13]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-sidebar"})],-1)])],8,p$),e.repoId?(l(),d("a",{key:0,class:"vb-artifact",href:e.safeUrl("/r/"+e.repoId+"/"),title:"Anonymous artifact "+e.repoId},[t[14]||(t[14]=n("span",{class:"sr-only"},"Artifact ",-1)),n("span",h$,c(e.repoId),1)],8,f$)):f("v-if",!0)]),n("div",m$,[e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate?(l(),d("span",{key:0,class:"vb-snapshot",title:(e.options?.expirationDate?"Available until "+e.fmt?.date(e.options.expirationDate)+". ":"")+(e.options?.anonymizedAt&&!e.options?.publishedAt?"Older repositories have no recorded publication date. The source commit date does not establish when files became available here.":(e.options?.sourceCommitDate?"Source commit ":e.options?.anonymizedAt?"Anonymized ":"Updated ")+e.fmt?.date(e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate)+(e.options?.publishedAt?" \xB7 snapshot ready "+e.fmt?.date(e.options.publishedAt):""))},[t[16]||(t[16]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[17]||(t[17]=n("span",null,"Snapshot",-1)),n("span",null,c(e.fmt?.date(e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate)),1)],8,g$)):f("v-if",!0),t[25]||(t[25]=n("a",{class:"vb-support",href:"https://ko-fi.com/tdurieux",target:"_blank",rel:"noopener",title:"Support Anonymous GitHub \u2014 help keep it free for researchers"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-heart"})]),n("span",null,"Support")],-1)),n("div",v$,[n("button",{type:"button",class:"vb-help-btn","aria-haspopup":"true","aria-expanded":e.helpOpen?"true":"false",onClick:t[1]||(t[1]=ce(r=>e.helpOpen=!e.helpOpen,["stop"]))},[...t[18]||(t[18]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-help"})],-1),n("span",null,"Help",-1)])],8,y$),e.helpOpen?(l(),d("div",b$,[...t[19]||(t[19]=[n("a",{role:"menuitem",href:"/faq"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-help"})]),n("span",null,[g("FAQ"),n("small",null,"How anonymization works")])],-1),n("a",{role:"menuitem",href:"https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml",target:"_blank",rel:"noopener"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-bug"})]),n("span",null,[g("Report a bug"),n("small",null,"About this service, not the paper")])],-1)])])):f("v-if",!0)]),n("button",{type:"button",class:"vb-icon","aria-label":e.isDarkMode?"Switch to light mode":"Switch to dark mode",title:e.isDarkMode?"Light mode":"Dark mode",onClick:t[2]||(t[2]=r=>e.darkMode(!e.isDarkMode))},[(l(),d("svg",k$,[n("use",{href:e.isDarkMode?"#ui-icon-sun":"#ui-icon-moon"},null,8,C$)]))],8,w$),e.user?(l(),d("div",E$,[n("button",{type:"button",class:"acct-chip","aria-haspopup":"true","aria-label":"Account: "+e.user?.username,"aria-expanded":e.accountOpen?"true":"false",onClick:t[3]||(t[3]=ce(r=>e.accountOpen=!e.accountOpen,["stop"]))},[e.user?.photo?(l(),d("img",{key:0,src:e.safeUrl(e.user.photo),alt:"",width:"26",height:"26"},null,8,N$)):(l(),d("span",R$,c((e.user?.username||"?").charAt(0).toUpperCase()),1))],8,S$),e.accountOpen?(l(),d("div",D$,[n("div",A$,[t[20]||(t[20]=g("Signed in as ",-1)),n("b",null,"@"+c(e.user?.username),1)]),t[21]||(t[21]=n("a",{role:"menuitem",href:"/dashboard"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-grid"})]),g("My work")],-1)),t[22]||(t[22]=n("a",{role:"menuitem",href:"/profile"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})]),g("Settings")],-1)),t[23]||(t[23]=n("a",{role:"menuitem",href:"/api/user/logout",target:"_self"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-logout"})]),g("Sign out")],-1))])):f("v-if",!0)])):(l(),d("a",T$,[...t[24]||(t[24]=[n("i",{class:"fab fa-github","aria-hidden":"true"},null,-1),g("Sign in",-1)])]))])]),e.repoId?(l(),d("div",P$,[n("a",{class:"vb-context-id",href:e.safeUrl("/r/"+e.repoId+"/"),title:"Anonymous artifact "+e.repoId},c(e.repoId),9,O$),e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate?(l(),d("span",I$,"Snapshot "+c(e.fmt?.date(e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate)),1)):f("v-if",!0)])):f("v-if",!0),P(n("button",{class:"sidebar-toggle",onClick:t[4]||(t[4]=r=>e.sidebarCollapsed=!e.sidebarCollapsed),"aria-label":e.sidebarCollapsed?"Show files":"Hide files"},[(l(),d("svg",M$,[n("use",{href:e.sidebarCollapsed?"#ui-icon-folder":"#project-icon-close"},null,8,V$)])),n("span",{textContent:c(e.sidebarCollapsed?"Files":"Close")},null,8,q$)],8,_$),[[ee,e.files?.length]]),P(n("div",{class:T(["leftCol",{collapsed:e.sidebarCollapsed}])},[n("div",$$,[t[27]||(t[27]=n("span",{class:"leftCol-eyebrow"},"Files",-1)),n("button",{class:"leftCol-close","aria-label":"Close files",onClick:t[5]||(t[5]=r=>e.sidebarCollapsed=!0)},[...t[26]||(t[26]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-close"})],-1)])])]),n("div",L$,[n("div",U$,[(l(),d("svg",{class:T(["ui-icon tree-search-icon",{"fa-spin":e.fileSearchLoading}]),"aria-hidden":"true"},[n("use",{href:e.fileSearchLoading?"#ui-icon-spinner":"#ui-icon-search"},null,8,F$)],2)),P(n("input",B$,null,512),[[s,{state:e.viewState,set:r=>{e.fileSearchQuery=r},value:e.fileSearchQuery,form:null,options:{debounce:300},change:()=>{e.onFileSearchChange()}}]]),P(n("kbd",{class:"tree-search-kbd"},c(e.isMac?"\u2318":"Ctrl+")+"K",513),[[ee,!e.fileSearchQuery]]),P(n("button",{class:"tree-search-clear","aria-label":"Clear search",onClick:t[6]||(t[6]=r=>{e.fileSearchQuery="",e.onFileSearchChange()})},"\xD7",512),[[ee,e.fileSearchQuery]])]),e.options?.download?(l(),d("a",{key:0,target:"_self",class:"search-zip","aria-label":"Download repository as ZIP",title:"Download the repository (snapshot "+e.fmt?.date(e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate)+") as ZIP",href:e.safeUrl("/api/repo/"+e.repoId+"/zip")},[...t[28]||(t[28]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1),n("span",{class:"search-zip-label","aria-hidden":"true"},"ZIP",-1)])],8,z$)):f("v-if",!0)]),n("div",H$,[e.options?.truncatedFolders?.length>0?(l(),d("div",j$,[t[29]||(t[29]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),g(" "+c(e.fmt?.translate("WARNINGS.repo_truncated")),1)])):f("v-if",!0),e.options?.hasSubmodules?(l(),d("div",G$,[t[30]||(t[30]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),g(" "+c(e.fmt?.translate("WARNINGS.submodules_not_included")),1)])):f("v-if",!0),Me(o,{class:"files",file:e.files,"search-query":e.fileSearchQuery,"search-results":e.fileSearchResults,page:e.viewState},null,8,["file","search-query","search-results","page"])])],2),[[ee,e.files?.length]]),P(n("div",{class:"leftCol-resizer",role:"separator","aria-orientation":"vertical","aria-label":"Resize file tree",title:"Drag to resize",onPointerdown:t[7]||(t[7]=r=>e.startSidebarResize(r))},null,544),[[ee,e.files?.length&&!e.sidebarHidden]]),P(n("div",{class:"leftCol-backdrop",onClick:t[8]||(t[8]=r=>e.sidebarCollapsed=!0)},null,512),[[ee,e.files?.length&&!e.sidebarCollapsed]]),n("div",W$,[P(n("div",{class:T(["status-bar",{"is-redundant":["code","text","html"].includes(e.type)&&e.content!=null||e.fileFrame()}])},[P(n("button",{type:"button",class:"btn btn-sm status-files-btn","aria-label":"Show files",title:"Show files",onClick:t[9]||(t[9]=r=>e.sidebarHidden?e.sidebarHidden=!1:e.sidebarCollapsed=!1)},[...t[31]||(t[31]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-folder"})],-1),n("span",null,"Files",-1)])],512),[[ee,e.files?.length]]),n("ol",K$,[n("li",Y$,[n("a",{href:e.safeUrl("/r/"+e.repoId+"/"),title:e.repoId,textContent:c(/^[0-9a-f]{8}-[0-9a-f]{4}-/i.test(e.repoId||"")?"repository":e.repoId)},null,8,X$)]),(l(!0),d(L,null,ie(e.paths,(r,a)=>(l(),d("li",{class:"breadcrumb-item","aria-current":a===e.paths.length-1?"page":null,textContent:c(r)},null,8,J$))),256))]),P(n("button",{type:"button",class:"btn btn-sm btn-icon-only btn-ghost copy-path-btn","aria-label":e.pathCopied?"Path copied":"Copy path",title:e.pathCopied?"Path copied":"Copy path",onClick:t[10]||(t[10]=r=>e.copyPath())},[(l(),d("svg",Z$,[n("use",{href:e.pathCopied?"#ui-icon-check":"#project-icon-copy"},null,8,x$)]))],8,Q$),[[ee,e.filePath]]),n("div",eL,[e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[32]||(t[32]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),n("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,tL)):f("v-if",!0),e.type=="html-doc"&&!e.showSource?(l(),d("button",{key:1,class:T(["btn btn-sm",{"btn-active":e.allowScripts}]),"aria-label":"Allow this document to run JavaScript",title:"Scripts in this file are blocked by default. Enable them only if you trust the repository \u2014 the document stays isolated from your session either way.",onClick:t[11]||(t[11]=r=>e.toggleAllowScripts())},[t[33]||(t[33]=n("i",{class:"fab fa-js"},null,-1)),n("span",nL,c(e.allowScripts?"JS on":"JS off"),1)],2)):f("v-if",!0),e.type=="html-doc"?(l(),d("button",{key:2,class:"btn btn-sm","aria-label":"Toggle between the rendered document and its source",title:"Toggle between the rendered document and its source",onClick:t[12]||(t[12]=r=>e.toggleSource())},[(l(),d("svg",oL,[n("use",{href:e.showSource?"#project-icon-eye":"#ui-icon-code"},null,8,sL)])),n("span",iL,c(e.showSource?"Rendered":"Source"),1)])):f("v-if",!0),e.options?.hasWebsite?(l(),d("a",{key:3,target:"_self",class:"btn btn-sm","aria-label":"Website",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[34]||(t[34]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),n("span",{class:"d-none d-md-inline"}," Website",-1)])],8,rL)):f("v-if",!0)])],2),[[ee,e.type!="error"||e.files?.length]]),n("div",aL,[Me(i,{name:"partials/pageView.htm",state:e.viewState},null,8,["state"])])])],6)}var lL={class:"paper-faq"},dL={class:"paper-faq-body"},uL={class:"paper-faq-toc"},cL={class:"faq-search",role:"search"},pL={class:"faq-search-field"},fL={id:"faq-search-status",class:"faq-search-status","aria-live":"polite"},hL={key:0,class:"faq-search-empty"},mL={class:"faq-search-empty-actions"};function Kc(e,t){let o=Ye("partial-view"),i=Pe("paper-scrollspy");return l(),d(L,null,[n("div",lL,[t[12]||(t[12]=n("div",{class:"paper-faq-hero"},[n("div",{class:"paper-faq-eyebrow"},"Help"),n("h1",{class:"paper-faq-title"},[g("Mirrors, redaction, and "),n("em",null,"what reviewers see.")]),n("p",{class:"paper-faq-lede"}," How to set up an anonymous mirror, what it hides, and how long it stays online. ")],-1)),n("div",dL,[P((l(),d("aside",uL,[...t[5]||(t[5]=[Ce('
Contents
',2)])])),[[i]]),n("section",{class:T(["faq-section",{"faq-searching":!!e.faqQuery.trim()}]),"aria-label":"FAQs"},[n("div",cL,[t[7]||(t[7]=n("label",{for:"faq-search-input"},"Search questions",-1)),n("div",pL,[t[6]||(t[6]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)),P(n("input",{id:"faq-search-input",type:"search",class:"form-control","onUpdate:modelValue":t[0]||(t[0]=s=>e.faqQuery=s),onInput:t[1]||(t[1]=s=>e.filterFaq()),onSearch:t[2]||(t[2]=s=>e.filterFaq()),onKeydown:t[3]||(t[3]=mt(s=>e.clearFaqSearch(),["esc"])),placeholder:"e.g. expiry, pull request, PDF",autocomplete:"off",spellcheck:"false","aria-describedby":"faq-search-status"},null,544),[[dt,e.faqQuery]])]),n("p",fL,[e.faqQuery.trim()&&e.faqResults?(l(),d(L,{key:0},[g(c(e.faqResults===1?"1 result":e.faqResults+" results"),1)],64)):f("v-if",!0)])]),e.faqQuery.trim()&&e.faqResults===0?(l(),d("div",hL,[n("strong",null,"No questions match \u201C"+c(e.faqQuery.trim())+"\u201D.",1),t[9]||(t[9]=n("p",null,"Try a shorter word, or ask us directly.",-1)),n("div",mL,[n("button",{type:"button",class:"btn btn-outline-ink btn-sm",onClick:t[4]||(t[4]=s=>e.clearFaqSearch())},"Clear search"),t[8]||(t[8]=n("a",{class:"btn btn-link btn-sm",target:"_blank",rel:"noopener",href:"https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml"},"Open an issue",-1))])])):f("v-if",!0),t[10]||(t[10]=n("div",{class:"faq-list"},[f(" General "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})]),g("General ")]),n("div",{class:"panel-group",id:"faq-general",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingWhatIs"},[n("h3",{class:"panel-title"},[n("a",{role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#whatIs","aria-expanded":"true","aria-controls":"whatIs"}," What is Anonymous GitHub? ")])]),n("div",{id:"whatIs",class:"panel-collapse collapse show",role:"tabpanel","aria-labelledby":"headingWhatIs"},[n("div",{class:"panel-body p-3"},[n("p",null," Anonymous GitHub is an open-source tool with free hosting and optional paid plans that anonymizes GitHub repositories and pull requests for double-anonymous (double-blind) peer review. It replaces identifying information, such as the repository owner, organization name, and custom terms, so that reviewers cannot determine the identity of the authors through the code repository. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingHowWork"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#howWork","aria-expanded":"false","aria-controls":"howWork"}," How does Anonymous GitHub work? ")])]),n("div",{id:"howWork",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingHowWork"},[n("div",{class:"panel-body p-3"},[n("p",null," Anonymous GitHub either downloads the complete repository and anonymizes the content, or proxies requests to GitHub on the fly. In both cases, the original and anonymized versions of files are cached on the server. The system automatically detects and replaces the repository owner, organization name, and repository name. You can also specify additional custom terms to anonymize using one-per-line regex patterns. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingScope"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#scope","aria-expanded":"false","aria-controls":"scope"}," What is the scope of anonymization? ")])]),n("div",{id:"scope",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingScope"},[n("div",{class:"panel-body p-3"},[n("p",null," In double-anonymous peer review, the boundary of anonymization is the paper plus its online appendix, not the entire internet. Searching for any part of the paper or the online appendix can be considered a deliberate attempt to break anonymity. Anonymous GitHub anonymizes the repository owner, organization, repository name, file and directory names, and file contents across all text-based file types. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCost"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-general",href:"#cost","aria-expanded":"false","aria-controls":"cost"}," How much does it cost? ")])]),n("div",{id:"cost",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCost"},[n("div",{class:"panel-body p-3"},[n("p",null," A free account includes 5 owned repositories and 2 GiB of source files. Optional paid plans offer more capacity, automatic refresh, and, with an author subscription, never-expiring repositories. Reviewers can read shared repositories without an account or payment. "),n("p",null,[g(" See "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),g(" for available plans and current prices. Offers depend on whether payments are enabled on this instance; the checkout shows the amount before you pay. Subscriptions help fund hosting, storage, backups, and continued maintenance. ")]),n("p",null,[g(" You can also support development through "),n("a",{href:"https://github.com/sponsors/tdurieux/",target:"_blank",rel:"noopener"},"GitHub Sponsors"),g(" or "),n("a",{href:"https://ko-fi.com/tdurieux",target:"_blank",rel:"noopener"},"Ko-fi"),g(". Donations are separate from subscriptions and do not automatically unlock paid features. ")])])])])]),f(" Plans and billing "),n("h4",{class:"faq-cat",id:"faq-plans-title"},"Plans and billing"),n("div",{class:"panel-group",id:"faq-plans",role:"tablist","aria-label":"Plans and billing","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingWhyPaid"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#whyPaid","aria-expanded":"false","aria-controls":"whyPaid"},"Why is Anonymous GitHub no longer completely free?")])]),n("div",{id:"whyPaid",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingWhyPaid"},[n("div",{class:"panel-body p-3"},[n("p",null,"Anonymous GitHub started as a small free service and was paid for out of pocket. Three things have changed since then:"),n("ul",null,[n("li",null,[n("strong",null,"Servers cost much more."),g(" Every hosted repository needs storage, bandwidth and backups, and these costs have risen sharply.")]),n("li",null,[n("strong",null,"Many more people use it."),g(" More users means more repositories to store and keep up to date, more support requests and more maintenance.")]),n("li",null,[n("strong",null,"AI has made security work heavier."),g(" AI-driven scrapers and automated abuse send far more traffic than before. Blocking them and keeping hosted content safe takes constant work.")])]),n("p",null,"The core service stays free: anonymizing a repository, sharing the link and reviewer access cost nothing, and reviewers never need an account. Most authors never need to pay. The paid options are small one-time payments for one repository, plus an optional subscription for heavy users. They are priced to cover running costs, not to make a profit."),n("p",null,[g("The source code remains open, so you can still "),n("a",{href:"#faq-hosting"},"host your own instance"),g(" for free.")])])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingFreePlan"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#freePlan","aria-expanded":"false","aria-controls":"freePlan"},"What is included in a free account?")])]),n("div",{id:"freePlan",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingFreePlan"},[n("div",{class:"panel-body p-3"},[n("p",null,"The default free allowance is 5 repositories you own and 2 GiB of source files in total. Core anonymization and reviewer access remain free. You can manually refresh a repository within your allowance and choose a dated expiration up to 5 months ahead, then extend it again before it expires. Repositories submitted to a conference can stay online until the end of its review window."),n("p",null,"Repositories shared with you as a co-author do not use your own slots. Gists and pull requests are not included in these repository quotas. The usage shown in your account is the allowance available on this instance.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingAuthorPlans"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#authorPlans","aria-expanded":"false","aria-controls":"authorPlans"},"What do monthly and annual author subscriptions include?")])]),n("div",{id:"authorPlans",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingAuthorPlans"},[n("div",{class:"panel-body p-3"},[n("p",null,[g("Both include 20 owned repositories and 10 GiB of source files in total. They also allow automatic refresh when enabled in repository settings and let the owner choose "),n("strong",null,"Never expire"),g(".")]),n("p",null,[g("Monthly and annual plans offer the same features with different billing periods. They renew automatically until you cancel renewal. Current prices are shown in "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),g(".")]),n("p",null,"Paid plans do not change how anonymization works. File-size limits and other service safeguards still apply. Review your anonymized content before sharing it.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingReviewPass"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#reviewPass","aria-expanded":"false","aria-controls":"reviewPass"},"Can I pay for one repository without subscribing?")])]),n("div",{id:"reviewPass",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingReviewPass"},[n("div",{class:"panel-body p-3"},[n("p",null,"Yes. These one-time add-ons apply to a single repository you own. None of them renews automatically:"),n("ul",null,[n("li",null,[n("strong",null,"Paper pack"),g(": an extra repository, automatic updates for 180 days and one more year before it expires, in a single payment. It covers what one paper usually needs during review.")]),n("li",null,[n("strong",null,"Extra repository"),g(": host one more repository once your free repositories are used up. It has its own 2 GiB allowance and does not count toward your free repositories. It lasts as long as the repository exists.")]),n("li",null,[n("strong",null,"Live updates"),g(": automatic refresh for 180 days, with a separate 2 GiB allowance.")]),n("li",null,[n("strong",null,"Extended expiration"),g(": choose an expiration date up to one year after purchase. Buying it again adds another year.")]),n("li",null,[n("strong",null,"Never expire"),g(": the repository has no expiration date. A full refund or a payment dispute ends it after a 90-day grace period.")])]),n("p",null,[g("When your free allowance is full, the Extra repository and Paper pack options are offered as you create the repository. You can also buy an add-on from the repository's edit page, or enter the anonymized ID of an existing repository in "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),g(". Current prices are shown there.")])])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingConferencePlans"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#conferencePlans","aria-expanded":"false","aria-controls":"conferencePlans"},"Can a conference or lab pay for a group?")])]),n("div",{id:"conferencePlans",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingConferencePlans"},[n("div",{class:"panel-body p-3"},[n("p",null,"A conference review package provides a shared allowance for a review window of up to 180 days, with automatic updates for every submission. It comes in three sizes: Workshop (25 repositories, 10 GiB), Conference (100 repositories, 50 GiB) and Large conference (400 repositories, 200 GiB). Choose the size when you create the conference; it cannot change afterwards. The organizer pays once and authors pay nothing (the price is shown when you create the conference); the package does not renew automatically. A lab organizing a review can use this shared package too."),n("p",null,"New conferences no longer have a free plan: every new conference is a review package. Conferences created earlier keep working as before. The conference must be activated by payment before authors can submit under its Conference ID. Eligible repositories use the conference allowance before an author's personal allowance, so authors do not each need a subscription for that capacity."),n("p",null,"The package has a fixed review window. Never expire still requires the repository owner's author subscription or a Never expire add-on for that repository.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPaidCoauthors"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#paidCoauthors","aria-expanded":"false","aria-controls":"paidCoauthors"},"Does every co-author need to pay?")])]),n("div",{id:"paidCoauthors",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPaidCoauthors"},[n("div",{class:"panel-body p-3"},[n("p",null,"No. Co-authors can collaborate without buying a subscription. A shared repository uses its owner's allowance, unless a repository pass or paid conference covers it. It does not consume each co-author's personal allowance."),n("p",null,"A co-author's subscription does not increase the owner's allowance. If the owner's available capacity is exhausted, a co-author's refresh or edit may also be blocked. Reviewers never need a paid account.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCapacity"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#capacity","aria-expanded":"false","aria-controls":"capacity"},"What counts toward my allowance, and what happens at the limit?")])]),n("div",{id:"capacity",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCapacity"},[n("div",{class:"panel-body p-3"},[n("p",null,"The repository limit counts work you own. Storage counts the source-file sizes reserved for those repositories, not just files a reviewer opens. Archived or failed repositories can still reserve capacity, and a refresh does not automatically reduce a previous storage reservation."),n("p",null,"At the repository limit you cannot add another repository to that allowance. An edit or refresh must also fit the available storage. Remove work you no longer need, add an Extra repository for the new one, choose a subscription, or use an eligible conference allowance."),n("p",null,"Removing a repository releases its reservation when capacity is next checked. Expired repositories may continue to reserve capacity until cleanup. Reaching a limit does not itself delete existing review links.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingNeverExpire"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#neverExpire","aria-expanded":"false","aria-controls":"neverExpire"},"What happens to Never expire repositories if I stop subscribing?")])]),n("div",{id:"neverExpire",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingNeverExpire"},[n("div",{class:"panel-body p-3"},[n("p",null,[g("Never expire is available to monthly and annual author subscribers, or for one repository with the one-time Never expire add-on. If a subscription ends, these repositories remain available for a "),n("strong",null,"90-day grace period"),g(", then expire and their hosted content is removed.")]),n("p",null,"Renewing during the grace period keeps them active. After expiration, you must renew and explicitly reactivate the repository; restoring content also requires access to its GitHub source. A repository does not become public on GitHub when it expires."),n("p",null,"Existing never-expiring repositories created before this billing policy retain their settings. Never expire is not a guarantee of perpetual service availability.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCancelPlan"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#cancelPlan","aria-expanded":"false","aria-controls":"cancelPlan"},"How do I cancel, and what happens after paid access ends?")])]),n("div",{id:"cancelPlan",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCancelPlan"},[n("div",{class:"panel-body p-3"},[n("p",null,[g("Open "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),g(" and choose "),n("strong",null,"Manage billing and invoices"),g(" to manage renewal. Cancelling renewal keeps subscription benefits until the end of the paid period.")]),n("p",null,"After paid access ends, repositories fall back to another eligible allowance or the free allowance. Automatic refresh pauses on the free allowance; manual refresh remains available within its limits. Existing review links keep their configured expiration dates, except paid Never expire repositories, which follow the 90-day grace period described above."),n("p",null,"A repository pass or conference package ends after its paid window without automatic renewal.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingRefunds"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#refunds","aria-expanded":"false","aria-controls":"refunds"},"Can I get a refund?")])]),n("div",{id:"refunds",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingRefunds"},[n("div",{class:"panel-body p-3"},[n("p",null,[g("Refunds are handled case by case. "),n("a",{href:"mailto:tdurieux@anonymous.4open.science"},"Email the maintainer"),g(" with the date of the payment and the repository it was for.")]),n("p",null,"A full refund ends what that payment bought. For a Paper pack, this means all three parts: the extra repository, automatic updates and the extended expiration. A Never expire repository then expires after a 90-day grace period. A partial refund keeps your access."),n("p",null,"To stop a subscription, cancel its renewal instead of asking for a refund. You keep access until the end of the period you paid for.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPaymentHandling"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-plans",href:"#paymentHandling","aria-expanded":"false","aria-controls":"paymentHandling"},"How are payments handled?")])]),n("div",{id:"paymentHandling",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPaymentHandling"},[n("div",{class:"panel-body p-3"},[n("p",null,[g("Stripe processes checkout and billing management. Anonymous GitHub does not store your card details. You can access billing management and invoices from "),n("a",{href:"/profile#settings-billing"},"Plans and billing"),g(".")]),n("p",null,[g("Paid access is activated after payment is confirmed. If checkout succeeds but your account has not updated, choose "),n("strong",null,"Refresh payment status"),g(" before trying another purchase. If paid plans are unavailable on this instance, no checkout is offered.")])])])])]),f(" Features "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#project-icon-filter"})]),g("Features ")]),n("div",{class:"panel-group",id:"faq-features",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingFormats"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#formats","aria-expanded":"false","aria-controls":"formats"}," Which file formats are supported? ")])]),n("div",{id:"formats",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingFormats"},[n("div",{class:"panel-body p-3"},[n("p",null," Anonymous GitHub can display and render a wide variety of file types: "),n("ul",null,[n("li",null,[n("strong",null,"Text and source code"),g(": displayed with syntax highlighting")]),n("li",null,[n("strong",null,"Markdown"),g(": rendered as formatted HTML")]),n("li",null,[n("strong",null,"Images"),g(" (PNG, JPG, SVG, etc.): displayed inline")]),n("li",null,[n("strong",null,"PDFs"),g(": rendered directly in the browser")]),n("li",null,[n("strong",null,"Jupyter Notebooks"),g(": rendered with code cells and outputs")])]),n("p",null," Only text-based files are anonymized. Anonymous GitHub analyzes the content of each file to determine whether it is textual or binary. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPR"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#pullRequests","aria-expanded":"false","aria-controls":"pullRequests"}," Can I anonymize pull requests? ")])]),n("div",{id:"pullRequests",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPR"},[n("div",{class:"panel-body p-3"},[n("p",null," Yes. In addition to full repositories, Anonymous GitHub supports anonymizing individual pull requests. Simply paste the URL of a GitHub pull request when creating a new anonymized repository, and the system will automatically detect that it is a pull request and anonymize it accordingly. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingConference"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#conference","aria-expanded":"false","aria-controls":"conference"}," What is the Conference ID feature? ")])]),n("div",{id:"conference",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingConference"},[n("div",{class:"panel-body p-3"},[n("p",null," When creating an anonymized repository, you can associate it with a Conference ID. This allows conferences to define default anonymization settings (such as expiration dates) that are automatically applied to repositories submitted under that conference. If your conference provides a Conference ID, enter it during the anonymization setup. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingExpiration"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#expiration","aria-expanded":"false","aria-controls":"expiration"}," What happens when an anonymized repository expires? ")])]),n("div",{id:"expiration",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingExpiration"},[n("div",{class:"panel-body p-3"},[n("p",null," You can configure one of three expiration strategies when creating your anonymized repository: "),n("ul",null,[n("li",null,[n("strong",null,"Never expire"),g(": with a monthly or annual author subscription, no scheduled expiration while subscribed. A 90-day grace period applies after paid access ends. See "),n("a",{href:"#neverExpire"},"the subscription expiration policy"),g(".")]),n("li",null,[n("strong",null,"Redirect to GitHub"),g(": after expiration, visitors are redirected to the original GitHub repository.")]),n("li",null,[n("strong",null,"Remove content"),g(": after expiration, the anonymized content is deleted from the server.")])])])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingDownload"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#download","aria-expanded":"false","aria-controls":"download"}," Can I download an anonymized repository? ")])]),n("div",{id:"download",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDownload"},[n("div",{class:"panel-body p-3"},[n("p",null," Yes. Anonymized repositories can be downloaded as a ZIP file. This is useful if reviewers want to build or test the code locally. The downloaded archive contains the fully anonymized version of the repository. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingUpdates"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#updates","aria-expanded":"false","aria-controls":"updates"}," Are updates to the original repository reflected in the anonymized version? ")])]),n("div",{id:"updates",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingUpdates"},[n("div",{class:"panel-body p-3"},[n("p",null," You can refresh the anonymized repository from GitHub without creating a new share link. Free accounts can request a manual refresh within their allowance. Automatic refresh requires an eligible paid allowance and must be enabled in repository settings. It pauses when the repository falls back to the free allowance. "),n("p",null," After changing files or contributor names, review your anonymization terms before sharing the updated content. If GitHub access is revoked or the source is deleted, the service cannot fetch updates. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingCLI"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-features",href:"#cli","aria-expanded":"false","aria-controls":"cli"}," Is there a command-line tool? ")])]),n("div",{id:"cli",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingCLI"},[n("div",{class:"panel-body p-3"},[n("p",null," Yes. Anonymous GitHub provides a CLI tool that lets you anonymize repositories locally, generating an anonymized ZIP file on your machine. Install it via npm: "),n("pre",{style:{"background-color":"var(--hover-bg-color)",padding:"12px","border-radius":"4px","margin-top":"8px",color:"var(--color)"}},[n("code",null,`npm install -g @tdurieux/anonymous_github +anonymous_github`)])])])])]),f(" Limitations "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})]),g("Limitations ")]),n("div",{class:"panel-group",id:"faq-limitations",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingLimitation"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-limitations",href:"#limitation","aria-expanded":"false","aria-controls":"limitation"}," What are the limitations of Anonymous GitHub? ")])]),n("div",{id:"limitation",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingLimitation"},[n("div",{class:"panel-body p-3"},[n("ul",null,[n("li",null," Anonymous GitHub only anonymizes text-based files. Binary files (compiled executables, archives, etc.) are served as-is without anonymization. "),n("li",null," Files larger than 8 MB are not supported. "),n("li",null," Static site generators (such as Jekyll) used with GitHub Pages are not fully supported, although Markdown files are converted to HTML. "),n("li",null," The anonymization of terms within source code may change the behavior of the program (e.g., if a replaced term appears in a string literal or identifier). ")])])])])]),f(" Privacy and security "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})]),g("Privacy and security ")]),n("div",{class:"panel-group",id:"faq-privacy",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingData"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#data","aria-expanded":"false","aria-controls":"data"}," How is my data handled? ")])]),n("div",{id:"data",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingData"},[n("div",{class:"panel-body p-3"},[n("p",null," Repository data is used to provide the anonymization service. If you purchase a plan, Stripe processes payment and billing information. When a repository is removed or expires, only its configuration is retained. This makes it easy to restore the repository if needed and ensures that no future repository reuses the same ID. ")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingPermissions"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#permissions","aria-expanded":"false","aria-controls":"permissions"}," Why does GitHub say Anonymous GitHub asks for write access? ")])]),n("div",{id:"permissions",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingPermissions"},[n("div",{class:"panel-body p-3"},[n("p",null,[g("The GitHub App has read-only access to the repositories you choose. You can change repository access on your "),n("a",{href:"/connections"},"GitHub connections"),g(" page.")]),n("p",null,"Legacy GitHub OAuth includes write access to private repositories because GitHub's OAuth scopes do not offer a read-only option for them. Existing OAuth anonymizations and gists can still use this connection."),n("p",null,"Anonymous GitHub reads repository content. It never pushes, modifies, or deletes files on GitHub.")])])]),n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingViewer"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-privacy",href:"#viewer","aria-expanded":"false","aria-controls":"viewer"}," Can repository owners see who viewed their anonymized repository? ")])]),n("div",{id:"viewer",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingViewer"},[n("div",{class:"panel-body p-3"},[n("p",null," No. Only the total number of views is tracked as an incremental counter. It is not possible for the repository owner or for Anonymous GitHub to identify individual viewers. Reviewer anonymity is fully preserved. ")])])])]),f(" Self-hosting "),n("h4",{class:"faq-cat"},[n("svg",{class:"ui-icon mr-2","aria-hidden":"true"},[n("use",{href:"#project-icon-storage"})]),g("Self"),n("span",{class:"serif-hy"},"-"),g("hosting ")]),n("div",{class:"panel-group",id:"faq-hosting",role:"tablist","aria-multiselectable":"true"},[n("div",{class:"panel panel-default mb-3"},[n("div",{class:"panel-heading p-3",role:"tab",id:"headingDeploy"},[n("h3",{class:"panel-title"},[n("a",{class:"collapsed",role:"button","data-toggle":"collapse","data-parent":"#faq-hosting",href:"#deploy","aria-expanded":"false","aria-controls":"deploy"}," Can I deploy my own instance? ")])]),n("div",{id:"deploy",class:"panel-collapse collapse",role:"tabpanel","aria-labelledby":"headingDeploy"},[n("div",{class:"panel-body p-3"},[n("p",null,[g(" Yes. Anonymous GitHub is fully open source (GPL-3.0) and supports Docker-based deployment. Billing is optional and disabled by default for self-hosted instances; paid hosted plans are not required to run your own server. You will need to configure a GitHub OAuth app and provide a GitHub token. Detailed setup instructions are available on the "),n("a",{href:"https://github.com/tdurieux/anonymous_github/",target:"_blank"},"GitHub repository"),g(". ")]),n("p",null," The basic steps are: "),n("ol",null,[n("li",null,"Clone the repository and install dependencies"),n("li",null,[g("Create a "),n("code",null,".env"),g(" file with your GitHub token, OAuth client ID, and client secret")]),n("li",null,[g("Run "),n("code",null,"docker-compose up -d")])])])])])])],-1))],2),t[11]||(t[11]=n("aside",{class:"paper-faq-help","aria-label":"More help"},[n("div",{class:"paper-faq-help-card"},[n("strong",null,"Still stuck?"),n("p",null,"Open an issue on GitHub about the service. For a paper's content, contact the conference instead."),n("a",{class:"btn btn-outline-ink btn-sm",target:"_blank",rel:"noopener",href:"https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml"},"Open an issue")])],-1))])]),Me(o,{name:"partials/footer.htm",state:e.viewState},null,8,["state"])],64)}var gL={class:"pr-page"},vL={class:"container paper-page pr-page-inner"},yL={class:"pr-header"},bL={class:"pr-title-row"},wL={class:"paper-page-title pr-title"},kL=["textContent"],CL={key:1,class:"text-muted"},EL=["href"],SL={class:"pr-header-meta"},NL={key:0,class:"pr-meta-item"},RL=["textContent"],DL={key:1,class:"pr-meta-item"},AL=["textContent"],TL={key:2,class:"pr-meta-item"},PL=["textContent"],OL={key:0,class:"paper-tabs",role:"tablist"},IL=["aria-selected","tabindex"],_L=["textContent"],ML=["aria-selected","tabindex"],VL=["textContent"],qL={class:"paper-tab-content"},$L={key:0,role:"tabpanel",id:"gist-files-panel","aria-labelledby":"gist-files-tab"},LL={class:"pr-comments"},UL={class:"pr-comment"},FL={class:"pr-comment-head"},BL=["textContent"],zL={key:0,class:"pr-comment-date"},HL={key:0,class:"paper-table-empty"},jL={key:1,role:"tabpanel",id:"gist-comments-panel","aria-labelledby":"gist-comments-tab"},GL={class:"pr-comments"},WL={class:"pr-comment"},KL={class:"pr-comment-head"},YL={key:0,class:"pr-comment-author"},XL=["textContent"],JL=["textContent"],QL={key:0,class:"pr-comment-body"},ZL={key:0,class:"paper-table-empty"};function Yc(e,t){let o=Ye("gist-file"),i=Ye("markdown");return l(),d("div",gL,[n("div",vL,[t[17]||(t[17]=n("div",{class:"paper-crumbs"},[n("a",{href:"/dashboard"},"Reviewer"),g(" \xA0/\xA0 "),n("span",{class:"here"},"Gist")],-1)),n("header",yL,[n("div",bL,[n("h1",wL,[e.details?.description?(l(),d("span",{key:0,textContent:c(e.details?.description)},null,8,kL)):f("v-if",!0),e.details?.description?f("v-if",!0):(l(),d("span",CL,"Untitled gist"))]),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/gist-anonymize/"+e.gistId)},[...t[4]||(t[4]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),n("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,EL)):f("v-if",!0)]),n("div",SL,[n("span",{class:T(["paper-pill",{good:e.details?.isPublic,warn:!e.details?.isPublic}])},c(e.details?.isPublic?"Public":"Secret"),3),e.details?.ownerLogin?(l(),d("span",NL,[t[5]||(t[5]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[6]||(t[6]=g(" @",-1)),n("span",{textContent:c(e.details?.ownerLogin)},null,8,RL)])):f("v-if",!0),e.details?.updatedDate?(l(),d("span",DL,[t[7]||(t[7]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[8]||(t[8]=g()),n("span",{textContent:c(e.fmt?.date(e.details?.updatedDate))},null,8,AL)])):f("v-if",!0),e.details?.anonymizeDate?(l(),d("span",TL,[t[9]||(t[9]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1)),t[10]||(t[10]=g(" Anonymized ",-1)),n("span",{textContent:c(e.fmt?.date(e.details?.anonymizeDate))},null,8,PL)])):f("v-if",!0)])]),e.details?.files&&e.details?.files?.length||e.details?.comments&&e.details?.comments?.length?(l(),d("nav",OL,[e.details?.files?(l(),d("button",{key:0,class:T(["paper-tab",{active:e.tabState?.active=="files"}]),type:"button",role:"tab",id:"gist-files-tab","aria-selected":e.tabState?.active==="files","aria-controls":"gist-files-panel",tabindex:e.tabState?.active==="files"?0:-1,onKeydown:t[0]||(t[0]=s=>e.previewTabKeydown(s)),onClick:t[1]||(t[1]=s=>e.tabState.active="files")},[t[11]||(t[11]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-type-gist"})],-1)),n("span",{textContent:c(e.fmt.plural(e.details?.files?.length,{0:"No files",one:"1 file",other:"{} files"}))},null,8,_L)],42,IL)):f("v-if",!0),e.details?.comments?(l(),d("button",{key:1,class:T(["paper-tab",{active:e.tabState?.active=="comments"}]),type:"button",role:"tab",id:"gist-comments-tab","aria-selected":e.tabState?.active==="comments","aria-controls":"gist-comments-panel",tabindex:e.tabState?.active==="comments"?0:-1,onKeydown:t[2]||(t[2]=s=>e.previewTabKeydown(s)),onClick:t[3]||(t[3]=s=>e.tabState.active="comments")},[t[12]||(t[12]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1)),n("span",{textContent:c(e.fmt.plural(e.details?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,VL)],42,ML)):f("v-if",!0)])):f("v-if",!0),n("div",qL,[e.details?.files&&e.tabState?.active=="files"?(l(),d("div",$L,[n("ul",LL,[(l(!0),d(L,null,ie(e.details?.files,(s,r)=>(l(),d("li",UL,[n("div",FL,[n("strong",{textContent:c(s?.filename)},null,8,BL),s?.language?(l(),d("span",zL,c(s?.language),1)):f("v-if",!0)]),Me(o,{file:s},null,8,["file"])]))),256)),e.details?.files?.length?f("v-if",!0):(l(),d("li",HL,[...t[13]||(t[13]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-file"})],-1),n("span",null,"No files in this gist.",-1)])]))])])):f("v-if",!0),e.details?.comments&&e.tabState?.active=="comments"?(l(),d("div",jL,[n("ul",GL,[(l(!0),d(L,null,ie(e.details?.comments,(s,r)=>(l(),d("li",WL,[n("div",KL,[s?.author?(l(),d("span",YL,[t[14]||(t[14]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[15]||(t[15]=g(" @",-1)),n("span",{textContent:c(s?.author)},null,8,XL)])):f("v-if",!0),s?.updatedDate?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(s?.updatedDate))},null,8,JL)):f("v-if",!0)]),s?.body?(l(),d("div",QL,[Me(i,{content:s?.body},null,8,["content"])])):f("v-if",!0)]))),256)),e.details?.comments?.length?f("v-if",!0):(l(),d("li",ZL,[...t[16]||(t[16]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1),n("span",null,"No comments on this gist.",-1)])]))])])):f("v-if",!0)])])])}var xL={key:0,class:"nav-support",href:"https://ko-fi.com/tdurieux",target:"_blank",rel:"noopener",title:"Donate on Ko-fi to help cover hosting costs","aria-label":"Donate on Ko-fi to help cover hosting costs"},eU={key:1,class:"nav-heart-m",href:"https://ko-fi.com/tdurieux",target:"_blank",rel:"noopener","aria-label":"Support Anonymous GitHub",title:"Support Anonymous GitHub"},tU=["aria-label","title"],nU={class:"ui-icon","aria-hidden":"true"},oU=["href"],sU={key:3,class:"nav-signin-m",href:"/signin",target:"_self","aria-label":"Sign in with GitHub"},iU={class:"collapse navbar-collapse",id:"navbarSupportedContent"},rU={class:"navbar-nav mr-auto smooth-scroll"},aU={key:0,class:"nav-item nav-home-item"},lU={key:1,class:"nav-item"},dU={key:2,class:"nav-item"},uU={key:3,class:"nav-item"},cU={class:"nav-item"},pU={key:4,class:"nav-item"},fU={class:"navbar-nav"},hU={key:0,class:"nav-item d-lg-none"},mU={key:1,class:"nav-item"},gU={key:2,class:"nav-item"},vU={key:3,class:"nav-item nav-signin-item"},yU={key:4,class:"nav-item"},bU={key:5,class:"nav-item dropdown user-chip-wrap"},wU={class:"nav-link user-chip dropdown-toggle",href:"#",id:"navbarDropdownMenuLink",role:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},kU=["src"],CU={class:"user-chip-name"},EU={class:"dropdown-menu dropdown-menu-right user-menu","aria-labelledby":"navbarDropdownMenuLink"},SU={class:"dropdown-header"},NU={key:0,class:"dropdown-item um-extra",href:"https://ko-fi.com/tdurieux",target:"_blank",rel:"noopener"},RU=["innerHTML"],DU=["disabled"],AU={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},TU={class:"email-prompt-actions"},PU=["disabled"],OU=["disabled"],IU=["disabled"];function Xc(e,t){return l(),d(L,null,[n("nav",{class:T(["navbar navbar-expand-lg",{"navbar-dark":e.isDarkMode}])},[t[27]||(t[27]=n("a",{class:"navbar-brand",href:"/"},[g("Anonymous "),n("em",null,"GitHub")],-1)),e.headerShowSupport?(l(),d("a",xL,[...t[9]||(t[9]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-heart"})],-1),n("span",{class:"nav-support-label"},"Support",-1)])])):f("v-if",!0),/^\/(r|w|pr|gist)\//.test(e.path||"")?f("v-if",!0):(l(),d("a",eU,[...t[10]||(t[10]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-heart"})],-1)])])),/^\/(r|w|pr|gist)\//.test(e.path||"")?f("v-if",!0):(l(),d("button",{key:2,type:"button",class:"nav-theme-m","aria-label":e.isDarkMode?"Switch to light mode":"Switch to dark mode",title:e.isDarkMode?"Switch to light mode":"Switch to dark mode",onClick:t[0]||(t[0]=o=>e.darkMode(!e.isDarkMode))},[(l(),d("svg",nU,[n("use",{href:e.isDarkMode?"#ui-icon-sun":"#ui-icon-moon"},null,8,oU)]))],8,tU)),!e.user&&!/^\/(r|w|pr|gist)\//.test(e.path||"")?(l(),d("a",sU,[...t[11]||(t[11]=[n("i",{class:"fab fa-github","aria-hidden":"true"},null,-1),g("Sign in",-1)])])):f("v-if",!0),t[28]||(t[28]=n("button",{class:"navbar-toggler",type:"button","data-toggle":"collapse","data-target":"#navbarSupportedContent","aria-controls":"navbarSupportedContent","aria-expanded":"false","aria-label":"Toggle navigation"},[n("span",{class:"navbar-toggler-icon"})],-1)),n("div",iU,[n("ul",rU,[e.user?f("v-if",!0):(l(),d("li",aU,[n("a",{class:T(["nav-link",{active:e.path=="/"}]),href:"/"},[...t[12]||(t[12]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-home"})],-1),g(" Home ",-1)])],2)])),e.user?(l(),d("li",lU,[n("a",{class:T(["nav-link",{active:e.path=="/dashboard"}]),href:"/dashboard"},[...t[13]||(t[13]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-grid"})],-1),g(" My work ",-1)])],2)])):f("v-if",!0),e.user?(l(),d("li",dU,[n("a",{class:T(["nav-link",{active:e.path=="/anonymize"||e.path=="/pull-request-anonymize"}]),href:"/anonymize"},[...t[14]||(t[14]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1),g(" Anonymize ",-1)])],2)])):f("v-if",!0),e.user?(l(),d("li",uU,[n("a",{class:T(["nav-link",{active:e.path=="/conferences"||e.path?.startsWith("/conference/")}]),href:"/conferences"},[...t[15]||(t[15]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1),g(" Conferences ",-1)])],2)])):f("v-if",!0),n("li",cU,[n("a",{class:T(["nav-link",{active:e.path=="/faq"}]),href:"/faq"},[...t[16]||(t[16]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-help"})],-1),g("FAQ",-1)])],2)]),e.user&&e.user?.isAdmin?(l(),d("li",pU,[n("a",{class:T(["nav-link",{active:e.path?.indexOf("/admin")===0}]),href:"/admin/"},[...t[17]||(t[17]=[n("svg",{class:"ui-icon d-lg-none mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-user-shield"})],-1),g(" Admin ",-1)])],2)])):f("v-if",!0)]),n("ul",fU,[e.user||!e.isReviewerRoute?(l(),d("li",hU,[...t[18]||(t[18]=[n("a",{class:"nav-link nav-icon",target:"_blank",href:"https://github.com/tdurieux/anonymous_github/",title:"Anonymous GitHub source code","aria-label":"Anonymous GitHub source code on GitHub",rel:"noopener","data-offset":"30"},[n("i",{class:"fab fa-github","aria-hidden":"true"})],-1)])])):f("v-if",!0),f(` "Report a bug" is about this service. Reviewers who land on an anonymized repository often think it is about the paper, so the - label names the service and the tooltip says who to contact. `),t[26]||(t[26]=ke('',2)),e.isDarkMode?f("v-if",!0):(l(),d("li",jV,[n("button",{type:"button",class:"nav-link nav-icon",title:"Switch to dark mode","aria-label":"Switch to dark mode",onClick:t[1]||(t[1]=o=>{e.darkMode(!0)})},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-moon"})],-1)])])])),e.isDarkMode?(l(),d("li",GV,[n("button",{type:"button",class:"nav-link nav-icon",title:"Switch to light mode","aria-label":"Switch to light mode",onClick:t[2]||(t[2]=o=>{e.darkMode(!1)})},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-sun"})],-1)])])])):f("v-if",!0),!e.user&&!e.isReviewerRoute?(l(),d("li",WV,[...t[21]||(t[21]=[n("a",{class:"nav-link btn-signin",target:"_self",href:"/signin","data-offset":"30"},[n("i",{class:"fab fa-github mr-1"}),y(" Sign in ")],-1)])])):f("v-if",!0),e.user?.username&&e.headerCanUpgrade&&!e.headerBillingPending?(l(),d("li",KV,[n("a",{class:"nav-link nav-upgrade",href:"/profile?upgrade=1",onClick:t[3]||(t[3]=ce(o=>e.openHeaderUpgrade(),["prevent"]))},"Upgrade")])):f("v-if",!0),e.user?(l(),d("li",YV,[n("a",XV,[e.user?.photo?(l(),d("img",{key:0,width:"22",height:"22",class:"rounded-circle",src:e.safeUrl(e.user?.photo)},null,8,JV)):f("v-if",!0),n("span",QV,c(e.user?.username),1)]),n("div",ZV,[n("h6",xV,"Signed in as @"+c(e.user?.username),1),t[23]||(t[23]=ke('SettingsDefaults, quotas, accountGitHub connectionsRepository access and OAuthClaim an anonymizationAttach an existing mirror to your accountReport a bugAbout this service, not a paperSource code',6)),e.headerShowSupport?(l(),d("a",eq,[...t[22]||(t[22]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-heart"})],-1),n("span",null,"Support the project",-1)])])):f("v-if",!0),t[24]||(t[24]=n("div",{class:"dropdown-divider"},null,-1)),t[25]||(t[25]=n("a",{class:"dropdown-item",href:"/api/user/logout",target:"_self"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-logout"})]),n("span",null,"Sign out")],-1))])])):f("v-if",!0)])])],2),e.generalMessage?(l(),d("div",{key:0,class:"navbar shadow generalMessage",innerHTML:e.sanitize(e.generalMessage)},null,8,tq)):f("v-if",!0),e.emailPromptOpen?(l(),d("dialog",{key:1,id:"email-prompt",class:"email-prompt","aria-labelledby":"email-prompt-title","aria-describedby":"email-prompt-reason",onCancel:t[8]||(t[8]=ce(o=>e.respondToEmailPrompt("later"),["prevent"]))},[n("form",{onSubmit:t[7]||(t[7]=ce(o=>e.respondToEmailPrompt("save"),["prevent"]))},[t[29]||(t[29]=n("h2",{id:"email-prompt-title"},"Stay informed about access problems",-1)),t[30]||(t[30]=n("p",{id:"email-prompt-reason"},"Get email alerts when your GitHub token or repository access fails.",-1)),t[31]||(t[31]=n("label",{for:"email-prompt-address"},"Email address",-1)),A(n("input",{id:"email-prompt-address",class:"form-control",type:"email",autocomplete:"email",maxlength:"254",required:"","onUpdate:modelValue":t[4]||(t[4]=o=>e.emailPromptAddress=o),disabled:e.emailPromptBusy},null,8,nq),[[ct,e.emailPromptAddress]]),e.emailPromptError?(l(),d("p",oq,c(e.emailPromptError),1)):f("v-if",!0),n("div",sq,[n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.emailPromptBusy,onClick:t[5]||(t[5]=o=>e.respondToEmailPrompt("later"))},"Remind me later",8,iq),n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.emailPromptBusy,onClick:t[6]||(t[6]=o=>e.respondToEmailPrompt("never"))},"Never",8,rq),n("button",{type:"submit",class:"btn btn-ink",disabled:e.emailPromptBusy},c(e.emailPromptBusy?"Saving\u2026":"Save"),9,aq)])],32)],32)):f("v-if",!0)],64)}var lq={class:"paper-landing"},dq={class:"paper-hero"},uq={class:"paper-hero-copy"},cq={class:"paper-cta-row"},pq={key:0,href:"/signin",target:"_self",class:"btn-hero"},fq={key:1,href:"/anonymize",class:"btn-hero"},hq={class:"paper-stats paper-wrap",id:"metrics","aria-label":"Usage over the last 60 days"},mq={class:"paper-stats-grid"},gq={class:"paper-stat-label"},vq={key:0,class:"paper-stat-delta"},yq={class:"demo paper-wrap","aria-label":"Try redaction"},bq={class:"demo-terms"},wq={class:"demo-panes"},kq={class:"pane"},Cq={class:"demo-input-wrap"},Eq={class:"pane-body demo-backdrop","aria-hidden":"true"},Sq={key:0,class:"demo-match"},Nq={class:"pane pane-after"},Rq={class:"pane-header"},Dq={class:"pane-url"},Aq={class:"meta-redact"},Tq={class:"pane-body demo-output","aria-live":"polite"},Pq=["title"],_q={class:"paper-features paper-wrap","aria-label":"Product features"},Oq={class:"paper-features-list",role:"tablist","aria-label":"Features","aria-orientation":"vertical"},Iq=["onClick","onKeydown","id","aria-controls","aria-selected","tabindex"],Mq={class:"paper-eyebrow"},Vq={class:"paper-feature-title"},qq={class:"paper-feature-more"},$q={class:"paper-feature-title paper-feature-title-m","aria-hidden":"true"},Lq=["href","target"],Uq={class:"paper-features-stage"},Fq=["id","aria-labelledby"],Bq={class:"paper-frame"},zq={class:"paper-frame-bar","aria-hidden":"true"},Hq={class:"url"},jq=["aria-label"],Gq={key:0,class:"fm-form"},Wq={key:1,class:"fm-viewer"},Kq={key:2,class:"fm-dash"},Yq={class:"paper-footer"},Xq={class:"paper-footer-inner"},Jq={class:"paper-footer-col"},Qq={key:0,href:"/dashboard"},Zq={key:1,href:"/conferences"},xq={class:"paper-footer-foot"};function _c(e,t){return l(),d("div",lq,[f(" Hero: copy on the left, the product on the right "),n("section",dq,[n("div",uq,[t[4]||(t[4]=n("div",{class:"paper-eyebrow"},"For double-blind peer review",-1)),t[5]||(t[5]=n("h1",{class:"hero-title"},[y(" Share the code,"),n("br"),n("span",{class:"accent"},"not the author.")],-1)),t[6]||(t[6]=n("p",{class:"hero-subtitle"}," Anonymous GitHub makes a read-only mirror of your repository, pull request, or gist. It redacts the terms you choose in text files, so reviewers can browse your artifact through an anonymous link. ",-1)),n("div",cq,[e.user?f("v-if",!0):(l(),d("a",pq,[...t[2]||(t[2]=[n("i",{class:"fab fa-github mr-2","aria-hidden":"true"},null,-1),y("Sign in with GitHub ",-1)])])),e.user?(l(),d("a",fq," Anonymize a repository \u2192 ")):f("v-if",!0),t[3]||(t[3]=n("a",{class:"paper-link-arrow",target:"_self",href:"https://anonymous.4open.science/r/840c8c57-3c32-451e-bf12-0e20be300389/"},"See an anonymized repository \u2192",-1))]),t[7]||(t[7]=n("ul",{class:"paper-reassure"},[n("li",null,"Free, open source"),n("li",null,"Read-only access"),n("li",null,"Set an expiry date")],-1))]),t[8]||(t[8]=n("div",{class:"paper-hero-shot"},[n("div",{class:"paper-frame"},[n("div",{class:"paper-frame-bar","aria-hidden":"true"},[n("span",{class:"dots"},[n("i"),n("i"),n("i")]),n("span",{class:"url"},"anonymous.4open.science/r/paper-7f2a")]),n("div",{class:"hero-mock",role:"img","aria-label":"A reviewer browsing an anonymized repository: the author, affiliation, and email in the README are replaced by anonymous terms"},[n("div",{class:"hero-mock-tree","aria-hidden":"true"},[n("div",{class:"hero-mock-tree-title"},"Files"),n("div",{class:"hero-mock-row is-folder"},[n("svg",{viewBox:"0 0 16 16"},[n("path",{d:"M1.5 3.5h4l1.5 1.5h7.5v8h-13z"})]),y("data")]),n("div",{class:"hero-mock-row is-folder"},[n("svg",{viewBox:"0 0 16 16"},[n("path",{d:"M1.5 3.5h4l1.5 1.5h7.5v8h-13z"})]),y("experiments")]),n("div",{class:"hero-mock-row is-folder"},[n("svg",{viewBox:"0 0 16 16"},[n("path",{d:"M1.5 3.5h4l1.5 1.5h7.5v8h-13z"})]),y("src")]),n("div",{class:"hero-mock-row"},[n("svg",{viewBox:"0 0 16 16"},[n("path",{d:"M3.5 1.5h6l3 3v10h-9z"})]),y("LICENSE")]),n("div",{class:"hero-mock-row is-active"},[n("svg",{viewBox:"0 0 16 16"},[n("path",{d:"M3.5 1.5h6l3 3v10h-9z"})]),y("README.md")]),n("div",{class:"hero-mock-row"},[n("svg",{viewBox:"0 0 16 16"},[n("path",{d:"M3.5 1.5h6l3 3v10h-9z"})]),y("requirements.txt")])]),n("div",{class:"hero-mock-doc","aria-hidden":"true"},[n("div",{class:"hero-mock-doc-bar"},[n("strong",null,"README.md"),n("span",{class:"hero-mock-count"},"3 redacted")]),n("div",{class:"hero-mock-doc-body"},[n("div",{class:"hero-mock-h1"},"DeepLearnUtils"),n("p",null,[y("Developed by "),n("span",{class:"redact",role:"img","aria-label":"Redacted term 1"},[n("i",null,"1")]),y(" at "),n("span",{class:"redact",role:"img","aria-label":"Redacted term 2"},[n("i",null,"2")]),y(".")]),n("p",null,"Utilities for reproducing the paper\u2019s experiments."),n("div",{class:"hero-mock-h2"},"Quick start"),n("pre",null,`pip install -r requirements.txt -python experiments/run.py`),n("p",null,[y("Contact: "),n("span",{class:"redact",role:"img","aria-label":"Redacted term 3"},[n("i",null,"3")])])])])])])],-1))]),f(" Live stats "),n("section",hq,[t[9]||(t[9]=n("div",{class:"paper-stats-meta"},[n("div",{class:"paper-stats-meta-left"},[n("span",{class:"paper-stats-dot","aria-hidden":"true"}),y(" Live \xB7 last 60 days \xB7 updated daily")]),n("div",{class:"paper-stats-meta-right"},"Used by authors at ICSE \xB7 FSE \xB7 OOPSLA")],-1)),n("div",mq,[(l(!0),d(B,null,ie(e.cards,(o,i)=>(l(),d("div",{class:"paper-stat-card",key:o?.key},[n("div",{class:P(["paper-stat-value",{"is-pending":!e.stat}])},c(e.stat?e.fmt?.bigNum(o?.total):"\u2014"),3),n("div",gq,c(o?.label),1),e.history[o?.key].bars?.length>1?(l(),d("div",vq," +"+c(e.fmt?.number(e.history[o?.key].deltaToday))+" today ",1)):f("v-if",!0)]))),128))])]),f(" Before / after "),t[25]||(t[25]=n("section",{class:"paper-section-head paper-wrap"},[n("div",null,[n("div",{class:"paper-eyebrow"},"Try it"),n("h2",null,[y("The same repository, "),n("em",null,"minus you.")])]),n("p",null," Names, affiliations, emails, and any term you list are replaced across the README, source files, notebooks, and PDF links. Reviewers browse the real thing, not a zip. ")],-1)),n("div",yq,[n("div",bq,[t[10]||(t[10]=n("label",{for:"demo-terms"},[y("Terms to redact "),n("span",null,"comma-separated, try adding your own")],-1)),A(n("input",{id:"demo-terms",type:"text","onUpdate:modelValue":t[0]||(t[0]=o=>e.demoTerms=o),spellcheck:"false",autocomplete:"off"},null,512),[[ct,e.demoTerms]])]),n("div",wq,[n("div",kq,[t[12]||(t[12]=n("div",{class:"pane-header"},[n("span",{class:"pane-label"},[y("Your repository "),n("span",{class:"pane-edit-hint"},"\xB7 editable")]),n("span",{class:"pane-url"},"github.com/jane-smith/DeepLearnUtils")],-1)),n("div",Cq,[n("div",Eq,[(l(!0),d(B,null,ie(e.demoParts(),(o,i)=>(l(),d(B,{key:i},[o.redacted?(l(),d("mark",Sq,c(o.original),1)):(l(),d(B,{key:1},[y(c(o.text),1)],64))],64))),128)),t[11]||(t[11]=y("\u200B",-1))]),A(n("textarea",{class:"pane-body demo-input","onUpdate:modelValue":t[1]||(t[1]=o=>e.demoText=o),spellcheck:"false","aria-label":"Sample README to anonymize"},null,512),[[ct,e.demoText]])])]),n("div",Nq,[n("div",Rq,[t[13]||(t[13]=n("span",{class:"pane-label"},"What reviewers see",-1)),n("span",Dq,[n("span",Aq,c(e.demoCount())+" redacted",1)])]),n("div",Tq,[(l(!0),d(B,null,ie(e.demoParts(),(o,i)=>(l(),d(B,{key:i},[o.redacted?(l(),d("span",{key:0,class:"redact-chip",title:"Replaces \u201C"+o.original+"\u201D"},c(o.text),9,Pq)):(l(),d(B,{key:1},[y(c(o.text),1)],64))],64))),128))])])])]),f(" What you get: one screenshot, three tabs "),t[26]||(t[26]=n("section",{class:"paper-section-head paper-wrap",id:"about"},[n("div",null,[n("div",{class:"paper-eyebrow"},"What you get"),n("h2",null,"Anonymize, review, manage.")]),n("p",null," Terms are redacted in text files. Enabled images and PDFs are served unchanged, so review them for identifying content before sharing. Monitor your mirror, update it, or remove it when the review is over. ")],-1)),n("section",_q,[n("div",Oq,[(l(!0),d(B,null,ie(e.features,(o,i)=>(l(),d("div",{class:P(["paper-feature",{"is-on":e.feature===o?.key}]),key:o?.key},[n("button",{type:"button",class:"paper-feature-tab",role:"tab",onClick:s=>e.selectFeature(o.key),onKeydown:s=>e.featureKeydown(s,i),id:"feature-tab-"+o?.key,"aria-controls":"feature-panel-"+o?.key,"aria-selected":e.feature===o?.key,tabindex:e.feature===o?.key?0:-1},[n("span",Mq,c(o?.num)+" \xB7 "+c(o?.eyebrow),1),n("span",Vq,c(o?.title)+" "+c(o?.accent),1)],40,Iq),n("div",qq,[n("span",$q,c(o?.title)+" "+c(o?.accent),1),n("p",null,c(o?.text),1),n("a",{class:"paper-link-arrow",href:e.safeUrl(e.featureHref(o)),target:e.featureTarget(o)},c(o?.cta)+" \u2192",9,Lq)])],2))),128))]),n("div",Uq,[(l(!0),d(B,null,ie(e.features,(o,i)=>A((l(),d("div",{class:"paper-feature-panel",role:"tabpanel",key:o?.key,id:"feature-panel-"+o?.key,"aria-labelledby":"feature-tab-"+o?.key},[n("div",Bq,[n("div",zq,[t[14]||(t[14]=n("span",{class:"dots"},[n("i"),n("i"),n("i")],-1)),n("span",Hq,c(o?.url),1)]),n("div",{class:P(["feat-mock","is-"+o?.key]),role:"img","aria-label":o?.alt},[o?.key==="anonymize"?(l(),d("div",Gq,[...t[15]||(t[15]=[ke('
GitHub repository
github.com/jane-smith/DeepLearnUtils
Terms to redact
Jane SmithMIT CSAILjane.smith@mit.edu+ Add term
Reviewers can see
ImagesPDFsLinksNotebooks
Expires
Mar 31, 2027
Anonymize repository
',6)])])):o?.key==="review"?(l(),d("div",Wq,[...t[16]||(t[16]=[ke(`
data
src
train.py
README.md
LICENSE
train.py48 lines \xB7 Python
1# Training loop for DeepLearnUtils
+           label names the service and the tooltip says who to contact. `),t[26]||(t[26]=Ce('',2)),e.isDarkMode?f("v-if",!0):(l(),d("li",mU,[n("button",{type:"button",class:"nav-link nav-icon",title:"Switch to dark mode","aria-label":"Switch to dark mode",onClick:t[1]||(t[1]=o=>{e.darkMode(!0)})},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-moon"})],-1)])])])),e.isDarkMode?(l(),d("li",gU,[n("button",{type:"button",class:"nav-link nav-icon",title:"Switch to light mode","aria-label":"Switch to light mode",onClick:t[2]||(t[2]=o=>{e.darkMode(!1)})},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-sun"})],-1)])])])):f("v-if",!0),!e.user&&!e.isReviewerRoute?(l(),d("li",vU,[...t[21]||(t[21]=[n("a",{class:"nav-link btn-signin",target:"_self",href:"/signin","data-offset":"30"},[n("i",{class:"fab fa-github mr-1"}),g(" Sign in ")],-1)])])):f("v-if",!0),e.user?.username&&e.headerCanUpgrade&&!e.headerBillingPending?(l(),d("li",yU,[n("a",{class:"nav-link nav-upgrade",href:"/profile?upgrade=1",onClick:t[3]||(t[3]=ce(o=>e.openHeaderUpgrade(),["prevent"]))},"Upgrade")])):f("v-if",!0),e.user?(l(),d("li",bU,[n("a",wU,[e.user?.photo?(l(),d("img",{key:0,width:"22",height:"22",class:"rounded-circle",src:e.safeUrl(e.user?.photo)},null,8,kU)):f("v-if",!0),n("span",CU,c(e.user?.username),1)]),n("div",EU,[n("h6",SU,"Signed in as @"+c(e.user?.username),1),t[23]||(t[23]=Ce('SettingsDefaults, quotas, accountGitHub connectionsRepository access and OAuthClaim an anonymizationAttach an existing mirror to your accountReport a bugAbout this service, not a paperSource code',6)),e.headerShowSupport?(l(),d("a",NU,[...t[22]||(t[22]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-heart"})],-1),n("span",null,"Support the project",-1)])])):f("v-if",!0),t[24]||(t[24]=n("div",{class:"dropdown-divider"},null,-1)),t[25]||(t[25]=n("a",{class:"dropdown-item",href:"/api/user/logout",target:"_self"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-logout"})]),n("span",null,"Sign out")],-1))])])):f("v-if",!0)])])],2),e.generalMessage?(l(),d("div",{key:0,class:"navbar shadow generalMessage",innerHTML:e.sanitize(e.generalMessage)},null,8,RU)):f("v-if",!0),e.emailPromptOpen?(l(),d("dialog",{key:1,id:"email-prompt",class:"email-prompt","aria-labelledby":"email-prompt-title","aria-describedby":"email-prompt-reason",onCancel:t[8]||(t[8]=ce(o=>e.respondToEmailPrompt("later"),["prevent"]))},[n("form",{onSubmit:t[7]||(t[7]=ce(o=>e.respondToEmailPrompt("save"),["prevent"]))},[t[29]||(t[29]=n("h2",{id:"email-prompt-title"},"Stay informed about access problems",-1)),t[30]||(t[30]=n("p",{id:"email-prompt-reason"},"Get email alerts when your GitHub token or repository access fails.",-1)),t[31]||(t[31]=n("label",{for:"email-prompt-address"},"Email address",-1)),P(n("input",{id:"email-prompt-address",class:"form-control",type:"email",autocomplete:"email",maxlength:"254",required:"","onUpdate:modelValue":t[4]||(t[4]=o=>e.emailPromptAddress=o),disabled:e.emailPromptBusy},null,8,DU),[[dt,e.emailPromptAddress]]),e.emailPromptError?(l(),d("p",AU,c(e.emailPromptError),1)):f("v-if",!0),n("div",TU,[n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.emailPromptBusy,onClick:t[5]||(t[5]=o=>e.respondToEmailPrompt("later"))},"Remind me later",8,PU),n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.emailPromptBusy,onClick:t[6]||(t[6]=o=>e.respondToEmailPrompt("never"))},"Never",8,OU),n("button",{type:"submit",class:"btn btn-ink",disabled:e.emailPromptBusy},c(e.emailPromptBusy?"Saving\u2026":"Save"),9,IU)])],32)],32)):f("v-if",!0)],64)}var _U={class:"paper-landing"},MU={class:"paper-hero"},VU={class:"paper-hero-copy"},qU={class:"paper-cta-row"},$U={key:0,href:"/signin",target:"_self",class:"btn-hero"},LU={key:1,href:"/anonymize",class:"btn-hero"},UU={class:"paper-stats-meta"},FU={key:0,class:"paper-stats-meta-left"},BU={key:0,class:"paper-stats-grid"},zU={class:"paper-stat-label"},HU={key:0,class:"paper-stat-delta"},jU={class:"demo paper-wrap","aria-label":"Try redaction"},GU={class:"demo-terms"},WU={class:"demo-panes"},KU={class:"pane"},YU={class:"demo-input-wrap"},XU={class:"pane-body demo-backdrop","aria-hidden":"true"},JU={key:0,class:"demo-match"},QU={class:"pane pane-after"},ZU={class:"pane-header"},xU={class:"pane-url"},eF={class:"meta-redact"},tF={class:"pane-body demo-output","aria-live":"polite"},nF=["title"],oF={class:"paper-features paper-wrap","aria-label":"Product features"},sF={class:"paper-features-list",role:"tablist","aria-label":"Features","aria-orientation":"vertical"},iF=["onClick","onKeydown","id","aria-controls","aria-selected","tabindex"],rF={class:"paper-eyebrow"},aF={class:"pf-num"},lF={class:"pf-name"},dF={class:"paper-feature-title"},uF={key:0,class:"serif-hy"},cF={class:"paper-feature-more"},pF={class:"paper-feature-title paper-feature-title-m","aria-hidden":"true"},fF={key:0,class:"serif-hy"},hF=["href","target"],mF={class:"paper-features-stage"},gF=["id","aria-labelledby"],vF={class:"paper-frame"},yF={class:"paper-frame-bar","aria-hidden":"true"},bF={class:"url"},wF=["aria-label"],kF={key:0,class:"fm-form"},CF={key:1,class:"fm-viewer"},EF={key:2,class:"fm-dash"};function Jc(e,t){let o=Ye("partial-view");return l(),d("div",_U,[f(" Hero: copy on the left, the product on the right "),n("section",MU,[n("div",VU,[t[5]||(t[5]=n("div",{class:"paper-eyebrow"},"For double-anonymous peer review",-1)),t[6]||(t[6]=n("h1",{class:"hero-title"},[g(" Share the code,"),n("br"),n("span",{class:"accent"},"not the author.")],-1)),t[7]||(t[7]=n("p",{class:"hero-subtitle"}," Anonymous GitHub makes a read-only mirror of your repository, pull request, or gist. It redacts the terms you choose in text files, so reviewers can browse your artifact through an anonymous link. ",-1)),n("div",qU,[e.user?f("v-if",!0):(l(),d("a",$U,[...t[3]||(t[3]=[n("i",{class:"fab fa-github mr-2","aria-hidden":"true"},null,-1),g("Sign in with GitHub ",-1)])])),e.user?(l(),d("a",LU," Anonymize a repository \u2192 ")):f("v-if",!0),t[4]||(t[4]=n("a",{class:"paper-link-arrow",target:"_self",href:"https://anonymous.4open.science/r/840c8c57-3c32-451e-bf12-0e20be300389/"},"See an anonymized repository \u2192",-1))]),t[8]||(t[8]=n("ul",{class:"paper-reassure"},[n("li",null,"Free, open source"),n("li",null,"Read-only access"),n("li",null,"Set an expiry date")],-1)),t[9]||(t[9]=n("p",{class:"paper-proof-mobile"},"Used by authors at ICSE \xB7 FSE \xB7 OOPSLA",-1))]),t[10]||(t[10]=n("div",{class:"paper-hero-shot"},[n("div",{class:"paper-frame"},[n("div",{class:"paper-frame-bar","aria-hidden":"true"},[n("span",{class:"dots"},[n("i"),n("i"),n("i")]),n("span",{class:"url"},"anonymous.4open.science/r/paper-7f2a")]),n("div",{class:"hero-mock",role:"img","aria-label":"A reviewer browsing an anonymized repository: the author, affiliation, and email in the README are replaced by anonymous terms"},[n("div",{class:"hero-mock-tree","aria-hidden":"true"},[n("div",{class:"hero-mock-tree-title"},"Files"),n("div",{class:"hero-mock-row is-folder"},[n("svg",{viewBox:"0 0 16 16"},[n("path",{d:"M1.5 3.5h4l1.5 1.5h7.5v8h-13z"})]),g("data")]),n("div",{class:"hero-mock-row is-folder"},[n("svg",{viewBox:"0 0 16 16"},[n("path",{d:"M1.5 3.5h4l1.5 1.5h7.5v8h-13z"})]),g("experiments")]),n("div",{class:"hero-mock-row is-folder"},[n("svg",{viewBox:"0 0 16 16"},[n("path",{d:"M1.5 3.5h4l1.5 1.5h7.5v8h-13z"})]),g("src")]),n("div",{class:"hero-mock-row"},[n("svg",{viewBox:"0 0 16 16"},[n("path",{d:"M3.5 1.5h6l3 3v10h-9z"})]),g("LICENSE")]),n("div",{class:"hero-mock-row is-active"},[n("svg",{viewBox:"0 0 16 16"},[n("path",{d:"M3.5 1.5h6l3 3v10h-9z"})]),g("README.md")]),n("div",{class:"hero-mock-row"},[n("svg",{viewBox:"0 0 16 16"},[n("path",{d:"M3.5 1.5h6l3 3v10h-9z"})]),g("requirements.txt")])]),n("div",{class:"hero-mock-doc","aria-hidden":"true"},[n("div",{class:"hero-mock-doc-bar"},[n("strong",null,"README.md"),n("span",{class:"hero-mock-count"},"3 redacted")]),n("div",{class:"hero-mock-doc-body"},[n("div",{class:"hero-mock-h1"},"DeepLearnUtils"),n("p",null,[g("Developed by "),n("span",{class:"redact",role:"img","aria-label":"Redacted term 1"},[n("i",null,"1")]),g(" at "),n("span",{class:"redact",role:"img","aria-label":"Redacted term 2"},[n("i",null,"2")]),g(".")]),n("p",{class:"hm-opt"},"Utilities for reproducing the paper\u2019s experiments."),n("div",{class:"hero-mock-h2 hm-opt"},"Quick start"),n("pre",{class:"hm-opt"},`pip install -r requirements.txt
+python experiments/run.py`),n("p",null,[g("Contact: "),n("span",{class:"redact",role:"img","aria-label":"Redacted term 3"},[n("i",null,"3")])])])])])])],-1))]),f(" Live stats "),n("section",{class:T(["paper-stats paper-wrap",{"is-empty":e.statsEmpty()}]),id:"metrics","aria-label":"Usage over the last 60 days"},[n("div",UU,[e.statsEmpty()?f("v-if",!0):(l(),d("div",FU,[...t[11]||(t[11]=[n("span",{class:"paper-stats-dot","aria-hidden":"true"},null,-1),g(),n("span",null,[g("Live \xB7 last 60 days"),n("span",{class:"paper-stats-daily"}," \xB7 updated daily")],-1)])])),t[12]||(t[12]=n("div",{class:"paper-stats-meta-right"},"Used by authors at ICSE \xB7 FSE \xB7 OOPSLA",-1))]),e.statsEmpty()?f("v-if",!0):(l(),d("div",BU,[(l(!0),d(L,null,ie(e.cards,(i,s)=>(l(),d("div",{class:"paper-stat-card",key:i?.key},[n("div",{class:T(["paper-stat-value",{"is-pending":!e.stat}])},c(e.stat?e.fmt?.bigNum(i?.total):"\u2014"),3),n("div",zU,c(i?.label),1),e.history[i?.key].bars?.length>1&&e.history[i?.key].deltaToday>0?(l(),d("div",HU," +"+c(e.fmt?.number(e.history[i?.key].deltaToday))+" today ",1)):f("v-if",!0)]))),128))]))],2),f(" Before / after "),t[22]||(t[22]=n("section",{class:"paper-section-head paper-wrap"},[n("div",null,[n("div",{class:"paper-eyebrow"},"Try it"),n("h2",null,[g("The same repository, "),n("em",null,"minus you.")])]),n("p",null," Names, affiliations, emails, and any term you list are replaced across the README, source files, notebooks, and PDF links. Reviewers browse the real thing, not a zip. ")],-1)),n("div",jU,[n("div",GU,[t[13]||(t[13]=n("label",{for:"demo-terms"},[g("Terms to redact "),n("span",null,[g("comma-separated"),n("span",{class:"dt-try"},", try adding your own")])],-1)),P(n("textarea",{id:"demo-terms",class:"demo-terms-input",rows:"1","onUpdate:modelValue":t[0]||(t[0]=i=>e.demoTerms=i),spellcheck:"false",autocomplete:"off",onKeydown:t[1]||(t[1]=mt(ce(()=>{},["prevent"]),["enter"]))},null,544),[[dt,e.demoTerms]])]),n("div",WU,[n("div",KU,[t[15]||(t[15]=n("div",{class:"pane-header"},[n("span",{class:"pane-label"},[g("Your repository "),n("span",{class:"pane-edit-hint"},"\xB7 editable")]),n("span",{class:"pane-url"},"github.com/jane-smith/DeepLearnUtils")],-1)),n("div",YU,[n("div",XU,[(l(!0),d(L,null,ie(e.demoParts(),(i,s)=>(l(),d(L,{key:s},[i.redacted?(l(),d("mark",JU,c(i.original),1)):(l(),d(L,{key:1},[g(c(i.text),1)],64))],64))),128)),t[14]||(t[14]=g("\u200B",-1))]),P(n("textarea",{class:"pane-body demo-input","onUpdate:modelValue":t[2]||(t[2]=i=>e.demoText=i),spellcheck:"false","aria-label":"Sample README to anonymize"},null,512),[[dt,e.demoText]])])]),n("div",QU,[n("div",ZU,[t[16]||(t[16]=n("span",{class:"pane-label"},"What reviewers see",-1)),n("span",xU,[n("span",eF,c(e.demoCount())+" redacted",1)])]),n("div",tF,[(l(!0),d(L,null,ie(e.demoParts(),(i,s)=>(l(),d(L,{key:s},[i.redacted?(l(),d("span",{key:0,class:"redact-chip",title:"Replaces \u201C"+i.original+"\u201D"},c(i.text),9,nF)):(l(),d(L,{key:1},[g(c(i.text),1)],64))],64))),128))])])])]),f(" What you get: one screenshot, three tabs "),t[23]||(t[23]=n("section",{class:"paper-section-head paper-wrap",id:"about"},[n("div",null,[n("div",{class:"paper-eyebrow"},"What you get"),n("h2",null,"Anonymize, review, manage.")]),n("p",null," Terms are redacted in text files. Enabled images and PDFs are served unchanged, so review them for identifying content before sharing. Monitor your mirror, update it, or remove it when the review is over. ")],-1)),n("section",oF,[n("div",sF,[(l(!0),d(L,null,ie(e.features,(i,s)=>(l(),d("div",{class:T(["paper-feature",{"is-on":e.feature===i?.key}]),key:i?.key},[n("button",{type:"button",class:"paper-feature-tab",role:"tab",onClick:r=>e.selectFeature(i.key),onKeydown:r=>e.featureKeydown(r,s),id:"feature-tab-"+i?.key,"aria-controls":"feature-panel-"+i?.key,"aria-selected":e.feature===i?.key,tabindex:e.feature===i?.key?0:-1},[n("span",rF,[n("span",aF,c(i?.num),1),t[17]||(t[17]=n("span",{class:"pf-sep"}," \xB7 ",-1)),n("span",lF,c(i?.eyebrow),1)]),n("span",dF,[g(c(i?.title.split("-")[0]),1),i?.title.includes("-")?(l(),d("span",uF,"-")):f("v-if",!0),g(c(i?.title.split("-").slice(1).join("-"))+" "+c(i?.accent),1)])],40,iF),n("div",cF,[n("span",pF,[g(c(i?.title.split("-")[0]),1),i?.title.includes("-")?(l(),d("span",fF,"-")):f("v-if",!0),g(c(i?.title.split("-").slice(1).join("-"))+" "+c(i?.accent),1)]),n("p",null,c(i?.text),1),n("a",{class:"paper-link-arrow",href:e.safeUrl(e.featureHref(i)),target:e.featureTarget(i)},c(i?.cta)+" \u2192",9,hF)])],2))),128))]),n("div",mF,[(l(!0),d(L,null,ie(e.features,(i,s)=>P((l(),d("div",{class:"paper-feature-panel",role:"tabpanel",key:i?.key,id:"feature-panel-"+i?.key,"aria-labelledby":"feature-tab-"+i?.key},[n("div",vF,[n("div",yF,[t[18]||(t[18]=n("span",{class:"dots"},[n("i"),n("i"),n("i")],-1)),n("span",bF,c(i?.url),1)]),n("div",{class:T(["feat-mock","is-"+i?.key]),role:"img","aria-label":i?.alt},[i?.key==="anonymize"?(l(),d("div",kF,[...t[19]||(t[19]=[Ce('
GitHub repository
github.com/jane-smith/DeepLearnUtils
Terms to redact
Jane SmithMIT CSAILjane.smith@mit.edu+ Add term
Reviewers can see
ImagesPDFsLinksNotebooks
Expires
Mar 31, 2027
Anonymize repository
',6)])])):i?.key==="review"?(l(),d("div",CF,[...t[20]||(t[20]=[Ce(`
data
src
train.py
README.md
LICENSE
train.py48 lines \xB7 Python
1# Training loop for DeepLearnUtils
 2# Author: XXXX-1, XXXX-2
 3import torch
 4from utils import load_config
@@ -47,15 +54,14 @@ python experiments/run.py`),n("p",null,[y("Contact: "),n("span",{class:"redact",
 7    model = build_model(config)
 8    for epoch in range(config.epochs):
 9        loss = step(model)
-10        log("epoch %d: %.3f", epoch, loss)
`,2)])])):(l(),d("div",Kq,[...t[17]||(t[17]=[ke('
ProjectStatusViewsExpires
DeepLearnUtilspaper-7f2a \xB7 ICSE 2027Ready41Mar 31, 2027
vision-bench#212pull request \xB7 FSE 2027Ready12Never
graph-repairgr-91abUpdating5Jan 5, 2027
JarSiftOOPSLA 2025Expired72Sep 28, 2026
',5)])]))],10,jq)])],8,Fq)),[[J,e.feature===o?.key]])),128))])]),f(" FAQ teaser "),t[27]||(t[27]=ke('
Before you sign in

The questions that come up most.

Read the full FAQ \u2192
What access does GitHub sign-in require?

The GitHub App has read-only access to gists and the repositories you choose. Legacy OAuth uses broader permissions. Anonymous GitHub never writes to your repositories.

Which file formats are supported?

Source code with syntax highlighting, Markdown, Jupyter notebooks, PDFs, images, and GitHub Pages sites. Text files are anonymized; enabled images and PDFs are served unchanged.

What happens when an anonymized repository expires?

You choose: the mirror is removed, or visitors are redirected to the original GitHub repository once the review is over.

Ready for review?

Create an anonymous mirror in a couple of minutes. Reviewers just open the link.

',2)),n("footer",Yq,[n("div",Xq,[t[21]||(t[21]=n("div",{class:"paper-footer-brand"},[n("div",{class:"paper-footer-mark"},[y("Anonymous "),n("em",null,"GitHub")]),n("p",{class:"paper-footer-tag"}," A read-only, identity-stripped mirror of your repository, built for double-anonymous peer review. ")],-1)),n("div",Jq,[t[18]||(t[18]=n("div",{class:"paper-footer-head"},"Product",-1)),t[19]||(t[19]=n("a",{href:"/anonymize"},"Anonymize",-1)),e.user?(l(),d("a",Qq,"My work")):f("v-if",!0),e.user?(l(),d("a",Zq,"Conferences")):f("v-if",!0),t[20]||(t[20]=n("a",{href:"/faq"},"FAQ",-1))]),t[22]||(t[22]=ke('',2))]),t[24]||(t[24]=n("div",{class:"paper-footer-rule"},null,-1)),n("div",xq,[n("span",null,"\xA9 "+c(e.year||2026)+" Anonymous GitHub \xB7 GPL-3.0 licensed",1),t[23]||(t[23]=n("span",{class:"paper-footer-meta"},"Built for reviewers, by researchers.",-1))])])])}var e$={class:"paper-empty"},t$={class:"paper-empty-inner"},n$={key:0,class:"paper-eyebrow"},o$={key:1,class:"paper-eyebrow"},s$={key:2,class:"paper-empty-title"},i$=["textContent"];function Oc(e,t){return l(),d("div",e$,[n("div",t$,[e.error?f("v-if",!0):(l(),d("div",n$,"Working")),e.error?(l(),d("div",o$,"Error")):f("v-if",!0),e.error?f("v-if",!0):(l(),d("h1",s$,[...t[0]||(t[0]=[y(" Loading",-1),n("span",{class:"dot-anim"},"\u2026",-1)])])),e.error?(l(),d("h1",{key:3,class:"paper-empty-title",textContent:c(e.fmt.translate(e.error))},null,8,i$)):f("v-if",!0)])])}var r$={class:"container paper-page paper-settings"},a$={class:"paper-crumbs"},l$={class:"here"},d$={class:"paper-page-title"},u$={class:"paper-settings-body"},c$={class:"paper-settings-toc"},p$={href:"#conf-billing"},f$={class:"form needs-validation paper-settings-main",name:"conference",novalidate:""},h$={id:"conf-basics",class:"paper-settings-section"},m$={class:"form-group"},g$={class:"invalid-feedback"},v$={class:"invalid-feedback"},y$={class:"form-group"},b$={class:"invalid-feedback"},w$={class:"form-group"},k$={class:"invalid-feedback"},C$={class:"invalid-feedback"},E$={id:"conf-window",class:"paper-settings-section"},S$={class:"form-grid-2"},N$={class:"form-group"},R$={class:"invalid-feedback"},D$={class:"invalid-feedback"},A$={class:"form-group"},T$={class:"invalid-feedback"},P$={class:"invalid-feedback"},_$={id:"conf-rendering",class:"paper-settings-section"},O$={class:"form-check"},I$={class:"form-check-input",type:"checkbox",id:"link",name:"link"},M$={class:"form-check"},V$={class:"form-check-input",type:"checkbox",id:"image",name:"image"},q$={class:"form-check"},$$={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},L$={class:"form-check"},U$={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},F$={id:"conf-features",class:"paper-settings-section"},B$={class:"form-check"},z$={class:"form-check-input",type:"checkbox",id:"update",name:"update"},H$={class:"form-check"},j$={class:"form-check-input",type:"checkbox",id:"page",name:"page"},G$={id:"conf-plan",class:"paper-settings-section"},W$={key:0,class:"paper-section-copy"},K$={class:"conference-tiers",role:"radiogroup","aria-label":"Review package size"},Y$=["value","checked","onChange"],X$={class:"conference-tier-head"},J$={key:0,class:"conference-tier-pill"},Q$={class:"conference-tier-who"},Z$={key:0,class:"conference-tier-price"},x$={class:"conference-tier-size"},eL={key:1,class:"conference-tier-per"},tL={key:2,class:"paper-plan-grid"},nL=["value"],oL=["textContent"],sL={class:"paper-plan-price"},iL=["innerHTML"],rL={key:3,class:"settings-notice",role:"status"},aL={key:0,id:"conf-billing",class:"paper-settings-section"},lL={class:"form-group"},dL={class:"form-group"},uL={class:"form-group"},cL={class:"form-group"},pL={class:"form-grid-3"},fL={class:"form-group"},hL={class:"form-group"},mL={class:"form-group"},gL={class:"form-group"},vL={class:"paper-settings-footer"},yL=["textContent"],bL=["textContent"],wL=["disabled"];function Ic(e,t){let o=De("paper-scrollspy"),i=De("field"),s=De("form");return l(),d("div",r$,[n("div",a$,[t[1]||(t[1]=n("a",{href:"/dashboard"},"My work",-1)),t[2]||(t[2]=y(" \xA0/\xA0 ",-1)),t[3]||(t[3]=n("a",{href:"/conferences"},"Conferences",-1)),t[4]||(t[4]=y(" \xA0/\xA0 ",-1)),n("span",l$,c(e.editionMode?"Edit":"New"),1)]),n("h1",d$,[y(c(e.editionMode?"Edit":"Create a")+" ",1),t[5]||(t[5]=n("em",null,"conference",-1))]),t[44]||(t[44]=n("p",{class:"paper-page-lede"}," Give chairs access to every anonymization submitted to a venue. One payment hosts every submission, so authors don't pay during the review window. ",-1)),n("div",u$,[A((l(),d("aside",c$,[t[7]||(t[7]=n("div",{class:"paper-settings-toc-head"},"On this page",-1)),n("nav",null,[t[6]||(t[6]=ke('BasicsReview windowRendering defaultsFeaturesPlan',5)),A(n("a",p$,"Billing",512),[[J,e.plan?.pricePerRepo>0]])])])),[[o]]),A((l(),d("form",f$,[n("section",h$,[t[12]||(t[12]=n("div",{class:"paper-section-eyebrow"},"Basics",-1)),n("div",m$,[t[8]||(t[8]=n("label",{class:"paper-field-label",for:"name"},"Conference name",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.name?.invalid&&(e.conference?.name?.touched||e.conference?.submitted)}]),name:"name",id:"name",required:"",placeholder:"e.g. International Conference on Software Engineering"},null,2),[[i,{state:e.viewState,set:r=>{e.options.name=r},value:e.options?.name,form:"conference",options:{}}]]),A(n("div",g$," The name of the conference is invalid. ",512),[[J,e.conference?.name?.errors?.invalid]]),A(n("div",v$," The name of the conference is required. ",512),[[J,e.conference?.name?.errors?.required]])]),n("div",y$,[t[9]||(t[9]=n("label",{class:"paper-field-label",for:"url"},"Website",-1)),A(n("input",{type:"url",class:P(["form-control",{"is-invalid":e.conference?.url?.invalid&&(e.conference?.url?.touched||e.conference?.submitted)}]),name:"url",id:"url",placeholder:"https://example.org"},null,2),[[i,{state:e.viewState,set:r=>{e.options.url=r},value:e.options?.url,form:"conference",options:{}}]]),A(n("div",b$," The url of the conference is invalid. ",512),[[J,e.conference?.url?.errors?.url]])]),n("div",w$,[t[10]||(t[10]=n("label",{class:"paper-field-label",for:"conferenceID"},"Conference ID",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.conferenceID?.invalid&&(e.conference?.conferenceID?.touched||e.conference?.submitted)}]),name:"conferenceID",id:"conferenceID",required:"",pattern:"[a-zA-Z0-9\\-_]{3,10}",placeholder:"ICSE26"},null,2),[[i,{state:e.viewState,set:r=>{e.options.conferenceID=r},value:e.options?.conferenceID,form:"conference",options:{}}]]),t[11]||(t[11]=n("small",{class:"form-text text-muted"},[y("3\u201310 characters, letters, numbers, "),n("code",null,"-"),y(" and "),n("code",null,"_"),y(". Authors reference this when they anonymize.")],-1)),A(n("div",{class:"invalid-feedback"}," The conference ID '"+c(e.options?.conferenceID)+"' is already used. ",513),[[J,e.conference?.conferenceID?.errors?.used]]),A(n("div",k$," The conference ID is required. ",512),[[J,e.conference?.conferenceID?.errors?.required]]),A(n("div",C$," The format of the conference ID is incorrect ([a-zA-Z0-9-_]{3,10}). ",512),[[J,e.conference?.conferenceID?.errors?.pattern]])])]),n("section",E$,[t[17]||(t[17]=n("div",{class:"paper-section-eyebrow"},"Review window",-1)),n("div",S$,[n("div",N$,[t[13]||(t[13]=n("label",{class:"paper-field-label",for:"startDate"},"Start date",-1)),A(n("input",{type:"date",class:P(["form-control",{"is-invalid":e.conference?.startDate?.invalid&&(e.conference?.startDate?.touched||e.conference?.submitted)}]),name:"startDate",id:"startDate",required:""},null,2),[[i,{state:e.viewState,set:r=>{e.options.startDate=r},value:e.options?.startDate,form:"conference",options:{}}]]),t[14]||(t[14]=n("small",{class:"form-text text-muted"},"Beginning of the review process.",-1)),A(n("div",R$," Start date is required. ",512),[[J,e.conference?.startDate?.errors?.required]]),A(n("div",D$," Start date must be before end date. ",512),[[J,e.conference?.startDate?.errors?.invalid]])]),n("div",A$,[t[15]||(t[15]=n("label",{class:"paper-field-label",for:"endDate"},"End date",-1)),A(n("input",{type:"date",class:P(["form-control",{"is-invalid":e.conference?.endDate?.invalid&&(e.conference?.endDate?.touched||e.conference?.submitted)}]),name:"endDate",id:"endDate",required:""},null,2),[[i,{state:e.viewState,set:r=>{e.options.endDate=r},value:e.options?.endDate,form:"conference",options:{}}]]),t[16]||(t[16]=n("small",{class:"form-text text-muted"},"All repositories expire on this date.",-1)),A(n("div",T$," End date is required. ",512),[[J,e.conference?.endDate?.errors?.required]]),A(n("div",P$," End date is invalid. ",512),[[J,e.conference?.endDate?.errors?.invalid]])])])]),n("section",_$,[t[26]||(t[26]=n("div",{class:"paper-section-eyebrow"},"Rendering defaults",-1)),n("div",O$,[A(n("input",I$,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.link=r},value:e.options?.options?.link,form:"conference",options:{}}]]),t[18]||(t[18]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[19]||(t[19]=n("small",{class:"form-text text-muted"},"Keep or remove all links from text files.",-1))]),n("div",M$,[A(n("input",V$,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.image=r},value:e.options?.options?.image,form:"conference",options:{}}]]),t[20]||(t[20]=n("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[21]||(t[21]=n("small",{class:"form-text text-muted"},"Images are not anonymized.",-1))]),n("div",q$,[A(n("input",$$,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.pdf=r},value:e.options?.options?.pdf,form:"conference",options:{}}]]),t[22]||(t[22]=n("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1)),t[23]||(t[23]=n("small",{class:"form-text text-muted"},"PDFs are not anonymized.",-1))]),n("div",L$,[A(n("input",U$,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.notebook=r},value:e.options?.options?.notebook,form:"conference",options:{}}]]),t[24]||(t[24]=n("label",{class:"form-check-label",for:"notebook"},"Display notebooks",-1)),t[25]||(t[25]=n("small",{class:"form-text text-muted"},"Render Jupyter notebooks instead of raw JSON.",-1))])]),n("section",F$,[t[31]||(t[31]=n("div",{class:"paper-section-eyebrow"},"Features",-1)),n("div",B$,[A(n("input",z$,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.update=r},value:e.options?.options?.update,form:"conference",options:{}}]]),t[27]||(t[27]=n("label",{class:"form-check-label",for:"update"},"Auto-update from GitHub",-1)),t[28]||(t[28]=n("small",{class:"form-text text-muted"},"Pull the latest commit automatically (hourly maximum).",-1))]),n("div",H$,[A(n("input",j$,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.page=r},value:e.options?.options?.page,form:"conference",options:{}}]]),t[29]||(t[29]=n("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),t[30]||(t[30]=n("small",{class:"form-text text-muted"},"Enable anonymized GitHub pages.",-1))])]),n("section",G$,[t[35]||(t[35]=n("div",{class:"paper-section-eyebrow"},"Plan",-1)),e.editionMode?(l(),d("p",W$,c(e.conferencePlanName(e.options?.plan?.planID))+". The plan and review dates can't change after creation.",1)):e.conferenceTiers().length?(l(),d(B,{key:1},[t[33]||(t[33]=n("p",{class:"paper-section-copy"},"Pick the package that fits the number of submissions you expect. One payment hosts every submission, so authors don't pay.",-1)),n("div",K$,[(l(!0),d(B,null,ie(e.conferenceTiers(),r=>(l(),d("label",{class:P(["conference-tier",{"is-selected":e.options?.plan?.planID===r.id}]),key:r.id},[n("input",{type:"radio",name:"planPicker",value:r.id,checked:e.options?.plan?.planID===r.id,onChange:a=>e.options.plan.planID=r.id},null,40,Y$),n("span",X$,[n("strong",null,c(r.name),1),r.id==="conference"&&e.conferenceTiers().length>1?(l(),d("span",J$,"Most common")):f("v-if",!0)]),n("span",Q$,c(e.conferenceAudience(r.id)),1),r.amount!=null?(l(),d("span",Z$,[n("strong",null,c(e.conferenceAmount(r)),1),t[32]||(t[32]=y(" once",-1))])):f("v-if",!0),n("span",x$,"Up to "+c(r.repositories)+" papers \xB7 "+c(e.conferenceBytes(r.storage)),1),r.amount!=null&&r.repositories?(l(),d("span",eL,"About "+c(e.conferenceAmount(r,r.amount/r.repositories))+" per paper",1)):f("v-if",!0)],2))),128))]),t[34]||(t[34]=ke('

Every package includes

  • A review window of up to 180 days
  • Automatic updates for every submission
  • Links stay online until the review window ends
  • A dashboard of every submission for chairs

Nothing renews \xB7 Tax shown at checkout \xB7 Expecting more submissions? Email tdurieux@anonymous.4open.science

Create the conference, then pay from its page. Authors can submit once the payment is confirmed.

',2))],64)):e.plans.length?(l(),d("div",tL,[(l(!0),d(B,null,ie(e.plans,r=>(l(),d("label",{class:P(["paper-plan-card",{selected:e.options?.plan?.planID==r?.id}]),key:r.id},[A(n("input",{type:"radio",name:"planPicker",value:r?.id},null,8,nL),[[i,{state:e.viewState,set:a=>{e.options.plan.planID=a},value:e.options?.plan?.planID,form:"conference",options:{}}]]),n("div",{class:"paper-plan-head",textContent:c(r?.name)},null,8,oL),n("div",sL,c(r.pricePerRepo>0?e.fmt?.number(r.pricePerRepo,2)+" \u20AC per repository":"Free"),1),n("div",{class:"paper-plan-desc",innerHTML:e.sanitize(r?.description)},null,8,iL)],2))),128))])):e.plansLoaded?(l(),d("p",rL,"New conferences are unavailable right now. Please try again later.")):f("v-if",!0)]),e.plan?.pricePerRepo>0?(l(),d("section",aL,[t[43]||(t[43]=n("div",{class:"paper-section-eyebrow"},"Billing",-1)),n("div",lL,[t[36]||(t[36]=n("label",{class:"paper-field-label",for:"billing_name"},"Name",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.billing_name?.invalid&&(e.conference?.billing_name?.touched||e.conference?.submitted)}]),name:"billing_name",id:"billing_name",required:"",placeholder:"First & last name"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.name=r},value:e.options?.billing?.name,form:"conference",options:{}}]])]),n("div",dL,[t[37]||(t[37]=n("label",{class:"paper-field-label",for:"email"},"Email",-1)),A(n("input",{type:"email",class:P(["form-control",{"is-invalid":e.conference?.email?.invalid&&(e.conference?.email?.touched||e.conference?.submitted)}]),name:"email",id:"email",required:"",placeholder:"you@example.org"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.email=r},value:e.options?.billing?.email,form:"conference",options:{}}]])]),n("div",uL,[t[38]||(t[38]=n("label",{class:"paper-field-label",for:"inputAddress"},"Address",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.inputAddress?.invalid&&(e.conference?.inputAddress?.touched||e.conference?.submitted)}]),name:"inputAddress",id:"inputAddress",required:"",placeholder:"1234 Main St"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.address=r},value:e.options?.billing?.address,form:"conference",options:{}}]])]),n("div",cL,[A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.inputAddress2?.invalid&&(e.conference?.inputAddress2?.touched||e.conference?.submitted)}]),name:"inputAddress2",id:"inputAddress2",placeholder:"Apartment, studio, or floor"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.address2=r},value:e.options?.billing?.address2,form:"conference",options:{}}]])]),n("div",pL,[n("div",fL,[t[39]||(t[39]=n("label",{class:"paper-field-label",for:"city"},"City",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.city?.invalid&&(e.conference?.city?.touched||e.conference?.submitted)}]),name:"city",id:"city",required:"",placeholder:"City"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.city=r},value:e.options?.billing?.city,form:"conference",options:{}}]])]),n("div",hL,[t[40]||(t[40]=n("label",{class:"paper-field-label",for:"country"},"Country",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.country?.invalid&&(e.conference?.country?.touched||e.conference?.submitted)}]),name:"country",id:"country",required:"",placeholder:"Country"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.country=r},value:e.options?.billing?.country,form:"conference",options:{}}]])]),n("div",mL,[t[41]||(t[41]=n("label",{class:"paper-field-label",for:"zip"},"Zip",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.zip?.invalid&&(e.conference?.zip?.touched||e.conference?.submitted)}]),name:"zip",id:"zip",required:"",placeholder:"Zip"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.zip=r},value:e.options?.billing?.zip,form:"conference",options:{}}]])])]),n("div",gL,[t[42]||(t[42]=n("label",{class:"paper-field-label",for:"vat"},"VAT number",-1)),A(n("input",{type:"text",class:P(["form-control",{"is-invalid":e.conference?.vat?.invalid&&(e.conference?.vat?.touched||e.conference?.submitted)}]),name:"vat",id:"vat",placeholder:"VAT Number"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.vat=r},value:e.options?.billing?.vat,form:"conference",options:{}}]])])])):f("v-if",!0),n("div",vL,[e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:c(e.error)},null,8,yL)):f("v-if",!0),e.message?(l(),d("div",{key:1,class:"alert alert-success",role:"alert",textContent:c(e.message)},null,8,bL)):f("v-if",!0),n("button",{id:"send",disabled:e.saving,type:"submit",class:"btn btn-ink",onClick:t[0]||(t[0]=ce(r=>e.submitForm(r,()=>{e.submit(r)}),["prevent"]))},c(e.saving?e.editionMode?"Updating\u2026":"Creating\u2026":e.editionMode?"Update conference":"Create conference"),9,wL)])])),[[s,e.viewState]])])])}var kL={key:0,class:"dir-card","aria-label":"Repository files"},CL=["onClick"],EL={class:"dir-name"},SL=["href"],NL={class:"dir-name"},RL={class:"dir-meta"},DL={class:"file-card-head"},AL={class:"file-card-path"},TL={class:"breadcrumb paths","aria-label":"Path"},PL={class:"breadcrumb-item breadcrumb-root"},_L=["href","title","textContent"],OL=["aria-current"],IL=["aria-label"],ML={class:"mobile-sub"},VL={key:0},qL={key:1},$L={key:2},LL=["aria-label","title"],UL={class:"ui-icon","aria-hidden":"true"},FL=["href"],BL={key:0,class:"file-card-meta"},zL={class:"meta-extra"},HL={class:"meta-redact"},jL={key:1,class:"file-card-meta"},GL={class:"meta-redact"},WL={class:"file-card-actions"},KL={key:0,class:"symbols"},YL=["aria-expanded"],XL={key:0,class:"symbols-menu",role:"menu"},JL={class:"symbols-head"},QL=["onClick"],ZL={class:"symbols-name"},xL={class:"symbols-line"},eU=["title"],tU=["title"],nU=["title"],oU=["aria-pressed"],sU={class:"tb-file",role:"group","aria-label":"File actions"},iU=["title","href"],rU=["aria-label","title"],aU={class:"ui-icon","aria-hidden":"true"},lU=["href"],dU=["href"],uU=["aria-label"],cU={class:"ui-icon","aria-hidden":"true"},pU=["href"],fU={key:6,class:"tb-toc-m"},hU=["aria-expanded"],mU=["onClick"],gU={class:"tb-more"},vU=["aria-expanded"],yU={viewBox:"0 0 24 24",class:"ui-icon","aria-hidden":"true",style:{fill:"currentColor",stroke:"none"}},bU={key:0,class:"tb-menu-note"},wU={key:1,class:"tb-menu-note tb-menu-meta"},kU={key:2,class:"tb-menu-sep"},CU={key:4,class:"tb-menu-sep"},EU=["aria-checked"],SU={key:0,class:"tb-menu-check"},NU={key:8,class:"tb-menu-sep"},RU=["href"],DU=["href"],AU=["href"],TU=["href"],PU=["href"],_U=["href"],OU=["placeholder","aria-invalid"],IU={key:0,class:"file-card-body"},MU={key:1,class:"md-find-bar",role:"search"},VU=["value"],qU={class:"md-find-nav"},$U=["disabled"],LU=["disabled"],UU={class:"md-find-count","aria-live":"polite"},FU=["aria-pressed"],BU={key:2,class:"reading-layout"},zU=["innerHTML"],HU={key:0,class:"readme-toc","aria-label":"On this page"},jU={class:"toc-rail"},GU=["href","onClick"],WU=["src"],KU=["src"],YU={key:6},XU={controls:"controls"},JU=["src"],QU={key:7},ZU={key:8,class:"file-error container d-flex h-100"},xU={class:"paper-ratelimit-card m-auto",style:{"max-width":"520px"}},eF={class:"paper-error-msg"},tF={key:9,class:"file-error container d-flex h-100"},nF={class:"viewer-error paper-error-card file-error-card m-auto",role:"alert","aria-labelledby":"viewer-error-title"},oF={id:"viewer-error-title",class:"paper-empty-title"},sF={class:"paper-error-actions"},iF={key:0,href:"/",class:"btn btn-sm"},rF={key:1,href:"/faq",class:"btn btn-sm"},aF={key:2,class:"btn btn-outline-ink",href:"/dashboard"},lF={key:10,class:"viewer-loading","aria-busy":"true"},dF={class:"viewer-loading-status",role:"status","aria-live":"polite"},uF={class:"viewer-loading-name sr-only"},cF={key:0},pF={class:"viewer-loading-lines","aria-hidden":"true"},fF={key:11,class:"file-error container d-flex h-100"},hF={key:12,class:"file-error container d-flex h-100"},mF={key:13,class:"file-error container d-flex h-100"},gF={class:"paper-empty-title m-auto"},vF=["href"];function Mc(e,t){let o=at("html-doc"),i=at("pdfviewer"),s=at("notebook"),r=De("code-editor");return l(),d(B,null,[e.sidebarHidden&&e.type=="html"&&e.content!=null&&e.paths?.length===1&&/^readme/i.test(e.paths[0]||"")&&e.files?.length?(l(),d("section",kL,[t[35]||(t[35]=n("header",{class:"dir-card-head"},[n("span",{class:"dir-card-title"},"Files"),n("span",{class:"dir-card-sub"},"Snapshot of the repository at review time")],-1)),n("ul",{class:P(["dir-list",{"is-expanded":e.dirExpanded}])},[(l(!0),d(B,null,ie(e.rootEntries(),a=>(l(),d("li",{key:a.name},[a.size==null?(l(),d("button",{key:0,type:"button",class:"dir-row",onClick:u=>e.revealFolder(a.name)},[t[32]||(t[32]=n("svg",{class:"dir-icon",viewBox:"0 0 16 16","aria-hidden":"true"},[n("path",{d:"M1.5 3.5h4l1.5 1.5h7.5v8h-13z"})],-1)),n("span",EL,c(a.name),1),t[33]||(t[33]=n("span",{class:"dir-meta"},"Folder",-1))],8,CL)):(l(),d("a",{key:1,class:P(["dir-row",{"is-current":a.name===e.paths[0]}]),href:e.safeUrl("/r/"+e.repoId+"/"+encodeURIComponent(a.name))},[t[34]||(t[34]=n("svg",{class:"dir-icon",viewBox:"0 0 16 16","aria-hidden":"true"},[n("path",{d:"M3.5 1.5h6l3 3v10h-9z"})],-1)),n("span",NL,c(a.name),1),n("span",RL,c(e.formatSize(a.size)),1)],10,SL))]))),128))],2),!e.dirExpanded&&e.files.length>8?(l(),d("button",{key:0,type:"button",class:"dir-more",onClick:t[0]||(t[0]=a=>e.dirExpanded=!0)},"Show all "+c(e.files.length)+" items",1)):f("v-if",!0)])):f("v-if",!0),(e.type=="text"||e.type=="code"||e.type=="html"||e.type=="html-doc"&&e.showSource)&&e.content!=null?(l(),d("section",{key:1,class:P(["file-card",{"is-code":e.type!="html","no-wrap":!e.wrapLines}])},[n("header",DL,[n("div",AL,[n("button",{type:"button",class:P(["btn btn-sm btn-icon-only btn-ghost card-files-btn",{"is-needed":e.sidebarHidden}]),"aria-label":"Show file tree",title:"Show file tree",onClick:t[1]||(t[1]=a=>e.sidebarHidden?e.sidebarHidden=!1:e.sidebarCollapsed=!1)},[...t[36]||(t[36]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-sidebar"})],-1)])],2),n("ol",TL,[n("li",PL,[n("a",{href:e.safeUrl("/r/"+e.repoId+"/"),title:e.repoId,textContent:c(/^[0-9a-f]{8}-[0-9a-f]{4}-/i.test(e.repoId||"")?"repository":e.repoId)},null,8,_L)]),(l(!0),d(B,null,ie(e.paths,(a,u)=>(l(),d("li",{class:"breadcrumb-item","aria-current":u===e.paths.length-1?"page":null},[(l(!0),d(B,null,ie(e.redactParts(a),(p,v)=>(l(),d(B,{key:v},[p.n?(l(),d("span",{key:0,class:"redact-slot",role:"img","aria-label":"Redacted term "+p.n},[n("i",null,c(p.n),1)],8,IL)):(l(),d(B,{key:1},[y(c(p.t),1)],64))],64))),128))],8,OL))),256))]),n("span",ML,[n("span",null,c(e.type=="html"?"Markdown":e.languageName||"Text"),1),e.type!="html"&&typeof e.content=="string"?(l(),d("span",VL,c(e.fmt?.number(e.content.split(` -`).length))+" lines",1)):f("v-if",!0),e.type=="html"&&e.fileSize(e.filePath)!=null?(l(),d("span",qL,c(e.formatSize(e.fileSize(e.filePath))),1)):f("v-if",!0),e.redactionCount()?(l(),d("b",$L,c(e.redactionCount())+" redacted",1)):f("v-if",!0)]),A(n("button",{type:"button",class:"btn btn-sm btn-icon-only btn-ghost copy-path-btn","aria-label":e.pathCopied?"Path copied":"Copy file path",title:e.pathCopied?"Path copied":"Copy file path",onClick:t[2]||(t[2]=a=>e.copyPath())},[(l(),d("svg",UL,[n("use",{href:e.pathCopied?"#ui-icon-check":"#ui-icon-link"},null,8,FL)]))],8,LL),[[J,e.filePath]])]),e.type!="html"&&typeof e.content=="string"?(l(),d("span",BL,[e.languageName?(l(),d(B,{key:0},[y(c(e.languageName),1),t[37]||(t[37]=n("span",{class:"sep"},"\xB7",-1))],64)):f("v-if",!0),y(c(e.fmt?.number(e.content.split(` -`).length))+" lines",1),n("span",zL,[t[38]||(t[38]=n("span",{class:"sep"},"\xB7",-1)),y(c(e.content.length<1024?e.content.length+" B":(e.content.length/1024).toFixed(1)+" KB"),1)]),e.redactionCount()?(l(),d(B,{key:1},[t[39]||(t[39]=n("span",{class:"sep"},"\xB7",-1)),n("span",HL,c(e.redactionCount())+" redacted",1)],64)):f("v-if",!0)])):f("v-if",!0),e.type=="html"?(l(),d("span",jL,[t[42]||(t[42]=y("Markdown",-1)),e.fileSize(e.filePath)!=null?(l(),d(B,{key:0},[t[40]||(t[40]=n("span",{class:"sep"},"\xB7",-1)),y(c(e.formatSize(e.fileSize(e.filePath))),1)],64)):f("v-if",!0),e.redactionCount()?(l(),d(B,{key:1},[t[41]||(t[41]=n("span",{class:"sep"},"\xB7",-1)),n("span",GL,c(e.redactionCount())+" redacted",1)],64)):f("v-if",!0)])):f("v-if",!0),n("div",WL,[e.type!="html"&&e.symbols().length>1?(l(),d("div",KL,[n("button",{type:"button",class:P(["btn btn-sm btn-ghost btn-symbols",{"is-on":e.symbolsOpen}]),"aria-expanded":e.symbolsOpen?"true":"false","aria-haspopup":"true",title:"Symbols in this file",onClick:t[3]||(t[3]=a=>e.symbolsOpen=!e.symbolsOpen)},[...t[43]||(t[43]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-list"})],-1),n("span",{class:"btn-find-label"},"Symbols",-1)])],10,YL),e.symbolsOpen?(l(),d("div",XL,[n("div",JL,c(e.symbols().length)+" "+c(e.symbols().length===1?"symbol":"symbols"),1),(l(!0),d(B,null,ie(e.symbols(),a=>(l(),d("button",{type:"button",class:"symbols-item",role:"menuitem",key:a.line+a.name,onClick:u=>e.goToSymbol(a.line)},[n("span",{class:P(["symbols-kind","is-"+a.kind])},c(a.kind==="class"?"C":a.kind==="function"?"\u0192":"v"),3),n("span",ZL,c(a.name),1),n("span",xL,c(a.line),1)],8,QL))),128))])):f("v-if",!0)])):f("v-if",!0),e.type=="html"?(l(),d("button",{key:1,type:"button",class:P(["btn btn-sm btn-ghost btn-icon-only btn-find btn-md-find",{"is-on":e.mdFindOpen}]),"aria-label":"Find on this page",title:"Find on this page ("+(e.isMac?"\u2318":"Ctrl+")+"F)",onClick:t[4]||(t[4]=a=>e.toggleMdFind())},[...t[44]||(t[44]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)])],10,eU)):f("v-if",!0),e.type!="html"?(l(),d("button",{key:2,type:"button",class:"btn btn-sm btn-ghost btn-icon-only btn-find","aria-label":"Find in file",title:"Find in file ("+(e.isMac?"\u2318":"Ctrl+")+"F)",onClick:t[5]||(t[5]=a=>e.findInFile())},[...t[45]||(t[45]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)])],8,tU)):f("v-if",!0),e.type!="html"?(l(),d("button",{key:3,type:"button",class:"btn btn-sm btn-ghost btn-icon-only btn-goto","aria-label":"Go to line",title:"Go to line ("+(e.isMac?"\u2318":"Ctrl+")+"G)",onClick:t[6]||(t[6]=a=>e.gotoLine())},[...t[46]||(t[46]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-goto"})],-1)])],8,nU)):f("v-if",!0),e.type!="html"?(l(),d("button",{key:4,type:"button",class:P(["btn btn-sm btn-icon-only btn-ghost btn-toggle",{"is-on":e.wrapLines}]),"aria-pressed":e.wrapLines?"true":"false","aria-label":"Wrap long lines",title:"Wrap long lines (Alt+Z)",onClick:t[7]||(t[7]=a=>e.toggleWrap())},[...t[47]||(t[47]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-wrap"})],-1)])],10,oU)):f("v-if",!0),n("div",sU,[n("a",{target:"_self",class:"tb-seg-btn",title:e.type=="html"?"Open the Markdown source":"Open the raw file",href:e.safeUrl(e.url)},"Raw",8,iU),typeof e.content=="string"?(l(),d("button",{key:0,type:"button",class:"tb-seg-btn tb-seg-icon","aria-label":e.contentCopied?"Copied":"Copy file contents",title:e.contentCopied?"Copied":"Copy file contents",onClick:t[8]||(t[8]=a=>e.copyContent())},[(l(),d("svg",aU,[n("use",{href:e.contentCopied?"#ui-icon-check":"#project-icon-copy"},null,8,lU)]))],8,rU)):f("v-if",!0),n("a",{target:"_self",class:"tb-seg-btn tb-seg-icon","aria-label":"Download file",title:"Download file",href:e.safeUrl(e.url+"&download=true")},[...t[48]||(t[48]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1)])],8,dU)]),typeof e.content=="string"?(l(),d("button",{key:5,type:"button",class:"btn btn-sm btn-icon-only btn-ghost tb-copy-m","aria-label":e.contentCopied?"Copied":"Copy file contents",onClick:t[9]||(t[9]=a=>e.copyContent())},[(l(),d("svg",cU,[n("use",{href:e.contentCopied?"#ui-icon-check":"#project-icon-copy"},null,8,pU)]))],8,uU)):f("v-if",!0),e.type=="html"&&e.readmeToc().length>=3?(l(),d("div",fU,[n("button",{type:"button",class:P(["btn btn-sm btn-icon-only btn-ghost tb-toc-btn",{"is-on":e.tocOpen}]),"aria-label":"On this page",title:"On this page","aria-haspopup":"true","aria-expanded":e.tocOpen?"true":"false",onClick:t[10]||(t[10]=ce(a=>{e.tocOpen=!e.tocOpen,e.moreOpen=!1},["stop"]))},[...t[49]||(t[49]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-outline"})],-1)])],10,hU),e.tocOpen?(l(),d("div",{key:0,class:"tb-menu tb-toc-menu",role:"menu",onClick:t[12]||(t[12]=a=>e.tocOpen=!1)},[t[50]||(t[50]=n("div",{class:"tb-menu-label"},"On this page",-1)),n("button",{type:"button",role:"menuitem",class:P(["tb-menu-toc","lvl-2",{"is-active":!e.activeHeading}]),onClick:t[11]||(t[11]=a=>e.scrollToHeading(null))},"Introduction",2),(l(!0),d(B,null,ie(e.readmeToc(),a=>(l(),d("button",{type:"button",role:"menuitem",key:"m-"+a.id,class:P(["tb-menu-toc","lvl-"+a.level,{"is-active":e.activeHeading===a.id}]),onClick:u=>e.scrollToHeading(a.id)},c(a.text),11,mU))),128))])):f("v-if",!0)])):f("v-if",!0),n("div",gU,[n("button",{type:"button",class:P(["btn btn-sm btn-icon-only btn-ghost tb-more-btn",{"is-on":e.moreOpen}]),"aria-label":"More actions","aria-haspopup":"true","aria-expanded":e.moreOpen?"true":"false",onClick:t[13]||(t[13]=ce(a=>{e.tocOpen=!1,e.moreOpen=!e.moreOpen},["stop"]))},[(l(),d("svg",yU,[...t[51]||(t[51]=[n("circle",{cx:"5",cy:"12",r:"1.8"},null,-1),n("circle",{cx:"12",cy:"12",r:"1.8"},null,-1),n("circle",{cx:"19",cy:"12",r:"1.8"},null,-1)])]))],10,vU),e.moreOpen?(l(),d("div",{key:0,class:"tb-menu",role:"menu",onClick:t[19]||(t[19]=a=>e.moreOpen=!1)},[e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate?(l(),d("div",bU,[t[52]||(t[52]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),y("Snapshot \xB7 "+c(e.fmt?.date(e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate)),1)])):f("v-if",!0),typeof e.content=="string"?(l(),d("div",wU,[y(c(e.type=="html"?"Markdown":e.languageName||"Text"),1),e.type!="html"?(l(),d(B,{key:0},[y(" \xB7 "+c(e.fmt?.number(e.content.split(` -`).length))+" lines",1)],64)):f("v-if",!0),y(" \xB7 "+c(e.type=="html"&&e.fileSize(e.filePath)!=null?e.formatSize(e.fileSize(e.filePath)):e.content.length<1024?e.content.length+" B":(e.content.length/1024).toFixed(1)+" KB"),1)])):f("v-if",!0),e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate?(l(),d("div",kU)):f("v-if",!0),e.type=="html"?(l(),d("button",{key:3,type:"button",role:"menuitem",onClick:t[14]||(t[14]=a=>e.toggleMdFind())},[...t[53]||(t[53]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1),y("Find in file",-1)])])):f("v-if",!0),e.type=="html"?(l(),d("div",CU)):f("v-if",!0),e.type!="html"?(l(),d("button",{key:5,type:"button",role:"menuitem",onClick:t[15]||(t[15]=a=>e.findInFile())},[...t[54]||(t[54]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1),y("Find in file",-1)])])):f("v-if",!0),e.type!="html"?(l(),d("button",{key:6,type:"button",role:"menuitem",onClick:t[16]||(t[16]=a=>e.gotoLine())},[...t[55]||(t[55]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-goto"})],-1),y("Go to line",-1)])])):f("v-if",!0),e.type!="html"?(l(),d("button",{key:7,type:"button",role:"menuitemcheckbox","aria-checked":e.wrapLines?"true":"false",onClick:t[17]||(t[17]=a=>e.toggleWrap())},[t[56]||(t[56]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-wrap"})],-1)),t[57]||(t[57]=y("Wrap lines",-1)),e.wrapLines?(l(),d("span",SU,"\u2713")):f("v-if",!0)],8,EU)):f("v-if",!0),e.type!="html"?(l(),d("div",NU)):f("v-if",!0),e.type=="html"?(l(),d("a",{key:9,role:"menuitem",target:"_self",href:e.safeUrl(e.url)},[...t[58]||(t[58]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),y("View raw",-1)])],8,RU)):f("v-if",!0),e.type!="html"?(l(),d("a",{key:10,role:"menuitem",target:"_self",href:e.safeUrl(e.url)},[...t[59]||(t[59]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),y("View raw",-1)])],8,DU)):f("v-if",!0),n("a",{role:"menuitem",target:"_self",href:e.safeUrl(e.url+"&download=true")},[...t[60]||(t[60]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1),y("Download file",-1)])],8,AU),e.options?.hasWebsite?(l(),d("a",{key:11,role:"menuitem",target:"_self",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[61]||(t[61]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),y("Open website",-1)])],8,TU)):f("v-if",!0),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:12,role:"menuitem",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[62]||(t[62]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),y("Edit anonymization",-1)])],8,PU)):f("v-if",!0),e.options?.download?(l(),d("a",{key:13,role:"menuitem",target:"_self",href:e.safeUrl("/api/repo/"+e.repoId+"/zip")},[...t[63]||(t[63]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-archive"})],-1),y("Download ZIP",-1)])],8,_U)):f("v-if",!0),n("button",{type:"button",role:"menuitem",onClick:t[18]||(t[18]=a=>e.copyPath())},[...t[64]||(t[64]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-link"})],-1),y("Copy file path",-1)])]),t[65]||(t[65]=n("div",{class:"tb-menu-sep"},null,-1)),t[66]||(t[66]=n("a",{role:"menuitem",href:"/faq"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-help"})]),y("FAQ")],-1)),t[67]||(t[67]=n("a",{role:"menuitem",href:"https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml",target:"_blank",rel:"noopener"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-bug"})]),y("Report a bug")],-1))])):f("v-if",!0)])]),e.gotoOpen&&e.type!="html"?(l(),d("form",{key:2,class:"goto-pop",role:"dialog","aria-label":"Go to line",onSubmit:t[22]||(t[22]=ce(a=>e.submitGoto(),["prevent"]))},[t[68]||(t[68]=n("label",{class:"goto-label",for:"goto-input"},"Go to line",-1)),A(n("input",{id:"goto-input",class:"goto-input",type:"text",inputmode:"numeric",autocomplete:"off",spellcheck:"false",placeholder:"1\u2013"+e.fmt?.number(typeof e.content=="string"?e.content.split(` -`).length:1),"aria-invalid":e.gotoError?"true":"false","onUpdate:modelValue":t[20]||(t[20]=a=>e.gotoValue=a),onKeydown:t[21]||(t[21]=At(ce(a=>e.closeGoto(),["prevent","stop"]),["esc"]))},null,40,OU),[[ct,e.gotoValue]]),n("span",{class:P(["goto-hint",{"is-error":e.gotoError}])},c(e.gotoError||"Line, or line:column"),3)],32)):f("v-if",!0)]),e.type!="html"?A((l(),d("div",IU,null,512)),[[r,{content:e.content,options:e.aceOption}]]):f("v-if",!0),e.type=="html"&&e.mdFindOpen?(l(),d("div",MU,[n("input",{type:"search",class:"md-find-input",placeholder:"Find on this page","aria-label":"Find on this page",value:e.mdFindQuery,onInput:t[23]||(t[23]=a=>{e.mdFindQuery=a.target.value,e.runMdFind()}),onKeydown:[t[24]||(t[24]=At(ce(a=>a.shiftKey?e.stepMdFind(-1):e.stepMdFind(1),["prevent"]),["enter"])),t[25]||(t[25]=At(ce(a=>e.toggleMdFind(!1),["prevent"]),["esc"]))]},null,40,VU),n("span",qU,[n("button",{type:"button","aria-label":"Previous match",onClick:t[26]||(t[26]=a=>e.stepMdFind(-1)),disabled:!e.mdFindTotal},[...t[69]||(t[69]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,$U),n("button",{type:"button","aria-label":"Next match",onClick:t[27]||(t[27]=a=>e.stepMdFind(1)),disabled:!e.mdFindTotal},[...t[70]||(t[70]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,LU)]),n("span",UU,c(e.mdFindQuery?e.mdFindTotal?e.mdFindIndex+1+" of "+e.mdFindTotal:"No results":""),1),n("button",{type:"button",class:P(["md-find-opt",{"is-on":e.mdFindCase}]),"aria-pressed":e.mdFindCase?"true":"false",title:"Match case","aria-label":"Match case",onClick:t[28]||(t[28]=a=>{e.mdFindCase=!e.mdFindCase,e.runMdFind()})},"Aa",10,FU),n("button",{type:"button",class:"md-find-close","aria-label":"Close find",onClick:t[29]||(t[29]=a=>e.toggleMdFind(!1))},"\xD7")])):f("v-if",!0),e.type=="html"?(l(),d("div",BU,[n("div",{class:"file-content markdown-body",innerHTML:e.renderReadme(e.sanitize(e.content))},null,8,zU),e.readmeToc().length>=3?(l(),d("aside",HU,[t[71]||(t[71]=n("div",{class:"readme-toc-head"},"On this page",-1)),n("nav",jU,[n("a",{href:"#",class:P(["lvl-2 toc-top",{"is-active":!e.activeHeading}]),onClick:t[30]||(t[30]=ce(a=>e.scrollToHeading(null),["prevent"]))},"Introduction",2),(l(!0),d(B,null,ie(e.readmeToc(),(a,u)=>(l(),d("a",{key:a.id,href:"#"+a.id,class:P(["lvl-"+a.level,{"is-active":e.activeHeading===a.id}]),onClick:ce(p=>e.scrollToHeading(a.id),["prevent"])},c(a.text),11,GU))),128))])])):f("v-if",!0)])):f("v-if",!0)],2)):f("v-if",!0),e.type=="html-doc"&&!e.showSource&&e.content!=null?(l(),sn(o,{key:2,content:e.content,"base-url":e.fileBaseUrl,"allow-scripts":e.allowScripts},null,8,["content","base-url","allow-scripts"])):f("v-if",!0),e.type=="image"?(l(),d("img",{key:3,class:"image-content",src:e.safeUrl(e.url)},null,8,WU)):f("v-if",!0),e.type=="media"?(l(),d("iframe",{key:4,class:"h-100 overflow-auto w-100 b-0",src:e.safeUrl(e.url)},null,8,KU)):f("v-if",!0),e.type=="pdf"?(l(),sn(i,{key:5,src:e.safeUrl(e.url)},null,8,["src"])):f("v-if",!0),e.type=="audio"?(l(),d("div",YU,[n("audio",XU,[n("source",{src:e.safeUrl(e.url)},null,8,JU)])])):f("v-if",!0),e.type=="IPython"?(l(),d("div",QU,[Ue(s,{file:e.url,content:e.content},null,8,["file","content"])])):f("v-if",!0),e.type=="rate_limited"?(l(),d("div",ZU,[n("div",xU,[t[74]||(t[74]=ke('
Temporarily paused
GitHub API rate limit reached
',1)),n("p",eF,[t[72]||(t[72]=y("This repository will be available in ",-1)),n("strong",null,c(e.rateLimitCountdown),1),t[73]||(t[73]=y(". The page will reload automatically.",-1))])])])):f("v-if",!0),e.type=="error"?(l(),d("div",tF,[n("section",nF,[n("h1",oF,c(e.fmt.translate(e.isSourceAccessError()?"VIEWER_ERRORS.access_title":"VIEWER_ERRORS.title")),1),n("p",null,c(e.fmt.translate("ERRORS."+e.content)),1),e.isSourceAccessError()?(l(),d(B,{key:0},[n("p",null,c(e.fmt.translate("VIEWER_ERRORS.reader_help")),1),n("p",null,c(e.fmt.translate("VIEWER_ERRORS.owner_help")),1)],64)):f("v-if",!0),n("div",sF,[e.isSourceAccessError()?f("v-if",!0):(l(),d("a",iF,"Back to home")),e.isSourceAccessError()?f("v-if",!0):(l(),d("a",rF,"Read the FAQ")),n("button",{type:"button",class:"btn btn-primary",onClick:t[31]||(t[31]=a=>e.retryContent())},c(e.fmt.translate("VIEWER_ERRORS.retry")),1),e.isSourceAccessError()?(l(),d("a",aF,c(e.fmt.translate("VIEWER_ERRORS.dashboard")),1)):f("v-if",!0)])])])):f("v-if",!0),e.type=="loading"&&!e.error?(l(),d("section",lF,[n("div",dF,[n("strong",null,c(e.fmt.translate(e.fileReceivedBytes?"VIEWER_LOADING.receiving":"VIEWER_LOADING.loading")),1),n("span",uF,c(e.filePath),1),e.fileLoadingSlow?(l(),d("p",cF,c(e.fmt.translate("VIEWER_LOADING.slow")),1)):f("v-if",!0)]),n("div",pF,[(l(),d(B,null,ie(10,a=>n("span",{key:a})),64))])])):f("v-if",!0),e.type=="empty"?(l(),d("div",fF,[...t[75]||(t[75]=[n("h1",{class:"paper-empty-title m-auto"},[y("Empty "),n("em",null,"repository"),y(".")],-1)])])):f("v-if",!0),e.content==null&&!["empty","loading","error","rate_limited"].includes(e.type)?(l(),d("div",hF,[...t[76]||(t[76]=[n("h1",{class:"paper-empty-title m-auto"},[y("Empty "),n("em",null,"file"),y(".")],-1)])])):f("v-if",!0),e.type=="binary"?(l(),d("div",mF,[n("h1",gF,[t[77]||(t[77]=y("Unsupported ",-1)),t[78]||(t[78]=n("em",null,"binary file",-1)),t[79]||(t[79]=y(". You can ",-1)),n("a",{target:"_blank",href:e.safeUrl(e.url+"&download=true")},"download it",8,vF),t[80]||(t[80]=y(".",-1))])])):f("v-if",!0)],64)}var yF={class:"container page dashboard-page paper-page"},bF={class:"row"},wF={class:"w-100"},kF={class:"w-100","aria-label":"Pull Requests","accept-charset":"UTF-8"},CF={class:"d-flex flex-column flex-md-row align-items-md-center",style:{gap:"8px"}},EF={class:"flex-grow-1"},SF={type:"search",id:"search",class:"form-control","aria-label":"Find a pull request...",placeholder:"Find a pull request...",autocomplete:"off"},NF={class:"d-flex flex-wrap",style:{gap:"6px"}},RF={class:"dropdown"},DF={class:"dropdown-menu","aria-labelledby":"dropdownSort"},AF={class:"form-check dropdown-item"},TF={class:"form-check-input",type:"radio",name:"sort",id:"sortFullName",value:"fullName"},PF={class:"form-check dropdown-item"},_F={class:"form-check-input",type:"radio",name:"sort",id:"sortAnonymizeDate",value:"-anonymizeDate"},OF={class:"form-check dropdown-item"},IF={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},MF={class:"form-check dropdown-item"},VF={class:"form-check-input",type:"radio",name:"sort",id:"sortLastView",value:"-lastView"},qF={class:"form-check dropdown-item"},$F={class:"form-check-input",type:"radio",name:"sort",id:"sortPageView",value:"-pageView"},LF={class:"dropdown"},UF={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},FF={class:"form-check dropdown-item"},BF={class:"form-check-input",type:"checkbox",name:"sort",id:"statusReady",value:"ready"},zF={class:"form-check dropdown-item"},HF={class:"form-check-input",type:"checkbox",name:"sort",id:"statusExpired",value:"expired"},jF={class:"form-check dropdown-item"},GF={class:"form-check-input",type:"checkbox",name:"sort",id:"statusRemoved",value:"removed"},WF={class:"d-flex flex-wrap mt-2",style:{gap:"6px"}},KF={class:"filter-chip"},YF=["onClick"],XF={class:"repo-list w-100"},JF={class:"repo-list-item-content"},QF={class:"repo-list-item-main"},ZF={class:"repo-list-item-header"},xF=["textContent","href"],eB=["textContent"],tB=["textContent"],nB={class:"repo-source"},oB=["href"],sB={class:"repo-date"},iB={class:"repo-meta"},rB={key:0,title:"Conference"},aB=["title"],lB=["title"],dB=["title"],uB={key:1},cB={class:"repo-list-item-actions"},pB={class:"dropdown"},fB={class:"dropdown-menu dropdown-menu-right"},hB=["href"],mB=["onClick"],gB=["onClick"],vB=["onClick"],yB=["href"],bB={key:0,class:"repo-list-empty"};function Vc(e,t){let o=De("field"),i=De("form");return l(),d("div",yF,[n("div",bF,[n("div",wF,[t[12]||(t[12]=ke('
My work \xA0/\xA0 Pull requests

Anonymized pull requests

Track PR mirrors you\u2019ve created and their reviewer traffic.

',2)),f(" Search + filters row "),A((l(),d("form",kF,[n("div",CF,[n("div",EF,[A(n("input",SF,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),n("div",NF,[n("div",RF,[t[6]||(t[6]=n("button",{class:"btn btn-sm dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Sort ",-1)),n("div",DF,[t[5]||(t[5]=n("h6",{class:"dropdown-header"},"Select order",-1)),n("div",AF,[A(n("input",TF,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[0]||(t[0]=n("label",{class:"form-check-label",for:"sortFullName"},"Pull Request",-1))]),n("div",PF,[A(n("input",_F,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[1]||(t[1]=n("label",{class:"form-check-label",for:"sortAnonymizeDate"},"Anonymize Date",-1))]),n("div",OF,[A(n("input",IF,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[2]||(t[2]=n("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))]),n("div",MF,[A(n("input",VF,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[3]||(t[3]=n("label",{class:"form-check-label",for:"sortLastView"},"Last View",-1))]),n("div",qF,[A(n("input",$F,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[4]||(t[4]=n("label",{class:"form-check-label",for:"sortPageView"},"Page View",-1))])])]),n("div",LF,[t[11]||(t[11]=n("button",{class:"btn btn-sm dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Status ",-1)),n("div",UF,[t[10]||(t[10]=n("h6",{class:"dropdown-header"},"Select status",-1)),n("div",FF,[A(n("input",BF,null,512),[[o,{state:e.viewState,set:s=>{e.filters.status.ready=s},value:e.filters?.status?.ready,form:null,options:{}}]]),t[7]||(t[7]=n("label",{class:"form-check-label",for:"statusReady"},"Ready",-1))]),n("div",zF,[A(n("input",HF,null,512),[[o,{state:e.viewState,set:s=>{e.filters.status.expired=s},value:e.filters?.status?.expired,form:null,options:{}}]]),t[8]||(t[8]=n("label",{class:"form-check-label",for:"statusExpired"},"Expired",-1))]),n("div",jF,[A(n("input",GF,null,512),[[o,{state:e.viewState,set:s=>{e.filters.status.removed=s},value:e.filters?.status?.removed,form:null,options:{}}]]),t[9]||(t[9]=n("label",{class:"form-check-label",for:"statusRemoved"},"Removed",-1))])])])])])])),[[i,e.viewState]]),f(" Active filter chips "),A(n("div",WF,[(l(!0),d(B,null,ie(e.filters?.status,(s,r,a)=>A((l(),d("span",KF,[y(c(e.fmt?.title(r))+" ",1),n("button",{type:"button",class:"filter-chip-close","aria-label":"Remove filter",onClick:u=>{e.filters.status[r]=!0}}," \xD7 ",8,YF)],512)),[[J,!s]])),256))],512),[[J,e.filters?.status?.ready===!1||e.filters?.status?.expired===!1||e.filters?.status?.removed===!1]])]),f(" Pull request list "),n("ul",XF,[(l(!0),d(B,null,ie(e.filteredPullRequests,(s,r)=>(l(),d("li",{class:P(["repo-list-item",{"repo-inactive":s?.status=="expired"||s?.status=="removed"||s?.status=="error"}])},[n("div",JF,[n("div",QF,[n("div",ZF,[n("a",{class:"repo-name",textContent:c(s?.pullRequestId),href:e.safeUrl("/pr/"+s?.pullRequestId)},null,8,xF),n("span",{class:P(["status-badge",{"status-removed":s?.status=="removed"||s?.status=="expired"||s?.status=="removing"||s?.status=="expiring","status-preparing":s?.status=="preparing"||s?.status=="download","status-ready":s?.status=="ready","status-error":s?.status=="error"}])},[n("span",{textContent:c(e.fmt?.title(s?.status))},null,8,eB),s?.status=="error"?(l(),d("span",{key:0,textContent:c(": "+s?.statusMessage)},null,8,tB)):f("v-if",!0)],2)]),n("div",nB,[n("span",null,[t[13]||(t[13]=n("i",{class:"fab fa-github","aria-hidden":"true"},null,-1)),n("a",{href:e.safeUrl("https://github.com/"+s?.source?.repositoryFullName+"/pull/"+s?.source?.pullRequestId)},c(s?.source?.repositoryFullName)+"#"+c(s?.source?.pullRequestId),9,oB)]),n("span",{class:P(["status-badge",{"status-ready":s?.merged,"status-removed":s?.state=="open","status-error":s?.state=="closed"&&!s?.merged}]),style:{"font-size":"10px"}},c(e.fmt?.title(s?.merged?"merged":s?.state)),3),n("span",sB,"anonymized "+c(e.fmt?.humanTime(s?.anonymizeDate)),1)])]),n("div",iB,[s?.conference?(l(),d("span",rB,[t[14]||(t[14]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),y(" "+c(s?.conference),1)])):f("v-if",!0),n("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Terms: "+s?.options?.terms?.join(", ")},[t[15]||(t[15]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1)),y(" "+c(e.fmt?.number(s?.options?.terms?.length)),1)],8,aB),n("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Views: "+e.fmt?.number(s?.pageView)},[t[16]||(t[16]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),y(" "+c(e.fmt?.number(s?.pageView)),1)],8,lB),n("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Last view: "+e.fmt?.date(s?.lastView)},[t[17]||(t[17]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-calendar"})],-1)),y(" "+c(e.fmt?.humanTime(s?.lastView)),1)],8,dB),s?.options?.expirationMode!="never"&&s?.status=="ready"?(l(),d("span",uB,[t[18]||(t[18]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),y(" Expire: "+c(e.fmt?.humanTime(s?.options?.expirationDate)),1)])):f("v-if",!0)])]),n("div",cB,[n("div",pB,[t[24]||(t[24]=n("button",{class:"btn btn-sm dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Actions ",-1)),n("div",fB,[n("a",{class:"dropdown-item",href:e.safeUrl("/pull-request-anonymize/"+s?.pullRequestId)},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),y(" Edit ",-1)])],8,hB),A(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updatePullRequest(s),["prevent"])},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),y(" Force update ",-1)])],8,mB),[[J,s?.status=="ready"||s?.status=="error"]]),A(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updatePullRequest(s),["prevent"])},[...t[21]||(t[21]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),y(" Enable ",-1)])],8,gB),[[J,s?.status=="removed"]]),A(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.removePullRequest(s),["prevent"])},[...t[22]||(t[22]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),y(" Remove ",-1)])],8,vB),[[J,s?.status=="ready"]]),n("a",{class:"dropdown-item",href:e.safeUrl("/pr/"+s?.pullRequestId+"/")},[...t[23]||(t[23]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),y(" View PR ",-1)])],8,yB)])])])],2))),256)),e.filteredPullRequests?.length==0?(l(),d("li",bB,[...t[25]||(t[25]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No pull requests to display.",-1)])])):f("v-if",!0)])])])}var wB={class:"container paper-page user-settings"},kB={class:"settings-title"},CB={class:"settings-header-actions"},EB={class:"settings-nav","aria-label":"Settings"},SB=["aria-current","onClick"],NB={class:"settings-row"},RB=["rows"],DB={class:"settings-syntax"},AB={class:"invalid-feedback"},TB={class:"settings-row"},PB={class:"settings-checks"},_B={class:"settings-check"},OB={class:"form-check-input",type:"checkbox",id:"link",name:"link"},IB={class:"settings-check"},MB={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},VB={class:"settings-check"},qB={class:"form-check-input",type:"checkbox",id:"image",name:"image"},$B={class:"settings-check"},LB={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},UB={class:"settings-check"},FB={class:"form-check-input",type:"checkbox",id:"loc",name:"loc"},BB={class:"settings-check"},zB={class:"form-check-input",type:"checkbox",id:"page",name:"page"},HB={class:"settings-row"},jB={class:"settings-check"},GB={class:"form-check-input",type:"checkbox",id:"update",name:"update"},WB={class:"settings-row"},KB={class:"form-control",id:"expiration",name:"expiration"},YB={class:"settings-help"},XB={class:"settings-save"},JB={class:"settings-save-status draft-status",role:"status"},QB={key:0},ZB={key:1},xB={key:2},e7=["disabled"],t7={key:1,class:"settings-save-error",role:"alert"},n7=["aria-busy"],o7={key:0,role:"status"},s7={key:1,class:"settings-notice",role:"alert"},i7=["disabled"],r7={key:2,class:"settings-notice",role:"status"},a7={key:3,class:"settings-notice",role:"status"},l7=["disabled"],d7={class:"billing-summary"},u7={class:"billing-summary-head"},c7={class:"billing-plan-name"},p7={key:0,class:"billing-plan-meta"},f7={key:1,class:"billing-plan-meta"},h7={key:0,class:"billing-summary-actions"},m7=["disabled"],g7={id:"settings-quota"},v7={key:1,role:"status"},y7={key:0,class:"settings-notice"},b7={key:1,class:"settings-notice"},w7={key:2,class:"settings-notice"},k7={key:4,class:"billing-section","aria-labelledby":"settings-plan-comparison"},C7={key:0,class:"billing-offers"},E7={key:0,class:"billing-offer is-recommended"},S7={class:"billing-offer-price"},N7={class:"billing-offer-list"},R7=["disabled"],D7={key:1,class:"billing-offer"},A7={class:"billing-offer-head"},T7={class:"billing-toggle",role:"radiogroup","aria-label":"Billing frequency"},P7=["aria-checked","onClick"],_7={key:0,class:"billing-toggle-save"},O7={class:"billing-offer-price"},I7={class:"billing-offer-list"},M7=["disabled"],V7={key:1,class:"billing-addons"},q7={class:"billing-addon-rows"},$7={class:"billing-addon-price"},L7=["onClick","disabled"],U7={key:2,class:"billing-buy",id:"settings-addons-title",tabindex:"-1"},F7={class:"billing-buy-info"},B7={class:"billing-offer-price"},z7={class:"billing-offer-list"},H7={class:"billing-buy-form"},j7=["value"],G7=["disabled"],W7={key:1,class:"billing-buy-desc"},K7={key:2,class:"billing-footnote"},Y7={class:"billing-compare"},X7={class:"billing-compare-card"},J7={class:"settings-comparison"},Q7={key:0,scope:"col",class:"is-recommended"},Z7={key:1,scope:"col"},x7={key:0,class:"is-recommended"},ez={key:1},tz={key:0,class:"is-recommended"},nz={key:1},oz={key:0,class:"is-recommended"},sz={key:1},iz={key:0,class:"is-recommended"},rz={key:1},az={key:0,class:"is-recommended"},lz={key:1},dz={key:0,class:"is-recommended"},uz={key:1},cz={key:3,class:"billing-footnote"},pz={key:5,class:"billing-section"},fz={class:"billing-section-head"},hz=["disabled"],mz={key:0,class:"billing-empty"},gz={key:1,class:"billing-history-head","aria-hidden":"true"},vz={key:2,class:"billing-history"},yz={class:"billing-history-main"},bz=["href"],wz=["href"],kz={class:"billing-history-term"},Cz={class:"billing-history-paid"},Ez={class:"billing-history-status"},Sz={class:"billing-manage"},Nz={key:0},Rz={key:1},Dz=["disabled"],Az={class:"billing-conference"},Tz={id:"settings-account",class:"settings-account-panel"},Pz={class:"paper-account-card"},_z=["src"],Oz={class:"paper-account-identity"},Iz={class:"paper-account-name"},Mz=["disabled"],Vz={key:0,role:"status"},qz={key:1,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},$z=["disabled"],Lz={key:3,role:"status"},Uz={class:"paper-danger-zone"},Fz={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},Bz=["textContent"],zz=["disabled"],Hz={key:1,class:"settings-delete-confirm"},jz={for:"delete-username"},Gz={class:"settings-actions"},Wz=["disabled"],Kz=["disabled"];function qc(e,t){let o=at("quota-usage"),i=De("field"),s=De("form");return l(),d("div",wB,[n("header",kB,[t[20]||(t[20]=n("h1",null,"Settings",-1)),n("div",CB,[n("span",null,"@"+c(e.user?.username),1)])]),n("nav",EB,[(l(),d(B,null,ie([{id:"defaults",label:"Anonymization defaults"},{id:"billing",label:"Hosting & billing"},{id:"account",label:"Account"}],r=>n("button",{type:"button","aria-current":e.settingsTab===r.id?"page":null,onClick:a=>e.settingsTab=r.id},c(r.label),9,SB)),64))]),A(n("div",null,[t[41]||(t[41]=n("p",{class:"settings-scope"},"For new anonymizations only. Existing repositories keep their settings.",-1)),A((l(),d("form",{class:"form needs-validation",name:"defaultsForm",novalidate:"",onSubmit:t[1]||(t[1]=ce(r=>e.submitForm(r,()=>{e.saveDefault(r)}),["prevent"]))},[n("section",NB,[t[26]||(t[26]=n("div",null,[n("label",{class:"settings-label",for:"terms"},"Terms to redact"),n("p",{class:"settings-help"},"One term per line.")],-1)),n("div",null,[A(n("textarea",{class:"form-control",id:"terms",name:"terms",rows:Math.min(14,Math.max(3,String(e.terms||"").split(` +10 log("epoch %d: %.3f", epoch, loss)
`,2)])])):(l(),d("div",EF,[...t[21]||(t[21]=[Ce('
ProjectStatusViewsExpires
DeepLearnUtilspaper-7f2a \xB7 ICSE 2027Ready41Mar 31, 2027
vision-bench#212pull request \xB7 FSE 2027Ready12Never
graph-repairgr-91abUpdating5Jan 5, 2027
JarSiftOOPSLA 2025Expired72Sep 28, 2026
',5)])]))],10,wF)])],8,gF)),[[ee,e.feature===i?.key]])),128))])]),f(" FAQ teaser "),t[24]||(t[24]=Ce('
Before you sign in

The questions that come up most.

Read the full FAQ \u2192
What access does GitHub sign-in require?

The GitHub App has read-only access to gists and the repositories you choose. Legacy OAuth uses broader permissions. Anonymous GitHub never writes to your repositories.

Which file formats are supported?

Source code with syntax highlighting, Markdown, Jupyter notebooks, PDFs, images, and GitHub Pages sites. Text files are anonymized; enabled images and PDFs are served unchanged.

What happens when an anonymized repository expires?

You choose: the mirror is removed, or visitors are redirected to the original GitHub repository once the review is over.

Ready for review?

Create an anonymous mirror in a couple of minutes. Reviewers just open the link.

',2)),Me(o,{name:"partials/footer.htm",state:e.viewState},null,8,["state"])])}var SF={class:"paper-empty"},NF={class:"paper-empty-inner"},RF={key:0,class:"paper-eyebrow"},DF={key:1,class:"paper-eyebrow"},AF={key:2,class:"paper-empty-title"},TF=["textContent"];function Qc(e,t){return l(),d("div",SF,[n("div",NF,[e.error?f("v-if",!0):(l(),d("div",RF,"Working")),e.error?(l(),d("div",DF,"Error")):f("v-if",!0),e.error?f("v-if",!0):(l(),d("h1",AF,[...t[0]||(t[0]=[g(" Loading",-1),n("span",{class:"dot-anim"},"\u2026",-1)])])),e.error?(l(),d("h1",{key:3,class:"paper-empty-title",textContent:c(e.fmt.translate(e.error))},null,8,TF)):f("v-if",!0)])])}var PF={class:"container paper-page paper-settings"},OF={class:"paper-crumbs"},IF={class:"here"},_F={class:"paper-page-title"},MF={class:"paper-settings-body"},VF={class:"paper-settings-toc"},qF={href:"#conf-billing"},$F={class:"form needs-validation paper-settings-main",name:"conference",novalidate:""},LF={id:"conf-basics",class:"paper-settings-section"},UF={class:"form-group"},FF={class:"invalid-feedback"},BF={class:"invalid-feedback"},zF={class:"form-group"},HF={class:"invalid-feedback"},jF={class:"form-group"},GF={class:"invalid-feedback"},WF={class:"invalid-feedback"},KF={id:"conf-window",class:"paper-settings-section"},YF={class:"form-grid-2"},XF={class:"form-group"},JF={class:"invalid-feedback"},QF={class:"invalid-feedback"},ZF={class:"form-group"},xF={class:"invalid-feedback"},e7={class:"invalid-feedback"},t7={id:"conf-rendering",class:"paper-settings-section"},n7={class:"form-check"},o7={class:"form-check-input",type:"checkbox",id:"link",name:"link"},s7={class:"form-check"},i7={class:"form-check-input",type:"checkbox",id:"image",name:"image"},r7={class:"form-check"},a7={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},l7={class:"form-check"},d7={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},u7={id:"conf-features",class:"paper-settings-section"},c7={class:"form-check"},p7={class:"form-check-input",type:"checkbox",id:"update",name:"update"},f7={class:"form-check"},h7={class:"form-check-input",type:"checkbox",id:"page",name:"page"},m7={id:"conf-plan",class:"paper-settings-section"},g7={key:0,class:"paper-section-copy"},v7={class:"conference-tiers",role:"radiogroup","aria-label":"Review package size"},y7=["value","checked","onChange"],b7={class:"conference-tier-head"},w7={key:0,class:"conference-tier-pill"},k7={class:"conference-tier-who"},C7={key:0,class:"conference-tier-price"},E7={class:"conference-tier-size"},S7={key:1,class:"conference-tier-per"},N7={key:2,class:"paper-plan-grid"},R7=["value"],D7=["textContent"],A7={class:"paper-plan-price"},T7=["innerHTML"],P7={key:3,class:"settings-notice",role:"status"},O7={key:0,id:"conf-billing",class:"paper-settings-section"},I7={class:"form-group"},_7={class:"form-group"},M7={class:"form-group"},V7={class:"form-group"},q7={class:"form-grid-3"},$7={class:"form-group"},L7={class:"form-group"},U7={class:"form-group"},F7={class:"form-group"},B7={class:"paper-settings-footer"},z7=["textContent"],H7=["textContent"],j7=["disabled"];function Zc(e,t){let o=Pe("paper-scrollspy"),i=Pe("field"),s=Pe("form");return l(),d("div",PF,[n("div",OF,[t[1]||(t[1]=n("a",{href:"/dashboard"},"My work",-1)),t[2]||(t[2]=g(" \xA0/\xA0 ",-1)),t[3]||(t[3]=n("a",{href:"/conferences"},"Conferences",-1)),t[4]||(t[4]=g(" \xA0/\xA0 ",-1)),n("span",IF,c(e.editionMode?"Edit":"New"),1)]),n("h1",_F,[g(c(e.editionMode?"Edit":"Create a")+" ",1),t[5]||(t[5]=n("em",null,"conference",-1))]),t[44]||(t[44]=n("p",{class:"paper-page-lede"}," Give chairs access to every anonymization submitted to a venue. One payment hosts every submission, so authors don't pay during the review window. ",-1)),n("div",MF,[P((l(),d("aside",VF,[t[7]||(t[7]=n("div",{class:"paper-settings-toc-head"},"On this page",-1)),n("nav",null,[t[6]||(t[6]=Ce('BasicsReview windowRendering defaultsFeaturesPlan',5)),P(n("a",qF,"Billing",512),[[ee,e.plan?.pricePerRepo>0]])])])),[[o]]),P((l(),d("form",$F,[n("section",LF,[t[12]||(t[12]=n("div",{class:"paper-section-eyebrow"},"Basics",-1)),n("div",UF,[t[8]||(t[8]=n("label",{class:"paper-field-label",for:"name"},"Conference name",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.conference?.name?.invalid&&(e.conference?.name?.touched||e.conference?.submitted)}]),name:"name",id:"name",required:"",placeholder:"e.g. International Conference on Software Engineering"},null,2),[[i,{state:e.viewState,set:r=>{e.options.name=r},value:e.options?.name,form:"conference",options:{}}]]),P(n("div",FF," The name of the conference is invalid. ",512),[[ee,e.conference?.name?.errors?.invalid]]),P(n("div",BF," The name of the conference is required. ",512),[[ee,e.conference?.name?.errors?.required]])]),n("div",zF,[t[9]||(t[9]=n("label",{class:"paper-field-label",for:"url"},"Website",-1)),P(n("input",{type:"url",class:T(["form-control",{"is-invalid":e.conference?.url?.invalid&&(e.conference?.url?.touched||e.conference?.submitted)}]),name:"url",id:"url",placeholder:"https://example.org"},null,2),[[i,{state:e.viewState,set:r=>{e.options.url=r},value:e.options?.url,form:"conference",options:{}}]]),P(n("div",HF," The url of the conference is invalid. ",512),[[ee,e.conference?.url?.errors?.url]])]),n("div",jF,[t[10]||(t[10]=n("label",{class:"paper-field-label",for:"conferenceID"},"Conference ID",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.conference?.conferenceID?.invalid&&(e.conference?.conferenceID?.touched||e.conference?.submitted)}]),name:"conferenceID",id:"conferenceID",required:"",pattern:"[a-zA-Z0-9\\-_]{3,10}",placeholder:"ICSE26"},null,2),[[i,{state:e.viewState,set:r=>{e.options.conferenceID=r},value:e.options?.conferenceID,form:"conference",options:{}}]]),t[11]||(t[11]=n("small",{class:"form-text text-muted"},[g("3\u201310 characters, letters, numbers, "),n("code",null,"-"),g(" and "),n("code",null,"_"),g(". Authors reference this when they anonymize.")],-1)),P(n("div",{class:"invalid-feedback"}," The conference ID '"+c(e.options?.conferenceID)+"' is already used. ",513),[[ee,e.conference?.conferenceID?.errors?.used]]),P(n("div",GF," The conference ID is required. ",512),[[ee,e.conference?.conferenceID?.errors?.required]]),P(n("div",WF," The format of the conference ID is incorrect ([a-zA-Z0-9-_]{3,10}). ",512),[[ee,e.conference?.conferenceID?.errors?.pattern]])])]),n("section",KF,[t[17]||(t[17]=n("div",{class:"paper-section-eyebrow"},"Review window",-1)),n("div",YF,[n("div",XF,[t[13]||(t[13]=n("label",{class:"paper-field-label",for:"startDate"},"Start date",-1)),P(n("input",{type:"date",class:T(["form-control",{"is-invalid":e.conference?.startDate?.invalid&&(e.conference?.startDate?.touched||e.conference?.submitted)}]),name:"startDate",id:"startDate",required:""},null,2),[[i,{state:e.viewState,set:r=>{e.options.startDate=r},value:e.options?.startDate,form:"conference",options:{}}]]),t[14]||(t[14]=n("small",{class:"form-text text-muted"},"Beginning of the review process.",-1)),P(n("div",JF," Start date is required. ",512),[[ee,e.conference?.startDate?.errors?.required]]),P(n("div",QF," Start date must be before end date. ",512),[[ee,e.conference?.startDate?.errors?.invalid]])]),n("div",ZF,[t[15]||(t[15]=n("label",{class:"paper-field-label",for:"endDate"},"End date",-1)),P(n("input",{type:"date",class:T(["form-control",{"is-invalid":e.conference?.endDate?.invalid&&(e.conference?.endDate?.touched||e.conference?.submitted)}]),name:"endDate",id:"endDate",required:""},null,2),[[i,{state:e.viewState,set:r=>{e.options.endDate=r},value:e.options?.endDate,form:"conference",options:{}}]]),t[16]||(t[16]=n("small",{class:"form-text text-muted"},"All repositories expire on this date.",-1)),P(n("div",xF," End date is required. ",512),[[ee,e.conference?.endDate?.errors?.required]]),P(n("div",e7," End date is invalid. ",512),[[ee,e.conference?.endDate?.errors?.invalid]])])])]),n("section",t7,[t[26]||(t[26]=n("div",{class:"paper-section-eyebrow"},"Rendering defaults",-1)),n("div",n7,[P(n("input",o7,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.link=r},value:e.options?.options?.link,form:"conference",options:{}}]]),t[18]||(t[18]=n("label",{class:"form-check-label",for:"link"},"Keep links",-1)),t[19]||(t[19]=n("small",{class:"form-text text-muted"},"Keep or remove all links from text files.",-1))]),n("div",s7,[P(n("input",i7,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.image=r},value:e.options?.options?.image,form:"conference",options:{}}]]),t[20]||(t[20]=n("label",{class:"form-check-label",for:"image"},"Display images",-1)),t[21]||(t[21]=n("small",{class:"form-text text-muted"},"Images are not anonymized.",-1))]),n("div",r7,[P(n("input",a7,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.pdf=r},value:e.options?.options?.pdf,form:"conference",options:{}}]]),t[22]||(t[22]=n("label",{class:"form-check-label",for:"pdf"},"Display PDFs",-1)),t[23]||(t[23]=n("small",{class:"form-text text-muted"},"PDFs are not anonymized.",-1))]),n("div",l7,[P(n("input",d7,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.notebook=r},value:e.options?.options?.notebook,form:"conference",options:{}}]]),t[24]||(t[24]=n("label",{class:"form-check-label",for:"notebook"},"Display notebooks",-1)),t[25]||(t[25]=n("small",{class:"form-text text-muted"},"Render Jupyter notebooks instead of raw JSON.",-1))])]),n("section",u7,[t[31]||(t[31]=n("div",{class:"paper-section-eyebrow"},"Features",-1)),n("div",c7,[P(n("input",p7,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.update=r},value:e.options?.options?.update,form:"conference",options:{}}]]),t[27]||(t[27]=n("label",{class:"form-check-label",for:"update"},"Auto-update from GitHub",-1)),t[28]||(t[28]=n("small",{class:"form-text text-muted"},"Pull the latest commit automatically (hourly maximum).",-1))]),n("div",f7,[P(n("input",h7,null,512),[[i,{state:e.viewState,set:r=>{e.options.options.page=r},value:e.options?.options?.page,form:"conference",options:{}}]]),t[29]||(t[29]=n("label",{class:"form-check-label",for:"page"},"GitHub Pages",-1)),t[30]||(t[30]=n("small",{class:"form-text text-muted"},"Enable anonymized GitHub pages.",-1))])]),n("section",m7,[t[35]||(t[35]=n("div",{class:"paper-section-eyebrow"},"Plan",-1)),e.editionMode?(l(),d("p",g7,c(e.conferencePlanName(e.options?.plan?.planID))+". The plan and review dates can't change after creation.",1)):e.conferenceTiers().length?(l(),d(L,{key:1},[t[33]||(t[33]=n("p",{class:"paper-section-copy"},"Pick the package that fits the number of submissions you expect. One payment hosts every submission, so authors don't pay.",-1)),n("div",v7,[(l(!0),d(L,null,ie(e.conferenceTiers(),r=>(l(),d("label",{class:T(["conference-tier",{"is-selected":e.options?.plan?.planID===r.id}]),key:r.id},[n("input",{type:"radio",name:"planPicker",value:r.id,checked:e.options?.plan?.planID===r.id,onChange:a=>e.options.plan.planID=r.id},null,40,y7),n("span",b7,[n("strong",null,c(r.name),1),r.id==="conference"&&e.conferenceTiers().length>1?(l(),d("span",w7,"Most common")):f("v-if",!0)]),n("span",k7,c(e.conferenceAudience(r.id)),1),r.amount!=null?(l(),d("span",C7,[n("strong",null,c(e.conferenceAmount(r)),1),t[32]||(t[32]=g(" once",-1))])):f("v-if",!0),n("span",E7,"Up to "+c(r.repositories)+" papers \xB7 "+c(e.conferenceBytes(r.storage)),1),r.amount!=null&&r.repositories?(l(),d("span",S7,"About "+c(e.conferenceAmount(r,r.amount/r.repositories))+" per paper",1)):f("v-if",!0)],2))),128))]),t[34]||(t[34]=Ce('

Every package includes

  • A review window of up to 180 days
  • Automatic updates for every submission
  • Links stay online until the review window ends
  • A dashboard of every submission for chairs

Nothing renews \xB7 Tax shown at checkout \xB7 Expecting more submissions? Email tdurieux@anonymous.4open.science

Create the conference, then pay from its page. Authors can submit once the payment is confirmed.

',2))],64)):e.plans.length?(l(),d("div",N7,[(l(!0),d(L,null,ie(e.plans,r=>(l(),d("label",{class:T(["paper-plan-card",{selected:e.options?.plan?.planID==r?.id}]),key:r.id},[P(n("input",{type:"radio",name:"planPicker",value:r?.id},null,8,R7),[[i,{state:e.viewState,set:a=>{e.options.plan.planID=a},value:e.options?.plan?.planID,form:"conference",options:{}}]]),n("div",{class:"paper-plan-head",textContent:c(r?.name)},null,8,D7),n("div",A7,c(r.pricePerRepo>0?e.fmt?.number(r.pricePerRepo,2)+" \u20AC per repository":"Free"),1),n("div",{class:"paper-plan-desc",innerHTML:e.sanitize(r?.description)},null,8,T7)],2))),128))])):e.plansLoaded?(l(),d("p",P7,"New conferences are unavailable right now. Please try again later.")):f("v-if",!0)]),e.plan?.pricePerRepo>0?(l(),d("section",O7,[t[43]||(t[43]=n("div",{class:"paper-section-eyebrow"},"Billing",-1)),n("div",I7,[t[36]||(t[36]=n("label",{class:"paper-field-label",for:"billing_name"},"Name",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.conference?.billing_name?.invalid&&(e.conference?.billing_name?.touched||e.conference?.submitted)}]),name:"billing_name",id:"billing_name",required:"",placeholder:"First & last name"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.name=r},value:e.options?.billing?.name,form:"conference",options:{}}]])]),n("div",_7,[t[37]||(t[37]=n("label",{class:"paper-field-label",for:"email"},"Email",-1)),P(n("input",{type:"email",class:T(["form-control",{"is-invalid":e.conference?.email?.invalid&&(e.conference?.email?.touched||e.conference?.submitted)}]),name:"email",id:"email",required:"",placeholder:"you@example.org"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.email=r},value:e.options?.billing?.email,form:"conference",options:{}}]])]),n("div",M7,[t[38]||(t[38]=n("label",{class:"paper-field-label",for:"inputAddress"},"Address",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.conference?.inputAddress?.invalid&&(e.conference?.inputAddress?.touched||e.conference?.submitted)}]),name:"inputAddress",id:"inputAddress",required:"",placeholder:"1234 Main St"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.address=r},value:e.options?.billing?.address,form:"conference",options:{}}]])]),n("div",V7,[P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.conference?.inputAddress2?.invalid&&(e.conference?.inputAddress2?.touched||e.conference?.submitted)}]),name:"inputAddress2",id:"inputAddress2",placeholder:"Apartment, studio, or floor"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.address2=r},value:e.options?.billing?.address2,form:"conference",options:{}}]])]),n("div",q7,[n("div",$7,[t[39]||(t[39]=n("label",{class:"paper-field-label",for:"city"},"City",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.conference?.city?.invalid&&(e.conference?.city?.touched||e.conference?.submitted)}]),name:"city",id:"city",required:"",placeholder:"City"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.city=r},value:e.options?.billing?.city,form:"conference",options:{}}]])]),n("div",L7,[t[40]||(t[40]=n("label",{class:"paper-field-label",for:"country"},"Country",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.conference?.country?.invalid&&(e.conference?.country?.touched||e.conference?.submitted)}]),name:"country",id:"country",required:"",placeholder:"Country"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.country=r},value:e.options?.billing?.country,form:"conference",options:{}}]])]),n("div",U7,[t[41]||(t[41]=n("label",{class:"paper-field-label",for:"zip"},"Zip",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.conference?.zip?.invalid&&(e.conference?.zip?.touched||e.conference?.submitted)}]),name:"zip",id:"zip",required:"",placeholder:"Zip"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.zip=r},value:e.options?.billing?.zip,form:"conference",options:{}}]])])]),n("div",F7,[t[42]||(t[42]=n("label",{class:"paper-field-label",for:"vat"},"VAT number",-1)),P(n("input",{type:"text",class:T(["form-control",{"is-invalid":e.conference?.vat?.invalid&&(e.conference?.vat?.touched||e.conference?.submitted)}]),name:"vat",id:"vat",placeholder:"VAT Number"},null,2),[[i,{state:e.viewState,set:r=>{e.options.billing.vat=r},value:e.options?.billing?.vat,form:"conference",options:{}}]])])])):f("v-if",!0),n("div",B7,[e.error?(l(),d("div",{key:0,class:"alert alert-danger",role:"alert",textContent:c(e.error)},null,8,z7)):f("v-if",!0),e.message?(l(),d("div",{key:1,class:"alert alert-success",role:"alert",textContent:c(e.message)},null,8,H7)):f("v-if",!0),n("button",{id:"send",disabled:e.saving,type:"submit",class:"btn btn-ink",onClick:t[0]||(t[0]=ce(r=>e.submitForm(r,()=>{e.submit(r)}),["prevent"]))},c(e.saving?e.editionMode?"Updating\u2026":"Creating\u2026":e.editionMode?"Update conference":"Create conference"),9,j7)])])),[[s,e.viewState]])])])}var G7={key:0,class:"dir-card","aria-label":"Repository files"},W7=["onClick"],K7={class:"dir-name"},Y7=["href"],X7={class:"dir-name"},J7={class:"dir-meta"},Q7={class:"file-card-head"},Z7={class:"file-card-path"},x7={class:"breadcrumb paths","aria-label":"Path"},e9={class:"breadcrumb-item breadcrumb-root"},t9=["href","title","textContent"],n9=["aria-current"],o9=["aria-label"],s9={class:"mobile-sub ms"},i9=["title"],r9={class:"ms-item"},a9={key:1,class:"ms-item"},l9={key:2,class:"ms-item"},d9=["aria-label","title"],u9={class:"ui-icon","aria-hidden":"true"},c9=["href"],p9={key:0,class:"file-card-meta"},f9=["title"],h9={class:"meta-extra"},m9={key:1,class:"file-card-meta"},g9=["title"],v9={class:"file-card-actions"},y9={key:0,class:"csv-toggle seg-filter",role:"radiogroup","aria-label":"CSV view"},b9=["aria-checked"],w9=["aria-checked"],k9={key:1,class:"symbols"},C9=["aria-expanded"],E9={key:0,class:"symbols-menu",role:"menu"},S9={class:"symbols-head"},N9=["onClick"],R9={class:"symbols-name"},D9={class:"symbols-line"},A9=["title"],T9={key:3,class:"tb-view",role:"group","aria-label":"View tools"},P9=["title"],O9=["aria-pressed"],I9=["title"],_9={class:"tb-file",role:"group","aria-label":"File actions"},M9=["title","href"],V9=["aria-label","title"],q9={class:"ui-icon","aria-hidden":"true"},$9=["href"],L9=["href"],U9=["aria-label"],F9={class:"ui-icon","aria-hidden":"true"},B9=["href"],z9={key:5,class:"tb-toc-m"},H9=["aria-expanded"],j9=["onClick"],G9={class:"tb-more"},W9=["aria-expanded"],K9={viewBox:"0 0 24 24",class:"ui-icon","aria-hidden":"true",style:{fill:"currentColor",stroke:"none"}},Y9={key:0,class:"tb-menu-note"},X9={key:1,class:"tb-menu-note tb-menu-meta"},J9={key:2,class:"tb-menu-sep"},Q9={key:4,class:"tb-menu-sep"},Z9=["aria-checked"],x9={key:0,class:"tb-menu-check"},eB={class:"ui-icon","aria-hidden":"true"},tB=["href"],nB={key:9,class:"tb-menu-sep"},oB=["href"],sB=["href"],iB=["href"],rB=["href"],aB=["href"],lB=["href"],dB=["placeholder","aria-invalid"],uB=["aria-label"],cB={class:"csv-table"},pB=["aria-label"],fB={class:"csv-rownum"},hB=["aria-label"],mB={key:1,class:"file-card-body"},gB={key:2,class:"md-find-bar",role:"search"},vB=["value"],yB={class:"md-find-nav"},bB=["disabled"],wB=["disabled"],kB={class:"md-find-count","aria-live":"polite"},CB=["aria-pressed"],EB={key:3,class:"reading-layout"},SB=["innerHTML"],NB={key:0,class:"readme-toc","aria-label":"On this page"},RB={class:"toc-rail"},DB=["href","onClick"],AB={class:"file-card-head"},TB={class:"file-card-path"},PB={class:"breadcrumb paths","aria-label":"Path"},OB={class:"breadcrumb-item breadcrumb-root"},IB=["href","title","textContent"],_B=["aria-current"],MB=["aria-label"],VB={class:"mobile-sub ms"},qB=["title"],$B={class:"ms-item"},LB={key:1,class:"ms-item"},UB={key:2,class:"ms-item"},FB=["aria-label","title"],BB={class:"ui-icon","aria-hidden":"true"},zB=["href"],HB={class:"file-card-meta"},jB=["title"],GB={class:"file-card-actions"},WB={key:0,class:"file-card-state",title:"Files over the size limit can't be previewed or downloaded from this link"},KB={key:1,class:"tb-file",role:"group","aria-label":"File actions"},YB=["title","href"],XB=["href"],JB={class:"tb-more"},QB=["aria-expanded"],ZB={viewBox:"0 0 24 24",class:"ui-icon","aria-hidden":"true",style:{fill:"currentColor",stroke:"none"}},xB={key:0,class:"tb-menu-note"},ez={key:1,class:"tb-menu-sep"},tz=["href"],nz=["href"],oz=["href"],sz={key:0,class:"media-stage"},iz=["src","alt"],rz={key:1,class:"media-stage"},az=["src"],lz={key:2,class:"media-stage is-audio"},dz=["src"],uz={key:4,class:"notebook-body"},cz={key:5,class:"file-state"},pz={class:"file-state-actions"},fz=["href"],hz={key:6,class:"file-state",role:"alert"},mz={class:"file-state-title"},gz={key:0,class:"file-state-msg"},vz={key:1,class:"file-state-msg"},yz={class:"file-state-actions"},bz=["href"],wz={key:7,class:"file-state"},kz={key:4,class:"file-error container d-flex h-100"},Cz={class:"paper-ratelimit-card m-auto",style:{"max-width":"520px"}},Ez={class:"paper-error-msg"},Sz={key:5,class:"file-error container d-flex h-100"},Nz={class:"viewer-error paper-error-card file-error-card m-auto",role:"alert","aria-labelledby":"viewer-error-title"},Rz={id:"viewer-error-title",class:"paper-empty-title"},Dz={class:"paper-error-actions"},Az={key:0,href:"/",class:"btn btn-sm"},Tz={key:1,href:"/faq",class:"btn btn-sm"},Pz={key:2,class:"btn btn-outline-ink",href:"/dashboard"},Oz={key:6,class:"viewer-loading","aria-busy":"true"},Iz={class:"viewer-loading-status",role:"status","aria-live":"polite"},_z={class:"viewer-loading-name sr-only"},Mz={key:0},Vz={class:"viewer-loading-lines","aria-hidden":"true"},qz={key:7,class:"file-error container d-flex h-100"},$z={key:8,class:"file-error container d-flex h-100"};function xc(e,t){let o=Ye("html-doc"),i=Ye("pdfviewer"),s=Ye("notebook"),r=Pe("code-editor");return l(),d(L,null,[e.sidebarHidden&&e.type=="html"&&e.content!=null&&e.paths?.length===1&&/^readme/i.test(e.paths[0]||"")&&e.files?.length?(l(),d("section",G7,[t[44]||(t[44]=n("header",{class:"dir-card-head"},[n("span",{class:"dir-card-title"},"Files"),n("span",{class:"dir-card-sub"},"Snapshot of the repository at review time")],-1)),n("ul",{class:T(["dir-list",{"is-expanded":e.dirExpanded}])},[(l(!0),d(L,null,ie(e.rootEntries(),a=>(l(),d("li",{key:a.name},[a.size==null?(l(),d("button",{key:0,type:"button",class:"dir-row",onClick:u=>e.revealFolder(a.name)},[t[41]||(t[41]=n("svg",{class:"dir-icon",viewBox:"0 0 16 16","aria-hidden":"true"},[n("path",{d:"M1.5 3.5h4l1.5 1.5h7.5v8h-13z"})],-1)),n("span",K7,c(a.name),1),t[42]||(t[42]=n("span",{class:"dir-meta"},"Folder",-1))],8,W7)):(l(),d("a",{key:1,class:T(["dir-row",{"is-current":a.name===e.paths[0]}]),href:e.safeUrl("/r/"+e.repoId+"/"+encodeURIComponent(a.name))},[t[43]||(t[43]=n("svg",{class:"dir-icon",viewBox:"0 0 16 16","aria-hidden":"true"},[n("path",{d:"M3.5 1.5h6l3 3v10h-9z"})],-1)),n("span",X7,c(a.name),1),n("span",J7,c(e.formatSize(a.size)),1)],10,Y7))]))),128))],2),!e.dirExpanded&&e.files.length>8?(l(),d("button",{key:0,type:"button",class:"dir-more",onClick:t[0]||(t[0]=a=>e.dirExpanded=!0)},"Show all "+c(e.files.length)+" items",1)):f("v-if",!0)])):f("v-if",!0),(e.type=="text"||e.type=="code"||e.type=="html"||e.type=="html-doc"&&e.showSource)&&e.content!=null?(l(),d("section",{key:1,class:T(["file-card",{"is-code":e.type!="html","no-wrap":!e.wrapLines}])},[n("header",Q7,[n("div",Z7,[n("button",{type:"button",class:T(["btn btn-sm btn-icon-only btn-ghost card-files-btn",{"is-needed":e.sidebarHidden}]),title:"Show file tree",onClick:t[1]||(t[1]=a=>e.sidebarHidden?e.sidebarHidden=!1:e.sidebarCollapsed=!1)},[...t[45]||(t[45]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-sidebar"})],-1),n("span",{class:"card-files-label"},"Files",-1)])],2),n("ol",x7,[n("li",e9,[n("a",{href:e.safeUrl("/r/"+e.repoId+"/"),title:e.repoId,textContent:c(/^[0-9a-f]{8}-[0-9a-f]{4}-/i.test(e.repoId||"")?"repository":e.repoId)},null,8,t9)]),(l(!0),d(L,null,ie(e.paths,(a,u)=>(l(),d("li",{class:"breadcrumb-item","aria-current":u===e.paths.length-1?"page":null},[(l(!0),d(L,null,ie(e.redactParts(a),(p,y)=>(l(),d(L,{key:y},[p.n?(l(),d("span",{key:0,class:"redact-slot",role:"img","aria-label":"Redacted term "+p.n},[n("i",null,c(p.n),1)],8,o9)):(l(),d(L,{key:1},[g(c(p.t),1)],64))],64))),128))],8,n9))),256))]),n("span",s9,[e.redactionCount()?(l(),d("b",{key:0,class:"ms-item ms-redact",title:e.redactionCount()+" redacted terms"},[g(c(e.redactionCount()),1),t[46]||(t[46]=n("span",{class:"meta-redact-word"}," redacted",-1))],8,i9)):f("v-if",!0),n("span",r9,c(e.type=="html"?"Markdown":e.languageName||"Text"),1),e.fileSize(e.filePath)!=null?(l(),d("span",a9,c(e.formatSize(e.fileSize(e.filePath))),1)):f("v-if",!0),e.type!="html"&&typeof e.content=="string"?(l(),d("span",l9,c(e.fmt?.number(e.content.split(` +`).length))+" lines",1)):f("v-if",!0)]),P(n("button",{type:"button",class:"btn btn-sm btn-icon-only btn-ghost copy-path-btn","aria-label":e.pathCopied?"Path copied":"Copy file path",title:e.pathCopied?"Path copied":"Copy file path",onClick:t[2]||(t[2]=a=>e.copyPath())},[(l(),d("svg",u9,[n("use",{href:e.pathCopied?"#ui-icon-check":"#ui-icon-link"},null,8,c9)]))],8,d9),[[ee,e.filePath]])]),e.type!="html"&&typeof e.content=="string"?(l(),d("span",p9,[e.redactionCount()?(l(),d(L,{key:0},[n("span",{class:"meta-redact",title:e.redactionCount()+" redacted terms"},[g(c(e.redactionCount()),1),t[47]||(t[47]=n("span",{class:"meta-redact-word"}," redacted",-1))],8,f9),t[48]||(t[48]=n("span",{class:"sep"},"\xB7",-1))],64)):f("v-if",!0),g(c(e.languageName||"Text"),1),n("span",h9,[t[49]||(t[49]=n("span",{class:"sep"},"\xB7",-1)),g(c(e.content.length<1024?e.content.length+" B":(e.content.length/1024).toFixed(1)+" KB"),1)]),t[50]||(t[50]=n("span",{class:"sep"},"\xB7",-1)),g(c(e.fmt?.number(e.content.split(` +`).length))+" lines",1)])):f("v-if",!0),e.type=="html"?(l(),d("span",m9,[e.redactionCount()?(l(),d(L,{key:0},[n("span",{class:"meta-redact",title:e.redactionCount()+" redacted terms"},[g(c(e.redactionCount()),1),t[51]||(t[51]=n("span",{class:"meta-redact-word"}," redacted",-1))],8,g9),t[52]||(t[52]=n("span",{class:"sep"},"\xB7",-1))],64)):f("v-if",!0),t[54]||(t[54]=g("Markdown",-1)),e.fileSize(e.filePath)!=null?(l(),d(L,{key:1},[t[53]||(t[53]=n("span",{class:"sep"},"\xB7",-1)),g(c(e.formatSize(e.fileSize(e.filePath))),1)],64)):f("v-if",!0)])):f("v-if",!0),n("div",v9,[e.isCsv()?(l(),d("div",y9,[n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.csvView==="table"}]),"aria-checked":e.csvView==="table",onClick:t[3]||(t[3]=a=>e.csvView="table")},"Table",10,b9),n("button",{type:"button",role:"radio",class:T(["seg-chip",{active:e.csvView==="raw"}]),"aria-checked":e.csvView==="raw",onClick:t[4]||(t[4]=a=>e.csvView="raw"),title:"Show the file as text with line numbers"},"Text",10,w9)])):f("v-if",!0),e.type!="html"&&e.symbols().length>1?(l(),d("div",k9,[n("button",{type:"button",class:T(["btn btn-sm btn-ghost btn-symbols",{"is-on":e.symbolsOpen}]),"aria-expanded":e.symbolsOpen?"true":"false","aria-haspopup":"true",title:"Symbols in this file",onClick:t[5]||(t[5]=a=>e.symbolsOpen=!e.symbolsOpen)},[...t[55]||(t[55]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-list"})],-1),n("span",{class:"btn-find-label"},"Symbols",-1)])],10,C9),e.symbolsOpen?(l(),d("div",E9,[n("div",S9,c(e.symbols().length)+" "+c(e.symbols().length===1?"symbol":"symbols"),1),(l(!0),d(L,null,ie(e.symbols(),a=>(l(),d("button",{type:"button",class:"symbols-item",role:"menuitem",key:a.line+a.name,onClick:u=>e.goToSymbol(a.line)},[n("span",{class:T(["symbols-kind","is-"+a.kind])},c(a.kind==="class"?"C":a.kind==="function"?"\u0192":"v"),3),n("span",R9,c(a.name),1),n("span",D9,c(a.line),1)],8,N9))),128))])):f("v-if",!0)])):f("v-if",!0),e.type=="html"?(l(),d("button",{key:2,type:"button",class:T(["btn btn-sm btn-ghost btn-icon-only btn-find btn-md-find",{"is-on":e.mdFindOpen}]),"aria-label":"Find on this page",title:"Find on this page ("+(e.isMac?"\u2318":"Ctrl+")+"F)",onClick:t[6]||(t[6]=a=>e.toggleMdFind())},[...t[56]||(t[56]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)])],10,A9)):f("v-if",!0),e.type!="html"&&!(e.isCsv()&&e.csvView==="table")?(l(),d("div",T9,[e.type!="html"?(l(),d("button",{key:0,type:"button",class:"btn btn-sm btn-ghost btn-icon-only btn-goto","aria-label":"Go to line",title:"Go to line ("+(e.isMac?"\u2318":"Ctrl+")+"G)",onClick:t[7]||(t[7]=a=>e.gotoLine())},[...t[57]||(t[57]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-goto"})],-1)])],8,P9)):f("v-if",!0),e.type!="html"?(l(),d("button",{key:1,type:"button",class:T(["btn btn-sm btn-icon-only btn-ghost btn-toggle",{"is-on":e.wrapLines}]),"aria-pressed":e.wrapLines?"true":"false","aria-label":"Wrap lines",title:"Wrap lines (Alt+Z)",onClick:t[8]||(t[8]=a=>e.toggleWrap())},[...t[58]||(t[58]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-wrap"})],-1)])],10,O9)):f("v-if",!0),e.type!="html"?(l(),d("button",{key:2,type:"button",class:"btn btn-sm btn-ghost btn-icon-only btn-find","aria-label":"Find in file",title:"Find in file ("+(e.isMac?"\u2318":"Ctrl+")+"F)",onClick:t[9]||(t[9]=a=>e.findInFile())},[...t[59]||(t[59]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1)])],8,I9)):f("v-if",!0)])):f("v-if",!0),n("div",_9,[n("a",{target:"_self",class:"tb-seg-btn",title:e.type=="html"?"Open the Markdown source":"Open the raw file",href:e.safeUrl(e.url)},"Raw",8,M9),typeof e.content=="string"?(l(),d("button",{key:0,type:"button",class:"tb-seg-btn tb-seg-icon","aria-label":e.contentCopied?"Copied":"Copy file contents",title:e.contentCopied?"Copied":"Copy file contents",onClick:t[10]||(t[10]=a=>e.copyContent())},[(l(),d("svg",q9,[n("use",{href:e.contentCopied?"#ui-icon-check":"#project-icon-copy"},null,8,$9)]))],8,V9)):f("v-if",!0),n("a",{target:"_self",class:"tb-seg-btn tb-seg-icon","aria-label":"Download file",title:"Download file",href:e.safeUrl(e.url+"&download=true")},[...t[60]||(t[60]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1)])],8,L9)]),typeof e.content=="string"?(l(),d("button",{key:4,type:"button",class:"btn btn-sm btn-icon-only btn-ghost tb-copy-m","aria-label":e.contentCopied?"Copied":"Copy file contents",onClick:t[11]||(t[11]=a=>e.copyContent())},[(l(),d("svg",F9,[n("use",{href:e.contentCopied?"#ui-icon-check":"#project-icon-copy"},null,8,B9)]))],8,U9)):f("v-if",!0),e.type=="html"&&e.readmeToc().length>=3?(l(),d("div",z9,[n("button",{type:"button",class:T(["btn btn-sm btn-icon-only btn-ghost tb-toc-btn",{"is-on":e.tocOpen}]),"aria-label":"On this page",title:"On this page","aria-haspopup":"true","aria-expanded":e.tocOpen?"true":"false",onClick:t[12]||(t[12]=ce(a=>{e.tocOpen=!e.tocOpen,e.moreOpen=!1},["stop"]))},[...t[61]||(t[61]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-outline"})],-1)])],10,H9),e.tocOpen?(l(),d("div",{key:0,class:"tb-menu tb-toc-menu",role:"menu",onClick:t[14]||(t[14]=a=>e.tocOpen=!1)},[t[62]||(t[62]=n("div",{class:"tb-menu-label"},"On this page",-1)),n("button",{type:"button",role:"menuitem",class:T(["tb-menu-toc","lvl-2",{"is-active":!e.activeHeading}]),onClick:t[13]||(t[13]=a=>e.scrollToHeading(null))},"Introduction",2),(l(!0),d(L,null,ie(e.readmeToc(),a=>(l(),d("button",{type:"button",role:"menuitem",key:"m-"+a.id,class:T(["tb-menu-toc","lvl-"+a.level,{"is-active":e.activeHeading===a.id}]),onClick:u=>e.scrollToHeading(a.id)},c(a.text),11,j9))),128))])):f("v-if",!0)])):f("v-if",!0),n("div",G9,[n("button",{type:"button",class:T(["btn btn-sm btn-icon-only btn-ghost tb-more-btn",{"is-on":e.moreOpen}]),"aria-label":"More actions","aria-haspopup":"true","aria-expanded":e.moreOpen?"true":"false",onClick:t[15]||(t[15]=ce(a=>{e.tocOpen=!1,e.moreOpen=!e.moreOpen},["stop"]))},[(l(),d("svg",K9,[...t[63]||(t[63]=[n("circle",{cx:"5",cy:"12",r:"1.8"},null,-1),n("circle",{cx:"12",cy:"12",r:"1.8"},null,-1),n("circle",{cx:"19",cy:"12",r:"1.8"},null,-1)])]))],10,W9),e.moreOpen?(l(),d("div",{key:0,class:"tb-menu",role:"menu",onClick:t[22]||(t[22]=a=>e.moreOpen=!1)},[e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate?(l(),d("div",Y9,[t[64]||(t[64]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),g("Snapshot \xB7 "+c(e.fmt?.date(e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate)),1)])):f("v-if",!0),typeof e.content=="string"?(l(),d("div",X9,[g(c(e.type=="html"?"Markdown":e.languageName||"Text")+" \xB7 "+c(e.type=="html"&&e.fileSize(e.filePath)!=null?e.formatSize(e.fileSize(e.filePath)):e.content.length<1024?e.content.length+" B":(e.content.length/1024).toFixed(1)+" KB"),1),e.type!="html"?(l(),d(L,{key:0},[g(" \xB7 "+c(e.fmt?.number(e.content.split(` +`).length))+" lines",1)],64)):f("v-if",!0)])):f("v-if",!0),e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate?(l(),d("div",J9)):f("v-if",!0),e.type=="html"?(l(),d("button",{key:3,type:"button",role:"menuitem",onClick:t[16]||(t[16]=a=>e.toggleMdFind())},[...t[65]||(t[65]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1),g("Find in file",-1)])])):f("v-if",!0),e.type=="html"?(l(),d("div",Q9)):f("v-if",!0),e.type!="html"?(l(),d("button",{key:5,type:"button",role:"menuitem",onClick:t[17]||(t[17]=a=>e.findInFile())},[...t[66]||(t[66]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-search"})],-1),g("Find in file",-1)])])):f("v-if",!0),e.type!="html"?(l(),d("button",{key:6,type:"button",role:"menuitem",onClick:t[18]||(t[18]=a=>e.gotoLine())},[...t[67]||(t[67]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-goto"})],-1),g("Go to line",-1)])])):f("v-if",!0),e.type!="html"?(l(),d("button",{key:7,type:"button",role:"menuitemcheckbox","aria-checked":e.wrapLines?"true":"false",onClick:t[19]||(t[19]=a=>e.toggleWrap())},[t[68]||(t[68]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-wrap"})],-1)),t[69]||(t[69]=g("Wrap lines",-1)),e.wrapLines?(l(),d("span",x9,"\u2713")):f("v-if",!0)],8,Z9)):f("v-if",!0),e.isCsv()?(l(),d("button",{key:8,type:"button",role:"menuitem",class:"tb-csv-view",onClick:t[20]||(t[20]=a=>{e.csvView=e.csvView==="table"?"raw":"table",e.moreOpen=!1})},[(l(),d("svg",eB,[n("use",{href:e.csvView==="table"?"#ui-icon-code":"#ui-icon-list"},null,8,tB)])),g(c(e.csvView==="table"?"Show as text":"Show as table"),1)])):f("v-if",!0),e.type!="html"?(l(),d("div",nB)):f("v-if",!0),e.type=="html"?(l(),d("a",{key:10,role:"menuitem",target:"_self",href:e.safeUrl(e.url)},[...t[70]||(t[70]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),g("View raw",-1)])],8,oB)):f("v-if",!0),e.type!="html"?(l(),d("a",{key:11,role:"menuitem",target:"_self",href:e.safeUrl(e.url)},[...t[71]||(t[71]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),g("View raw",-1)])],8,sB)):f("v-if",!0),n("a",{role:"menuitem",target:"_self",href:e.safeUrl(e.url+"&download=true")},[...t[72]||(t[72]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1),g("Download file",-1)])],8,iB),e.options?.hasWebsite?(l(),d("a",{key:12,role:"menuitem",target:"_self",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[73]||(t[73]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),g("Open website",-1)])],8,rB)):f("v-if",!0),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:13,role:"menuitem",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[74]||(t[74]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),g("Edit anonymization",-1)])],8,aB)):f("v-if",!0),e.options?.download?(l(),d("a",{key:14,role:"menuitem",target:"_self",href:e.safeUrl("/api/repo/"+e.repoId+"/zip")},[...t[75]||(t[75]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-archive"})],-1),g("Download ZIP",-1)])],8,lB)):f("v-if",!0),n("button",{type:"button",role:"menuitem",onClick:t[21]||(t[21]=a=>e.copyPath())},[...t[76]||(t[76]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-link"})],-1),g("Copy file path",-1)])]),t[77]||(t[77]=n("div",{class:"tb-menu-sep"},null,-1)),t[78]||(t[78]=n("a",{role:"menuitem",href:"/faq"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-help"})]),g("FAQ")],-1)),t[79]||(t[79]=n("a",{role:"menuitem",href:"https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml",target:"_blank",rel:"noopener"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-bug"})]),g("Report a bug")],-1))])):f("v-if",!0)])]),e.gotoOpen&&e.type!="html"?(l(),d("form",{key:2,class:"goto-pop",role:"dialog","aria-label":"Go to line",onSubmit:t[25]||(t[25]=ce(a=>e.submitGoto(),["prevent"]))},[t[80]||(t[80]=n("label",{class:"goto-label",for:"goto-input"},"Go to line",-1)),P(n("input",{id:"goto-input",class:"goto-input",type:"text",inputmode:"numeric",autocomplete:"off",spellcheck:"false",placeholder:"1\u2013"+e.fmt?.number(typeof e.content=="string"?e.content.split(` +`).length:1),"aria-invalid":e.gotoError?"true":"false","onUpdate:modelValue":t[23]||(t[23]=a=>e.gotoValue=a),onKeydown:t[24]||(t[24]=mt(ce(a=>e.closeGoto(),["prevent","stop"]),["esc"]))},null,40,dB),[[dt,e.gotoValue]]),n("span",{class:T(["goto-hint",{"is-error":e.gotoError}])},c(e.gotoError||"Line, or line:column"),3)],32)):f("v-if",!0)]),e.isCsv()&&e.csvView==="table"?(l(),d("div",{key:0,class:"csv-table-wrap",tabindex:"0",role:"region","aria-label":"Table view of "+(e.paths?.[e.paths.length-1]||"file")},[n("table",cB,[n("thead",null,[n("tr",null,[t[81]||(t[81]=n("th",{class:"csv-rownum",scope:"col"},[n("span",{class:"sr-only"},"Row")],-1)),(l(!0),d(L,null,ie(e.csvRows()[0]||[],(a,u)=>(l(),d("th",{scope:"col",key:u,class:T({"is-num":e.csvNumCol(u)})},[(l(!0),d(L,null,ie(e.redactParts(a),(p,y)=>(l(),d(L,{key:y},[p.n?(l(),d("span",{key:0,class:"redact-slot",role:"img","aria-label":"Redacted term "+p.n},[n("i",null,c(p.n),1)],8,pB)):(l(),d(L,{key:1},[g(c(p.t),1)],64))],64))),128))],2))),128))])]),n("tbody",null,[(l(!0),d(L,null,ie(e.csvRows().slice(1),(a,u)=>(l(),d("tr",{key:u},[n("td",fB,c(u+1),1),(l(!0),d(L,null,ie(a,(p,y)=>(l(),d("td",{key:y,class:T({"is-num":e.csvNumCol(y)})},[(l(!0),d(L,null,ie(e.redactParts(p),(m,b)=>(l(),d(L,{key:b},[m.n?(l(),d("span",{key:0,class:"redact-slot",role:"img","aria-label":"Redacted term "+m.n},[n("i",null,c(m.n),1)],8,hB)):(l(),d(L,{key:1},[g(c(m.t),1)],64))],64))),128))],2))),128))]))),128))])])],8,uB)):f("v-if",!0),e.type!="html"&&!(e.isCsv()&&e.csvView==="table")?P((l(),d("div",mB,null,512)),[[r,{content:e.content,options:e.aceOption}]]):f("v-if",!0),e.type=="html"&&e.mdFindOpen?(l(),d("div",gB,[n("input",{type:"search",class:"md-find-input",placeholder:"Find on this page","aria-label":"Find on this page",value:e.mdFindQuery,onInput:t[26]||(t[26]=a=>{e.mdFindQuery=a.target.value,e.runMdFind()}),onKeydown:[t[27]||(t[27]=mt(ce(a=>a.shiftKey?e.stepMdFind(-1):e.stepMdFind(1),["prevent"]),["enter"])),t[28]||(t[28]=mt(ce(a=>e.toggleMdFind(!1),["prevent"]),["esc"]))]},null,40,vB),n("span",yB,[n("button",{type:"button","aria-label":"Previous match",onClick:t[29]||(t[29]=a=>e.stepMdFind(-1)),disabled:!e.mdFindTotal},[...t[82]||(t[82]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-left"})],-1)])],8,bB),n("button",{type:"button","aria-label":"Next match",onClick:t[30]||(t[30]=a=>e.stepMdFind(1)),disabled:!e.mdFindTotal},[...t[83]||(t[83]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-chevron-right"})],-1)])],8,wB)]),n("span",kB,c(e.mdFindQuery?e.mdFindTotal?e.mdFindIndex+1+" of "+e.mdFindTotal:"No results":""),1),n("button",{type:"button",class:T(["md-find-opt",{"is-on":e.mdFindCase}]),"aria-pressed":e.mdFindCase?"true":"false",title:"Match case","aria-label":"Match case",onClick:t[31]||(t[31]=a=>{e.mdFindCase=!e.mdFindCase,e.runMdFind()})},"Aa",10,CB),n("button",{type:"button",class:"md-find-close","aria-label":"Close find",onClick:t[32]||(t[32]=a=>e.toggleMdFind(!1))},"\xD7")])):f("v-if",!0),e.type=="html"?(l(),d("div",EB,[n("div",{class:"file-content markdown-body",innerHTML:e.renderReadme(e.sanitize(e.content))},null,8,SB),e.readmeToc().length>=3?(l(),d("aside",NB,[t[84]||(t[84]=n("div",{class:"readme-toc-head"},"On this page",-1)),n("nav",RB,[n("a",{href:"#",class:T(["lvl-2 toc-top",{"is-active":!e.activeHeading}]),onClick:t[33]||(t[33]=ce(a=>e.scrollToHeading(null),["prevent"]))},"Introduction",2),(l(!0),d(L,null,ie(e.readmeToc(),(a,u)=>(l(),d("a",{key:a.id,href:"#"+a.id,class:T(["lvl-"+a.level,{"is-active":e.activeHeading===a.id}]),onClick:ce(p=>e.scrollToHeading(a.id),["prevent"])},c(a.text),11,DB))),128))])])):f("v-if",!0)])):f("v-if",!0)],2)):f("v-if",!0),e.type=="html-doc"&&!e.showSource&&e.content!=null?(l(),sn(o,{key:2,content:e.content,"base-url":e.fileBaseUrl,"allow-scripts":e.allowScripts},null,8,["content","base-url","allow-scripts"])):f("v-if",!0),e.fileFrame()?(l(),d("section",{key:3,class:T(["file-card file-card-media","view-"+e.type])},[n("header",AB,[n("div",TB,[n("button",{type:"button",class:T(["btn btn-sm btn-icon-only btn-ghost card-files-btn",{"is-needed":e.sidebarHidden}]),title:"Show file tree",onClick:t[34]||(t[34]=a=>e.sidebarHidden?e.sidebarHidden=!1:e.sidebarCollapsed=!1)},[...t[85]||(t[85]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-sidebar"})],-1),n("span",{class:"card-files-label"},"Files",-1)])],2),n("ol",PB,[n("li",OB,[n("a",{href:e.safeUrl("/r/"+e.repoId+"/"),title:e.repoId,textContent:c(/^[0-9a-f]{8}-[0-9a-f]{4}-/i.test(e.repoId||"")?"repository":e.repoId)},null,8,IB)]),(l(!0),d(L,null,ie(e.paths,(a,u)=>(l(),d("li",{class:"breadcrumb-item","aria-current":u===e.paths.length-1?"page":null},[(l(!0),d(L,null,ie(e.redactParts(a),(p,y)=>(l(),d(L,{key:y},[p.n?(l(),d("span",{key:0,class:"redact-slot",role:"img","aria-label":"Redacted term "+p.n},[n("i",null,c(p.n),1)],8,MB)):(l(),d(L,{key:1},[g(c(p.t),1)],64))],64))),128))],8,_B))),256))]),n("span",VB,[e.type=="IPython"&&e.redactionCount()?(l(),d("b",{key:0,class:"ms-item ms-redact",title:e.redactionCount()+" redacted terms"},[g(c(e.redactionCount()),1),t[86]||(t[86]=n("span",{class:"meta-redact-word"}," redacted",-1))],8,qB)):f("v-if",!0),n("span",$B,c(e.fileKind()),1),e.imageSize?(l(),d("span",LB,c(e.imageSize),1)):f("v-if",!0),e.fileSize(e.filePath)!=null?(l(),d("span",UB,c(e.formatSize(e.fileSize(e.filePath))),1)):f("v-if",!0)]),P(n("button",{type:"button",class:"btn btn-sm btn-icon-only btn-ghost copy-path-btn","aria-label":e.pathCopied?"Path copied":"Copy file path",title:e.pathCopied?"Path copied":"Copy file path",onClick:t[35]||(t[35]=a=>e.copyPath())},[(l(),d("svg",BB,[n("use",{href:e.pathCopied?"#ui-icon-check":"#ui-icon-link"},null,8,zB)]))],8,FB),[[ee,e.filePath]])]),n("span",HB,[e.type=="IPython"&&e.redactionCount()?(l(),d(L,{key:0},[n("span",{class:"meta-redact",title:e.redactionCount()+" redacted terms"},[g(c(e.redactionCount()),1),t[87]||(t[87]=n("span",{class:"meta-redact-word"}," redacted",-1))],8,jB),t[88]||(t[88]=n("span",{class:"sep"},"\xB7",-1))],64)):f("v-if",!0),g(c(e.fileKind()),1),e.imageSize?(l(),d(L,{key:1},[t[89]||(t[89]=n("span",{class:"sep"},"\xB7",-1)),g(c(e.imageSize),1)],64)):f("v-if",!0),e.fileSize(e.filePath)!=null?(l(),d(L,{key:2},[t[90]||(t[90]=n("span",{class:"sep"},"\xB7",-1)),g(c(e.formatSize(e.fileSize(e.filePath))),1)],64)):f("v-if",!0)]),n("div",GB,[e.type=="error"&&e.content==="file_too_big"?(l(),d("span",WB,[...t[91]||(t[91]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})],-1),g("Over the size limit",-1)])])):f("v-if",!0),e.type!="error"?(l(),d("div",KB,[n("a",{target:"_self",class:"tb-seg-btn",title:e.type=="IPython"?"Open the notebook JSON":"Open the raw file",href:e.safeUrl(e.url)},"Raw",8,YB),n("a",{target:"_self",class:"tb-seg-btn tb-seg-icon","aria-label":"Download file",title:"Download file",href:e.safeUrl(e.url+"&download=true")},[...t[92]||(t[92]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1)])],8,XB)])):f("v-if",!0),n("div",JB,[n("button",{type:"button",class:T(["btn btn-sm btn-icon-only btn-ghost tb-more-btn",{"is-on":e.moreOpen}]),"aria-label":"More actions","aria-haspopup":"true","aria-expanded":e.moreOpen?"true":"false",onClick:t[36]||(t[36]=ce(a=>e.moreOpen=!e.moreOpen,["stop"]))},[(l(),d("svg",ZB,[...t[93]||(t[93]=[n("circle",{cx:"5",cy:"12",r:"1.8"},null,-1),n("circle",{cx:"12",cy:"12",r:"1.8"},null,-1),n("circle",{cx:"19",cy:"12",r:"1.8"},null,-1)])]))],10,QB),e.moreOpen?(l(),d("div",{key:0,class:"tb-menu",role:"menu",onClick:t[38]||(t[38]=a=>e.moreOpen=!1)},[e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate?(l(),d("div",xB,[t[94]||(t[94]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),g("Snapshot \xB7 "+c(e.fmt?.date(e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate)),1)])):f("v-if",!0),e.options?.publishedAt||e.options?.sourceCommitDate||e.options?.anonymizedAt||e.options?.lastUpdateDate?(l(),d("div",ez)):f("v-if",!0),e.type!="error"?(l(),d("a",{key:2,role:"menuitem",target:"_self",href:e.safeUrl(e.url)},[t[95]||(t[95]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1)),g(c(e.type=="IPython"?"View notebook JSON":"View raw"),1)],8,tz)):f("v-if",!0),e.type!="error"?(l(),d("a",{key:3,role:"menuitem",target:"_self",href:e.safeUrl(e.url+"&download=true")},[...t[96]||(t[96]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1),g("Download file",-1)])],8,nz)):f("v-if",!0),e.options?.download?(l(),d("a",{key:4,role:"menuitem",target:"_self",href:e.safeUrl("/api/repo/"+e.repoId+"/zip")},[...t[97]||(t[97]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-archive"})],-1),g("Download ZIP",-1)])],8,oz)):f("v-if",!0),n("button",{type:"button",role:"menuitem",onClick:t[37]||(t[37]=a=>e.copyPath())},[...t[98]||(t[98]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-link"})],-1),g("Copy file path",-1)])]),t[99]||(t[99]=n("div",{class:"tb-menu-sep"},null,-1)),t[100]||(t[100]=n("a",{role:"menuitem",href:"/faq"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-help"})]),g("FAQ")],-1)),t[101]||(t[101]=n("a",{role:"menuitem",href:"https://github.com/tdurieux/anonymous_github/issues/new?template=issue_report.yml",target:"_blank",rel:"noopener"},[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-bug"})]),g("Report a bug")],-1))])):f("v-if",!0)])])]),e.type=="image"?(l(),d("div",sz,[n("img",{class:"image-content",src:e.safeUrl(e.url),alt:e.paths[e.paths.length-1],onLoad:t[39]||(t[39]=a=>e.onImageLoad(a))},null,40,iz)])):f("v-if",!0),e.type=="media"?(l(),d("div",rz,[n("video",{class:"video-content",controls:"",preload:"metadata",playsinline:"",src:e.safeUrl(e.url)},null,8,az)])):f("v-if",!0),e.type=="audio"?(l(),d("div",lz,[n("audio",{controls:"",preload:"metadata",src:e.safeUrl(e.url)},null,8,dz)])):f("v-if",!0),e.type=="pdf"?(l(),sn(i,{key:3,src:e.safeUrl(e.url)},null,8,["src"])):f("v-if",!0),e.type=="IPython"?(l(),d("div",uz,[Me(s,{class:"markdown-body",file:e.url,content:e.content},null,8,["file","content"])])):f("v-if",!0),e.type=="binary"?(l(),d("div",cz,[t[103]||(t[103]=n("svg",{class:"ui-icon file-state-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-file"})],-1)),t[104]||(t[104]=n("h2",{class:"file-state-title"},"No preview for this file",-1)),t[105]||(t[105]=n("p",{class:"file-state-msg"},"This is a binary file. Download it to open it on your computer.",-1)),n("div",pz,[n("a",{target:"_self",class:"btn btn-primary",href:e.safeUrl(e.url+"&download=true")},[...t[102]||(t[102]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-download"})],-1),g("Download file",-1)])],8,fz)])])):f("v-if",!0),e.type=="error"?(l(),d("div",hz,[t[107]||(t[107]=n("svg",{class:"ui-icon file-state-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-warning"})],-1)),n("h2",mz,c(e.content==="file_too_big"?"This file is too large to preview":"This file can't be shown"),1),e.content==="file_too_big"?(l(),d("p",gz,"It is over the size limit for anonymized files, so it can't be previewed or downloaded from this link.")):(l(),d("p",vz,c(e.fmt.translate("ERRORS."+e.content)),1)),n("div",yz,[n("a",{class:"btn btn-primary",href:e.safeUrl("/r/"+e.repoId+"/")},"Back to the repository",8,bz),t[106]||(t[106]=n("a",{class:"btn btn-outline-ink",href:"/faq#formats"},"Supported files",-1))])])):f("v-if",!0),e.content==null&&e.type!="error"?(l(),d("div",wz,[...t[108]||(t[108]=[n("svg",{class:"ui-icon file-state-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-file"})],-1),n("h2",{class:"file-state-title"},"This file is empty",-1),n("p",{class:"file-state-msg"},"It has no content in this snapshot.",-1)])])):f("v-if",!0)],2)):f("v-if",!0),e.type=="rate_limited"?(l(),d("div",kz,[n("div",Cz,[t[111]||(t[111]=Ce('
Temporarily paused
GitHub API rate limit reached
',1)),n("p",Ez,[t[109]||(t[109]=g("This repository will be available in ",-1)),n("strong",null,c(e.rateLimitCountdown),1),t[110]||(t[110]=g(". The page will reload automatically.",-1))])])])):f("v-if",!0),e.type=="error"&&!e.fileFrame()?(l(),d("div",Sz,[n("section",Nz,[n("h1",Rz,c(e.fmt.translate(e.isSourceAccessError()?"VIEWER_ERRORS.access_title":"VIEWER_ERRORS.title")),1),n("p",null,c(e.fmt.translate("ERRORS."+e.content)),1),e.isSourceAccessError()?(l(),d(L,{key:0},[n("p",null,c(e.fmt.translate("VIEWER_ERRORS.reader_help")),1),n("p",null,c(e.fmt.translate("VIEWER_ERRORS.owner_help")),1)],64)):f("v-if",!0),n("div",Dz,[e.isSourceAccessError()?f("v-if",!0):(l(),d("a",Az,"Back to home")),e.isSourceAccessError()?f("v-if",!0):(l(),d("a",Tz,"Read the FAQ")),n("button",{type:"button",class:"btn btn-primary",onClick:t[40]||(t[40]=a=>e.retryContent())},c(e.fmt.translate("VIEWER_ERRORS.retry")),1),e.isSourceAccessError()?(l(),d("a",Pz,c(e.fmt.translate("VIEWER_ERRORS.dashboard")),1)):f("v-if",!0)])])])):f("v-if",!0),e.type=="loading"&&!e.error?(l(),d("section",Oz,[n("div",Iz,[n("strong",null,c(e.fmt.translate(e.fileReceivedBytes?"VIEWER_LOADING.receiving":"VIEWER_LOADING.loading")),1),n("span",_z,c(e.filePath),1),e.fileLoadingSlow?(l(),d("p",Mz,c(e.fmt.translate("VIEWER_LOADING.slow")),1)):f("v-if",!0)]),n("div",Vz,[(l(),d(L,null,ie(10,a=>n("span",{key:a})),64))])])):f("v-if",!0),e.type=="empty"?(l(),d("div",qz,[...t[112]||(t[112]=[n("h1",{class:"paper-empty-title m-auto"},[g("Empty "),n("em",null,"repository"),g(".")],-1)])])):f("v-if",!0),e.content==null&&!["empty","loading","error","rate_limited"].includes(e.type)&&!e.fileFrame()?(l(),d("div",$z,[...t[113]||(t[113]=[n("h1",{class:"paper-empty-title m-auto"},[g("Empty "),n("em",null,"file"),g(".")],-1)])])):f("v-if",!0)],64)}var Lz={class:"container page dashboard-page paper-page"},Uz={class:"row"},Fz={class:"w-100"},Bz={class:"w-100","aria-label":"Pull Requests","accept-charset":"UTF-8"},zz={class:"d-flex flex-column flex-md-row align-items-md-center",style:{gap:"8px"}},Hz={class:"flex-grow-1"},jz={type:"search",id:"search",class:"form-control","aria-label":"Find a pull request...",placeholder:"Find a pull request...",autocomplete:"off"},Gz={class:"d-flex flex-wrap",style:{gap:"6px"}},Wz={class:"dropdown"},Kz={class:"dropdown-menu","aria-labelledby":"dropdownSort"},Yz={class:"form-check dropdown-item"},Xz={class:"form-check-input",type:"radio",name:"sort",id:"sortFullName",value:"fullName"},Jz={class:"form-check dropdown-item"},Qz={class:"form-check-input",type:"radio",name:"sort",id:"sortAnonymizeDate",value:"-anonymizeDate"},Zz={class:"form-check dropdown-item"},xz={class:"form-check-input",type:"radio",name:"sort",id:"sortStatus",value:"-status"},eH={class:"form-check dropdown-item"},tH={class:"form-check-input",type:"radio",name:"sort",id:"sortLastView",value:"-lastView"},nH={class:"form-check dropdown-item"},oH={class:"form-check-input",type:"radio",name:"sort",id:"sortPageView",value:"-pageView"},sH={class:"dropdown"},iH={class:"dropdown-menu","aria-labelledby":"dropdownStatus"},rH={class:"form-check dropdown-item"},aH={class:"form-check-input",type:"checkbox",name:"sort",id:"statusReady",value:"ready"},lH={class:"form-check dropdown-item"},dH={class:"form-check-input",type:"checkbox",name:"sort",id:"statusExpired",value:"expired"},uH={class:"form-check dropdown-item"},cH={class:"form-check-input",type:"checkbox",name:"sort",id:"statusRemoved",value:"removed"},pH={class:"d-flex flex-wrap mt-2",style:{gap:"6px"}},fH={class:"filter-chip"},hH=["onClick"],mH={class:"repo-list w-100"},gH={class:"repo-list-item-content"},vH={class:"repo-list-item-main"},yH={class:"repo-list-item-header"},bH=["textContent","href"],wH=["textContent"],kH=["textContent"],CH={class:"repo-source"},EH=["href"],SH={class:"repo-date"},NH={class:"repo-meta"},RH={key:0,title:"Conference"},DH=["title"],AH=["title"],TH=["title"],PH={key:1},OH={class:"repo-list-item-actions"},IH={class:"dropdown"},_H={class:"dropdown-menu dropdown-menu-right"},MH=["href"],VH=["onClick"],qH=["onClick"],$H=["onClick"],LH=["href"],UH={key:0,class:"repo-list-empty"};function ep(e,t){let o=Pe("field"),i=Pe("form");return l(),d("div",Lz,[n("div",Uz,[n("div",Fz,[t[12]||(t[12]=Ce('
My work \xA0/\xA0 Pull requests

Anonymized pull requests

Track PR mirrors you\u2019ve created and their reviewer traffic.

',2)),f(" Search + filters row "),P((l(),d("form",Bz,[n("div",zz,[n("div",Hz,[P(n("input",jz,null,512),[[o,{state:e.viewState,set:s=>{e.search=s},value:e.search,form:null,options:{}}]])]),n("div",Gz,[n("div",Wz,[t[6]||(t[6]=n("button",{class:"btn btn-sm dropdown-toggle",type:"button",id:"dropdownSort","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Sort ",-1)),n("div",Kz,[t[5]||(t[5]=n("h6",{class:"dropdown-header"},"Select order",-1)),n("div",Yz,[P(n("input",Xz,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[0]||(t[0]=n("label",{class:"form-check-label",for:"sortFullName"},"Pull Request",-1))]),n("div",Jz,[P(n("input",Qz,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[1]||(t[1]=n("label",{class:"form-check-label",for:"sortAnonymizeDate"},"Anonymize Date",-1))]),n("div",Zz,[P(n("input",xz,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[2]||(t[2]=n("label",{class:"form-check-label",for:"sortStatus"},"Status",-1))]),n("div",eH,[P(n("input",tH,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[3]||(t[3]=n("label",{class:"form-check-label",for:"sortLastView"},"Last View",-1))]),n("div",nH,[P(n("input",oH,null,512),[[o,{state:e.viewState,set:s=>{e.orderBy=s},value:e.orderBy,form:null,options:{}}]]),t[4]||(t[4]=n("label",{class:"form-check-label",for:"sortPageView"},"Page View",-1))])])]),n("div",sH,[t[11]||(t[11]=n("button",{class:"btn btn-sm dropdown-toggle",type:"button",id:"dropdownStatus","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Status ",-1)),n("div",iH,[t[10]||(t[10]=n("h6",{class:"dropdown-header"},"Select status",-1)),n("div",rH,[P(n("input",aH,null,512),[[o,{state:e.viewState,set:s=>{e.filters.status.ready=s},value:e.filters?.status?.ready,form:null,options:{}}]]),t[7]||(t[7]=n("label",{class:"form-check-label",for:"statusReady"},"Ready",-1))]),n("div",lH,[P(n("input",dH,null,512),[[o,{state:e.viewState,set:s=>{e.filters.status.expired=s},value:e.filters?.status?.expired,form:null,options:{}}]]),t[8]||(t[8]=n("label",{class:"form-check-label",for:"statusExpired"},"Expired",-1))]),n("div",uH,[P(n("input",cH,null,512),[[o,{state:e.viewState,set:s=>{e.filters.status.removed=s},value:e.filters?.status?.removed,form:null,options:{}}]]),t[9]||(t[9]=n("label",{class:"form-check-label",for:"statusRemoved"},"Removed",-1))])])])])])])),[[i,e.viewState]]),f(" Active filter chips "),P(n("div",pH,[(l(!0),d(L,null,ie(e.filters?.status,(s,r,a)=>P((l(),d("span",fH,[g(c(e.fmt?.title(r))+" ",1),n("button",{type:"button",class:"filter-chip-close","aria-label":"Remove filter",onClick:u=>{e.filters.status[r]=!0}}," \xD7 ",8,hH)],512)),[[ee,!s]])),256))],512),[[ee,e.filters?.status?.ready===!1||e.filters?.status?.expired===!1||e.filters?.status?.removed===!1]])]),f(" Pull request list "),n("ul",mH,[(l(!0),d(L,null,ie(e.filteredPullRequests,(s,r)=>(l(),d("li",{class:T(["repo-list-item",{"repo-inactive":s?.status=="expired"||s?.status=="removed"||s?.status=="error"}])},[n("div",gH,[n("div",vH,[n("div",yH,[n("a",{class:"repo-name",textContent:c(s?.pullRequestId),href:e.safeUrl("/pr/"+s?.pullRequestId)},null,8,bH),n("span",{class:T(["status-badge",{"status-removed":s?.status=="removed"||s?.status=="expired"||s?.status=="removing"||s?.status=="expiring","status-preparing":s?.status=="preparing"||s?.status=="download","status-ready":s?.status=="ready","status-error":s?.status=="error"}])},[n("span",{textContent:c(e.fmt?.title(s?.status))},null,8,wH),s?.status=="error"?(l(),d("span",{key:0,textContent:c(": "+s?.statusMessage)},null,8,kH)):f("v-if",!0)],2)]),n("div",CH,[n("span",null,[t[13]||(t[13]=n("i",{class:"fab fa-github","aria-hidden":"true"},null,-1)),n("a",{href:e.safeUrl("https://github.com/"+s?.source?.repositoryFullName+"/pull/"+s?.source?.pullRequestId)},c(s?.source?.repositoryFullName)+"#"+c(s?.source?.pullRequestId),9,EH)]),n("span",{class:T(["status-badge",{"status-ready":s?.merged,"status-removed":s?.state=="open","status-error":s?.state=="closed"&&!s?.merged}]),style:{"font-size":"10px"}},c(e.fmt?.title(s?.merged?"merged":s?.state)),3),n("span",SH,"anonymized "+c(e.fmt?.humanTime(s?.anonymizeDate)),1)])]),n("div",NH,[s?.conference?(l(),d("span",RH,[t[14]||(t[14]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-conference"})],-1)),g(" "+c(s?.conference),1)])):f("v-if",!0),n("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Terms: "+s?.options?.terms?.join(", ")},[t[15]||(t[15]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1)),g(" "+c(e.fmt?.number(s?.options?.terms?.length)),1)],8,DH),n("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Views: "+e.fmt?.number(s?.pageView)},[t[16]||(t[16]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1)),g(" "+c(e.fmt?.number(s?.pageView)),1)],8,AH),n("span",{"data-toggle":"tooltip","data-placement":"bottom",title:"Last view: "+e.fmt?.date(s?.lastView)},[t[17]||(t[17]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-calendar"})],-1)),g(" "+c(e.fmt?.humanTime(s?.lastView)),1)],8,TH),s?.options?.expirationMode!="never"&&s?.status=="ready"?(l(),d("span",PH,[t[18]||(t[18]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),g(" Expire: "+c(e.fmt?.humanTime(s?.options?.expirationDate)),1)])):f("v-if",!0)])]),n("div",OH,[n("div",IH,[t[24]||(t[24]=n("button",{class:"btn btn-sm dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"}," Actions ",-1)),n("div",_H,[n("a",{class:"dropdown-item",href:e.safeUrl("/pull-request-anonymize/"+s?.pullRequestId)},[...t[19]||(t[19]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),g(" Edit ",-1)])],8,MH),P(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updatePullRequest(s),["prevent"])},[...t[20]||(t[20]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-refresh"})],-1),g(" Force update ",-1)])],8,VH),[[ee,s?.status=="ready"||s?.status=="error"]]),P(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.updatePullRequest(s),["prevent"])},[...t[21]||(t[21]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-check-circle"})],-1),g(" Enable ",-1)])],8,qH),[[ee,s?.status=="removed"]]),P(n("a",{class:"dropdown-item",href:"#",onClick:ce(a=>e.removePullRequest(s),["prevent"])},[...t[22]||(t[22]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1),g(" Remove ",-1)])],8,$H),[[ee,s?.status=="ready"]]),n("a",{class:"dropdown-item",href:e.safeUrl("/pr/"+s?.pullRequestId+"/")},[...t[23]||(t[23]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),g(" View PR ",-1)])],8,LH)])])])],2))),256)),e.filteredPullRequests?.length==0?(l(),d("li",UH,[...t[25]||(t[25]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-inbox"})],-1),n("span",null,"No pull requests to display.",-1)])])):f("v-if",!0)])])])}var FH={class:"container paper-page user-settings"},BH={class:"settings-nav","aria-label":"Settings"},zH=["aria-current","onClick"],HH={class:"settings-row"},jH=["rows"],GH={class:"settings-syntax"},WH={class:"invalid-feedback"},KH={class:"settings-row"},YH={class:"settings-checks"},XH={class:"settings-check"},JH={class:"form-check-input",type:"checkbox",id:"link",name:"link"},QH={class:"settings-check"},ZH={class:"form-check-input",type:"checkbox",id:"image",name:"image"},xH={class:"settings-check"},ej={class:"form-check-input",type:"checkbox",id:"pdf",name:"pdf"},tj={class:"settings-check"},nj={class:"form-check-input",type:"checkbox",id:"notebook",name:"notebook"},oj={class:"settings-check"},sj={class:"form-check-input",type:"checkbox",id:"loc",name:"loc"},ij={class:"settings-check"},rj={class:"form-check-input",type:"checkbox",id:"page",name:"page"},aj={class:"settings-row"},lj={class:"settings-check"},dj={class:"form-check-input",type:"checkbox",id:"update",name:"update"},uj={class:"settings-row"},cj={class:"form-control",id:"expiration",name:"expiration"},pj={class:"settings-help"},fj={class:"settings-save"},hj={class:"settings-save-status draft-status",role:"status"},mj={key:0},gj={key:1},vj={key:2},yj=["disabled"],bj={key:1,class:"settings-save-error",role:"alert"},wj=["aria-busy"],kj={key:0,role:"status"},Cj={key:1,class:"settings-notice",role:"alert"},Ej=["disabled"],Sj={key:2,class:"settings-notice",role:"status"},Nj={key:3,class:"settings-notice",role:"status"},Rj=["disabled"],Dj={class:"billing-summary"},Aj={class:"billing-summary-head"},Tj={class:"billing-plan-name"},Pj={key:0,class:"billing-plan-meta"},Oj={key:1,class:"billing-plan-meta"},Ij={key:0,class:"billing-summary-actions"},_j=["disabled"],Mj={id:"settings-quota"},Vj={key:1,role:"status"},qj={key:0,class:"settings-notice"},$j={key:1,class:"settings-notice"},Lj={key:2,class:"settings-notice"},Uj={key:4,class:"billing-section","aria-labelledby":"settings-plan-comparison"},Fj={key:0,class:"billing-offers"},Bj={key:0,class:"billing-offer is-recommended"},zj={class:"billing-offer-price"},Hj={class:"billing-offer-list"},jj=["disabled"],Gj={key:1,class:"billing-offer"},Wj={class:"billing-offer-head"},Kj={class:"billing-toggle",role:"radiogroup","aria-label":"Billing frequency"},Yj=["aria-checked","onClick"],Xj={key:0,class:"billing-toggle-save"},Jj={class:"billing-offer-price"},Qj={class:"billing-offer-list"},Zj=["disabled"],xj={key:1,class:"billing-addons"},eG={class:"billing-addon-rows"},tG={class:"billing-addon-price"},nG=["onClick","disabled"],oG={key:2,class:"billing-buy",id:"settings-addons-title",tabindex:"-1"},sG={class:"billing-buy-info"},iG={class:"billing-offer-price"},rG={class:"billing-offer-list"},aG={class:"billing-buy-form"},lG=["value"],dG=["disabled"],uG={key:1,class:"billing-buy-desc"},cG={key:2,class:"billing-footnote"},pG={class:"billing-compare"},fG={class:"billing-compare-card"},hG={class:"settings-comparison"},mG={key:0,scope:"col",class:"is-recommended"},gG={key:1,scope:"col"},vG={key:0,class:"is-recommended"},yG={key:1},bG={key:0,class:"is-recommended"},wG={key:1},kG={key:0,class:"is-recommended"},CG={key:1},EG={key:0,class:"is-recommended"},SG={key:1},NG={key:0,class:"is-recommended"},RG={key:1},DG={key:0,class:"is-recommended"},AG={key:1},TG={key:3,class:"billing-footnote"},PG={key:5,class:"billing-section"},OG={class:"billing-section-head"},IG=["disabled"],_G={key:0,class:"billing-empty"},MG={key:1,class:"billing-history-head","aria-hidden":"true"},VG={key:2,class:"billing-history"},qG={class:"billing-history-main"},$G=["href"],LG=["href"],UG={class:"billing-history-term"},FG={class:"billing-history-paid"},BG={class:"billing-history-status"},zG={class:"billing-manage"},HG={key:0},jG={key:1},GG=["disabled"],WG={class:"billing-conference"},KG={id:"settings-account",class:"settings-account-panel"},YG={class:"paper-account-card"},XG=["src"],JG={class:"paper-account-identity"},QG={class:"paper-account-name"},ZG=["disabled"],xG={key:0,role:"status"},eW={key:1,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},tW=["disabled"],nW={key:3,role:"status"},oW={class:"paper-danger-zone"},sW={key:0,class:"paper-inline-alert paper-inline-alert-error",role:"alert"},iW=["textContent"],rW=["disabled"],aW={key:1,class:"settings-delete-confirm"},lW={for:"delete-username"},dW={class:"settings-actions"},uW=["disabled"],cW=["disabled"];function tp(e,t){let o=Ye("quota-usage"),i=Pe("field"),s=Pe("form");return l(),d("div",FH,[t[107]||(t[107]=n("header",{class:"settings-title page-head page-head-main"},[n("h1",null,"Settings"),n("p",{class:"paper-page-lede"},"Defaults for new anonymizations, hosting and your account.")],-1)),n("nav",BH,[(l(),d(L,null,ie([{id:"defaults",label:"Anonymization defaults"},{id:"billing",label:"Hosting & billing"},{id:"account",label:"Account"}],r=>n("button",{type:"button","aria-current":e.settingsTab===r.id?"page":null,onClick:a=>e.settingsTab=r.id},c(r.label),9,zH)),64))]),P(n("div",null,[t[41]||(t[41]=n("p",{class:"settings-scope"},"For new anonymizations only. Existing repositories keep their settings.",-1)),P((l(),d("form",{class:"form needs-validation",name:"defaultsForm",novalidate:"",onInput:t[1]||(t[1]=r=>e.unsavedChanges=!0),onSubmit:t[2]||(t[2]=ce(r=>e.submitForm(r,()=>{e.saveDefault(r)}),["prevent"]))},[n("section",HH,[t[26]||(t[26]=n("div",null,[n("label",{class:"settings-label",for:"terms"},"Terms to redact"),n("p",{class:"settings-help"},"One term per line.")],-1)),n("div",null,[P(n("textarea",{class:"form-control",id:"terms",name:"terms",rows:Math.min(14,Math.max(3,String(e.terms||"").split(` `).length+1)),placeholder:`Jane Smith MIT CSAIL -jane.smith@example.org`},null,8,RB),[[i,{state:e.viewState,set:r=>{e.terms=r},value:e.terms,form:"defaultsForm",options:{debounce:250}}]]),n("details",DB,[t[25]||(t[25]=n("summary",null,"Regex & replacement syntax",-1)),n("p",null,[t[21]||(t[21]=y("Matches become ",-1)),n("code",null,c(e.site_options?.ANONYMIZATION_MASK||"XXX")+"-[N]",1),t[22]||(t[22]=y(". Use ",-1)),t[23]||(t[23]=n("code",null,"term=>replacement",-1)),t[24]||(t[24]=y(" for a custom replacement. Regex is supported.",-1))])]),A(n("div",AB,"Terms are in an invalid format.",512),[[J,e.defaultsForm?.terms?.errors?.format]])])]),n("section",TB,[t[35]||(t[35]=n("h2",null,"Reviewer display",-1)),n("div",null,[n("div",PB,[n("label",_B,[A(n("input",OB,null,512),[[i,{state:e.viewState,set:r=>{e.options.link=r},value:e.options?.link,form:"defaultsForm",options:{}}]]),t[27]||(t[27]=y("Keep links",-1))]),n("label",IB,[A(n("input",MB,null,512),[[i,{state:e.viewState,set:r=>{e.options.notebook=r},value:e.options?.notebook,form:"defaultsForm",options:{}}]]),t[28]||(t[28]=y("Render notebooks",-1))]),n("label",VB,[A(n("input",qB,null,512),[[i,{state:e.viewState,set:r=>{e.options.image=r},value:e.options?.image,form:"defaultsForm",options:{}}]]),t[29]||(t[29]=y("Show images",-1))]),n("label",$B,[A(n("input",LB,null,512),[[i,{state:e.viewState,set:r=>{e.options.pdf=r},value:e.options?.pdf,form:"defaultsForm",options:{}}]]),t[30]||(t[30]=y("Show PDFs",-1))]),n("label",UB,[A(n("input",FB,null,512),[[i,{state:e.viewState,set:r=>{e.options.loc=r},value:e.options?.loc,form:"defaultsForm",options:{}}]]),t[31]||(t[31]=y("Show line counts",-1))]),n("label",BB,[A(n("input",zB,null,512),[[i,{state:e.viewState,set:r=>{e.options.page=r},value:e.options?.page,form:"defaultsForm",options:{}}]]),t[32]||(t[32]=y("GitHub Pages",-1))])]),t[33]||(t[33]=n("p",{class:"settings-help"},"Images and PDFs are not anonymized.",-1)),t[34]||(t[34]=n("p",{class:"settings-help"},"GitHub Pages must use the anonymized branch.",-1))])]),n("section",HB,[t[38]||(t[38]=n("h2",null,"Source updates",-1)),n("div",null,[n("label",jB,[A(n("input",GB,null,512),[[i,{state:e.viewState,set:r=>{e.options.update=r},value:e.options?.update,form:"defaultsForm",options:{}}]]),t[36]||(t[36]=y("Auto-update from GitHub",-1))]),t[37]||(t[37]=n("p",{class:"settings-help"},"Latest commit, at most once an hour.",-1))])]),n("section",WB,[t[40]||(t[40]=n("label",{class:"settings-label",for:"expiration"},"On expiration",-1)),n("div",null,[A((l(),d("select",KB,[...t[39]||(t[39]=[n("option",{value:"redirect"},"Redirect visitors to the GitHub repository",-1),n("option",{value:"remove",selected:""},"Remove the anonymized repository",-1)])])),[[i,{state:e.viewState,set:r=>{e.options.expirationMode=r},value:e.options?.expirationMode,form:"defaultsForm",options:{}}]]),n("p",YB,c(e.options.expirationMode==="redirect"?"Redirecting reveals the original repository. Choose the date per anonymization.":"Set the expiration date for each repository."),1)])]),n("footer",XB,[n("div",JB,[e.draftRestored?(l(),d("span",QB,"Your unsaved draft was restored.")):e.unsavedChanges?(l(),d("span",ZB,"Unsaved changes"+c(e.draftSaved?" \xB7 Draft saved in this tab":""),1)):(l(),d("span",xB,c(e.message?"Defaults saved":"All changes saved"),1))]),e.draftRestored||e.unsavedChanges?(l(),d("button",{key:0,type:"button",class:"draft-discard",onClick:t[0]||(t[0]=r=>e.discardDraft())},"Discard changes")):f("v-if",!0),n("button",{id:"save",type:"submit",class:"btn btn-ink",disabled:e.saving},c(e.saving?"Saving\u2026":"Save defaults"),9,e7),e.error?(l(),d("div",t7,c(e.error),1)):f("v-if",!0)])],32)),[[s,e.viewState]])],512),[[J,e.settingsTab==="defaults"]]),A(n("section",{id:"settings-billing","aria-busy":e.billingLoading||e.billingBusy},[t[95]||(t[95]=n("p",{class:"settings-scope"},"Your plan and usage. Reviewer access is always free.",-1)),e.billingLoading?(l(),d("p",o7,"Loading billing\u2026")):f("v-if",!0),e.billingError?(l(),d("div",s7,[y(c(e.billingError)+" ",1),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[2]||(t[2]=r=>e.loadBilling()),disabled:e.billingBusy},"Try again",8,i7)])):f("v-if",!0),e.billingNotice?(l(),d("p",r7,c(e.billingNotice),1)):f("v-if",!0),e.billingPending?(l(),d("div",a7,[t[42]||(t[42]=n("strong",null,"Confirming your payment",-1)),t[43]||(t[43]=n("p",null,"Your allowance will update after confirmation. Please do not pay again.",-1)),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[3]||(t[3]=r=>e.refreshBilling()),disabled:e.billingBusy},"Check payment status",8,l7)])):f("v-if",!0),n("section",d7,[n("div",u7,[n("div",null,[t[44]||(t[44]=n("p",{class:"billing-eyebrow"},"Current plan",-1)),n("h2",c7,c(e.profileAuthorGrant()?e.profileGrantName(e.profileAuthorGrant()):e.billing?.enabled?"Free":"Account allowance"),1),e.profileAuthorGrant()?(l(),d("p",p7,[y(c(e.profileAuthorGrant().cancelAtPeriodEnd?"Renewal cancelled \xB7 access until ":"Renews ")+c(e.billingDate(e.profileAuthorGrant().until)),1),e.profileAuthorPurchase()?.amount!=null?(l(),d(B,{key:0},[y(" \xB7 "+c(e.billingPrice(e.profileAuthorPurchase())),1)],64)):f("v-if",!0)])):e.billing?.allowance?(l(),d("p",f7,c(e.billing.allowance.repositories)+" repositories \xB7 "+c(e.billingBytes(e.billing.allowance.storage))+" \xB7 links up to "+c(e.billing.freeExpirationMonths||5)+" months",1)):f("v-if",!0)]),e.profileAuthorGrant()&&e.billing?.portal?(l(),d("div",h7,[n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[4]||(t[4]=r=>e.billingPortal()),disabled:e.billingBusy},c(e.profileAuthorGrant().cancelAtPeriodEnd?"Resume renewal":"Change or cancel plan"),9,m7)])):f("v-if",!0)]),n("div",g7,[e.quota?(l(),sn(o,{key:0,quota:e.quota,fmt:e.fmt},null,8,["quota","fmt"])):(l(),d("p",v7,"Loading usage\u2026"))]),e.quota?.repository&&!e.quota.repository.unlimited&&e.quota.repository.used>=e.quota.repository.total?(l(),d("p",y7,[y("Your free repositories are used up. Add the next one for "+c(e.profileSlotPlan()?e.billingPrice(e.profileSlotPlan()):"a one-time payment")+" when you create it, or ",1),t[45]||(t[45]=n("a",{href:"/dashboard"},"remove work you no longer need",-1)),t[46]||(t[46]=y(".",-1))])):f("v-if",!0),e.profileAuthorGrant()?.status==="past_due"?(l(),d("p",b7,"A subscription payment is overdue. Update your payment details in Manage billing and invoices.")):f("v-if",!0),e.profilePastSubscription()?(l(),d("p",w7,[...t[47]||(t[47]=[y("Your previous subscription has ended. Never-expiring repositories stay online for a 90-day grace period. ",-1),n("a",{href:"/dashboard"},"Review expiration dates",-1),y(".",-1)])])):f("v-if",!0),t[48]||(t[48]=n("p",{class:"billing-footnote"},"Coauthored, paid and conference repositories aren't counted here.",-1))]),e.billing?.enabled&&!e.profileAuthorGrant()&&(e.profilePackPlan()||e.profileAuthorPlans().length)?(l(),d("section",k7,[t[85]||(t[85]=n("h2",{class:"billing-section-title",id:"settings-plan-comparison",tabindex:"-1"},"Get more",-1)),e.showRepositoryPass&&e.profileAddon()&&!e.billingPending?f("v-if",!0):(l(),d("div",C7,[e.profilePackPlan()?(l(),d("article",E7,[t[54]||(t[54]=n("span",{class:"billing-offer-pill"},"Recommended",-1)),t[55]||(t[55]=n("div",{class:"billing-offer-head"},[n("p",{class:"billing-eyebrow"},"For one paper")],-1)),t[56]||(t[56]=n("h3",null,"Paper pack",-1)),n("p",S7,[n("strong",null,c(e.billingAmount(e.profilePackPlan())),1),t[49]||(t[49]=y(" once",-1))]),n("ul",N7,[t[50]||(t[50]=n("li",null,"One more repository, outside your free ones",-1)),n("li",null,"Its own "+c(e.billingBytes(e.profileSlotPlan()?.storage||e.profilePassPlan()?.storage))+" of storage",1),t[51]||(t[51]=n("li",null,"Automatic updates for 180 days",-1)),t[52]||(t[52]=n("li",null,"Online for up to a year",-1)),t[53]||(t[53]=n("li",null,"No subscription",-1))]),n("button",{type:"button",class:"btn btn-ink",onClick:t[5]||(t[5]=r=>e.openProfileAddon("repo_pack")),disabled:e.billingPending||e.billing.checkoutEnabled===!1},"Buy a Paper pack",8,R7)])):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("article",D7,[n("div",A7,[t[57]||(t[57]=n("p",{class:"billing-eyebrow"},"For many papers",-1)),n("div",T7,[(l(!0),d(B,null,ie(e.profileAuthorPlansByValue(),r=>(l(),d("button",{type:"button",role:"radio",key:r.id,"aria-checked":e.profileSelectedPlan()?.id===r.id?"true":"false",class:P({"is-on":e.profileSelectedPlan()?.id===r.id}),onClick:a=>e.profilePlan=r.id},[y(c(r.interval==="year"?"Yearly":"Monthly"),1),r.interval==="year"&&e.profileAnnualSavings()?(l(),d("span",_7,"\u2212"+c(e.profileAnnualSavings())+"%",1)):f("v-if",!0)],10,P7))),128))])]),t[62]||(t[62]=n("h3",null,"Author subscription",-1)),n("p",O7,[n("strong",null,c(e.billingAmount(e.profileSelectedPlan())),1),y(" per "+c(e.profileSelectedPlan()?.interval==="year"?"year":"month"),1)]),n("ul",I7,[n("li",null,c(e.profileSelectedPlan()?.repositories)+" repositories, "+c(e.billingBytes(e.profileSelectedPlan()?.storage)),1),t[58]||(t[58]=n("li",null,"Automatic updates",-1)),t[59]||(t[59]=n("li",null,"Links that never expire",-1)),t[60]||(t[60]=n("li",null,"Coauthors included",-1)),t[61]||(t[61]=n("li",null,"Cancel renewal anytime",-1))]),n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.billingBusy||e.billing.checkoutEnabled===!1,onClick:t[6]||(t[6]=r=>e.checkout(e.profileSelectedPlan().id))},c(e.billingBusy?"Please wait\u2026":"Subscribe"),9,M7)])):f("v-if",!0)])),e.profileSingleAddons().length&&!(e.showRepositoryPass&&e.profileAddon()&&!e.billingPending)?(l(),d("div",V7,[t[63]||(t[63]=n("div",{class:"billing-addons-head"},[n("h3",{class:"billing-subtitle"},"Or pay for one thing"),n("span",null,"One-time")],-1)),n("ul",q7,[(l(!0),d(B,null,ie(e.profileSingleAddons(),r=>(l(),d("li",{key:r.id},[n("div",null,[n("strong",null,c(r.name),1),n("span",null,c(e.profileAddonBlurb(r.id)),1)]),n("span",$7,c(e.billingAmount(r)),1),n("button",{type:"button",class:"settings-text-button",onClick:a=>e.openProfileAddon(r.id),disabled:e.billingPending||e.billing.checkoutEnabled===!1},"Buy",8,L7)]))),128))])])):f("v-if",!0),e.showRepositoryPass&&e.profileAddon()&&!e.billingPending?(l(),d("div",U7,[n("div",F7,[n("button",{type:"button",class:"btn btn-outline-ink billing-back",onClick:t[7]||(t[7]=r=>e.showRepositoryPass=!1)},"\u2190 All options"),n("h3",null,c(e.profileAddon().name),1),n("p",B7,[n("strong",null,c(e.billingAmount(e.profileAddon())),1),t[64]||(t[64]=y(" once",-1))]),n("ul",z7,[(l(!0),d(B,null,ie(e.profileAddonFeatures(e.profileAddon().id),r=>(l(),d("li",{key:r},c(r),1))),128))])]),n("div",H7,[e.profileRepositories().length?(l(),d(B,{key:0},[t[66]||(t[66]=n("label",{class:"paper-field-label",for:"billing-repository"},"Which repository?",-1)),A(n("select",{id:"billing-repository",class:"form-control","onUpdate:modelValue":t[8]||(t[8]=r=>e.billingRepository=r)},[t[65]||(t[65]=n("option",{value:"",disabled:""},"Choose a repository",-1)),(l(!0),d(B,null,ie(e.profileRepositories(),r=>(l(),d("option",{key:r.repoId,value:r.repoId},c(r.repoId)+" \xB7 "+c(e.profileRepositoryExpiry(r)),9,j7))),128))],512),[[gn,e.billingRepository]]),n("button",{type:"button",class:"btn btn-ink",disabled:e.billingBusy||!e.billingRepository||e.billing.checkoutEnabled===!1,onClick:t[9]||(t[9]=r=>e.checkout(e.profileAddon().id,e.billingRepository))},c(e.billingBusy?"Please wait\u2026":"Continue to checkout"),9,G7),t[67]||(t[67]=n("p",{class:"billing-footnote"},"One-time payment. Tax shown at checkout.",-1))],64)):(l(),d("p",W7,[...t[68]||(t[68]=[y("You have no repositories yet. ",-1),n("a",{href:"/anonymize"},"Create one",-1),y(" first.",-1)])])),["repo_slot","repo_pack"].includes(e.profileAddon().id)?(l(),d("p",K7,[...t[69]||(t[69]=[y("Adding a new repository? ",-1),n("a",{href:"/anonymize"},"Start creating it",-1),y("; the form offers this once your free repositories are in use.",-1)])])):f("v-if",!0)])])):f("v-if",!0),n("details",Y7,[t[84]||(t[84]=n("summary",null,"Compare all features",-1)),n("div",X7,[n("table",J7,[t[83]||(t[83]=n("caption",{class:"sr-only"},"Free, Paper pack and Author hosting",-1)),n("thead",null,[n("tr",null,[t[72]||(t[72]=n("th",{scope:"col"},[n("span",{class:"sr-only"},"Feature")],-1)),t[73]||(t[73]=n("th",{scope:"col"},[y("Free"),n("small",null,"\u20AC0")],-1)),e.profilePackPlan()?(l(),d("th",Q7,[t[70]||(t[70]=y("Paper pack",-1)),n("small",null,c(e.billingPrice(e.profilePackPlan())),1)])):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("th",Z7,[t[71]||(t[71]=y("Author",-1)),n("small",null,c(e.billingPrice(e.profileSelectedPlan())),1)])):f("v-if",!0)])]),n("tbody",null,[n("tr",null,[t[74]||(t[74]=n("th",{scope:"row"},"Repositories",-1)),n("td",null,c(e.billing.allowance?.repositories),1),e.profilePackPlan()?(l(),d("td",x7,"+1")):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("td",ez,c(e.profileSelectedPlan()?.repositories),1)):f("v-if",!0)]),n("tr",null,[t[75]||(t[75]=n("th",{scope:"row"},"Source storage",-1)),n("td",null,c(e.billingBytes(e.billing.allowance?.storage))+" total",1),e.profilePackPlan()?(l(),d("td",tz,c(e.billingBytes(e.profileSlotPlan()?.storage||e.profilePassPlan()?.storage))+" for it",1)):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("td",nz,c(e.billingBytes(e.profileSelectedPlan()?.storage))+" total",1)):f("v-if",!0)]),n("tr",null,[t[76]||(t[76]=n("th",{scope:"row"},"Latest expiration",-1)),n("td",null,c(e.billing.freeExpirationMonths||5)+" months ahead",1),e.profilePackPlan()?(l(),d("td",oz,"1 year after purchase")):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("td",sz,"Never")):f("v-if",!0)]),n("tr",null,[t[77]||(t[77]=n("th",{scope:"row"},"Automatic updates",-1)),t[78]||(t[78]=n("td",null,"No",-1)),e.profilePackPlan()?(l(),d("td",iz,"180 days")):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("td",rz,"Yes")):f("v-if",!0)]),n("tr",null,[t[79]||(t[79]=n("th",{scope:"row"},"Renews",-1)),t[80]||(t[80]=n("td",null,"No",-1)),e.profilePackPlan()?(l(),d("td",az,"No")):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("td",lz,"Until cancelled")):f("v-if",!0)]),n("tr",null,[t[81]||(t[81]=n("th",{scope:"row"},"Reviewer access",-1)),t[82]||(t[82]=n("td",null,"Free",-1)),e.profilePackPlan()?(l(),d("td",dz,"Free")):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("td",uz,"Free")):f("v-if",!0)])])])])]),e.billing.checkoutEnabled===!1?(l(),d("p",cz,"New purchases are not available right now. Existing billing can still be managed below.")):f("v-if",!0)])):f("v-if",!0),e.billing?.enabled?(l(),d("section",pz,[n("div",fz,[t[86]||(t[86]=n("h2",{class:"billing-section-title"},"Purchases",-1)),e.billingPending?f("v-if",!0):(l(),d("button",{key:0,type:"button",class:"settings-text-button",onClick:t[10]||(t[10]=r=>e.refreshBilling()),disabled:e.billingBusy},"Refresh payment status",8,hz))]),(e.billing.purchases||[]).length?f("v-if",!0):(l(),d("p",mz,"No purchases yet.")),(e.billing.purchases||[]).length?(l(),d("div",gz,[...t[87]||(t[87]=[n("span",null,"Purchase",-1),n("span",null,"Period",-1),n("span",null,"Amount",-1),n("span",null,"Status",-1)])])):f("v-if",!0),(e.billing.purchases||[]).length?(l(),d("ul",vz,[(l(!0),d(B,null,ie(e.profilePurchases(!0).concat(e.profilePurchases(!1)),r=>(l(),d("li",{class:P(["billing-history-row",{"is-ended":!["active","overdue"].includes(r.status)}]),key:r.id},[n("div",yz,[n("strong",null,[y(c(e.profileGrantName(r)),1),r.repoId?(l(),d(B,{key:0},[t[88]||(t[88]=y(" \xB7 ",-1)),n("a",{href:"/anonymize/"+encodeURIComponent(r.repoId)},c(r.repoId),9,bz)],64)):r.conference?(l(),d(B,{key:1},[t[89]||(t[89]=y(" \xB7 ",-1)),n("a",{href:"/conference/"+encodeURIComponent(r.conference)},c(r.conference),9,wz)],64)):f("v-if",!0)]),n("span",null,c([r.purchasedAt?"Bought "+e.billingDate(r.purchasedAt):"",r.parts.length?e.profilePackSummary(r):["refunded","disputed"].includes(r.status)?"Payment "+r.status+", so what it paid for has ended":r.recurring?"Account subscription":""].filter(Boolean).join(" \xB7 ")),1)]),n("div",kz,c(e.profilePurchaseTerm(r)),1),n("div",Cz,c(r.amount!=null?e.billingPrice(r):""),1),n("div",Ez,[n("span",{class:P(["settings-status","is-"+r.status])},c(e.profilePurchaseStatus(r)),3)])],2))),128))])):f("v-if",!0),n("div",Sz,[n("div",null,[t[90]||(t[90]=n("strong",null,"Invoices and payment details",-1)),e.billing.portal?(l(),d("p",Nz,"Download receipts, update your card or change renewal in Stripe.")):(l(),d("p",Rz,"Invoices appear here after your first purchase.")),t[91]||(t[91]=n("p",null,[y("Need a refund? "),n("a",{href:"mailto:tdurieux@anonymous.4open.science"},"Email the maintainer"),y(" with the payment date, or read the "),n("a",{href:"/faq#faq-plans"},"refund policy"),y(".")],-1))]),e.billing.portal?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[11]||(t[11]=r=>e.billingPortal()),disabled:e.billingBusy},"Manage billing and invoices",8,Dz)):f("v-if",!0)])])):f("v-if",!0),n("p",Az,[t[92]||(t[92]=y("Organizing a conference? ",-1)),e.profileConferencePlan()?(l(),d(B,{key:0},[y("Review packages start at "+c(e.billingAmount(e.profileConferencePlan()))+" once for up to "+c(e.profileConferencePlan().repositories)+" submissions, and authors pay nothing.",1)],64)):(l(),d(B,{key:1},[y("One payment hosts every submission, and authors pay nothing.")],64)),t[93]||(t[93]=y()),t[94]||(t[94]=n("a",{href:"/conference/new"},"Create a conference",-1))])],8,n7),[[J,e.settingsTab==="billing"]]),A(n("section",Tz,[t[105]||(t[105]=n("p",{class:"settings-scope"},"Your identity, repository access, and account.",-1)),n("div",Pz,[e.user?.photo?(l(),d("img",{key:0,width:"40",height:"40",class:"rounded-circle",alt:"",src:e.safeUrl(e.user?.photo)},null,8,_z)):f("v-if",!0),n("div",Oz,[n("div",Iz,"@"+c(e.user?.username),1),t[96]||(t[96]=n("div",{class:"paper-account-meta"},"Signed in with GitHub. Anonymous GitHub only reads your repositories.",-1))]),t[97]||(t[97]=n("a",{class:"btn btn-outline-ink",href:"/api/user/logout",target:"_self"},"Sign out",-1))]),n("form",{class:"paper-account-email",onSubmit:t[15]||(t[15]=ce(r=>e.saveAccountEmail(),["prevent"]))},[t[98]||(t[98]=n("label",{class:"paper-field-label",for:"account-email"},"Email address",-1)),t[99]||(t[99]=n("p",{id:"account-email-help",class:"paper-section-copy"},"Used for account alerts. Your address is never shown on anonymous pages.",-1)),A(n("input",{id:"account-email",class:"form-control",type:"email",autocomplete:"email",maxlength:"254",required:"","onUpdate:modelValue":t[12]||(t[12]=r=>e.accountEmail=r),"aria-describedby":"account-email-help",disabled:e.emailLoading||e.emailSaving||!e.emailCSRFReady,onInput:t[13]||(t[13]=r=>e.emailSaved=!1)},null,40,Mz),[[ct,e.accountEmail]]),e.emailLoading?(l(),d("p",Vz,"Loading your email address\u2026")):f("v-if",!0),e.emailError?(l(),d("p",qz,c(e.emailError),1)):f("v-if",!0),!e.emailCSRFReady&&!e.emailLoading?(l(),d("button",{key:2,class:"btn btn-outline-ink mt-2",type:"button",onClick:t[14]||(t[14]=r=>e.loadAccountEmail())},"Try again")):f("v-if",!0),n("button",{class:"btn btn-ink mt-2",type:"submit",disabled:e.emailLoading||e.emailSaving||!e.emailCSRFReady},c(e.emailSaving?"Saving\u2026":"Save email address"),9,$z),e.emailSaved?(l(),d("p",Lz,"Email address saved.")):f("v-if",!0)],32),t[106]||(t[106]=n("a",{class:"paper-settings-connection-link",href:"/connections"},[n("i",{class:"fab fa-github","aria-hidden":"true"}),n("span",null,[y("GitHub connections"),n("small",null,"Manage repository access and legacy OAuth.")]),n("span",{"aria-hidden":"true"},"\u2192")],-1)),n("div",Uz,[t[103]||(t[103]=n("div",{class:"paper-danger-head"},"Delete account",-1)),t[104]||(t[104]=n("p",{class:"paper-danger-copy"}," Removes all your anonymized repositories, gists, and pull requests, revokes the application's access to your GitHub account, and erases your personal data (username, email, access tokens). This cannot be undone. ",-1)),e.deleteError?(l(),d("div",Fz,[t[100]||(t[100]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})],-1)),t[101]||(t[101]=y()),n("span",{textContent:c(e.deleteError)},null,8,Bz)])):f("v-if",!0),n("button",{type:"button",class:"btn btn-outline-danger",onClick:t[16]||(t[16]=r=>e.confirmDeleteAccount=!0),disabled:e.deletingAccount},[t[102]||(t[102]=n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1)),y(c(e.deletingAccount?"Deleting\u2026":"Delete my account"),1)],8,zz),e.confirmDeleteAccount?(l(),d("div",Hz,[n("label",jz,"Type "+c(e.user?.username)+" to confirm",1),A(n("input",{id:"delete-username",class:"form-control","onUpdate:modelValue":t[17]||(t[17]=r=>e.deleteUsername=r),autocomplete:"off"},null,512),[[ct,e.deleteUsername]]),n("div",Gz,[n("button",{type:"button",class:"btn btn-outline-danger",onClick:t[18]||(t[18]=r=>e.deleteAccount()),disabled:e.deletingAccount||e.deleteUsername!==e.user?.username},c(e.deletingAccount?"Deleting\u2026":"Delete permanently"),9,Wz),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[19]||(t[19]=r=>{e.confirmDeleteAccount=!1,e.deleteUsername=""}),disabled:e.deletingAccount},"Cancel",8,Kz)])])):f("v-if",!0)])],512),[[J,e.settingsTab==="account"]])])}var Yz={class:"pr-page"},Xz={class:"container paper-page pr-page-inner"},Jz={class:"pr-header"},Qz={class:"pr-title-row"},Zz={class:"paper-page-title pr-title"},xz=["textContent"],eH={key:1,class:"text-muted"},tH=["href"],nH={class:"pr-header-meta"},oH={key:0,class:"pr-meta-item"},sH=["textContent"],iH={key:1,class:"pr-meta-item"},rH=["textContent"],aH={key:2,class:"pr-meta-item"},lH=["textContent"],dH={key:0,class:"pr-body-card"},uH={key:1,class:"paper-tabs",role:"tablist"},cH=["aria-selected","tabindex"],pH=["aria-selected","tabindex"],fH=["textContent"],hH={class:"paper-tab-content"},mH={key:0,role:"tabpanel",id:"pr-diff-panel","aria-labelledby":"pr-diff-tab"},gH=["innerHTML"],vH={key:1,role:"tabpanel",id:"pr-comments-panel","aria-labelledby":"pr-comments-tab"},yH={class:"pr-comments"},bH={class:"pr-comment"},wH={class:"pr-comment-head"},kH={key:0,class:"pr-comment-author"},CH=["textContent"],EH=["textContent"],SH={key:0,class:"pr-comment-body"},NH={key:0,class:"paper-table-empty"};function $c(e,t){let o=at("markdown");return l(),d("div",Yz,[n("div",Xz,[t[17]||(t[17]=n("div",{class:"paper-crumbs"},[n("a",{href:"/dashboard"},"Reviewer"),y(" \xA0/\xA0 "),n("span",{class:"here"},"Pull request")],-1)),n("header",Jz,[n("div",Qz,[n("h1",Zz,[e.details?.title?(l(),d("span",{key:0,textContent:c(e.details?.title)},null,8,xz)):f("v-if",!0),e.details?.title?f("v-if",!0):(l(),d("span",eH,"Untitled pull request"))]),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/pull-request-anonymize/"+e.pullRequestId)},[...t[4]||(t[4]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),n("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,tH)):f("v-if",!0)]),n("div",nH,[n("span",{class:P(["paper-pill",{good:e.details?.merged,warn:e.details?.state=="open",bad:e.details?.state=="closed"&&!e.details?.merged}])},[n("span",{class:P(["status-dot",{"status-ready":e.details?.merged,"status-error":e.details?.state=="closed"&&!e.details?.merged}])},null,2),y(" "+c(e.details?.merged?"Merged":e.fmt.title(e.details?.state)),1)],2),e.details?.baseRepositoryFullName?(l(),d("span",oH,[t[5]||(t[5]=n("i",{class:"fab fa-github"},null,-1)),t[6]||(t[6]=y()),n("span",{textContent:c(e.details?.baseRepositoryFullName)},null,8,sH)])):f("v-if",!0),e.details?.updatedDate?(l(),d("span",iH,[t[7]||(t[7]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[8]||(t[8]=y()),n("span",{textContent:c(e.fmt?.date(e.details?.updatedDate))},null,8,rH)])):f("v-if",!0),e.details?.anonymizeDate?(l(),d("span",aH,[t[9]||(t[9]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1)),t[10]||(t[10]=y(" Anonymized ",-1)),n("span",{textContent:c(e.fmt?.date(e.details?.anonymizeDate))},null,8,lH)])):f("v-if",!0)])]),e.details?.body?(l(),d("section",dH,[t[11]||(t[11]=n("div",{class:"paper-section-eyebrow"},"Description",-1)),Ue(o,{content:e.details?.body},null,8,["content"])])):f("v-if",!0),e.details?.diff||e.details?.comments?(l(),d("nav",uH,[e.details?.diff?(l(),d("button",{key:0,class:P(["paper-tab",{active:e.tabState?.active=="diff"}]),type:"button",role:"tab",id:"pr-diff-tab","aria-selected":e.tabState?.active==="diff","aria-controls":"pr-diff-panel",tabindex:e.tabState?.active==="diff"?0:-1,onKeydown:t[0]||(t[0]=i=>e.previewTabKeydown(i)),onClick:t[1]||(t[1]=i=>e.tabState.active="diff")},[...t[12]||(t[12]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),y(" Diff ",-1)])],42,cH)):f("v-if",!0),e.details?.comments?(l(),d("button",{key:1,class:P(["paper-tab",{active:e.tabState?.active=="comments"}]),type:"button",role:"tab",id:"pr-comments-tab","aria-selected":e.tabState?.active==="comments","aria-controls":"pr-comments-panel",tabindex:e.tabState?.active==="comments"?0:-1,onKeydown:t[2]||(t[2]=i=>e.previewTabKeydown(i)),onClick:t[3]||(t[3]=i=>e.tabState.active="comments")},[t[13]||(t[13]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1)),n("span",{textContent:c(e.fmt.plural(e.details?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,fH)],42,pH)):f("v-if",!0)])):f("v-if",!0),n("div",hH,[e.details?.diff&&e.tabState?.active=="diff"?(l(),d("div",mH,[n("div",{class:"pr-diff",innerHTML:e.sanitize(e.fmt?.diff(e.details?.diff))},null,8,gH)])):f("v-if",!0),e.details?.comments&&e.tabState?.active=="comments"?(l(),d("div",vH,[n("ul",yH,[(l(!0),d(B,null,ie(e.details?.comments,(i,s)=>(l(),d("li",bH,[n("div",wH,[i?.author?(l(),d("span",kH,[t[14]||(t[14]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[15]||(t[15]=y(" @",-1)),n("span",{textContent:c(i?.author)},null,8,CH)])):f("v-if",!0),i?.updatedDate?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(i?.updatedDate))},null,8,EH)):f("v-if",!0)]),i?.body?(l(),d("div",SH,[Ue(o,{content:i?.body},null,8,["content"])])):f("v-if",!0)]))),256)),e.details?.comments?.length?f("v-if",!0):(l(),d("li",NH,[...t[16]||(t[16]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1),n("span",null,"No comments on this pull request.",-1)])]))])])):f("v-if",!0)])])])}var RH={class:"repository-task status-page"},DH={class:"task-lede"},AH={class:"task-columns"},TH={class:"task-preparation","aria-label":"Repository preparation"},PH={key:0,class:"task-ready",role:"status"},_H={key:1},OH={key:2,class:"text-danger",role:"alert"},IH={key:3,class:"paper-section-copy"},MH={key:4,class:"paper-ratelimit-card",role:"status"},VH={class:"paper-error-msg"},qH=["aria-valuenow"],$H={class:"paper-progress-label"},LH=["textContent"],UH={key:0},FH=["textContent"],BH={class:"paper-progress-pct"},zH={key:6,class:"paper-error-card",role:"alert"},HH={key:0,class:"paper-error-msg"},jH={key:1,class:"paper-error-msg"},GH={key:2},WH=["href"],KH={class:"paper-error-actions"},YH=["href"],XH={key:7,class:"share-link"},JH={class:"share-link-row"},QH=["value"],ZH={class:"ui-icon","aria-hidden":"true"},xH=["href"],e9=["textContent"],t9={class:"share-link-actions"},n9=["href"],o9=["href"],s9={class:"task-summary","aria-label":"Repository summary"},i9={class:"task-summary-foot"};function Lc(e,t){return l(),d("div",RH,[t[23]||(t[23]=n("div",{class:"paper-crumbs"},[n("a",{href:"/dashboard"},"My work"),y(" / Repository")],-1)),t[24]||(t[24]=n("h1",null,"Prepare your anonymous review link",-1)),n("p",DH,c(e.repo?.status==="ready"?"Your repository is ready to share.":"Your settings are saved. Track preparation before sharing the link."),1),t[25]||(t[25]=n("ol",{class:"task-trail","aria-label":"Repository progress"},[n("li",null,"1. Repository"),n("li",null,"2. Review and hosting"),n("li",{"aria-current":"step"},"3. Review link")],-1)),n("div",AH,[n("section",TH,[e.repo?.status==="ready"?(l(),d("div",PH,[...t[3]||(t[3]=[n("strong",null,"Your review link is ready",-1)])])):f("v-if",!0),n("h2",null,c(e.repoId),1),e.repo?.status==="ready"?(l(),d("p",_H,"Share the link with reviewers. They do not need to sign in.")):f("v-if",!0),e.error?(l(),d("p",OH,[t[4]||(t[4]=y("Unable to load repository status. ",-1)),n("button",{type:"button",class:"task-text-button",onClick:t[0]||(t[0]=o=>e.getStatus())},"Try again")])):f("v-if",!0),e.repo?.status!=="ready"?(l(),d("p",IH,[...t[5]||(t[5]=[y(" The repository will take a few minutes to get ready, depending on its size. Visit the ",-1),n("a",{href:"/faq"},"FAQ",-1),y(" for more information. ",-1)])])):f("v-if",!0),e.rateLimitResetAt?(l(),d("div",MH,[t[8]||(t[8]=ke('
Temporarily paused
GitHub API rate limit reached
',1)),n("p",VH,[t[6]||(t[6]=y("Anonymization will resume automatically in ",-1)),n("strong",null,c(e.rateLimitCountdown),1),t[7]||(t[7]=y(". No action needed \u2014 the job is queued and will continue where it left off.",-1))])])):f("v-if",!0),e.repo?.status!=="ready"&&e.repo?.status!="error"&&!e.rateLimitResetAt?(l(),d("div",{key:5,class:P(["paper-progress",{"paper-progress-ready":e.repo?.status=="ready"}]),role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.progress},[n("div",{class:"paper-progress-bar",style:$e("width: "+e.progress+"%;")},null,4),n("div",$H,[n("span",{textContent:c(e.fmt?.title(e.repo?.status))},null,8,LH),e.repo?.statusMessage?(l(),d("span",UH,[t[9]||(t[9]=y("\xA0\xB7\xA0",-1)),n("span",{textContent:c(e.repo?.statusMessage)},null,8,FH)])):f("v-if",!0),n("span",BH,c(e.progress||0)+"%",1)])],10,qH)):f("v-if",!0),e.repo?.status=="error"&&!e.rateLimitResetAt?(l(),d("div",zH,[t[13]||(t[13]=ke('
Anonymization failed
Something went wrong while preparing this repository.
',1)),e.repo?.statusMessage?(l(),d("p",HH,c(e.fmt?.translate("ERRORS."+e.repo?.statusMessage)),1)):f("v-if",!0),e.repo?.statusMessage?f("v-if",!0):(l(),d("p",jH,"No additional details were reported. The most common causes are private repositories, missing branches, and rate limits.")),e.repo?.statusMessage==="quota_exceeded"?(l(),d("p",GH,[n("a",{href:e.safeUrl("/anonymize/"+e.repoId)},"Review this repository\u2019s hosting",8,WH),t[10]||(t[10]=y(", then retry preparation.",-1))])):f("v-if",!0),t[14]||(t[14]=n("ul",{class:"paper-error-hints"},[n("li",null,"Make sure the source URL points to a repository or pull request you can access."),n("li",null,"Check that the chosen branch and commit still exist on GitHub."),n("li",null,"If you just signed in, the access token may need a moment to propagate \u2014 try again.")],-1)),n("div",KH,[n("a",{class:"btn btn-ink",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[11]||(t[11]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),y(" Edit anonymization",-1)])],8,YH),t[12]||(t[12]=ke(' Read the FAQ Report a bug in Anonymous GitHub',2))])])):f("v-if",!0),e.repo?.status=="ready"?(l(),d("div",XH,[t[17]||(t[17]=n("p",{class:"paper-section-copy"},"Reviewers can browse the repository at this address without seeing who you are.",-1)),n("div",JH,[n("input",{id:"share-url",class:"form-control share-link-input",readonly:"","aria-label":"Anonymous link",value:e.shareUrl,onFocus:t[1]||(t[1]=o=>o.target.select())},null,40,QH),n("button",{type:"button",class:"btn btn-ink",onClick:t[2]||(t[2]=o=>e.copyShareUrl())},[(l(),d("svg",ZH,[n("use",{href:e.copied?"#ui-icon-check":"#project-icon-copy"},null,8,xH)])),n("span",{"aria-live":"polite",textContent:c(e.copied?"Copied":"Copy link")},null,8,e9)])]),n("div",t9,[n("a",{class:"btn",target:"_self",href:e.safeUrl("/r/"+e.repoId+"/")},[...t[15]||(t[15]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),y(" Open repository ",-1)])],8,n9),e.repo?.options?.page?(l(),d("a",{key:0,class:"btn",target:"_self",href:e.safeUrl("/w/"+e.repoId+"/")},[...t[16]||(t[16]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-globe"})],-1),y(" Open GitHub page ",-1)])],8,o9)):f("v-if",!0)])])):f("v-if",!0)]),n("aside",s9,[n("h3",null,c(e.repoId),1),n("dl",null,[t[18]||(t[18]=n("dt",null,"Source",-1)),n("dd",null,c(e.repo?.source?.fullName?"https://github.com/"+e.repo.source.fullName:"Loading\u2026"),1),t[19]||(t[19]=n("dt",null,"Lifetime",-1)),n("dd",null,c(e.repo?.options?.expirationMode==="never"?"Never expire while subscribed":e.repo?.options?.expirationDate?"Until "+e.fmt.date(e.repo.options.expirationDate):"Loading\u2026"),1),t[20]||(t[20]=n("dt",null,"Review access",-1)),t[21]||(t[21]=n("dd",null,"Anonymous and free",-1))]),n("div",i9,[n("strong",null,c(e.repo?.status==="ready"?"Ready to share":"Repository preparation"),1),t[22]||(t[22]=n("p",null,"Coauthors do not each need a subscription.",-1))])])])])}var Li={"partials/reviewConsent.htm":uc,"partials/connections.htm":cc,"partials/signin.htm":pc,"partials/404.htm":fc,"partials/admin/conferences.htm":hc,"partials/admin/errors.htm":mc,"partials/admin/overview.htm":gc,"partials/admin/queues.htm":vc,"partials/admin/repositories.htm":yc,"partials/admin/user.htm":bc,"partials/admin/users.htm":wc,"partials/anonymize.htm":kc,"partials/anonymizePullRequest.htm":Cc,"partials/claim.htm":Ec,"partials/conference.htm":Sc,"partials/conferences.htm":Nc,"partials/dashboard.htm":Rc,"partials/explorer.htm":Dc,"partials/faq.htm":Ac,"partials/gist.htm":Tc,"partials/header.htm":Pc,"partials/home.htm":_c,"partials/loading.htm":Oc,"partials/newConference.htm":Ic,"partials/pageView.htm":Mc,"partials/pr-dashboard.htm":Vc,"partials/profile.htm":qc,"partials/pullRequest.htm":$c,"partials/status.htm":Lc};var r9={class:"ui-icon-definitions","aria-hidden":"true",focusable:"false"};function Uc(e,t){return l(),d("svg",r9,[...t[0]||(t[0]=[ke('',1)])])}function Fc(e,t){e==="partials/explorer.htm"&&(t.sidebarCollapsed=window.matchMedia?.("(max-width: 767px)").matches||!1,t.sidebarHidden=!1,t.dirExpanded=!1,t.moreOpen=!1,t.tocOpen=!1,t.gotoOpen=!1,t.gotoValue="",t.gotoError="",t.mdFindOpen=!1,t.mdFindQuery="",t.mdFindTotal=0,t.mdFindIndex=0,t.mdFindCase=!1,t.accountOpen=!1,t.helpOpen=!1,t.sidebarWidth=Math.min(520,Math.max(220,Number(localStorage.getItem("sidebarWidth"))||280)),document.documentElement.style.setProperty("--sidebar-w",t.sidebarWidth+"px"),t.startSidebarResize=s=>{s.preventDefault();let r=s.clientX,a=t.sidebarWidth,u=v=>{t.sidebarWidth=Math.min(520,Math.max(220,a+v.clientX-r)),document.documentElement.style.setProperty("--sidebar-w",t.sidebarWidth+"px")},p=()=>{window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",p),document.body.classList.remove("is-resizing"),localStorage.setItem("sidebarWidth",String(t.sidebarWidth))};document.body.classList.add("is-resizing"),window.addEventListener("pointermove",u),window.addEventListener("pointerup",p)}),e==="partials/anonymize.htm"&&(t.prTabState={active:t.options.diff?"diff":"comments"},t.watchGroup(["options.diff","options.comments"],()=>{t.options[t.prTabState.active]||(t.prTabState.active=t.options.diff?"diff":t.options.comments?"comments":null)})),e==="partials/gist.htm"&&(t.tabState={active:t.details?.files?"files":"comments"}),["partials/conferences.htm","partials/conference.htm"].includes(e)&&(t.statusLabels={ready:"Ready",expired:"Expired",removed:"Removed"});let i={"partials/dashboard.htm":["filteredItems",()=>t.items,"itemFilter"],"partials/conferences.htm":["filteredConferences",()=>t.conferences,"conferenceFilter"],"partials/conference.htm":["filteredRepositories",()=>t.conference?.repositories,"repoFiler"],"partials/admin/repositories.htm":["filteredRepositories",()=>t.repositories,"repoFiler"],"partials/admin/user.htm":["filteredRepositories",()=>t.repositories,"repoFiler"],"partials/admin/users.htm":["filteredUsers",()=>t.users,"userFiler"],"partials/admin/conferences.htm":["filteredConferences",()=>t.conferences]}[e];if(i){let s=yt(()=>t.fmt.orderBy(t.fmt.filter(i[1](),t[i[2]]),t.orderBy));Object.defineProperty(t,i[0],{configurable:!0,get:()=>s.value})}}function Bc(e=(...t)=>fetch(...t)){async function t(i,s,r,a={}){let u=new URL(s,window.location.href);for(let[h,g]of Object.entries(a.params||{}))if(g!=null)for(let m of Array.isArray(g)?g:[g])u.searchParams.append(h,typeof m=="object"?JSON.stringify(m):m);let p=new AbortController,v;a.timeout?.then?a.timeout.then(()=>p.abort()):a.timeout&&(v=setTimeout(()=>p.abort(),a.timeout));try{let h={Accept:"application/json, text/plain, */*",...a.headers},g=document.cookie.match(/(?:^|;\s*)XSRF-TOKEN=([^;]*)/);g&&u.origin===window.location.origin&&(h["X-XSRF-TOKEN"]=decodeURIComponent(g[1]));let m;r!==void 0&&(r instanceof FormData?m=r:(h["Content-Type"]||(h["Content-Type"]="application/json;charset=utf-8"),m=JSON.stringify(r)));let k=await e(u.href,{method:i,headers:h,body:m,credentials:"same-origin",signal:p.signal}),T;if(a.onDownloadProgress&&k.ok&&k.body?.getReader&&typeof TextDecoder<"u"){let E=k.body.getReader(),N=new TextDecoder,O=[],q=0;try{for(;;){let{value:M,done:G}=await E.read();if(G)break;O.push(N.decode(M,{stream:!0})),q+=M.byteLength,a.onDownloadProgress(q)}O.push(N.decode()),T=O.join("")}finally{E.releaseLock()}}else T=await k.text();let w=T;if(a.transformResponse)w=a.transformResponse(T);else if(T&&(/json/i.test(k.headers.get("content-type")||"")||/^[\[{]/.test(T.trim())))try{w=JSON.parse(T)}catch{}let b={data:w,status:k.status,headers:E=>k.headers.get(E)};if(!k.ok)throw b;return b}catch(h){throw h.name==="AbortError"?{status:-1,data:null}:h}finally{clearTimeout(v)}}let o={};for(let i of["get","delete","head"])o[i]=(s,r)=>t(i.toUpperCase(),s,void 0,r);for(let i of["post","put","patch"])o[i]=(s,r,a)=>t(i.toUpperCase(),s,r,a);return o}var zc={resolve:e=>Promise.resolve(e),reject:e=>Promise.reject(e),all:e=>Promise.all(e),defer(){let e,t;return{promise:new Promise((i,s)=>{e=i,t=s}),resolve:e,reject:t}}};var Hc=function(e){function t(o){return o=o||{used:0,total:0},o.unlimited=!o.total,o.percent=o.unlimited?0:Math.min(100,o.used*100/o.total),o.level=o.unlimited?"unlimited":o.percent>=95?"danger":o.percent>=80?"warn":"ok",o}return{decorate:t,load:function(){return e.get("/api/user/quota").then(o=>{let i=o.data||{};return i.storage=t(i.storage),i.file=t(i.file),i.repository=t(i.repository),i})}}};var ma={};lp(ma,{bigNum:()=>l9,date:()=>b9,diff:()=>f9,filter:()=>v9,humanFileSize:()=>a9,humanTime:()=>d9,limitTo:()=>g9,number:()=>h9,orderBy:()=>y9,plural:()=>w9,statusLabel:()=>c9,statusMsg:()=>p9,title:()=>u9,uppercase:()=>m9});var a9=e=>window.humanFileSize(e),l9=(function(){return function(t){let o=Number(t)||0,i=Math.abs(o);return i<1e3?String(o):i<1e4?(o/1e3).toFixed(1).replace(/\.0$/,"")+"k":i<1e6?Math.round(o/1e3)+"k":i<1e7?(o/1e6).toFixed(1).replace(/\.0$/,"")+"M":Math.round(o/1e6)+"M"}})(),d9=(function(){return function(t){if(!t)return"never";var o=null;t instanceof Date&&(o=t,t=Math.round((Date.now()-t)/1e3)),(typeof t=="string"||typeof t=="number")&&(o=new Date(t),t=Math.round((Date.now()-o)/1e3));var i=t<0?"from now":"ago";if(Math.abs(t)>7200*24)return(o&&!isNaN(o)?o:new Date(Date.now()-t*1e3)).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"});t=Math.abs(t);for(var s=[t/60/60/24/365,t/60/60/24/30,t/60/60/24/7,t/60/60/24,t/60/60,t/60,t],r=["year","month","week","day","hour","minute","second"],a=0;a1&&(p+="s"),u>=1)return u+" "+p+" "+i}return"0 seconds "+i}})(),u9=(function(){return function(e){if(!e)return e;e=e.toLowerCase();var t=e.split(" "),o=t.map(function(i){return i.charAt(0).toUpperCase()+i.substring(1,i.length)});return o.join(" ")}})(),c9=(function(){var e={ready:"Ready",error:"Error",expired:"Expired",expiring:"Expiring",removed:"Removed",removing:"Removing",queue:"Queued",download:"Downloading",downloaded:"Downloaded",preparing:"Preparing",anonymizing:"Anonymizing"};return function(t){if(!t)return"";if(e[t])return e[t];var o=String(t).replace(/[_-]+/g," ").toLowerCase();return o.charAt(0).toUpperCase()+o.slice(1)}})(),p9=(function(){var e={branch_not_found:"Branch not found on GitHub",repo_not_found:"Repository not found on GitHub",repository_not_found:"Repository not found on GitHub",repo_not_accessible:"Repository is not accessible with your token",pr_not_found:"Pull request not found on GitHub",gist_not_found:"Gist not found on GitHub",commit_not_found:"Commit not found on GitHub",repo_too_big:"Repository exceeds the size limit",quota_exceeded:"Storage quota exceeded",incomplete_record:"Incomplete record: missing identifier"};return function(t){if(!t)return t;var o=t.match(/^rate_limited:(\d+)$/);if(o){var i=Math.max(0,Math.ceil((parseInt(o[1],10)-Date.now())/1e3));if(i<=0)return"Rate limited \u2014 resuming soon";var s=Math.floor(i/60),r=i%60;return"Rate limited \u2014 retrying in "+(s>0?s+"m "+r+"s":r+"s")}if(e[t])return e[t];if(/^[a-z0-9]+(_[a-z0-9]+)+$/.test(t)){var a=t.replace(/_/g," ");return a.charAt(0).toUpperCase()+a.slice(1)}return t}})(),f9=(function(e){let t=i=>i.replace(/&/g,"&").replace(//g,">");function o(i,s){if(!s)return;let r=s.newPath&&s.newPath!=="/dev/null"?s.newPath:s.oldPath||"",a=s.oldPath==="/dev/null"?"added":s.newPath==="/dev/null"?"deleted":s.oldPath&&s.newPath&&s.oldPath!==s.newPath?"renamed":"modified";if(i.push('
'),i.push('
'+t(r)+''+a+"
"),s.lines.length){i.push('');for(let u of s.lines)i.push('");i.push("
'+(u.oldNo||"")+''+(u.newNo||"")+''+(u.kind==="add"?"+":u.kind==="remove"?"-":u.kind==="hunk"?"@":"")+''+t(u.text)+"
")}i.push("
")}return function(i){if(!i)return i;let s=[],r=null,a=0,u=0,p=()=>(r||(r={oldPath:"",newPath:"",lines:[]}),r),v=()=>{r&&(r.lines.length||r.oldPath||r.newPath)&&(o(s,r),r=null)},h=i.split(` -`);for(let g=0;ge});function h9(e,t){return e==null?"":Number(e).toLocaleString(void 0,t==null?{}:{minimumFractionDigits:t,maximumFractionDigits:t})}function m9(e){return String(e??"").toUpperCase()}function g9(e,t,o=0){return(e||[]).slice(o,o+t)}function v9(e,t){return Array.isArray(e)?typeof t=="function"?e.filter(t):e:[]}function y9(e,t){if(!t)return e||[];let o=Array.isArray(t)?t:[t];return[...e||[]].sort((i,s)=>{for(let r of o){let a=r[0]==="-"?-1:1;r=r.replace(/^[+-]/,"");let u=r.split(".").reduce((v,h)=>v?.[h],i),p=r.split(".").reduce((v,h)=>v?.[h],s);if(typeof u=="string"&&(u=u.toLowerCase()),typeof p=="string"&&(p=p.toLowerCase()),u!==p)return(u==null?-1:p==null?1:ui[s])}function w9(e,t){return(t?.[e]??t?.[e===1?"one":"other"]??"").replace(/\{\}/g,e??0)}var jc={name:"htmlDoc",props:["content","baseUrl","allowScripts"],setup(e){let t=gt(null);return on(()=>{let i=[t.value][0];i.classList.add("html-doc");function s(){i.innerHTML="";let r=e.content;if(typeof r!="string")return;let a=document.createElement("iframe");a.className="html-doc-frame",a.setAttribute("title","Rendered HTML document");let u=["allow-popups","allow-popups-to-escape-sandbox"];e.allowScripts&&u.push("allow-scripts","allow-forms","allow-modals"),a.setAttribute("sandbox",u.join(" ")),a.setAttribute("referrerpolicy","no-referrer"),i.appendChild(a);let p="";e.baseUrl&&(p=''),a.srcdoc=p+r}tt(()=>e.content,s,{immediate:!0}),tt(()=>e.baseUrl,s,{immediate:!0}),tt(()=>e.allowScripts,s,{immediate:!0})}),()=>_e("html-doc",{ref:t})}};var Gc={name:"pdfviewer",props:["src"],setup(e){let t=gt(null);return on(()=>{let o=[t.value],i=400,s=[.5,.75,1,1.25,1.5,2,3],r=1e3,a=o[0];a.classList.add("pdf-viewer");let u=null,p=[],v=!1,h=null,g=1,m=1,k=0,T=0,w=612/792,b=0,E=null,N=new Map,O=0;function q(C){let R=N.get(C);R&&(R.cancelled=!0,R.task?.cancel?.(),N.delete(C));let I=C.querySelector("canvas");I&&(I.width=0,I.height=0),C.innerHTML="",delete C.dataset.state}let M=document.createElement("div");M.className="pdf-toolbar";let G=document.createElement("div");G.className="pdf-pages",G.tabIndex=0,G.setAttribute("aria-label","PDF pages"),a.appendChild(M),a.appendChild(G);function de(C,R,I){let W=document.createElement("button");return W.type="button",W.className="pdf-toolbar-btn",W.title=R,W.setAttribute("aria-label",R),W.innerHTML='',W.addEventListener("click",I),W}let re=de("fa-chevron-up","Previous page",function(){Ke(m-1)}),D=de("fa-chevron-down","Next page",function(){Ke(m+1)}),X=document.createElement("input");X.type="text",X.className="pdf-toolbar-page",X.setAttribute("aria-label","Page number"),X.title="Page number \u2014 type a page and press Enter",X.addEventListener("keydown",function(C){C.key==="Enter"&&(Ke(parseInt(X.value,10)),X.blur())}),X.addEventListener("blur",function(){X.value=String(m)});let le=document.createElement("span");le.className="pdf-toolbar-count";let Ee=de("fa-search-minus","Zoom out",function(){ue(s[Math.max(0,Ne()-1)])}),ae=de("fa-search-plus","Zoom in",function(){ue(s[Math.min(s.length-1,Ne()+1)])}),he=document.createElement("button");he.type="button",he.className="pdf-toolbar-btn pdf-toolbar-zoom",he.title="Reset zoom to fit the width",he.setAttribute("aria-label","Reset zoom to fit the width"),he.addEventListener("click",function(){ue(1)}),M.appendChild(re),M.appendChild(D);let Ce=document.createElement("span");Ce.className="pdf-toolbar-group",Ce.appendChild(X),Ce.appendChild(le),M.appendChild(Ce);let Pe=document.createElement("span");Pe.className="pdf-toolbar-group pdf-toolbar-right",Pe.appendChild(Ee),Pe.appendChild(he),Pe.appendChild(ae),M.appendChild(Pe);function Ne(){let C=0;for(let R=0;R=C,he.textContent=Math.round(g*100)+"%",Ee.disabled=Ne()===0,ae.disabled=Ne()===s.length-1}function Qe(C){let R=p[C-1];R&&(G.scrollTop+=R.getBoundingClientRect().top-G.getBoundingClientRect().top)}function Ke(C){if(!u||isNaN(C))return;let R=Math.min(Math.max(1,C),u.numPages);p[R-1]&&(Qe(R),m=R,k=R,T=Date.now()+800,Re(),te())}function rt(){if(!p.length||Date.now(){}),E=null),h&&(clearTimeout(h),h=null),u&&(u.destroy(),u=null),p=[],m=1,G.innerHTML="",Re()}function U(){G.innerHTML="";let C=document.createElement("div");C.className="pdf-viewer-error",C.textContent="This PDF could not be displayed.",G.appendChild(C)}function oe(){let C=Math.max(120,G.clientWidth-24);return Math.round(Math.min(C,r)*g)}function Z(C,R,I){let W=window.devicePixelRatio||1,z=C.getViewport({scale:1}),Y=parseFloat(R.style.width);if(!Y)return;let V=C.getViewport({scale:Y/z.width*W}),j=document.createElement("canvas");return j.width=Math.floor(V.width),j.height=Math.floor(V.height),j.style.width=Y+"px",j.style.height=Math.floor(V.height/W)+"px",R.innerHTML="",R.appendChild(j),R.style.height=j.style.height,I.task=C.render({canvasContext:j.getContext("2d"),viewport:V}),I.task.promise}function te(){if(!u)return;let C=b,R=G.getBoundingClientRect(),I=R.top-i,W=R.top+G.clientHeight+i,z=p.map((V,j)=>({slot:V,i:j,rect:V.getBoundingClientRect()})).filter(V=>V.rect.top<=W&&V.rect.bottom>=I).sort((V,j)=>Math.abs(V.rect.top-R.top)-Math.abs(j.rect.top-R.top)).slice(0,6),Y=new Set(z.map(V=>V.slot));for(let V of N.keys())Y.has(V)||q(V);for(let{slot:V,i:j}of z){if(V.dataset.state||O>=2)continue;let ee={cancelled:!1,task:null};N.set(V,ee),O++,V.dataset.state="rendering";let K;u.getPage(j+1).then(me=>{if(K=me,!(ee.cancelled||C!==b))return Z(K,V,ee)}).then(()=>{ee.cancelled||C!==b||(V.dataset.state="done",k&&Date.now(){!ee.cancelled&&C===b&&(V.dataset.state="failed")}).finally(()=>{O--,K?.cleanup?.(),u&&te()})}}function L(){v||(v=!0,window.requestAnimationFrame(function(){v=!1,rt(),te()}))}function x(){let C=!1;function R(){C||(C=!0,te())}window.requestAnimationFrame(R),window.setTimeout(R,50)}function H(){b++,p.forEach(q);let C=oe();p.forEach(function(R){delete R.dataset.state,R.innerHTML="",R.style.width=C+"px",R.style.height=Math.round(C/w)+"px"}),te()}function ue(C){if(!u||!p.length||C===g)return;let R=m;g=C,Re(),H(),Ke(R)}function we(){u&&(h&&clearTimeout(h),h=setTimeout(function(){h=null,u&&p.length&&H()},250))}function Oe(C){if(Ze(),!C)return;let R=b;E=pdfjsLib.getDocument({url:C,isEvalSupported:!1,standardFontDataUrl:"/script/external/pdf-standard-fonts/",cMapUrl:"/script/external/pdf-cmaps/",cMapPacked:!0}),E.promise.then(function(I){if(R!==b){I.destroy();return}return u=I,u.getPage(1).then(function(W){if(R!==b)return;let z=W.getViewport({scale:1});z.width&&z.height&&(w=z.width/z.height);let Y=oe();for(let V=1;V<=u.numPages;V++){let j=document.createElement("div");j.className="pdf-viewer-page",j.style.width=Y+"px",j.style.height=Math.round(Y/w)+"px",G.appendChild(j),p.push(j)}Re(),x()})}).catch(function(){R===b&&U()})}G.addEventListener("scroll",L,{passive:!0}),$(window).on("resize",we),Re(),tt(()=>e.src,Oe,{immediate:!0}),Wn(function(){G.removeEventListener("scroll",L),$(window).off("resize",we),Ze()})}),()=>_e("pdfviewer",{ref:t})}};var k9={key:0,class:"quota-row quota-usage"},C9={class:"quota-header"},E9={class:"quota-label"},S9={class:"project-type-svg","aria-hidden":"true"},N9=["href"],R9={key:0,class:"quota-percent"},D9={key:1,class:"quota-unlimited-tag"},A9={class:"quota-value"},T9={key:0},P9=["aria-label","aria-valuenow","aria-valuemax","aria-valuetext"],_9={key:1,class:"quota-remaining"},O9={key:2,class:"quota-remaining quota-limit"};function Wc(e,t){return e.quota?(l(),d("div",k9,[(l(),d(B,null,ie([{key:"repository",label:"Repositories",kind:"count",icon:"project-type-repo"},{key:"storage",label:"Storage",kind:"bytes",icon:"project-icon-storage"},{key:"file",label:"Files",kind:"count",icon:"project-icon-file"}],o=>n("div",{class:P(["quota-item","quota-"+e.quota[o.key].level]),key:o.key},[n("div",C9,[n("span",E9,[(l(),d("svg",S9,[n("use",{href:"#"+o.icon},null,8,N9)])),y(c(o.label),1)]),e.quota[o.key].unlimited?f("v-if",!0):(l(),d("span",R9,c(e.quota[o.key].percent>0&&e.quota[o.key].percent<1?"<1":e.fmt.number(e.quota[o.key].percent,0))+"% used",1)),e.quota[o.key].unlimited?(l(),d("span",D9,"Unlimited")):f("v-if",!0)]),n("div",A9,[n("strong",null,c(e.formatAmount(e.quota[o.key].used,o.kind)),1),e.quota[o.key].unlimited?f("v-if",!0):(l(),d("span",T9," / "+c(e.formatAmount(e.quota[o.key].total,o.kind)),1))]),e.quota[o.key].unlimited?f("v-if",!0):(l(),d("div",{key:0,class:P(["quota-track","quota-"+e.quota[o.key].level]),role:"progressbar","aria-valuemin":"0","aria-label":o.label+" quota","aria-valuenow":Math.min(e.quota[o.key].used,e.quota[o.key].total),"aria-valuemax":e.quota[o.key].total,"aria-valuetext":e.fmt.number(e.quota[o.key].percent,0)+"% used"},[e.quota[o?.key].unlimited?f("v-if",!0):(l(),d("div",{key:0,class:"quota-fill",style:$e({width:e.quota[o.key].percent+"%"})},null,4))],10,P9)),!e.quota[o.key].unlimited&&e.quota[o.key].used=e.quota[o.key].total?(l(),d("p",O9,c(e.quota[o.key].used>e.quota[o.key].total?"Limit exceeded":"Limit reached"),1)):f("v-if",!0)],2)),64))])):f("v-if",!0)}var I9={props:["quota","fmt"],setup(e){return{formatAmount:(t,o)=>o==="bytes"?e.fmt.humanFileSize(e.quota?.storage?.unit==="bytes"?t*8:t).replace(/([a-zA-Z]+)$/," $1"):e.fmt.number(t)}},render:Wc},M9=new Set(ge),Yc={props:["content","terms","options"],setup(e){let t=gt(null),o=()=>{t.value.innerHTML=renderMD(e.content||"",window.location.pathname+"/../")};return on(()=>{o(),tt(()=>[e.content,e.terms,e.options],o,{deep:!0})}),()=>_e("markdown",{ref:t})}},V9={props:["file","terms","options"],setup(e){let t=gt(null),o=()=>nt(()=>t.value?.querySelectorAll("pre code").forEach(i=>window.Prism?.highlightElement(i)));return on(o),tt(()=>[e.file?.content,e.terms,e.options],o,{deep:!0}),()=>{let i=e.file||{},s=(i.filename||"").split(".").pop().toLowerCase();if(["md","markdown"].includes(s)||i.language==="Markdown")return _e("gist-file",{ref:t},_e(Yc,{content:i.content,terms:e.terms,options:e.options}));let r={js:"javascript",jsx:"javascript",ts:"javascript",typescript:"javascript",py:"python",html:"markup",xml:"markup",svg:"markup",sh:"bash"},a=(i.language||s||"none").toLowerCase();return _e("gist-file",{ref:t},_e("pre",{class:"line-numbers"},_e("code",{class:"language-"+(r[a]||a),key:i.content},i.content||"")))}}},q9={props:["file","content"],setup(e){let t=gt(null),o=0,i,s=async()=>{let r=++o;i?.abort(),i=new AbortController;try{let a=e.content?JSON.parse(e.content):await fetch(e.file?.download_url||e.file,{signal:i.signal}).then(u=>{if(!u.ok)throw Error("Notebook request failed");return u.json()});if(await Ln("notebook"),r!==o)return;t.value.innerHTML=DOMPurify.sanitize(nb.parse(a).render()),t.value.querySelectorAll("pre code").forEach(u=>window.Prism?.highlightElement(u))}catch(a){r===o&&a.name!=="AbortError"&&(t.value.textContent="Unable to render the notebook.")}};return on(()=>{s(),tt(()=>[e.file,e.content],s)}),Wn(()=>{o++,i?.abort()}),()=>_e("notebook",{ref:t})}},$9={props:["stats"],setup(e){return()=>{let t=Object.entries(e.stats||{}).filter(([,i])=>i.code),o=t.reduce((i,[,s])=>i+s.code,0);return _e("loc",t.map(([i,s])=>_e("div",{class:"lang",title:`${i}: ${s.code.toLocaleString()} lines`,style:{width:s.code*100/o+"%",background:langColors[i]}})))}}},Xc={Markdown:Yc,GistFile:V9,Notebook:q9,Loc:$9,HtmlDoc:jc,QuotaUsage:I9,Pdfviewer:El(async()=>(await Ln("pdf"),pdfjsLib.GlobalWorkerOptions.workerSrc="/script/external/pdf.worker.js",Gc))},Jc={async mounted(e,{value:t}){e._editorValue=t;try{if(await Ms(),e._editorDisposed)return;let o=e._editorValue,i=ace.edit(e);e._editor=i,i.setValue(String(o.content??""),-1),Kc(e,o.options),e._editorCleanup=o.options?.onLoad?.(i)}catch(o){e._editorDisposed||(e.textContent=o.message)}},updated(e,{value:t}){e._editorValue=t,e._editor&&(e._editor.getValue()!==String(t.content??"")&&e._editor.setValue(String(t.content??""),-1),Kc(e,t.options))},beforeUnmount(e){e._editorDisposed=!0,e._editorCleanup?.(),e._editor?.destroy()}};function Kc(e,t={}){let o=M9.has(t.mode)?t.mode:"text";e._editor.session.setMode("ace/mode/"+o),t.theme&&e._editor.setTheme("ace/theme/"+t.theme),e._editor.setReadOnly(t.readOnly!==!1)}var Qc={mounted(e){if(!window.IntersectionObserver)return;let t=[...e.querySelectorAll('a[href^="#"]')],o=new Set,i=new IntersectionObserver(s=>{s.forEach(a=>a.isIntersecting?o.add(a.target.id):o.delete(a.target.id));let r=t.find(a=>o.has(a.hash.slice(1)));r&&t.forEach(a=>a.classList.toggle("active",a===r))},{rootMargin:"-20% 0px -60% 0px",threshold:0});nt(()=>{t.forEach(s=>{let r=document.getElementById(s.hash.slice(1));r&&i.observe(r)}),t[0]&&!t.some(s=>s.classList.contains("active"))&&t[0].classList.add("active")}),e._observer=i},beforeUnmount(e){e._observer?.disconnect()}};function L9(e){let t=[],o=0,i=/\bXXXX-(\d+)\b/g,s;for(;s=i.exec(e);)s.index>o&&t.push(e.slice(o,s.index)),t.push(_e("span",{class:"redact-slot",role:"img","aria-label":"Redacted term "+s[1]},[_e("i",null,s[1])])),o=s.index+s[0].length;return t.length?(o=1024&&iF9(e.file)),a=()=>"/"+(Array.isArray(t.params.path)?t.params.path.join("/"):t.params.path||"");tt(()=>[t.params.repoId,t.params.path],()=>{let m="";a().split("/").filter(Boolean).forEach(k=>{m+="/"+k,i[m]=!0})},{immediate:!0});let u=yt(()=>{if(!e.searchQuery||!e.searchResults)return null;let m=new Set,k=new Set;return e.searchResults.forEach(T=>{m.add(T.path?`${T.path}/${T.name}`:T.name);let w="";(T.path||"").split("/").filter(Boolean).forEach(b=>{w=w?w+"/"+b:b,k.add(w)})}),{files:m,folders:k}}),p=()=>[...o.value.querySelectorAll("li > a")],v=m=>{o.value.querySelector(".tree-focused")?.classList.remove("tree-focused"),m&&(s=m.dataset.path,m.classList.add("tree-focused"),m.scrollIntoView?.({block:"nearest"}),o.value.focus())};function h(m){let k=p(),T=o.value.querySelector(".tree-focused")||k[0],w=k.indexOf(T);if(!["ArrowDown","ArrowUp","ArrowRight","ArrowLeft","Enter"].includes(m.key)||(m.preventDefault(),m.key==="ArrowDown"&&v(k[(w+1)%k.length]),m.key==="ArrowUp"&&v(k[(w-1+k.length)%k.length]),!T))return;let b=T.closest("li");m.key==="ArrowRight"&&b.classList.contains("folder")&&(b.classList.contains("open")?v(b.querySelector(":scope > ul > li > a")):T.click()),m.key==="ArrowLeft"&&(b.classList.contains("folder")&&b.classList.contains("open")?T.click():v(b.parentElement.closest("li.folder")?.querySelector(":scope > a"))),m.key==="Enter"&&T.click()}function g(m,k=""){let T=[...m].sort((w,b)=>+!!b.children-+!!w.children||w.name.localeCompare(b.name));return _e("ul",T.flatMap(w=>{let b=w,E=b.name,N=(k+"/"+E).slice(1);if(u.value&&!u.value.files.has(N)&&!u.value.folders.has(N))return[];for(;b.children?.length===1;)b=b.children[0],E+="/"+b.name;let O=k+"/"+E,q=!!b.children,M=u.value?i[O]!==!1:!!i[O],G=q&&e.page?.options?.truncatedFolders?.includes(O.slice(1)),de=_e("span",{class:q?"tree-icon-folder":"far fa-file tree-icon-file","aria-hidden":"true"},q?_e("svg",{viewBox:"0 0 14 12",focusable:"false"},_e("path",{d:"M1.5 10.5v-9h4l1.5 2h5.5v7z"})):null),re=_e("span",{class:"tree-name",title:E.replace(/\bXXXX-(\d+)\b/g,"[redacted term $1]")},L9(E)),D=le=>{v(le.currentTarget),q&&(le.preventDefault(),i[O]=!M,i[O]&&!b.children.length&&e.page.getFiles(O.slice(1)),nt(()=>v(p().find(Ee=>Ee.dataset.path===s))))},X=_e("a",{"data-path":O,href:q?void 0:`/r/${encodeURIComponent(t.params.repoId)}${encodePathForUrl(O)}`,class:{"tree-focused":s===O},onClick:D},[q?_e("span",{class:"tree-toggle"}):_e("span",{class:"tree-spacer"}),de,re,G?_e("span",{class:"truncated-warning",title:e.page.fmt.translate("WARNINGS.folder_truncated")},_e("i",{class:"fas fa-exclamation-triangle"})):null]);return _e("li",{key:O,class:{file:!0,folder:q,open:M,active:a()===O,truncated:G},title:q?"":`Size: ${U9(b.size||0)}`},[X,q&&M?g(b.children,O):null])}))}return()=>_e("tree",{ref:o,tabindex:0,onKeydown:h},e.file?.length?u.value?.files.size===0?_e("div",{class:"tree-search-empty"},"No files found"):g(r.value):"Empty repository")}};function ep(){return et({errors:{},dirty:!1,touched:!1,submitted:!1,get invalid(){return Object.values(this.errors).some(Boolean)},setValidity(e,t){this.errors[e]=!t},setDirty(){this.dirty=!0}})}function tp(e,t){if(!e[t]){let o=ep();Object.defineProperty(o,"invalid",{get(){return Object.values(o.errors).some(Boolean)||Object.keys(o).some(i=>i!=="invalid"&&o[i]&&typeof o[i]=="object"&&o[i].invalid)}}),e[t]=o}return e[t]}var np={beforeMount(e,{value:t}){e._formState=tp(t,e.name),e.addEventListener("submit",o=>o.preventDefault())}};function B9(e){return e instanceof Date?isNaN(e)?"":`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`:e||""}function xc(e){let t=e._field.binding.value;e.type==="checkbox"?e.checked=!!t:e.type==="radio"?e.checked=t==(e._value??e.value):e._field.timer||(e.value=e.type==="date"?B9(t):t??""),ga(e)}function ga(e){let t=e._field.validation;if(!t)return;let o=e.validity;for(let[i,s]of Object.entries({required:o.valueMissing,pattern:o.patternMismatch,min:o.rangeUnderflow,max:o.rangeOverflow,date:o.badInput,email:o.typeMismatch&&e.type==="email",url:o.typeMismatch&&e.type==="url"}))t.setValidity(i,e.disabled||!s)}var op={beforeMount(e,{value:t}){var a;let o=t.form&&tp(t.state,t.form),i=o&&e.name?o[a=e.name]||(o[a]=ep()):null;e._field={binding:t,validation:i,timer:null};let s=()=>{clearTimeout(e._field.timer),e._field.timer=null;let u=e._field.binding,p=e.type==="checkbox"?e.checked:e._value??e.value;if(!(e.type==="radio"&&!e.checked)){if((e.type==="number"||e.type==="range")&&(p=e.value===""?null:Number(e.value)),e.type==="date"&&(p=e.value?new Date(e.value+"T00:00:00"):null),i){i.setDirty();for(let v of Object.keys(i.errors))i.setValidity(v,!0)}u.set(p),ga(e),u.change?.()}};e._field.commit=s;let r=u=>{let p=e._field.binding.options?.debounce||0,v=typeof p=="number"?p:p[u.type]??p.default??0;clearTimeout(e._field.timer),v?e._field.timer=setTimeout(s,v):s()};e.addEventListener(e.tagName==="SELECT"||["checkbox","radio","date"].includes(e.type)?"change":"input",r),e.addEventListener("blur",()=>{i&&(i.touched=!0),e._field.timer&&s()})},mounted:xc,updated(e,{value:t}){e._field.binding=t,xc(e)},beforeUnmount(e){clearTimeout(e._field.timer);let{binding:t,validation:o}=e._field,i=t.form&&t.state[t.form];i&&i[e.name]===o&&delete i[e.name]}};function sp(e,t){let o=e.target.closest("form");if(o?._formState&&(o._formState.submitted=!0),o?.querySelectorAll("input, select, textarea").forEach(i=>{i._field?.timer&&i._field.commit(),i._field&&ga(i)}),o&&!o.checkValidity()){let i=o.querySelector("input:invalid, select:invalid, textarea:invalid");i?.scrollIntoView?.({block:"center"}),i?.focus(),o.reportValidity();return}return t()}var ip=Symbol("session"),z9=/^\/(w|api|github)(\/|$)/;function rp(e,t={}){let o=e?.split(".").reduce((i,s)=>i?.[s],ro);return o==null&&e?.startsWith("ERRORS.")&&(o=ro.ERRORS.unknown_error),String(o??e??"").replace(/{{\s*([^}]+?)\s*}}/g,(i,s)=>t[s]??"")}var H9={...ma,translate:rp};function j9(e){if(e==null||e==="")return e;try{let t=new URL(e,window.location.href);return["http:","https:","mailto:","tel:","blob:"].includes(t.protocol)?e:void 0}catch{return}}function G9(e="#app",t={}){let o=!!document.querySelector('meta[name="review-consent-page"][content="1"]'),i=o&&window.location.pathname==="/review-link"?ka(window):null,s=()=>{let m=i;return i=null,m};!t.history&&window.location.pathname==="/"&&/^#!\/r\/[^/?#]+/.test(window.location.hash)&&window.history.replaceState(window.history.state,"",window.location.hash.slice(2));let r=new Map,a=Bc(t.fetch),u,p;function v(){let m=Tt(),k={url(w){return w===void 0?p.currentRoute.value.fullPath:(p.push(w),k)},replace(w){return p.replace(w)},path(){return p.currentRoute.value.path},search(){return p.currentRoute.value.query}},T=new Proxy({},{get(w,b){let E=p.currentRoute.value.params[b];return Array.isArray(E)?E.join("/"):E}});return{takeReviewHandoff:s,http:a,...m,location:k,params:T,window,promises:zc,html:{trustAsHtml:w=>w},translate:(w,b)=>Promise.resolve(rp(w,b)),quotaService:Hc(a)}}function h(m){return{name:m.template,setup(){let k=Ur(Dt(ip),r);m.setup(k,v()),Fc(m.template,k);let T=[];return()=>Li[m.template](k,T)}}}p=Qd({history:t.history||Yd(),routes:dc.map(m=>m.redirect?m:{path:m.path,component:h(m),meta:{title:m.title,preserveExplorer:m.preserveExplorer}})});let g=md({setup(){u=Ur(null,r),u.fmt=H9,u.window=window,u.Math=Math,u.sanitize=w=>DOMPurify.sanitize(w??""),u.highlightRedactions=w=>(u.site_options,Fu(w)),u.submitForm=sp,u.safeUrl=j9;let m=v();zu(u,m.http,m.location,m.timeout),Gn(ip,u),tt(()=>u.title,w=>{document.title=w||"Anonymous GitHub"});let k=[],T=w=>{let b=w.target.closest?.("a[href]");if(w.defaultPrevented||w.button!==0||w.metaKey||w.ctrlKey||w.shiftKey||w.altKey||!b||b.hasAttribute("download")||b.target&&b.target!=="_self"||b.dataset.toggle||b.getAttribute("href").startsWith("#"))return;let N=new URL(b.href,window.location.href);o||/^\/review-link\/?$/i.test(N.pathname)||N.origin!==window.location.origin||z9.test(N.pathname)||(w.preventDefault(),p.push(N.pathname+N.search+N.hash),$("#navbarSupportedContent.show").collapse("hide"))};return document.addEventListener("click",T),Wn(()=>document.removeEventListener("click",T)),()=>[Uc(u,[]),o||/^\/(r|repository)\//.test(u.path||"")?null:_e("header",{class:["app-header",{"is-contained":u.path==="/"||u.path==="/faq"}]},Li["partials/header.htm"](u,k)),_e("main",{class:"app-view align-items-stretch w-100"},_e(Lr,null,{default:({Component:w,route:b})=>w?_e(w,{key:b.meta.preserveExplorer?b.matched[0]?.path:b.path}):null})),_e("div",{class:"position-fixed p-3",style:{zIndex:999999999,right:0,bottom:0}},u.toasts.map((w,b)=>_e("div",{class:"toast show",role:"alert","aria-live":"assertive","aria-atomic":"true",key:b},[_e("div",{class:"toast-header"},[_e("strong",{class:"mr-auto"},w.title),_e("button",{type:"button",class:"ml-2 mb-1 close","aria-label":"Close",onClick:()=>u.removeToast(w)},"\xD7")]),_e("div",{class:"toast-body"},w.body)])))]}});for(let[m,k]of Object.entries(Xc))g.component(m,k);return g.component("Tree",Zc),g.component("PartialView",{props:["name","state"],setup(m){let k=[];return()=>Li[m.name](m.state,k)}}),g.directive("field",op),g.directive("form",np),g.directive("code-editor",Jc),g.directive("paper-scrollspy",Qc),g.use(p),p.beforeEach(async m=>{if(m.path==="/review-link"&&!o||o&&m.path!=="/review-link")return window.location.assign(m.fullPath),!1;u?.emit("routeLeave"),/^\/(r|repository|anonymize|pull-request-anonymize|gist-anonymize|pr|gist)(\/|$)/.test(m.path)&&await Ln("markdown"),/^\/(r|repository)\//.test(m.path)&&await Ln("org")}),p.afterEach(m=>{if(!u)return;u.title=m.meta.title,u.emit("routeChange",{title:m.meta.title}),u.emit("routeUpdate",{title:m.meta.title});let k=document.querySelector(".app-view");!m.meta.preserveExplorer&&k&&(k.scrollTop=0)}),g.mount(e),{app:g,router:p,state:u}}document.querySelector("#app")&&(window.anonymousApp=G9());})(); +jane.smith@example.org`},null,8,jH),[[i,{state:e.viewState,set:r=>{e.terms=r},value:e.terms,form:"defaultsForm",options:{debounce:250}}]]),n("details",GH,[t[25]||(t[25]=n("summary",null,"Regex & replacement syntax",-1)),n("p",null,[t[21]||(t[21]=g("Matches become ",-1)),n("code",null,c(e.site_options?.ANONYMIZATION_MASK||"XXX")+"-[N]",1),t[22]||(t[22]=g(". Use ",-1)),t[23]||(t[23]=n("code",null,"term=>replacement",-1)),t[24]||(t[24]=g(" for a custom replacement. Regex is supported.",-1))])]),P(n("div",WH,"Terms are in an invalid format.",512),[[ee,e.defaultsForm?.terms?.errors?.format]])])]),n("section",KH,[t[35]||(t[35]=n("h2",null,"Reviewer display",-1)),n("div",null,[n("div",YH,[n("label",XH,[P(n("input",JH,null,512),[[i,{state:e.viewState,set:r=>{e.options.link=r},value:e.options?.link,form:"defaultsForm",options:{}}]]),t[27]||(t[27]=g("Keep links",-1))]),n("label",QH,[P(n("input",ZH,null,512),[[i,{state:e.viewState,set:r=>{e.options.image=r},value:e.options?.image,form:"defaultsForm",options:{}}]]),t[28]||(t[28]=g("Display images",-1))]),n("label",xH,[P(n("input",ej,null,512),[[i,{state:e.viewState,set:r=>{e.options.pdf=r},value:e.options?.pdf,form:"defaultsForm",options:{}}]]),t[29]||(t[29]=g("Display PDFs",-1))]),n("label",tj,[P(n("input",nj,null,512),[[i,{state:e.viewState,set:r=>{e.options.notebook=r},value:e.options?.notebook,form:"defaultsForm",options:{}}]]),t[30]||(t[30]=g("Display notebooks",-1))]),n("label",oj,[P(n("input",sj,null,512),[[i,{state:e.viewState,set:r=>{e.options.loc=r},value:e.options?.loc,form:"defaultsForm",options:{}}]]),t[31]||(t[31]=g("Show line counts",-1))]),n("label",ij,[P(n("input",rj,null,512),[[i,{state:e.viewState,set:r=>{e.options.page=r},value:e.options?.page,form:"defaultsForm",options:{}}]]),t[32]||(t[32]=g("GitHub Pages",-1))])]),t[33]||(t[33]=n("p",{class:"settings-help"},"Images and PDFs are not anonymized.",-1)),t[34]||(t[34]=n("p",{class:"settings-help"},"GitHub Pages must use the anonymized branch.",-1))])]),n("section",aj,[t[38]||(t[38]=n("h2",null,"Source updates",-1)),n("div",null,[n("label",lj,[P(n("input",dj,null,512),[[i,{state:e.viewState,set:r=>{e.options.update=r},value:e.options?.update,form:"defaultsForm",options:{}}]]),t[36]||(t[36]=g("Auto-update from GitHub",-1))]),t[37]||(t[37]=n("p",{class:"settings-help"},"Latest commit, at most once an hour.",-1))])]),n("section",uj,[t[40]||(t[40]=n("label",{class:"settings-label",for:"expiration"},"On expiration",-1)),n("div",null,[P((l(),d("select",cj,[...t[39]||(t[39]=[n("option",{value:"redirect"},"Redirect visitors to the GitHub repository",-1),n("option",{value:"remove",selected:""},"Remove the anonymized repository",-1)])])),[[i,{state:e.viewState,set:r=>{e.options.expirationMode=r},value:e.options?.expirationMode,form:"defaultsForm",options:{}}]]),n("p",pj,c(e.options.expirationMode==="redirect"?"Redirecting reveals the original repository. Choose the date per anonymization.":"Set the expiration date for each repository."),1)])]),n("footer",fj,[n("div",hj,[e.draftRestored?(l(),d("span",mj,"Your unsaved draft was restored.")):e.unsavedChanges?(l(),d("span",gj,"Unsaved changes"+c(e.draftSaved?" \xB7 Draft saved in this tab":""),1)):(l(),d("span",vj,c(e.message?"Defaults saved":"No unsaved changes"),1))]),e.draftRestored||e.unsavedChanges?(l(),d("button",{key:0,type:"button",class:"draft-discard",onClick:t[0]||(t[0]=r=>e.discardDraft())},"Discard changes")):f("v-if",!0),n("button",{id:"save",type:"submit",class:T(["btn btn-ink",{"is-saving":e.saving}]),disabled:e.saving||!(e.unsavedChanges||e.draftRestored)},c(e.saving?"Saving\u2026":"Save defaults"),11,yj),e.error?(l(),d("div",bj,c(e.error),1)):f("v-if",!0)])],32)),[[s,e.viewState]])],512),[[ee,e.settingsTab==="defaults"]]),P(n("section",{id:"settings-billing","aria-busy":e.billingLoading||e.billingBusy},[t[95]||(t[95]=n("p",{class:"settings-scope"},"Your plan and usage. Reviewer access is always free.",-1)),e.billingLoading?(l(),d("p",kj,"Loading billing\u2026")):f("v-if",!0),e.billingError?(l(),d("div",Cj,[g(c(e.billingError)+" ",1),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[3]||(t[3]=r=>e.loadBilling()),disabled:e.billingBusy},"Try again",8,Ej)])):f("v-if",!0),e.billingNotice?(l(),d("p",Sj,c(e.billingNotice),1)):f("v-if",!0),e.billingPending?(l(),d("div",Nj,[t[42]||(t[42]=n("strong",null,"Confirming your payment",-1)),t[43]||(t[43]=n("p",null,"Your allowance will update after confirmation. Please do not pay again.",-1)),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[4]||(t[4]=r=>e.refreshBilling()),disabled:e.billingBusy},"Check payment status",8,Rj)])):f("v-if",!0),n("section",Dj,[n("div",Aj,[n("div",null,[t[44]||(t[44]=n("p",{class:"billing-eyebrow"},"Current plan",-1)),n("h2",Tj,c(e.profileAuthorGrant()?e.profileGrantName(e.profileAuthorGrant()):e.billing?.enabled?"Free":"Account allowance"),1),e.profileAuthorGrant()?(l(),d("p",Pj,[g(c(e.profileAuthorGrant().cancelAtPeriodEnd?"Renewal cancelled \xB7 access until ":"Renews ")+c(e.billingDate(e.profileAuthorGrant().until)),1),e.profileAuthorPurchase()?.amount!=null?(l(),d(L,{key:0},[g(" \xB7 "+c(e.billingPrice(e.profileAuthorPurchase())),1)],64)):f("v-if",!0)])):e.billing?.allowance?(l(),d("p",Oj,c(e.billing.allowance.repositories)+" repositories \xB7 "+c(e.billingBytes(e.billing.allowance.storage))+" \xB7 links up to "+c(e.billing.freeExpirationMonths||5)+" months",1)):f("v-if",!0)]),e.profileAuthorGrant()&&e.billing?.portal?(l(),d("div",Ij,[n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[5]||(t[5]=r=>e.billingPortal()),disabled:e.billingBusy},c(e.profileAuthorGrant().cancelAtPeriodEnd?"Resume renewal":"Change or cancel plan"),9,_j)])):f("v-if",!0)]),n("div",Mj,[e.quota?(l(),sn(o,{key:0,quota:e.quota,fmt:e.fmt},null,8,["quota","fmt"])):(l(),d("p",Vj,"Loading usage\u2026"))]),e.quota?.repository&&!e.quota.repository.unlimited&&e.quota.repository.used>=e.quota.repository.total?(l(),d("p",qj,[g("Your free repositories are used up. Add the next one for "+c(e.profileSlotPlan()?e.billingPrice(e.profileSlotPlan()):"a one-time payment")+" when you create it, or ",1),t[45]||(t[45]=n("a",{href:"/dashboard"},"remove work you no longer need",-1)),t[46]||(t[46]=g(".",-1))])):f("v-if",!0),e.profileAuthorGrant()?.status==="past_due"?(l(),d("p",$j,"A subscription payment is overdue. Update your payment details in Manage billing and invoices.")):f("v-if",!0),e.profilePastSubscription()?(l(),d("p",Lj,[...t[47]||(t[47]=[g("Your previous subscription has ended. Never-expiring repositories stay online for a 90-day grace period. ",-1),n("a",{href:"/dashboard"},"Review expiration dates",-1),g(".",-1)])])):f("v-if",!0),t[48]||(t[48]=n("p",{class:"billing-footnote"},"Co-authored, paid and conference repositories aren't counted here.",-1))]),e.billing?.enabled&&!e.profileAuthorGrant()&&(e.profilePackPlan()||e.profileAuthorPlans().length)?(l(),d("section",Uj,[t[85]||(t[85]=n("h2",{class:"billing-section-title",id:"settings-plan-comparison",tabindex:"-1"},"Get more",-1)),e.showRepositoryPass&&e.profileAddon()&&!e.billingPending?f("v-if",!0):(l(),d("div",Fj,[e.profilePackPlan()?(l(),d("article",Bj,[t[54]||(t[54]=n("span",{class:"billing-offer-pill"},"Recommended",-1)),t[55]||(t[55]=n("div",{class:"billing-offer-head"},[n("p",{class:"billing-eyebrow"},"For one paper")],-1)),t[56]||(t[56]=n("h3",null,"Paper pack",-1)),n("p",zj,[n("strong",null,c(e.billingAmount(e.profilePackPlan())),1),t[49]||(t[49]=g(" once",-1))]),n("ul",Hj,[t[50]||(t[50]=n("li",null,"One more repository, outside your free ones",-1)),n("li",null,"Its own "+c(e.billingBytes(e.profileSlotPlan()?.storage||e.profilePassPlan()?.storage))+" of storage",1),t[51]||(t[51]=n("li",null,"Automatic updates for 180 days",-1)),t[52]||(t[52]=n("li",null,"Online for up to a year",-1)),t[53]||(t[53]=n("li",null,"No subscription",-1))]),n("button",{type:"button",class:"btn btn-ink",onClick:t[6]||(t[6]=r=>e.openProfileAddon("repo_pack")),disabled:e.billingPending||e.billing.checkoutEnabled===!1},"Buy a Paper pack",8,jj)])):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("article",Gj,[n("div",Wj,[t[57]||(t[57]=n("p",{class:"billing-eyebrow"},"For many papers",-1)),n("div",Kj,[(l(!0),d(L,null,ie(e.profileAuthorPlansByValue(),r=>(l(),d("button",{type:"button",role:"radio",key:r.id,"aria-checked":e.profileSelectedPlan()?.id===r.id?"true":"false",class:T({"is-on":e.profileSelectedPlan()?.id===r.id}),onClick:a=>e.profilePlan=r.id},[g(c(r.interval==="year"?"Yearly":"Monthly"),1),r.interval==="year"&&e.profileAnnualSavings()?(l(),d("span",Xj,"\u2212"+c(e.profileAnnualSavings())+"%",1)):f("v-if",!0)],10,Yj))),128))])]),t[62]||(t[62]=n("h3",null,"Author subscription",-1)),n("p",Jj,[n("strong",null,c(e.billingAmount(e.profileSelectedPlan())),1),g(" per "+c(e.profileSelectedPlan()?.interval==="year"?"year":"month"),1)]),n("ul",Qj,[n("li",null,c(e.profileSelectedPlan()?.repositories)+" repositories, "+c(e.billingBytes(e.profileSelectedPlan()?.storage)),1),t[58]||(t[58]=n("li",null,"Automatic updates",-1)),t[59]||(t[59]=n("li",null,"Links that never expire",-1)),t[60]||(t[60]=n("li",null,"Coauthors included",-1)),t[61]||(t[61]=n("li",null,"Cancel renewal anytime",-1))]),n("button",{type:"button",class:"btn btn-outline-ink",disabled:e.billingBusy||e.billing.checkoutEnabled===!1,onClick:t[7]||(t[7]=r=>e.checkout(e.profileSelectedPlan().id))},c(e.billingBusy?"Please wait\u2026":"Subscribe"),9,Zj)])):f("v-if",!0)])),e.profileSingleAddons().length&&!(e.showRepositoryPass&&e.profileAddon()&&!e.billingPending)?(l(),d("div",xj,[t[63]||(t[63]=n("div",{class:"billing-addons-head"},[n("h3",{class:"billing-subtitle"},"Or pay for one thing"),n("span",null,"One-time")],-1)),n("ul",eG,[(l(!0),d(L,null,ie(e.profileSingleAddons(),r=>(l(),d("li",{key:r.id},[n("div",null,[n("strong",null,c(r.name),1),n("span",null,c(e.profileAddonBlurb(r.id)),1)]),n("span",tG,c(e.billingAmount(r)),1),n("button",{type:"button",class:"settings-text-button",onClick:a=>e.openProfileAddon(r.id),disabled:e.billingPending||e.billing.checkoutEnabled===!1},"Buy",8,nG)]))),128))])])):f("v-if",!0),e.showRepositoryPass&&e.profileAddon()&&!e.billingPending?(l(),d("div",oG,[n("div",sG,[n("button",{type:"button",class:"btn btn-outline-ink billing-back",onClick:t[8]||(t[8]=r=>e.showRepositoryPass=!1)},"\u2190 All options"),n("h3",null,c(e.profileAddon().name),1),n("p",iG,[n("strong",null,c(e.billingAmount(e.profileAddon())),1),t[64]||(t[64]=g(" once",-1))]),n("ul",rG,[(l(!0),d(L,null,ie(e.profileAddonFeatures(e.profileAddon().id),r=>(l(),d("li",{key:r},c(r),1))),128))])]),n("div",aG,[e.profileRepositories().length?(l(),d(L,{key:0},[t[66]||(t[66]=n("label",{class:"paper-field-label",for:"billing-repository"},"Which repository?",-1)),P(n("select",{id:"billing-repository",class:"form-control","onUpdate:modelValue":t[9]||(t[9]=r=>e.billingRepository=r)},[t[65]||(t[65]=n("option",{value:"",disabled:""},"Choose a repository",-1)),(l(!0),d(L,null,ie(e.profileRepositories(),r=>(l(),d("option",{key:r.repoId,value:r.repoId},c(r.repoId)+" \xB7 "+c(e.profileRepositoryExpiry(r)),9,lG))),128))],512),[[an,e.billingRepository]]),n("button",{type:"button",class:"btn btn-ink",disabled:e.billingBusy||!e.billingRepository||e.billing.checkoutEnabled===!1,onClick:t[10]||(t[10]=r=>e.checkout(e.profileAddon().id,e.billingRepository))},c(e.billingBusy?"Please wait\u2026":"Continue to checkout"),9,dG),t[67]||(t[67]=n("p",{class:"billing-footnote"},"One-time payment. Tax shown at checkout.",-1))],64)):(l(),d("p",uG,[...t[68]||(t[68]=[g("You have no repositories yet. ",-1),n("a",{href:"/anonymize"},"Create one",-1),g(" first.",-1)])])),["repo_slot","repo_pack"].includes(e.profileAddon().id)?(l(),d("p",cG,[...t[69]||(t[69]=[g("Adding a new repository? ",-1),n("a",{href:"/anonymize"},"Start creating it",-1),g("; the form offers this once your free repositories are in use.",-1)])])):f("v-if",!0)])])):f("v-if",!0),n("details",pG,[t[84]||(t[84]=n("summary",null,"Compare all features",-1)),n("div",fG,[n("table",hG,[t[83]||(t[83]=n("caption",{class:"sr-only"},"Free, Paper pack and Author hosting",-1)),n("thead",null,[n("tr",null,[t[72]||(t[72]=n("th",{scope:"col"},[n("span",{class:"sr-only"},"Feature")],-1)),t[73]||(t[73]=n("th",{scope:"col"},[g("Free"),n("small",null,"\u20AC0")],-1)),e.profilePackPlan()?(l(),d("th",mG,[t[70]||(t[70]=g("Paper pack",-1)),n("small",null,c(e.billingPrice(e.profilePackPlan())),1)])):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("th",gG,[t[71]||(t[71]=g("Author",-1)),n("small",null,c(e.billingPrice(e.profileSelectedPlan())),1)])):f("v-if",!0)])]),n("tbody",null,[n("tr",null,[t[74]||(t[74]=n("th",{scope:"row"},"Repositories",-1)),n("td",null,c(e.billing.allowance?.repositories),1),e.profilePackPlan()?(l(),d("td",vG,"+1")):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("td",yG,c(e.profileSelectedPlan()?.repositories),1)):f("v-if",!0)]),n("tr",null,[t[75]||(t[75]=n("th",{scope:"row"},"Source storage",-1)),n("td",null,c(e.billingBytes(e.billing.allowance?.storage))+" total",1),e.profilePackPlan()?(l(),d("td",bG,c(e.billingBytes(e.profileSlotPlan()?.storage||e.profilePassPlan()?.storage))+" for it",1)):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("td",wG,c(e.billingBytes(e.profileSelectedPlan()?.storage))+" total",1)):f("v-if",!0)]),n("tr",null,[t[76]||(t[76]=n("th",{scope:"row"},"Latest expiration",-1)),n("td",null,c(e.billing.freeExpirationMonths||5)+" months ahead",1),e.profilePackPlan()?(l(),d("td",kG,"1 year after purchase")):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("td",CG,"Never")):f("v-if",!0)]),n("tr",null,[t[77]||(t[77]=n("th",{scope:"row"},"Automatic updates",-1)),t[78]||(t[78]=n("td",null,"No",-1)),e.profilePackPlan()?(l(),d("td",EG,"180 days")):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("td",SG,"Yes")):f("v-if",!0)]),n("tr",null,[t[79]||(t[79]=n("th",{scope:"row"},"Renews",-1)),t[80]||(t[80]=n("td",null,"No",-1)),e.profilePackPlan()?(l(),d("td",NG,"No")):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("td",RG,"Until cancelled")):f("v-if",!0)]),n("tr",null,[t[81]||(t[81]=n("th",{scope:"row"},"Reviewer access",-1)),t[82]||(t[82]=n("td",null,"Free",-1)),e.profilePackPlan()?(l(),d("td",DG,"Free")):f("v-if",!0),e.profileAuthorPlans().length?(l(),d("td",AG,"Free")):f("v-if",!0)])])])])]),e.billing.checkoutEnabled===!1?(l(),d("p",TG,"New purchases are not available right now. Existing billing can still be managed below.")):f("v-if",!0)])):f("v-if",!0),e.billing?.enabled?(l(),d("section",PG,[n("div",OG,[t[86]||(t[86]=n("h2",{class:"billing-section-title"},"Purchases",-1)),e.billingPending?f("v-if",!0):(l(),d("button",{key:0,type:"button",class:"settings-text-button",onClick:t[11]||(t[11]=r=>e.refreshBilling()),disabled:e.billingBusy},"Refresh payment status",8,IG))]),(e.billing.purchases||[]).length?f("v-if",!0):(l(),d("p",_G,"No purchases yet.")),(e.billing.purchases||[]).length?(l(),d("div",MG,[...t[87]||(t[87]=[n("span",null,"Purchase",-1),n("span",null,"Period",-1),n("span",null,"Amount",-1),n("span",null,"Status",-1)])])):f("v-if",!0),(e.billing.purchases||[]).length?(l(),d("ul",VG,[(l(!0),d(L,null,ie(e.profilePurchases(!0).concat(e.profilePurchases(!1)),r=>(l(),d("li",{class:T(["billing-history-row",{"is-ended":!["active","overdue"].includes(r.status)}]),key:r.id},[n("div",qG,[n("strong",null,[g(c(e.profileGrantName(r)),1),r.repoId?(l(),d(L,{key:0},[t[88]||(t[88]=g(" \xB7 ",-1)),n("a",{href:"/anonymize/"+encodeURIComponent(r.repoId)},c(r.repoId),9,$G)],64)):r.conference?(l(),d(L,{key:1},[t[89]||(t[89]=g(" \xB7 ",-1)),n("a",{href:"/conference/"+encodeURIComponent(r.conference)},c(r.conference),9,LG)],64)):f("v-if",!0)]),n("span",null,c([r.purchasedAt?"Bought "+e.billingDate(r.purchasedAt):"",r.parts.length?e.profilePackSummary(r):["refunded","disputed"].includes(r.status)?"Payment "+r.status+", so what it paid for has ended":r.recurring?"Account subscription":""].filter(Boolean).join(" \xB7 ")),1)]),n("div",UG,c(e.profilePurchaseTerm(r)),1),n("div",FG,c(r.amount!=null?e.billingPrice(r):""),1),n("div",BG,[n("span",{class:T(["settings-status","is-"+r.status])},c(e.profilePurchaseStatus(r)),3)])],2))),128))])):f("v-if",!0),n("div",zG,[n("div",null,[t[90]||(t[90]=n("strong",null,"Invoices and payment details",-1)),e.billing.portal?(l(),d("p",HG,"Download receipts, update your card or change renewal in Stripe.")):(l(),d("p",jG,"Invoices appear here after your first purchase.")),t[91]||(t[91]=n("p",null,[g("Need a refund? "),n("a",{href:"mailto:tdurieux@anonymous.4open.science"},"Email the maintainer"),g(" with the payment date, or read the "),n("a",{href:"/faq#faq-plans"},"refund policy"),g(".")],-1))]),e.billing.portal?(l(),d("button",{key:0,type:"button",class:"btn btn-outline-ink",onClick:t[12]||(t[12]=r=>e.billingPortal()),disabled:e.billingBusy},"Manage billing and invoices",8,GG)):f("v-if",!0)])])):f("v-if",!0),n("p",WG,[t[92]||(t[92]=g("Organizing a conference? ",-1)),e.profileConferencePlan()?(l(),d(L,{key:0},[g("Review packages start at "+c(e.billingAmount(e.profileConferencePlan()))+" once for up to "+c(e.profileConferencePlan().repositories)+" submissions, and authors pay nothing.",1)],64)):(l(),d(L,{key:1},[g("One payment hosts every submission, and authors pay nothing.")],64)),t[93]||(t[93]=g()),t[94]||(t[94]=n("a",{href:"/conference/new"},"Create a conference",-1))])],8,wj),[[ee,e.settingsTab==="billing"]]),P(n("section",KG,[t[105]||(t[105]=n("p",{class:"settings-scope"},"Your identity, repository access, and account.",-1)),n("div",YG,[e.user?.photo?(l(),d("img",{key:0,width:"40",height:"40",class:"rounded-circle",alt:"",src:e.safeUrl(e.user?.photo)},null,8,XG)):f("v-if",!0),n("div",JG,[n("div",QG,"@"+c(e.user?.username),1),t[96]||(t[96]=n("div",{class:"paper-account-meta"},"Signed in with GitHub. Anonymous GitHub only reads your repositories.",-1))]),t[97]||(t[97]=n("a",{class:"btn btn-outline-ink",href:"/api/user/logout",target:"_self"},"Sign out",-1))]),n("form",{class:"paper-account-email",onSubmit:t[16]||(t[16]=ce(r=>e.saveAccountEmail(),["prevent"]))},[t[98]||(t[98]=n("label",{class:"paper-field-label",for:"account-email"},"Email address",-1)),t[99]||(t[99]=n("p",{id:"account-email-help",class:"paper-section-copy"},"Used for account alerts. Your address is never shown on anonymous pages.",-1)),P(n("input",{id:"account-email",class:"form-control",type:"email",autocomplete:"email",maxlength:"254",required:"","onUpdate:modelValue":t[13]||(t[13]=r=>e.accountEmail=r),"aria-describedby":"account-email-help",disabled:e.emailLoading||e.emailSaving||!e.emailCSRFReady,onInput:t[14]||(t[14]=r=>e.emailSaved=!1)},null,40,ZG),[[dt,e.accountEmail]]),e.emailLoading?(l(),d("p",xG,"Loading your email address\u2026")):f("v-if",!0),e.emailError?(l(),d("p",eW,c(e.emailError),1)):f("v-if",!0),!e.emailCSRFReady&&!e.emailLoading?(l(),d("button",{key:2,class:"btn btn-outline-ink mt-2",type:"button",onClick:t[15]||(t[15]=r=>e.loadAccountEmail())},"Try again")):f("v-if",!0),n("button",{class:"btn btn-ink mt-2",type:"submit",disabled:e.emailLoading||e.emailSaving||!e.emailCSRFReady},c(e.emailSaving?"Saving\u2026":"Save email address"),9,tW),e.emailSaved?(l(),d("p",nW,"Email address saved.")):f("v-if",!0)],32),t[106]||(t[106]=n("a",{class:"paper-settings-connection-link",href:"/connections"},[n("i",{class:"fab fa-github","aria-hidden":"true"}),n("span",null,[g("GitHub connections"),n("small",null,"Manage repository access and legacy OAuth.")]),n("span",{"aria-hidden":"true"},"\u2192")],-1)),n("div",oW,[t[103]||(t[103]=n("div",{class:"paper-danger-head"},"Delete account",-1)),t[104]||(t[104]=n("p",{class:"paper-danger-copy"}," Removes all your anonymized repositories, gists, and pull requests, revokes the application's access to your GitHub account, and erases your personal data (username, email, access tokens). This cannot be undone. ",-1)),e.deleteError?(l(),d("div",sW,[t[100]||(t[100]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-info"})],-1)),t[101]||(t[101]=g()),n("span",{textContent:c(e.deleteError)},null,8,iW)])):f("v-if",!0),n("button",{type:"button",class:"btn btn-outline-danger",onClick:t[17]||(t[17]=r=>e.confirmDeleteAccount=!0),disabled:e.deletingAccount},[t[102]||(t[102]=n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-trash"})],-1)),g(c(e.deletingAccount?"Deleting\u2026":"Delete my account"),1)],8,rW),e.confirmDeleteAccount?(l(),d("div",aW,[n("label",lW,"Type "+c(e.user?.username)+" to confirm",1),P(n("input",{id:"delete-username",class:"form-control","onUpdate:modelValue":t[18]||(t[18]=r=>e.deleteUsername=r),autocomplete:"off"},null,512),[[dt,e.deleteUsername]]),n("div",dW,[n("button",{type:"button",class:"btn btn-outline-danger",onClick:t[19]||(t[19]=r=>e.deleteAccount()),disabled:e.deletingAccount||e.deleteUsername!==e.user?.username},c(e.deletingAccount?"Deleting\u2026":"Delete permanently"),9,uW),n("button",{type:"button",class:"btn btn-outline-ink",onClick:t[20]||(t[20]=r=>{e.confirmDeleteAccount=!1,e.deleteUsername=""}),disabled:e.deletingAccount},"Cancel",8,cW)])])):f("v-if",!0)])],512),[[ee,e.settingsTab==="account"]])])}var pW={class:"pr-page"},fW={class:"container paper-page pr-page-inner"},hW={class:"pr-header"},mW={class:"pr-title-row"},gW={class:"paper-page-title pr-title"},vW=["textContent"],yW={key:1,class:"text-muted"},bW=["href"],wW={class:"pr-header-meta"},kW={key:0,class:"pr-meta-item"},CW=["textContent"],EW={key:1,class:"pr-meta-item"},SW=["textContent"],NW={key:2,class:"pr-meta-item"},RW=["textContent"],DW={key:0,class:"pr-body-card"},AW={key:1,class:"paper-tabs",role:"tablist"},TW=["aria-selected","tabindex"],PW=["aria-selected","tabindex"],OW=["textContent"],IW={class:"paper-tab-content"},_W={key:0,role:"tabpanel",id:"pr-diff-panel","aria-labelledby":"pr-diff-tab"},MW=["innerHTML"],VW={key:1,role:"tabpanel",id:"pr-comments-panel","aria-labelledby":"pr-comments-tab"},qW={class:"pr-comments"},$W={class:"pr-comment"},LW={class:"pr-comment-head"},UW={key:0,class:"pr-comment-author"},FW=["textContent"],BW=["textContent"],zW={key:0,class:"pr-comment-body"},HW={key:0,class:"paper-table-empty"};function np(e,t){let o=Ye("markdown");return l(),d("div",pW,[n("div",fW,[t[17]||(t[17]=n("div",{class:"paper-crumbs"},[n("a",{href:"/dashboard"},"Reviewer"),g(" \xA0/\xA0 "),n("span",{class:"here"},"Pull request")],-1)),n("header",hW,[n("div",mW,[n("h1",gW,[e.details?.title?(l(),d("span",{key:0,textContent:c(e.details?.title)},null,8,vW)):f("v-if",!0),e.details?.title?f("v-if",!0):(l(),d("span",yW,"Untitled pull request"))]),e.options?.isAdmin||e.options?.isOwner?(l(),d("a",{key:0,class:"btn btn-sm","aria-label":"Edit",href:e.safeUrl("/pull-request-anonymize/"+e.pullRequestId)},[...t[4]||(t[4]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),n("span",{class:"d-none d-md-inline"}," Edit",-1)])],8,bW)):f("v-if",!0)]),n("div",wW,[n("span",{class:T(["paper-pill",{good:e.details?.merged,warn:e.details?.state=="open",bad:e.details?.state=="closed"&&!e.details?.merged}])},[n("span",{class:T(["status-dot",{"status-ready":e.details?.merged,"status-error":e.details?.state=="closed"&&!e.details?.merged}])},null,2),g(" "+c(e.details?.merged?"Merged":e.fmt.title(e.details?.state)),1)],2),e.details?.baseRepositoryFullName?(l(),d("span",kW,[t[5]||(t[5]=n("i",{class:"fab fa-github"},null,-1)),t[6]||(t[6]=g()),n("span",{textContent:c(e.details?.baseRepositoryFullName)},null,8,CW)])):f("v-if",!0),e.details?.updatedDate?(l(),d("span",EW,[t[7]||(t[7]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-clock"})],-1)),t[8]||(t[8]=g()),n("span",{textContent:c(e.fmt?.date(e.details?.updatedDate))},null,8,SW)])):f("v-if",!0),e.details?.anonymizeDate?(l(),d("span",NW,[t[9]||(t[9]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-shield"})],-1)),t[10]||(t[10]=g(" Anonymized ",-1)),n("span",{textContent:c(e.fmt?.date(e.details?.anonymizeDate))},null,8,RW)])):f("v-if",!0)])]),e.details?.body?(l(),d("section",DW,[t[11]||(t[11]=n("div",{class:"paper-section-eyebrow"},"Description",-1)),Me(o,{content:e.details?.body},null,8,["content"])])):f("v-if",!0),e.details?.diff||e.details?.comments?(l(),d("nav",AW,[e.details?.diff?(l(),d("button",{key:0,class:T(["paper-tab",{active:e.tabState?.active=="diff"}]),type:"button",role:"tab",id:"pr-diff-tab","aria-selected":e.tabState?.active==="diff","aria-controls":"pr-diff-panel",tabindex:e.tabState?.active==="diff"?0:-1,onKeydown:t[0]||(t[0]=i=>e.previewTabKeydown(i)),onClick:t[1]||(t[1]=i=>e.tabState.active="diff")},[...t[12]||(t[12]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-code"})],-1),g(" Diff ",-1)])],42,TW)):f("v-if",!0),e.details?.comments?(l(),d("button",{key:1,class:T(["paper-tab",{active:e.tabState?.active=="comments"}]),type:"button",role:"tab",id:"pr-comments-tab","aria-selected":e.tabState?.active==="comments","aria-controls":"pr-comments-panel",tabindex:e.tabState?.active==="comments"?0:-1,onKeydown:t[2]||(t[2]=i=>e.previewTabKeydown(i)),onClick:t[3]||(t[3]=i=>e.tabState.active="comments")},[t[13]||(t[13]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1)),n("span",{textContent:c(e.fmt.plural(e.details?.comments?.length,{0:"No comments",one:"1 comment",other:"{} comments"}))},null,8,OW)],42,PW)):f("v-if",!0)])):f("v-if",!0),n("div",IW,[e.details?.diff&&e.tabState?.active=="diff"?(l(),d("div",_W,[n("div",{class:"pr-diff",innerHTML:e.sanitize(e.fmt?.diff(e.details?.diff))},null,8,MW)])):f("v-if",!0),e.details?.comments&&e.tabState?.active=="comments"?(l(),d("div",VW,[n("ul",qW,[(l(!0),d(L,null,ie(e.details?.comments,(i,s)=>(l(),d("li",$W,[n("div",LW,[i?.author?(l(),d("span",UW,[t[14]||(t[14]=n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-user"})],-1)),t[15]||(t[15]=g(" @",-1)),n("span",{textContent:c(i?.author)},null,8,FW)])):f("v-if",!0),i?.updatedDate?(l(),d("span",{key:1,class:"pr-comment-date",textContent:c(e.fmt?.date(i?.updatedDate))},null,8,BW)):f("v-if",!0)]),i?.body?(l(),d("div",zW,[Me(o,{content:i?.body},null,8,["content"])])):f("v-if",!0)]))),256)),e.details?.comments?.length?f("v-if",!0):(l(),d("li",HW,[...t[16]||(t[16]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#ui-icon-comment"})],-1),n("span",null,"No comments on this pull request.",-1)])]))])])):f("v-if",!0)])])])}var jW={class:"repository-task status-page"},GW={class:"page-head-main"},WW={class:"task-lede"},KW={class:"task-columns"},YW={class:"task-preparation","aria-label":"Repository preparation"},XW={key:0,class:"text-danger",role:"alert"},JW={key:1,class:"paper-section-copy"},QW={key:2,class:"paper-ratelimit-card",role:"status"},ZW={class:"paper-error-msg"},xW=["aria-valuenow"],eK={class:"paper-progress-label"},tK=["textContent"],nK={key:0},oK=["textContent"],sK={class:"paper-progress-pct"},iK={key:4,class:"paper-error-card",role:"alert"},rK={key:0,class:"paper-error-msg"},aK={key:1,class:"paper-error-msg"},lK={key:2},dK=["href"],uK={class:"paper-error-actions"},cK=["href"],pK={key:5,class:"share-link"},fK={class:"share-link-row"},hK={class:"share-link-buttons"},mK={class:"ui-icon","aria-hidden":"true"},gK=["href"],vK=["textContent"],yK=["href"],bK={class:"share-link-note"},wK=["href"],kK={class:"share-link-next"},CK={class:"share-link-next-actions"},EK=["href"],SK={class:"task-summary","aria-label":"Repository summary"},NK=["title"],RK={key:1};function op(e,t){return l(),d("div",jW,[n("header",{class:T(["page-head",{"task-ready":e.repo?.status==="ready"}])},[t[3]||(t[3]=n("div",{class:"paper-crumbs"},[n("a",{href:"/dashboard"},"My work"),g(" \xA0/\xA0 "),n("span",{class:"here"},"Review link")],-1)),n("div",GW,[n("div",null,[n("h1",null,c(e.repo?.status==="ready"?"Your review link is ready":"Prepare your anonymous review link"),1),n("p",WW,c(e.repo?.status==="ready"?"Share this link with reviewers in your submission.":"Your settings are saved. Track preparation before sharing the link."),1)])]),t[4]||(t[4]=n("ol",{class:"task-trail flow-trail","aria-label":"Repository progress"},[n("li",null,"1. Repository"),n("li",null,"2. Review and hosting"),n("li",{"aria-current":"step"},"3. Review link")],-1))],2),n("div",KW,[n("section",YW,[e.error?(l(),d("p",XW,[t[5]||(t[5]=g("Unable to load repository status. ",-1)),n("button",{type:"button",class:"task-text-button",onClick:t[0]||(t[0]=o=>e.getStatus())},"Try again")])):f("v-if",!0),e.repo?.status!=="ready"?(l(),d("p",JW,[...t[6]||(t[6]=[g(" The repository will take a few minutes to get ready, depending on its size. Visit the ",-1),n("a",{href:"/faq"},"FAQ",-1),g(" for more information. ",-1)])])):f("v-if",!0),e.rateLimitResetAt?(l(),d("div",QW,[t[9]||(t[9]=Ce('
Temporarily paused
GitHub API rate limit reached
',1)),n("p",ZW,[t[7]||(t[7]=g("Anonymization will resume automatically in ",-1)),n("strong",null,c(e.rateLimitCountdown),1),t[8]||(t[8]=g(". No action needed \u2014 the job is queued and will continue where it left off.",-1))])])):f("v-if",!0),e.repo?.status!=="ready"&&e.repo?.status!="error"&&!e.rateLimitResetAt?(l(),d("div",{key:3,class:T(["paper-progress",{"paper-progress-ready":e.repo?.status=="ready"}]),role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.progress},[n("div",{class:"paper-progress-bar",style:$e("width: "+e.progress+"%;")},null,4),n("div",eK,[n("span",{textContent:c(e.fmt?.title(e.repo?.status))},null,8,tK),e.repo?.statusMessage?(l(),d("span",nK,[t[10]||(t[10]=g("\xA0\xB7\xA0",-1)),n("span",{textContent:c(e.repo?.statusMessage)},null,8,oK)])):f("v-if",!0),n("span",sK,c(e.progress||0)+"%",1)])],10,xW)):f("v-if",!0),e.repo?.status=="error"&&!e.rateLimitResetAt?(l(),d("div",iK,[t[14]||(t[14]=Ce('
Anonymization failed
Something went wrong while preparing this repository.
',1)),e.repo?.statusMessage?(l(),d("p",rK,c(e.fmt?.translate("ERRORS."+e.repo?.statusMessage)),1)):f("v-if",!0),e.repo?.statusMessage?f("v-if",!0):(l(),d("p",aK,"No additional details were reported. The most common causes are private repositories, missing branches, and rate limits.")),e.repo?.statusMessage==="quota_exceeded"?(l(),d("p",lK,[n("a",{href:e.safeUrl("/anonymize/"+e.repoId)},"Review this repository\u2019s hosting",8,dK),t[11]||(t[11]=g(", then retry preparation.",-1))])):f("v-if",!0),t[15]||(t[15]=n("ul",{class:"paper-error-hints"},[n("li",null,"Make sure the source URL points to a repository or pull request you can access."),n("li",null,"Check that the chosen branch and commit still exist on GitHub."),n("li",null,"If you just signed in, the access token may need a moment to propagate \u2014 try again.")],-1)),n("div",uK,[n("a",{class:"btn btn-primary",href:e.safeUrl("/anonymize/"+e.repoId)},[...t[12]||(t[12]=[n("svg",{class:"ui-icon mr-1","aria-hidden":"true"},[n("use",{href:"#ui-icon-edit"})],-1),g(" Edit anonymization",-1)])],8,cK),t[13]||(t[13]=Ce(' Read the FAQ Report a bug in Anonymous GitHub',2))])])):f("v-if",!0),e.repo?.status=="ready"?(l(),d("div",pK,[t[24]||(t[24]=n("div",{class:"share-link-label",id:"share-url-label"},"Review link",-1)),n("div",fK,[n("code",{id:"share-url",class:"share-link-url",tabindex:"0",role:"textbox","aria-readonly":"true","aria-labelledby":"share-url-label",onFocus:t[1]||(t[1]=o=>e.selectShareUrl(o))},c(e.shareUrl),33),n("div",hK,[n("button",{type:"button",class:"btn btn-primary share-copy",onClick:t[2]||(t[2]=o=>e.copyShareUrl())},[(l(),d("svg",mK,[n("use",{href:e.copied?"#ui-icon-check":"#project-icon-copy"},null,8,gK)])),n("span",{"aria-live":"polite",textContent:c(e.copied?"Copied":"Copy link")},null,8,vK)]),n("a",{class:"btn share-open",target:"_self",href:e.safeUrl("/r/"+e.repoId+"/")},[...t[16]||(t[16]=[n("svg",{class:"ui-icon","aria-hidden":"true"},[n("use",{href:"#project-icon-eye"})],-1),g(" Open repository ",-1)])],8,yK)])]),n("p",bK,[g(c(e.repo?.options?.expirationMode!=="never"&&e.repo?.options?.expirationDate?"Expires "+e.fmt.date(e.repo.options.expirationDate):"Never expires"),1),t[18]||(t[18]=n("span",{"aria-hidden":"true"}," \xB7 ",-1)),t[19]||(t[19]=g("Reviewers don\u2019t need an account",-1)),e.repo?.options?.page?(l(),d(L,{key:0},[t[17]||(t[17]=n("span",{"aria-hidden":"true"}," \xB7 ",-1)),n("a",{target:"_self",href:e.safeUrl("/w/"+e.repoId+"/")},"Open GitHub page",8,wK)],64)):f("v-if",!0)]),n("div",kK,[t[22]||(t[22]=n("h2",null,"Need to change something?",-1)),t[23]||(t[23]=n("p",null,"Edit the redacted terms or the expiry at any time. The link stays the same.",-1)),n("p",CK,[n("a",{href:e.safeUrl("/anonymize/"+e.repoId)},"Edit anonymization",8,EK),t[20]||(t[20]=n("span",{"aria-hidden":"true"},"\xB7",-1)),t[21]||(t[21]=n("a",{href:"/dashboard"},"Go to My work",-1))])])])):f("v-if",!0)]),n("aside",SK,[n("dl",null,[t[28]||(t[28]=n("dt",null,"Source",-1)),e.repo?.source?.fullName?(l(),d("dd",{key:0,class:"task-source",title:"https://github.com/"+e.repo.source.fullName},[t[25]||(t[25]=g("github.com/",-1)),t[26]||(t[26]=n("wbr",null,null,-1)),g(c(e.repo.source.fullName.split("/")[0])+"/",1),t[27]||(t[27]=n("wbr",null,null,-1)),g(c(e.repo.source.fullName.split("/").slice(1).join("/")),1)],8,NK)):(l(),d("dd",RK,"Loading\u2026")),t[29]||(t[29]=n("dt",null,"Lifetime",-1)),n("dd",null,c(e.repo?.options?.expirationMode==="never"?"Never expire while subscribed":e.repo?.options?.expirationDate?"Until "+e.fmt.date(e.repo.options.expirationDate):"Loading\u2026"),1),t[30]||(t[30]=n("dt",null,"Review access",-1)),t[31]||(t[31]=n("dd",null,"Anonymous and free",-1))])])])])}var DK={class:"paper-footer"},AK={class:"paper-footer-inner"},TK={class:"paper-footer-col"},PK={key:0,href:"/dashboard"},OK={key:1,href:"/conferences"},IK={class:"paper-footer-foot"};function sp(e,t){return l(),d("footer",DK,[n("div",AK,[t[3]||(t[3]=n("div",{class:"paper-footer-brand"},[n("div",{class:"paper-footer-mark"},[g("Anonymous "),n("em",null,"GitHub")]),n("p",{class:"paper-footer-tag"}," A read-only, identity-stripped mirror of your repository, built for double-anonymous peer review. ")],-1)),n("div",TK,[t[0]||(t[0]=n("div",{class:"paper-footer-head"},"Product",-1)),t[1]||(t[1]=n("a",{href:"/anonymize"},"Anonymize",-1)),e.user?(l(),d("a",PK,"My work")):f("v-if",!0),e.user?(l(),d("a",OK,"Conferences")):f("v-if",!0),t[2]||(t[2]=n("a",{href:"/faq"},"FAQ",-1))]),t[4]||(t[4]=Ce('',2))]),t[6]||(t[6]=n("div",{class:"paper-footer-rule"},null,-1)),n("div",IK,[n("span",null,"\xA9 "+c(e.year||new Date().getFullYear())+" Anonymous GitHub \xB7 GPL-3.0 licensed",1),t[5]||(t[5]=n("span",{class:"paper-footer-meta"},"Built for reviewers, by researchers.",-1))])])}var ji={"partials/reviewConsent.htm":Tc,"partials/connections.htm":Pc,"partials/signin.htm":Oc,"partials/404.htm":Ic,"partials/admin/conferences.htm":_c,"partials/admin/errors.htm":Mc,"partials/admin/overview.htm":Vc,"partials/admin/queues.htm":qc,"partials/admin/repositories.htm":$c,"partials/admin/user.htm":Lc,"partials/admin/users.htm":Uc,"partials/anonymize.htm":Fc,"partials/anonymizePullRequest.htm":Bc,"partials/claim.htm":zc,"partials/conference.htm":Hc,"partials/conferences.htm":jc,"partials/dashboard.htm":Gc,"partials/explorer.htm":Wc,"partials/faq.htm":Kc,"partials/gist.htm":Yc,"partials/header.htm":Xc,"partials/home.htm":Jc,"partials/loading.htm":Qc,"partials/newConference.htm":Zc,"partials/pageView.htm":xc,"partials/pr-dashboard.htm":ep,"partials/profile.htm":tp,"partials/pullRequest.htm":np,"partials/status.htm":op,"partials/footer.htm":sp};var _K={class:"ui-icon-definitions","aria-hidden":"true",focusable:"false"};function ip(e,t){return l(),d("svg",_K,[...t[0]||(t[0]=[Ce('',1)])])}function rp(e,t){e==="partials/explorer.htm"&&(t.sidebarCollapsed=window.matchMedia?.("(max-width: 767px)").matches||!1,t.sidebarHidden=!1,t.dirExpanded=!1,t.moreOpen=!1,t.tocOpen=!1,t.gotoOpen=!1,t.gotoValue="",t.gotoError="",t.mdFindOpen=!1,t.mdFindQuery="",t.mdFindTotal=0,t.mdFindIndex=0,t.mdFindCase=!1,t.accountOpen=!1,t.helpOpen=!1,t.sidebarWidth=Math.min(520,Math.max(220,Number(localStorage.getItem("sidebarWidth"))||(window.innerWidth>=1280?320:280))),document.documentElement.style.setProperty("--sidebar-w",t.sidebarWidth+"px"),t.startSidebarResize=s=>{s.preventDefault();let r=s.clientX,a=t.sidebarWidth,u=y=>{t.sidebarWidth=Math.min(520,Math.max(220,a+y.clientX-r)),document.documentElement.style.setProperty("--sidebar-w",t.sidebarWidth+"px")},p=()=>{window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",p),document.body.classList.remove("is-resizing"),localStorage.setItem("sidebarWidth",String(t.sidebarWidth))};document.body.classList.add("is-resizing"),window.addEventListener("pointermove",u),window.addEventListener("pointerup",p)}),e==="partials/anonymize.htm"&&(t.prTabState={active:t.options.diff?"diff":"comments"},t.watchGroup(["options.diff","options.comments"],()=>{t.options[t.prTabState.active]||(t.prTabState.active=t.options.diff?"diff":t.options.comments?"comments":null)})),e==="partials/gist.htm"&&(t.tabState={active:t.details?.files?"files":"comments"}),["partials/conferences.htm","partials/conference.htm"].includes(e)&&(t.statusLabels={ready:"Ready",expired:"Expired",removed:"Removed"});let i={"partials/dashboard.htm":["filteredItems",()=>t.items,"itemFilter"],"partials/conferences.htm":["filteredConferences",()=>t.conferences,"conferenceFilter"],"partials/conference.htm":["filteredRepositories",()=>t.conference?.repositories,"repoFiler"],"partials/admin/repositories.htm":["filteredRepositories",()=>t.repositories,"repoFiler"],"partials/admin/user.htm":["filteredRepositories",()=>t.repositories,"repoFiler"],"partials/admin/users.htm":["filteredUsers",()=>t.users,"userFiler"],"partials/admin/conferences.htm":["filteredConferences",()=>t.conferences]}[e];if(i){let s=bt(()=>t.fmt.orderBy(t.fmt.filter(i[1](),t[i[2]]),t.orderBy));Object.defineProperty(t,i[0],{configurable:!0,get:()=>s.value})}}function ap(e=(...t)=>fetch(...t)){async function t(i,s,r,a={}){let u=new URL(s,window.location.href);for(let[m,b]of Object.entries(a.params||{}))if(b!=null)for(let h of Array.isArray(b)?b:[b])u.searchParams.append(m,typeof h=="object"?JSON.stringify(h):h);let p=new AbortController,y;a.timeout?.then?a.timeout.then(()=>p.abort()):a.timeout&&(y=setTimeout(()=>p.abort(),a.timeout));try{let m={Accept:"application/json, text/plain, */*",...a.headers},b=document.cookie.match(/(?:^|;\s*)XSRF-TOKEN=([^;]*)/);b&&u.origin===window.location.origin&&(m["X-XSRF-TOKEN"]=decodeURIComponent(b[1]));let h;r!==void 0&&(r instanceof FormData?h=r:(m["Content-Type"]||(m["Content-Type"]="application/json;charset=utf-8"),h=JSON.stringify(r)));let w=await e(u.href,{method:i,headers:m,body:h,credentials:"same-origin",signal:p.signal}),A;if(a.onDownloadProgress&&w.ok&&w.body?.getReader&&typeof TextDecoder<"u"){let v=w.body.getReader(),C=new TextDecoder,I=[],V=0;try{for(;;){let{value:q,done:W}=await v.read();if(W)break;I.push(C.decode(q,{stream:!0})),V+=q.byteLength,a.onDownloadProgress(V)}I.push(C.decode()),A=I.join("")}finally{v.releaseLock()}}else A=await w.text();let N=A;if(a.transformResponse)N=a.transformResponse(A);else if(A&&(/json/i.test(w.headers.get("content-type")||"")||/^[\[{]/.test(A.trim())))try{N=JSON.parse(A)}catch{}let R={data:N,status:w.status,headers:v=>w.headers.get(v)};if(!w.ok)throw R;return R}catch(m){throw m.name==="AbortError"?{status:-1,data:null}:m}finally{clearTimeout(y)}}let o={};for(let i of["get","delete","head"])o[i]=(s,r)=>t(i.toUpperCase(),s,void 0,r);for(let i of["post","put","patch"])o[i]=(s,r,a)=>t(i.toUpperCase(),s,r,a);return o}var lp={resolve:e=>Promise.resolve(e),reject:e=>Promise.reject(e),all:e=>Promise.all(e),defer(){let e,t;return{promise:new Promise((i,s)=>{e=i,t=s}),resolve:e,reject:t}}};var dp=function(e){function t(o){return o=o||{used:0,total:0},o.unlimited=!o.total,o.percent=o.unlimited?0:Math.min(100,o.used*100/o.total),o.level=o.unlimited?"unlimited":o.percent>=95?"danger":o.percent>=80?"warn":"ok",o}return{decorate:t,load:function(){return e.get("/api/user/quota").then(o=>{let i=o.data||{};return i.storage=t(i.storage),i.file=t(i.file),i.repository=t(i.repository),i})}}};function up(e){let t=[],o=0,i=/\bXXXX-(\d+)\b/g,s;for(;s=i.exec(e);)s.index>o&&t.push(e.slice(o,s.index)),t.push(Oe("span",{class:"redact-slot",role:"img","aria-label":"Redacted term "+s[1]},[Oe("i",null,s[1])])),o=s.index+s[0].length;return t.length?(o{o.push(r),a=1024&&iqK(e.file)),a=()=>"/"+(Array.isArray(t.params.path)?t.params.path.join("/"):t.params.path||"");st(()=>[t.params.repoId,t.params.path],()=>{let h="";a().split("/").filter(Boolean).forEach(w=>{h+="/"+w,i[h]=!0})},{immediate:!0});let u=bt(()=>{if(!e.searchQuery||!e.searchResults)return null;let h=new Set,w=new Set;return e.searchResults.forEach(A=>{h.add(A.path?`${A.path}/${A.name}`:A.name);let N="";(A.path||"").split("/").filter(Boolean).forEach(R=>{N=N?N+"/"+R:R,w.add(N)})}),{files:h,folders:w}}),p=()=>[...o.value.querySelectorAll("li > a")],y=h=>{o.value.querySelector(".tree-focused")?.classList.remove("tree-focused"),h&&(s=h.dataset.path,h.classList.add("tree-focused"),h.scrollIntoView?.({block:"nearest"}),o.value.focus())};function m(h){let w=p(),A=o.value.querySelector(".tree-focused")||w[0],N=w.indexOf(A);if(!["ArrowDown","ArrowUp","ArrowRight","ArrowLeft","Enter"].includes(h.key)||(h.preventDefault(),h.key==="ArrowDown"&&y(w[(N+1)%w.length]),h.key==="ArrowUp"&&y(w[(N-1+w.length)%w.length]),!A))return;let R=A.closest("li");h.key==="ArrowRight"&&R.classList.contains("folder")&&(R.classList.contains("open")?y(R.querySelector(":scope > ul > li > a")):A.click()),h.key==="ArrowLeft"&&(R.classList.contains("folder")&&R.classList.contains("open")?A.click():y(R.parentElement.closest("li.folder")?.querySelector(":scope > a"))),h.key==="Enter"&&A.click()}function b(h,w=""){let A=[...h].sort((N,R)=>+!!R.children-+!!N.children||N.name.localeCompare(R.name));return Oe("ul",A.flatMap(N=>{let R=N,v=R.name,C=(w+"/"+v).slice(1);if(u.value&&!u.value.files.has(C)&&!u.value.folders.has(C))return[];for(;R.children?.length===1&&R.children[0].children&&e.page?.loadedFolders?.[(w+"/"+v).slice(1)];)R=R.children[0],v+="/"+R.name;let I=w+"/"+v,V=!!R.children,q=u.value?i[I]!==!1:!!i[I],W=V&&e.page?.options?.truncatedFolders?.includes(I.slice(1)),se=Oe("span",{class:V?"tree-icon-folder":"far fa-file tree-icon-file","aria-hidden":"true"},V?Oe("svg",{viewBox:"0 0 14 12",focusable:"false"},Oe("path",{d:"M1.5 10.5v-9h4l1.5 2h5.5v7z"})):null),Q=!1,ne=v,Ee="",D="";if(v.length>80){let be=v.length-12;for(let le=v.length-18;le<=v.length-6;le++)if(le>0&&"-_. ".includes(v[le])){be=le;break}if(Q=!/XXXX-\d+/.test(v.slice(Math.max(0,be-12))),ne=v.slice(0,be).trimEnd(),Ee=v.slice(be).trimStart(),Q){let le=Math.max(8,30-Ee.length-1);if(ne.length>le&&!/XXXX-\d+/.test(ne)){let fe=-1;for(let Te=Math.min(le,ne.length);Te>=4;Te--)if(".-_".includes(ne[Te])){fe=Te;break}let ke=v.slice(0,v.length-Ee.length);ne=(fe>0?ne.slice(0,fe):ne.slice(0,le)).trimEnd(),D=ke.slice(ne.length)}}}let oe=Oe("span",{class:{"tree-name":!0,"tree-name-split":Q,"tree-name-wrap":!Q},title:v.replace(/\bXXXX-(\d+)\b/g,"[redacted term $1]")},Q?[Oe("span",{class:{"tree-name-head":!0,"is-cut":!!D}},up(ne)),D?Oe("span",{class:"tree-name-middle"},D):null,Oe("span",{class:"tree-name-tail"},Ee)]:MK(v)),x=be=>{y(be.currentTarget),V&&(be.preventDefault(),i[I]=!q,i[I]&&!R.children.length&&e.page.getFiles(I.slice(1)),ot(()=>y(p().find(le=>le.dataset.path===s))))},Ae=Oe("a",{"data-path":I,href:V?void 0:`/r/${encodeURIComponent(t.params.repoId)}${encodePathForUrl(I)}`,class:{"tree-focused":s===I},onClick:x},[V?Oe("span",{class:"tree-toggle"}):Oe("span",{class:"tree-spacer"}),se,oe,W?Oe("span",{class:"truncated-warning",title:e.page.fmt.translate("WARNINGS.folder_truncated")},Oe("i",{class:"fas fa-exclamation-triangle"})):null]);return Oe("li",{key:I,class:{file:!0,folder:V,open:q,active:a()===I,truncated:W},title:V?"":`Size: ${VK(R.size||0)}`},[Ae,V&&q?R.children.length||!e.page?.loadedFolders?.[I.slice(1)]?b(R.children,I):Oe("ul",Oe("li",{class:"tree-empty"},"Empty folder")):null])}))}return()=>Oe("tree",{ref:o,tabindex:0,onKeydown:m},e.file?.length?u.value?.files.size===0?Oe("div",{class:"tree-search-empty"},"No files found"):b(r.value):"Empty repository")}};function fp(){return nt({errors:{},dirty:!1,touched:!1,submitted:!1,get invalid(){return Object.values(this.errors).some(Boolean)},setValidity(e,t){this.errors[e]=!t},setDirty(){this.dirty=!0}})}function hp(e,t){if(!e[t]){let o=fp();Object.defineProperty(o,"invalid",{get(){return Object.values(o.errors).some(Boolean)||Object.keys(o).some(i=>i!=="invalid"&&o[i]&&typeof o[i]=="object"&&o[i].invalid)}}),e[t]=o}return e[t]}var mp={beforeMount(e,{value:t}){e._formState=hp(t,e.name),e.addEventListener("submit",o=>o.preventDefault())}};function $K(e){return e instanceof Date?isNaN(e)?"":`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`:e||""}function pp(e){let t=e._field.binding.value;e.type==="checkbox"?e.checked=!!t:e.type==="radio"?e.checked=t==(e._value??e.value):e._field.timer||(e.value=e.type==="date"?$K(t):t??""),Ra(e)}function Ra(e){let t=e._field.validation;if(!t)return;let o=e.validity;for(let[i,s]of Object.entries({required:o.valueMissing,pattern:o.patternMismatch,min:o.rangeUnderflow,max:o.rangeOverflow,date:o.badInput,email:o.typeMismatch&&e.type==="email",url:o.typeMismatch&&e.type==="url"}))t.setValidity(i,e.disabled||!s)}var gp={beforeMount(e,{value:t}){var a;let o=t.form&&hp(t.state,t.form),i=o&&e.name?o[a=e.name]||(o[a]=fp()):null;e._field={binding:t,validation:i,timer:null};let s=()=>{clearTimeout(e._field.timer),e._field.timer=null;let u=e._field.binding,p=e.type==="checkbox"?e.checked:e._value??e.value;if(!(e.type==="radio"&&!e.checked)){if((e.type==="number"||e.type==="range")&&(p=e.value===""?null:Number(e.value)),e.type==="date"&&(p=e.value?new Date(e.value+"T00:00:00"):null),i){i.setDirty();for(let y of Object.keys(i.errors))i.setValidity(y,!0)}u.set(p),Ra(e),u.change?.()}};e._field.commit=s;let r=u=>{let p=e._field.binding.options?.debounce||0,y=typeof p=="number"?p:p[u.type]??p.default??0;clearTimeout(e._field.timer),y?e._field.timer=setTimeout(s,y):s()};e.addEventListener(e.tagName==="SELECT"||["checkbox","radio","date"].includes(e.type)?"change":"input",r),e.addEventListener("blur",()=>{i&&(i.touched=!0),e._field.timer&&s()})},mounted:pp,updated(e,{value:t}){e._field.binding=t,pp(e)},beforeUnmount(e){clearTimeout(e._field.timer);let{binding:t,validation:o}=e._field,i=t.form&&t.state[t.form];i&&i[e.name]===o&&delete i[e.name]}};function vp(e,t){let o=e.target.closest("form");if(o?._formState&&(o._formState.submitted=!0),o?.querySelectorAll("input, select, textarea").forEach(i=>{i._field?.timer&&i._field.commit(),i._field&&Ra(i)}),o&&!o.checkValidity()){let i=o.querySelector("input:invalid, select:invalid, textarea:invalid");i?.scrollIntoView?.({block:"center"}),i?.focus(),o.reportValidity();return}return t()}var yp=Symbol("session"),LK=/^\/(w|api|github)(\/|$)/;function bp(e,t={}){let o=e?.split(".").reduce((i,s)=>i?.[s],lo);return o==null&&e?.startsWith("ERRORS.")&&(o=lo.ERRORS.unknown_error),String(o??e??"").replace(/{{\s*([^}]+?)\s*}}/g,(i,s)=>t[s]??"")}var UK={...Jr,translate:bp};function FK(e){if(e==null||e==="")return e;try{let t=new URL(e,window.location.href);return["http:","https:","mailto:","tel:","blob:"].includes(t.protocol)?e:void 0}catch{return}}function BK(e="#app",t={}){let o=!!document.querySelector('meta[name="review-consent-page"][content="1"]'),i=o&&window.location.pathname==="/review-link"?Oa(window):null,s=()=>{let h=i;return i=null,h};!t.history&&window.location.pathname==="/"&&/^#!\/r\/[^/?#]+/.test(window.location.hash)&&window.history.replaceState(window.history.state,"",window.location.hash.slice(2));let r=new Map,a=ap(t.fetch),u,p;function y(){let h=Tt(),w={url(N){return N===void 0?p.currentRoute.value.fullPath:(p.push(N),w)},replace(N){return p.replace(N)},path(){return p.currentRoute.value.path},search(){return p.currentRoute.value.query}},A=new Proxy({},{get(N,R){let v=p.currentRoute.value.params[R];return Array.isArray(v)?v.join("/"):v}});return{takeReviewHandoff:s,http:a,...h,location:w,params:A,window,promises:lp,html:{trustAsHtml:N=>N},translate:(N,R)=>Promise.resolve(bp(N,R)),quotaService:dp(a)}}function m(h){return{name:h.template,setup(){let w=Gr(At(yp),r);h.setup(w,y()),rp(h.template,w);let A=[];return()=>ji[h.template](w,A)}}}p=au({history:t.history||su(),routes:Ac.map(h=>h.redirect?h:{path:h.path,component:m(h),meta:{title:h.title,preserveExplorer:h.preserveExplorer}})});let b=Nd({setup(){u=Gr(null,r),u.fmt=UK,u.window=window,u.Math=Math,u.sanitize=N=>DOMPurify.sanitize(N??""),u.highlightRedactions=N=>(u.site_options,fc(N)),u.submitForm=vp,u.safeUrl=FK;let h=y();hc(u,h.http,h.location,h.timeout),Wn(yp,u),st(()=>u.title,N=>{document.title=N||"Anonymous GitHub"});let w=[],A=N=>{let R=N.target.closest?.("a[href]");if(N.defaultPrevented||N.button!==0||N.metaKey||N.ctrlKey||N.shiftKey||N.altKey||!R||R.hasAttribute("download")||R.target&&R.target!=="_self"||R.dataset.toggle||R.getAttribute("href").startsWith("#"))return;let C=new URL(R.href,window.location.href);o||/^\/review-link\/?$/i.test(C.pathname)||C.origin!==window.location.origin||LK.test(C.pathname)||(N.preventDefault(),p.push(C.pathname+C.search+C.hash),$("#navbarSupportedContent.show").collapse("hide"))};return document.addEventListener("click",A),Kn(()=>document.removeEventListener("click",A)),()=>[ip(u,[]),o||/^\/(r|repository)\//.test(u.path||"")?null:Oe("header",{class:["app-header",{"is-contained":u.path==="/"||u.path==="/faq","is-signin":u.path==="/signin"}]},ji["partials/header.htm"](u,w)),Oe("main",{class:"app-view align-items-stretch w-100"},Oe(jr,null,{default:({Component:N,route:R})=>N?Oe(N,{key:R.meta.preserveExplorer?R.matched[0]?.path:R.path}):null})),Oe("div",{class:"position-fixed p-3",style:{zIndex:999999999,right:0,bottom:0}},u.toasts.map((N,R)=>Oe("div",{class:"toast show",role:"alert","aria-live":"assertive","aria-atomic":"true",key:R},[Oe("div",{class:"toast-header"},[Oe("strong",{class:"mr-auto"},N.title),Oe("button",{type:"button",class:"ml-2 mb-1 close","aria-label":"Close",onClick:()=>u.removeToast(N)},"\xD7")]),Oe("div",{class:"toast-body"},N.body)])))]}});for(let[h,w]of Object.entries(Nu))b.component(h,w);return b.component("Tree",cp),b.component("PartialView",{props:["name","state"],setup(h){let w=[];return()=>ji[h.name](h.state,w)}}),b.directive("field",gp),b.directive("form",mp),b.directive("code-editor",Ru),b.directive("paper-scrollspy",Du),b.use(p),p.beforeEach(async h=>{if(h.path==="/review-link"&&!o||o&&h.path!=="/review-link")return window.location.assign(h.fullPath),!1;u?.emit("routeLeave"),/^\/(r|repository|anonymize|pull-request-anonymize|gist-anonymize|pr|gist)(\/|$)/.test(h.path)&&await Ln("markdown"),/^\/(r|repository)\//.test(h.path)&&await Ln("org")}),p.afterEach(h=>{if(!u)return;u.title=h.meta.title,u.emit("routeChange",{title:h.meta.title}),u.emit("routeUpdate",{title:h.meta.title});let w=document.querySelector(".app-view");!h.meta.preserveExplorer&&w&&(w.scrollTop=0)}),b.mount(e),{app:b,router:p,state:u}}document.querySelector("#app")&&(window.anonymousApp=BK());})(); /*! Bundled license information: @vue/shared/dist/shared.esm-bundler.js: diff --git a/scripts/dev-mock.js b/scripts/dev-mock.js index ef76a78..7d15d02 100644 --- a/scripts/dev-mock.js +++ b/scripts/dev-mock.js @@ -71,6 +71,16 @@ const repositories = [ source: { fullName: "tdurieux/anonymous_github", branch: "main", commit: "f817a29a0000" }, options: opts({ update: true }), }, + { + // Removed link with a single view: shows the singular unit in the Removed tab. + repoId: "icse24-artifact-7B1D", + status: "removed", + anonymizeDate: ago(700), + lastView: ago(640), + pageView: 1, + source: { fullName: "tdurieux/icse24-artifact", branch: "main", commit: "9e1b44c20000" }, + options: opts(), + }, { repoId: "JarSift", status: "expired", @@ -189,7 +199,7 @@ const conferences = [ endDate: ahead(30), status: "ready", options: opts({ page: true }), - plan: { planID: "premium_conference", name: "Premium", pricePerRepository: 0.5 }, + plan: { planID: "conference", name: "Conference", pricePerRepository: 0 }, price: 12.5, nbRepositories: 2, repositories: repositories.slice(0, 4).map((r) => Object.assign({}, r, { addDate: ago(60) })), @@ -249,11 +259,12 @@ const history = Array.from({ length: 60 }, (_, i) => ({ })); // ANON=1 serves the signed-out experience (landing page, FAQ) instead; -// ADMIN=1 signs in as an administrator so /admin pages render. +// ADMIN=1 (or a `mock_admin=1` cookie, for one browser context only) signs in +// as an administrator so /admin pages render. app.get("/api/user", (req, res) => process.env.ANON ? res.status(401).json({ error: "not_connected" }) - : res.json({ username: "tdurieux", photo: "https://avatars.githubusercontent.com/u/5577568?v=4", isAdmin: !!process.env.ADMIN }) + : res.json({ username: "tdurieux", photo: "https://avatars.githubusercontent.com/u/5577568?v=4", isAdmin: !!process.env.ADMIN || /(?:^|;\s*)mock_admin=1/.test(req.headers.cookie || "") }) ); // Local connection fixtures keep the account screens usable without GitHub. app.get("/github/connections", (req, res) => res.json({ @@ -270,7 +281,23 @@ app.get("/api/user/default", (req, res) => res.json({ terms: ["Jane Smith", "MIT CSAIL"], options: { link: true, image: true, pdf: true, notebook: true, loc: true, page: false, update: false, mode: "GitHubStream", expirationMode: "remove" } }) ); app.post("/api/user/default", (req, res) => res.json({})); -app.get("/api/conferences/plans", (req, res) => res.json(plans)); +// Conference review packages (billing enabled), mirroring src/core/billing/config.ts. +// Served only with a `mock_billing=1` cookie so the other screens keep the +// billing-disabled experience. +const GiB = 1024 ** 3; +const conferenceTiers = [ + { id: "conference_workshop", name: "Workshop", repositories: 25, storage: 10 * GiB, amount: 14900 }, + { id: "conference", name: "Conference", repositories: 100, storage: 50 * GiB, amount: 49000 }, + { id: "conference_large", name: "Large conference", repositories: 400, storage: 200 * GiB, amount: 149000 }, +]; +const billingOn = (req) => /(?:^|;\s*)mock_billing=1/.test(req.headers.cookie || ""); +app.get("/api/conferences/plans", (req, res) => res.json(billingOn(req) + ? conferenceTiers.map((t) => ({ id: t.id, name: t.name, pricePerRepo: 0, storagePerRepo: t.storage, repositories: t.repositories, description: `
  • Up to ${t.repositories} repositories
  • Up to 180 days
  • Prepaid at checkout
  • ` })) + : plans)); +app.get("/api/billing/", (req, res) => billingOn(req) + ? res.json({ enabled: true, csrf: "local-preview-only", checkoutEnabled: true, freeExpirationMonths: 12, grants: [], purchases: [], repositories: [], portal: false, allowance: null, + plans: conferenceTiers.map((t) => ({ id: t.id, name: t.name, description: "", repositories: t.repositories, storage: t.storage, amount: t.amount, currency: "eur" })) }) + : res.status(404).json({ error: "not mocked: /api/billing/" })); app.get("/api/conferences/", (req, res) => res.json(conferences)); app.get("/api/conferences/:id", (req, res) => { const c = conferences.find((x) => x.conferenceID === req.params.id); @@ -329,6 +356,75 @@ app.get(`/api/repo/${EXPLORER_ID}/file/{*rest}`, (req, res) => { res.type("text/plain").send(explorerContent[file]); }); +// Viewer gallery: a second explorer fixture with one file of every kind the +// reviewer view renders (PDF, image, SVG, video, notebook, CSV, binary, empty +// file, empty folder, and a file over the size limit). Binaries live in +// scripts/fixtures/explorer-gallery; content types follow the real file route. +const GALLERY_ID = "replication-package-5E1A"; +const GALLERY_DIR = path.join(__dirname, "fixtures", "explorer-gallery"); +const galleryPng = fs.readFileSync(path.join(GALLERY_DIR, "figures", "accuracy.png")); +const galleryNotebook = JSON.stringify({ + nbformat: 4, nbformat_minor: 5, + metadata: { kernelspec: { name: "python3", display_name: "Python 3" }, language_info: { name: "python" } }, + cells: [ + { cell_type: "markdown", metadata: {}, source: ["# Results analysis\n", "\n", "Reproduces Table 2 and Figure 1 of the paper. Run the cells in order; the data is loaded from `results.csv`."] }, + { cell_type: "code", execution_count: 1, metadata: {}, outputs: [], source: ["import pandas as pd\n", "df = pd.read_csv(\"results.csv\")\n", "df.groupby(\"model\").accuracy.mean()"] }, + { cell_type: "code", execution_count: 2, metadata: {}, source: ["print(f\"{len(df)} runs by XXXX-1\")"], outputs: [{ output_type: "stream", name: "stdout", text: ["12 runs by XXXX-1\n"] }] }, + { cell_type: "code", execution_count: 3, metadata: {}, source: ["df.pivot_table(index=\"model\", values=[\"accuracy\", \"plausible\"]).round(1)"], outputs: [{ output_type: "execute_result", execution_count: 3, metadata: {}, data: { + "text/html": ["
    modelaccuracyplausible
    Baseline71.2412.0
    + Aug.74.0447.0
    Ours78.9503.0
    "], + "text/plain": [" accuracy plausible\nBaseline 71.2 412.0\nOurs 78.9 503.0"] } }] }, + { cell_type: "markdown", metadata: {}, source: ["## Figure 1\n", "\n", "Accuracy of each configuration on the held-out split."] }, + { cell_type: "code", execution_count: 4, metadata: {}, source: ["ax = df.groupby(\"model\").accuracy.mean().plot.bar()\n", "ax.figure.savefig(\"figures/accuracy.png\")"], outputs: [{ output_type: "display_data", metadata: {}, data: { "image/png": galleryPng.toString("base64"), "text/plain": ["
    "] } }] }, + ], +}, null, 1); +const galleryText = { + "README.md": "# Replication package\n\nArtifact for *Learning Robust Repair Strategies from Developer Histories*, prepared by XXXX-1.\n\n| File | What it shows |\n| --- | --- |\n| `paper.pdf` | The submitted paper |\n| `analysis.ipynb` | Notebook that rebuilds Table 2 and Figure 1 |\n| `figures/` | Figures as PNG and SVG |\n| `demo/` | A short screen recording of a full run |\n\n![Accuracy](figures/accuracy.png)\n", + "results.csv": "model,seed,accuracy,plausible\nBaseline,1,71.0,410\nBaseline,2,71.4,414\n+ Aug.,1,73.8,445\n+ Aug.,2,74.2,449\n+ Pretrain,1,76.0,470\n+ Pretrain,2,76.2,472\nOurs,1,78.7,501\nOurs,2,79.1,505\n", + "figures/pipeline.svg": 'Mine historiesPretrain on editsRank patches\n', + "analysis.ipynb": galleryNotebook, + "logs/.gitkeep": "", +}; +const galleryBinary = { "paper.pdf": "paper.pdf", "figures/accuracy.png": "figures/accuracy.png", "demo/demo.mp4": "demo/demo.mp4", "demo/demo.webm": "demo/demo.webm" }; +// Deterministic bytes standing in for a model checkpoint. +const galleryCheckpoint = Buffer.from(Array.from({ length: 4096 }, (_, i) => (i * 131 + 7) % 256)); +const gallerySize = (name) => + galleryBinary[name] ? fs.statSync(path.join(GALLERY_DIR, galleryBinary[name])).size + : name === "models/checkpoint.bin" ? galleryCheckpoint.length + : name === "data/train.parquet" ? 312 * 1024 * 1024 + : Buffer.byteLength(galleryText[name] || ""); +const galleryTree = { + "": ["data", "demo", "figures", "logs", "models", "outputs", "README.md", "analysis.ipynb", "paper.pdf", "results.csv"], + data: ["train.parquet"], + demo: ["demo.mp4", "demo.webm"], + figures: ["accuracy.png", "pipeline.svg"], + logs: [".gitkeep"], + models: ["checkpoint.bin"], + outputs: [], +}; +const galleryFiles = (dir) => (galleryTree[dir] || []).map((name, i) => { + const full = (dir ? dir + "/" : "") + name; + return full in galleryTree ? { name, path: dir } : { name, path: dir, size: gallerySize(full), sha: "g" + dir.length + i }; +}); +app.get(`/api/repo/${GALLERY_ID}/options`, (req, res) => + res.json({ url: null, download: true, lastUpdateDate: ago(5), anonymizedAt: ago(5), sourceCommitDate: ago(6), expirationDate: ahead(90), isAdmin: false, isOwner: false, hasWebsite: false, truncatedFolders: [], hasSubmodules: false }) +); +app.get(`/api/repo/${GALLERY_ID}/files/counts`, (req, res) => + res.json({ "": 13, data: 1, demo: 2, figures: 2, logs: 1, models: 1, outputs: 0 }) +); +app.get(`/api/repo/${GALLERY_ID}/files`, (req, res) => res.json(galleryFiles(req.query.path || ""))); +app.get(`/api/repo/${GALLERY_ID}/file/{*rest}`, (req, res) => { + const file = req.params.rest.join("/"); + if (req.query.download) res.attachment(path.basename(file)); + if (file === "data/train.parquet") return res.status(413).json({ error: "file_too_big" }); + if (file === "models/checkpoint.bin") return res.type("application/octet-stream").send(galleryCheckpoint); + if (galleryBinary[file]) return res.sendFile(path.join(GALLERY_DIR, galleryBinary[file])); + if (file in galleryText) { + const mime = require("mime-types").lookup(file); + return res.type(mime && !file.endsWith(".ts") ? mime : "text/plain").send(galleryText[file]); + } + res.status(404).json({ error: "file_not_found" }); +}); + app.get("/api/repo/:id", (req, res) => { const r = repositories.find((x) => x.repoId === req.params.id) || repositories[0]; res.json(r); @@ -448,6 +544,12 @@ const statusCounts = (rows, withStorage) => { const page = (req, rows, withStorage) => { const counts = statusCounts(rows, withStorage); const sort = { [req.query.sort || "_id"]: req.query.direction === "asc" ? 1 : -1 }; + // Status flags filter like src/server/routes/admin.ts; counts stay global. + const groups = { ready: ["ready"], error: ["error"], expired: ["expired", "expiring"], removed: ["removed", "removing"], preparing: ["preparing", "download"] }; + if (Object.keys(groups).some((k) => req.query[k] != null)) { + const allowed = Object.keys(groups).filter((k) => req.query[k] == "true").flatMap((k) => groups[k]); + if (allowed.length) rows = rows.filter((r) => allowed.includes(r.status)); + } const out = { query: {}, page: parseInt(req.query.page, 10) || 1, total: rows.length, sort, results: rows, statusCounts: counts }; if (withStorage) out.totalSize = counts.reduce((t, c) => t + (c.storage || 0), 0); return out; @@ -694,6 +796,40 @@ const adminTokens = [ const ok = (req, res) => res.json({ ok: true }); app.get("/api/admin/overview", (req, res) => res.json(overview)); app.get("/api/admin/performance", (req, res) => res.json(performanceFor(Number(req.query.minutes)))); +// Shape of GET /api/admin/cache (cacheMetricsReport + blob-cache stats()). +const CACHE_BUCKETS = [0.1, 1, 10, 100, 1000, 10000]; +const cacheRow = (name, traffic, count, bytes, msEach, bucket) => { + const row = { name, traffic, count, bytes, ms: msEach * count }; + for (let i = 0; i <= CACHE_BUCKETS.length; i++) row["b" + i] = i === bucket ? Math.ceil(count * 0.9) : i === bucket + 1 ? Math.floor(count * 0.1) : 0; + return row; +}; +const cacheFor = (minutes) => { + const k = ({ 15: 0.25, 60: 1, 1440: 18, 10080: 110 })[minutes] || 1; + const n = (v) => Math.max(1, Math.round(v * k)); + return { + available: true, windowMinutes: [15, 60, 1440, 10080].includes(minutes) ? minutes : 60, sampledAt: Date.now() - 6000, lastFlush: Date.now() - 6000, dropped: 0, + enabled: true, filesystemSupported: true, latencyBucketsMs: CACHE_BUCKETS, + source: { blobs: 18240, originalBytes: 61.2 * 1024 * MB, storedBytes: 19.4 * 1024 * MB, allocatedBytes: 21.7 * 1024 * MB, activeReaders: 14, decisions: 0, reservedBytes: 96 * MB, budgetBytes: 50 * 1024 * MB, maxObjectBytes: 32 * MB, oldestAccess: Date.now() - 21 * DAY }, + results: { blobs: 5210, originalBytes: 3.1 * 1024 * MB, storedBytes: 0.9 * 1024 * MB, allocatedBytes: 1.1 * 1024 * MB, activeReaders: 3, decisions: 40211, reservedBytes: 0, budgetBytes: 512 * MB, maxObjectBytes: 32 * MB, oldestAccess: Date.now() - 9 * DAY }, + rows: [ + cacheRow("compress", "file", n(210), n(210) * 48000, 7.8, 2), + cacheRow("decision_hit", "file", n(8120), n(8120) * 62000, 0, 0), + cacheRow("decision_miss", "file", n(640), n(640) * 54000, 0, 0), + cacheRow("decompress", "file", n(7930), n(7930) * 61000, 0.31, 1), + cacheRow("inspected_changed", "file", n(410), n(410) * 22000, 3.4, 2), + cacheRow("inspected_unchanged", "file", n(230), n(230) * 18000, 1.1, 2), + cacheRow("rewrite_changed", "file", n(410), n(410) * 22000, 47.9, 3), + cacheRow("source_hit", "file", n(7710), n(7710) * 64000, 0, 0), + cacheRow("source_miss", "file", n(1050), n(1050) * 71000, 0, 0), + cacheRow("source_hit", "website", n(1320), n(1320) * 12000, 0, 0), + cacheRow("source_miss", "website", n(88), n(88) * 15000, 0, 0), + cacheRow("source_hit", "zip", n(36), n(36) * 4.1 * MB, 0, 0), + cacheRow("source_bypass", "monitor", n(540), 0, 0, 0), + cacheRow("result_fill", "background", n(120), n(120) * 21000, 12.5, 2), + ], + }; +}; +app.get("/api/admin/cache", (req, res) => res.json(cacheFor(Number(req.query.minutes)))); app.get("/api/admin/stats", (req, res) => res.json({ statusBreakdown: overview.repos.statusBreakdown, totalStorage: overview.repos.totalStorage, recentErrors24h: overview.repos.recentErrors24h, totalUsers: overview.users.total, totalConferences: adminConferences.length, @@ -777,6 +913,12 @@ app.use((req, res, next) => { }); // index: false so "/" falls through to the placeholder-filled index.html below. app.use(express.static(PUBLIC_DIR, { etag: false, cacheControl: false, index: false })); +// Like src/server/index.ts: a README's relative image (/r//figures/x.png, +// requested without text/html) redirects to the file endpoint. +app.get("/r/:repoId/{*rest}", (req, res, next) => { + if ((req.headers.accept || "").includes("text/html")) return next(); + res.redirect(`/api/repo/${req.params.repoId}/file/${req.params.rest.join("/")}`); +}); app.get("/{*rest}", (req, res) => res.type("html").send(indexHtml())); app.listen(PORT, () => { diff --git a/scripts/fixtures/explorer-gallery/demo/demo.mp4 b/scripts/fixtures/explorer-gallery/demo/demo.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..252f3a81998631a3c9e54f9974a7bcd67e930a37 GIT binary patch literal 13443 zcmeHtgVN@bCiwz}3yq2@Zz;dQjH^fYt^fe1)ktiQ^PPVNSG zhJiAu8~nfP&JOBO0fv1yIeDDmuHJuP0DjJJ`@iGJ&sKMOfuJ%YBv@SPicLy*+ z=I3?;`tM>h!~e+W;NJE~9prEfddrRO8~Va7`~X5d&+kT0{~Pc1}Z>C zNWqf@0Wh4lmeL36E>BL75M;Ip@4p&V80=U`0;qftHw})IBdx1|ZGnuFf%QPX2;_t0 zgM=by_a9wQ56J^x%1uc2SNL}tnMBHOu)y&D%m1{;|EukDQ*S!3Pubn{jGMl3)35&O zM-XmM7W9`48Gw8YVlZR{3E6p&aT1W|{z@a`AfX3>Av;L7Kq3c;A0#S}C_o|wF+#u) zDM#wFfg}nNEl89gA@ylM0`+e2K^s`eL4q43Mv#y=d>~PSge(K7hx!T(nLtA3Me6+9 z9?}LqNJw2|9K=KW2!<>mA^Av~$ol+kAJjpU0n_s^hAzP|2#a-e@0oBN`waz zkRA@Z$qa%5fELWpK}4KaOq5rEA6ZK*2XA|@b$Hg@KrL`IsKr3PzOMeFywR~XtJa*w zJp-L(`nek*C@Ku)f!cX^+d~CJg`nO-{G$9&5xA`=3?>Q+)ObM!K5ac^RUToeypbZP z3AeWc1&SV?fv)xr2&f=GzYvcgzn}ofbV49JCHVOK{r!271GtAP%$?W6+mR1xh1Ut; z<_hX~cp{uV+%4eO#P9ks5yhygaQv92|V?5z;(@P=u2=m;(e7fVz5kxWJsil=VMMsE@0&9axyZ z8T?Rp?;9g_&TcRSvLMdx2zzf=7^npDZC!o6VS(0m9&Vm61emr1+X$S%o!vnQP|+KP z)N$~Jx!L=Gtz~QN83@Lm;nIR&90rGZBCBC*ZR-s4K^k%Pw!f*EzrC}g6T%jhd3f5p zTRVDqg3>=sPcW;CeISS}EhxhOSJWDuR;2~_p+0u@?)G-R2x(z{WHG&A$Ts!1_i+NV zd)rz6Q(dIo+fLff+X3nZ&Q|uwYJmx9Awgb#s28#_()_$&hw}170^fwN0BO-XAj1b? z?)8ZEY;mGj^fj6_A!_;s~kry2}Q}KmszSN8|Lr z4{V!clMriY%X_pWXO6eeSgTLr+j`NiUP!+`{T@ReP0_=UztHwNY?in>17Z^!kn|H<`Loh>oeiC`I!3tdFy<$ zO(Qeo!e(mBbXWZ>Yl14YW%OtJ)sl_B?^*~)zs;)8g~ivs$lvx3R>=}{eLKnheweQU zH|g!6KU)96L6REZ_q@$JHnh@=W7*rW%(j?m5FHMwK{PamE-tI;aNT!Pd}*G^zUP4q zam|G;WS@hLT7HzIagN*`BJr|Uzw+f6@uX@FOKcYLr)uN`a{xfNXk zmptnA>&-cLmb)VzMugVxo1ikOqr{9T^RHzN-Pv&-4CkG~Zg?IH^PolhEPRa3%kbg{ z5w%}(gX~kbEr$bjZo4?q*Ho7Az>JItdg$9$-^WzOF%fdy^t9?qk;W)zZ+ktt+f+Y& zao|G5iGD&RIr zKg~96y))2z@U$Q$v65IuY6)gxrD;2{>F*7ZSbc+`mVnyPsi5@+wQ)z2dtN!aR9?X! zSBh*<`}33$e(5bI$S424$*CwJfEVQj%Ou|Ie1H`t10me?Guw=3iLZDD_-Jjb-T)TXIUKarLM}Rzh zNFfZN5O#x$>jW|gAcc1K6~Z9P$%Ei@ik$nYW(??x<03eN= z^FYXl%Ea7U*O1PLByff*{)6xggoG?{tO5WI_8(3;5_7Q&oYzGc!L@_0eC`Vn)Aesm z5i@xN<=A!GHlFW2r*AlYi|L7E+7VyW6c}qB+$pATm3cI<)uCgVQPzT+7HK=y9lQ34 z3X;aO!xUr37^VGHn)+>B=8F{K-LHe|HsT-Gw4WFczkb}#t~hxAE5}_Hv)9_!TSGXp z@t5td(NWB-oYc&s(?+RAD4OBU4FP4%z@3@ashx;gICQ<{G1}O2cuV`yck(b75?tfQ z(lCWP7tDltw~9n)S~a`$6gkhU1tnkEH#XoWb1& zRgYKDcK77${AYY};FWtw*W_b2*!wSs&b0Fe+FnwR^R(a8s0GR7nRdm@+1IgliW2T- zHb&UAKzpQz6MAtC+PnHbH#wnBnNOqg*+k@$EX)P{#;*d>nY!EQx7t}WHcR*-w@=XG z_VChMSA0rDvFhJYn$An|iD|t1B1^9n#bQb3-YKFOme5vJp)ybpnz&C; zU%V!Y1UA*Pv2^~@wFb-loLTg56SHO#ua6D;QXMbxKbt1|K0Nm~jEmO}(30YLN*S8n z2a5~Wvb0o(@e2wX{oLkZ!;`4Pcr$L{zw-)9jlz6140Q#Y2j@gKIrF94ob0#jcea)vQ0%3U^Je8c+Ydq|mdyy#N!!NemXFsFcQ&Q2zZ zd3g15tmrW&eWo8~Fk%1cFcLRDy@r>}&yx1Z zKOwLT-8$7LXea)D`={qQu#Q2m+JAI(V-lRJJxUcDi^;8rWlKr~KRZOm z@7ip&3gIU1Xi8=t*=?aU#;j$uW0&dVK2WB=KOTuyKo$%>lP*yZ;NZHdUk2mMyOusNBOp5}X{Rhz0aWXcQr`FLqzJ2zG!3ge4SDuBh z%TDCDg-B-A0%4dw=wEmc?`fh9$YGsTetA%X<8}26<44hPA?)Y(b8G;>R1O@9ndJ)ymC3;Y z8>qSbYcj!DeOFm9N&HS6qWuJxBnO}%_an5B!VToS(DCv$xQ7E>8;0*b3$?xu2Y>^R z0Afht7C52me1Y$_nz6%Di_D)Y%8oO9D;O=kU)xfkhYtTw*zG~;`ac4MvzMgDdM{^xuDJ0 z1xP#vcVB_>dBXoTNJ?fut}G`&uD#v1`jol7Ym%%sP2z)})QaEP0`UipqQ~CL1YHqN zRg^6jR#lGz`L zR4FL6S6V95LFG(WKb@xzYk#Y>b10AL?xRRsH3E086)^(6S~iv-(PuRCKFcgL|@*`oFOD zbVM=p4UE04P;l(LQ(-}us)BHXJR!EP9$>=*r z{c`_twIruupaQ*HFdjTI{(BSwnW^%_tC#Ol?mhl~Taq2R&Dt!2F(9K!974R2{9wv258x};$ z*TpNVs${i5OD{Fld{|J<#%0oXO+7FA5}$lH$`Pi+Vk2+Qa5xPXb4-F|&=pyuy`ov- zm$zF9l#21}h{t@WxyIh^NPoAnd+_Q(*YZ#^_V+la5}%MZO@!{Yt`Tj-&y~F1HVgk- zMi$J`o#z?mYS9=+)=F+gaYYBw=_MN+Ww5W~;xqHepbK_c(J)Mj*>g;scFL_;bnP zjPfSs{-446HSQVV#)VT7Q+Wf$lNXAbe1y&YG&=9OMy4$!pHTTb)PF{oXDpRy5I?Uj zdCNB!=n}AOn1|4zy^lINh87-vsdGp`8Tq2W5tU28&t}bkg37D$C#$qoY%4+4b*`I4$3pqfnWc|`G3qI^=J!Qw%rdXy<>cKJg z7GcGdL+PPMC2+2zoU6l$Ptg`jON#h>`D%1GRA*EEp|d)c^nRNa0)LVrOB(Htsw&ra zB|bL_oYLow9pz5i5Q5^D`-J;j3yx>>yG;sFMkXo4=6(4e=C*?UsF&TmpVJqAi(qx~ z5s7_;=3Bj4jIb(i$qxK=|4CYm5``|_Df9S0zanWVbz=^aRVmF-BXZcsypVsY zau5>`B8k!(^Yq(zMB?1*_{XPi1grwXYoj7rf_Ja&>QncPih4tz)=^Zdl4p_ zFfs6HC+7E6d5FxjKv~mT5x!X^NRtN3<5cv~ZnY(2m@A>?mt^u%KW722D>c19e}Xqb z7I9}{(?geU%085j<#yYOZ ziP(%g;||sf4_|!a6U~R}$!*53!qhzs+9iuWNFMiV6VA@aq6d6C7~Ul`t$TD`L~(2~ z|7GqrT~LK75pE+tYA&~!#?Sa~Unb|9mzNUa7U~Cm{cEa1jM63M>JJuCaub?3Q@+MA zzH!7lyx5oQH9^Vx=jY|>kWwg0 z5PdU?TJY3EQ-tcW@UwSdfS^(696aAe4arZK(_$Z1m*Jr{yn=9B-QH) zY8_rHkqfGgzG}!&_XsNBO0k*VZVZ1WY&gy5utgJ}S~wsA z1x2KgqDEv%gc&hY_rE|k7lAV57LXWH)Ql_+i-%iJgBruY3vxx*5=SavKhBN5EgvsYE{u>U(=PmJ+`~8!BpwCbx zdGCb|HhaC&41HhpZJHmwxx@~=>lZ0)ldH2DnyD>RtUP#Bp>6`<)Fd(!;zoj0!VBNW z^R`$LQKg!lzv)7!A6aM8Gqj06+}0SW8=O>L{9@6|o}gWw&mUo_3ZH~}g^pmx$8-F+*T*c76aARD@ASuC6VCc|FIH1C)0wP$ zYz(z=)MeF^(+8i%OsFxdON(L7pniQKy2IQ1ka7JNUik0yyG54<&a8~@n#n&hBoNAa z`p_0TzF&vqN9N_)-Ook+^fd9{7SCLoM)YKJ(ztqZBY5c zQQ;onhVm1!@D~s4XrIcDzA;R>WhW<{a@B{@?IBOZUCEOO7V%u zDlB@F{t~|~ndBoie^oWkr3CEsWU)2q7sfBeX}2q@?a;X)Cng(1i`j1ekgQ7k@g{E4 z7a5~^LHg~=qB~8vt?$Ge@XJ=>8v>@&2qNk%R>>fUhUg#V0zVq!3UZ!2lHAFRn@8A{ zA4!U7yH?#5tGy-l-k^I)UCHX*vv)o+8FMo@X6cUuJgF79vd?gJ9^zBZDiXz@1nUZ3 z(kyC8;5jhWm%%ShRjMihT& zYQw}~cY!c}a!+cv%-TpK9NUS@(zmDh$>iMJpX+Y-`wn*Lt4-MmYyP_HsORXJl-X3G zr-~3?I)dyj;Z3M{y)T*sy1R;JlG6@Oy1Zk?y0@rK&YA?VJkfWNp%;z!3yI#)TG~Vf z%CH)7QrEa-(c){CK#jf_d!=>CGa70!sv74g4sH}klbl%U$;3SflG6MEBz9xDY@T3f z-$B$?8K1J_TD7e8E5@~@CB7lX{&~SCXsM{{JbFaJ%G%tWn6MqrG=IwSg@dgV@G#~Z zRly{U^WiYg?_GcY{HK^6qv-5##fDiHN$TX5l6Q8Nxw10>imSo*21vgrTf>k|kb7j^ zYoh^aSGAW(Ed@2r*34*qkC+Ug(6pr~I?}6*uO&p0?qwEFd#TvZe~0!%eyQ_VZ-Lxpffkmv@Qqh?WZX$`+$YQ9 z7}dx|gGH@$?2IEytPQvSHeRUI2Gv6;vGTU*T9VvF(#~qsJoTE5;Suh;<*4~hnx2SM z$vVG!9(L9z z;NQL9VNTeBODr~LJUdUY_s|@nlllqMdFp#jLHUd)Y>Fd=ithQn*~2g74n!N>&&kW< ztUo%OMGA_=9Lr|YWsTeBRDK=*SrGW#$VS(aJVA$iK^<$#Fy!umz%$=#0S`zlty_uw zkPq`DO3wwQxKM)uZ1~sPll5#oSz&)#OJ53Bl^Ju$YDXoN{_h9Nx_dF<1jV~ebJBy7 zCJl_|Z!I?9HV=phzp)?Im~8~@rDyerW{>rz^ViS>%f-ESci^GkiN5u!b=h_FVC>** zy@_bo>7#b@hIqwyd_gV46yS1i#w}`=D+zy3*e-PU`))WyWR@(?A09|@z`Rc(((AC| z@(2~ONx&bxFL3<2CA5gva`|N@vPpUyJ<@wSJ9H{RM^p&1fifxH=;)#jVZO%aiigbR zxCc<>ND4WX%BZ!h6%Fe%e)(eK{xi=5|} zGwYe6>Pmucjo^rScQ3%b1?&d0M!TvyX}RhsBlkNB4>#V(Kl!GR&wEhw;`y(<_|}g~ zLwa5IyJ2uG+$YVIT(4;fNAC(~rmJ?uOl4havIxbD9OG(Kw+Z$I9-kT!f$39sNC#)gzIHt7Q6?41mMv9TYM7!i=%$ zp=z6Ghc1c^3M)06RftZ9geP-62mT#@oG_w83Nb5qPvmcW*{XCNx9Po+S<3Cb_;56J z=lZ*Z@3i|WH0HFg5DOBDq*Ith@O$b!OB0g^iVnL(e$DyAdJP|p7#{0mp6P`y(K_$E zJ8On;DY?lqn|(-@#|u?CP)L_asxDJIZpN1%8q=M!J!$FXG^N4{t@Lad4z~Xed=~8Tg$#dICYUo_H){`YJwin$d^B19M9RKA4sbZu4Gss$k-iFgNTD=x$%6Ie z=h)w>P24okP3olp$T6ru1}T(9E@8073s8#8@7Kbj|E!j{Kv(A-#dURXmeBuu*1ND)&6n5|KlhJR(6kbB$9+9QmVz6D)+S2N9q3@zks*3I3Zp1ajG1rZ-N2&e%^k>C`J~K%Nj=`&igqV`uJBi$-%Ve?geRH zeF6<8u>5-w^3g2%Wlm?;*k`(F8Mqx~5`hKe{ltQ?qYp?;cQ#VYO`f$sfpt=@$YZTZ z;H=SA8BWjAFJwIN&BvfrogLo6#|S;+wBs9o7Oz-``a3j1dq0%ehgG$bJY7#|`AjPE zryLz>c10DsCE6&{sLeuiA#PsB{em1;4$JKD2r_AHd?zfAIfIx%0l*;>oKy2a#mE!WxJEF69u0Jw| zO_QdjZc)Vs=HlYeAmo2wdha~)70hCHjnxXVNckLiy)|-MFN>+VuCtDoW)N=JlE#0M z+jm&C_|vNO2h#+0f|mV{P(_zoZ@O3?_Z6nJs}_%rC+tad(eZZ>x7CRhSu6?{8{isqSPNrFL1F#$%%#xo~qSN>UrTRm-9%}QO z2UO^r*HL1n#S^qf-EkXKB>dRlKj_updCjY)+{X}6mpQVe#(PS;ScNwpm`~-o^O>P8 z+x6(6$xG^L^rfpMR+kOq!zIAeZ-_9_unTqWtCwWl5_CJ&hoz*PuR83aX~h@gdT zj_j$XI^Ine8f|c9pJ+dZ%|2EOh^8W65b3 zx+dlp)egP=cq<~f$V8~M7|zN9=idY9h(HC< zzxqE8&44c4GKiklCU#2dGwBaUZG@q`0r&G#Mmu^IF_E{<$o}#5q97c_n%J-LyGZIm zKFMFcU6ktk+>8)h(iv3b^&jxy@5ZGIj6YcgC_OAB4>;EvRiNQC0TAxFw_jJeXG}y|iH>nL+XrC!D4p2dD_F9p4&Gg^e%qn3e z?#2Hneo@~W9O#qV}~U;TV*$wZAZjUMi?X zN(VvM0wysgg>`9o*V@^1Lty(T{rm1QcTVE! zfk`JZm{{Ea_3vm*Ju6rnFVi@C@XwA~%8N$9T8wM6+6QG5%leyoKMMXlFofwl5hTdy64N*K8F zM|@3-Du>tjUVIRGgR836ElaE0beq@HL6OgWfwc9w=b+3Z+}z4iG{B{^CVK`0>xYU? zcZ&hrcs}LbzOq!Jdo^Z-3GTSsx|<&X-sv&Uo(fON{IM6?DFyjfhWe07|1Zu{y&+g4 zk3POnn2YcqJwosLrb@;;dU3x$s`etu!nXL3V0ltJ%%QfS2L5`gTfZJBEn;uCj-$l@ zy_mp^W3j0JL2jlWbWq}b1aqq2=Fn>T+nwo@M3hP~dL^ssz0Dt#cfPaR@W3Y3_!p*T z%+5u<5+Wu>`6k2GPa-}SnBDah%1|{P$aP=0+1YI_xQj2B8NE*f1FJ-0sdb;2Wo%)!20LuVi+1D42fNQbkep`UkGyc4V~Yf;5f!Q1G{B zSLInl?tVd0JkI$DM_3@F#PLD-hzfdGhX1Kut)0x19=lxje#p7Lv$K=HZ~EhdP@g)w zjjF361LydwmS^|A+DMW1Rkk^>I(2{}t{L$ij()^#ywzYloa}bRc)kLW`Qb6v{oKqb z(?caJ9=XNDBj)xMIOJ7v87`{g?Eqhyhzk$I!AD*3x_EpK1H~S%SFd^vy(gU@nSy0G z+O-+D_%-E?4cEItV|SRPBI^?r+4HQBZA#a3FneI1zRah1AuNZ)0u+85a0`S+t z;g0bi4ElKt)J1LQ^}M0_iYMtU#~!5p9~^2XB#;5(=2QH+CkASM3e=KEub zn*XltPQ(gOro_tAkEk_PAH?~=@%f;s#zK;XRIgrbOS#PIUE9}hM>P^PM!rrs`^UVj z4~}>SvwvoP=xv#B)`(DElMMuRlk; zYt-Xdvz@qbq>?UhC=)y@q{cGIUUrQWzF%nbocp$QgYCi2rqER0gvwR>m;p81 zV^xg7O4a%s-!HtOj(e=b{N;ty%)W2{bIu;^$aaeNvU!r~cHAmK?EE61wmJ1y!;>!N z1qAOC;p2$*giUnxJRuXdl$8rEO6XkO`p2+pwSjA)t=~f$--op}u)R2z_M)t*qX|(K z#KWglKHJdt&G1-Vbx+NB-Dy?7qUn=doRn-P9zQi^XR+(884_-_=9TIR$Oyp8T&Q67 z&Bkp$DeCOg=bQ`RpHW~#r+s4m5$i33RPzIrO*+B!-O7m6&hqULrf3$)hRNSDRu(@c zPziJD3}@fWkMoYElLLH1<&of-@Efs%$_-tL@E~t1OhImq9)R152am)xDyJ%~^t+Tt zWC4_iR^(!gk`vK^sUKoI`s0p1!$kiZD!-7GDZ|BKjjvWq;Re4~(HAyFwNHT2KrO*e z0sOoOw^(em+seT+N5R@Jo%;ruI9_Fw)W+f0w-4|0+2Ebud9F}fAQch*A~u*os@1oN zZ52-VdLTQGo$dC7#SDuEYMNl98O{z7mS97^SC3tq_IaHKYLM@0qjw$ZZMY}7)xmdW zlQXn40-TPAs-?yvR`UG>=$=y6`6X@KtJIk#59+l(tS#$ zr-c%Tysk#0IwfVA=F@iUcw0!_RbhTdb}J(C>o+xWzg88)*O>w(0Zc~PGHUdf+a?hh zGs#6Z`@G!^m%R$68#c>Q8c?xPqlW^F^y2RG3A{P&5o~e2!YI#-HV#8`a7GvbuT`$Q z>{WhJoY>#3F}ze1sg0`^xXCvI`?7}*z59+xKFbg8cl+vYJTjSixt>T6$p6)#jZ2d- z%&UKU>YXM*)DtHDTZ>0{FH@Y3$7h~9j;@og_pr{-G&{8Wr@qu=b~Qpf&{DYcbC4lC zo2LbLf&2m0ym|{52^jYzeMq$;pel@Sj8$(Jh0Ufuv}A(q&Pn&srpq8 zDwoweoO$fNWc;vLNvzTiPc#}9Be{AfckAZs_jjfF%r4iOroUVdP@rq-p>r1Q z3CL@(Q0bo4PCx01W%}|GJdREwS)XsYJYkCuCi`OlNk3*!nx&Z~k)%OFT7fR2p2(Ks z9ZD~cXKB5PPS}gPXnc)a=xcgYiIf2|`uhod;o!C!xgh2E&rtv){C!7Iy$yymWN`Yt zx{Fvxf$yWxhAmtrvh_g@mWBk2AyFtK5iPDC#7e*n3OZ07&~ literal 0 HcmV?d00001 diff --git a/scripts/fixtures/explorer-gallery/demo/demo.webm b/scripts/fixtures/explorer-gallery/demo/demo.webm new file mode 100644 index 0000000000000000000000000000000000000000..715657dd46de4fe30cf3471ea78f5ce46f6aa79a GIT binary patch literal 9325 zcmcI~bySpH*Z$DmCEXw((g=bQLrXVGw=~kt&@Cl`bcb|ENJ%$HNQWTJ(9HlJJo5VT zt=}WxU%y#%&st|)``TyU_nfo$o^uV6=zM0XZ~zEO_~ho=2f+#-fDna!{G5#RErkO? z(8B&8=toN4CQyLe7tISSnMC_KnXjQrpZ)M8^Np1XLFvCo_{zoRH=_xeuVFVBwsNb9 zQlSqN)9)dP($^c%hlYOZw;zDUKkoj2eB4G=&NyD?iy6u03I6yHTBIu3%eYY&R{`Or3b3YU}w0#H>Y`8rq`2KcM$sLJ#D zf}p6EeEr~#egYQmDA=Vw(B5@EP^OVDzzY}+h-t{VrO?}L2uCPZPIl&AQH_C z6qNZhUQkImH6$y-GWqp48e)g30KQ91)9QegS``Ic8kO|ZQ0RY}UlD@(K`dxfS z5*`|oM;(}eQZMRXb3cz2n?6e1C^#00|+g+q9XEk`+#_0j+Mj+s7k9 zrwMnlY<~!kMbU7EH}<=D))le>=wkj#KEP!?d4?q!?V&zHp7Ya`hZc4MC6$WQhRsY` zOKY$;Icf=+)QBSHNjQq(YZ*MltM)eMZ?J=bM#4tcz|tN1uuxyNtrPO=IW;n-Xk4Ih ziaS}9oHXmHa4*$+i}3p8=?ur#6|QhULBGzz~MP`?X=oxx49p9YT#m7NLvh}GUIpY8iH^cwUjys61y zja}bk8NYn?X}OwyNcY*iU!JLwC0D z*{3_IvcnPxdS+;~qP9Rm45I3>rB|9#-?#&(U%g;P!J}vsbf&4sMJ9d?L)W7j%{qx6 z<zPEXsrF{ecUWm4&@)Qu$a`X2`cUDG{j**T}7gkhfI> zc-1B7*9ALbA%RADK^2GBT{3hGUsKwO;QY`4KJw<0(X-vWv~%hbQ7}XBB}qyXC4H&3 zZgG+u`a3q7AaFqx96R?8N47Sq{H|8rUV{P`Ew7XZ^aplHw3Ps@adeoI}H$kdya z^=B@vyBVrz^_T@MiW;KRi(N!8tu6}nJN%-ly-ac*HP4G#N8-0(H;0}tjA$7=37;kO zQ;)(MG*VY28=X`u+k>iJ{;+W=R{7!_(yCYaSOI7%i||!droDHGNvbIxh7}g_)7B{O zc4vHi9~Ppxv4cCu@J0A+4ZazWnE?VA0s;Vn(Mc4lAOMUv{ddoZN4HxE0IM!|xNv)A zrhoulzilv8KmaIjivI_PdUA)~`1n^m@(x#~{CE8DVLr6_!}CMeKg@@rxWg5`{pf7^Yy8N_bu+w^PU=AE>nNVVz67cI}*uRALVrcyryx%RCZ8lk7gE0cK~*Uc8+sKc}>lOarGg_m$u?V+~2&gA5{e?IvS<3o<&K&? z%9!-ohnxc6U-pYyT6S&m%UZx!^Uq_vDUR@R;8A%#-NV$bS2 zVxPgCk?^*Dbj_Q5Z~3#CXh=tjmq2fzUHUw1uh8COeycXaXg0eeP=FW{&PXnh z5=rwl&SCbr2~2-C%JEf}C5?fRhVU5cXP>^rH9Y2`Pj5^jGFp#^dN31p0AdWP`^v#% zGFwkV1eSG6UbH;&Fi|iByYFL_ss3z|&!!gtazd+aaCAYHAKEm>E8*vQRsgMwU9=ae zr&izgOU~<&gZK(72QExlzN`YQ%FcPb=DK6e&Pn35WR>#shaCp2 z=k-RiT>!1iZofvZYMe}dXs5QUj*r6CyH*L|W{+1BF>Ny6ww_R>>ErX+)PmA(vLLMV z?<~Q2Kg(%Z1w6XFZt>FJIN*MkyNAQ!-r;}Y!#UsK_p|JM{>;OCc)>gTewMq(htGPL zkAV2_{0J5g@kLHS2tzjpH(Ap3CIAF)n@o=ZEU{(#`oUckMcvz!n4+~m`OP{~o4qLg z3DgSKAc^zU9*vBBfC?amp#%F0(4Ok>ETmYODb>mrJhPb!R(@5I%`Q2 zMWqk>M%7X3Oopqo2%J}UI+cHn)vsHV_`p2h-E zGS5=2bidZ8!@C#D_^isb%Z!$@F(lKJNTu^cxk@_+x>3Dm*#w^#FJRgc|2V`V zq0H%m{0z_Qw?DAam|K1A(7#RZ9_XYI0^64(Txh@;4ZSO;>4AsGwTQRaWnGw^Qoo=Q z>xUhhvYmjy&bXoE|E%x0Oelhjv6!-&)7>0A&55huojR;0i?lqN7moC_uf1G<1U!^? z79djc1Hv2ZfCWcvc2bW3GeC_0$tM*J&ZJ|zgYn{o)#`JVc97g|sn1&N`SFEfX(bH8 zX+|oDArSoLu^Q{jvDBF|+yy-m+fx4XNndmzQv_g@&S6&V>A~S#6ZA|~#vxTzs2ltb zE5v8=MAvz8Cq8zl9R^!5ZAd-56%#5Z#j~0jG5r05@l$M{@m|Ly5AlYG(QL*X`QaHv z$EZ_-C*tOT>!_}oFDLl+QUjs39J*CjpEmAyr|sf$>T#Ed8$0Q|Sdi(EAqP-K+RH^W z>UxtTRy+ndYJa}4(rT$#JD|%(HjjiDvp4w(Kyyzi(pSQMb+fk{p>HVDQLNbfBq;E5 z77<4T5{X3>;@&d>Kz`B0Db(penF*|vRFIe_vryKCw0mn^h8U~lZJ3IRbI!ri7Q;?3 zg@@ZVl@wQXBs`uI5?#^H{9U>G5CQ6=Cic|p6~NIyi< z^Rwvi@-a(L1x}SQgyTAg};qRgu-GGg6n}x#F>^AF?yfXufnrzgd zJ=X4v4UgnEXZ+SD6btlk>!&uCuJY8n^el|=EbVu-)Z2@PDnvy-21a0 z{H9n>U|#8{$3z#jk|>r-FJ4N%#}WOu&cIq>ZeC-t_vuX&odQDSd?+<$fDq&VmRcKS z4bzw@y>ER$9`cb1Lejm%@1=Jntqi1JQ)!+zh3t0?LTY=+NeT%0@!taZ%|{OVKlr-$>L0qzUW>XD9ye2c{rrRq{mPC1cGg@i>lI8+QzaK;-ItYOrm&gp_=O{;U zb0JegU_SHQh}Mj5|F`b1FgWt^JB2jniwc;Az(}*eL7oM$f>7yHy1nEKd!=6*H#^7l zS?Bqxtb*+FJoH>TLYL(Xc1-ZEhJs!-LilHV*tjI|zGFbQeAkdk7@9+-7b)}Rf+dUM zPBB*rosr5nZ8i%`#6lGg;DmGd$m5$RVUctJikL$3qx^Id+VxZ;ZE>SDX7?zsb zHx0CDa#mv1pf4hhcI zMn^Qx`8rWzqx%$>JEfm!Q~bQY=h*CwZ%3O=z$+OnEo5+R3bS$gL!LqU^&0k59FySn zoKQ@muP;$QwJp=}7B>e?liBc?MRO|()nb_L(Q($=88AQExDL>ZY&ODfDtokRN8Pi5 zy>~@Vb{eOO8%FPKmEGI4F0-m>i?feR>WRKD&)Y&P-6l%*jZG1R>RURUUA}P_a!ydd$-WvJ z`FbT0(*QkF#Hf&-Y^CXCwsWA*950kl>L_Z!D8yLLlTo#AXC17&_pEchV0$W(gb<)H5BH-2pqTCE7Zca14x^+; z%B`?1Z+^)1H1BtgZ<<>INhidJGE5@wnUJ%;Zh6TVUCq~^g^Tn&_B#aVVE*`9UvGlA zFwP+jf-|A(j`F&KyI8}*)6gsFUq!s$RJlb^?99)m&U|1*y4JJ18-*_jFKC6hO)pfn z6Zg*FxrO=BRU3VKO+dG+>_q#>sgN7*fD+kn(y5iCU~}q#=wJn=MjQSu%@A}}>s5j^ z*7WekTv2J418L!rUAd9a#xXstgszPTVuzdI%uDEV&aKWNM*AMBakeNgJh-0c;v7>Z z(bv2DXb=-VHTGgv^H!!=%ZSJ_dAaPtk({?0?n_nggf5oQA)Oa_p8ZpAFM0F=`X+Qe zAU3%DVSU?nM@!{UtkSgPzWbvL)p2DWjynC!r`hG@w8?~?HMYlFK0o#jll%&$jKIc2 zP>w9T%ZTvZ!MDdns3gCO0RO-K(8&RzdjG~H?o~1bt#_8QT#NBqPGin)M1ucRRn%V( z6_XSYn#3Lcmmf@Mg%9)5G4Jrd6f<=D|ARmA@cbD35AlV|Kp1H^1~yutOlgj`ig2bhe)(1?=GG{agd*(3f-1utU_WgY5s%8zIX*^^Xe_RYU;YJV%2Tl{ zhU2Ieu1k&mq}Y5U7mZHj7MDJ2Hz@-*xpsmk0ZRdfM78 zbu^X`kCAouEo<6(sn3a8>I+{SowfIBULO2f8WnEJ_$7>Nsa=AFw=PG7a=<(NmQfCf z>1L?pzWFGd2X8YVUEGUg%@Nc)n19&%X2W4fvBft#n}%B;!ncW%zGR0iRy4Dx>(vm6 z2S>}LVQ=}U2W3KQt@TkHHFvxJ>D4fKpYa~0ZH#!~q=UT4SQMHY;rM0mkC7%z_pVv; z0|%2tc9N}5$Zp0Kv4o!k9(G4Bp$^uz${~`mb3XOwM&awylsJn8na+cDv^uY15jwCB zlPG?hxI*d@DMOGn;XW%AUm%YYV7-2htv&R~CVh z5%JX{_ZOSKw+jplAE?e+h!0s=v|n2wwtZ7a7NJXS7MM9Qk8ovm2*RNO+G%UXbkn!C zsSUw@2p(Z1TXJ?&7swK&xAS7gGa^{wwivIoclGJ%fXE))>-me&SH0{yLyCpFe&DO%U6`W4Ndd_k~V=Af7f7Q!alU7 zQ$U!e5AO-gzK8f3AS~89{NA2K)N*QVSwz_a|MKv<^_$AGQ*Fdw`54!@V5 zVDBBI;Ltq82fBlBf^H1%4nkl6Hns~>thcSLj=_}qNEv#wUatGtiCYyZh$|E*o2cW? zq?JvryYr^d4-wDs(P_|yVBDvcTIVLCN}oec5N+JKpKeg(m+76{FX6@NPi4X6TRxI$ z6k0xEwsKFwq<~fh43$0BR7)#fs!wO(c*{IG)SAST~%_CrW(y+PuHf$~X(^C%a zf0Fz5W34GL#u8aqZvb}lyQ+6MvpYKt4(3x)CGL(MwcH`47wx*u!5h~6cbOQ5d;su*3bh525QasoZ zx%F_`=gInQsoH}u$&IYu!(gB`Tj#i*eZ7y8dlWp{j@9%+U6}z%kb^Vy0_}@bD2Yh{ zzUCiGouNyp)Q!NORJLOO!^H3rLLhREy&tU8(wTq$U>)^h#E)H#4PWgx?g`zeUWx%E66YmF=dt`D+qzR{B%v7#9ZuICAq;|hde z4dc1Xn!(2w9&DXWEqa31!+no2L38pS(iqcX9Rcyo!uqiVuXR=nQ-aSGJubm3eg%aJ zglKhFHb+*(kH=FJsZ3}R}5xKRxy)twEXkYhFY|#v+ z)UH#)X%0aIqicYF4F4;D{kx+S(0>Fl!2M3-&qOzPT;!1dJ!htBOD%GHiX1Tre;`aJVCrr1PB+ql`;C}ryO04s+aR_~? zkGKa+f8*(NokXt58~MGUuiEnC{`Ntfd<*AuFC?Dnv)M9XRHA;kL_;IF1i!M}v{=$X zDszkUx9jVnyB1%GpDVKW!0J@04g|+E_Rj#vW@1&{+DYdHlA)#5T_R6)V?FT>yIsrP zbLq#cEn5|RF2{pqZZmh2L`U6gT)@2C5D0~bo|RdhM$;e}HECkwSNFgMQD(P<_LiDO zV$@~Pv_n*>%=06hYiRiyhhmAGvj<%x!%jnckN7RGF23s*(UT5^vYsso_Umvgypl4Q zm0`x|TYuZK2nl*xTT`|frR(M4R8cs5t%wQVnLZ7LI2++0-@{Dnf_4G_TpaExGA<$5 zM9-beH#%p6@P&S}m`b3>bLCSJz8=M1MpWnOqRmW!^wK1Gqff~tnicX0?5bD;bRBss zC;{phoktZu{_bH;KX?hwvZRrBO_{R;wWibK)81$=8c)j8GQSwv?EbSv{?RD~qyO?1 z|B*2MxX4g17VY^!4eo+q{s&Df_vQcq literal 0 HcmV?d00001 diff --git a/scripts/fixtures/explorer-gallery/figures/accuracy.png b/scripts/fixtures/explorer-gallery/figures/accuracy.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8c02ecb580bbb395fe8607be14727335cc8554 GIT binary patch literal 11798 zcmeI2XH=8xyXK<^Y(ZcvAktMtnt)30B2uLH(4!*Kdk+_x6wT;L0Cit&$MPpOD9ogH1LL;;Lt5YsT+V^vy zu*2A0_iU4vz^06+5!9?b?EVMLq7Det8mB_d^!xYk_q{mS-`|JhF<%@f_wFQ-L&|k_ z&v#@iL_B-;Y?#x`cPWufz}VQB0p`DBU*7a0GUki@C`RU!6I#-}%%DhjY1(gVbEvR? zT>95og=HMOTp;m;Ku$&$xHoP+YUZwya9bmshCL%WdF{^IgoL3|(;6vk?YFvO4YbQQ zs?N?%cK_{=bHVd@tE92Ul`qz=v(eF2xv%u0ilNNcaQIOey9|7ojw|Xa|9vn0QWJx7 z^LvxdatkCU$GHB?pi|%86cOSnp@oZ+lZr+Bll^E}6oa6lqwVqjPTzf6E=_fHb$@K# z%9K5RYX(;1+=Tz|F7jOPv)oluYU{k#qW+-cosNT`ytdlIH&^*hgq^00XeGrwm)C#F zzUaA@9xzf4YXJ`<*u0;kdOn3Xtf#dWJ%kopEI%$cu2dSTsHiwB^7EOW0gn(PHtjQ@ z$l$p#wv(S^(bd-{u;>Z~7)g&VtadxWkJ|SgAK)k(a~vnD(Y`C`juTY_Lk$>Y@$QAR z!j(YktrlW4@&rCL-Q>45URl_Rfzx}VJ(F(l)>n}dj<0a4HvaD7gPOU9QS9p#sJr%$ z?s|@z7jk~-9fbv<)57E8;>Z|wj}4?ciM4BMYaB|^zv`)>dwF{s+JH%1(EOwASg@ z4vO_%_P3w9!wdZmFl%4x*(Qt~7TRO5@zgTdN#~Z*H>pnbYt@rZe4pfHrf~go<>4b_ z#4X~fRv5c=DD7?aUss0-#pef*2E}Rub&HwAu+=;iC+aw{izzO*^9~CSuOHQYU^|Q$z@i&kj(@9>Kz=A)ret9{ zKZ>ZUkIazqL;k$yJT2`VkWt}iNGZWZ*9PycvKYkP zHh5LrimEE%r7NX~QywCTZK&kZ$$XR`uK_Zzu<&76{XP5$cIA`j`p9^tH4T$6!U-6{Bo+ZVN2P?CAqM|^KvJnEvNa{^G`~kg`)_TpqaVIW_Tm2H_ z{Y8&B({c+LPaSwTC4<1QkOwc0sl~fqMl9w}9z}DnaVuWSRjdqQDtB6iN7*32I)sFr z8bK6*H8*ND806`E=GngGDNtseqpUw$dxUL3m%FOC?CyUG*swt$~MGmt(@|6Z+dt0!| z>;ZYEO&2yfHS+TE?ihWV)tB1u5hT7(L&n`tgYVqdNTJ(bi)EGaD0Z~dL%MSdVlJlA zN<1i)up8#q;CA88EIPn~72fjuft@Q_)L~4!CNh=xiNkbb9kkqH0tKI&2$`_eltz8* z9?VyZSy!bdU?AG+bomq!H(%D1YlyF;j9U1WO5AI^*>ZYVEaA${V9<@ajLg&~ZL4dR zj|fB?mKf>aJX4AxuI98Nnb{*48Yfe4u2jK#M{e2$j7HmXKn4?0P$`S(^{pz97Bwf!`E!k&kn6 zdHMFOTjD~LzlL1)KH{d*Iy?`5Zcf%H*Nf*~LVl$)s%e$&oG~b#IccFC7Pj_32zrSt zacaVkEcd1sw`Ub55lNBr^XlT?wBQF57nikM!y~&A`K-+<6l}FnbYQpe9T$Df8xRPi z(Xek-IWUS_idIkLH#Mvwr(qL@Xgi#Zhw2bg>l!p@Eu+X?mGwJHP2yY|W6RHe);rX! zl6gai534g167-(LDmhLKN$MC1B20dO-cT;9PC{`|6ZCr_5<||^2Yvixra7SApkoUg zN+~VF&dyF?vA&hxdVcx)#lvxT=Z+>4cpq{C{+tA=X(hMnt{uEz8hZ|ETPc^2yb_-6d03EK(! zbecQ%tcDmA8)}lTdFU7VnXQzu@kvP?z2VCERT?g;IsMtat;u%i_DWeFJe~KYq$iF% zy+X|py3+W3leUS1tHySvwqaUG7mAU7Tw2U;GxoE#{Wis&I#Q{qpRu^ygmSujWjUjrLi7(3H-|5Dv2=gnAEG=4Js2%#pz*_2d?n|q464%i zpwRz%p?3DAxeUGRhop($^?wXdy51~uQ-Z_mZ>QZ)t&G%Ta;1QtE&gPR2z>8K!f@I^PeK4X1PKR zo^nj@2Yl=F^hdLzZx1Vow-~#qhJ=J**s7x2V(J~!1?*!FAC|h+cX%3ZOgA05_sbOG z9PoDNdQU0eZj*qGu?koKJ~6|>$mpX*uA2hr5hCy2rKH&P#ky0MGUP<`1u-h0gHyxb zC2(o63ERBY>_`%XowhSOU%Ga8cCnaNQ&~_upl%TLD_a3SIPH(qkiqfj6^P4!*PtiG z?@rJ&eb@QUvxxcm(4tv4JyMb>Tw5gHcBsJB)s?H|dFf=G`^qti0X)+KGyJ$z2uL$W zZ5<^~Ix4$b25swd^E|}jqJF6pg=anaJ0=mkRsQ(2v=Zy}jG_m*H63}66X;|;prJgG z$Tx4^z(-MK=97#J;Fg81=Fcr5S!3My>8T6FP;-;%qS5PZt-pS0vo=G^%!Y3{N)j*^cEzKhQlTfL+|BBlvQ0qUR9g45 z$ptpT1?d%so08?`!Hzi86aL*p8m0UE{4G- zEysIndLlLhM-MgAd6LW~zSh(s!rU1PQoVj3ZMBr2e>0($s%tt0X5O+r+EwsZbAX=#>#h-n0-VGquZIrf zL367&RZOhRnasUkr*@!0CDaK!qX^#}P&Oc02h*ym8i|zZQ@5rslqHA!c=X0yBsgYB zr>3yd6rXY+C=;^6LmkT|W3nWGPH~sFRN_svePYx3j?+3QET%nr;)^}B&dn<9V`ZHi zBczd}Ln_LHsT60PPeuPig?V}MyscoQgrJ&&%@k&_GmYJ_!HT;<`3Yks3rh5)J2c5Zp<{#3zPJK)* zET&)jRt6qEO)ucEQ})^#;Jbd;r3a_Q$$49xauvIpbejnRna!8JEIv|VQDKE^4+&-8 zArLZu@7ZVaAMQ>#i4_zU()jLoequWQst$oPW^#q=>+Wq785esM>E`?U`{!6Ofv<^gcDUZ7?NqJ%? zN__c%BWirlbzV9BXT3<9Jr%R?gCP_$!h8f1+1S|l>C-l%9{=oUstz-`BvhbLWX{EV zE6?o)^TFo!Iq*$szFG%TcLAUIxS9YQYQ^5L{CKpL{N(t!unAXPUcN;{``e$Awzo(l zjiZ1*8R*T^1}Z9 z%9#(ObNBxu0fBsqZ3Wj#I9$M7um8aUfwW4VC;$JK|NWT2EMfoA3ct(mII~Nbzf#i? zVOTnyYwfTpsY3>V`0!}y|7)E~ur_@A?=0YK%`^Vqrd5tR-5bx*62YNs#h74&yJ1j^ zt-uAj+bt3|#JD=ZLnuRWHc7D?=fI8ml_(>YM6yX!~5> z!^I`JwB^_V0ue92a^=d+Am`~u-;@@YxwdulL;QNu$B#x&N`dM1+?@CVYAo;*;{N-e zz83l1bP=}k*;&?D7ZMT@uKw(L5=SLqSLN)is*>N;#ol+`;9+ro0agS8NrM7uzQa`l zge~wE{HE1Yz?>`4$Os1>`;bO;3%2+JQ*Z#)QDVIJ?0c>2f-LbE7abi9v@>&BBv;uS zg4Vc3$*1&bD49*Y3I0>JiFw7+N{p;5(a%N>)>6{b(YXa;oScxbX>nbMZ%FQX)^^OsmvE_s(##N`FjAPd}KE@MQ#4W1@~j_Im4#Pt-5F z%gbilk7kXC3-wp|P5B&c>J8Sbx6}ih+((^ki;mpf-TeKDxC>re6XOMr5#asGEbc-e z*1}%L%*2f#Z=X_|6>OG#sHJnA0`1qYUxE9lDm5HxTAV4v9(IjEhlGeiEJ6Y8CGR-Z z$PzDJ4xPb$7h(B##h}h@sW>7`&{!JgK2mC&n3za!Al43nxSSLB+86^Ez;AbTZVFvx zI|P8r-ck~*y`w|!U@-wSv;Iy(YGQnR{I>|2t&!46;C@-@=oS|i^r{_o$-&PeM{`Seo+T1F-p3z@a&h zmYLT~xv80%nE}lU8a6#Mv%L#1SOlP`-2lkvK(GxgO9fqBU7)^zVonsjt(8&o@&q`) z+v*>)T6LP>cmRoV^$IoX>gt;O2-wM*a51mCn=YtOuT zT&-$gJdq7AZ_q;?4E)*R9T%deGer+b-Gc$`3Axr*PVVc!=tRyw{9jj@x5)uFd2|X2 z1x`2!h;1>nhaMP?vU&^>I5Gw!J~1(Gz!prz`T2VxKdyjAaT@&k_3M4wkur1BT%{Ob z>FiDsI=KLZRJtv7Sv0|87=;R2O@OH`0gbQo9gCZe{{a)EHS_+{wpU!UOj6mD20Ma8AX zMe(7IIQEr!?b+x4ypUO%$xlxefYCp~Dl(XRfU%+HGqiz&_XqqXJ3HIf))pWxA&41R ze%le8TwFlTPX|CbV?YsTemzm#_kc*To>9wLqa8602%AxumNU0Cnx6;#79u;Lagc5 zMme!>_qa}|(!8bSLq>+|;vCmEyI0Ju#fpy}eedXy8UmhvW2Dp+EZy`5fQ>;RE7#6` zc@E;dGH@di{1;FIS6nF@wUy-HX!2MaB;(cud;S+#8gJkJNk9WC2u135LV{~>s|-Q> z`yPgqUaTbN&x@odCrkJ(M*wYg$F$79u+KbI#Muf`{^8xboa_W3HzmDmfOiKCHjI*? zFIlML><(tLDr)E&D;#hj^~OWKzP?YN&gpor|JbW@N7Zy&tEcKVXzHt|EIl-w$?TdT zeK4?hygE=pTs@ea6JEiR&`ilKem#m~QSI&RmGF2nb2@xIwB?Rigfr8L;3mbEl*3@N zQ-;G#WFj)z{i}P3<&WQj%&>{6{(h|?PSy9<#P=^-2c}kUw!j)NNtt3_>;kNA6qA!C z2|b7hkhmg0GiYZuH;#<-gv-c(e@=N$q;0Z>*#9GsQ|<6QFKds~aT@p9x8%;C#NC~p zX0b$z_n`VX!1_sJVL=CV-CxASht}3QfB=t0u&zz@g0k8z^$l|_#B4j{=0=0aI%c#S zw)2S5d2OY;`Sfs|l#)TxySxc|c-&I|Qm*tu(A$#>|NSKtD*|MOeV7!+>x7Dwd^A>^ z{!PrT@u!MmRaB#kW?CWB_J7s?d)Nj*px?-411buz{7py5wi6rDg+;B>ZtJ1#fIJY9%=C$`E$ zLh7#cbblJ7y%A9B zt-3#?$hpk6+M$q%(x@3Nt;dgjXG4J2nhOJkQ_OL~W9-vYGDvVvXsc_6#>czaz-ZsN zaU%ub4ed1W-1Rr7ie*MiX!GD56OD?BI@Yx5%KF4 zM4y9XsbsggPCJZ!x^eqK@Bdng`~r5Qy2wYq}E7pwT50om5m*fQt>W zLh2XIACqlp2%HVs8;XBuw)WX#_5QPU2U$5ElAD!RHJrF(s=iab^>gmka1%d=rCqrG zeF)^(>QWKi`}fuTtzqWpAmUJj3!TR;4)nkN`-6q_;6ok;2Wys<1rOvN(ntTFA04i| znbA!?+{@b3T3nR^p2c)0&tsvbBdt~lx<7Fqw*1{9y9cN6wkb|^5e zX43`fFO-xN$;p$(54-#Sa#nFBjgynZ$}{2vhkYJR?<|lBOwhAUZn7yH)ekgJ z$L!(H>TRp8JW%*%vqlxi-R()D1RQRtDl;=kQ?vR=IoUY*^xQdchrr#}JFgcy+^Ni} z_@t{RWy1G7a|4=~H`me9XXJzrLn9$96&dCRohNxZ=?A1 zk#^E;fMX>jT4kBft*=y|vG=OV&%WMR84z%C$t?2O5qy;?7LbW_sRX-MqaN4~e9&gN z(f+$1IFTl&USvs038MbqUjss8ARfyiQ36-e*8b$DxiyJ}b7Apdh>&1@`Wmo1b2JI( zA+t@=bmCnf_z7Lb3Ap|u{kpEK>~CQ6aFgxZx&Je{`+s(j{Qus))5~{Wd)gcFo809B z^yZL3q<*un0ceO0X`;UFvzNG`;MUdwK@DMmQq+8Jx;(df(RcVx{x9IGqhcl& zwAxzYS7lHE3pF!@o%=ePo;lM{QpO=o1*`khi<`}5EhpYjc;-BO$jk6K{=NCdb`H1C zm6!gbMV^h~=&751)2fs6yc3RRCL>Q8@K_h!e4(CclJn>d03EJ@69tY(Tcc%%ODh_G zBQahm{uhd^`G_WE!+~UzLM|w7(FN1fgea+g*uA$c?$zM^uPqm8b_AdI69**4Vd0RSnr$jGDXGR`t?egbbz@`W z%>rzyQp#8k{n>XRHt+k#L#j&<$hIy3a{6UgCQgyXnE{vqfFhI_U~n{EjFdEKZ8~?< zPj6--v9a=DSY(s)7IdE!c*`sm+%JZpFI!{AL|nfu>aeR#Z~|B}i_mgWP{aR$didXn zU;MwfYyN)u6?^Gt=oEvft38j$D;rJ~W1Jdr*x=ySs;YpYnJBd>z&gLc<1#9~tUqG> z3m5Cm{p{*V!*@panK#JDz#X1EC|ZIAWhZa7Hx2B+D-dk_4JR-Y?;Z4Btdo%Vo4j3! zWe+lYtaOEpW%C;#s~ADsYS$AQavE%ZceiP^$5X&7{|C34sSUIg<>TW+IsxScu|U3h7+j$x zVfnRj95m<{f#xdchNJvfD_z270O)0T-!}n~Y~Ncm<;#ivOIj%W1+cCE0l>z!$#MBi zFD);7VW-BE%Zw_Xfz!Tna2me4YJ+32p>%HCX+J$V%Jf}M1_!01SqNkBkU*>YfnbHX zC(3|K@$G~YZn?M51Hg#kSdhrEHe27{Sy20M=iuzzwVhLLe>Rj=$_peBzR&vWncgv} z;^yScH>-04`Iu|sE>FfkTTz|f=Vhr@PZf0p!W00_T^ue|*!G;6FBstc{W$t50U-f!ofI_WcdCb-?d9 zpiOd|Hg-DLGw)f3Pk_7-@ff}R^jrAa_ZrKN*n>ha7xs>Mz^cP1dy<7#5}_7FCSQ;t zg>-|joiHK8k~2ZX6L9J^S!L_K`DGLdDRO_N_-8up3h`34!?@cpLWfsfcJ5tJC!o{7 z=SBcub9ju@bsM)zs^epcli4!@l3$K^>>jY~`C3~Ob@a8BV|OP_!o5I~&VHn%s6ny} zQ&~h(qE~=~xW`DK-%LNwQx6&+E6ApR`*bR(p4qrN+F$E5&A} zxoLvn5e48BLf+F355i8o!N{5UV9y)w%>~As>Uc3pE<+FQZN}mA0f)Qb^j2r$XG`As zSF&gdMkX$lZFm9B*)Y>71`RxqrmG$;SQJ9r?}2->Z|r%@OdUW5Tv^x9mzRTun#WEc zAdpzmaB^}YXO_WMmk?H>S~`k6>fdcK{mAST@E5!tLAo!s3WqJ-lznGoOqoP#l;52 zA7s&F8Q>%yN#YrjOwX&YBC|u@uT|hMfY9Msko?%u(XsBK9($01JHgMbqcmqNj49xd?hRemxO9C0> z7cQ*sTg~!-O}{|Opn*sh-phU#E;O^2qj|unFSR`LvO!3X%>2`n5VFSxBa(Ho2D3ws zvpiN^?1dHsxJM$;bK&HnKove2vT~I zC3j%W{)<23L5K=!Y_O%afc)HEzq-4c9l8PRg?VlBcNVtP64N5#FF36(d3WE;+eqx_kCv&RdviogRyy#6?8$NIdoFvW2o_N>(NZ&sC^=p^qRRv^@VhD*_b$4emY%^!hfxZW% zSr&$?=i1*!dR`P@qMNF5&Yb?P%B=e9EU=jz6L<&=zf^80llZW0%nQ3uLEuzevm;mA z?L*6GmR)4^1`FCFr$kQ}&6MUWDPz!BJ0Hn6pr$FaxDBrDdWn)-M|D+@uB-zqa4RV*=?0 zfBrmA@|qP0vNk~@QUR|H+TWf7xzw-b-e^3itm}xp`$r((d5xAf*8oK7Ji!!5gz}jD zzQexL$(1==07fwXN@lx#?Pv5i%y5yr8;=F~?R0#7|A#!lWF+YUN?igOQE%4lvsi^? z!h{-^ZgX=pVEYLZI=Rkg88D%|oSUUr8}K8hR2x!O92rdsa-pC>`79+u>pj;+{q{DF z<8%QZ3D`r`5~keaG$oXxuYG+>Bz?H43xEZv*G1ZM3kzpa8I*LIPqsqU`5e_arh5{; zZxu_W;k!1ha|sCv_;|S^1@9f5HuGUp7x}fRx=MJ_d4_Y42bX`mrEoc?W7S<(tE^xv z`S^_LG3kp3Q~pd5v7eux7tSfSI}Sca@;3@5{hKa>bCG{^4)cHCm=b9q5F!y-R*3_G fpX|)OkwDU=3P13eJpxDQ5XfUi%|~SqpS=8UKtE2~ literal 0 HcmV?d00001 diff --git a/scripts/fixtures/explorer-gallery/paper.pdf b/scripts/fixtures/explorer-gallery/paper.pdf new file mode 100644 index 0000000000000000000000000000000000000000..24e357966ede09282d00843d00407d090f895a84 GIT binary patch literal 49950 zcmeFZbySqy-ZwsofFdbMmw|wE4jmFIEueIF4&4I?3MwEV-6GNgO6P!pv@{Gz4Bg!f z^=>@(dCq$l$bx86U_tXT|m&AzT{?{CLvUkobJvTR)JytoVltIN~4T=bmu zFk@?65fKh4Co>}#m=isdl%*5Q&dSw}8J9!F31;eQVg?SX*;pBIfOF~XxcKMTuhAU zxo|liDbjN&!JO=jZ2vKc{~v>7t!!Pu)Hq~q!5pN`Okk#FxEu;*_7*Od^xRNxsF)bN zvkO?19j-_6y6%Mid^s^fTseL9irGS()D=mLv5BbFTQ~MF`uQbZvPJBjy$txkM35;( zCw#s9K->FUIYT6McMo(IKU|5vd$<1jgZOjm@w8Yg^m6BX+>J=3W>S~CSL2x?mFmxT zcMioBFRD(Rru{$fF3ndQ>?s?tV;GmVUtCnsWzGID@I&|PQj0^8oskH&OTPci)P@iGi`1%^qe{l3L?k)RP#Mwm&>8~O)lG`z+CCa z`8Jf3Z+BB}-E6@dEim52zwyvG;>i7)2>-hs6@z=u_|NOVq)J8SeA>CYLJ-#{O#CN`yE-Hnxd(6@rSHX)hDvdh=%*7ldt_{ zf33L1KmJ9@awOC{>%o$e(a~FV_OR&iiI?s|G0|IvrSfUv41wJ&){2QjI<9f!#W60z z7j!jx6^Al~%4uW@$m^MyF5Cq13XBt+dbmEM$HQsLKVA;kt0g$9B^ybo$&cJ(T$RG6 z4`2Prjdr9tDkZ~_8vL-L$`PyG_EbQTtH8-on~&Afd}^FlgC#3vY;?*?yC~z^g3lHS z0khG4A$qpgp*7?*tlxeec!=Ul_kZ7CeMszhvvd2LmI&Kh({a0{5NCyI!)WhxU`psq z9}bsn#8FaAX?5|{`8PAk_LiyXlCA6!I6)p>1$Xw+cU?wtXm!H8uezo)R!hsh{diMQ zwXneNo)}$M!Xxut9{wTI`>%X>R2J!9o8<~RsBN#=ISfYNmdL3j2X{G;YY9I4ZTWkIo24Pe29hYu(Zu6*mdJTAdfNGZQL{lOX z$CW}LWPqQIoc>M@ZL=1g#Pw$h*S%ieSc3)p-V#F0byTB|{P(o|{ zet=;qc}5}dzM~Sa4!V6Arsz8V%f8~FWF&ct%<%nHx2L2`Zxh^NM?WkDhDSfq!U%uQ zSf`u`dDfsKop`ZRob3GZrfJC@;c9jH7nWs@I%}*)H_b(j13%LQJs%rRvy(W)v$k!JN>ceb@ytydb(6^ChPK4x6n(4$-2oF5O~NU-h1J@NWh(JH6# z`Nd=QuX(1Vnq1!|uH_R@w^d`m&o9aAhAMCFmdFte+!~wA43cp9<#xS`SxHdE{3e+L zA=}F?%n5xLjw~N-jhvwY;ztZvH=}QP3pDawXAExlcw(1#$AUC1R83x4INB87>~mSL zJihhbpMI;zB-PVy8F;8 zhc*epV?<8TSV-`*KI>la3P z*M(U=XJRh1icWp}euN7PJFKv$X0edL_)GR1q`nr^GQL?N=);_0MdAZDr#IL?zWAi& zG(&=-oi;7{{j-SuzXTv!s*`SSj0U9_H|os$_Ec7>LtJ<=EYs9RubA#mYztR^n7>v~ zL~B!7)@7AgBLB{Hh@vvXhE#;c`aWB*r;lw>sc(>V`CPt#(itAl`;{x>ZoHaQIHN+} zTTjW==;aoU22ukp4IgmFQ0 zM&eUzJ5=PiEGs#Tc9Ct*+bI^3yEI7_Zg*bZ<67bxklYkW?J$YRnQ(kDv`DJ@gsW!b zi6R5Ri#Jj$aaq}^=P^hQFe zLWq_=`r4e>n*S7c)M5GS2DiiTD`Cpf3?7UlkM@E`BgXUTH>>*Boy^E}Hz_A}!i2KS z9Mywr5ATP&-O{SPQR!5Cpsc6YAm|XPm8SfZTB7ZJSW3Z5Us0FMR{_z4TD_9bQUhq4 zCn`d;#d@#4wU2HOyjhxQ8Wtq>qaZ~D^|F$iY{(f<7i)lBz-pO=A`WxNh9R?j6+8Gwsx3l+G$uLl~k7P2NTX z^HLHV#sodd7&19!tn8eJ!O0kQX|W8(CKr9ReUbxH)Uskf<6y~SB6ttH&eHp~Y%M*E zUB$^-)-BiXn;V43%Vb8y*F7^P#aA{y2qP|upT2JnON*zN14q@2%}p7(PAr?d?x!}d z(U9S+2@Gpf&5;n6kACuuO3PTB= z1wr*M+U`U{F=D$MI(FwEpvt9HbNqe5fy5XN~lKNHe+$b%MH>)Fpo z)zOWabojK!eASL-Jjw%3Kf?gkX=B{>5^t6-m)*4qw_E5NOTuA{I!aXdR7c~${kEd@ z{x5k9aKJ5I+FNhR^d>CvX=(UTn!?N(*V_Y(i>RkQ^bejdc5421uPSpNu#1^*H4D$(=ca{SwnSCHq=5idNVPOb@Z>vjEL0Molb0vc*= zflAA$EGtz9tGlGg7wNfbAF?FZl%J^WVYoOuxU#S#{Fh9at`W>k-Fx$~vTiip+q4hBJQL3n?~6QBApjH$$pO|3?GisV42GMZ^qp}sohs*m%l*+o4Z0MajX0b z|1}!JpUOw9=8V&w@yZ$WSB!2td-QTjR$}s>QMj3p;5Q0fV6W|Yn?UQ57+?+~SG602 zT!Zkom#3e7Zol3-a;uN?*=UCBb&A^*uOCv*FAqjAWvG2`XlRyxEGZ>vL>6N`Zc*&y zfr%#T(#uSB#wR3G@ldP_yZ$A)>C9v$lLp7lQn^4RV%2SWmo%156CUs*17*zPd;8+_ zVQ~*6&Q4nHNt?PaSax__m&z(44%?&)Ag&!MSoY;9)Zg3F=iYV7j+$WuEb3y^1M zSeb$}1Io>b%kjj_%EHoxo|hB+F9oxOIjK1qnV8Y*a6FZgdSv8mW=em_MpZqK&{(-R ztC%@S!R#Dh_Gb1j^aB5$rCi*6{QQ4r>iWd7LG=Fl#kTmoca2{9hg=udp5^Fc$2;x} z!a5xL*wlEHbC8kCa{qjf*y-+KkGH4iF&ZuAxicrTk(QQ* z%6p#gj)EUzZ4yE_<)1!%+8N7+-?TKC8#UV6ude>$1-O&jd`Apgk7X~6&hNC3Gjt$Z z8QH0kKLNEzAyOhDwvHFm>f4}{Jm#TBU{}?n4>mIMaN+gfRQ5fWwr(5qazi z)$YPin~#X?8PrmLraT&F-a(+ypnhY0z0PS~u4ZDg+I98l$OE1>-x+subOct~y03*S zGJxXErnpZ!3Q+GmZ9)8ldh7lCnmGFh23AuWyHkY8$jL|2rGnkoe_>%`pC8SJquqj= zzL~av5QC#VyuA;X`tFH|A&QGtnfbgAY@0Y=e9=tbd~s6hu`eYK1VZ_NsP1yx+ z%7+jAMF!$9*e1JP^%w23ybWc|!!Y}a>J(9Lx4E`RyRq_uGdP{NuZYd?7cit2y^>$& zeJJL8T8Wq_fQ{IeyH9$ya)wSf1vB2i@3BPH<8=hM4#cD>2!Fu6#$h@jA8UVOVr)O+ zaVYup0hYYHJQ=(0NXBDA7!2m;cM-#)vBD7_A8$$Ca(cX*@#)i~*D4zwU7F);%QEBL z)P1jai!jrYQM{&jC@fXgy7fIxkkQf-%I^a1=jWF>2&kh|Zd(OEajQ@stiMS>BeXY2 zcMa0ua(sLoWaP8;9q0M;=U@@=^)jTcvM#FHHD9mB4P8q_L26=;)|Y``rtD{qsrhO^TrD#YHk2nzLaY7)1~<4b8ex z5SZrC$;sw;m73o`dlX~MnF2V%YuEsRTMviJ9EKs_Cj@k2BAlEmY3$C<&M~TKzUW*d za!ee8(}g5h5I)txDh|Kx$kYLrUU;1ivaqkOZ+)!79d3|4aNPHp4%~*6^xy}Xfy>7D z=-Ai^kY9Va$>wAoS}-S!3fi5(ll?sZMb8QqEiED#5t*7gnJ$HM#--CL>_#q}HGx}GR zbM~rL1O_HHSeV9(7Y8dtojpAqOiVd|_~+;6i#=(`v`WjqyT~Fshy=;!3+aU9+{H77WmU9(V)elDGCM}_Tn}ynC59#R*fszgl4WWOK!L@7sE_@{<8UTN22wI&_ zf{e(?IP?eUeu7tbH^Or_OLe9BElGWK^j$ zU2SbGUQ?yt1wss)gQI9>#yC@5N$I^2`TDQ2{1cNt!shk;=(i+{EAHY)QUZU6WL$_8eMmU z`=-8&%ib8Qe%&je?r}Jfhs`3t^RwmbG`uEqQLoZ`%(=zInh6W^-m-n#Wo6b(L()513x`+zUbs+Tk;@Z zE$fT(GjvQ=wE+plQ0R;muIClJ%7g4m;F%CxZ3&}7+gE1}E(}BWj&s~lIq;uzC!6&} z;)y9KDT#?ID^xvbgf{ShI%U?bhZ_?w3bgk(QS}=%ckkXEPu1T1Rc5n}m=+59@Zp2_ z5LCD4qK0;XqyF@h->uegx}L(!>gwtPjomFcSX5q5cA5Cu+GvULI#uB+sr6yl)Rduy z!|T_t0hx7B9@~^34JOF>ZR6|f>(BEQW?RDY$DsC;wYh{D;41p)Ak`Hhwm{6keEG6A zSy$tWZtU!o_iO!`1g%Ns{se5~=rebK;x0KBFrii!m%ANT0IF)=asYkvIr!KPi>+tYtBiinJl&q2XopmGWeeSu~5 z6&<*J>(){TS8++nYU)!_AA_^dpE|I*c^9GmWj}_*Z?^7m z(mN8VmWmFuu1{4RYkYm<;{32)++$0Ec^|!6q@2M0<9RjkUO!fuA-&Pder`>jot^d- zHTI|HC!2aj0;i|DJ!n%(BBHN`-vf~P-UYx8qQj$r{R}cHg`s?hzi6S2AHi{Zkw<0L zL)O5DvAp=wOU5F$dW;Wu(n9zg$Fk{6!Vf2g3v?=g@0e?kqD2%HLeUv)I_0d)%(*9( zz~L5fa3t{CX+L`O2!tTMqOZefgok%MQ9psF*XM*zOkI45bqnyK_g< zfTP;9{bmn*Rtwd(pCRD6W4cb|$^cAzny>rLTs!cObs&ZTwoDgU$7+B`UX{W4XoUup zv$>GebQVfMf7w1eM6K3KVQRD7@wm%6BPF|ihuwH25FiJkTi=nBnU%!g)Z|!$N(JF8_Tsc)F zcP!w%7lbb-d&{#2(D!A)K;ctxOSf(Vf6b;>U3#!j_3YU*^oJxsax-Aj3F*Z4#-SoU z_u%_Zz+h6?ayeX$)Xz>*5c?!fLlWd(7!5ArK+Wj z!T(#oa0U-7kJmYSC$l~5CM{zY&75f`$&8-xg*uKlTHTqQnKdpVolAg+LLeVKg^!!I zGec~FUKZx&KGjdDoLw!D%YAiJ)%u=VMQ(mk@BKTx+}uL`6HW|>1W)Q*0xW=xlCGgYutXW zmmomCFXPTTbrhs!evo7jBt%!m{HupM zoR)W=90PJh2Rv4akShqup|Hul?d@X_0Qm_U!OyGe>;2YiZj+Lh+aTG+#VT`n{G0jygy&7A?-%|GB83`D61?mOFE@aXsDlLh?_2FEUZRu^sJHpd^oxcz_jF1n-GSW4o|CQaL-w46y*At-i_y?5o(_>u zDE7Aco4f6UfcAiyy2v-bjPE*e=>3gGO`#M#s%mO_o93pbOPzwi&bptW_kSIB_4L3- zi_MItVT<#xUR~wj;Ha6fZ@D97_s>egk{Qch3_o0l%H+mUFeEJcYMO<1c0Ll%0o%hn~J+-(FQ!RZ}y5^)gsnwt2kT(cZoc zQl1Rzdk~1_B#6|Ejg56TX+=D~g1g1U#GtDPK!OPjOU(pu=uVk~ml2iAveWu6zQ5&9 z1;CsSn&1E%D5b8h4&3;<4!DJo+u8`oCk{dGxwkwZmkV+UkPs||U#`TmuaPtK7aP{U z(Q8XL0$l-NzI#9XWNOVUtYtf1-mv)D4J^+$gdlw9;&rIWxj|bcOeu|57#{*Lr7St% z8BpF+G;R5E*0sh9fkfnX)>{5PQr#88|9i{|i8ykP1WuBG2w6->!G=J%`=Coyz?AZ$ zvEi7YKp~6z2!lX+dzYy8z%?l;;eiOCl~Nh7UML`qrd+2fl!^g`TH3Ym12@!T( z`OG41XgCE@O7Iovx-f`4D!i2vd71h6hB`Y#5ZfBPm$NsN_ zY?dnW^YcM%!4pJV)oC)QqmbWJ{2JZW)#dLGLDqodt9=>4zBR?g{bOTEh(4k}27o*! zKAs#|LlB$+$_H9nT5`EP;upI0sm2v!aU2HvCnZZ%e#F0d5qtCY?U;xNm6KQy=V^S=w-y)u1pq`|y{WP*U~J-FlwD>slv&PxIqMW(|b z{%{e+x$_<&2Edx9dSzI*(og8VDno)z?qW zZDqpw<0>M^4Vtm~$#NNHJ}CcA3x{|TTtFh@Av^m9s5nm8BR5~Xc!5Tv5!)?PdtvBD zKrb{+m#9)>Vq=?S74vgEK1IKKhv(^lvOgfk2 zTX~cVnw+I$dhd-5NHKoCUlf`wWObgLkga5%1h6>~6^-DqA5uV=~)9H*}d1{eZiUw3+``c-=SaM|Gpy`!C@0vU)7B zEoOA$GsgogsnI+NyD2z_o5!HAS%Dhbw11)}&dl_regf3>Ldd!kd|z>!Z&nRtr7b13 zt%>@z>ro7yn-w@ND_v7kQ7G+lkA=OL?i?T&R2A1(oJZ!Z_@15COS+(!=Uaz>=MKLTc z=w3?^S*R+?hWyk9wpKx*OHI6apKAY7uc-xt{j0kN0#AIyaqUh4KG$srJuO9>{W0Ol_K?^paEizOyR;qRA} z7;rB+I)59$671Bi<)(B?w@S+gwMI>O_3yH*IPQ8PI-q=2(X?=EGa*IxECW^4YrDk99o=!4DwlYp`*Cs4<2e># zgG-}k$^QT5$y?c=utj+RoWGu2Zen60)(ukfAft-0Ro`JyJx3pIqCh$6I?03aO2?*9 z%sBr)udzX%s@P9F6@QBF~De`hCe47xF1H9I@&e7s|pIS4`+P%E(R-{$vD4mV8; zZ_{u?T-r_j#GmFmKpA~&K7It%f;qivuEFSWKaeaBK_2riP%Uw->2pSbgnG_vOaH|PMe1oA7pz<-lxCrgQ=x9EEa&Y{{$81p^ zNbnScsku4!)vJSbXIk)kEG+q8C`dhRqcccC{+S|A1P-RKh-|$- zGh}g9XzT7jFX$C$C4p!TS>skSu}(M7^zdOvXQxfyr`M`0Ash&Y6Q+sTd51qQOv3s5 zpC<+RiS_5@VDOUt6N!6u|IeM=IL?aj`!v;&p6nc(LV~4XPl|#H2V?)!be=d(`1b6{ z^hqyNpQVmk4T^U^E+qE+FRpwr)$itlKjV#TuT3_&^h>*uHqxno7l@$ys8mrq^e4-^ zyX&I^mkKFBS0y|5UkrHCi1<)f)E4K%#(npUbhp$DZn=CsF z1|gwszxDI!h(__@?c)zcGP0(ZG8c4zjb-%YoliUR?mg~Hos_zH5VHoCLCo1i5+_^= z#Ple7?sLS)$if7ucaUm_eSK1;?R05`_8>4i%nt-W?q zS5pG6{`@%z2meTvnEsw9?Jpx-Hgw`IB$W=g%J6Z30NXPv!B~kiiPAyWa|lk9}DGU`}o7 z45hxZCu#No#liMSaq;6qoxdb9E7fj;E`MR)Y!x8pqX5}q#QfyMCx#n~OMdTXwT)hS z1~0t-3uXR)k)Au(Pvi~|cMW#R+TL_sx`2pR|Cz>rsPWsf{6{waY-hK1vz5;{{kj=J zWk&;EUJ445s@Cm|qu}fQt6)Xm6UarwU(CHo{+Aq3(C}K=dkY$4h001om44x>*7mk@ zVFteZC%vfwf6+A$x1HcwD`uN<`_R9o68*%UfAt|EW957%XVsr&c1^Nghbrr*XliSJ zicX{zy2IdUHaGZmcd<*vm3wT>Lu|EuU709&VlL@?eC0Wv%0BYru<9S;$E0+6C$s! z=rWW1FXxdnahX{%SL?Vi3OUI+Zo@$;^uTHqtSU2;0VG!A2v;fQm?Y;rE<5pyh}3?| zzxdV`XBwfe7G6uQfcI?Ae-SO}l@r||=6hd^ogbVb*f(vVl*akLVe9`5Fa950`?Ie7 zhZ_H(#(x*@{_pJYzec?ce~o(admgep{ABSeRS__>kNiQ;)uHJ3)$$28_=Ll``nImmcMaqr;N3%0Q^&LrQd(hhPeFVlNdVR=+w2o* zUO~nO>Oa#qkLsQ(D^6AmD%Qgppsl1Nk$-757%jsuTMb5(o|KjM2D8t+-R-(Hi%{J) zA8bP2GJ$*nwB208a@Zc+J?xiJ``x93xrb~>KUQL9M{K$XA@8$|#g{8Fm$^i)*TCxg z{GRiB$>yy7dIs8Lan4H(smtjkAYOh@r2Xt*DP48tZ&CBBt6|Ad@0PO0Dg$UE@FidjD0x?S zrwTeh;O2G$HIwh(zl)!4Nv$tJ&AXEmQd7mO2Xm&Tra-YLIxY@6L)fqa+5n*E?tF%J zMY0hDo9r$138D4tyhhjE;5EJ{0ADuS8lDCU@qn@{4R2Qf!e+LE#81% z@TO@8Knk1Voq4%j(B=VSbrC+J%P#DI*V{8c(-xUV|0MSGLgw~(M@iHo>t^wRB`$J1! zTBYX(@crj4JR-3CG088^+eXyb>ANY6Npkqw06BO9KeP=Rr4dyauJac5g(%| zISm`g41Ci4N|0xw9!Fb7$X%*J?}wQ!?`ckkGz^$C4>l(9YjW~omup$*N&wg#Kn_qm z<=A1xUFihCvX*eVO}AM9`vWk<)L&3sTwL_QI%t$?Wex)1LPkc${$u19E$8#oV_9(@ zO{Mi!s1Frmym8~k$-(-n^&pTAG1nD!6H(**BvJ43%?l@QC0|hdLL()fJ&P2p5-Eet&CkP+ zri0O!5QtwrAJWrBq0PVGvp{SDvGD;;tDkKKAavw%v(IT=R;kdbWuxl{pq5^_9|nLu z%i-N%y?|Eu7fahU0KSNXpV@$(3g9sS7A+0s#|GlrjNS<8-edY@$&6rA>gZ zzMye=CS13%DOrI?-^@)Lj^{R$0|+qyAGyR!4MW{F#&ZFV*N!*f?Bq~6p7Z;93ot*U zB^KiOFrY?lu05NG6MMkfI|rLL zUiL{)=l&`ZAhwdz(&_;k2AO8Bn>q#sWX8rL?_~-nR6hKo270FXmmp9tcYv09`}S?M zN#%L9oP)zxU*9Ga$^g~4OO@rZja1XsWt+*Z#{oF6HMbf7ANIxG0Uh}jNuV{g^tZb?nT)X~A*tq%4`1m*pqtYeJ3)szSw$+d)X=6}dJzY?-74kXy zin!HmUgDUbbGl7dV0FIPX!v%14!6? zM#j}u=wG2v1*U)ODnz_*M8;7mA&T_peuI?5n81Jy+AZK8(eE*;b)Q}ocin4id876K^Jk{ zJlQ8(+?s9z`Y+goVy%6GPC5WgyemYqNa0wBYsa{;PsgBk!vFImtTm`eZ$7IB(udrSxC zbzV?F%MPUbQGp)U!BSt7c?n?b6Vy2X5Xs8QDkX56fr*3hKn;O;0dTh{MrB$~LkUYu zCeU)RWcS)z0w5=&1K_wJRsn&5`>zqe3IJ&R4mfaL4HgetSz!P^#>>kKuzYJxpl|(u z^u_z^f{uJ`fbm~QvI)m=rV_3Po%UjX0xxy%A?@%yWi95m0;pq zr>h1eU2op-7{_ycJ2BHH7!WL4&22NIFcFQrmT>S&LAbHhRz9beQGJp)%S@-SbSAoY z^*!g=#5HlHG{&p<+9Z)JHLD`tk9JHcm2n&wBh?>L!LvfLmD7VkRv;xb92On-A!i*d5lH; zre7k-H^`g$w3y1|fw3;>>k`IdN};Q+o*La+`Wf-a^;g7@{bL_JjpM>rvEBRtq)8Pf z5n)6u+p3g)P4DLuCoSiso_p-?5cNH=QEHvnt0eAtVn^m-RdFgqJD~9R>+b}@zr*79 zVr%bXeG{7e;QU)=x${0FU&mj+5-Rk1TXgsNtd2$3*i6oi(})qR=T7r)pbS|= zko_ycoW(m^aDAB2;?KUM4QGGKe zk)P#-B9$e3PL$Jbr<1f{=P@dX81Bz=SU<6@%BvtZ!4DdY>Ec%()XWR13tS5HEB)4d z=aXD^;+~1dFkLc|96m1N*k@uakW4xRRTxedr#EqQ3fGPnB(6)+tPM?tU2&jDF>gXiXWPM^aNo*}tLWw+VkI#Iegt{#`M*0$QH68Pykg5dv>)=4bfQ?i6LBpK^V_gnV4@pn504D67m#J;;Mn9{&BF$+F2u zs)uBwEy-4p2}Z|; zM0R#sKTS{zxY`Eu;%Vg_?=d|#BxSW7Mqj3)C&_;`2gkj|a-n~7K__`FMZWqaeJWM} zQTj`IeaZl$rkC`E5XmS0;N!OBlTb{_TA{1y9vid0-~hHH(@E={H^B#A2a(EzTb60_ zJG8^gSnSV9Xf&gH!_RPZRD*^2l_&Fss+;--vHvDK=I_#Tv!8A98BP3#j8XNEe48GMj~k-_)jys^;^fuHsmIj@`wKWstTwui zZsK8%>ai7fvPT~gx(9Q6eth`=0ZEj&O6@Q++IU?$;3cCzb*jXi0OSWB1h;vgV*Djj zA<;8KZ#j4RcN(vlI9DWYA;Xxi%^Pfxn(=Gn=ynnB8?2E%JNNC2D%ajo?DjEX-1XWc zhzi1#4L0x+I#=q&GU5|H|kAne^elbxqa{=2JFQ59tp>F2kLeKGg^W&pGKBfNndVPKmhI3~+W&wF_c9O0wq``fRVzbl%VS{XfpdC==zI&FR~ZhEL7 zH@Kh_I1lWQbf&+2;0riQ-N@LPoLl3ckX;eVgg^vX2DqbqN({fZrt zQ6Wk%a4oZEDI2zyp@@ENtC!AJeX$YSac;A&T~@5;H?eP^YHL&TTww?0%=mJoRczyR z)#7oAGh(-{`!EG^#UH=r&=q^mE8x*6MCIePFlYEhfBh8)ZHTe>ShbbI zQebz*Erq4_z0%2>3?j{{X{bZDBerP>0GMe%pT>6T-1U zJ}%tYS?!16AC5s^>Fm(@V4iBl8!{dOIXZ9KS{m7_|9%MJj2jAHo8;X=ror>D8XU0w zS+O9v*z|^2$*I`5w(HEg7^0k4M2Lv!anB$wi8WVlT~p~zU3RDF65plw7vmkmwFxy{ zX&bBy%I16HoEH5e;JraPACoZ7+O8iCM&JuaB}$((xZhD-Eli0f;WS{{DiD(Mll??x zLwHVR3gd`l8&68^Kwi1Qd`3Ez2y%Zmx5?VuIax2+jI&)~$}==@l;+vvj8kdl z%W@&)?TTNm_v_@dZ}5TsfB}zB2RZNivrOb1AAG{)r%%JFH;bm9nXutW%(_OSU8CS4 zQkP4kWn#tNwSH-I?l?B*o%k+%;&4AXe-5{_i#^~JX>%Gvh#?Cf4aW3{#?<_Y!8#9d z67;`KEkT9j(0Or{^x|-8K|>1T;*hiXLiE;7zGP~_zz@kR&t9*(b?b=z$FM=?i$uj; zKSFLOuJF+i(J89%HKyf)?04nxM^sQ;meDvLk~L}x8YnK;&0wbjJ$}6}Cl3alGgNvo zT)z2!c~AS=D-q{L8}v?d*dzbW?x#>p6h6dj$zrgRE5VsoKkezgtJ75pycn1wqET5N z8@m&DaWZ?kqZaOvy|d^SV#4-k_=?Zp@L&W#kP~~%kld|Nj;$V_UrLa-iE|uJ>Z>*j zRf-kytA{!Mayh}cImacO0nQ(<7D;Jc%lJyn|6Pf^-#So*;QNKl#ptFV(u5eV>Dt2f4`igeR->er)awMya?iGEgRf*~91V-Rjs&Xl!pt9#@KemrE zrd}E$h}U@P(>#`*w!O4~WF>4Q>8>gH0ga+40{RpDu-l?xGdJR@RlBhA1P5;1(T=|#WtX?Bn6lNWR3UvF## zKc2qN(#j91C9DsYceuuG9T5jlCJR}Ef@OWfFO;DK1jY%j*yU~V=~>hG6~=;S{{ZTNbh zu6K=%k3G?-lljrG749(gSi?^`_Uu{`BIM;JVpq=z>^DZ2?LM&4Ijq{Nigez~Jm`lc z|5)0^?4k2MAKcv(=^->|YIv+6ez%Ek{o+jy-Sigf)0x5)9)(!oON%&BVX%o2ZR*@` zestd2p4;j;=VOOVLL5qTW;{UFzPLe+n_Nw{sYQCNA!S*(eOq|@ z$Y9zc4(m!I+jpHdO)nu%Ax;`{D-L|Tia2bya%CJRW5jbbxn5?*00w`Ln%eDe<-1f{ zJM>vN)>kk)ue@w%?F*+nk55ID8;Rzvh7FgWt-det_Mp)lqq{DBLW~|boAbChIlJE* zUKsCuJKW_qSw{XEuSC)kw~#{kvlOHG8I_OTTJ)UbW%a9?WO~2YaY!q0Fc0qMJuRs# zD5&E#gb|iTjejnc3-x><*o%;RGpa%S>N$Df^JgceDI@Ec2WM{9!4K$X@9ubzhNo?4 zQM`3Y9a1h@>RPHnnr{_`7JoR)>pbD9uHpWg=V!NR)$Dz;A>wr_aaV|Eh{c;{xfapg z)!Q){+HrFhe0?-&MVxpd`?&S)ufUARHqEPdO(NUS&)CF;+~iGJx%q{#Bioj8h9BH~ zD{-GYDDv40AxerLZA;{#-1Hd&LM=BlIE8|U$;~cW9bDE(hm&0Q3oev@q?aG;7p`bk z8G9ZU7iP)}k-6U=8`IVy<>OFKBIWH??h1hpB8Of)mu2bbeAgr+m##~Mdo)h)-M%DI zQ8rM&)j66zx~#))*)WSKW%}KmX>s!W{CC4FO9v%MArfjl^Iu}44@eYjeg>r3<`Q7@ zBwgfWCfeod!`?n}5bNULxKZBmz3T_5pa<3O5v>%u`dqm=!1$(LOT1XK)c|9V4NPMa9BiO zfX`9s4=0b$d^BAW?l5d{)Nl1ov{g+u$Gy)LGqnjn$_tjdDr1Y*e-dS~Rl0IY#o#?p zoKp$B<+S&+eED2{D58&}V~Jcz>Q4FAJ&WffD*B`yp&Xk(7XrUZdSMS*e&&$s|FUpu z8)k7kpCYZGYEqOfxT8}@Z)^-&KW~_7P2F2KBW`xhk^0k%> zxb~P~&_f!ju>cALQ-(?1f?Jz|%$H6h$<7hqv@?Y#!92Q=O%$P>-#wzgTgB)M@LU|& z?whqhuXc8Fw?A=P_4eYimjB9^LD0SSY<0QAGJjkszT41CC!`#nkR$TJvGXVLFiJ7s zb*w|bpi`kD)cYBBKb3`-*{1?F+d0G4X%~4nT)f!Y+C!{2iUwkOB+;p1lK6XNUt4BA zP2#axi;fGI3X(jLmr5}7a{j7;Yc`0$BRFWUOG1;Uw?E37E52o{Y~ZOC#JaM)uFLGs zzPV`^pYWtS;N@)eu=tgGhjLn+6#DJtx1_$tJt^gAVty2)5nxB56q&SWA;6HKfk#ny z*VJWHRW|SEZeShLciUBk_IZV;UtQHY6@+6iuBxO)4t$zp<)!H~=d5F5evN)Knq3=e zD!?GX;}E2QhnL$v`Y`V*PqJ|vk=Zj<7URl2u0+Cvj-)v;PaDn*x5MHxu02c5RLP*A z-GsW8V`+PW;*L&kqLsC(RHL@8Qkl>R?1ACF5z-PyzoX7pH2ybXvT0q*;IVp0*Ta?ryR_U4+{Lj=)Pl`_>vIjuXL zSG9s9wfj!+xGdK*$^I8(?;K^xx2)}!ZQJUyjV@Pp*|u$~%eHOXw$)|ZwtcJjIcNX& z9p@Y0z3Z=BGiO9*M#hYhBiDN3Rs3yNnKTF0@IF)zp`NPO1f#d77Dt0@JPu*WJ#I9v zSQ)`{U{u*vX-^)%RoP3}#Fu@#=FYw`Y>G1gBgZJz3o`~yAh-`&9D7WS8Q)RLVUU!r z=7vmVGnRCw+Ny2+Cnw~;3w_h~-4MoakbX}*u@XAF^E zP$~0EykUOu6$2hq(zkn;vr%4mHqys8(Pz7?>xp-U^a}B;rxq#r+DBwK@}d0Lc_Aeu z%EVtcpr{2+#(<$pN667@A_)602i`s}o~=2tUf(TO3ZPYS?`FB7eqJ5L>-u4_KyXFh zKy>t!d$LX4aOMNv`(+(Jh~Qou%!5lIFG$szQXWPaFb{$$cVx+0bqeZ~4~!^WNv(c< zY+W~bxV$P?KhA8?sy#5V_L&2`vUh_(>Bg5~;kYJavYpjvHH(OzIvzWsqCC4`EtC(L z5d-GylF;Ult74RqP@a$tLyATa9<^A_my_pe#7+`yGVgr(vihbl;YEum{OG2a!*v>{ zGZjnJy#VTJD)Jiv<>VTR0>vmtT=~>KG{f1$~LEq zqY?}Xy`l^U`$QuVT_S0*5sb(JDqgF+eCt!V#7N_I-=M|dqBfF68@%ar0F&aZO-%}p zjHGPKWO}2mxz@*9d*nf@f)UF2gE*S);y5&&CmPsS6W~>$3siDDz^aUr9i-hLVyV?l z+XR4k5V5xunCKgJlL=Ytg?D&sHCX>~i8Jf~2Yj^-oPd;>vxJDx%rdC|$Ca5?PD@K` zG^WqKRF#@_r?QHZLERn=j(4)b%~<89AXR9; zmS&dz0LSVU!GC_fLl^J%(dItP^29(;mek4h8D|p!g(G9N&U zXM`Qh1=wpxuSZ9?(XN^36&itFgFK={siX-YAEFw;IDU!Ao@rQ$GkkZLT zeAmH9@?s6D8B*JLOR|v8s;~M6;~dtpx2y>lplP6|@jE38rq-v+z3k z%H!@HvrFh_om>v}69A}RmKr5q*UsqXW*2!dRllpHg}2)Lxdl?{pc%wJ%tp~EdhKD1 zBL5l^mJ5arLrO}KY2Z9fjAM63EidcN@T46`+$vIG&$wC;P9-OZJZXwtRf|pV#66lT zdm7ql?aTOX8Xo;{-LIg3`tX6z1EXIl(xz0Gc8}xNx=&j_ESvITR40-in&A54r<>A!DtM%@Q*QY&2q4DOklvL+stW1k0Zg67jZt97~Nd5v1 z;8m~-5e7k}5)Aluj}!Nl1DPNnB7G)FC^MRAy=<3#hClu*&xdF;U`9;xS+9{8??I=c zOtN*EEI%R_zarNw{>v_LURt}5Zs*fzDP!H8U?O}t`ygHyoIFFpM&i`t!7vgo+|i1& z?_`~Gw`K*jJ#!DVc!5aOou*`N4=Owdnfk*$Q=@vx2@1lG06{9k!JVJZHUSI9x);~6 z{L=cV<*kKlZ&9U9bbap<`BLI?+#0uWbyhkU7&NP1<9_`&Waf0ijpiK8lOA*9IASv|0&m5Tv9h+;y> z<4AAF!$`$QuSEkt_1W!MdTVbjjeT}^2FgQSkmev21e<6q+@z@(YN#z7sqJWQ%y-TE zVlIYXYuq~tbDf_^9{zm3GZI!VeYX_xnidSn(h_yD=(t(gR>K9FtF+**2GSW#eMbUBo;7io71RgwA+V{ z9H-JszkEL{rW{Wo)mO05`ZGM9ZG+-MSx|Kx6)4akOVn~nD*zb;^h-#ZC%ac0>x-R1yVjTYmFM9~|I6p@r;Q<({W z9pD1HZX?>vcJBdhA$ z$nvL6fDB%<{`R+>Peof5q`|z1*?nl~7dsdGGdET?`{NqFmXGzEin5J|rQ_#&Y_-+O zgOHJJC9VB<=2P1ekJkm2$@I0NOsLOk;gv{U4@AQXO1r+$JQEla_Jmz~yiQ-Ln4*Un*sC^p0tRj>eE{dpWfAZiGus$2LmaERi)9PZ^1m=bp;Ax-7}jE4apmtD6p+1DC@tw2y)Pu^qYoRQsj< z(F8uudvT&wnPEQ0SC7|p(pe-rFSjyq1Jz!U2w~9hUnxWCU&gnAqQzO4qJAr#poVrZ z)_yht2oYuBIG0YeADo#IN3(8sOQ8FBZjxOxMP(5r6e?o_mlvYJf|6?+*6o>hMS{Kn zZ~+-j%;4_xXQKe3D@_dJ0bVIyNJiPG6vPknKPgGyEd`jC0wDGB+REx6F)^7qq=}Cq z7KU-`*$Za4*4kq{Z%LX>tms>uy`rCx;6PqqffRHyHEZgdNAYyd+7@HA2Iu2#Y&pXe zF5ilR@KQQNIB-Au=XcIm9ksg%a*-*BKc;-gMXFaJprE&5bRSl8h3=9V4 z8Sr#|;y%=z%*Exxn5jdr#A1%fh@9NT^bS*>*w`d?5DOkFa(LeJgVVo$wv%sZn%$}*(FNg;9uvZ+}qvBV{y?CeyFfs+ZrZBNP3^Ofp_>NUK|DZ?}F zo#x5+Yt=3tu2W&{NIusabPIx)TEXXC4LVBQcEryb&kb(_=N4x(vIV^sw-$~eq6PI4 z=mgjj7)Fo>0naubbq1=X&$zMBbNkVE>gfEck!V3pn2N!@Qn|YKO2uQ54F56vHv3Lt zc3;fWL7_Sx3yd3rvxwV(=~O|2eecKQe&|q2L9{8S z?ov-xNIzyYn~2xULn$EHIh-(@FfBX1vJ&KvcY|;W)VLWtFVRR>|Hb3W*B`^FKSZpZ z*Q0|&zV=5)rA%6Imp%p4cG9A+3fsBfm*6bi&_E62wjrhJgSIgrXte;~Ul8qQQr6%J zO!g%hAxGp|#qnaE#@~Ou;HE+_B1043+NJvFh_vIxr0+X0s(h7sDv{N#mXJ{$Si1?~ zB{MPN>(b<@U#T3p?3=0i{OY2V8AsXA0rQ_bv-+SFTs3z(p1lN&UDX7R!em^$Co*Vx zh)8o0b*{gv+K{x6u8=Vcx`)-`0RK_H$g&Z))==oMGDez?_FRnTWm0#s6K}Y(XS0bI z4%2<_mUgn)O5t-`dObT+N?xoyrC(zAc9TejhhZ_k8|33}6M#eE2Yfo_73hK0zRT@lP)hLw3gc z)3vz$@E%{cg|_uv5^2kegMyYqupGYSTI+q*6wO*KMKrTy;v{Xe_ufvTRQp_br-I)+ zKh|~DCC!~zJRfA!=EVI+)CrX)Z8r$gb&L9h@P?ecLR2lIV=|#mkT*G2<}%$n2?ExL z3eBUTxA%fOG*j#9WE6=i2s9y@L_YcI@_b80EYZ&!_v@VEsk%u4^|0YEcoZMm3AHe< zSKle3D8eS9MPmI-2|QKgp5M{H#t_VAWPl2UKO(*KXTpDwt%AwNhMt=4>noAMXdWRi zW$YzXH5EnSB3fr)a$kCGR7k^K9n(COY*^%LacKZWrVqhK+L*sTbgNkXdO~|hOuo3Z z#?*{y*FBCBbb+BUZMi5EgdP@UL)jMOyGaDey!B&YxogKFN`wZxTy=c~?G&b$^g6Pv zQ7p6kQ7N&Qpv(fh&eF0&)qh80-K`Yf4y-f9<_8WoZ`}X;CM6a_>tkTm3bQ$*ro(23 z8i-#&h|U$%rcmXVH%<&Z>gl&(EtwOH|I<&*mQX9+JtN&vf8||V0xg(Ip`q+2JHC9# zcCH(uJ86l?c%ws{N3hSJq}PV$BNmzJ&!iYL*MnBeT%?6ea?qF`nGNCSVJDh+>Pe|; zC?p6AUjUuXu9Xba41JeC@!r{~s%ka9hm_+mmg*91hV{5D#@FrBHTBiAr6e>Kl?qLs zn(AW7NY_IZ3pFk~kRe|eAcJ(u zcos-mFe3;f0kxV4vbJ&B#Mm*$#)@{!f^#9YqI1vGO#{p3B*?nInesibxxi;)QxND7>m!- zsIa`xj_tDD@89a5_CJ|7d++oO-t^tpynu~vHe@0TeO$;t-S0N2jDij7#&k>89!Xze zulh=DC^V=tTk#w`sq0;ywl+FRGQc6M=8zk*yI}M}%5!;ITZa2OAa>#uNUM`HX>xs? z<9$+3v6`WG`VKlEq~fbh{{T(SKI=Ix3g)aY@2dp^WI6zp6n}IDN~oaVdz#tw?|wuV zEAuU9P@@6`#;#xQ3gxt<8VEwGHYWjw@v2pK^5M zD%UVtt8#b+Y7FBCYKHXKu`Hd5=D%1oaa0KA!$opjSOW;lilCe>Y4Tr)Sjfwb<>KUO zQotw83Awx!+RLj|CAlO=CuCDhC1ler3E~|#uECaIwZSIC%*V_np4~XQ(V?ZMaFCjdQH<^OXz*hrrk_t z>Ks$uwvK?-pBPQLF!OtyJQ2W$=>@MkS^UYxsT=m3mOKyi6(E8bb}F%eMpH&B3nYhP z3Os^#3JffqnJt?2o!y!JC@lUpmDr{3-Z)QjwnisTagv0J=GWh*iE@{0l(ng! z%ORz(EWcDOS`9DAxOtgL0?0|b>83Uf%CB49&DP6u%&2O0J{cp_ZB4m~YRko5^db5) zw?=^RBf$lA?g|y&+i43*Z{`9RR{Bm}qiVR!`|x~o>&sZ-BrY=??Lt$2%rOi1cgFx9 z5M!2N@fvguPk<)?EN6BUMyXowi3L=a94&>Ad=v%zkNK+Y_Azj%RxLL%H~Cy1C^8gJ z`IjbvOM_AAK-(}4LcVv=gERp=r9Tt{6*zJu?ND`(1)`YxIoHWh+OpaTBbHMkei?r7 zANjXMw-SMy#oT2vA$7{FS{!+{SUu%q%)pI28Yps{iNOhMi55`!veOmYP4IR3)k-CK zMZs}$plZhLtY+GB9`5l{P)O}avS0~%M&0(mW(KP%OG+wnMZ5 z=KbKyw{-q#r%RotFIsL&jc261Q8jW|5y)0URcGO1$X5TrY(SSj%c$=Bk#TQLHVMXD zK25r`I2H7>BTLOIJD4FlqcN?^^Qx1@U-WIj)GbzOk_oIMZ?`#{>uG!cV6vf*rNe9w zolRLmdrE6luR$Wx-^#@%6UA$ClGho#!P=a+vrl{)0JjE;Y~Dub)K=$UBe9?vMq+H& z2-j#{@sN(#BMc4=F;l}4y|pxUeCHRty5F%VGjWwAxxD|zE_l>$1zRMOx7j{+xr?g( z+QJmgu-?K%32_%3LfQd;yI)vILwgd~5Y1#QVAvPtKS|9Qo%4XG-gTR8-LL8fYsX&L z`3!Y%RB^N)E0@st(>1oX5yVz{bQ!Hki-5DVkW}{K{_K+#f z($SxKSRJ}jzfPSj7$h0DdC? zZ@WL|=kzpd1DxHHvP@Bs;5+i{xc3Tc@rTDa+5uq&I{(>wMCcB->lcY=6Tq}{r$>u5l=hzF83*5b zfq*1%B$zCqS&}2+s~L@O3gxPqm4VtJKHcy$-r0F#tpAjn55^S7Rxo{-sI+Vh!XbXj z{4!M#sK4!V$QN*mfDq&O{DdmHSR;Hnf+aIXNM5IWRAWy!)l- z&!`RK82L=r186+7TAWA!5=_8`6e*GqN<<8}!KwYzuJxQ9a;u?0eAb=ah#Ml}sv61- zl8hTKUk+FsFbOU@;s}T-!SB?bm!1QFNU$`ZVW9ae=1>oG|F6P^1ukJbfrORAgarMAAj0bA~rNFv3gp+_h;$d<< z|8~q4QkFKlo6w3V^be}5(XWSbt-l8UOa(>_Pn%XZK&nccT5{$Gt<$gJL>b|_cN^%Q*@`U6j z)pzyFRYZVQfssrvb0A5`0Yf)4K*NV_Cm*RUah*=CS&?F)hJzUU>}ge>)dW4CCIy4k zaGc=F#TZI74UP0ktc71dvCulyRt?|*hHxJV``J$@N{pRoCng{+AqGP1**74Wv_r;S z(OoK!c(z4ItT`b`EIuGdi6%a%@MD%C6j(fllC-SZe;N+2*J0CPwBL=}yOs(Zq`Y?y z)cMc(ZBAAAcf&T#Kd#*4acQ4vB~^dSOSOROq0B^dU<>49E0WTFX!~eo{Xr3No|-X= zl`(DQunkZlS^z#%P(!?oU=p!qC&c3$s6U1(uvIZH%8teSjmPyzNbNqWHG_{k;JeRq zM7Vp=;ZiqyS{mhv#2)T55BH^&HCnagXAlE~v!jn|<^te~mkp752XD?8Jd!8E%p2q- zYpRk%b85jP`2;2t3zOe?d6_uaH$RZgro%c{(mLunA?c(AmeRiw(MVk1p{10%+UWtO zke#Nt``OA=3ONV;8N3J)*`2G(lBh&uh4uiU%*gDjkjAbYP0b-=IX09d6KU;i zX<1ytbIJWf+7@#B3x$-P-1iW~+mXh%TWlLT^oo4M08+9<#V7q-GKWDfE`zw?3Hge2q#5~H2nhez_6B4Jk8e6MhKz2&!<2Z8k1L(8 z4cWCmP03cyzXd@(&i9seux+kqK4DCu*k0KCPqgm&$h*x^#>n}gnNDB@zv!B^#x|0P-@Wj_!^7+Rzqz< za(*4@JxiFLp47f8H^E3PoW6mfX&{I!mfkK+S(Q)Lux2!n73usE{q2zN-H-!!kePUi+uj+meL>r;81Fl5z+i6JOQcFLLxExe6 zOfJJ#ITw}|bgQY8ysB1dg(KYTRWK?9R-m>6SNv5M13k15nS!uW4)!pOai107vWXEF zzYwpsTo;)b7&P!!K87!B?ptVS1DY3$>j3*7N>9tid=-T}sx>TDmEfYiVP11ES@mo-}`C+=1X>J;^w`Z(A5-%?W%bdJMNUU|)^ zUA3|(Peha*C7UM8HZge*-H*o+43m=d7H8{t^gMb+tR`mb?2MVy);M};5W49t%pe8$ z^#H4AepdBp{oFMG1&5+V=}_)*LMJGtmW38`;cp{Qux;J`0OFPXO$J`y@}BoW6uw;{obmoxEjm*HUeB_q9IzT3tyUG`h)GTT^9lF@>d~ z_Kt9z)+LagOXm-a(xOq>qR}IWRuBy1iY^Sd{xf3w568wI0df|uOg(8P4l`sXF7fB{ z`xleFNbyG{iE!f4aXk_Q<^GfFm+M0MFI$WS`opI3BI`L)WEQvNmB4AnL(7piOw|G> zU6lab9_Fvrh-}mCSJ((O7ic~Q38TfH;wi9?R3z?6e=Sti*pbQ*F_PYVrPmVR|FvQnpSM?>}j1y4HXYLMWu$9 z=YNmi1Foa2#X*E6G+~$98`!ap2*Hw(>8;ao;dcuacV7OQp+9?Za=UVINn1P&HYdVd_G*`zqh->X zqTdlWh$I*HWI+P5p)0TslK-D44ctb7p6$=TwNh?^PogX5v{fWAaYNr_RH6C33{*-sCP1&MMs{O%UB)Es~THQF`80%;BpW2duW_7$-()OqQB>uYRszC;F2 zl5J4NuUP{H^xSvb-JOV!1e(lun_rW47Vt}k6)e>()GYlx!bHP{V8OD7Aq5*dpm(9R zwPtSJaC-@SX<@~0^>pD4jXuC1>5lnQ=UvK-78hk;L1 z(27v9*q_4i^*jm+>iJ0X>(N+}^3ofua3?7Dnv8FLte_(}@|?uytGoe})Y)0qxn0ry zr8TYF3&wIr<}MGqLmPquE})D}Au3^`YOMRZev^ zA{+#|Ds(eFNklDLS{ZFz|EL8}oiYgx0U#koi9mDDiCa9NX>wpQb}T*fP+jv6S!fp> zczY=^yc5((hfyL0lX6sGq{_NbAhGyxj|toWaKgoct&wSlEy1)25@fG3}Erg8`kK z6Fc<5yLdl|s{jJb;%BTFF*jQJEE(w>S~tFneJ<)KV`p#W5;k>9--$hKqx!mX`Jm}f z+w=)EbUXE7O>j-ac<4#m(TAAuq_o4-kQI_tJVv=aXKud&d^w>4TI9S@;Yv=g*sPTM zya%TnbfQ**U4vZ*qE?v!f1TuWQ5Dy`0L@ptHG}71%gatY;Qa7oACm~OTfvfQ6 zgl88bH?aW&qD|UeIK($0O-g;u0ei$q{U|YBLn)shapVK&-}CMXVNacJoMRnByoh24 zLQ)V)x(K_-<7~peM%44!yS&&j(PJA4lo6XvJMoaRQMzduLzaa4e~09?nOn&# zCRa$ZhK>snl|ggG!JB}y6U_q3(FixI5+fnhW)WVn+yKX(8N2r61o<)Tg5GGwW=$jb zXg~b&H6*1PBp2qUB?4riKH83`_p_m>fb1;MWeszb?7e`Z zozrKL6Mj=Gf}t8tP#7y8QyQ${%3=NiJm!6%caU)#mDe4cq3jseW=1lamry2fHmoK_ zUgE9>mXOnz$4;JbH)eF;HJG!s%dM|%H(M0k_io)ywPZf6m%K7i%V*x{9c|W!7(Qrw z2xLLhXyHY9_KubEVD@oira~;f$c+^`m{;rj@IxedA?o=xff&tTDVVqqbSGx#eZs03 zyI9S;s$|JPxiHAW6P2mM_BfuAaq;M+q|E8N5{(?sTFFxikgd}9-U|?@% z`>k;OUr>^?p4GR$8~?vPRFY=;M)rD+-+I;xM)qdLGy*o3hTqdH^-R72Bq%z52ZMj9 zwQ(@eGB7YPeyg_q_4ap&hLM4lmWiI7h2vWy&e6z9nSh;%mV=#{iH+r($I-L>Z*4dl zRu*PjHg*<Z_=~TvVV)hee+R&&A#y)BSwOM@j3rNLNWZMtNz#J|Chx-K_K{7 zl)h=BzY2AKo&A5r;@|prg5pAdr~ielzDc9+Z;Cde;zCk-w%;_E;de;P9Nqpktl;MG z9S?D9W1GLAl)RCN*|)Tz8vzCXx7N4Ow=lSjz2SGLtxX6h{>SWlP{GO8*3!u8Z)EBJ z(qSrpu`mrLRu)=DCT1pft#7W3fsKHXg`R+kl|X}y@jG6uY#eL^tgNiG92|@c9N&t3 z|1N z^snu|y|b{e(tc~5Gco^Tr$xZZL7?%^4(5Nm`9F<)ccQ2LzMt$2S_Et?|7phf@AIQ4 z_{Z>{QTG2a{AaJ$ch>!<3wnZoj{VO?{`-jkX~^*%-+y0~)^}nFsSvQx{|)|sgLVIk z&VQ%V|Bd(hj_7~VURv_w*8cPe9dA^gl5ny3z9fkV@&bMXx$udHz#*No5`(Hk9M?~% z+Ht>lwihNYD~8)^@;Fr%LB@FBbIc(cSd=|5g46wT`TL(Uzl&-tKTt{B~Hq3Cynya85XC&8s==St0(Rpj~!sNi_oLWQzrTW&p-n0CV=!t z22LU|Z$|>n97ohD%EuTdeoK+s59dLKPR)PRj?5|Q7MApA?*^crWx{-Q+X~?Hgl8E7 z9W9tWY(>re1YXcj@zl-nRYnDdr ze~Ox+-gjmBUg6&a;lE1BU*Sqc8zpPAZxbVef2G5JR-69-FaL)QWMrV{_%3w+w`^fx zVPItZ&wPpO_)7;i(swOx9!+GpWxHh>GNw+z97$@&8^%crKoG_Yj_m!E1%tp4BTxPL zQLuNynn_Oa1DhEOBji_``y-alTr` z=+^6P0;G5K&C8^3#iP3O(c)VdN8RJX3jhRwOA;XPzAmx$wOivhu@K;y0-#{Y1{16B zYp@jH86AMV%loZKHc#sVqQ@5Ew-~ml%{t?!0|&4!Bp}8McJPpBE`lV$H6B0++ot`| zkdsbj8i;KoaLH*AtYE*->ti|}SPwJ6#72Wze+TOz;3y z8WXpo&DI!7(G@S`06XjeD_{U9AOzbW8L5C!mgm4NK<+zu+rGac7*wHq)Lu`FQat)qN{Q3y{khG|J z?bN@V{Gi@T;#2=LU3*yK^O*i@$e*@Tb!3Ou(y{%R;n~Hzp}u*CKhc3^MbDtap?QzD zX}#LW6Pkhk#13}>=|XvblZE)*0ghV_Oqk8Y-p@4cMEZrPDv{;;SbkkiKGh=+R1;jt z@%xP9w*pR&I-D*pxa=Rm^{lD2_$eFm$?N?sBC@Zk?Hv`t@dbM8_c>-au%!1$`%aa; zlLK#9#LsNPvE8AMY_5)O_hawr7R`~@wt&lE5;w3__TRj4J%VWt4|V`X1(=jDlL!X@ z`Y*MCYM8e$iqio1amLrS0N%7qe0_i|>;U*1@KO~LHA!}C!-lgco;3KP5WQOmdm!iZ zY0(NP(06xsmy|eoVYwvuY(F6Zr~@Z!;8=Tej~3C}%7##D0IdVow$U*BD!)X}h3SFvZHu$oz6nEC z2!4)=U?>QFp7~QR$P*_xK?vr~Bua>0{T9?kLD&FY!gZkLpT}ibLl5&{7)u%}Rmqhz z9$gr#xyZ^r0>=wWUk?a=lboLj0lMj%60D0f?proN2oXI)UsYb-e6IX^8ohw|uW#y? z9B{m7e>z+)xY`{L^S`h!-@3i*?XmCzi?>nEgV_iYr;hzdEQ8jzBQ2(VAo%8DASv!24t{DNMdcY}qIao*raH_(FQuHsyVjGJ^UBH9VN387Yio~gOl~?`~2V! zz1=~7x;T7KJ~T&9zGp8aPwN#2uB`l%;+Y%AYqL1+I9>rbUf(EkKbe87oM=8}WY3Cr zlIO&Jqu#qmT>O&j|peStO|&zbu8G; zRV~c>L1-1sJ;y}fKOkzOQBJY9RrfhqIFiaBZ%d0{OU^1F8+J>Scqf#!(kdLLF-XGD#p)-_a_uW=Na|5OzGMsoZ>YPl`q_mX z;?r%s^!YK3cRV^@eLh|QY~jw>PxZz~87^6IJ|5zWjMPw#iNA$r1TT`mx3^{;E;3B$ zzSd;wsLKr=aBRscG;HUIGc?RFc6)!!9@X!f;ENfM*n8ab+{0djJ|21c4K?s;v*$Qh zooFny+YjFE*PT^stkxUWE^aKW)RuVVt|pmkO*3}8Y0s?>wXLd3IVriRnF+-n1^5Tz z6(85EQ5(nWGGF76LMUb0t8ga#`2M4zyxLrunmQho(XZetpaQ1cT-l;C^$bah%KX5p zLB(K!)X3~!MTeAAR7n&;XkC6Mr4j`=BkhwI!D73MTV9TYl`X<*NTZ^MXD9azss-dG zI5#PFO)XR?Cp7C*2qSvj(+Nkbt%hc%4LPkqa_U3j+dSCAQ%ZKdCh9nJwX$*o1={GW zo?DPpMEOmQFA%`qp|r_qv7>2Qveu63`hI-4>e4FpjM{NrcQoqR@(BzyqX_rJ+{ucw z8al^3bMq^~Vqw+fDD~ijom{$mqvPqc)3VM6hpSB_zi45%3ymQKJcG~xA8@$ysMblRNBh3)(&qhU?i>^H z*?tVg6^~xyCGLe}Fk{U5`1bTk>ec0)NgJMeJmOrst+#iL7L_~W<-y1I8{-owE3C0; zu^^Gv{cCQYGGPYHp+}t)y-syVBO3wl9JlvG#K&v zjM5dHE6OA$hIEHQS9LfQm4}M+we%gL@Zf_#lbB9hvc~#aWXz7p=}>AD%Y6622c5Jg zB^*s6!>~rChBw!TvO#o{7^mytxWE-MrEIR}%IJ`hMH_S5za_pH zZk(=n)XC7r(IwqbkNtG_>QW?ITCGPjZ1#&1h`4PBgYc>JldTGu;9d~ zYbc=;l;C=LgteIfnfu(4r08UrKY}-zXTii#Cw{V0?Z=QpV?sUp(0i;Xts09F?)2iJ zI>-&EG7~Hk;}VVY{950G;tj(s}dAGaskb#Nn#KI zfoUK#fnhH@RCWO^;B_3Vb}l*iA}L(rASj9#U07Y3U~=9dmR>p86Nf2DH~YTBva_zB zCH!rgV8h-o3L>It#TqUmfJsYaC}tR2w*2mMSf)tUGT2=C8zH8j}aGzN4n0h`~zmnVOw_a~gSFZU-1p*UE zEdy|<@07b(N9V(mXIx9rUJSh6*bKoR#BMgpK3 z(Ew6K5vmt?XwKf7jw~SAy{0ty@ySCmqGJj@w4ka_+P>~CbwtnWoF-h+DgC3O%J=Gw z^GJEWgn_MpdD%^q@|d&0i1tq)jD-o+1v>yS49Q^k9nhUjIe@*u3}64VZ3VNL4+jm;l{uq{dn+;v=hHT}00d z(2`V+uMFLVGU+1$58ejG_(J&_^8>=(vc$UN9&ND4G@r8DwO_#cz`_M$lVhdo#+1S! z<;ql9yIoq2=JOH$#?0W^Y~I6f9g)PEdv^<4W*%J?FzeIG_~~8D8;h)7W>^NL^Y?`( zs*bBG>p0^F9Lo)_3M+vN~6Ol_2LqS+XQ? zEcR~CXIt;D`%BrJukbQ0W9SPDrG;>!rRplpCF_HOWZf?h)qF4WGX|o(=?6P(#@+Yp z@H(EK`|#2}#TF7WYHCwSRhO}asHhU6wB4?!!F1k74vZ<$=2p%>RtBzufsPfS$2(N7 z%${Pna9o2yv7h0x5^j!J8Rc6iohKpiacXj<;?zi;uY zvM2G2wv_ko6f#~vXmv!@b|KB)}^i9vuFqB|f@O2}%^Yz+u<~zeD$`t;t+?C4CskfD%C=fTR%niC*-fjLnh>Y5y z15H^GvD!YP6?ilN-S$&%WUUJ`XH#M|B%u^-qctLY?KZ)!=3X(16%2OiiXFJI zrG)cGQuwn3GxDgkuky0hQtl1+Xk;QgA8o!K7cFcu9~&!lIt*>AmbhGOM|U4+clPVrMH7D+1TgR}wjf`c- z6kR&NXsh=b;DHtQG04w8!!my-)tCdg2k1sQ?16JqDgbfYBIYGh)f%hHXLlTe#-2tWrNj@f`O?L8>0Yt+PbLBeZ zOiGIymj6*)j*00}JT#EKI6Pox;!shAw(O2AR!AwUV_z7N2A7Zt8L=dx9i7P(bmA-H z-LaGI!AcEfv!yl5$aWaFmdxAnTG^aGY85OE6CV!`&uxG87%Eu$hDXn_erO=3*>&Y< zFev!6S^q}$@w>+QkSA>?xesWBySW__JLMW5om!pQu+9v=b$UV|EARVR&V)DhYHK4T zk~o+DD!TE)RKE!MwQ#e7w58fQ*vz;SFPqpTcv z+Kndg)sKQE|Hcn#>^Xe20E3nFH z;Rm)R(2|-y!;}`Aofxb!g+&te2pQguro!fx-48GX3hi{jpsL#24xL#dNMo91i)h~gn7B;q2Y zB%=uY1VA?3uoS}KGd=93G?(U4gT-fOnCZi6BxvD7`4MaRr3@i?3eG{;442=X6Ncz3 zxxHU7?RDQ@&X=AoA$U!-A)S; ze+ACY-sZ(#yjy2ov&iNzA~cd|F{wFp1ySKAUPw}cNwQAzlC#5Y)2vltbnG3<4TIe2 zMcV!72u(V|h^S*ahvh;>@nLfJ)R4G){BGm& zd??S_cmrC-+vt6fDPv)x;!r?{-~DZAg5OJ3CW!@sp-mjO%s zrP<4(F8SAmXT*8hcjyr?N_FUw?zg?N=sZGHqrp$37m;N;i#N3y>onM@5pp%orJdsq zpG;kf-t^g2cyDt)7`Vh&XD$nFpZfwAr1msQ8E)Oj z+b(Z!FP&(hXK}-3W5Iwfn675_-sLHR-E4(6W))4HOyQGu_V}rPG;=m2A>B*Jg{~X6 zk3Y6Vrb&eVqLMHZbRFQ<$;i%-iMta$GC9=Am{N-TJsSgzUpH`G@O8L0Ge0x{mg)X9^lv<847r8(S+bIR?4sQG?iC zS}s*qyKDG5b8pi@WZZ67nLACNNspPKyP#*swb;>{>k027tRB0Y_iK)6fKSiT4jil2#Zc&0f$xFZgF*2b#?Xr+`ei7>Fbh}z4u(0`vPvs<4o9azen9)ii%)*_={fJLE_L}#z-9L*@U1d;F4sFDR*jP{c zIdE)S-PVn42p6Kz7(|LgOnrAy{j`U{oC~*<D` zlFUyVE3e*P$Pi>`A#-QN4^mP}LcXhV(XsBuwz2AFN2`kZMlns_5p&{=s_Tuk=DB-0 zQs}JH(FA?>g66Y2cwExyNlpI*dp5D!W8LD3&4p>3{1Ei?)fSQpA`7x$HfI3llnI|9 zc0iBvdFo_x#(VT<5`;BAD_XTGe!P1eWkr2Af#E4-G!Vu9`M6@ z)C4=#rXQ8*8CuaWETR)fT&8e=(}i^)=SRh^uX0I6Lb*-DfMpS(f@2Nj$+$>95P7Dt zDqLo~rr+-K-2s@YnlGc5LdR>UrLGr~lbVa3(9QbB7`o+QZt5oZ9gP|<1-Eya)xz6L zc|9PMjkZbut))Mq^Jz*bw-YDJ$Naz&#^|BubYsM{m6aA&_Z3C}7(c&~^0Ft&cUPa& zzaO%U)@ZFcXU4=*_H)UpC(*`=m7Zn}?7PZ&xje*MHtod{QG+PYY>Wwjq3uP(rc$42C`Ua;{N^`<7>a%aFB&pV z7IL&up}x8RDqdyJvZTZFgo1}9Wd=rW#0nX#aqOUM89@nPUEy3HukI+*KIVmdh}=U(l3+3Q}lz)j)v}!A!f6mZmLn23uYqWBX%IVF+3VI)){FS3W~%V&K@oaXL2j1C?x2YjYqUr2T63SCg0tE@h+}Fv{9(kLRrKiEbYPW>0Q@7 zS=%ox0J1=)!WAtBnP6X{x{+y)zQ_Y1NdWS`*4eQ2Kz^Tcv73*9Wc$HxMS=KnD-i;#Bb1_4K-YjlC@UfllW@`_Xx3}Im&mFPi8M36A<0f($qu$S> z!|@XYt&P2^Lh6ai`s@X(4x?_v688kBlvy?nnJ)O|Y+1 zDwMM}`taws&=EdfcO1T@H^1`w>gco6{N(Khyq(L6!`0TBwc&;dS=Xa6XtfGgM=f*$ z;df2=m*w(beUwdIv11Wts8L~hx6k$GHneuJuTRc#&(km3w^A=)(7jy0yUg5`L`FPL zZooYzJnWZtxOkpDne_*Xd9iQwWYK~A70x&0#5^Y+$M09~zDRt-y{doM4?~=II1fW4 z^IF)|+FjnrCB#2H$GrjV^)U6~!W^IWN}q=6tFD*sK*WQnCl@G~Jv!cV_O8RWe*pJd z=5Y`KzW~!DH8RcgX3RMO@nFZcW4}l3rU2po{0H7%7A8Kzqo}79w|2SQ4U&`GWZ-&_ z%K|+kFXNzMJ?}K*R?k(f2!;T{y%~*E+MUkzl=c{>&7fMT+G_-2p`%6EBdI5G5;pri zy?J_-Ntu%BxFnPew6v*oWeR(&3r)2zj0`EFOlooBhwft_Xp!vpMPV%(Ch2_2rVZKYWr1BCzEoAJ;eckJ2-|73+xzd?!z2Xh$&w(}*R&qBj;od*is zwg-T-)1g=IR;G&G1#k}Zq9MVPgxQ3hBJ}=k68vjxxmjI;Mrv837RL|x2y9%Virf)_ zum~`*WWSX1nT;$}i+2acFr8!@Y$V)78-BWU*2kiz!u!_i89A2Dw zqCY@7G*NOne`Wd#**4}p`7Q2MiYNw@Z?fb|ST(91=qy>G*)W+~wFr)rbjaT$8OHKF zUGGU*wKJOF9RsZuyAeq|Wdv21BZ*r?yYZmn^O})YN)nsgh}DQ1zSQ0V{qH1#a*+{g z714=nT!m>@8}t@-q}lvRNST^YxgZ6(Oj zXd{imwquZS9MgYXeH`6yHDC?#xtsN;cDU~MrOb`HWl9Bz`%ny?& zBH`hq6_X~bxrWz)@-Pk?R2HCB)-}2?T#$~WcrT!az3yx2l1LeC9S0J}jO`MHv@ARY zY~OD4$~QNZD?2;9k}Ep{yg4V2VGLtGlU7yLhEcza>1mEBqc04j;dE?V#6r{C>9G(B zjqDh{$u>?b1J`42aVO)AHh{I1ipq&*d2?+kFD=$1=id6R2i#(}01^lEO02RKTf~XdG9C0}CfkjU`7>J$p2~avfk*ep zp6-Vu58AU!6-4&oo$lcbY;@vB6yun$KYQZSZ~8=5mp@l~)RN$QnI}d`)+201FL{c% z^?M(0#}A-kgazhK3LMw<>Ih28PCTb_>Qwdac1)QKrDIZ}NlB@g z505T)Gl!i*Maa|RXA^T|8XLN0cffR@->^u#F+OU&WQ+-SM5sq)9V>THSw&uZ>Kl2& z>&4)*EbF*?ELOv^c?hgtx;d!Ncm1-}F^e>A1fWHK-`)9zC17?jthJ)LT0Y`+&!aJO zv0Ou&7n;jF#Vzu)oGy@YAtwQ*A3999ibwAg5N67h|3lM?@hGfJ5dZ}c3)rKiRXuN^ zBU0BWhgap+5>SO^g%am){qdZYoCFt(7pTr^%0YKf!kWPaE^#otRd_S1&-Y!FD@szN zf*vAxUJ6oLW^;D6lGNQRy1_tZN9WDevL}b@Re$AD3`J&YaCbN0h-)V%|E?nQM|)9z z)*`N5D!NRY-EuEn;Od+a3Al&vTkX*PLJEusLEJsNJE2QA&J-YE0O~jm;w>4&@r$Ei% zk*uVA0&^%MzZr+IUwG|7I?qk;A(N*u$G%)|g#BPLz74$f>|Wz{?EW^t;h}z80=~)? z9~oz{=K?aZ&8={M0&jS(2IIFFcu~%28aSH}^|Bu!D-6j2cmK{mvYc<)EaN8uj(!n~_` z%enrD@$nj0V-%p8$q!I6`w`RVU9^l-Q}#E4J?rHZN^@H|Q~-5bN9AKfC8FBPwe-Zx zQA(|Da%0<6psuqhi)T;0>s@$xn;z?^!#zprqsvPO*^#Pu!GHw-;LM;ddJbdttOU;>iiT~j}&3&cf#4I^w;l^sU86yW%j znMgMbBoEw%ag*GIwQkt7fz@ZgftB;;Ak@Z@g=&|N%i|5CGRLaRU9k}ybTdoF)5G3g z;4krR;q8Z5UN7rQo6njmJ>Ds*kY3zu0_F%|v^MSZ7ij3OrvspV3-j3dId{yL;mO$Y z+|W0x)8{m6U|y}QV)VM7i*MTORaaS2_EJ!3n{0~oxp~Hy08od zdYL9B_+rwdHVr#-a6H^Nij`)O_D2@OyR=6vztJvA8b+}j$h!9)W5J`rsHfGr?WGDd zux8=mJesKI9$#@>zb1ji#Q3w`R{I0;e78s6##8E8ry`dh8CD_-A17{6aF07H)KZVd zD)5(^UejL&9uKNtYhNmFbockvUmf6BWDv2n9Q2tB0!vzn%XG}Y`afD;-ORFw)a~|e z@>>(4VQoKRs7b_X>Sgq0L)IsWlF<}tFpuOI)hKGmIil~Wxt@XzQ{51OvIZ--!#LTa z7Q^YAdpKeWtd-K``TYf3)%%W;beQ2GKPrGGq=3srwXe9cqBpfjyY*}ddfd;&A%@zM z%0k$wlBPP7kTQ_RRyEnm2uxapKB4*EHd`uWq>fvBJi662P2m;}3hvh%{mX@TEf44X z`IVg6O$PCOx=)%tlWUbU8TfQ8?KEepC>8sM<9L_DydDBqEhLs_x;oKbHd38z4URTH zoSb5mTjPGdZ7Y%Xyo|@BFQct8%@C2P&V18K!3z2CI$Xd(me^K(JiY^f$_Zmt1<1%yVnFRmbdq3n0@h?W0sE>op>YP?c52E6bza zYF@{Y5esS|fd{UjzygUV35_K=3e(g+0FfmUgeIvdCGK!+VJ4nblac}Gnf0+(YUD}p z^n{ z(J;){f8z3d5>l7rt4kCcvCdK4q&4p>-n-P-b*hj2P^NA8k@}}Go76>K71sNw!*5NF zJ{s>bm$-Ib=zr4K#c+%=rhnh-kT)zn~qmZB%_py@-lF6eCHi?h^k7gB1>3v2nn_amKEw za)J|$B)~Wk%?+Bs8prs|BJbD5N<`4Qq)a6r_!YRW_F~SLeEsQO$a^;PTJB-u3BEjs zZ;LFab1w6`@MZ5A{RQfr>?QZr?={S4*k|1KnklD3!ra|;r9^vSp)9b3OS6!J|5(-o zsV#?XJ0GaVR-yfQjEcmIU_tm$hV#44c2VC6i(ZV*rfEW6X_i|H|K4oTc-f7D*Ju0B z?P^Jb#g&oyn-wOeo{<>gA*Ovi-Es6PYM~Ef=&@Xnc+{OQ(`0a!CL6qMF1WPqG#)Td ztR^mH<0fZ#SqZ56m~^gU3w%LnCt`deLa`1 z3+$1{34J~Y9gB_yxnpV>!#qzL{Iglp4F5fptx%q?=J5GSP2|X6a*f)ExQ2L@d4j!X z*K>&ccCZ3G?-l;9V{+9S%DYzEq(g+NZ^bLefG8d)j(Dge1&1vMYseC7E|BfhmeB`-La)SbF^yqC!GXDCd)a zB+CBu)ay=UCrcp~?NJOask?6X^lbnA1Wxl+*j@>4oSpp$*|sS9ycLjAS`IZVre z0iLDSCTeTFzc%nD;IrgSacr#p!F-;r- zg3TpE-0iB)Fd^5Z^2SPwQ3Mum*}aRs0loPUY+a4aKM`q6@Kmob zNJNecgG#W1UiOdpJQNe^XyxOO^ z(^9EOcZKp^dzSizt)%6?1<)?JXYD(=l-)Jm>}7qKzNmtDQ$~4sY<0zXXS#e>uBq~K zX?lMtQ^)J+WWT_?pdLF#$Cz+JrKQz&2dm3!YnS$!x%|j}4G{3{c!cv2|C%If;{lyt z@2)^5ryqu#T{u?7A!r3{q!o=wgJ^(gP=q_WHX078;sFB%59!6iyiPS#bP}bj_p)6%q`AFwpiFgmJxRIQC8Ed8f8N+|96xTg=XRcbAbd!589W%8 z_vxc8>3BUWRum~0uawXx}V_`I%wD=49d6K% z9<=>wO9zU20WN#DrF#qBEZS+*7xTm`ipGof;JG~UhUq!r`v zjm4d~P9-%#a5p7FpF-NbbdPHj)S$*@FA4KCp`%Us)Q%PoUNo@~SL)JL*>8K)IA+Bw ziki&~9ajh~Q)(;Qu&(97t)1;&&jC-Z)M%FU+E&A8{RRQokKxcyROy?>g?jF>Q>GHm z6kf3%zws9NKh4&o4e$;iL9fVv(SoGNF}uj>`wH9y|MV?Q?GL2nfQ#WLisT}gI9p_+-*fu^Nw0{2$$5#Zc3KRrY=cr>K?_iC+dEy1a1hxm<*6hh+J`{FG)q#o0pma|NWHzOCQ z5!SPdgb5|4iTqPki8`%qm`qV(xmTeo^&*e%4KKILQ^u6y1&Xj<6dt8|4#{+l6BRql zKb=%az8<$_KBsj+gr7U9Xef3zW_V6LMJ0|VCWyO8c#uRydTd3r>&VyD?T3mW0=_)1 z!%DN3=S>>T5|!-F5+S*uGY6zp1;ghw5SP(dVp+L21gp9Lw5a<|Ejk!6ZOBi^N%Hgc z6{IiW6A(ri;NUeT4fH$apWCONbs|l|4$${=j-hn8(TuS#P`49YSIb9j#u++ntcn;s z`{8>kCNT#mM%-QCdmk$^ZA&ZQDlFx!i;kPJ-@Zi*r^Iii}vEC`G;}E^IK821XR+i|h1IQ_Ks+^-ae-gHqS6We!OFPfhDaZL!&d}|*ZYAG| zv$)XRuS3-*kD{bunSM8YVc!{GePiTfSZ+0+j=lXDIq+UNk5CeFSRbP z8=(cef#&rG=uu`!rFR!e{L(Nj>V<sRwJ_%TZ^; zj3^p3t`p5kMmbwdVCjhWMd<1X7g|FqJRIm%hvb`SzAHShRJ_1<+$9wh@{kI(DQHPS zD(VCuyY%;+)mIxoMv|~&3Ks+x0QdZ~nIMF^ma?$8@waF7IN7mAA)2G`k|$mAq4vkO z5#EMSpDKD1TNx~;Jo|I{| zr&LrNCQ95~MxQ*w)-qoFK8mkS7SgZyKqq85?O+9pd+(LLZhz6eQT!rXU7F|RfVfz6 zWS8U?Y52D0i~C|Rq6uxj+!5;s{PM^IZam0rN^%9P^SeBjX`)Pg-@X z*SRcYs3iFdB-m}zC|>N4v|WH6a*M-29fS-i^%Rm0YoQ6FLM`O;M@UX+;fw3h8JD^` zC=frO>5%$tdOXxslAEf7bXo$*$;?nMf;5D%S~V{%XrQ;2DEVV_9;mY4dsGOfd`~)02H(r<6yCBQ!ZvkxDZ;Hf zf9CM1Moc?d_yix2mYExp0x^4V0_WQT~)A z^{KtBy#pc*7fm#vG%p2Luj}(VPYryQ1_iHJ4b8u%UnHTr8 zBI2Vsq=xj|N7C=S4rN#q0kHt(}{CoV} zyPpq$juJT~{>O%|4#&bT1K}WH;p#uyFB@+)&mv|Ya6`iv_?t>$zSVs|-rra4%Bh}w6Jz)9ndf7~+ zKNQ&8Oqo$~ng}j3ju3c6h*az0JpbiR$n9N&qakD{DCx7?|9y5g`g@)9;`^TzGP z>lpRyR7QDRJ#T_#b>iN~J+HrN zXoO;wve+;$Dy@nt{ea`UGgE`hO(nQEat7s>&W47`V^g*0Ryu!p*VJVV+VUvGc4?j( z!??t$$;SX0O!YH4U-9kgp+fUjOFIhag!>2}s|Vm^7pJajsy#$S`WC&>^jG#Bu_@{xKiF z$Gj^w>ffFL^93TKD8DOy$MSKGUnAE_^;Fp`63Ck`Xs%i$($(2k>RA>w5NAtCN9C9a zECn1Z$Se5Vy;+`7-UESais!OB0s+@lY*cwF&9a2vBqdSv@oSX$l-H@ScnWr%Ko_dP z60#T|8syuKA!MP(MIzv`TzlNly@wR?O{&WU;3?FFKQY(Iqsv-SN6rI#Lvi17sb8VA zZDX7%C{2Ag^`>|Z%GCz6m90~#?pIyL38GW6s|iHrkoQK>-N`^AmbRk)EI3vkv@p&U z329M5Kd6>DGvHkqr^&Tf@WQ-ph>9h^hl=is|4Wy>a%@ENI2{*5cWW+|Y&RHOqt_(Qzn~ zRNIr3Oj9kRg#EdF`(WcZQSfAh%?T}jEO{$Dz)xnXB0;m5{K*wd4tLo5o*rQ`mG?mR zbuygBpY5Da7Cp`xf!WegdH&<4?Tt2PGlREEBpw9F^OVEgHoVHse6-j#R2Bs;TQRQK zWf4{dCKShL!PFv#8{1l!PZtEpI;j=tBr-8UV=e?PXNtymauW}OT+K$)Y=>O?Tj=}E z?>qc>oi$<&*J0KK*5bS!el$r>0FKRA@kNBOB{XG7OTkYhqKMCHCVq;T4AeAw`wU{5 z6621T>*+kq4di%KsB1{yAmk}th>rTyE@0dmsFN9{u_B$GY!Y>f{ksB~;rB|T|EBBzOVR%?h5x^>27>=1 z)&S)3|3WliW&cAB&jOP4{$CRf*jQ=VSU@88Ux^0vtRO`_3y5gI!OlR-%*?{X0MZ!$ zjcD*k&Ct9O! zzqbC%`)|Mf5z7cd4*bam0Pzw20~X=;=)dCxemRN`Nb&zS3cz1@fIotMugd%11cX0H z0ia+0q$Gg22cRDONgM$23_yGP`&Y)lef_KbAU{xJ|JHW4zjx&?Oao|qKzxM12I4QE z!QWzk#TXE9fN%(ZwE%Q+{gZ0I`1=6-Z>R=L41ZUt>%{y)H4wRbg{4asF-na}^p8ST zBu4WpV#en`_SK~9XB-E1RwfMz9fIXKBy%~8siV#o+q2qVU_$8#ZI?TderMPAgYxzr z=PW?BDT`q1Zal@F5LQS(G!L6ptH4!H_(I!}RcrVG#fKwl0}PIo7wD^}GoU*z(yo`& z;r<54(=ObpHAIw`ZxMpnt!; z{Re8vpHubU00;kRa{q7H2EX4_eq|f{aZ&t@ZQyEeYyu0KqYSY0e|`v9Sy-4@2uuk6 zwEYfA`29m*^ItYlab(7S+UV&SSpI2aVr1n2Ax3_QW#(X_|EC`)mIG9@`4>M1b_UQ? z|J6p%#KZ#nkNCxpo{ literal 0 HcmV?d00001 diff --git a/test/dashboard-conference-overflow.test.js b/test/dashboard-conference-overflow.test.js index 6ce5c9a..f8bf592 100644 --- a/test/dashboard-conference-overflow.test.js +++ b/test/dashboard-conference-overflow.test.js @@ -44,6 +44,6 @@ describe("dashboard .cell-conf overflow fix", function () { it("exposes the full conference value via a title attribute for truncated text", function () { const html = fs.readFileSync(htmlPath, "utf8"); - expect(html).to.match(/cell-conf[\s\S]*?:title="\(item\?\.conference\)"/); + expect(html).to.match(/cell-conf[\s\S]*?:title="[^"]*item\??\.conference\b/); }); }); diff --git a/test/vue-ui.test.js b/test/vue-ui.test.js index bd84ce9..166deec 100644 --- a/test/vue-ui.test.js +++ b/test/vue-ui.test.js @@ -248,7 +248,7 @@ describe("Vue 3 UI", function () { expect(ui.window.document.querySelector(".settings-comparison").textContent).to.include("Automatic updates"); expect(ui.window.document.querySelectorAll(".settings-nav button")[1].getAttribute("aria-current")).to.equal("page"); expect(ui.window.document.querySelector("#settings-billing").textContent).to.include("/ month"); - expect(ui.window.document.querySelector("#settings-billing").textContent).to.include("10 GiB"); + expect(ui.window.document.querySelector("#settings-billing").textContent).to.include("10 GB"); [...ui.window.document.querySelectorAll(".billing-offer .btn")].find(b => b.textContent.trim() === "Subscribe").click(); await delay(30); const request = ui.requests.find(r => r.url.pathname === "/api/billing/checkout"); @@ -547,9 +547,9 @@ describe("Vue 3 UI", function () { state.options.expirationMode = "never"; await delay(20); expect(doc.querySelector('.hosting-options').textContent).to.include("20 repositories"); expect(doc.querySelector('.anonymize-submit-bar').textContent).to.include("Continue to checkout"); - doc.querySelector('.preview-expand').click(); await delay(10); + doc.querySelector('.reviewer-preview .rp-open').click(); await delay(10); expect(doc.querySelector('.anonymize-page').classList.contains('preview-expanded')).to.equal(true); - doc.querySelector('.preview-expand').click(); await delay(10); + doc.querySelector('.reviewer-preview .rp-open').click(); await delay(10); expect(state.terms).to.equal("Private Author"); expect(ui.requests.some(r => r.method === "POST" && r.url.pathname === "/api/repo/")).to.equal(false); expect(ui.errors).to.deep.equal([]); @@ -854,6 +854,8 @@ describe("Vue 3 UI", function () { it("uses a readable fallback for unknown settings errors", async () => { ui = await browser("/profile", { ...repositorySource, "/api/user/default": request => request.method === "POST" ? { __status: 503, body: { error: "untranslated_failure" } } : { terms: [], options: {} } }); + // Save is disabled on a clean form, so make a change first. + await ui.input("#terms", "Changed Author"); ui.window.document.querySelector("#save").click(); await delay(30); expect(ui.window.document.querySelector('[role="alert"]').textContent).to.include("Unable to save your defaults"); expect(ui.errors).to.deep.equal([]); @@ -1164,7 +1166,7 @@ describe("Vue 3 UI", function () { { name: "source_hit", traffic: "monitor", count: 10, bytes: 1000, ms: 0 }] } }); await ui.go("/admin/"); const panel = ui.window.document.querySelector(".ov-cache"); - expect(panel.textContent).to.include("4.0 KB / 64.0 KB"); + expect(panel.textContent).to.include("4 KB / 64 KB"); await ui.input("#cache-traffic", "file", "change"); expect(panel.textContent).to.include("80.0%"); await ui.input("#cache-traffic", "zip", "change"); @@ -1200,18 +1202,14 @@ describe("Vue 3 UI", function () { runtimeSeries: [{ instance: sample.instance, rss: 20 * 1024 * 1024 }] } }); await ui.go("/admin/"); const text = ui.window.document.querySelector(".app-view").textContent; - expect(text).to.include("Request performance"); expect(text).to.include("\u2264 250 ms"); - expect(text).to.include("\u2264 50 ms"); expect(text).to.include("streamer:fixture"); expect(text).to.include("20.0 MB"); - const routesTab = ui.window.document.querySelector("#performance-routes-tab"); - routesTab.dispatchEvent(new ui.window.KeyboardEvent("keydown", { key: "ArrowRight", bubbles: true })); - await delay(10); - expect(ui.window.document.activeElement.id).to.equal("performance-processes-tab"); - expect(ui.window.document.activeElement.getAttribute("aria-selected")).to.equal("true"); + expect(text).to.include("Request performance"); expect(text).to.include("\u2264 250\u202Fms"); + expect(text).to.include("\u2264 50\u202Fms"); expect(text).to.include("streamer:fixture"); expect(text).to.include("20 MB"); + await ui.input('select[aria-label="Performance metrics"]', "processes", "change"); expect(ui.window.document.querySelector("#performance-processes").style.display).not.to.equal("none"); + expect(ui.window.document.querySelector("#performance-routes").style.display).to.equal("none"); expect(ui.window.document.querySelector(".ov-metric-warning-row").textContent).to.include("Needs attention"); - ui.window.document.activeElement.dispatchEvent(new ui.window.KeyboardEvent("keydown", { key: "End", bubbles: true })); - await delay(10); - expect(ui.window.document.activeElement.id).to.equal("performance-stages-tab"); + await ui.input('select[aria-label="Performance metrics"]', "stages", "change"); + expect(ui.window.document.querySelector("#performance-stages").style.display).not.to.equal("none"); const stageRows = ui.window.document.querySelectorAll("#performance-stages tbody tr"); expect(stageRows).to.have.length(1); expect(stageRows[0].textContent).to.include("cache_hit"); @@ -1259,8 +1257,7 @@ describe("Vue 3 UI", function () { expect(calls).to.equal(2); expect(ui.window.document.querySelector(".ov-performance [role=alert]")).to.equal(null); expect(ui.window.document.querySelector("#performance-routes").textContent).to.include("No recorded requests"); - ui.window.document.querySelector("#performance-stages-tab").click(); - await delay(10); + await ui.input('select[aria-label="Performance metrics"]', "stages", "change"); expect(ui.window.document.querySelector("#performance-stages").textContent).to.include("No recorded work stages"); expect(ui.errors).to.deep.equal([]); }); @@ -1429,7 +1426,7 @@ describe("Vue 3 UI", function () { input.dispatchEvent(new ui.window.Event("blur")); await delay(60); const workspace = ui.window.document.querySelector(".anonymize-workspace"); - const button = [...workspace.querySelectorAll("button")].find(b => b.textContent.trim() === "Manage access"); + const button = [...workspace.querySelectorAll("button")].find(b => b.textContent.trim() === "Manage GitHub access"); expect(button).not.to.equal(undefined); for (let node = button; node; node = node.parentElement) expect(ui.window.getComputedStyle(node).display).not.to.equal("none"); expect(workspace.textContent).to.include("Signing in does not grant access to private repositories"); @@ -1513,7 +1510,7 @@ describe("Vue 3 UI", function () { "/api/repo/owner/repo/branches": [{ name: "main", commit: "abcdef123" }], "/api/repo/owner/repo/readme": "", }); - const button = [...ui.window.document.querySelectorAll("button")].find(b => b.textContent.includes(type === "repo" ? "Save changes" : "Update ")); + const button = [...ui.window.document.querySelectorAll("button")].find(b => b.textContent.includes("Save changes")); const posts = () => ui.requests.filter(r => r.method === "POST" && r.url.pathname === endpoint); button.click(); await delay(10); @@ -1602,7 +1599,7 @@ describe("Vue 3 UI", function () { "/api/repo/test": { connection: "github-app", role: "owner", source: { fullName: "owner/repo", branch: "main", commit: "saved-sha" }, options: { terms: [], update: false } }, }); - expect([...ui.window.document.querySelectorAll("button")].some(b => b.textContent === "Repair GitHub access" || b.textContent === "Manage access")).to.equal(false); + expect([...ui.window.document.querySelectorAll("button")].some(b => b.textContent === "Repair GitHub access" || b.textContent.trim() === "Manage GitHub access")).to.equal(false); }); for (const status of ["removed", "archived", "preparing", "queue", "download", "removing", "expiring", "ready", "error", "expired"]) { @@ -1677,6 +1674,12 @@ describe("Vue 3 UI", function () { "/api/repo/test/files/": [{ name: file, path: "", sha: "1", size: 5 }], }); await delay(80); + if (/\.csv$/.test(file)) { + // CSV opens as a table; its Text view is the code editor. + expect(ui.window.document.querySelector(".csv-table")).not.to.equal(null); + ui.window.document.querySelector(".csv-toggle .seg-chip:last-child").click(); + await delay(80); + } const host = ui.window.document.querySelector(".ace_editor"); expect(host).not.to.equal(null); expect(ui.window.ace.edit(host).session.getMode().$id).to.equal("ace/mode/" + mode); @@ -1777,8 +1780,8 @@ describe("Vue 3 UI", function () { it("leads a ready status page with the copyable anonymous link", async function () { ui = await browser("/status/test", { "/api/repo/test": { repoId: "test", status: "ready", options: {} } }); - const input = ui.window.document.querySelector(".share-link-input"); - expect(input.value).to.match(/\/r\/test\/$/); + const link = ui.window.document.querySelector(".share-link-url"); + expect(link.textContent.trim()).to.match(/\/r\/test\/$/); expect(ui.window.document.querySelector(".paper-progress")).to.equal(null); expect(ui.errors).to.deep.equal([]); }); @@ -1801,10 +1804,13 @@ describe("Vue 3 UI", function () { "/api/repo/test/files/": [{ name: filename, path: "", size: 1 }, { name: "constructor", path: "" }, { name: "index.js", path: "constructor", size: 2 }, { name: "hello.txt", path: "", size: 3 }], }); const tree = ui.window.document.querySelector("tree"); - expect(tree.textContent).to.include(filename).and.include("constructor/index.js"); + // A folder holding a single file stays a folder (only folder chains are joined as "a/b"). + expect(tree.textContent).to.include(filename).and.include("constructor"); + expect(tree.querySelector('li.folder > a[data-path="/constructor"]')).to.not.equal(null); expect(ui.window.probe).to.equal(undefined); await ui.go("/r/test/constructor/index.js"); expect(ui.window.document.querySelector("tree")).to.equal(tree); + expect(tree.querySelector('li.active > a[data-path="/constructor/index.js"]')).to.not.equal(null); expect(ui.requests.some(r => r.url.pathname === "/api/repo/test/file/constructor/index.js")).to.equal(true); await ui.go("/r/other/hello.txt"); expect(ui.requests.some(r => r.url.pathname === "/api/repo/other/options")).to.equal(true); @@ -2001,7 +2007,7 @@ describe("Vue 3 UI", function () { "/api/user/dashboard": { items: [{ _type: "repo", repoId: "package", status: "ready", source: { fullName: "owner/package", commit } }], total: 1, filtered: 1, attention: 0, cursor: null }, }); - expect(ui.window.document.querySelector(".commit-hash").textContent).to.equal(commit.slice(0, 8)); + expect(ui.window.document.querySelector(".commit-hash").textContent).to.equal(commit.slice(0, 7)); const state = ui.window.document.querySelector("#search")._field.binding.state; await state.showProjectDetails(state.items[0]); expect(ui.window.document.querySelector(".project-details").textContent).to.include(commit);