@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/sans-400-normal.woff2) format('woff2')} @font-face{font-family:"Source Sans 3";font-style:italic;font-weight:400;font-display:swap;src:url(/static/fonts/sans-400-italic.woff2) format('woff2')} @font-face{font-family:"Source Sans 3";font-style:normal;font-weight:600;font-display:swap;src:url(/static/fonts/sans-600-normal.woff2) format('woff2')} @font-face{font-family:"Source Sans 3";font-style:normal;font-weight:700;font-display:swap;src:url(/static/fonts/sans-700-normal.woff2) format('woff2')} :root{--accent:#44467d;--accentdark:#35366b;--accentsoft:#f3f4fd;--focus:#c4c8e8;--heat0:#ebedf0;--heat1:#c4c8e8;--heat2:#959acb;--heat3:#6a6ea8;--heat4:#44467d;--fg:#212529;--muted:#6c757d;--line:#dee2e6;--soft:#f8f9fa;--bar:#ddd;--add:#1a7f37;--del:#c0392b;--addbg:#e6ffec;--delbg:#ffebe9;--code:#f8f9fa} *{box-sizing:border-box} html{font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","DejaVu Sans",Arial,sans-serif;background:#fff;color:var(--fg)} body{margin:0} a{color:var(--accent);text-decoration:none} a:hover{text-decoration:underline} code,pre,.hash,.mode,.blob,.hunk,.code,textarea{font-family:"DejaVu Sans Mono",Menlo,Consolas,"Liberation Mono","SF Mono",monospace;font-size:13px} pre{background:var(--code);padding:.6rem .8rem;overflow-x:auto;border:1px solid var(--line)} pre.plain{background:none;border:0;padding:0} h1{font-size:1.6rem;font-weight:500;margin:0 0 .2rem} h2{font-size:1.4rem;font-weight:500;margin:0} h3{font-size:1.15rem;font-weight:500;margin:0 0 .6rem;padding-bottom:.3rem;border-bottom:1px solid var(--line)} h3.rule{margin-top:.5rem} h4{font-size:1rem;font-weight:500;margin:1rem 0 .4rem} h4 a{color:var(--fg)} .muted,.when{color:var(--muted)} .small{font-size:.85rem} .tag{font-size:.75rem;border:1px solid var(--line);padding:0 .3rem;color:var(--muted);vertical-align:middle} .error{color:var(--del);border:1px solid var(--del);padding:.4rem .6rem;background:#fff} .notice{border:1px solid var(--add);padding:.4rem .6rem;background:var(--addbg)} .inner,nav.site,nav.subtabs,main{max-width:1140px;margin:0 auto;padding-left:1rem;padding-right:1rem} header{margin-bottom:1rem} nav.site{display:flex;gap:1rem;align-items:center;padding-top:.5rem;padding-bottom:.5rem;flex-wrap:wrap} nav.site .brand{font-size:1.25rem;color:var(--fg);margin-right:.5rem} nav.site{color:var(--muted)} nav.site a{color:var(--muted)} nav.site .brand{color:var(--fg)} nav.site .spacer{flex:1} nav.site form{display:inline} nav.site button{background:none;border:0;color:var(--muted);cursor:pointer;font:inherit;padding:0} nav.subtabs{display:flex;gap:0;padding-top:.2rem;border-bottom:1px solid var(--bar);max-width:none} nav.subtabs a:first-child{margin-left:max(1rem,calc((100% - 1140px)/2 + 1rem))} nav.subtabs a,nav.tabs a{color:var(--muted);padding:.3rem .9rem} nav.subtabs a.active{background:#e9ecef;color:var(--fg)} nav.subtabs a:hover,nav.tabs a:hover{text-decoration:none;color:var(--fg)} .repohead{margin-top:-1rem} .repohead h2{padding:.4rem 0 .3rem;font-size:1.9rem} .tabbar{background:var(--bar)} nav.tabs{display:flex} nav.tabs a{padding:.25rem .9rem} nav.tabs a.active{background:#fff;color:var(--fg)} .repohead .desc{margin:0 0 .4rem;color:var(--muted)} .repohead+main{margin-top:1rem} .repohead+main{margin-top:0;padding-top:.6rem} body.fluid .inner,body.fluid nav.site,body.fluid main{max-width:none;margin:0} body.fluid .filebar{margin-bottom:0} body.fluid main.file{padding-top:.9rem} .summary{padding-top:.4rem} .summary{margin-top:.2rem;display:grid;grid-template-columns:4fr 1.5fr 2.6fr;gap:2rem;margin-bottom:1.5rem;align-items:start} .summary .event{background:var(--soft);padding:.4rem .5rem .5rem;margin-bottom:.6rem} .summary .event .row{display:flex;justify-content:space-between;gap:1rem} .summary .event .when{font-size:.85rem;color:var(--accent);text-decoration:underline} .summary .event .hash{text-decoration:underline} .summary .subject{margin:.3rem 0 0;background:none;border:0;padding:0;white-space:pre-wrap} .summary h3{font-weight:400;font-size:1.25rem;margin:0 0 .5rem} .summary .ref{margin-bottom:.6rem} .summary .ref a,.summary .clone a{text-decoration:underline} .summary .clone strong{display:block;margin-top:.4rem} .summary .clone div{margin-bottom:.2rem;overflow-wrap:anywhere} .readme{max-width:920px} .readme>article>h1:first-child{margin-top:0} @media(max-width:900px){.summary{grid-template-columns:1fr}} .repohead+main{margin-top:0} main{padding-bottom:3rem} .panel{background:var(--soft);padding:.8rem 1rem;margin-bottom:1.5rem} .panel.narrow{max-width:34rem;margin:1rem auto} .panel .btn{margin-top:.6rem} .panel p{margin:.4rem 0 .6rem} .btn{display:inline-block;font:inherit;font-size:.9rem;background:#e9ecef;color:var(--fg);border:1px solid #ccc;padding:.25rem .7rem;cursor:pointer;line-height:1.4} .btn:hover{text-decoration:none;background:#dde1e5} .btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)} .btn.primary:hover{background:var(--accentdark);border-color:var(--accentdark)} .btn.danger{background:#fff;color:var(--del);border-color:var(--del)} .events .event{background:var(--soft);padding:.25rem .5rem .4rem;margin-bottom:.6rem;border-bottom:0} .event h4{font-size:1rem;font-weight:400;margin:0 0 .2rem;padding-bottom:.15rem;border-bottom:1px solid var(--line)} .event h4 a{color:var(--accent)} .event p{margin:0;font-size:.95rem} .columns{display:grid;grid-template-columns:minmax(0,1fr) 18rem;gap:2.5rem;align-items:start} .columns.user{grid-template-columns:230px minmax(0,1fr);gap:2rem} .userhead{display:flex;align-items:flex-end;gap:1.2rem;border-bottom:1px solid var(--bar);margin:-1rem 0 1rem;padding:0} .userhead h2{font-size:1.7rem;padding-bottom:.2rem} nav.tabs.small{background:#e9ecef;align-self:flex-end;margin-bottom:.3rem} nav.tabs.small a{padding:.1rem .8rem} nav.tabs.small a.active{background:#ddd} .profile .avatar{display:block;width:230px;height:230px;margin-bottom:.9rem;border-radius:6px} .profile p{margin:.2rem 0} .profile .name{font-weight:600;font-size:1.35rem;line-height:1.25;margin:0} .profile .btn.block{display:block;text-align:center;margin-top:.45rem} .info{background:var(--accentsoft);color:var(--fg);padding:.5rem .7rem;border:1px solid var(--focus);margin:0} .avatar{object-fit:cover;border:1px solid var(--line);background:var(--soft)} .bio{margin:.5rem 0 .6rem} .bio p{margin:.3rem 0} ul.side,ul.files{list-style:none;padding:0;margin:0} ul.side li{padding:.15rem 0} dl.clone{margin:0 0 1rem} dl.clone dt{color:var(--muted);font-size:.85rem} dl.clone dd{margin:0 0 .4rem;overflow-wrap:anywhere} dl.meta{display:grid;grid-template-columns:6em 1fr;gap:.15rem .5rem;margin:0 0 .8rem} dl.meta dt{color:var(--muted)} dl.meta dd{margin:0;overflow-wrap:anywhere} .log .event{padding:.5rem 0;border-bottom:1px solid var(--line)} .event .subject{color:var(--fg)} .event pre.body{margin:.4rem 0 0} .filebar{display:flex;gap:1.2rem;align-items:baseline;border-bottom:1px solid var(--bar);padding:0 1rem .25rem;margin:-.6rem -1rem 0;flex-wrap:wrap} .filebar .spacer{flex:1} .filebar a.active{color:var(--fg);border-bottom:2px solid var(--fg);padding-bottom:.2rem} .filebar a{color:var(--muted)} .filebar .crumbs a{color:var(--accent);text-decoration:underline} .filebar .mode{color:var(--muted);font-family:inherit;font-size:inherit} .filebar .lastcommit{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40rem} .readme,.bio,.comment .readme{font-family:"Source Sans 3",system-ui,sans-serif;font-size:17px;line-height:1.55} .readme code,.readme pre{font-size:13.5px} .readme p{margin:.6rem 0} .readme img{max-width:100%} .readme table{border-collapse:collapse} .readme td,.readme th{border:1px solid var(--line);padding:.2rem .5rem} .readme code{background:var(--code);padding:.05rem .25rem} .readme pre code{padding:0;background:none} .readme h1{font-size:1.5rem;margin:.6rem 0} .readme h2{font-size:1.25rem;margin:1rem 0 .5rem;border-bottom:1px solid var(--line);padding-bottom:.2rem} .readme h3{border:0;font-size:1.1rem;margin:.8rem 0 .3rem} .readme blockquote{border-left:3px solid var(--line);margin:0;padding:0 1rem;color:var(--muted)} table{border-collapse:collapse} table.tree{width:100%} table.tree td{padding:.25rem .8rem .25rem 0;white-space:nowrap} table.tree .mode{color:var(--muted)} table.tree .size{color:var(--muted);text-align:right} table.tree .last{max-width:30rem;overflow:hidden;text-overflow:ellipsis;width:100%} table.tree .when{text-align:right} table.refs td,table.keys td{padding:.3rem 1rem .3rem 0;border-bottom:1px solid var(--line)} .code{margin:0 -1rem;line-height:1.45;min-height:70vh} .code .chroma .lntable{width:auto;min-width:0} .code .chroma .lntd:last-child{border-right:1px solid var(--bar);min-width:calc(80ch + 1rem);padding-right:1rem;width:auto} table.blob{width:100%} table.blob td,table.hunk td,.code td{padding:0 .5rem;white-space:pre;vertical-align:top} td.n{text-align:right;color:var(--muted);user-select:none;width:1%} td.n a{color:var(--accent);text-decoration:underline} table.blob td.n{border-right:1px solid var(--bar);padding:0 .5rem 0 .6rem} td.l{white-space:pre-wrap;overflow-wrap:anywhere;width:100%} tr:target td{background:#fff8c5} .code pre,.code .chroma{background:#fff;border:0;padding:0;margin:0} .code .chroma table.lntable{width:auto} .code .lntable{margin-top:0} .code .lntd:first-child{width:auto;user-select:none;border-right:1px solid var(--bar);padding-top:.4rem;vertical-align:top} .code .lntd:last-child{padding-top:.4rem} .code .lntd:first-child{min-height:70vh} .code .lnlinks{text-decoration:underline} .code .lnt{padding-right:.5rem} .code .lnt,.code .ln{color:var(--accent);margin-right:0;padding:0 .5rem 0 .4rem} .code .lntd a{color:var(--accent);text-decoration:none} .code .lntd:last-child{padding-left:.6rem} .code .line:target,.code .line:target .cl{background:#fff8c5} table.hunk{width:100%;border:1px solid var(--line)} .hunk .head td{color:var(--muted);background:var(--soft)} .hunk tr.add td{background:var(--addbg)} .hunk tr.del td{background:var(--delbg)} .hunk tr.meta td{color:var(--muted)} .add{color:var(--add)} .del{color:var(--del)} .diff{margin-bottom:1.5rem} .files{margin-bottom:1.2rem} .files li{padding:.1rem 0} form.stack{display:flex;flex-direction:column;gap:.7rem;max-width:34rem} form.stack.wide{max-width:52rem} form.stack label{display:flex;flex-direction:column;gap:.25rem} form.stack label.check{flex-direction:row;align-items:center;gap:.5rem} form.stack small{color:var(--muted)} .pair{display:grid;grid-template-columns:1fr 1fr;gap:1rem} input,textarea{font:inherit;color:var(--fg);background:#fff;border:1px solid #ced4da;padding:.35rem .55rem} input:disabled{background:#e9ecef} input:focus,textarea:focus{outline:2px solid var(--focus);border-color:var(--accent)} input[type=file]{border:0;padding:0} .actions{display:flex;justify-content:flex-end;gap:.5rem} .actions.left{justify-content:flex-start} .avatarform{display:grid;grid-template-columns:160px 1fr;gap:1.2rem;margin-bottom:1.2rem;align-items:start} .avatarform .avatarbox{width:160px;height:160px;border:1px solid var(--line);background:#fff} .avatarform .avatar{width:158px;height:158px;border:0} .avatarform label{display:block;margin-bottom:.3rem} .avatarform small{display:block;color:var(--muted);margin-bottom:.5rem} .cropper canvas{display:block;max-width:100%;border:1px solid var(--line);cursor:move;touch-action:none} .cropper input[type=range]{width:100%;padding:0} @media(max-width:800px){.columns,.columns.user,.pair,.avatarform{grid-template-columns:1fr}.profile .avatar{width:120px;height:120px}} .twocol{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-bottom:2rem} .twocol label{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.8rem} .twocol .legend{display:block;margin-bottom:.4rem} .twocol label.radio{flex-direction:row;flex-wrap:wrap;align-items:center;gap:.4rem;margin-bottom:.6rem} .twocol label.radio small{flex-basis:100%;color:var(--muted);padding-left:1.4rem} h3.plain{border:0;font-size:1.25rem} .columns.browse{grid-template-columns:minmax(0,2fr) 1fr} .search input[name=search],.search input[name=q]{width:100%} .search .sort{display:flex;justify-content:flex-end;align-items:center;gap:1rem;margin:.5rem 0 1rem} .search .sort label{display:flex;align-items:center;gap:.3rem} .event .tags a{color:var(--muted);text-decoration:underline;margin-right:.6rem;font-size:.9rem} .event p.tags{margin-top:.15rem} .btn.block{display:block;text-align:center} .titlerow{display:flex;align-items:center;gap:1rem} .titlerow form{margin:0} .count{background:#e9ecef;border-radius:.6rem;padding:0 .4rem;font-size:.8rem;color:var(--fg)} .pullhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem} nav.filters a{margin-right:1rem;color:var(--muted)} nav.filters a.active{color:var(--fg);font-weight:600} .state{display:inline-block;font-size:.75rem;padding:0 .4rem;border-radius:3px;color:#fff;vertical-align:middle;text-transform:lowercase;margin-right:.45rem} .state.open{background:#1a7f37} .state.merged{background:#6f42c1} .state.closed{background:#c0392b} .pulltitle{margin-bottom:1rem} .pulltitle p{margin:.2rem 0} .columns.pullbody{grid-template-columns:minmax(0,1fr) 20rem;margin-bottom:1.5rem} .comment{border:1px solid var(--line);margin-bottom:.8rem} .comment .who{background:var(--soft);padding:.3rem .6rem;border-bottom:1px solid var(--line)} .comment .readme{padding:.4rem .6rem} .comment .readme p{margin:.3rem 0} .btn.block+form{margin-top:.4rem} .btn:disabled{opacity:.5;cursor:default} select{font:inherit;padding:.35rem .5rem;border:1px solid #ced4da;background:#fff} .mergeform{max-width:none;margin:.4rem 0 .8rem} .mergeform input,.mergeform textarea{width:100%} .mergeform .actions{gap:.4rem} .panel a.btn.block{margin-top:.4rem} .verified{display:inline-block;font-size:.72rem;border:1px solid #1a7f37;color:#1a7f37;border-radius:3px;padding:0 .3rem;vertical-align:middle;margin-left:.3rem} .verified.unknown{border-color:var(--muted);color:var(--muted)} .auth{max-width:920px;margin:0 auto} .auth h3 small{font-size:.9rem;font-weight:400;margin-left:.5rem} .auth p{margin:.6rem 0 1rem} form.stack.centred{margin:0 auto 1.2rem;max-width:34rem} form.stack.centred input{width:100%} .privacy{background:#fff3cd;border:1px solid #ffeeba;color:#5c4b00;padding:.6rem .8rem} .filesearch input{padding:.15rem .4rem;font-size:.9rem;width:12rem} .hits{margin-bottom:1rem} .hits h4{margin:0 0 .2rem} .hits table.blob{border:1px solid var(--line)} mark{background:#fff3b0;padding:0} .hunk td.n a{color:var(--accent);text-decoration:none} .hunk td.n a:hover{text-decoration:underline;font-weight:600} .hunk tr.inline td{white-space:normal;padding:.4rem .6rem;background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line)} .hunk tr.inline .comment{margin:0;max-width:60rem} .hunk tr.inline.resolved .comment{opacity:.7} .comment .who{display:flex;gap:.5rem;align-items:center} .comment .tools{margin-left:auto;display:flex;gap:.6rem} .comment .tools form{display:inline} .comment .tools button{background:none;border:0;color:var(--muted);cursor:pointer;font:inherit;font-size:.85rem;padding:0} .comment .tools button:hover{color:var(--fg);text-decoration:underline} .reviewform{margin:0} .reviewform textarea{width:100%} .comment.outdated{opacity:.8} .mergeform label.radio{flex-direction:row;flex-wrap:wrap;align-items:center;gap:.4rem;margin-bottom:.1rem} .mergeform label.radio small{flex-basis:100%;color:var(--muted);padding-left:1.4rem} .btn.starred{background:#fff3cd;border-color:#ffe08a} .btn.static{cursor:default} .archived{background:#fff3cd;border:1px solid #ffeeba;color:#5c4b00;padding:.3rem .6rem;margin:.4rem 0 0} .compareform{display:flex;gap:.6rem;align-items:flex-end;margin-bottom:1rem;flex-wrap:wrap} .compareform label{display:flex;flex-direction:column;font-size:.85rem;color:var(--muted)} table.blame{width:100%} table.blame td{padding:0 .5rem;white-space:pre;vertical-align:top} table.blame td.who{width:1%;white-space:nowrap;color:var(--muted);font-family:system-ui,sans-serif;font-size:.8rem;border-right:1px solid var(--bar);padding-right:.8rem} table.blame tr.first td{border-top:1px solid var(--line)} table.blame td.l{white-space:pre-wrap;overflow-wrap:anywhere;width:100%} table.blame td.n{border-right:1px solid var(--bar)} .actions a.muted{margin-right:auto;align-self:center} .event h4{display:flex;align-items:baseline;flex-wrap:wrap} .event h4 .muted{margin-left:.4rem} .event h4 .tag{margin-left:.4rem} .event h4 .starcount{margin-left:auto;color:var(--muted);font-size:.85rem;font-weight:400} .label{display:inline-block;color:#fff;font-size:.75rem;padding:0 .45rem;border-radius:.6rem;vertical-align:middle;line-height:1.4;font-weight:500;text-shadow:0 0 2px rgba(0,0,0,.3);margin-left:.35rem} .labelbar .label,.metaform .label,table .label{margin-left:0} a.label{opacity:.75}a.label.on,a.label:hover{opacity:1;text-decoration:none} .labelbar{margin:-.4rem 0 1rem} .state.draft{background:var(--muted)} .verdict{font-size:.8rem;padding:0 .35rem;border-radius:3px;border:1px solid} .verdict.approved{color:#1a7f37;border-color:#1a7f37} .verdict.changes{color:#c0392b;border-color:#c0392b} .verdict.comment{color:var(--muted);border-color:var(--line)} .comment.review.approved .who{background:#e6ffec} .comment.review.changes .who{background:#ffebe9} .reviewverdict{margin-top:1.2rem;border-top:1px solid var(--line);padding-top:.6rem} .reviewverdict h4{margin:0 0 .3rem} .reviewverdict label.radio{flex-direction:row;flex-wrap:wrap;align-items:center;gap:.4rem;margin-bottom:.1rem} .reviewverdict label.radio small{flex-basis:100%;color:var(--muted);padding-left:1.4rem} .panel.meta h4{margin:.2rem 0 .3rem} .metaform{display:flex;flex-direction:column;gap:.2rem;margin-bottom:.6rem} .metaform label.check{display:flex;align-items:center;gap:.4rem;font-size:.9rem} .btn.small{font-size:.8rem;padding:.1rem .5rem;align-self:flex-start;margin-top:.3rem} .editform{max-width:none} .editform textarea{width:100%;font-size:13px;line-height:1.45;tab-size:4} .inlineform{display:inline} .linkbutton{background:none;border:0;padding:0;font:inherit;color:var(--muted);cursor:pointer} .linkbutton:hover{color:var(--del);text-decoration:underline} nav.site .brand{display:inline-flex;align-items:center;gap:.4rem} .logo{width:1.5rem;height:1.5rem;fill:var(--accent)}.logo circle{fill:#fff} .landing{margin:0} .landing>p{margin:.2rem 0 1rem} .landing a.arrow{text-decoration:underline} h3.featured{font-size:1.3rem;font-weight:400;margin:2rem 0 .5rem} .featuredgrid{display:grid;grid-template-columns:1fr 1fr;gap:.9rem 1rem} .feature{background:var(--soft);padding:.5rem .5rem .9rem} .feature h4{margin:0 0 .4rem;font-weight:700} .feature h4 a{color:var(--accent)} .feature h4 a.owner{color:var(--muted)} .feature blockquote{margin:0 0 .5rem;padding:0 0 0 .5rem;border-left:2px solid #aaa} .feature .tags{margin:0} .feature .tags a{color:var(--muted);text-decoration:underline;margin-right:.75rem} .landing .more{display:flex;justify-content:flex-end;margin-top:.9rem} .landing .more .btn{min-width:20rem;text-align:center} @media (max-width:700px){.featuredgrid{grid-template-columns:1fr}.landing .more .btn{min-width:0;width:100%}} .readme video,.readme img{max-width:100%;height:auto} .auth{white-space:nowrap} .pickaxe{display:flex;gap:.5rem;margin:0 0 1rem;flex-wrap:wrap}.pickaxe input{flex:1;min-width:14rem} .pickaxe select{font:inherit;color:var(--fg);background:#fff;border:1px solid #ced4da;padding:.3rem .4rem} .feedlink{margin-right:.6rem} .revisions{display:flex;flex-direction:column;gap:.2rem;margin:0 0 1rem} .revpick{display:flex;gap:.4rem;flex-wrap:wrap;margin:0 0 .8rem} .revpick a{padding:.15rem .5rem;border:1px solid var(--line);color:var(--fg)} .revpick a.active{background:var(--soft);border-color:#999} pre.rangediff{line-height:1.45} .rangediff span{display:block} .rangediff .add{background:var(--addbg)} .rangediff .del{background:var(--delbg)} .rangediff .hunk{color:var(--muted)} .rangediff .same{color:var(--muted)} .rangediff .changed{font-weight:700;color:#8a5a00} .rangediff .new{font-weight:700;color:var(--add)} .rangediff .gone{font-weight:700;color:var(--del)} table.hunk td.l,.hunk .head td{white-space:pre-wrap;overflow-wrap:anywhere;width:100%} table.hunk{table-layout:auto} pre.rangediff,pre.body{white-space:pre-wrap;overflow-wrap:anywhere} .activity{margin:0 0 1.2rem;padding:.5rem .6rem .3rem;background:var(--soft)} .activity p{margin:0 0 .3rem} .heathead{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;flex-wrap:wrap;margin-bottom:.3rem} .years{display:flex;gap:.2rem;flex-wrap:wrap;font-size:.8rem} .years a{color:var(--muted);padding:0 .35rem} .years a.active{background:var(--accent);color:#fff} .heat{display:grid;grid-template-columns:2rem 1fr;grid-template-rows:auto auto;font-size:9px;color:var(--muted);font-family:system-ui,sans-serif} .heat .months{grid-column:2;grid-row:1;display:grid;grid-template-columns:repeat(var(--weeks),1fr);height:1.1rem} .heat .months span{white-space:nowrap} .heat .days{grid-column:1;grid-row:2;display:grid;grid-template-rows:repeat(7,1fr);gap:2px} .heat .days span{line-height:1;display:flex;align-items:center} .heat .cells{grid-column:2;grid-row:2;display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,auto);grid-template-columns:repeat(var(--weeks),1fr);gap:2px} .heat .c,.heat .pad{aspect-ratio:1;border-radius:2px;position:relative} .heat .c:hover,.heat .c:focus{outline:1px solid var(--fg);outline-offset:0} .heat .c:hover::after,.heat .c:focus::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:#16181b;color:#fff;font-size:12px;padding:.2rem .45rem;border-radius:3px;white-space:nowrap;z-index:5;pointer-events:none} .heat .c.l:hover::after,.heat .c.l:focus::after{left:0;transform:none} .heat .c.r:hover::after,.heat .c.r:focus::after{left:auto;right:0;transform:none} .h0{background:var(--heat0)}.h1{background:var(--heat1)}.h2{background:var(--heat2)}.h3{background:var(--heat3)}.h4{background:var(--heat4)} .activity .legend{display:flex;align-items:center;gap:3px;justify-content:flex-end;margin:.3rem 0 0} .activity .legend i{display:inline-block;width:10px;height:10px;border-radius:2px} .profile .ident{margin-bottom:.7rem} .profile .handle{color:var(--muted);font-size:1.05rem;margin:0} .profile .bio{margin:0 0 .8rem} .profile .bio p{margin:0 0 .4rem} .facts{list-style:none;margin:0 0 1rem;padding:0;font-size:.92rem;color:var(--muted)} .facts li{display:flex;align-items:center;gap:.45rem;margin:.25rem 0;min-width:0} .facts a{color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .facts svg{flex:none;width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round} .ownactions{border-top:1px solid var(--line);padding-top:.6rem} .profile .bio.readme,.profile .bio.readme p{font-family:inherit;font-size:.98rem;line-height:1.5} .navsearch{flex:0 1 20rem;margin-left:.5rem} .navsearch input{width:100%;padding:.2rem .55rem;font-size:.9rem} .searchpage{display:grid;grid-template-columns:15rem 1fr;gap:2rem;align-items:start} .dot{display:inline-block;width:.7rem;height:.7rem;border-radius:50%;margin-right:.4rem;vertical-align:-.05rem;border:1px solid rgba(0,0,0,.12)} .bigsearch{display:flex;gap:.5rem;margin:0 0 1.2rem 17rem} .bigsearch input{flex:1;font-size:1rem;padding:.45rem .7rem} .resulthead{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:.4rem;margin-bottom:.2rem} .resulthead h3{margin:0;border:0;padding:0;font-size:1.05rem} .sorts{display:flex;gap:.8rem;font-size:.85rem} .sorts a{color:var(--muted)} .sorts a.active{color:var(--fg);font-weight:600} .hit{padding:.9rem 0;border-bottom:1px solid var(--line)} .hit h4{margin:0 0 .25rem;font-size:1.05rem;font-weight:600} .hit h4 a{color:var(--accent)} .hit h4 a.owner{color:var(--muted)} .hit p{margin:.15rem 0} .hit .tags a{color:var(--muted);text-decoration:underline;margin-right:.6rem;font-size:.85rem} .hit .meta{display:flex;gap:1.1rem;flex-wrap:wrap;color:var(--muted);font-size:.85rem;margin-top:.35rem} .hit.user{display:grid;grid-template-columns:3rem 1fr;gap:.9rem;align-items:start} .hitavatar img,.hitavatar span{display:flex;width:3rem;height:3rem;border-radius:6px;object-fit:cover;border:1px solid var(--line)} .hitavatar span{align-items:center;justify-content:center;background:var(--soft);color:var(--muted);font-size:1.3rem;text-transform:uppercase} .hit .bio{color:var(--fg);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical} .langbar{display:flex;height:.5rem;border-radius:4px;overflow:hidden;margin:.2rem 0 .5rem;background:var(--line)} .langbar span{display:block;height:100%} .langlist{list-style:none;margin:0 0 1.2rem;padding:0;font-size:.85rem;display:flex;flex-wrap:wrap;gap:.2rem 1rem} .langlist .pct{color:var(--muted);margin-left:.25rem} @media(max-width:800px){.bigsearch{margin-left:0}.searchpage{grid-template-columns:1fr;gap:.6rem}.navsearch{order:5;flex-basis:100%;margin:0}.facets{display:flex;flex-direction:column;gap:.5rem}.facetbox{padding:.4rem}.facetbox h4{display:none}.facetlist{flex-direction:row;flex-wrap:wrap;gap:.35rem}.facetlist a{border:1px solid var(--line);padding:.2rem .55rem}.facetlist a.active{border-color:var(--accent);box-shadow:none}} .facetbox{margin-bottom:1.4rem} .facetbox h4{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:.15rem .4rem .45rem;font-weight:600} .facetlist{display:flex;flex-direction:column;gap:1px} .facetlist a{display:flex;align-items:center;gap:.55rem;padding:.35rem .45rem;color:var(--fg);border-radius:4px;font-size:.93rem} .facetlist a:hover{background:var(--soft);text-decoration:none} .facetlist a.active{background:var(--accentsoft);color:var(--accent);font-weight:600;box-shadow:inset 2px 0 0 var(--accent);border-radius:0 4px 4px 0} .facetlist svg{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;color:var(--muted)} .facetlist a.active svg{color:var(--accent)} .facetlist .dot{margin:0 .1rem 0 .15rem;width:.65rem;height:.65rem} .facetlist .fname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .facetlist .count{background:none;padding:0;color:var(--muted);font-size:.8rem;font-variant-numeric:tabular-nums;font-weight:400} .clearfacet{display:block;font-size:.8rem;color:var(--muted);margin:.4rem .45rem .1rem} @media(max-width:800px){.facetbox{border:0;padding:0;margin:0}.facetlist a{border-radius:14px}.facets{gap:.35rem}} @media(max-width:800px){.facetlist{flex-direction:row;flex-wrap:wrap;gap:.35rem}.facetlist .fname{flex:none}.facetlist a{gap:.4rem}.facets{flex-direction:row;flex-wrap:wrap}} .dash{display:grid;grid-template-columns:1fr;gap:2.5rem;align-items:start;max-width:52rem}.dash:has(>section+section){grid-template-columns:3fr 2fr;max-width:none} .dashhead{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);margin-bottom:.6rem;padding-bottom:.3rem} .dashhead h3{border:0;margin:0;padding:0} @media(max-width:800px){.dash{grid-template-columns:1fr}} .orglist{margin:0 0 1rem} .orglist h4{font-size:.85rem;color:var(--muted);margin:0 0 .4rem;font-weight:600} .orglist a{display:flex;align-items:center;gap:.5rem;color:var(--fg);margin:.3rem 0} .orglist img,.orglist span{display:flex;width:1.6rem;height:1.6rem;border-radius:2px;object-fit:cover;font-size:.8rem} .hit.org .hitavatar span{background:var(--accent);color:#fff;border-radius:2px} .memberlist{list-style:none;margin:0 0 .8rem;padding:0;max-width:32rem} .memberlist li{display:flex;align-items:center;justify-content:space-between;padding:.35rem 0;border-bottom:1px solid var(--line)} .memberlist form{margin:0} .people h4{font-size:.85rem;color:var(--muted);font-weight:600;margin:0 0 .5rem;padding-bottom:.3rem;border-bottom:1px solid var(--line)} .people h4~h4{margin-top:1.2rem} .people h4 .count{font-weight:400;margin-left:.2rem} .people ul{list-style:none;margin:0;padding:0} .people li a{display:grid;grid-template-columns:2.2rem 1fr;column-gap:.6rem;align-items:center;padding:.3rem 0;color:var(--fg);text-decoration:none} .people li img,.people li span{grid-row:1/3;display:flex;width:2.2rem;height:2.2rem;border-radius:50%;object-fit:cover;border:1px solid var(--line)} .people li b{font-weight:600;font-size:.93rem;line-height:1.2} .people li small{color:var(--muted);line-height:1.2} .people li span,.orglist span{align-items:center;justify-content:center;background:var(--accent);color:#fff;font-weight:600;text-transform:uppercase} .orghead{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1.3rem;align-items:start;margin:-.4rem 0 1.3rem;padding-bottom:1.2rem;border-bottom:1px solid var(--bar)} .orgmark img,.orgmark span{display:flex;width:6rem;height:6rem;border-radius:10px;object-fit:cover;border:1px solid var(--line);background:var(--soft)} .orgmark span{align-items:center;justify-content:center;background:var(--accent);color:#fff;font-size:2.6rem;font-weight:600;text-transform:uppercase} .orgident h2{font-size:1.6rem;line-height:1.2;margin:0} .orgident .handle{color:var(--muted);margin:.1rem 0 .45rem} .orgident .bio{margin:0 0 .45rem} .orgident .bio p{margin:0} .orgident .facts{display:flex;flex-wrap:wrap;gap:.2rem 1.3rem;margin:0} .orgident .facts li{margin:0} .orgactions{display:flex;gap:.5rem} .columns.orgbody{grid-template-columns:minmax(0,1fr) 280px;gap:2rem} @media(max-width:800px){.orghead{grid-template-columns:auto minmax(0,1fr)}.orgactions{grid-column:1/-1}.orgmark img,.orgmark span{width:4.5rem;height:4.5rem;font-size:2rem}.columns.orgbody{grid-template-columns:1fr}}