.github{padding-block:var(--space-normal);align-items:start;row-gap:clamp(2rem,4vw,4rem)}.github>.section-title{grid-column:1/-1}.github__handle{font:500 var(--t-s) / 1.4 var(--f-mono);color:var(--muted);letter-spacing:0;margin-top:1.5rem;display:block}.github__profile{top:calc(var(--frame-h) + 2rem);grid-area:2/1/span 3/4;align-self:start;justify-items:start;gap:1rem;min-width:0;display:grid;position:sticky}.github__avatar-frame{aspect-ratio:1;outline:1px solid var(--ink);outline-offset:-1px;width:100%;max-width:20rem;position:relative}.github__avatar{aspect-ratio:1;object-fit:cover;filter:grayscale()contrast(1.1);border-radius:0;width:100%;height:auto}.github__avatar-frame:active .card__color{clip-path:circle(150%)}.github__name{font:800 var(--t-l) / 1.05 var(--f-display);letter-spacing:-.025em;overflow-wrap:anywhere}.github__fact{font:500 var(--t-xs) / 1.6 var(--f-mono);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.github a.github__fact{min-height:24px;color:var(--ink);text-underline-offset:.2em;transition:color var(--snap) var(--ease-out);align-items:center;padding-block:.2rem;text-decoration:underline;text-decoration-thickness:1px;display:inline-flex}@media (hover:hover){.github a.github__fact:hover{color:var(--code);text-decoration-thickness:2px}}.github a.github__fact:focus-visible{color:var(--code);text-decoration-thickness:2px}.github__bio{font:400 var(--t-s) / 1.5 var(--f-body)}.github__follows{flex-wrap:wrap;column-gap:1rem;display:flex}.github__repositories{grid-area:2/4/auto/13;min-width:0}.github__pins-title,.github__overview h3,.github__activity h3{font:600 var(--t-s) / 1.3 var(--f-body);margin-bottom:1.5rem}.github__pins{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1rem,2vw,2rem);padding:0;list-style:none;display:grid}.github__pins>li{min-width:0}.github .repo-card{border:1px solid var(--line);border-radius:0;flex-direction:column;gap:1.25rem;height:100%;min-height:15rem;padding:clamp(1.25rem,2vw,2.5rem);display:flex;position:relative}.github .repo-card>.sel{inset:-1px;scale:1}.repo-card__header{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.github .repo-card__name{font:600 var(--t-m) / 1.2 var(--f-body);overflow-wrap:anywhere;transition:translate var(--snap) var(--ease-out)}.github .repo-card__description{color:var(--muted);font:400 var(--t-s) / 1.5 var(--f-body)}.github .repo-card__meta{font:400 var(--t-xs) / 1.4 var(--f-body);flex-wrap:wrap;align-items:center;gap:.65rem;margin-top:auto;display:flex}.github .repo-card__language{align-items:center;gap:.45rem;display:inline-flex}.github__chip{border:1px solid var(--ink);font:500 var(--t-xs) / 1.3 var(--f-body);overflow-wrap:anywhere;padding:.2em .45em;display:inline-block}.github__chip--fork{background:var(--redline);color:#000;border-color:var(--redline)}.github .repo-card__stars{font-family:var(--f-mono);font-variant-numeric:tabular-nums}.repo-card__topics{flex-wrap:wrap;gap:.4rem;padding:0;list-style:none;display:flex}.github__topic{border:1px solid var(--line);font:400 var(--t-xs) / 1.4 var(--f-mono);overflow-wrap:anywhere;padding:.3em .45em}.github .repo-card:focus-visible .repo-card__name,.github .repo-card:active .repo-card__name{translate:.15em}@media (hover:hover){.github .repo-card:hover .repo-card__name{translate:.15em}}.langbar{gap:2px;height:.5rem;display:flex}.langbar i{flex-basis:0;min-width:2px}.langbar__swatch{flex-shrink:0;width:.75rem;height:.75rem;display:inline-block}.langbar [data-rank="0"],.langbar__swatch[data-rank="0"]{background:var(--code)}.langbar [data-rank="1"],.langbar__swatch[data-rank="1"]{background:#0000008c}.langbar [data-rank="2"],.langbar__swatch[data-rank="2"]{background:#0000004d}.langbar [data-rank="3"],.langbar__swatch[data-rank="3"]{background:#00000024}.langbar__list{font-size:var(--t-xs);gap:.75rem;margin-top:1rem;padding:0;list-style:none;display:grid}.langbar__list li{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.langbar__list .num{margin-left:auto}.github__contributions{grid-area:3/4/auto/13;min-width:0;margin:0}.github__contrib-title{font:500 var(--t-m) / 1.3 var(--f-body);margin-bottom:1.5rem}.github__contrib-total{font:800 var(--t-xl) / .9 var(--f-display);letter-spacing:-.035em;margin-bottom:.75rem;display:block}.contrib__frame{grid-template-columns:2.5rem minmax(0,1fr);column-gap:.5rem;display:grid}.contrib__days{font:400 var(--t-xs) / 1 var(--f-mono);color:var(--muted);grid-template-rows:repeat(7,minmax(0,1fr));gap:3px;display:grid}.contrib__days span{align-self:center}.github .contrib,.github .contrib__months{grid-template-columns:repeat(53,minmax(0,1fr));gap:3px;display:grid}.github .contrib__months{font:400 var(--t-xs) / 1.3 var(--f-mono);color:var(--muted);margin-bottom:.65rem}.github .contrib__months>span{grid-column:var(--week);white-space:nowrap}.github .contrib__months [data-mobile-only]{display:none}.github .contrib__week{grid-template-rows:repeat(7,auto);gap:3px;display:grid}.github .contrib__cell{aspect-ratio:1;background:#ebedf0;border-radius:0;display:block;position:relative}.github .contrib__cell[data-level="0"]{background:#ebedf0}.github .contrib__cell[data-level="1"]{background:#9be9a8}.github .contrib__cell[data-level="2"]{background:#40c463}.github .contrib__cell[data-level="3"]{background:#30a14e}.github .contrib__cell[data-level="4"]{background:#216e39}.github .contrib__cell--empty{visibility:hidden}@media (hover:hover){.github .contrib__week:has(.contrib__cell[data-tip]:hover) .contrib__cell:not(.contrib__cell--empty){box-shadow:inset 0 0 0 1px var(--redline)}.github .contrib:has(.contrib__week>.contrib__cell[data-tip]:first-child:hover) .contrib__week>.contrib__cell:first-child:not(.contrib__cell--empty){box-shadow:inset 0 0 0 1px var(--redline)}.github .contrib:has(.contrib__week>.contrib__cell[data-tip]:nth-child(2):hover) .contrib__week>.contrib__cell:nth-child(2):not(.contrib__cell--empty){box-shadow:inset 0 0 0 1px var(--redline)}.github .contrib:has(.contrib__week>.contrib__cell[data-tip]:nth-child(3):hover) .contrib__week>.contrib__cell:nth-child(3):not(.contrib__cell--empty){box-shadow:inset 0 0 0 1px var(--redline)}.github .contrib:has(.contrib__week>.contrib__cell[data-tip]:nth-child(4):hover) .contrib__week>.contrib__cell:nth-child(4):not(.contrib__cell--empty){box-shadow:inset 0 0 0 1px var(--redline)}.github .contrib:has(.contrib__week>.contrib__cell[data-tip]:nth-child(5):hover) .contrib__week>.contrib__cell:nth-child(5):not(.contrib__cell--empty){box-shadow:inset 0 0 0 1px var(--redline)}.github .contrib:has(.contrib__week>.contrib__cell[data-tip]:nth-child(6):hover) .contrib__week>.contrib__cell:nth-child(6):not(.contrib__cell--empty){box-shadow:inset 0 0 0 1px var(--redline)}.github .contrib:has(.contrib__week>.contrib__cell[data-tip]:nth-child(7):hover) .contrib__week>.contrib__cell:nth-child(7):not(.contrib__cell--empty){box-shadow:inset 0 0 0 1px var(--redline)}.github .contrib__cell[data-tip]:hover{outline:2px solid var(--redline);outline-offset:1px;z-index:1}.github .contrib__cell[data-tip]:hover:after{content:attr(data-tip);z-index:2;background:var(--redline);color:#000;font:400 var(--t-xs) / 1.3 var(--f-mono);white-space:nowrap;pointer-events:none;border:0;padding:.5rem;position:absolute;bottom:calc(100% + .5rem);left:50%;translate:-50%}.github .contrib__week:nth-child(-n+12) .contrib__cell[data-tip]:hover:after{left:0;translate:none}.github .contrib__week:nth-last-child(-n+12) .contrib__cell[data-tip]:hover:after{left:auto;right:0;translate:none}}.github .contrib--off{aspect-ratio:53/7;border:1px solid var(--line);justify-content:center;align-items:center;padding:1rem;display:flex}.github .contrib--off p{font:400 var(--t-s) / 1.5 var(--f-body);color:var(--muted)}.github .contrib__legend{font:400 var(--t-xs) / 1.3 var(--f-body);color:var(--muted);justify-content:end;align-items:center;gap:.4rem;margin-top:.75rem;display:flex}.github .contrib__legend .contrib__cell{width:.75rem}.github .contrib__phone-note{display:none}.github__overview{grid-area:4/4/auto/8}.github__activity{grid-area:4/8/auto/13}.github__overview,.github__activity{min-width:0;font:400 var(--t-s) / 1.5 var(--f-body)}.github__overview .utility,.github__activity .utility{text-underline-offset:.2em;min-height:24px;padding-block:.3em;line-height:1.3;text-decoration:underline;display:inline-block}.github__overview .utility:hover,.github__activity .utility:hover,.github__overview .utility:focus-visible,.github__activity .utility:focus-visible{color:var(--ink);background:#0000ff1a;padding-inline:.15em;text-decoration-thickness:2px}.overview__bars{gap:1.25rem;margin-top:2rem;padding:0;list-style:none;display:grid}.overview__bars li{grid-template-columns:1fr auto;gap:.5rem;display:grid}.overview__track{border:1px solid var(--line);grid-column:1/-1;height:.5rem}.overview__track i,.activity__track i{background:var(--code);transform-origin:0;width:100%;height:100%;display:block}.activity__month+*,.activity__quiet+*{margin-top:2rem}.activity__month h4{font:600 var(--t-s) / 1.3 var(--f-body);border-bottom:1px solid var(--line);padding-bottom:.75rem}.activity__group{margin-top:1.25rem}.activity__rows{gap:.75rem;margin-top:.75rem;padding:0;list-style:none;display:grid}.activity__rows li{overflow-wrap:anywhere;grid-template-columns:minmax(0,1fr) 40% auto;align-items:center;gap:.75rem;display:grid}.activity__track{height:.5rem}.activity__quiet{color:var(--muted)}.github .sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (max-width:1023px){.github__profile,.github__repositories,.github__contributions,.github__overview,.github__activity{grid-area:auto/1/auto/-1;position:static}.github__avatar-frame{max-width:8rem}.github__profile{max-width:32rem}.github__pins{grid-template-columns:minmax(0,1fr)}.github .repo-card{min-height:13rem}.contrib__frame{grid-template-columns:minmax(0,1fr)}.contrib__days,.contrib__frame>span{display:none}.github .contrib,.github .contrib__months{grid-template-columns:repeat(26,minmax(0,1fr))}.github .contrib__week:nth-child(-n+27),.github .contrib__months [data-old]{display:none}.github .contrib__months>span{grid-column:calc(var(--week) - 27)}.github .contrib__months [data-mobile-only]{display:block}.github .contrib--off{aspect-ratio:26/7}.github .contrib__phone-note{font:400 var(--t-xs) / 1.4 var(--f-body);color:var(--muted);margin-top:.75rem;display:block}}@media (prefers-reduced-motion:reduce){.github .repo-card__name{transition:none;translate:none!important}}@media (prefers-reduced-motion:reduce) and (hover:hover){.github__avatar-frame:hover .card__color{clip-path:none}}.repo{grid-template-columns:repeat(var(--cols), minmax(0, 1fr));column-gap:var(--gutter);padding:var(--hero-top) var(--gutter) var(--space-normal);align-items:start;row-gap:clamp(2rem,4vw,4rem);display:grid}.repo>*{min-width:0}.repo-header,.repo-file,.repo-unavailable{grid-column:1/-1}.repo-header{flex-wrap:wrap;align-items:baseline;gap:1.5rem;display:flex}.repo-breadcrumb{font:400 var(--t-xs) / 1.7 var(--f-mono);overflow-wrap:anywhere;flex-basis:100%}.repo-breadcrumb ol{flex-wrap:wrap;padding:0;list-style:none;display:flex}.repo-breadcrumb a{text-underline-offset:.2em;min-height:24px;padding-block:.3em;line-height:1.3;text-decoration:underline;display:inline-block}.repo-breadcrumb a:hover,.repo-breadcrumb a:focus-visible{color:var(--code);background:#0000ff1a;padding-inline:.15em;text-decoration-thickness:2px}.repo-breadcrumb__separator{margin-inline:.6ch}.repo-header__commit{flex-wrap:wrap;align-items:baseline;gap:1ch;display:flex}.repo-header__title{font:800 var(--t-xl) / .92 var(--f-display);letter-spacing:-.035em;overflow-wrap:anywhere;flex-basis:100%;margin-left:-.035em}.repo-header__fork{font:400 var(--t-xs) / 1.5 var(--f-mono);flex-basis:100%}.repo-header__meta{font-size:var(--t-s);flex-wrap:wrap;gap:1.5rem;display:flex}.repo-header__meta dt,.repo-file__footer dt{color:var(--muted);margin-bottom:.4rem}.repo-header__meta dd,.repo-file__footer dd{margin:0}.repo-date{font:400 var(--t-xs) / 1.5 var(--f-mono)}.repo-unavailable{border-top:1px solid var(--line);padding-block:clamp(2rem,6vw,5rem)}.repo-unavailable p{max-width:40ch;font-size:var(--t-m);margin-bottom:1.5rem;line-height:1.4}.repo-about{top:calc(var(--frame-h) + 2rem);grid-area:2/9/span 2/13;gap:1.5rem;display:grid;position:sticky}.repo-about>*+*{border-top:1px solid var(--line);padding-top:1.5rem}.repo-about h2{font:600 var(--t-m) / 1.3 var(--f-body);margin-bottom:1rem}.repo-about h3{font:600 var(--t-s) / 1.3 var(--f-body);margin-bottom:1rem}.repo-about__text{font:400 var(--t-s) / 1.5 var(--f-body);overflow-wrap:anywhere}.repo-about__website{font-size:var(--t-xs);overflow-wrap:anywhere;margin-top:1rem}.repo-about__facts{font-size:var(--t-xs);gap:.75rem;display:grid}.repo-about__facts>div{justify-content:space-between;gap:1rem;display:flex}.repo-about__facts dd{font-family:var(--f-mono);overflow-wrap:anywhere;margin:0}.repo-tree,.repo>.repo-readme{grid-column:1/9}.repo-tree__title,.repo-readme__title,.repo-file__name{font:600 var(--t-m) / 1.2 var(--f-body);overflow-wrap:anywhere;margin-bottom:1.5rem}.repo-tree__commit{border:1px solid var(--line);font-size:var(--t-xs);grid-template-columns:auto minmax(0,1fr) auto auto;align-items:baseline;gap:.75rem;padding:1rem .75rem;display:grid}.repo-tree__commit strong{font-weight:600}.repo-tree__commit>span[title]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.repo-tree__commits{text-align:right;font-size:var(--t-xs);margin-top:.75rem}.repo-tree__columns,.repo-tree__row{font-size:var(--t-xs);grid-template-columns:minmax(0,1fr) 7ch 8ch;align-items:baseline;column-gap:1rem;display:grid}.repo-tree__columns{color:var(--muted);border-left:1px solid #0000;border-bottom:1px solid var(--ink);padding:.75rem}.repo-tree__entries{padding:0;list-style:none}.repo-tree__row{border-left:1px solid #0000;border-bottom:1px solid var(--line);min-height:44px;padding:.85rem .75rem}.repo-tree__name{overflow-wrap:anywhere;font-size:var(--t-s);transition:translate var(--snap) var(--ease-out)}.repo-tree__row:hover .repo-tree__name,.repo-tree__row:focus-visible .repo-tree__name{translate:.15em}.repo-tree__name:before{content:"";vertical-align:baseline;width:.7em;height:.7em;margin-right:.6em;display:inline-block}[data-type=tree] .repo-tree__name:before{background:var(--ink)}[data-type=blob] .repo-tree__name:before{box-shadow:inset 0 0 0 1px}.repo-tree__row--up .repo-tree__name:before{display:none}.repo-tree__type{color:var(--muted);font-size:var(--t-xs)}.repo-tree__type,.repo-tree__columns>span:nth-child(2){text-align:left}.repo-tree__size{min-width:4ch;font:400 var(--t-xs) / 1.5 var(--f-mono)}.repo-tree__size,.repo-tree__columns>span:nth-child(3){text-align:right;font-variant-numeric:tabular-nums}.repo-tree__row:focus-visible,.repo-tree__row:hover{color:var(--code);border-left-color:var(--code)}.repo-tree__row:focus-visible .repo-tree__type,.repo-tree__row:hover .repo-tree__type{color:inherit}.repo-file__header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1.5rem;margin-bottom:1.5rem;display:flex}.repo-file__name{margin:0}.repo-file__actions{flex-wrap:wrap;align-items:center;gap:1.25rem;display:flex}.repo-secondary{border:1px solid var(--ink);min-height:44px;color:var(--ink);font:500 var(--t-s) / 1.2 var(--f-body);cursor:pointer;background:0 0;border-radius:0;padding:.7em 1em}.repo-secondary:hover,.repo-secondary:focus-visible{color:var(--code);border-color:var(--code)}.repo-secondary__label{transition:translate var(--snap) var(--ease-out);display:inline-block}.repo-secondary:hover .repo-secondary__label,.repo-secondary:focus-visible .repo-secondary__label{translate:.15em}.repo-file__code{border:1px solid var(--line);max-width:100%;font:400 .875rem / 1.8 var(--f-mono);tab-size:2;padding:1.25rem 0;overflow-x:auto}.repo-file__code code{font:inherit}.repo-file__line{white-space:pre}.repo-file__gutter{text-align:right;min-width:5ch;color:var(--muted);-webkit-user-select:none;user-select:none;margin-right:2ch;padding-left:1ch;display:inline-block}.repo-file__source{padding-right:1.25rem}.repo .code-key{color:var(--code)}.repo .code-muted{color:#5c5c5c}.repo-file__preview{border:1px solid var(--line);padding:clamp(1.25rem,3vw,3rem)}.repo-file__image{border:1px solid var(--line);justify-content:center;margin:0;padding:2rem;display:flex}.repo-file__image img{object-fit:contain;max-width:100%;height:auto}.repo-file__footer{margin-top:1.5rem}.repo-file__footer dl{font-size:var(--t-xs);flex-wrap:wrap;gap:1.5rem 2.5rem;display:flex}.repo-file__footer dd{font-family:var(--f-mono)}.repo-file__binary{border-block:1px solid var(--line);padding-block:3rem}.repo-readme__note{color:var(--muted);font-size:var(--t-s);margin-bottom:2rem;line-height:1.5}.repo-readme__body{font:400 var(--t-body) / 1.65 var(--f-body);overflow-wrap:anywhere}.repo-readme__body>*+*{margin-top:1.25rem}.repo-readme__h1{font:800 clamp(2rem, 4vw, 5rem) / 1.05 var(--f-display);letter-spacing:-.03em}.repo-readme__body h3{font:600 var(--t-l) / 1.2 var(--f-body);letter-spacing:-.02em;margin-top:2.5rem}.repo-readme__body h4{font:600 var(--t-m) / 1.3 var(--f-body);margin-top:2rem}.repo-readme__body h5,.repo-readme__body h6{font:600 var(--t-body) / 1.4 var(--f-body);margin-top:1.5rem}.repo-readme__body a{color:var(--code);text-underline-offset:.18em;text-decoration:underline}.repo-readme__body a:hover,.repo-readme__body a:focus-visible,.repo-about__website .inline-link:hover,.repo-about__website .inline-link:focus-visible{color:var(--code);background:#0000ff14;padding-inline:.1em;text-decoration-thickness:2px}.repo-readme__body pre{border:1px solid var(--line);max-width:100%;font:400 .875rem / 1.7 var(--f-mono);padding:1rem;overflow-x:auto}.repo-readme__body pre:focus-visible{outline:1px solid var(--code);outline-offset:3px}.repo-readme__body code{font-size:.875em}.repo-readme__body pre code{font:inherit}.repo-readme__body ul,.repo-readme__body ol{padding-left:1.5em}.repo-readme__body table{border-collapse:collapse;max-width:100%;font-size:var(--t-s);display:block;overflow-x:auto}.repo-readme__body th,.repo-readme__body td{border:1px solid var(--line);text-align:left;padding:.6em .8em}.repo-readme__body blockquote{border-left:2px solid var(--ink);padding-left:1.25rem}.repo-readme__body img{filter:grayscale();max-width:100%;height:auto}.repo-readme__body img:hover,.repo-readme__body a:focus-visible img{filter:none}.repo .badge-chip{border:1px solid var(--ink);font:400 .75rem / 1.5 var(--f-mono);color:var(--ink);background:0 0;border-radius:0;padding:.25em .5em;display:inline-block}@media (min-width:1024px){.repo{width:100%;max-width:var(--content-max);margin-inline:auto}}@media (max-width:1023px){.repo-tree,.repo>.repo-readme,.repo-about{grid-area:auto/1/auto/-1;position:static}.repo-tree__columns,.repo-tree__row{grid-template-columns:minmax(0,1fr) 8ch}.repo-tree__row>.repo-tree__type,.repo-tree__columns>span:nth-child(2){display:none}.repo-header{gap:1rem}.repo-header__title{font-size:clamp(3rem,12vw,6rem)}.repo-tree__commit{grid-template-columns:auto minmax(0,1fr)}.repo-tree__commit .repo-date{white-space:normal}.repo-file__code,.repo-readme__body pre{font-size:.75rem}.repo-file__gutter{min-width:4ch;margin-right:1.5ch}}.repo>.nf{padding-inline:0;grid-column:1/-1;padding-top:0}@media (prefers-reduced-motion:reduce){.repo-secondary__label,.repo-tree__name{transition:none;translate:none!important}}
