._kinetic_1oio6_1{aspect-ratio:1;contain:layout paint style;isolation:isolate;width:min(112%,41.5rem);animation:_kinetic-enter_1oio6_1 .98s .22s var(--ease-out) both;justify-self:end;position:relative}._canvas_1oio6_11{opacity:.96;width:100%;height:100%;display:block}@keyframes _kinetic-enter_1oio6_1{0%{opacity:0;transform:translateY(1.5rem)scale(.94)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width<=56rem){._kinetic_1oio6_1{justify-self:center;width:min(72vw,30rem)}}@media (width<=48rem){._kinetic_1oio6_1{width:min(100%,22rem)}}@media (prefers-reduced-motion:reduce){._kinetic_1oio6_1{animation:none}}._hero_cn1sx_1{padding:calc(var(--header-height) + 3rem) var(--gutter) 3.5rem}._heroInner_cn1sx_2{max-width:var(--page-width);grid-template-columns:1.15fr 1fr;align-items:center;gap:2rem;min-height:30rem;margin:auto;display:grid}._content_cn1sx_3{z-index:1;position:relative}._eyebrow_cn1sx_4{letter-spacing:.08em;color:var(--color-muted);align-items:center;gap:.7rem;margin-bottom:2.1rem;font-size:.75rem;display:flex}._eyebrow_cn1sx_4 span{background:var(--color-ink);width:.45rem;height:.45rem;box-shadow:0 0 0 .25rem var(--color-accent);border-radius:50%}._title_cn1sx_6{font-family:var(--font-display);letter-spacing:-.065em;white-space:nowrap;font-size:clamp(3rem,6vw,6rem);font-weight:400;line-height:1.2}._intro_cn1sx_7{color:var(--color-muted);margin-top:1.7rem;font-size:1rem;line-height:1.9}._primaryAction_cn1sx_8{border-bottom:1px solid var(--color-ink);justify-content:space-between;align-items:center;gap:3rem;min-height:2.75rem;margin-top:2rem;font-size:.875rem;display:inline-flex}._primaryAction_cn1sx_8 svg{width:1rem;transition:transform var(--duration-fast)}._primaryAction_cn1sx_8:hover svg{transform:translate(.15rem,-.15rem)}._visual_cn1sx_11{min-width:0;position:relative}._visual_cn1sx_11>div{width:100%}@media (width<=64rem){._heroInner_cn1sx_2{gap:1rem;min-height:25rem}._title_cn1sx_6{font-size:clamp(2.6rem,6vw,4.5rem)}}@media (width<=48rem){._hero_cn1sx_1{padding-top:calc(var(--header-height) + 2.5rem);padding-bottom:0}._heroInner_cn1sx_2{grid-template-columns:minmax(0,1fr);gap:0;min-height:0}._title_cn1sx_6{font-size:clamp(2.6rem,10.6vw,4.7rem)}._eyebrow_cn1sx_4{margin-bottom:1.5rem}._intro_cn1sx_7{margin-top:1.4rem;font-size:.9375rem}._primaryAction_cn1sx_8{margin-top:1.5rem}._visual_cn1sx_11{width:75%;max-width:24rem;margin:-1rem 0 0 auto}}@media (prefers-reduced-motion:reduce){._primaryAction_cn1sx_8 svg{transition:none}}._projectsRoot_tmyra_1{max-width:calc(var(--page-width) + 2 * var(--gutter));padding:1rem var(--gutter) 5rem;color:var(--color-ink);margin-inline:auto}._projectsHeader_tmyra_2{padding-bottom:1.5rem}._projectsHeader_tmyra_2 h2{letter-spacing:.06em;font-size:1rem;font-weight:500}._projectsList_tmyra_4{border-top:1px solid var(--color-ink)}._projectsItem_tmyra_5{gap:var(--row-gap);min-width:0;padding-block:var(--row-padding);border-bottom:1px solid var(--color-line);scroll-margin-top:calc(var(--header-height) + 1rem);grid-template-columns:2rem minmax(0,1.05fr) minmax(0,1.5fr) 9.5rem;align-items:start;display:grid}._projectsNumber_tmyra_6{width:1.8rem;height:1.8rem;font:.75rem var(--font-mono);color:var(--color-muted);transition:background-color var(--duration-fast),color var(--duration-fast);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}._projectsItem_tmyra_5:hover ._projectsNumber_tmyra_6,._projectsItem_tmyra_5:focus-within ._projectsNumber_tmyra_6{color:var(--color-ink);background:var(--color-accent)}._projectsTitleGroup_tmyra_8{min-width:0}._projectsTitleGroup_tmyra_8 h3{font-family:var(--font-sans);letter-spacing:-.035em;overflow-wrap:anywhere;font-size:clamp(1.15rem,1.65vw,1.55rem);font-weight:500;line-height:1.35}._projectsTitleGroup_tmyra_8 p{color:var(--color-muted);margin-top:.7rem;font-size:.875rem;line-height:1.7}._projectsIcon_tmyra_11{vertical-align:-.35rem;width:1.75rem;height:1.75rem;margin-right:.55rem;display:inline-block}._projectsItem_tmyra_5[data-platform=windows] ._projectsTitleGroup_tmyra_8 h3{align-items:flex-start;gap:.55rem;display:flex}._projectsItem_tmyra_5[data-platform=windows] ._projectsTitleGroup_tmyra_8 h3>span{min-width:0}._projectsItem_tmyra_5[data-platform=windows] ._projectsIcon_tmyra_11{object-fit:contain;flex:0 0 28px;width:28px;height:28px;margin:0}._projectsBody_tmyra_15{min-width:0}._projectsMeta_tmyra_16{color:var(--color-muted);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-bottom:.85rem;font-size:.75rem;line-height:1.6;display:flex}._projectsMeta_tmyra_16 span:last-child{background:var(--color-paper-soft);padding:.1rem .45rem}._projectsDescription_tmyra_18{text-wrap:pretty;font-size:1rem;line-height:1.85}._projectsFacts_tmyra_19{color:var(--color-muted);flex-wrap:wrap;gap:.35rem .8rem;margin-top:1rem;font-size:.75rem;line-height:1.8;display:flex}._projectsFacts_tmyra_19 li+li:before{content:"/";color:var(--color-muted);margin-right:.8rem}._projectsLinks_tmyra_21{flex-direction:column;align-items:stretch;gap:.2rem;min-width:0;display:flex}._projectsWindowsLinks_tmyra_22{grid-template-columns:minmax(0,1fr);gap:.2rem;display:grid}._projectsLink_tmyra_21,._projectsLinkPrimary_tmyra_23{min-height:2.75rem;color:var(--color-muted);justify-content:space-between;align-items:center;gap:.6rem;padding:.5rem 0;font-size:.8125rem;line-height:1.5;display:inline-flex}._projectsLinkPrimary_tmyra_23{color:var(--color-ink);border-bottom:1px solid var(--color-line);font-weight:500}._projectsLinkIcon_tmyra_25{width:.875rem;transition:transform var(--duration-fast) var(--ease-out);flex:none}._projectsLink_tmyra_21:hover,._projectsLinkPrimary_tmyra_23:hover{color:var(--color-ink);text-underline-offset:.3em;text-decoration:underline}._projectsLink_tmyra_21:hover ._projectsLinkIcon_tmyra_25,._projectsLinkPrimary_tmyra_23:hover ._projectsLinkIcon_tmyra_25{transform:translate(.1rem,-.1rem)}._projectsLink_tmyra_21:focus-visible,._projectsLinkPrimary_tmyra_23:focus-visible{outline:2px solid var(--color-ink);outline-offset:.25rem}button._projectsLink_tmyra_21{text-align:left;cursor:pointer;background:0 0;border:0;font-family:inherit}._projectsDialog_tmyra_30{border:1px solid var(--color-line);background:var(--color-paper);width:min(94vw,100rem);max-width:none;height:90dvh;max-height:none;color:var(--color-ink);padding:0}._projectsDialog_tmyra_30::backdrop{background:#000000a6}._projectsDialogHeader_tmyra_32{flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;min-height:4rem;padding:.65rem 1.2rem;font-size:.875rem;display:flex}._projectsDialogHeader_tmyra_32>span{margin-right:auto}._projectsDialogHeader_tmyra_32 button{background:var(--color-ink);min-height:2.75rem;color:var(--color-paper);cursor:pointer;border:0;padding:.5rem .75rem}._projectsDialog_tmyra_30 iframe{border:0;width:100%;height:calc(100% - 4rem);display:block}@media (width<=64rem){._projectsItem_tmyra_5{grid-template-columns:1.8rem minmax(0,1fr) minmax(0,1.4fr)}._projectsLinks_tmyra_21{flex-flow:wrap;grid-column:3;column-gap:1.2rem}._projectsWindowsLinks_tmyra_22{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}._projectsLink_tmyra_21,._projectsLinkPrimary_tmyra_23{gap:.65rem}}@media (width<=48rem){._projectsRoot_tmyra_1{padding-top:2rem;padding-bottom:3rem}._projectsItem_tmyra_5{grid-template-columns:1.5rem minmax(0,1fr);gap:1rem}._projectsNumber_tmyra_6{width:1.5rem;height:1.5rem}._projectsTitleGroup_tmyra_8 h3{font-size:1.3rem}._projectsTitleGroup_tmyra_8 p{margin-top:.35rem}._projectsBody_tmyra_15,._projectsLinks_tmyra_21{grid-column:2}._projectsMeta_tmyra_16{margin-top:.2rem;margin-bottom:.65rem}._projectsDescription_tmyra_18{font-size:1rem}._projectsDialog_tmyra_30{width:100%;height:96dvh}._projectsDialogHeader_tmyra_32{gap:.5rem;padding:.5rem;font-size:.75rem}}@media (prefers-reduced-motion:reduce){._projectsNumber_tmyra_6,._projectsLinkIcon_tmyra_25{transition:none}}._header_1l1i0_1{z-index:100;height:calc(var(--header-height) + env(safe-area-inset-top,0px));padding-inline:max(var(--gutter), calc((100% - var(--page-width)) / 2));padding-top:env(safe-area-inset-top,0px);background:var(--color-paper);color:var(--color-ink);transition:background-color var(--duration-base) var(--ease-out), box-shadow var(--duration-base) var(--ease-out), backdrop-filter var(--duration-base) var(--ease-out);grid-template-columns:1fr auto auto;align-items:center;display:grid;position:fixed;top:0;left:0;right:0}._header_1l1i0_1[data-elevated=true]{box-shadow:0 1px 0 var(--color-line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f7f6f2f5}._mark_1l1i0_27{width:fit-content;font-family:var(--font-display);letter-spacing:-.04em;font-size:1.35rem;font-weight:600;line-height:1}._navigation_1l1i0_36{align-items:center;gap:clamp(1rem,2.2vw,2rem);margin-right:clamp(2rem,3vw,3.75rem);display:flex}._navLink_1l1i0_43{min-height:2.75rem;transition:opacity var(--duration-fast) var(--ease-out);align-items:center;font-size:.875rem;display:inline-flex;position:relative}._navLink_1l1i0_43:after{content:"";opacity:0;width:.2rem;height:.2rem;transition:opacity var(--duration-fast) var(--ease-out), transform var(--duration-base) var(--ease-out);background:currentColor;border-radius:50%;position:absolute;bottom:.35rem;left:50%;transform:translate(-50%,.25rem)scale(.5)}._navLink_1l1i0_43:hover,._navLink_1l1i0_43:focus-visible{text-underline-offset:.35em;text-decoration:underline}._navLink_1l1i0_43[aria-current=location]:after{opacity:1;transform:translate(-50%)scale(1)}._githubLink_1l1i0_79{justify-self:end;align-items:center;gap:.45rem;min-height:2.75rem;font-size:.875rem;display:inline-flex}._githubIcon_1l1i0_88{width:.95rem;transition:transform var(--duration-base) var(--ease-out)}._githubLink_1l1i0_79:hover ._githubIcon_1l1i0_88,._githubLink_1l1i0_79:focus-visible ._githubIcon_1l1i0_88{transform:translate(.2rem,-.2rem)}@media (width<=48rem){._navigation_1l1i0_36{margin-right:clamp(1rem,5vw,1.75rem)}._navLink_1l1i0_43,._githubLink_1l1i0_79{font-size:.75rem}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-paper:#f7f6f2;--color-paper-soft:#eeece6;--color-paper-hover:#e8e5de;--color-ink:#11110f;--color-muted:#66645d;--color-line:#11110f1f;--color-inverse:#f7f6f2;--color-accent:#d9ee86;--content-width:90rem;--page-width:80rem;--row-gap:clamp(1.25rem, 2.4vw, 2.5rem);--row-padding:clamp(2rem, 3.4vw, 3.5rem);--font-sans:"Helvetica Neue", "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", Arial, sans-serif;--font-display:"Iowan Old Style", "Noto Serif SC", "Source Han Serif SC", "Songti SC", SimSun, Georgia, serif;--font-mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--gutter:clamp(1.25rem, 5.4vw, 6.75rem);--header-height:4.5rem;--radius-panel:clamp(.8rem, 1.2vw, 1.25rem);--duration-fast:.18s;--duration-base:.48s;--duration-slow:.82s;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1)}@media (width<=48rem){:root{--header-height:4.25rem;--radius-panel:.8rem}}*,:before,:after{box-sizing:border-box}html{background:var(--color-paper);scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + env(safe-area-inset-top,0px))}body{background:var(--color-paper);min-width:0;min-height:100svh;color:var(--color-ink);font-family:var(--font-sans);text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;margin:0;font-size:1rem;line-height:1.5;overflow-x:clip}button,input,textarea,select{font:inherit}a{color:inherit;text-decoration:none}img,svg{max-width:100%;display:block}h1,h2,h3,p,ol,ul{margin:0}ol,ul{padding:0;list-style:none}::selection{background:var(--color-ink);color:var(--color-inverse)}:focus-visible{outline-offset:4px;outline:2px solid}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}#root{background:var(--color-paper);min-height:100svh}main{overflow:clip}.skip-link{z-index:1000;background:var(--color-ink);color:var(--color-inverse);transition:transform var(--duration-fast) var(--ease-out);padding:.7rem 1rem;font-size:.875rem;font-weight:700;position:fixed;top:.75rem;left:.75rem;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}
