@font-face{font-family:Sora;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/b886574ba42c3409-s.0s8rfyfnf3ili.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/c41ca59f1c34ba31-s.p.2moef4a_pkre2.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_72cca258-module__ly6nGG__className{font-family:Sora,Sora Fallback;font-style:normal}.sora_72cca258-module__ly6nGG__variable{--font-sketches-sans:"Sora", "Sora Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.3zhtymus0wdqb.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:swap;src:url(../media/59b15b4bcd7b1eb5-s.3nkuoiize4urq.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:swap;src:url(../media/e532fa1b9921e1cd-s.1da667lu-u79a.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:swap;src:url(../media/2fe89d53234c61d4-s.1i05ju5aeyhye.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.1dgcou5jor5q_.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_6c2a7197-module__1XyQvW__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal;font-weight:400}.ibm_plex_mono_6c2a7197-module__1XyQvW__variable{--font-sketches-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
.ExcalidrawGallery-module__MFNGtG__gallery{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;display:grid}.ExcalidrawGallery-module__MFNGtG__sketchCard{border:1px solid var(--sketches-card-border);min-width:0;min-height:140px;color:var(--sketches-text);background:var(--sketches-card);font-family:var(--font-sketches-sans), sans-serif;text-align:left;cursor:pointer;border-radius:16px;align-items:center;padding:24px;transition:border-color .15s;display:flex}.ExcalidrawGallery-module__MFNGtG__sketchCard:hover{border-color:var(--sketches-accent)}.ExcalidrawGallery-module__MFNGtG__sketchCard:focus-visible{outline-offset:4px;outline:2px solid #bf4b2c}.ExcalidrawGallery-module__MFNGtG__cardTitle{overflow-wrap:anywhere;font-size:28px;font-weight:500;line-height:1.4}@media (max-width:1000px){.ExcalidrawGallery-module__MFNGtG__gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.ExcalidrawGallery-module__MFNGtG__gallery{grid-template-columns:1fr}}.ExcalidrawGallery-module__MFNGtG__dialog{--sketches-modal-background:#171a22;--sketches-modal-border:#393d4c;--sketches-viewer-control:#232733;width:100vw;max-width:none;height:100svh;max-height:none;color:var(--sketches-text);background:0 0;border:0;margin:0;padding:0;overflow:hidden}.ExcalidrawGallery-module__MFNGtG__dialog[open]{place-items:center;animation:.18s both ExcalidrawGallery-module__MFNGtG__dialogIn;display:grid}.ExcalidrawGallery-module__MFNGtG__dialog::backdrop{background:#05070ad1}.ExcalidrawGallery-module__MFNGtG__modalPanel{border:1px solid var(--sketches-modal-border);background:var(--sketches-modal-background);border-radius:16px;flex-direction:column;width:min(1300px,100vw - 48px);height:min(824px,100svh - 48px);display:flex;overflow:hidden}.ExcalidrawGallery-module__MFNGtG__modalHeader{min-height:112px;font-family:var(--font-sketches-sans), sans-serif;flex-shrink:0;justify-content:space-between;align-items:center;gap:18px;padding:20px 28px;display:flex}.ExcalidrawGallery-module__MFNGtG__modalPanel:fullscreen{border:0;border-radius:0;width:100vw;max-width:none;height:100dvh;max-height:none}.ExcalidrawGallery-module__MFNGtG__modalHeader>div{min-width:0}.ExcalidrawGallery-module__MFNGtG__modalHeader span{color:var(--sketches-accent);font-family:var(--font-sketches-mono), monospace;letter-spacing:1.2px;text-transform:uppercase;font-size:12px;line-height:18px;display:block}.ExcalidrawGallery-module__MFNGtG__modalHeader h2{color:var(--sketches-text);text-overflow:ellipsis;white-space:nowrap;margin:6px 0 0;font-size:28px;font-weight:500;line-height:1.4;overflow:hidden}.ExcalidrawGallery-module__MFNGtG__closeButton{border:1px solid var(--sketches-modal-border);width:44px;height:44px;color:var(--sketches-text);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;place-items:center;padding:0;display:grid}.ExcalidrawGallery-module__MFNGtG__closeButton:hover{border-color:var(--sketches-accent)}.ExcalidrawGallery-module__MFNGtG__closeButton:focus-visible{outline-offset:3px;outline:2px solid #bf4b2c}.ExcalidrawGallery-module__MFNGtG__closeButton svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;width:20px;height:20px}.ExcalidrawGallery-module__MFNGtG__viewerViewport{background:#fff;flex:1;min-height:0;position:relative;overflow:hidden}.ExcalidrawGallery-module__MFNGtG__loadingState,.ExcalidrawGallery-module__MFNGtG__errorState{width:100%;height:100%;color:var(--sketches-muted);background:var(--sketches-modal-background);font-family:var(--font-sketches-sans), sans-serif;justify-content:center;align-items:center;gap:12px;font-size:14px;display:flex}.ExcalidrawGallery-module__MFNGtG__spinner{border:2px solid var(--sketches-modal-border);border-top-color:var(--sketches-accent);border-radius:50%;width:19px;height:19px;animation:.75s linear infinite ExcalidrawGallery-module__MFNGtG__spin}.ExcalidrawGallery-module__MFNGtG__errorState{text-align:center;flex-direction:column;gap:16px;padding:24px}.ExcalidrawGallery-module__MFNGtG__errorState button{min-height:44px;color:var(--sketches-text);background:var(--sketches-viewer-control);cursor:pointer;border:0;border-radius:8px;padding:10px 16px;font-family:inherit;font-size:14px}.ExcalidrawGallery-module__MFNGtG__errorState button:focus-visible{outline-offset:3px;outline:2px solid #bf4b2c}@keyframes ExcalidrawGallery-module__MFNGtG__spin{to{transform:rotate(360deg)}}@keyframes ExcalidrawGallery-module__MFNGtG__dialogIn{0%{opacity:0}to{opacity:1}}@media (max-width:680px){.ExcalidrawGallery-module__MFNGtG__modalPanel{width:calc(100vw - 24px);height:calc(100svh - 24px)}.ExcalidrawGallery-module__MFNGtG__modalHeader{min-height:96px;padding:16px}.ExcalidrawGallery-module__MFNGtG__modalHeader h2{font-size:24px}.ExcalidrawGallery-module__MFNGtG__modalHeader span{letter-spacing:.8px;font-size:10px}}@media (max-width:420px){.ExcalidrawGallery-module__MFNGtG__modalPanel{border:0;border-radius:0;width:100vw;height:100svh}}@media (prefers-reduced-motion:reduce){.ExcalidrawGallery-module__MFNGtG__sketchCard,.ExcalidrawGallery-module__MFNGtG__dialog[open]{transition:none;animation:none}.ExcalidrawGallery-module__MFNGtG__spinner{animation-duration:1.5s}}[data-theme=light] .ExcalidrawGallery-module__MFNGtG__dialog{--sketches-modal-background:#f8f8f6;--sketches-modal-border:#d2d5dd;--sketches-viewer-control:#eeeef2}
@font-face{font-family:Sora;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/b886574ba42c3409-s.0s8rfyfnf3ili.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/c41ca59f1c34ba31-s.p.2moef4a_pkre2.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_c14de66-module__zx2juW__className{font-family:Sora,Sora Fallback;font-style:normal}.sora_c14de66-module__zx2juW__variable{--font-navigation-sora:"Sora", "Sora Fallback"}
.SiteNavigation-module__5NmcDq__header{--unit:calc(var(--portfolio-shell-width) / 100);--nav-text:#242333;--nav-accent:#65750a;--nav-logo:#5c7135;--nav-border:#d2d8e4;--nav-button:#fff;--nav-bg:#f8f7fc;width:min(1164px,100vw - 64px);max-width:none;height:calc(7.44 * var(--unit));padding:calc(2 * var(--unit)) calc(.997 * var(--unit)) calc(1.84 * var(--unit)) 0;border-bottom:3px solid var(--nav-accent);font-family:var(--font-navigation-sora), sans-serif;flex-shrink:0;align-items:center;margin:0;display:flex;position:relative;left:50%;translate:-50%}[data-theme=dark] .SiteNavigation-module__5NmcDq__header{--nav-text:#f1f0f7;--nav-accent:#e5f58a;--nav-logo:#e5f58a;--nav-border:#393d4c;--nav-button:#191c24;--nav-bg:#101218}.SiteNavigation-module__5NmcDq__wordmark{color:var(--nav-logo);font-size:calc(1.84 * var(--unit));white-space:nowrap;flex:none;font-weight:600;text-decoration:none}.SiteNavigation-module__5NmcDq__navigation{margin-left:auto;margin-right:calc(5.37 * var(--unit));width:calc(47 * var(--unit));grid-template-columns:calc(3.68 * var(--unit)) calc(3.834 * var(--unit)) calc(8.895 * var(--unit)) calc(6.748 * var(--unit)) calc(5.291 * var(--unit));justify-content:space-between;align-items:center;display:grid;position:static}.SiteNavigation-module__5NmcDq__navItem{width:100%;min-width:0;min-height:calc(3.374 * var(--unit));color:var(--nav-text);font:inherit;font-size:calc(1.227 * var(--unit));white-space:nowrap;background:0 0;border:0;justify-content:center;align-items:center;padding:0;text-decoration:none;display:flex}.SiteNavigation-module__5NmcDq__navItem svg{width:calc(1.84 * var(--unit));height:calc(1.84 * var(--unit));flex:none}.SiteNavigation-module__5NmcDq__navItem:hover,.SiteNavigation-module__5NmcDq__navItem[aria-current=page],.SiteNavigation-module__5NmcDq__navItem[aria-pressed=true]{color:var(--nav-accent)}.SiteNavigation-module__5NmcDq__iconButton{width:calc(3.374 * var(--unit));height:calc(3.374 * var(--unit));border:1px solid var(--nav-border);color:var(--nav-text);background:var(--nav-button);border-radius:50%;flex:none;place-items:center;margin-left:0;padding:0;display:grid}.SiteNavigation-module__5NmcDq__iconButton svg{width:calc(1.687 * var(--unit));height:calc(1.687 * var(--unit))}.SiteNavigation-module__5NmcDq__iconButton:hover{border-color:var(--nav-accent)}.SiteNavigation-module__5NmcDq__menuToggle{display:none}.SiteNavigation-module__5NmcDq__header a:focus-visible,.SiteNavigation-module__5NmcDq__header button:focus-visible{outline-offset:5px;outline:2px solid #bf4b2c}@media (max-width:760px) and (orientation:portrait){.SiteNavigation-module__5NmcDq__header{--unit:calc(min(calc(100vw - 32px), calc((100dvh - 32px) * 350 / 660)) / 100);width:calc(100vw - 48px);max-width:none;height:calc(16 * var(--unit));padding:0 0 calc(3 * var(--unit));gap:calc(3 * var(--unit));z-index:50}.SiteNavigation-module__5NmcDq__wordmark{font-size:calc(6 * var(--unit));margin-right:auto}.SiteNavigation-module__5NmcDq__iconButton{width:calc(11 * var(--unit));height:calc(11 * var(--unit));margin-left:0}.SiteNavigation-module__5NmcDq__iconButton svg{width:calc(5.5 * var(--unit));height:calc(5.5 * var(--unit))}.SiteNavigation-module__5NmcDq__menuToggle{display:grid}.SiteNavigation-module__5NmcDq__navigation{top:calc(16 * var(--unit));width:100%;padding:calc(4 * var(--unit));border:1px solid var(--nav-border);background:var(--nav-bg);z-index:10;margin:0;display:none;position:absolute;left:0}.SiteNavigation-module__5NmcDq__navigationOpen{gap:calc(4 * var(--unit));grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.SiteNavigation-module__5NmcDq__navItem{font-size:calc(4 * var(--unit));min-height:44px}.SiteNavigation-module__5NmcDq__navItem svg{width:calc(6 * var(--unit));height:calc(6 * var(--unit))}}
@font-face{font-family:Sora;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/b886574ba42c3409-s.0s8rfyfnf3ili.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/c41ca59f1c34ba31-s.p.2moef4a_pkre2.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_1acd4a66-module__cAx_Rq__className{font-family:Sora,Sora Fallback;font-style:normal}.sora_1acd4a66-module__cAx_Rq__variable{--font-project-sora:"Sora", "Sora Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.3zhtymus0wdqb.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:swap;src:url(../media/59b15b4bcd7b1eb5-s.3nkuoiize4urq.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:swap;src:url(../media/e532fa1b9921e1cd-s.1da667lu-u79a.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:swap;src:url(../media/2fe89d53234c61d4-s.1i05ju5aeyhye.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.1dgcou5jor5q_.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_77055914-module__Jz29Uq__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal;font-weight:400}.ibm_plex_mono_77055914-module__Jz29Uq__variable{--font-project-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
.page-module___8aEwW__stage{--home-bg:#f8f7fc;--home-ink:#242333;--home-muted:#68667a;--home-accent:#5c7135;--home-lavender:#8760b9;--home-title-accent:#65750a;--home-title-purple:#110042;--home-social-hover:#110042;--home-border:#d2d8e4;--home-button:#fff;--home-badge:#fff;--home-panel:#eeeff2;--home-padding-y:min(36px, 3.75dvh);width:100%;max-width:100vw;height:100dvh;padding:var(--home-padding-y) min(68px, 4.722vw);background:var(--home-bg);color:var(--home-ink);font-family:var(--font-home-sora), sans-serif;place-items:center;display:grid;overflow:clip}[data-theme=dark] .page-module___8aEwW__stage{--home-bg:#101218;--home-ink:#f1f0f7;--home-muted:#b0b2c2;--home-accent:#e5f58a;--home-lavender:#d1bfff;--home-title-accent:var(--home-accent);--home-title-purple:var(--home-lavender);--home-social-hover:#e5f58a;--home-border:#393d4c;--home-button:#191c24;--home-badge:#262a36;--home-panel:#222632}.page-module___8aEwW__portfolioShell{width:min(100%, 1304px, calc((100dvh - 2 * var(--home-padding-y)) * 1304 / 888));height:100%;min-height:0;margin:auto;container-type:inline-size}.page-module___8aEwW__stage a:focus-visible,.page-module___8aEwW__stage button:focus-visible{outline-offset:5px;outline:2px solid #bf4b2c}.page-module___8aEwW__contentArea{align-items:center;height:calc(100% - 7.44cqw);min-height:0;padding-top:6.058cqw;display:flex}.page-module___8aEwW__content{grid-template-columns:36.03cqw 54.45cqw;align-items:start;width:90.49cqw;margin:0 auto;display:grid}.page-module___8aEwW__profile{min-width:0;height:50.997cqw;position:relative}.page-module___8aEwW__profileLabel{font-family:var(--font-home-mono), monospace;color:var(--home-title-accent);margin:0 0 0 .383cqw;font-size:1.227cqw;line-height:1.35}.page-module___8aEwW__welcome{color:var(--home-muted);margin:1.84cqw 0 0 .383cqw;font-size:1.38cqw;line-height:1.5}.page-module___8aEwW__name{letter-spacing:-.153cqw;margin:.92cqw 0 0;font-size:5.061cqw;font-weight:600;line-height:1.2}.page-module___8aEwW__name span{color:var(--home-title-purple);font-size:4.294cqw;line-height:1.4;display:block}.page-module___8aEwW__portraitArea{height:24.54cqw;margin-top:2.68cqw;position:relative}.page-module___8aEwW__portraitBackdrop{background:var(--home-lavender);transform-origin:0 0;opacity:.24;border-radius:7.67cqw 7.67cqw 1.84cqw 1.84cqw;width:25.077cqw;height:21.32cqw;position:absolute;top:0;left:6.595cqw;transform:rotate(-3deg)}[data-theme=dark] .page-module___8aEwW__portraitBackdrop{opacity:1}.page-module___8aEwW__portraitFrame{border-radius:1.38cqw;width:19.632cqw;height:20.706cqw;position:absolute;top:.46cqw;left:8.973cqw;overflow:hidden}.page-module___8aEwW__portrait{object-fit:cover}.page-module___8aEwW__techBadge{border:1px solid var(--home-border);background:var(--home-badge);border-radius:24px;padding:.843cqw 1.15cqw;font-size:1.227cqw;line-height:1.25;position:absolute}.page-module___8aEwW__java{top:3.834cqw;left:1.304cqw;transform:rotate(-4deg)}.page-module___8aEwW__react{top:2.454cqw;left:27.53cqw;transform:rotate(4deg)}.page-module___8aEwW__spring{top:16.641cqw;left:1.534cqw;transform:rotate(-4deg)}.page-module___8aEwW__typescript{top:17.561cqw;left:23.926cqw;transform:rotate(4deg)}.page-module___8aEwW__contact{min-height:7.055cqw;margin-left:8.973cqw;padding-top:.23cqw}.page-module___8aEwW__contact p{color:var(--home-muted);margin:0 0 .69cqw;font-size:1.304cqw}.page-module___8aEwW__socialLinks{gap:2.454cqw;display:flex}.page-module___8aEwW__socialLinks a{min-height:40px;color:var(--home-ink);align-items:center;gap:.767cqw;font-size:1.227cqw;text-decoration:none;transition:color .18s,transform .18s;display:flex}.page-module___8aEwW__socialLinks svg{color:var(--home-title-purple);width:1.687cqw;height:1.687cqw}.page-module___8aEwW__about blockquote{color:var(--home-lavender);margin:0}.page-module___8aEwW__about{background:0 0;border-radius:0;min-height:48.773cqw;padding:2.607cqw 3.067cqw 0;position:relative;top:-2.032cqw}.page-module___8aEwW__aboutHeading{color:var(--home-ink);font-family:var(--font-home-sora), sans-serif;margin:0 0 3cqw;font-size:1.994cqw;font-weight:600;line-height:1.35;display:block}.page-module___8aEwW__aboutHeading span{color:var(--home-title-accent);font-weight:500}.page-module___8aEwW__about>p{color:var(--home-ink);margin:0 0 2cqw;font-size:1.38cqw;line-height:1.5}.page-module___8aEwW__about blockquote{min-height:5.291cqw;color:var(--home-lavender);padding:1.15cqw 0 0 1.61cqw;font-size:1.38cqw;line-height:1.4;position:relative}.page-module___8aEwW__about blockquote:before{content:"";background:var(--home-lavender);width:3px;height:5.291cqw;position:absolute;top:0;left:0}.page-module___8aEwW__about cite{color:var(--home-muted);margin-top:1.2cqw;font-size:1.227cqw;font-style:normal;line-height:1.35;display:block}@media (max-width:760px) and (orientation:portrait){.page-module___8aEwW__stage{--home-padding-y:16px;padding:var(--home-padding-y) 16px}.page-module___8aEwW__portfolioShell{width:min(100%,53.0303dvh - 16.9697px)}.page-module___8aEwW__contentArea{align-items:safe center;height:calc(100% - 16cqw);padding-top:24px}.page-module___8aEwW__content{grid-template-columns:minmax(0,1fr);gap:4cqw;width:100%}.page-module___8aEwW__profile{width:100%;height:82cqw;margin:0}.page-module___8aEwW__profileLabel{font-size:3cqw;position:absolute;top:0}.page-module___8aEwW__welcome{margin-top:0;font-size:3.7cqw;position:absolute;top:7cqw}.page-module___8aEwW__name{letter-spacing:-.35cqw;margin:0;font-size:10.5cqw;line-height:1.1;position:absolute;top:13.5cqw}.page-module___8aEwW__name span{margin-bottom:5cqw;font-size:9cqw;line-height:1.2}.page-module___8aEwW__portraitArea{width:58cqw;height:40cqw;margin:0;position:absolute;top:43cqw;left:0}.page-module___8aEwW__portraitBackdrop{border-radius:14cqw 14cqw 3cqw 3cqw;width:44cqw;height:38cqw;left:9cqw}.page-module___8aEwW__portraitFrame{border-radius:3cqw;width:35cqw;height:37cqw;top:1cqw;left:13cqw}.page-module___8aEwW__techBadge{padding:1.3cqw 2cqw;font-size:2.5cqw}.page-module___8aEwW__java{top:9cqw;left:0}.page-module___8aEwW__react{top:4cqw;left:44cqw}.page-module___8aEwW__spring{top:29cqw;left:0}.page-module___8aEwW__typescript{top:32cqw;left:35cqw}.page-module___8aEwW__contact{width:40cqw;margin:0;padding:0;position:absolute;top:51cqw;left:60cqw}.page-module___8aEwW__contact p{margin-bottom:2cqw;font-size:3.2cqw;line-height:1.5}.page-module___8aEwW__socialLinks{flex-direction:column;gap:1cqw}.page-module___8aEwW__socialLinks a{gap:2cqw;min-height:8cqw;font-size:3.2cqw}.page-module___8aEwW__socialLinks svg{width:4cqw;height:4cqw}.page-module___8aEwW__about{height:auto;min-height:0;padding:4cqw;top:0}.page-module___8aEwW__aboutHeading,.page-module___8aEwW__about>p,.page-module___8aEwW__about blockquote{width:auto;position:static}.page-module___8aEwW__aboutHeading{margin-bottom:4cqw;font-size:5.4cqw}.page-module___8aEwW__about>p{margin-bottom:3cqw;font-size:3cqw}.page-module___8aEwW__about blockquote{min-height:0;padding:1cqw 0 0 4cqw;font-size:3cqw;position:relative}.page-module___8aEwW__about blockquote:before{height:calc(100% - 7.05cqw)}.page-module___8aEwW__about cite{margin-top:2cqw;font-size:3cqw}}@media (min-width:761px),(orientation:landscape){.page-module___8aEwW__profileLabel{position:absolute;top:0}.page-module___8aEwW__welcome{margin-top:0;position:absolute;top:3.528cqw}.page-module___8aEwW__name{margin:0;position:absolute;top:6.288cqw}.page-module___8aEwW__name span{line-height:1.2}.page-module___8aEwW__portraitArea{width:100%;margin-top:0;position:absolute;top:20.168cqw}.page-module___8aEwW__contact{padding-top:1.304cqw;position:absolute;top:43.635cqw}}.page-module___8aEwW__socialLinks svg{transition:color .18s}.page-module___8aEwW__socialLinks a:is(:hover,:focus-visible){color:var(--home-social-hover);transform:translateY(-2px)}.page-module___8aEwW__socialLinks a:is(:hover,:focus-visible) svg{color:var(--home-social-hover)}@media (prefers-reduced-motion:reduce){.page-module___8aEwW__socialLinks a,.page-module___8aEwW__socialLinks svg{transition:none}.page-module___8aEwW__socialLinks a:is(:hover,:focus-visible){transform:none}}
.ProjectGallery-module__zNGKyq__gallery{grid-template-rows:minmax(0,225fr) minmax(0,233fr);grid-template-columns:repeat(2,minmax(0,1fr)) repeat(2,minmax(0,.574fr));gap:22px;height:clamp(360px,33.333vw,480px);min-height:0;display:grid}.ProjectGallery-module__zNGKyq__imageButton{border:1px solid var(--detail-border,#d2d8e4);cursor:zoom-in;background:#1d1d1d;border-radius:14px;min-width:0;min-height:0;padding:0;position:relative;overflow:hidden}.ProjectGallery-module__zNGKyq__imageButton:first-child{grid-area:1/1/3/3}.ProjectGallery-module__zNGKyq__imageButton:nth-child(2){grid-area:1/3/auto/5}.ProjectGallery-module__zNGKyq__imageButton:nth-child(3){grid-area:2/3}.ProjectGallery-module__zNGKyq__imageButton:nth-child(4){grid-area:2/4}.ProjectGallery-module__zNGKyq__gallery[data-image-count="2"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(2){grid-row:1/3}.ProjectGallery-module__zNGKyq__gallery[data-image-count="3"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(3){grid-column:3/5}.ProjectGallery-module__zNGKyq__gallery[data-image-count="1"] .ProjectGallery-module__zNGKyq__imageButton:first-child{grid-column:1/-1}.ProjectGallery-module__zNGKyq__gallery[data-image-count="5"],.ProjectGallery-module__zNGKyq__gallery[data-image-count="6"]{grid-template-columns:repeat(12,minmax(0,1fr))}.ProjectGallery-module__zNGKyq__gallery[data-image-count="5"] .ProjectGallery-module__zNGKyq__imageButton:first-child,.ProjectGallery-module__zNGKyq__gallery[data-image-count="6"] .ProjectGallery-module__zNGKyq__imageButton:first-child{grid-column:1/9}.ProjectGallery-module__zNGKyq__gallery[data-image-count="5"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(2),.ProjectGallery-module__zNGKyq__gallery[data-image-count="6"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(2){grid-column:9/13}.ProjectGallery-module__zNGKyq__gallery[data-image-count="5"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(3),.ProjectGallery-module__zNGKyq__gallery[data-image-count="6"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(3){grid-column:9}.ProjectGallery-module__zNGKyq__gallery[data-image-count="5"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(4),.ProjectGallery-module__zNGKyq__gallery[data-image-count="6"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(4){grid-column:10}.ProjectGallery-module__zNGKyq__gallery[data-image-count="5"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(5){grid-area:2/11/auto/13}.ProjectGallery-module__zNGKyq__gallery[data-image-count="6"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(5){grid-area:2/11}.ProjectGallery-module__zNGKyq__gallery[data-image-count="6"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(6){grid-area:2/12}.ProjectGallery-module__zNGKyq__imageButton img{object-fit:contain;transition:transform .55s cubic-bezier(.2,.72,.18,1),filter .25s}.ProjectGallery-module__zNGKyq__imageButton:after{content:"";pointer-events:none;background:0 0;transition:opacity .25s;position:absolute;inset:0}.ProjectGallery-module__zNGKyq__imageButton:hover img{filter:saturate()contrast();transform:scale(1.025)}.ProjectGallery-module__zNGKyq__imageButton:hover:after{opacity:.55}.ProjectGallery-module__zNGKyq__imageButton>span{z-index:2;color:#e5f58a;min-width:40px;min-height:36px;font-family:var(--font-project-mono), monospace;letter-spacing:.08em;background:#101218;border:0;border-radius:8px;place-items:center;padding:8px 10px;font-size:16px;display:grid;position:absolute;top:14px;left:14px}.ProjectGallery-module__zNGKyq__backdrop{--modal-bg:#f8f7fc;--modal-text:#242333;--modal-muted:#68667a;--modal-accent:#65750a;--modal-border:#d2d8e4;--modal-button:#e8eaf1;--modal-image:#1d1d1d;z-index:50;font-family:var(--font-project-sora), sans-serif;background:#080a0ff0;place-items:center;padding:min(44px,4.6dvh) min(70px,4.86vw);animation:.18s both ProjectGallery-module__zNGKyq__backdropIn;display:grid;position:fixed;inset:0}[data-theme=dark] .ProjectGallery-module__zNGKyq__backdrop{--modal-bg:#101218;--modal-text:#f1f0f7;--modal-muted:#b0b2c2;--modal-accent:#e5f58a;--modal-border:#353a48;--modal-button:#1e2330}.ProjectGallery-module__zNGKyq__lightbox{border:1px solid var(--modal-border);width:min(1300px,100%);min-width:0;height:min(872px,90.8dvh);min-height:0;color:var(--modal-text);background:var(--modal-bg);border-radius:22px;grid-template-rows:114px minmax(0,1fr) 164px;padding:0 33px;animation:.22s both ProjectGallery-module__zNGKyq__modalIn;display:grid;overflow:hidden}.ProjectGallery-module__zNGKyq__topbar{border-bottom:2px solid var(--modal-accent);justify-content:space-between;align-items:center;gap:24px;display:flex}.ProjectGallery-module__zNGKyq__modalIdentity{gap:9px;min-width:0;display:grid}.ProjectGallery-module__zNGKyq__modalIdentity span{color:var(--modal-accent);font-size:16px}.ProjectGallery-module__zNGKyq__modalIdentity strong{text-overflow:ellipsis;white-space:nowrap;font-size:30px;font-weight:500;line-height:1.35;overflow:hidden}.ProjectGallery-module__zNGKyq__topbarActions{flex:none;align-items:center;gap:clamp(24px,4.2vw,60px);display:flex}.ProjectGallery-module__zNGKyq__imageCount{color:var(--modal-accent);font:18px var(--font-project-mono), monospace}.ProjectGallery-module__zNGKyq__topbarActions button{width:54px;height:54px;color:var(--modal-text);background:var(--modal-button);border:0;border-radius:12px;place-items:center;padding:0;display:grid}.ProjectGallery-module__zNGKyq__modalBody{grid-template-columns:minmax(0,1fr) 195px;gap:26px;min-height:0;padding-top:26px;display:grid}.ProjectGallery-module__zNGKyq__viewer{background:var(--modal-image);touch-action:none;-webkit-user-select:none;user-select:none;border-radius:14px;min-width:0;min-height:0;position:relative;overflow:hidden}.ProjectGallery-module__zNGKyq__viewer img{z-index:1;object-fit:contain;cursor:grab;transition:transform .18s}.ProjectGallery-module__zNGKyq__viewer:active img{cursor:grabbing}.ProjectGallery-module__zNGKyq__viewerLabel{z-index:3;color:#e5f58a;font:16px var(--font-project-mono), monospace;background:#101218;border-radius:8px;padding:9px 12px;position:absolute;top:18px;left:18px}.ProjectGallery-module__zNGKyq__thumbnailRail{scrollbar-color:var(--modal-accent) transparent;scrollbar-width:thin;align-content:start;gap:16px;min-height:0;padding:2px;display:grid;overflow:hidden auto}.ProjectGallery-module__zNGKyq__thumbnail{border:1px solid var(--modal-border);background:var(--modal-image);border-radius:10px;min-height:128px;padding:0;transition:border-color .18s,box-shadow .18s;position:relative;overflow:hidden}.ProjectGallery-module__zNGKyq__thumbnail:hover{border-color:var(--modal-accent)}.ProjectGallery-module__zNGKyq__thumbnail[aria-pressed=true]{border-color:var(--modal-accent);box-shadow:inset 0 0 0 1px var(--modal-accent)}.ProjectGallery-module__zNGKyq__thumbnail img{object-fit:contain;padding:5px}.ProjectGallery-module__zNGKyq__thumbnail span{z-index:2;color:#b0b2c2;font:16px var(--font-project-mono), monospace;background:#101218;border-radius:6px;padding:5px 8px;position:absolute;top:9px;left:9px}.ProjectGallery-module__zNGKyq__thumbnail[aria-pressed=true] span{color:#e5f58a}.ProjectGallery-module__zNGKyq__controls{grid-template-columns:1fr minmax(0,350px) 1fr;align-items:start;gap:24px;padding-top:48px;display:grid}.ProjectGallery-module__zNGKyq__navigationButton{width:186px;height:54px;color:var(--modal-text);background:var(--modal-button);border:0;border-radius:12px;justify-content:center;align-items:center;gap:14px;padding:0 18px;display:flex}.ProjectGallery-module__zNGKyq__navigationButton:last-child{justify-self:end}.ProjectGallery-module__zNGKyq__navigationButton svg{color:var(--modal-accent);flex:none;transition:transform .18s}.ProjectGallery-module__zNGKyq__navigationButton strong{font-size:16px;font-weight:400}.ProjectGallery-module__zNGKyq__navigationButton:first-child:hover:not(:disabled) svg{transform:translate(-3px)}.ProjectGallery-module__zNGKyq__navigationButton:last-child:hover:not(:disabled) svg{transform:translate(3px)}.ProjectGallery-module__zNGKyq__zoomControl{height:54px;color:var(--modal-muted);background:var(--modal-button);border-radius:12px;justify-content:space-between;align-items:center;padding:0 8px;display:flex}.ProjectGallery-module__zNGKyq__zoomControl>span{white-space:nowrap;justify-content:center;gap:10px;font-size:16px;display:flex}.ProjectGallery-module__zNGKyq__zoomControl strong{color:var(--modal-text);font:18px var(--font-project-mono), monospace}.ProjectGallery-module__zNGKyq__zoomControl button{width:44px;height:44px;color:var(--modal-accent);background:0 0;border:0;border-radius:8px;flex:none;place-items:center;padding:0;display:grid}.ProjectGallery-module__zNGKyq__topbarActions button,.ProjectGallery-module__zNGKyq__navigationButton,.ProjectGallery-module__zNGKyq__zoomControl button{cursor:pointer;transition:background .18s,box-shadow .18s}.ProjectGallery-module__zNGKyq__topbarActions button:hover,.ProjectGallery-module__zNGKyq__navigationButton:hover:not(:disabled),.ProjectGallery-module__zNGKyq__zoomControl button:hover:not(:disabled){box-shadow:inset 0 0 0 1px var(--modal-accent)}.ProjectGallery-module__zNGKyq__navigationButton:disabled,.ProjectGallery-module__zNGKyq__zoomControl button:disabled{opacity:.4;cursor:not-allowed}.ProjectGallery-module__zNGKyq__imageButton:focus-visible,.ProjectGallery-module__zNGKyq__lightbox button:focus-visible{outline-offset:3px;outline:2px solid #bf4b2c}@media (max-height:700px) and (min-width:761px){.ProjectGallery-module__zNGKyq__lightbox{grid-template-rows:100px minmax(0,1fr) 100px}.ProjectGallery-module__zNGKyq__controls{align-items:center;padding-top:0}}@media (min-width:761px) and (max-width:1000px){.ProjectGallery-module__zNGKyq__modalBody{grid-template-columns:minmax(0,1fr) 145px;gap:18px}.ProjectGallery-module__zNGKyq__thumbnail{min-height:100px}.ProjectGallery-module__zNGKyq__controls{grid-template-columns:1fr minmax(0,260px) 1fr;gap:16px}.ProjectGallery-module__zNGKyq__navigationButton{width:140px}}@keyframes ProjectGallery-module__zNGKyq__backdropIn{0%{opacity:0}to{opacity:1}}@keyframes ProjectGallery-module__zNGKyq__modalIn{0%{opacity:0;transform:translateY(14px)scale(.985)}to{opacity:1;transform:none}}@media (max-width:760px){.ProjectGallery-module__zNGKyq__gallery,.ProjectGallery-module__zNGKyq__gallery[data-image-count="5"],.ProjectGallery-module__zNGKyq__gallery[data-image-count="6"]{grid-template-rows:auto;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;height:auto;min-height:0}.ProjectGallery-module__zNGKyq__imageButton,.ProjectGallery-module__zNGKyq__imageButton:first-child,.ProjectGallery-module__zNGKyq__imageButton:nth-child(2),.ProjectGallery-module__zNGKyq__imageButton:nth-child(3),.ProjectGallery-module__zNGKyq__imageButton:nth-child(4),.ProjectGallery-module__zNGKyq__gallery[data-image-count="2"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(2),.ProjectGallery-module__zNGKyq__gallery[data-image-count="3"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(3),.ProjectGallery-module__zNGKyq__gallery[data-image-count="5"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(3),.ProjectGallery-module__zNGKyq__gallery[data-image-count="5"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(4),.ProjectGallery-module__zNGKyq__gallery[data-image-count="5"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(5),.ProjectGallery-module__zNGKyq__gallery[data-image-count="6"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(3),.ProjectGallery-module__zNGKyq__gallery[data-image-count="6"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(4),.ProjectGallery-module__zNGKyq__gallery[data-image-count="6"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(5),.ProjectGallery-module__zNGKyq__gallery[data-image-count="6"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(6){aspect-ratio:4/3;grid-area:auto}.ProjectGallery-module__zNGKyq__imageButton:first-child,.ProjectGallery-module__zNGKyq__gallery[data-image-count="1"] .ProjectGallery-module__zNGKyq__imageButton:first-child,.ProjectGallery-module__zNGKyq__gallery[data-image-count="5"] .ProjectGallery-module__zNGKyq__imageButton:first-child,.ProjectGallery-module__zNGKyq__gallery[data-image-count="6"] .ProjectGallery-module__zNGKyq__imageButton:first-child{aspect-ratio:16/10;grid-column:1/-1}.ProjectGallery-module__zNGKyq__imageButton:nth-child(2),.ProjectGallery-module__zNGKyq__gallery[data-image-count="5"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(2),.ProjectGallery-module__zNGKyq__gallery[data-image-count="6"] .ProjectGallery-module__zNGKyq__imageButton:nth-child(2){aspect-ratio:16/8;grid-column:1/-1}.ProjectGallery-module__zNGKyq__backdrop{padding:12px}.ProjectGallery-module__zNGKyq__lightbox{border-radius:16px;grid-template-rows:100px minmax(0,1fr) 100px;width:100%;height:calc(100dvh - 24px);padding:0 16px}.ProjectGallery-module__zNGKyq__topbar{gap:12px}.ProjectGallery-module__zNGKyq__modalIdentity strong{font-size:20px}.ProjectGallery-module__zNGKyq__modalIdentity span{font-size:13px}.ProjectGallery-module__zNGKyq__topbarActions{gap:12px}.ProjectGallery-module__zNGKyq__topbarActions button{width:44px;height:44px}.ProjectGallery-module__zNGKyq__imageCount{font-size:14px}.ProjectGallery-module__zNGKyq__modalBody{grid-template-rows:minmax(0,1fr) 80px;grid-template-columns:minmax(0,1fr);gap:14px;padding-top:18px}.ProjectGallery-module__zNGKyq__thumbnailRail{gap:10px;padding:2px;display:flex;overflow:auto hidden}.ProjectGallery-module__zNGKyq__thumbnail{flex:0 0 110px;height:74px;min-height:0}.ProjectGallery-module__zNGKyq__thumbnail span{padding:3px 5px;font-size:12px;top:5px;left:5px}.ProjectGallery-module__zNGKyq__viewerLabel{font-size:13px;top:10px;left:10px}.ProjectGallery-module__zNGKyq__controls{gap:12px}.ProjectGallery-module__zNGKyq__navigationButton{width:54px;padding:0}.ProjectGallery-module__zNGKyq__navigationButton>span{display:none}.ProjectGallery-module__zNGKyq__zoomControl{gap:0;width:min(350px,100%);padding:0 4px}.ProjectGallery-module__zNGKyq__zoomControl>span{min-width:0;font-size:13px}.ProjectGallery-module__zNGKyq__zoomControl strong{font-size:14px}}@media (max-width:400px){.ProjectGallery-module__zNGKyq__lightbox{padding:0 12px}.ProjectGallery-module__zNGKyq__modalIdentity strong{font-size:16px}.ProjectGallery-module__zNGKyq__topbarActions{gap:8px}.ProjectGallery-module__zNGKyq__imageCount{white-space:nowrap;font-size:12px}.ProjectGallery-module__zNGKyq__controls{gap:6px}.ProjectGallery-module__zNGKyq__navigationButton{width:44px}.ProjectGallery-module__zNGKyq__zoomControl button{width:36px}}@media (prefers-reduced-motion:reduce){.ProjectGallery-module__zNGKyq__gallery *,.ProjectGallery-module__zNGKyq__gallery :before,.ProjectGallery-module__zNGKyq__gallery :after,.ProjectGallery-module__zNGKyq__backdrop,.ProjectGallery-module__zNGKyq__lightbox,.ProjectGallery-module__zNGKyq__lightbox *,.ProjectGallery-module__zNGKyq__lightbox :before,.ProjectGallery-module__zNGKyq__lightbox :after{transition:none!important;animation:none!important}}[data-theme=dark] .ProjectGallery-module__zNGKyq__imageButton{background:#1d1d1d;border-color:#363c4c}[data-theme=light] .ProjectGallery-module__zNGKyq__imageButton{background:var(--detail-card,#eeeff2)}
.page-module__e_nj4G__stage{--detail-bg:#f8f7fc;--detail-text:#242333;--detail-copy:#444254;--detail-muted:#68667a;--detail-accent:#65750a;--detail-border:#d2d8e4;--detail-card:#eeeff2;--detail-link:#e8eaf1;--detail-button:#fff;min-height:100svh;color:var(--detail-text);background:var(--detail-bg);font-family:var(--font-project-sora), sans-serif;padding:36px min(68px,4.722vw)}[data-theme=dark] .page-module__e_nj4G__stage{--detail-bg:#101218;--detail-text:#f1f0f7;--detail-copy:#e0dfe9;--detail-muted:#b0b2c2;--detail-accent:#e5f58a;--detail-border:#30343f;--detail-card:#1b1f2a;--detail-link:#202431;--detail-button:#191c24}.page-module__e_nj4G__shell{max-width:1304px;margin:0 auto}.page-module__e_nj4G__header,.page-module__e_nj4G__gallerySection,.page-module__e_nj4G__details,.page-module__e_nj4G__footer,.page-module__e_nj4G__copyright{width:89.34%;margin-left:auto;margin-right:auto}.page-module__e_nj4G__hero{grid-template-columns:minmax(0,616fr) minmax(0,483fr);gap:64px;min-height:382px;padding-top:41px;padding-bottom:46px;display:grid}.page-module__e_nj4G__caseLabel{color:var(--detail-accent);font:16px var(--font-project-mono), monospace}.page-module__e_nj4G__hero h1{letter-spacing:-.025em;overflow-wrap:anywhere;max-width:616px;margin:26px 0 0;font-size:clamp(44px,4.722vw,68px);font-weight:600;line-height:1.4}.page-module__e_nj4G__heroTitle[data-long-title=true] h1{max-width:580px}.page-module__e_nj4G__eyebrow{color:var(--detail-accent);font-size:16px}.page-module__e_nj4G__projectSummary>p{color:var(--detail-copy);margin:20px 0 25px;font-size:18px;line-height:1.4}.page-module__e_nj4G__projectFacts{margin:0;font-size:16px}.page-module__e_nj4G__projectFacts>div{grid-template-columns:1.3fr 1fr;gap:16px;margin-top:22px;display:grid}.page-module__e_nj4G__projectFacts dt{color:var(--detail-muted)}.page-module__e_nj4G__projectFacts dd{margin:0}.page-module__e_nj4G__sectionHeading{justify-content:space-between;align-items:center;gap:24px;margin-bottom:29px;display:flex}.page-module__e_nj4G__stage h2{margin:0;font-size:26px;font-weight:600;line-height:1.4}.page-module__e_nj4G__sectionHeading h2 span{color:var(--detail-accent);font-weight:500}.page-module__e_nj4G__sectionHeading>p{color:var(--detail-muted);text-align:right;margin:0;font-size:16px}.page-module__e_nj4G__details{grid-template-columns:minmax(0,656fr) minmax(0,379fr);gap:130px;margin-top:80px;display:grid}.page-module__e_nj4G__detailTitle{justify-content:space-between;align-items:center;gap:16px;display:flex}.page-module__e_nj4G__detailTitle>span{color:var(--detail-accent);font:16px var(--font-project-mono), monospace}.page-module__e_nj4G__technologyList{grid-template-columns:repeat(3,minmax(0,1fr));gap:17px 16px;margin:28px 0 0;padding:0;list-style:none;display:grid}.page-module__e_nj4G__technologyList li{border:1px solid var(--detail-border);background:var(--detail-card);border-radius:10px;align-items:center;gap:16px;min-height:84px;padding:16px;font-size:16px;display:flex}.page-module__e_nj4G__technologyList svg,.page-module__e_nj4G__technologyList img{object-fit:contain;flex:none;width:29px;height:29px}.page-module__e_nj4G__projectLinks{gap:20px;margin-top:28px;display:grid}.page-module__e_nj4G__projectLinks a{min-height:64px;color:var(--detail-accent);background:var(--detail-link);border-radius:10px;justify-content:space-between;align-items:center;gap:16px;padding:20px 22px;font-size:16px;text-decoration:none;display:flex}.page-module__e_nj4G__projectLinks a:hover{box-shadow:inset 0 0 0 1px var(--detail-accent)}.page-module__e_nj4G__footer{justify-content:space-between;gap:32px;margin-top:88px;display:flex}.page-module__e_nj4G__previousProject,.page-module__e_nj4G__nextProject{min-height:66px;color:var(--detail-text);align-items:center;gap:16px;text-decoration:none;display:flex}.page-module__e_nj4G__nextProject{justify-content:space-between;min-width:303px;margin-left:auto;padding-left:15px}.page-module__e_nj4G__footer small{color:var(--detail-muted);margin-bottom:6px;font-size:16px;display:block}.page-module__e_nj4G__footer strong{font-size:24px;font-weight:500}.page-module__e_nj4G__footer svg{color:var(--detail-accent)}.page-module__e_nj4G__footer svg,.page-module__e_nj4G__projectLinks svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px;flex:none;width:24px;height:24px}.page-module__e_nj4G__previousProject strong,.page-module__e_nj4G__nextProject strong{transition:color .18s}.page-module__e_nj4G__previousProject svg,.page-module__e_nj4G__nextProject svg{transition:transform .18s}.page-module__e_nj4G__previousProject:is(:hover,:focus-visible) strong,.page-module__e_nj4G__nextProject:is(:hover,:focus-visible) strong{color:var(--detail-accent)}.page-module__e_nj4G__previousProject:is(:hover,:focus-visible) svg{transform:translate(-5px)}.page-module__e_nj4G__nextProject:is(:hover,:focus-visible) svg{transform:translate(5px)}@media (prefers-reduced-motion:reduce){.page-module__e_nj4G__previousProject strong,.page-module__e_nj4G__nextProject strong,.page-module__e_nj4G__previousProject svg,.page-module__e_nj4G__nextProject svg{transition:none}.page-module__e_nj4G__previousProject:is(:hover,:focus-visible) svg,.page-module__e_nj4G__nextProject:is(:hover,:focus-visible) svg{transform:none}}.page-module__e_nj4G__copyright{min-height:44px;color:var(--detail-muted);text-align:center;justify-content:center;align-items:center;gap:12px;margin-top:74px;margin-bottom:14px;font-size:16px;display:flex}.page-module__e_nj4G__copyright svg{color:var(--detail-accent);flex:none}.page-module__e_nj4G__stage a:focus-visible,.page-module__e_nj4G__stage button:focus-visible{outline-offset:5px;outline:2px solid #bf4b2c}@media (max-width:1100px){.page-module__e_nj4G__hero{gap:40px}.page-module__e_nj4G__details{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:48px}.page-module__e_nj4G__technologyList li{gap:10px;padding:12px;font-size:14px}}@media (max-width:800px){.page-module__e_nj4G__stage{padding:20px}.page-module__e_nj4G__hero{grid-template-columns:1fr;gap:36px;padding:40px 0 48px}.page-module__e_nj4G__hero h1{margin-top:20px;font-size:52px;line-height:1.25}.page-module__e_nj4G__projectFacts>div{grid-template-columns:1fr 1fr}.page-module__e_nj4G__sectionHeading{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:24px}.page-module__e_nj4G__sectionHeading>p{text-align:left;font-size:14px}.page-module__e_nj4G__details{grid-template-columns:1fr;gap:44px;margin-top:48px}.page-module__e_nj4G__footer{margin-top:56px}.page-module__e_nj4G__nextProject{min-width:0;padding-left:0}.page-module__e_nj4G__footer strong{font-size:20px}.page-module__e_nj4G__footer small{font-size:13px}.page-module__e_nj4G__copyright{margin-top:48px;font-size:12px}}@media (max-width:480px){.page-module__e_nj4G__stage{padding:12px}.page-module__e_nj4G__hero h1{font-size:42px}.page-module__e_nj4G__projectSummary>p{font-size:16px}.page-module__e_nj4G__stage h2{font-size:23px}.page-module__e_nj4G__technologyList{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.page-module__e_nj4G__technologyList li{flex-wrap:wrap}.page-module__e_nj4G__footer{flex-wrap:wrap;gap:24px}.page-module__e_nj4G__footer strong{font-size:18px}}@media (min-width:761px),(orientation:landscape){.page-module__e_nj4G__stage{padding-top:min(36px,3.75dvh)}}@media (max-width:760px) and (orientation:portrait){.page-module__e_nj4G__stage{padding-top:16px}}
.page-module__q81_BW__stage{--projects-background:#101218;--projects-text:#f1f0f7;--projects-copy:#e0dfe9;--projects-muted:#b0b2c2;--projects-accent:#e5f58a;--projects-action-hover:#d1bfff;--projects-card:#191c24;--projects-border:#343948;--projects-featured-border:#3d4350;min-height:100svh;color:var(--projects-text);background:var(--projects-background);font-family:var(--font-projects-sans), sans-serif;padding:36px 32px}.page-module__q81_BW__shell{width:min(1304px,100%);margin:0 auto;padding:0 clamp(24px,4.86vw,70px)}.page-module__q81_BW__stage a:focus-visible,.page-module__q81_BW__stage button:focus-visible{outline-offset:5px;outline:2px solid #bf4b2c}.page-module__q81_BW__heading{grid-template-columns:minmax(0,1fr) minmax(0,455px);gap:48px;padding-top:96px;display:grid}.page-module__q81_BW__heading h1{letter-spacing:-.03em;margin:0;font-size:62px;font-weight:600;line-height:1.23}.page-module__q81_BW__heading h1 span{color:var(--projects-accent);font-weight:500;display:block}.page-module__q81_BW__heading p{color:var(--projects-copy);margin:18px 0 0;font-size:20px;line-height:1.4}.page-module__q81_BW__count{color:var(--projects-muted);font-family:var(--font-projects-mono), monospace;text-align:right;margin:0 0 26px;font-size:16px;line-height:24px}.page-module__q81_BW__projectCard{border:1px solid var(--projects-border);min-width:0;color:var(--projects-text);background:var(--projects-card);border-radius:14px;flex-direction:column;text-decoration:none;transition:border-color .18s;display:flex;overflow:hidden}.page-module__q81_BW__projectCard:hover{border-color:var(--projects-accent)}.page-module__q81_BW__projectImage{background:#1d2230;flex-shrink:0;height:240px;position:relative}.page-module__q81_BW__projectImage img{object-fit:contain;padding:16px}.page-module__q81_BW__projectCard[data-project-id="1"] .page-module__q81_BW__projectImage{background:#e5f58a}.page-module__q81_BW__projectCard[data-project-id="2"] .page-module__q81_BW__projectImage{background:#d1bfff}.page-module__q81_BW__projectCard[data-project-id="3"] .page-module__q81_BW__projectImage{background:#232134}.page-module__q81_BW__projectCard[data-project-id="5"] .page-module__q81_BW__projectImage{background:#1d1d1d}.page-module__q81_BW__projectCopy{flex-direction:column;gap:12px;min-width:0;min-height:176px;padding:22px;display:flex}.page-module__q81_BW__projectMeta{color:var(--projects-muted);font-family:var(--font-projects-mono), monospace;justify-content:space-between;align-items:center;gap:16px;font-size:13px;line-height:17px;display:flex}.page-module__q81_BW__projectNumber{color:var(--projects-accent);flex-shrink:0}.page-module__q81_BW__projectTitle{justify-content:space-between;align-items:center;gap:12px;display:flex}.page-module__q81_BW__projectCopy h2{margin:0;font-size:27px;font-weight:500;line-height:1.26}.page-module__q81_BW__projectTitle svg{color:var(--projects-accent);flex-shrink:0}.page-module__q81_BW__projectTitle svg,.page-module__q81_BW__featuredAction svg{transition:color .18s,transform .18s}.page-module__q81_BW__projectCard:is(:hover,:focus-visible) .page-module__q81_BW__projectTitle svg,.page-module__q81_BW__projectCard:is(:hover,:focus-visible) .page-module__q81_BW__featuredAction svg{color:var(--projects-action-hover);transform:translate(3px,-3px)}.page-module__q81_BW__projectCopy p{color:var(--projects-muted);margin:0;font-size:15px;line-height:1.4}.page-module__q81_BW__featuredCard{border-color:var(--projects-featured-border);grid-template-columns:minmax(0,710fr) minmax(0,453fr);min-height:365px;display:grid}.page-module__q81_BW__featuredCard .page-module__q81_BW__projectImage{height:auto;min-height:363px}.page-module__q81_BW__featuredCard .page-module__q81_BW__projectImage img{padding:22px}.page-module__q81_BW__featuredCard .page-module__q81_BW__projectCopy{gap:18px;padding:30px}.page-module__q81_BW__featuredCard h2{font-size:36px;font-weight:600;line-height:1.2}.page-module__q81_BW__featuredLabel{color:var(--projects-accent);font:13px var(--font-projects-mono), monospace}.page-module__q81_BW__featuredCategory{color:var(--projects-muted);font-size:14px}.page-module__q81_BW__featuredCard p{color:var(--projects-copy);font-size:17px;line-height:1.5}.page-module__q81_BW__featuredAction{min-height:44px;color:var(--projects-accent);text-underline-offset:5px;align-items:center;gap:14px;font-size:16px;transition:color .18s;display:flex}.page-module__q81_BW__projectCard:is(:hover,:focus-visible) .page-module__q81_BW__featuredAction{color:var(--projects-action-hover);text-decoration:underline}.page-module__q81_BW__projectGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 25px;margin-top:32px;display:grid}.page-module__q81_BW__footer{min-height:44px;color:var(--projects-muted);text-align:center;justify-content:center;align-items:center;gap:12px;margin-top:106px;padding-bottom:44px;font-size:16px;line-height:24px;display:flex}.page-module__q81_BW__footer svg{color:var(--projects-accent);flex-shrink:0}[data-theme=light] .page-module__q81_BW__stage{--projects-background:#f8f7fc;--projects-text:#171923;--projects-copy:#343744;--projects-muted:#626573;--projects-accent:#56651f;--projects-action-hover:#7650a0;--projects-card:#eeeef2;--projects-border:#d2d5dd;--projects-featured-border:#c3c7d0}@media (max-width:1100px){.page-module__q81_BW__heading{grid-template-columns:1fr 1fr}.page-module__q81_BW__featuredCard{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}.page-module__q81_BW__featuredCard .page-module__q81_BW__projectCopy{padding:24px}.page-module__q81_BW__featuredCard h2{font-size:30px}}@media (max-width:960px){.page-module__q81_BW__stage{padding:18px}.page-module__q81_BW__shell{padding:0 24px}.page-module__q81_BW__heading{grid-template-columns:1fr;gap:24px;padding-top:56px}.page-module__q81_BW__heading h1{font-size:clamp(44px,10vw,62px)}.page-module__q81_BW__heading p{max-width:455px;margin:0;font-size:18px}.page-module__q81_BW__collection{margin-top:32px}.page-module__q81_BW__count{margin-bottom:24px;font-size:14px}.page-module__q81_BW__featuredCard{grid-template-columns:1fr}.page-module__q81_BW__featuredCard .page-module__q81_BW__projectImage{aspect-ratio:710/365;min-height:0}.page-module__q81_BW__featuredCard .page-module__q81_BW__projectCopy{gap:16px}.page-module__q81_BW__featuredCard h2{font-size:32px}.page-module__q81_BW__projectMeta{flex-wrap:wrap;gap:8px}.page-module__q81_BW__projectTitle h2{font-size:24px}.page-module__q81_BW__footer{margin-top:64px;padding-bottom:28px;font-size:12px}}@media (max-width:640px){.page-module__q81_BW__projectGrid{grid-template-columns:1fr;gap:24px;margin-top:24px}.page-module__q81_BW__projectImage{aspect-ratio:570/240;height:auto}.page-module__q81_BW__projectCopy{min-height:0;padding:22px}.page-module__q81_BW__projectMeta{flex-wrap:nowrap;font-size:12px}.page-module__q81_BW__projectTitle h2{font-size:26px}.page-module__q81_BW__featuredCard h2{font-size:30px}}@media (max-width:420px){.page-module__q81_BW__stage{padding:0}.page-module__q81_BW__shell{padding:0 20px}}@media (prefers-reduced-motion:reduce){.page-module__q81_BW__projectCard,.page-module__q81_BW__projectTitle svg,.page-module__q81_BW__featuredAction,.page-module__q81_BW__featuredAction svg{transition:none}.page-module__q81_BW__projectCard:is(:hover,:focus-visible) .page-module__q81_BW__projectTitle svg,.page-module__q81_BW__projectCard:is(:hover,:focus-visible) .page-module__q81_BW__featuredAction svg{transform:none}}@media (min-width:761px),(orientation:landscape){.page-module__q81_BW__stage{padding-top:min(36px,3.75dvh)}}@media (max-width:760px) and (orientation:portrait){.page-module__q81_BW__stage{padding-top:16px}}
.page-module__mu14_a__stage{--sketches-background:#101218;--sketches-text:#f1f0f7;--sketches-copy:#e0dfe9;--sketches-muted:#b0b2c2;--sketches-accent:#e5f58a;--sketches-card:#1b1f2a;--sketches-card-border:#343948;--sketches-control:#191c24;background:var(--sketches-background);min-height:100svh;color:var(--sketches-text);font-family:var(--font-sketches-sans), sans-serif;padding:36px 32px}.page-module__mu14_a__shell{flex-direction:column;width:min(1304px,100%);min-height:max(888px,100svh - 72px);margin:0 auto;padding:0 clamp(24px,4.86vw,70px);display:flex}.page-module__mu14_a__heading{grid-template-columns:minmax(0,1fr) minmax(0,455px);gap:48px;padding-top:96px;display:grid}.page-module__mu14_a__heading h1{letter-spacing:-.03em;margin:0;font-size:62px;font-weight:600;line-height:1.23}.page-module__mu14_a__heading h1 span{color:var(--sketches-accent);font-weight:500;display:block}.page-module__mu14_a__heading p{color:var(--sketches-copy);margin:18px 0 0;font-size:20px;line-height:1.4}.page-module__mu14_a__collection{margin-top:37px}.page-module__mu14_a__count{color:var(--sketches-muted);font-family:var(--font-sketches-mono), monospace;text-align:right;margin:0 0 32px;font-size:16px;line-height:24px}.page-module__mu14_a__footer{color:var(--sketches-muted);text-align:center;justify-content:center;align-items:center;gap:12px;margin-top:auto;padding:64px 0 39px;font-size:16px;line-height:24px;display:flex}.page-module__mu14_a__footer svg{color:var(--sketches-accent);flex-shrink:0}[data-theme=light] .page-module__mu14_a__stage{--sketches-background:#f8f7fc;--sketches-text:#171923;--sketches-copy:#343744;--sketches-muted:#626573;--sketches-accent:#56651f;--sketches-card:#eeeef2;--sketches-card-border:#d2d5dd;--sketches-control:#eeeef2}@media (max-width:1100px){.page-module__mu14_a__heading{grid-template-columns:1fr 1fr}}@media (max-width:960px){.page-module__mu14_a__stage{padding:18px}.page-module__mu14_a__shell{min-height:calc(100svh - 36px);padding:0 24px}.page-module__mu14_a__heading{grid-template-columns:1fr;gap:24px;padding-top:56px}.page-module__mu14_a__heading h1{font-size:clamp(44px,10vw,62px)}.page-module__mu14_a__heading p{max-width:455px;margin:0;font-size:18px}.page-module__mu14_a__collection{margin-top:40px}.page-module__mu14_a__count{margin-bottom:24px;font-size:14px}.page-module__mu14_a__footer{padding:56px 0 28px;font-size:12px}}@media (max-width:420px){.page-module__mu14_a__stage{padding:0}.page-module__mu14_a__shell{min-height:100svh;padding:0 20px}}@media (min-width:761px),(orientation:landscape){.page-module__mu14_a__stage{padding-top:min(36px,3.75dvh)}}@media (max-width:760px) and (orientation:portrait){.page-module__mu14_a__stage{padding-top:16px}}
