@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:optional;src:url(../media/e390973e931a41c5-s.a82ecf4e.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:optional;src:url(../media/59b15b4bcd7b1eb5-s.afa48be3.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:optional;src:url(../media/e532fa1b9921e1cd-s.764b43eb.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:optional;src:url(../media/2fe89d53234c61d4-s.cb53f04b.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:optional;src:url(../media/99e609270109b47d-s.p.64b9304e.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:IBM Plex Mono;font-style:normal;font-weight:600;font-display:optional;src:url(../media/6ff74e33ebd7bca3-s.140490a3.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:IBM Plex Mono;font-style:normal;font-weight:600;font-display:optional;src:url(../media/1a69062cfe6f77f8-s.b36ae37c.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:optional;src:url(../media/9a4838fcda0d1bca-s.bf5f8a12.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:IBM Plex Mono;font-style:normal;font-weight:600;font-display:optional;src:url(../media/2e95a7d252b9825a-s.10086973.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:IBM Plex Mono;font-style:normal;font-weight:600;font-display:optional;src:url(../media/23b7a97ae3b5c134-s.p.2902b61f.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:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_59916996-module__4Kp65G__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.ibm_plex_mono_59916996-module__4Kp65G__variable{--font-mono:"IBM Plex Mono","IBM Plex Mono Fallback"}
.ArrowLink-module__4nMbsG__link{color:var(--color-text);font-size:var(--text-base);transition:color var(--transition-fast);text-decoration:none;display:inline}.ArrowLink-module__4nMbsG__link:hover{color:var(--color-accent)}.ArrowLink-module__4nMbsG__link:hover .ArrowLink-module__4nMbsG__arrow{transform:translate(3px)}.ArrowLink-module__4nMbsG__arrow{color:var(--color-accent);transition:transform var(--transition-fast);vertical-align:middle;justify-content:center;align-items:center;font-size:1.1em;line-height:1;display:inline-flex;position:relative;top:-.1em}.ArrowLink-module__4nMbsG__link .ArrowLink-module__4nMbsG__arrow:first-child{margin-right:.3em}.ArrowLink-module__4nMbsG__link .ArrowLink-module__4nMbsG__arrow:last-child{margin-left:.3em}
.CopyButton-module__pvcrta__copyButton{padding:var(--space-xs);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:flex}.CopyButton-module__pvcrta__copyIcon{color:var(--color-text-muted);opacity:.6;transition:opacity var(--transition-fast),color var(--transition-fast);font-size:1.1em}.CopyButton-module__pvcrta__copyButton:hover .CopyButton-module__pvcrta__copyIcon{opacity:1;color:var(--color-accent)}
.GitHubCalendar-module__L5j-ZG__calendarWrapper{width:100%;margin:var(--space-lg)0;margin-bottom:var(--space-xl);flex-direction:column;gap:1rem;display:flex}.GitHubCalendar-module__L5j-ZG__graphContainer{scrollbar-color:var(--color-text-muted)var(--color-bg-secondary);flex-direction:column;align-items:center;gap:8px;padding-bottom:8px;display:flex;overflow:hidden;scrollbar-width:thin!important;-ms-overflow-style:auto!important}.GitHubCalendar-module__L5j-ZG__graphContainer::-webkit-scrollbar{background:var(--color-bg-secondary);width:6px;height:6px;display:block!important}.GitHubCalendar-module__L5j-ZG__graphContainer::-webkit-scrollbar-track{background:var(--color-bg-secondary);border-radius:0}.GitHubCalendar-module__L5j-ZG__graphContainer::-webkit-scrollbar-thumb{background:var(--color-text-muted);border-radius:0}.GitHubCalendar-module__L5j-ZG__graphContainer::-webkit-scrollbar-thumb:hover{background:var(--color-text)}@media (max-width:48rem){.GitHubCalendar-module__L5j-ZG__graphContainer{direction:rtl;align-items:flex-start;overflow-x:auto!important}.GitHubCalendar-module__L5j-ZG__graph{direction:ltr}}.GitHubCalendar-module__L5j-ZG__graph{justify-content:space-between;gap:2px;width:fit-content;min-width:100%;display:flex}.GitHubCalendar-module__L5j-ZG__column{flex-direction:column;gap:2px;display:flex}.GitHubCalendar-module__L5j-ZG__cell{width:10px;height:10px}.GitHubCalendar-module__L5j-ZG__footer{color:var(--color-text-muted);font-size:.75rem;font-family:var(--font-mono);justify-content:space-between;align-items:center;width:100%;display:flex}.GitHubCalendar-module__L5j-ZG__legend{align-items:center;gap:6px;display:flex}.GitHubCalendar-module__L5j-ZG__legend span{margin:0 2px}.GitHubCalendar-module__L5j-ZG__legendCell{width:10px;height:10px}.GitHubCalendar-module__L5j-ZG__error{color:var(--color-error);border:1px solid var(--color-error);font-family:var(--font-mono);padding:1rem}
.GitHubStars-module___c4gkq__stars{font-size:var(--text-sm);color:var(--color-text-muted);background:var(--color-bg-secondary);border-radius:var(--border-radius);transition:color var(--transition-fast),border-color var(--transition-fast);border:2px solid #0000;align-items:center;gap:.3em;padding:.2em .6em;display:inline-flex}.GitHubStars-module___c4gkq__stars:hover{border-color:var(--color-accent)}.GitHubStars-module___c4gkq__icon{color:var(--color-accent);font-size:1em}.GitHubStars-module___c4gkq__count{font-weight:500}
.ImageCarousel-module__COtR1a__carousel{opacity:0;width:100vw;height:clamp(17.5rem,35vw + 6.25rem,31.25rem);margin-left:calc(50% - 50vw);transition:opacity .4s cubic-bezier(.22,1,.36,1);position:relative}.ImageCarousel-module__COtR1a__carousel.ImageCarousel-module__COtR1a__ready{opacity:1}.ImageCarousel-module__COtR1a__viewport{height:100%;overflow:hidden}.ImageCarousel-module__COtR1a__container{will-change:transform;height:100%;display:flex}.ImageCarousel-module__COtR1a__slide{height:100%;margin-right:var(--space-lg);flex:none;justify-content:center;align-items:center;display:flex}.ImageCarousel-module__COtR1a__image{object-fit:contain;opacity:0;width:auto;max-width:max(17.5rem,85vw);height:100%;transition:opacity .4s ease-out}.ImageCarousel-module__COtR1a__image.ImageCarousel-module__COtR1a__imageLoaded{opacity:1}.ImageCarousel-module__COtR1a__navZoneLeft,.ImageCarousel-module__COtR1a__navZoneRight{z-index:20;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.ImageCarousel-module__COtR1a__navZoneLeft{left:var(--space-lg)}.ImageCarousel-module__COtR1a__navZoneRight{right:var(--space-lg)}.ImageCarousel-module__COtR1a__arrow{background:var(--color-bg);border:2px solid var(--color-border);width:clamp(2.25rem,3vw + 1.5rem,3rem);height:clamp(2.25rem,3vw + 1.5rem,3rem);color:var(--color-text);cursor:pointer;pointer-events:auto;justify-content:center;align-items:center;font-size:clamp(1.1rem,1vw + .8rem,1.5rem);transition:all .3s cubic-bezier(.25,1,.5,1);display:flex}@media (hover:hover){.ImageCarousel-module__COtR1a__navZoneLeft,.ImageCarousel-module__COtR1a__navZoneRight{pointer-events:auto;cursor:pointer;width:20%;height:100%;top:0;bottom:0;transform:none}.ImageCarousel-module__COtR1a__navZoneLeft{padding-left:var(--space-xl);justify-content:flex-start;left:0}.ImageCarousel-module__COtR1a__navZoneRight{padding-right:var(--space-xl);justify-content:flex-end;right:0}.ImageCarousel-module__COtR1a__arrow{opacity:.6;background:var(--color-bg);border:2px solid var(--color-border);width:4rem;height:4rem;font-size:2rem}.ImageCarousel-module__COtR1a__navZoneLeft:hover .ImageCarousel-module__COtR1a__arrow,.ImageCarousel-module__COtR1a__navZoneRight:hover .ImageCarousel-module__COtR1a__arrow{opacity:1;border-color:var(--color-accent);color:var(--color-accent);background:var(--color-bg)}.ImageCarousel-module__COtR1a__arrow:active{background:var(--color-bg-secondary)}}@media (hover:none){.ImageCarousel-module__COtR1a__arrow:active{opacity:.8}}@media (max-width:48rem){.ImageCarousel-module__COtR1a__carousel{height:auto;min-height:12.5rem}.ImageCarousel-module__COtR1a__slide{height:auto;margin-right:var(--space-md);flex:0 0 85vw}.ImageCarousel-module__COtR1a__image{width:100%;max-width:100%;height:auto}}
.Logo-module__ugCtEW__container{--logo-offset:5.4%;justify-content:center;align-items:center;width:4.5rem;height:4.5rem;animation:20s linear infinite Logo-module__ugCtEW__spin;display:flex;position:relative}.Logo-module__ugCtEW__three{will-change:transform;backface-visibility:hidden;width:100%;height:100%;transform-style:preserve-3d;position:absolute;top:50%;left:50%;overflow:visible}.Logo-module__ugCtEW__three path{fill:none;stroke-width:16px;stroke-linecap:butt;stroke-linejoin:bevel}.Logo-module__ugCtEW__three:first-child path,.Logo-module__ugCtEW__three:nth-child(2) path,.Logo-module__ugCtEW__three:nth-child(3) path{stroke:var(--color-accent)}.Logo-module__ugCtEW__three:first-child{z-index:1;animation:6s cubic-bezier(.65,0,.35,1) infinite Logo-module__ugCtEW__rotate1}.Logo-module__ugCtEW__three:nth-child(2){z-index:2;animation:6s cubic-bezier(.65,0,.35,1) infinite Logo-module__ugCtEW__rotate2}.Logo-module__ugCtEW__three:nth-child(3){z-index:3;animation:6s cubic-bezier(.65,0,.35,1) infinite Logo-module__ugCtEW__rotate3}@keyframes Logo-module__ugCtEW__rotate1{0%,to{transform:translate(-50%,-50%)rotate(0)translate(0)}20%,80%{transform:translate(-50%,-50%)rotate(0deg)translateX(var(--logo-offset))}}@keyframes Logo-module__ugCtEW__rotate2{0%,to{transform:translate(-50%,-50%)rotate(0)translate(0)}20%,80%{transform:translate(-50%,-50%)rotate(120deg)translateX(var(--logo-offset))}}@keyframes Logo-module__ugCtEW__rotate3{0%,to{transform:translate(-50%,-50%)rotate(0)translate(0)}20%,80%{transform:translate(-50%,-50%)rotate(-120deg)translateX(var(--logo-offset))}}@keyframes Logo-module__ugCtEW__spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.Logo-module__ugCtEW__dispersed .Logo-module__ugCtEW__three:first-child{animation:.8s cubic-bezier(.34,1.56,.64,1) Logo-module__ugCtEW__disperse1}.Logo-module__ugCtEW__dispersed .Logo-module__ugCtEW__three:nth-child(2){animation:.8s cubic-bezier(.34,1.56,.64,1) Logo-module__ugCtEW__disperse2}.Logo-module__ugCtEW__dispersed .Logo-module__ugCtEW__three:nth-child(3){animation:.8s cubic-bezier(.34,1.56,.64,1) Logo-module__ugCtEW__disperse3}@keyframes Logo-module__ugCtEW__disperse1{0%,to{transform:translate(-50%,-50%)rotate(0)translate(0)}50%{transform:translate(-50%,-50%)rotate(30deg)translate(160%)}}@keyframes Logo-module__ugCtEW__disperse2{0%,to{transform:translate(-50%,-50%)rotate(0)translate(0)}50%{transform:translate(-50%,-50%)rotate(150deg)translate(160%)}}@keyframes Logo-module__ugCtEW__disperse3{0%,to{transform:translate(-50%,-50%)rotate(0)translate(0)}50%{transform:translate(-50%,-50%)rotate(-90deg)translate(160%)}}
.PhotoItem-module__wLksUq__photoWrapper{break-inside:avoid;margin-bottom:var(--space-sm);background:var(--color-bg-secondary);opacity:0;will-change:opacity,transform;contain:layout style paint;border-radius:0;transition:opacity .4s ease-out,transform .4s ease-out;position:relative;overflow:hidden;transform:translateY(1rem)}.PhotoItem-module__wLksUq__photoWrapper.PhotoItem-module__wLksUq__visible{opacity:1;transform:none}.PhotoItem-module__wLksUq__placeholder{background:var(--color-bg-tertiary);z-index:1;width:100%;height:100%;transition:opacity .3s ease-out;position:absolute;inset:0}.PhotoItem-module__wLksUq__photoWrapper.PhotoItem-module__wLksUq__loaded .PhotoItem-module__wLksUq__placeholder{opacity:0;pointer-events:none}.PhotoItem-module__wLksUq__image{object-fit:cover;opacity:0;z-index:2;width:100%;height:100%;transition:opacity .3s ease-out;display:block;position:absolute;inset:0}.PhotoItem-module__wLksUq__photoWrapper.PhotoItem-module__wLksUq__loaded .PhotoItem-module__wLksUq__image{opacity:1}.PhotoItem-module__wLksUq__imageLink{z-index:2;cursor:pointer;display:block;position:absolute;inset:0}
.ProjectCard-module__uQSOIq__card{color:inherit;gap:var(--space-xs);flex-direction:column;text-decoration:none;display:flex}.ProjectCard-module__uQSOIq__imageWrapper{aspect-ratio:16/9;background:var(--color-bg-secondary);outline-offset:4px;width:100%;transition:outline-color var(--transition-fast);border-radius:0;outline:2px solid #0000;flex-shrink:0;display:flex;position:relative;overflow:hidden}.ProjectCard-module__uQSOIq__card:hover .ProjectCard-module__uQSOIq__imageWrapper{outline-color:var(--color-accent)}.ProjectCard-module__uQSOIq__image{object-fit:cover}.ProjectCard-module__uQSOIq__placeholder{background:var(--color-bg-tertiary);justify-content:center;align-items:center;width:100%;height:100%;display:flex}.ProjectCard-module__uQSOIq__placeholderText{font-size:var(--text-3xl);color:var(--color-text-dim);text-transform:uppercase}.ProjectCard-module__uQSOIq__content{flex-direction:column;padding:0;display:flex}@media (max-width:40rem){.ProjectCard-module__uQSOIq__content{padding-top:var(--space-xs);padding-bottom:0}}.ProjectCard-module__uQSOIq__title{font-size:var(--text-base);color:var(--color-text);transition:color var(--transition-fast);align-items:center;gap:0;margin:0 0 .25rem;font-weight:500;line-height:1.2;display:flex}.ProjectCard-module__uQSOIq__card:hover .ProjectCard-module__uQSOIq__title{color:var(--color-accent)}.ProjectCard-module__uQSOIq__arrow{opacity:0;color:var(--color-accent);transition:opacity var(--transition-fast),transform var(--transition-fast);margin-left:.3em;font-size:1.1em;transform:translate(-4px)}.ProjectCard-module__uQSOIq__card:hover .ProjectCard-module__uQSOIq__arrow{opacity:1;transform:translate(0)}.ProjectCard-module__uQSOIq__description{font-size:var(--text-sm);color:var(--color-text-muted);margin:0;line-height:1.4}
.MobileBottomNav-module__1STAna__bottomNav{z-index:1000;background-color:var(--color-bg);border-top:1px solid var(--color-border);padding:var(--space-sm)var(--space-md);padding-bottom:calc(var(--space-sm) + env(safe-area-inset-bottom,0px));font-family:var(--font-mono);font-size:var(--text-sm);scrollbar-width:none;-ms-overflow-style:none;justify-content:safe center;align-items:center;gap:0;display:none;position:fixed;bottom:0;left:0;right:0;overflow-x:auto}.MobileBottomNav-module__1STAna__bottomNav::-webkit-scrollbar{display:none}@media (max-width:48rem){.MobileBottomNav-module__1STAna__bottomNav{display:flex}}.MobileBottomNav-module__1STAna__logoSection{flex-shrink:0;align-items:center;padding:0 clamp(2px,.5vw,6px);display:flex}.MobileBottomNav-module__1STAna__logo{width:1.25rem;height:1.25rem}.MobileBottomNav-module__1STAna__separator{color:var(--color-text-dim);-webkit-user-select:none;user-select:none;flex-shrink:0;padding:0 clamp(3px,.75vw,8px)}.MobileBottomNav-module__1STAna__navLinks{scrollbar-width:none;-ms-overflow-style:none;justify-content:center;align-items:center;margin:0;padding:0;list-style:none;display:flex}.MobileBottomNav-module__1STAna__navLinks::-webkit-scrollbar{display:none}.MobileBottomNav-module__1STAna__linkWrapper{flex-shrink:0;align-items:center;display:flex}.MobileBottomNav-module__1STAna__linkWrapper:last-child .MobileBottomNav-module__1STAna__separator{display:none}.MobileBottomNav-module__1STAna__navLink{color:var(--color-text-muted);padding:var(--space-xs)clamp(2px,.5vw,6px);white-space:nowrap;transition:color var(--transition-fast);background:0 0;border:none;outline:none;text-decoration:none;display:block}.MobileBottomNav-module__1STAna__navLink:hover{color:var(--color-text)}.MobileBottomNav-module__1STAna__navLink:focus{color:var(--color-text-muted)}.MobileBottomNav-module__1STAna__navLink:focus-visible{color:var(--color-text);outline:1px solid var(--color-accent);outline-offset:-1px}.MobileBottomNav-module__1STAna__navLink.MobileBottomNav-module__1STAna__active,.MobileBottomNav-module__1STAna__navLink.MobileBottomNav-module__1STAna__active:hover,.MobileBottomNav-module__1STAna__navLink.MobileBottomNav-module__1STAna__active:focus,.MobileBottomNav-module__1STAna__navLink.MobileBottomNav-module__1STAna__active:focus-visible{color:var(--color-accent)}
.ClientLayout-module__3LDiLq__layoutWrapper{isolation:isolate;flex-direction:column;min-height:100vh;display:flex;position:relative}.ClientLayout-module__3LDiLq__header{width:100%;max-width:var(--max-width-header);padding:0 var(--header-padding);height:var(--header-height);opacity:1;visibility:visible;z-index:100;flex-shrink:0;justify-content:space-between;align-items:center;gap:2rem;margin:0 auto;transition:transform .5s,opacity .4s,visibility .4s;display:flex;position:relative;transform:translateY(0)}.ClientLayout-module__3LDiLq__header.ClientLayout-module__3LDiLq__home{opacity:0;visibility:hidden;pointer-events:none;position:absolute;top:0;left:0;right:0;transform:translateY(-100%)}.ClientLayout-module__3LDiLq__container{z-index:1;flex-direction:column;flex:1;display:flex;position:relative}.ClientLayout-module__3LDiLq__transition{background-color:var(--color-bg);flex:1;width:100%}@media (max-width:48rem){.ClientLayout-module__3LDiLq__header{display:none}.ClientLayout-module__3LDiLq__container{padding-bottom:calc(3rem + env(safe-area-inset-bottom,0px))}}
.page-module__dgei_G__backLink{color:var(--color-text-muted);font-size:var(--text-sm);margin-bottom:var(--space-lg);transition:color var(--transition-fast);align-items:center;display:inline-flex}.page-module__dgei_G__backLink:hover{color:var(--color-accent)}.page-module__dgei_G__backArrow{transition:transform var(--transition-fast);justify-content:center;align-items:center;margin-right:.3em;font-size:1.1em;line-height:1;display:inline-flex}.page-module__dgei_G__backLink:hover .page-module__dgei_G__backArrow{transform:translate(-.3em)}.page-module__dgei_G__header{margin-bottom:var(--space-xl);padding-bottom:var(--space-lg);border-bottom:1px solid var(--color-border)}.page-module__dgei_G__date{color:var(--color-text-dim);font-size:var(--text-sm);margin-bottom:var(--space-sm);display:block}.page-module__dgei_G__title{font-size:var(--text-2xl);color:var(--color-text);margin-bottom:var(--space-xs);font-weight:600}.page-module__dgei_G__description{color:var(--color-text-muted);font-size:var(--text-base);margin:0}
.page-module__LT-C6q__backLink{color:var(--color-text-muted);font-size:var(--text-sm);margin-bottom:var(--space-lg);transition:color var(--transition-fast);align-items:center;display:inline-flex}.page-module__LT-C6q__backLink:hover{color:var(--color-accent)}.page-module__LT-C6q__backArrow{transition:transform var(--transition-fast);justify-content:center;align-items:center;margin-right:.3em;font-size:1.1em;line-height:1;display:inline-flex}.page-module__LT-C6q__backLink:hover .page-module__LT-C6q__backArrow{transform:translate(-.3em)}.page-module__LT-C6q__header{margin-bottom:var(--space-xl)}.page-module__LT-C6q__titleRow{justify-content:space-between;align-items:baseline;gap:var(--space-lg);flex-wrap:wrap;display:flex}.page-module__LT-C6q__title{align-items:center;gap:var(--space-sm);font-size:var(--text-2xl);color:var(--color-text);margin:0;font-weight:600;display:flex}.page-module__LT-C6q__description{color:var(--color-text-muted);font-size:var(--text-base);margin-top:var(--space-sm);margin-bottom:0}.page-module__LT-C6q__links{gap:var(--space-lg);display:flex}.page-module__LT-C6q__carousel{margin-bottom:var(--space-xl)}.page-module__LT-C6q__stackItems{gap:var(--space-xs);margin-top:var(--space-md);flex-wrap:wrap;display:flex}.page-module__LT-C6q__stackItem{font-size:var(--text-sm);color:var(--color-text-muted);background:var(--color-bg-secondary);transition:color var(--transition-fast),border-color var(--transition-fast);border:2px solid #0000;padding:.125rem .5rem}.page-module__LT-C6q__stackItem:hover{color:var(--color-text);border-color:var(--color-accent)}@media (max-width:40rem){.page-module__LT-C6q__stackContainer{gap:var(--space-xs);flex-direction:column}}
.page-module__NfDiEG__bio{font-size:var(--text-base);color:var(--color-text-muted);margin-bottom:var(--space-xl);line-height:1.8}.page-module__NfDiEG__section{margin-bottom:var(--space-xl)}.page-module__NfDiEG__sectionTitle{font-size:var(--text-lg);color:var(--color-text);margin-bottom:var(--space-md);font-weight:500}.page-module__NfDiEG__links{gap:var(--space-sm);flex-direction:column;display:flex}.page-module__NfDiEG__externalLink{align-items:center;gap:var(--space-sm);color:var(--color-text);font-size:var(--text-base);transition:color var(--transition-fast);flex-wrap:nowrap;width:fit-content;display:inline-flex}.page-module__NfDiEG__externalLink:hover{color:var(--color-accent)}.page-module__NfDiEG__linkIcon{color:var(--color-text-muted);transition:color var(--transition-fast);flex-shrink:0;font-size:1.1em}.page-module__NfDiEG__externalLink:hover .page-module__NfDiEG__linkIcon{color:var(--color-accent)}.page-module__NfDiEG__arrow{color:var(--color-accent);transition:transform var(--transition-fast);flex-shrink:0;margin-left:-2px}.page-module__NfDiEG__externalLink:hover .page-module__NfDiEG__arrow{transform:translate(3px)}.page-module__NfDiEG__skillsGrid{gap:var(--space-md);flex-direction:column;display:flex}.page-module__NfDiEG__skillCategory{align-items:baseline;gap:var(--space-lg);display:flex}.page-module__NfDiEG__categoryLabel{font-size:var(--text-sm);color:var(--color-text-dim);flex-shrink:0;min-width:5.5rem}.page-module__NfDiEG__skillItems{gap:var(--space-xs);flex-wrap:wrap;display:flex}.page-module__NfDiEG__skillItem{font-size:var(--text-sm);color:var(--color-text-muted);background:var(--color-bg-secondary);transition:color var(--transition-fast),border-color var(--transition-fast);border:2px solid #0000;padding:.125rem .5rem}.page-module__NfDiEG__skillItem:hover{color:var(--color-text);border-color:var(--color-accent)}@media (max-width:40rem){.page-module__NfDiEG__skillCategory{gap:var(--space-xs);flex-direction:column}.page-module__NfDiEG__categoryLabel{min-width:auto}}.page-module__NfDiEG__colophonGrid{gap:var(--space-xs);flex-direction:column;display:flex}.page-module__NfDiEG__colophonRow{font-size:var(--text-base);color:var(--color-text-muted);flex-wrap:wrap;align-items:baseline;gap:.5em;margin:0;display:flex}.page-module__NfDiEG__colophonLabel{color:var(--color-text);flex-shrink:0}.page-module__NfDiEG__colophonArrowSmall{color:var(--color-text-dim);flex-shrink:0}.page-module__NfDiEG__colophonValue{flex:1;min-width:0}.page-module__NfDiEG__colorPalette{margin-top:var(--space-md);gap:0;display:flex}.page-module__NfDiEG__colorSwatch{cursor:help;width:3rem;height:1.75rem}.page-module__NfDiEG__colorSwatch:first-child{border:2px solid var(--color-border)}
.page-module__jXZM3G__rss{font-size:var(--text-sm);color:var(--color-accent);border:2px solid var(--color-accent);border-radius:var(--border-radius);transition:background-color var(--transition-fast),color var(--transition-fast);padding:.125rem .5rem}.page-module__jXZM3G__rss:hover{background-color:var(--color-accent);color:var(--color-bg)}.page-module__jXZM3G__postList{gap:var(--space-lg);flex-direction:column;display:flex}.page-module__jXZM3G__postCard{gap:var(--space-xs);padding:var(--space-md)0;border-bottom:1px solid var(--color-border);flex-direction:column;display:flex}.page-module__jXZM3G__postCard:last-child{border-bottom:none}.page-module__jXZM3G__date{font-size:var(--text-sm);color:var(--color-text-muted);align-items:center;gap:.4em;display:flex}.page-module__jXZM3G__pinnedIcon{color:var(--color-accent)}.page-module__jXZM3G__postTitle{overflow-wrap:break-word;word-break:break-word;font-weight:500}.page-module__jXZM3G__postDescription{font-size:var(--text-sm);color:var(--color-text-muted);margin:var(--space-xs)0 0}
.page-module___8aEwW__main{flex-direction:column;justify-content:center;align-items:center;min-height:100vh;display:flex}.page-module___8aEwW__container{width:100%;max-width:var(--max-width);padding:0 var(--space-lg)}.page-module___8aEwW__headerWrapper{align-items:center;gap:var(--space-md);margin-bottom:var(--space-sm);display:flex}.page-module___8aEwW__title{font-size:var(--text-3xl);color:var(--color-text);margin-bottom:var(--space-sm);font-weight:600}.page-module___8aEwW__greeting{font-size:var(--text-base);color:var(--color-text-muted);margin-bottom:var(--space-md);line-height:1.7}@media (max-width:48rem){.page-module___8aEwW__container{padding:0 var(--space-md)}.page-module___8aEwW__title{font-size:var(--text-2xl)}}@media (max-width:40rem){.page-module___8aEwW__headerWrapper{align-items:flex-start;gap:var(--space-md);flex-direction:column-reverse}}
.page-module__kCBQJa__description{font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-lg)}.page-module__kCBQJa__galleryWrapper{width:100vw;padding:0 var(--space-lg);margin-left:calc(50% - 50vw)}.page-module__kCBQJa__gallery{column-count:3;column-gap:var(--space-sm);max-width:100%}@media (max-width:64rem){.page-module__kCBQJa__gallery{column-count:2}}@media (max-width:40rem){.page-module__kCBQJa__gallery{column-count:1}.page-module__kCBQJa__galleryWrapper{padding:0 var(--space-sm)}}.page-module__kCBQJa__emptyState{background:var(--color-bg-secondary);border:2px dashed var(--color-border);justify-content:center;align-items:center;min-height:12.5rem;display:flex}.page-module__kCBQJa__emptyText{font-size:var(--text-sm);color:var(--color-text-muted);text-align:center;margin:0}.page-module__kCBQJa__emptyText code{background:var(--color-bg-tertiary);border-radius:0;padding:.125rem .375rem;font-size:.9em}
.page-module__q81_BW__projectGrid{gap:var(--space-xl);grid-template-columns:repeat(2,1fr);display:grid}@media (max-width:40rem){.page-module__q81_BW__projectGrid{gap:var(--space-xl);grid-template-columns:1fr}}
.typography-module__KMDMwW__prose{color:var(--color-text-muted);font-size:var(--text-base);line-height:1.8}.typography-module__KMDMwW__prose h1{font-size:var(--text-2xl);color:var(--color-text);margin-top:var(--space-xl);margin-bottom:var(--space-md)}.typography-module__KMDMwW__prose h2{font-size:var(--text-xl);color:var(--color-text);margin-top:var(--space-xl);margin-bottom:var(--space-md)}.typography-module__KMDMwW__prose h3{font-size:var(--text-lg);color:var(--color-text);margin-top:var(--space-lg);margin-bottom:var(--space-sm)}.typography-module__KMDMwW__prose p{margin-bottom:var(--space-md)}.typography-module__KMDMwW__prose ul,.typography-module__KMDMwW__prose ol{margin-bottom:var(--space-md);padding-left:1.75em;list-style-position:outside}.typography-module__KMDMwW__prose li{margin-bottom:var(--space-xs);padding-left:.25em}.typography-module__KMDMwW__prose a{color:var(--color-accent);text-underline-offset:.125rem;text-decoration:underline}.typography-module__KMDMwW__prose a:hover{color:var(--color-accent)}.typography-module__KMDMwW__prose code{background:var(--color-bg-secondary);border-radius:0;padding:.125rem .375rem;font-size:.9em}.typography-module__KMDMwW__prose pre{background:var(--color-bg-secondary);padding:var(--space-md);margin-bottom:var(--space-md);border-radius:0;overflow-x:auto}.typography-module__KMDMwW__prose pre code{background:0 0;padding:0}.typography-module__KMDMwW__prose blockquote{border-left:3px solid var(--color-accent);padding-left:var(--space-md);margin:var(--space-md)0;color:var(--color-text-dim);font-style:italic}.typography-module__KMDMwW__prose strong{color:var(--color-text);font-weight:600}.typography-module__KMDMwW__prose hr{border:none;border-top:1px solid var(--color-border);margin:var(--space-xl)0}.typography-module__KMDMwW__prose table{border-collapse:collapse;width:100%;margin-bottom:var(--space-md);font-size:var(--text-sm)}.typography-module__KMDMwW__prose th,.typography-module__KMDMwW__prose td{padding:var(--space-sm)var(--space-md);text-align:left;border:1px solid var(--color-border)}.typography-module__KMDMwW__prose th{color:var(--color-accent);font-weight:600}.typography-module__KMDMwW__prose img{width:auto;max-width:100%;height:auto;max-height:60vh;margin:var(--space-lg)auto;border:1px solid var(--color-border);border-radius:var(--border-radius);display:block}@media (max-width:40rem){.typography-module__KMDMwW__prose table{-webkit-overflow-scrolling:touch;display:block;overflow-x:auto}.typography-module__KMDMwW__prose pre{padding:var(--space-sm)}}
.page-module__OSLHOG__description{font-size:var(--text-base);color:var(--color-text-muted);margin-bottom:var(--space-lg)}.page-module__OSLHOG__links{gap:var(--space-sm);margin-bottom:var(--space-2xl);flex-direction:column;display:flex}.page-module__OSLHOG__linkRow{align-items:center;gap:var(--space-sm);font-size:var(--text-base);color:var(--color-text-muted);display:flex}.page-module__OSLHOG__linkIcon{color:var(--color-text-muted);flex-shrink:0;font-size:1.2em}.page-module__OSLHOG__linkValue{color:var(--color-text);transition:color var(--transition-fast);flex:1;text-decoration:none}.page-module__OSLHOG__linkValue:hover{color:var(--color-accent)}.page-module__OSLHOG__copyButton{padding:var(--space-xs);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:flex}.page-module__OSLHOG__copyIcon{color:var(--color-text-muted);opacity:.6;transition:opacity var(--transition-fast),color var(--transition-fast);font-size:1.1em}.page-module__OSLHOG__copyButton:hover .page-module__OSLHOG__copyIcon{opacity:1;color:var(--color-accent)}.page-module__OSLHOG__formSection{margin-top:var(--space-xl)}.page-module__OSLHOG__formTitle{font-size:var(--text-lg);color:var(--color-text);margin-bottom:var(--space-md);font-weight:500}.page-module__OSLHOG__form{gap:var(--space-md);flex-direction:column;display:flex}.page-module__OSLHOG__formGroup{flex-direction:column;display:flex}.page-module__OSLHOG__input,.page-module__OSLHOG__textarea{width:100%;font-family:var(--font-mono);font-size:var(--text-base);padding:var(--space-md);background:var(--color-bg-secondary);border:2px solid var(--color-border);color:var(--color-text);transition:border-color var(--transition-fast);border-radius:0}.page-module__OSLHOG__input:focus,.page-module__OSLHOG__textarea:focus{border-color:var(--color-text-muted);outline:none}.page-module__OSLHOG__input::placeholder,.page-module__OSLHOG__textarea::placeholder{color:var(--color-text-muted)}.page-module__OSLHOG__textarea{resize:vertical;min-height:9.375rem}.page-module__OSLHOG__submitButton{width:100%;font-family:var(--font-mono);font-size:var(--text-base);padding:var(--space-md);background:var(--color-bg-secondary);border:2px solid var(--color-border);color:var(--color-text);cursor:pointer;justify-content:center;align-items:center;gap:var(--space-sm);transition:all var(--transition-fast);margin-top:var(--space-sm);border-radius:0;display:flex}.page-module__OSLHOG__submitButton:hover{background:var(--color-bg-secondary);border:2px solid var(--color-accent)}.page-module__OSLHOG__buttonArrow{transition:transform var(--transition-fast);font-size:1.1em}.page-module__OSLHOG__submitButton:hover .page-module__OSLHOG__buttonArrow{transform:translate(4px)}@media (max-width:48rem){.page-module__OSLHOG__linkRow{flex-wrap:wrap}.page-module__OSLHOG__input,.page-module__OSLHOG__textarea{padding:var(--space-sm);font-size:var(--text-sm)}.page-module__OSLHOG__submitButton{padding:var(--space-sm)}.page-module__OSLHOG__formTitle{font-size:var(--text-base)}}.page-module__OSLHOG__successMessage{padding:var(--space-md);margin-bottom:var(--space-md);background:color-mix(in srgb,var(--color-accent)15%,transparent);border:2px solid var(--color-accent);color:var(--color-accent);font-family:var(--font-mono);font-size:var(--text-sm)}.page-module__OSLHOG__errorMessage{padding:var(--space-md);margin-bottom:var(--space-md);background:color-mix(in srgb,var(--color-error)15%,transparent);border:2px solid var(--color-error);color:var(--color-error);font-family:var(--font-mono);font-size:var(--text-sm)}.page-module__OSLHOG__input:disabled,.page-module__OSLHOG__textarea:disabled,.page-module__OSLHOG__submitButton:disabled{opacity:.6;cursor:not-allowed}
