@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a342834df7752944-s.bb140f9f.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.50575af1.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.78d1a7ae.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.247c8473.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.18d7c7dc.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.71e1367e.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a342834df7752944-s.bb140f9f.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.50575af1.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.78d1a7ae.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.247c8473.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.18d7c7dc.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.71e1367e.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/a342834df7752944-s.bb140f9f.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.50575af1.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.78d1a7ae.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.247c8473.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.18d7c7dc.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.71e1367e.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope Fallback;src:local(Arial);ascent-override:103.31%;descent-override:29.07%;line-gap-override:0.0%;size-adjust:103.19%}.manrope_eea9c52b-module__8xmFsG__className{font-family:Manrope,Manrope Fallback;font-style:normal}.manrope_eea9c52b-module__8xmFsG__variable{--font-manrope:"Manrope","Manrope Fallback"}
@font-face{font-family:Sora;font-style:normal;font-weight:500;font-display:swap;src:url(../media/3dbe685087e51055-s.7d71229e.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6bd983bd58a87a3d-s.p.cf80dd39.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sora;font-style:normal;font-weight:600;font-display:swap;src:url(../media/3dbe685087e51055-s.7d71229e.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6bd983bd58a87a3d-s.p.cf80dd39.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sora;font-style:normal;font-weight:700;font-display:swap;src:url(../media/3dbe685087e51055-s.7d71229e.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-weight:700;font-display:swap;src:url(../media/6bd983bd58a87a3d-s.p.cf80dd39.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sora Fallback;src:local(Arial);ascent-override:85.29%;descent-override:25.5%;line-gap-override:0.0%;size-adjust:113.73%}.sora_10a6d994-module___ZTkWG__className{font-family:Sora,Sora Fallback;font-style:normal}.sora_10a6d994-module___ZTkWG__variable{--font-sora:"Sora","Sora Fallback"}
:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--text-main:#101010;--text-soft:#2f2f2f;--text-dim:#6f6f6f;--line:#00000029;--divider-spacing:32px;--content-max-width:686px;--footer-top-spacing:20px;--footer-logo-gap:4px;--footer-social-icon-size:22px;--footer-social-icon-color:var(--text-dim);--link:#1a1a1a}*,:before,:after{box-sizing:border-box}html,body{min-height:100%}html{font-size:93%}body{color:var(--text-main);font-family:var(--font-manrope),-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;padding:var(--divider-spacing)24px 0;background:#fff;flex-direction:column;align-items:center;margin:0;display:flex;overflow-x:hidden}.hero>*,#placeholder .recent-tracks .placeholder-column-header,#placeholder .recent-tracks .recent-tracks-list>li,#placeholder .recent-tracks .recent-tracks-note,#contributions,#contributions .contribution-scroll,#contributions .contribution-summary,#projects>h2,#projects .projects-grid>.project-card,.webring{opacity:0;will-change:transform,opacity;animation:.98s cubic-bezier(.1,.92,.2,1) forwards fade-in-up;transform:translateY(20px)}.hero>:first-child{animation-delay:.14s}.hero>:nth-child(2){animation-delay:.34s}.hero>:nth-child(3){animation-delay:.54s}#placeholder .recent-tracks .placeholder-column-header{animation-delay:1.38s}#placeholder .recent-tracks .recent-tracks-list>li,#placeholder .recent-tracks .recent-tracks-note{animation-delay:1.26s}#contributions{animation-delay:.76s}#contributions .contribution-scroll{animation-delay:.9s}#contributions .contribution-summary{animation-delay:1.02s}#projects>h2{animation-delay:1.14s}#projects .projects-grid>.project-card{animation-delay:1.26s}.webring{animation-delay:1.5s}#projects:before{content:"";background:var(--line);opacity:0;will-change:transform,opacity;height:1px;animation:.98s cubic-bezier(.1,.92,.2,1) 1.06s forwards fade-in-up;position:absolute;top:0;left:0;right:0;transform:translateY(20px)}@keyframes fade-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.page{z-index:1;width:min(var(--content-max-width),100%);gap:8px;min-width:0;display:grid;position:relative}.hero{gap:20px;padding-top:0;display:grid;position:relative}.hero p{max-width:none}.placeholder-section{margin-top:calc(var(--divider-spacing) - 6px);padding:30px 0;position:relative}.placeholder-section:before{content:"";background:var(--line);opacity:0;will-change:transform,opacity;height:1px;animation:.98s cubic-bezier(.1,.92,.2,1) 1.02s forwards fade-in-up;position:absolute;top:0;left:0;right:0;transform:translateY(20px)}.placeholder-copy{color:var(--text-dim);max-width:none}.placeholder-grid{grid-template-columns:minmax(0,1fr);display:grid}.placeholder-column{min-width:0}.placeholder-column-right{border-left:0;padding-left:0}.placeholder-column-header{justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:18px;display:flex}.placeholder-column h2{margin:0}.recent-tracks{min-width:0}.recent-tracks-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.recent-tracks-list--tiles{grid-template-rows:repeat(3,auto);grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:column;gap:10px 12px}.recent-track-item{grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:11px;display:grid}.recent-track-item--tile{background:var(--recent-track-gradient,linear-gradient(118deg,#202431f5 0%,#1a1c26f2 62%,#14161ef0 100%));border:1px solid #2930458c;border-radius:10px;min-height:68px;padding:11px 13px;transition:transform .22s,box-shadow .22s,border-color .22s;position:relative;overflow:hidden;box-shadow:0 1px 2px #0a0a0e38,0 8px 20px #0a0c1424}.recent-track-item--tile:before{content:"";pointer-events:none;background:linear-gradient(114deg,#0a0b107a 0%,#0c0d135c 60%,#0d0f153d 100%);position:absolute;inset:0}.recent-track-overlay-link{z-index:1;border-radius:inherit;position:absolute;inset:0}.recent-track-overlay-link:focus-visible{outline-offset:2px;outline:2px solid #f8f9ffbd}.recent-track-item--tile:hover,.recent-track-item--tile:focus-within{border-color:#425884b8;transform:translateY(-1px);box-shadow:0 3px 7px #08090e42,0 12px 22px #080a112e}.recent-track-cover{z-index:2;pointer-events:none;object-fit:cover;background:#ffffff1a;border-radius:10px;width:44px;height:44px;position:relative;box-shadow:inset 0 0 0 1px #ffffff29}.recent-track-cover--fallback{background:linear-gradient(160deg,#494f61b3,#2a2f3ccc);display:block}.recent-track-content{z-index:2;pointer-events:none;gap:4px;min-width:0;display:grid;position:relative}.recent-track-link{color:inherit;text-decoration:none;display:block}.recent-track-link:hover,.recent-track-link:focus-visible{text-decoration:none}.recent-track-title{color:#fff;white-space:nowrap;text-overflow:ellipsis;vertical-align:top;min-width:0;font-size:.96rem;font-weight:600;line-height:1.28;display:inline-block;overflow:hidden}.recent-track-meta{color:#ffffffdb;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.82rem;line-height:1.32;overflow:hidden}.recent-track-actions{z-index:3;justify-content:flex-end;align-items:center;display:flex;position:relative}.recent-track-preview-button{color:#fcfdfffa;background:0 0;border:0;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:color .16s;display:inline-flex}.recent-track-preview-button:hover:not(:disabled),.recent-track-preview-button:focus-visible:not(:disabled){color:#fff}.recent-track-preview-button:focus-visible{outline:none}.recent-track-preview-button:disabled{cursor:not-allowed;color:#eaefff94}.recent-track-preview-icon{justify-content:center;align-items:center;display:inline-flex}.recent-track-preview-icon--play{border-top:7px solid #0000;border-bottom:7px solid #0000;border-left:12px solid;width:0;height:0;margin-left:2px}.recent-track-preview-icon--stop{background:currentColor;border-radius:1px;width:10px;height:10px}.recent-track-preview-icon--loading{border:2px solid #f8fcff6b;border-top-color:#f8fcfff5;border-radius:50%;width:12px;height:12px;animation:.7s linear infinite recent-track-preview-spin}.recent-track-preview-icon--unavailable{opacity:.72;background:currentColor;border-radius:999px;width:16px;height:2px}.recent-track-status{color:#edf3fff2;align-items:center;gap:6px;margin:1px 0 0;font-size:.72rem;line-height:1.2;display:inline-flex}.recent-track-status-dot{background:#bdd6fff2;border-radius:999px;width:6px;height:6px;animation:1.2s ease-in-out infinite recent-track-status-pulse;box-shadow:0 0 #abcaff8f}.recent-track-status--error{color:#f7e0e0f2}.recent-track-status--unavailable{color:#ebeffacc}.recent-tracks-list--loading .recent-track-item--tile{background:linear-gradient(118deg,#1f2331f5 0%,#1a1e29f0 100%)}.recent-tracks-list--loading .recent-track-cover{box-shadow:none;background:linear-gradient(90deg,#0000000f,#0000001f,#0000000f) 0 0/240% 100%;border-radius:10px;animation:1.4s ease-in-out infinite recent-track-pulse}.recent-track-line{z-index:1;background:linear-gradient(90deg,#ffffff14,#fff3,#ffffff14) 0 0/240% 100%;border-radius:999px;animation:1.4s ease-in-out infinite recent-track-pulse;display:block;position:relative}.recent-track-line--title{width:64%;height:12px}.recent-track-line--meta{width:46%;height:9px}.recent-tracks-note{color:#dae2f5eb;background:linear-gradient(118deg,#202431f5,#1a1d28f2);border:1px solid #232e4673;border-radius:10px;padding:12px}@keyframes recent-track-pulse{0%{background-position:100%}to{background-position:-100%}}@keyframes recent-track-status-pulse{0%{transform:scale(.96);box-shadow:0 0 #abcaff94}70%{transform:scale(1);box-shadow:0 0 0 7px #abcaff00}to{transform:scale(.96);box-shadow:0 0 #abcaff00}}@keyframes recent-track-preview-spin{to{transform:rotate(360deg)}}h1{font-family:var(--font-sora),var(--font-manrope),sans-serif;letter-spacing:.01em;margin:0;font-size:clamp(1.45rem,3.6vw,1.8rem);font-weight:600}.hero-title{text-align:left;margin-left:-.04em}.name-subtitle{color:#8f8f8f;margin-top:-15px;font-size:.8rem;line-height:1.45}.name-subtitle a{color:inherit;background-image:linear-gradient(#00000059,#00000059),linear-gradient(#000,#000);background-position:0 calc(100% - 1px),0 calc(100% - 1px);background-repeat:no-repeat;background-size:100% 1px,0% 1px;margin-left:.22em;text-decoration:none;transition:background-size .48s;display:inline-block}.name-subtitle a:hover,.name-subtitle a:focus-visible{background-size:100% 1px,100% 1px}p{max-width:64ch;color:var(--text-soft);margin:0;font-size:clamp(.86rem,1.6vw,.96rem);line-height:1.8}a{color:var(--link);text-underline-offset:3px;text-decoration-color:#00000073}.panel{border-top:1px solid var(--line);margin-top:var(--divider-spacing);padding-top:var(--divider-spacing)}#projects{margin-top:calc(var(--divider-spacing) - 6px);border-top:none;position:relative}#placeholder+#projects{margin-top:0}h2{text-align:left;font-family:var(--font-sora),var(--font-manrope),sans-serif;margin:0 0 22px -.04em;font-size:1.5rem;font-weight:600}.contribution-panel{width:100%;min-width:0;margin-top:calc(var(--divider-spacing) - 8px);border-top:none;gap:14px;padding-top:0;display:grid}.contribution-scroll{-webkit-overflow-scrolling:touch;touch-action:pan-x;width:100%;max-width:100%;margin-top:0;padding-top:0;padding-bottom:0;overflow:auto hidden}.contribution-canvas{width:100%;min-width:0;max-width:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif}.contribution-svg{display:block;overflow:visible}.contribution-cell-tooltip-trigger{cursor:pointer;background:0 0;border:0;border-radius:2px;width:100%;height:100%;margin:0;padding:0;display:block}.contribution-cell-tooltip-trigger:focus-visible{outline-offset:2px;outline:2px solid #111}.ui-tooltip-content{z-index:30;pointer-events:none;color:#111;white-space:nowrap;text-align:center;min-width:0;transform-origin:var(--radix-tooltip-content-transform-origin);background:#f2f2f2;border-radius:8px;padding:6px 10px;line-height:1.2;animation-duration:.18s;animation-timing-function:ease;animation-fill-mode:both;box-shadow:0 8px 18px #0000003d}.ui-tooltip-content[data-state=delayed-open],.ui-tooltip-content[data-state=instant-open]{animation-name:contribution-tooltip-fade-in}@keyframes contribution-tooltip-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.contribution-tooltip-date{color:#8f8f8f;margin:2px 0 0;font-size:12px;font-weight:500;line-height:1.3;display:block}.contribution-tooltip-count{opacity:1;margin:0;font-size:12px;font-weight:600;line-height:1.3;display:block}.contribution-summary{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;width:100%;min-width:0;margin-top:14px;display:flex}.contribution-summary p{color:#8f8f8f;min-width:0;margin:0;font-size:12px;line-height:1.5}.contribution-legend{color:#8f8f8f;align-items:center;gap:6px;font-size:12px;line-height:1;display:inline-flex}.contribution-legend-scale{grid-auto-flow:column;gap:3px;display:inline-grid}.contribution-empty{color:var(--text-dim);margin:0;font-size:.9rem}.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 10px;margin:0;display:grid}.project-card{gap:12px;display:grid}.project-media{cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;min-height:202px;text-decoration:none;transition:box-shadow .22s,transform .22s;display:flex;position:relative;overflow:hidden}.project-media>*{opacity:1;animation:none;transform:none}.project-media:before{content:"";opacity:.18;background-image:repeating-linear-gradient(90deg,#94a3b833 0 1px,#0000 1px 28px);position:absolute;inset:0}.project-media:after{content:"";background:linear-gradient(#fff0 56%,#ffffff14 100%);position:absolute;inset:0}.project-media:hover{transform:translateY(-2px);box-shadow:0 18px 34px #0f172a24}.project-media:focus-visible{outline-offset:3px;outline:2px solid #0f172a;transform:translateY(-2px);box-shadow:0 18px 34px #0f172a24}.project-media--light{color:#1e293b;background:linear-gradient(#f8fafc 0%,#edf2f8 100%)}.project-media--blue{color:#0f5d95;background:linear-gradient(#f8fafc 0%,#e7eef8 100%)}.project-image{z-index:1;object-fit:cover;image-rendering:auto;backface-visibility:hidden;will-change:transform;transform-origin:top;width:100%;height:100%;transition:transform .25s,filter .25s;position:absolute;inset:0;transform:translateY(0)scale(1)}.project-media:hover .project-image,.project-media:focus-visible .project-image{filter:none;transform:translateY(-2px)scale(1.01)}.project-body{gap:8px;display:grid}.project-heading{justify-content:space-between;align-items:baseline;gap:12px;width:100%;display:flex}.project-body h3{font-family:var(--font-sora),var(--font-manrope),sans-serif;flex:auto;min-width:0;margin:0;font-size:1.16rem;font-weight:600}.project-title-link{color:inherit;background-image:linear-gradient(#00000059,#00000059),linear-gradient(#000,#000);background-position:0 calc(100% - 1px),0 calc(100% - 1px);background-repeat:no-repeat;background-size:0% 1px,0% 1px;text-decoration:none;transition:background-size .48s}.project-title-link:hover,.project-title-link:focus-visible{background-size:100% 1px,100% 1px}.project-year{color:#8f8f8f;letter-spacing:.01em;white-space:nowrap;flex:none;margin-left:auto;font-size:.84rem;font-weight:500;line-height:1.2}.project-body p{color:#525252;max-width:none;font-size:.93rem;line-height:1.55}.webring{z-index:1;width:min(var(--content-max-width),100%);padding-top:var(--footer-top-spacing);padding-bottom:var(--divider-spacing);border-top:1px solid var(--line);margin-top:0;position:relative}.webring-row{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:14px;display:grid}.webring-copy{color:#8f8f8f;letter-spacing:.01em;white-space:nowrap;justify-self:start;margin:0;font-size:.82rem;font-weight:500}.webring-links{align-items:center;gap:var(--footer-logo-gap);grid-template-columns:24px 28px 24px;justify-content:center;justify-self:center;display:grid}.webring-link{justify-content:center;align-items:center;width:28px;height:28px;line-height:1;transition:opacity .22s;display:inline-flex}.webring-link--arrow{place-items:center;width:24px;height:24px;padding:0;display:grid}.webring-logo-link{opacity:1;justify-content:center;align-items:center;width:28px;height:28px;line-height:1;transition:opacity .22s;display:inline-flex}.webring-arrow-glyph{color:#8f8f8f;opacity:.78;font-size:1.05rem;line-height:1;transition:color .22s,opacity .22s;display:block}.social-links{grid-template-columns:repeat(3,max-content);justify-self:end;align-items:center;column-gap:10px;width:max-content;margin-right:0;padding-right:0;display:grid}.social-link{color:var(--footer-social-icon-color);justify-content:center;align-items:center;width:auto;height:auto;padding:0;line-height:1;transition:opacity .22s;display:inline-flex}.webring-link:hover{opacity:.8}.webring-link--arrow:hover,.webring-link--arrow:focus-visible{opacity:1}.webring-link--arrow:hover .webring-arrow-glyph,.webring-link--arrow:focus-visible .webring-arrow-glyph{color:var(--text-main);opacity:1}.social-link:hover{opacity:1}.social-link ion-icon{color:#6f6f6f;opacity:.78;width:var(--footer-social-icon-size);height:var(--footer-social-icon-size);font-size:var(--footer-social-icon-size);margin:0;padding:0;line-height:1;transition:color .22s,opacity .22s;display:block}.social-link:hover ion-icon,.social-link:focus-visible ion-icon{color:var(--text-main);opacity:1}.webring-link:focus-visible{outline-offset:2px;opacity:.8;border-radius:6px;outline:2px solid #0f172a}.social-link:focus-visible{outline-offset:2px;opacity:1;border-radius:6px;outline:2px solid #0f172a}.webring a{color:var(--text-soft);font-size:1.08rem;text-decoration:none;transition:color .2s,box-shadow .22s,transform .22s}.webring a.webring-logo-link{transition:opacity .22s}.webring a:hover{color:var(--text-main)}.webring img{display:block}.webring-logo-image{opacity:.78;filter:brightness(0)saturate()invert(57%)sepia(0%)saturate(0%)hue-rotate(152deg)brightness(95%)contrast(90%);width:30px;max-width:none;height:auto;transition:filter .22s,opacity .22s}.webring-logo-link:hover,.webring-logo-link:focus-visible{opacity:1}.webring-logo-link:hover .webring-logo-image,.webring-logo-link:focus-visible .webring-logo-image{opacity:1;filter:none}.webring-logo-link:focus-visible{outline-offset:2px;border-radius:6px;outline:2px solid #0f172a}@media (max-width:750px){body{padding:var(--divider-spacing)20px 0}.contribution-summary{align-items:flex-start}.contribution-canvas{overflow:visible}}@media (max-width:640px){.projects-grid{grid-template-columns:1fr;gap:22px}.project-media{aspect-ratio:16/10;min-height:0}}@media (max-width:632px){.webring-row{text-align:center;grid-template-columns:1fr;justify-items:center;gap:10px}.webring-copy,.social-links,.webring-links{justify-self:center}.social-links{margin-right:0}}@media (max-width:600px){body{padding:var(--divider-spacing)16px 0}.hero{gap:16px}h1{margin-top:14px}h2{margin-bottom:18px;font-size:1.24rem}.contribution-summary p,.contribution-legend{font-size:11px}p{font-size:.95rem;line-height:1.72}.project-body h3{font-size:1.04rem}.placeholder-grid{grid-template-columns:1fr;gap:20px}.placeholder-column-right{border-left:0;padding-top:0;padding-left:0}.recent-track-item{grid-template-columns:40px minmax(0,1fr) auto;gap:9px}.recent-track-cover{width:40px;height:40px}.recent-tracks-list--tiles{grid-template-rows:none;grid-template-columns:1fr;grid-auto-flow:row}}@media (prefers-reduced-motion:reduce){.hero>*,#placeholder .recent-tracks .placeholder-column-header,#placeholder .recent-tracks .recent-tracks-list>li,#placeholder .recent-tracks .recent-tracks-note,#contributions,#contributions .contribution-scroll,#contributions .contribution-summary,#projects>h2,#projects .projects-grid>.project-card,.webring,.projects-grid>.project-card{opacity:1;will-change:auto;animation:none;transform:none}.project-media,.project-image,.project-title-link,.webring-logo-image,.webring-logo-link,.webring-link,.social-link{transition:none}#projects:before,.placeholder-section:before{opacity:1;will-change:auto;animation:none;transform:none}.project-media:hover,.project-media:focus-visible,.project-media:hover .project-image,.project-media:focus-visible .project-image,.webring-link:hover .webring-logo-image,.webring-link:focus-visible .webring-logo-image,.webring-logo-link:hover .webring-logo-image,.webring-logo-link:focus-visible .webring-logo-image,.webring-link:hover,.social-link:hover,.webring-link:focus-visible,.social-link:focus-visible{box-shadow:none;filter:none;transform:none}.recent-track-item--tile{transition:none}.recent-tracks-list--loading .recent-track-cover,.recent-track-line,.recent-track-status-dot,.recent-track-preview-icon--loading{animation:none}}
