:root{--text:#555;--text-h:#111;--bg:#f6f6f6;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#111;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (width<=1024px){:root{font-size:16px}}._footer_obpm3_1{--footer-angle:4rem;margin-top:calc(var(--page-padding-y) * 2);color:var(--text-color);text-align:center;flex-direction:column;align-self:stretch;align-items:center;padding:1rem 0 2rem;display:flex;position:relative}@media (width<=768px){._footer_obpm3_1{padding:1rem 0}}._footer_obpm3_1:before{content:"";inset:calc(-1 * var(--footer-angle)) 0 0;background-color:var(--footer-bg);clip-path:polygon(0 var(--footer-angle), 100% 0, 100% 100%, 0 100%);z-index:0;position:absolute}._footer_obpm3_1>*{z-index:1;position:relative}._copyright_obpm3_43{color:var(--text-color);text-align:center;margin:0;font-size:.8rem}._link_o93sp_1{align-items:center;gap:.125rem;font-size:.8rem;text-decoration:none;display:inline-flex}._link_o93sp_1 svg{transition:translate .18s ease-in-out;translate:0}._link_o93sp_1:hover{text-decoration:none}._link_o93sp_1:active{transform:scale(.95)}._link_o93sp_1._linkBack_o93sp_23:hover svg{translate:-.25rem}._link_o93sp_1._linkForward_o93sp_27:hover svg{translate:.25rem}._absolute_o93sp_31{position:absolute;top:1rem;left:1rem}._header_bd3rr_1{flex-direction:column;align-items:center;padding:1rem;display:flex}._title_bd3rr_8{flex-direction:column;display:flex}._subtitle_bd3rr_13{color:var(--text);font-size:1rem}._flowchart_1r1yt_1{box-sizing:content-box;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);--initial-color:#333;--arrow-activity-color:#f5f5f5;--node-activity-color:#777;--node-active-color:#555;--node-success-color:#333;--arrow-duration:.6s;--arrival-delay:-110ms;--step-duration:calc(var(--arrow-duration) + var(--arrival-delay));--node-duration:.3s;background-color:#1111;border-radius:4px;grid-template-columns:1fr;place-items:center;gap:.5rem;width:2rem;margin:0 auto;padding:1rem .5rem;display:grid}._flowchart_1r1yt_1._horizontal_1r1yt_33{grid-template-columns:auto 1rem auto 1rem auto 1rem auto;width:auto;padding:.5rem .75rem}._flowchart_1r1yt_1 svg{height:auto;color:var(--initial-color)}._flowchart_1r1yt_1>svg:nth-of-type(2n){--rotation-direction:1}._flowchart_1r1yt_1>svg:nth-of-type(odd){--rotation-direction:-1}._user_1r1yt_61{width:1.5rem;color:var(--node-success-color)}._frontend_1r1yt_66,._backend_1r1yt_67{animation:_node-state_1r1yt_1 var(--node-duration) ease-in-out both, _node-state_1r1yt_1 var(--node-duration) ease-in-out forwards;animation-delay:calc(var(--step) * var(--step-duration)), calc(var(--response-step) * var(--step-duration))}._database_1r1yt_77{animation:_node-state_1r1yt_1 var(--node-duration) ease-in-out both;animation-delay:calc(var(--step) * var(--step-duration))}._arrow_1r1yt_82{background-color:var(--initial-color);width:1rem;height:1rem;-webkit-mask-image:var(--arrow-mask);mask-image:var(--arrow-mask);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--arrow-mask);position:relative;overflow:hidden;-webkit-mask-position:50%;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat}._arrow_1r1yt_82:after{content:"";background:linear-gradient(to bottom, transparent 0%, var(--arrow-activity-color) 30%, var(--arrow-activity-color) 70%, transparent 100%);width:100%;height:50%;animation:_arrow-flow-down_1r1yt_1 var(--arrow-duration) ease-in-out both;animation-delay:calc(var(--step) * var(--step-duration));position:absolute;top:-50%;left:0}._response-arrow_1r1yt_125:after{animation-name:_arrow-flow-up_1r1yt_1}._double-arrow_1r1yt_129{width:1rem;height:1rem;position:relative}._double-arrow_1r1yt_129>._arrow_1r1yt_82{position:absolute;inset:0}._arrow-1_1r1yt_141{--step:0}._frontend_1r1yt_66{--step:1;--response-step:9;width:1.5rem}._arrow-2_1r1yt_152{--step:2}._backend_1r1yt_67{--step:3;--response-step:7;width:1.5rem}._arrow-3_1r1yt_163{--step:4}._database_1r1yt_77{--step:5;width:1.5rem}._arrow-4_1r1yt_173{--step:6}._arrow-5_1r1yt_177{--step:8}._horizontal_1r1yt_33 ._arrow-1_1r1yt_141,._horizontal_1r1yt_33 ._double-arrow_1r1yt_129{transform:rotate(-90deg)}@keyframes _node-state_1r1yt_1{0%{color:var(--initial-color);transform:scale(1)rotate(0)}20%{color:var(--node-activity-color);transform:scale(1.2) rotate(calc(5deg * var(--rotation-direction)))}50%{color:var(--node-active-color);transform:scale(1.05) rotate(calc(-5deg * var(--rotation-direction)))}to{color:var(--node-success-color);transform:scale(1)rotate(0)}}@keyframes _arrow-flow-down_1r1yt_1{0%{transform:translateY(0)}to{transform:translateY(300%)}}@keyframes _arrow-flow-up_1r1yt_1{0%{transform:translateY(300%)}to{transform:translateY(0)}}._box_wgkls_1{--padding:.25rem;--icon-size:1rem;padding:var(--padding);color:#fff;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);border-radius:4px;align-items:center;transition:background-color .2s ease-in-out,color .2s ease-in-out;display:flex;position:relative}._box_wgkls_1[data-theme=dark]{background-color:#1113}._box_wgkls_1[data-theme=light]{color:#111;background-color:#1111}@media (width<=768px){._box_wgkls_1{--padding:.25rem;--icon-size:1.25rem}}._box_wgkls_1>svg{width:var(--icon-size);height:var(--icon-size);pointer-events:none}._box_wgkls_1:hover{background-color:var(--bg-color,var(--accent))}._box_wgkls_1:hover>svg{color:#fff}._box_wgkls_1:active{scale:.95}._box_wgkls_1>._tooltip_wgkls_55{padding:var(--padding);white-space:nowrap;pointer-events:none;opacity:0;align-items:center;gap:.125em;font-size:.8rem;line-height:1rem;transition:opacity .2s ease-in-out,translate .2s ease-in-out;display:flex;position:absolute}._box_wgkls_1:hover>._tooltip_wgkls_55{pointer-events:auto;opacity:1;translate:0}._tooltip_wgkls_55[data-position=left]{right:100%;translate:-.5rem}._tooltip_wgkls_55[data-position=right]{flex-direction:row-reverse;left:100%;translate:.5rem}._tooltip_wgkls_55[data-position=top],._tooltip_wgkls_55[data-position=bottom]{right:calc(50% - (var(--icon-size) / 2));translate:-.5rem}._tooltip_wgkls_55[data-position=top] svg{margin-top:.35rem}._tooltip_wgkls_55[data-position=bottom] svg{margin-bottom:.25rem}._tooltip_wgkls_55[data-position=top]{bottom:100%}._tooltip_wgkls_55[data-position=bottom]{top:100%}@media (width<=768px){._tooltip_wgkls_55{max-width:9rem}[data-links-position=absolute] ._tooltip_wgkls_55{max-width:none}._tooltip_wgkls_55>span{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}._tooltip_wgkls_55>svg{flex-shrink:0}}._list_9823d_1{justify-content:center;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}._list_9823d_1 a{--icon-size:1.5rem;--padding:.5rem}._presentation_1wfib_1{padding-bottom:2rem}p{max-width:500px;margin:1rem auto}footer{justify-content:center;align-items:center;gap:.5rem;margin-top:4rem;display:flex}._links_1xtk1_1{--fade-delay:.5s;--fade-duration:.5s;--stagger:.25s;align-items:flex-start;gap:.5rem;display:flex}._absolute_1xtk1_11{position:absolute;top:1rem;right:1rem}._vertical_1xtk1_17{flex-direction:column}._links_1xtk1_1 a{--icon-size:1.5rem;--padding:.5rem;opacity:1;pointer-events:auto}._animate_1xtk1_29{pointer-events:none}._animate_1xtk1_29 a{opacity:0;will-change:opacity;pointer-events:none;transition:opacity var(--fade-duration) ease-in-out calc(var(--fade-delay) + var(--box-index) * var(--stagger)), pointer-events 0s linear calc(var(--fade-delay) + var(--fade-duration) + var(--box-index) * var(--stagger)) allow-discrete}[data-visible=true] ._animate_1xtk1_29{pointer-events:auto}[data-visible=true] ._animate_1xtk1_29 a{opacity:1;pointer-events:auto}._links_1gcy0_1{--padding:.25rem;--icon-size:1rem;--box-width:calc(var(--icon-size) + var(--padding) * 2);--gap:.5rem;--translate-duration:.5s;--stagger:.1s;--opacity-duration:.2s;bottom:1rem;right:1rem;left:var(--clip-percentage);justify-content:flex-start;gap:var(--gap);flex-flow:row-reverse wrap-reverse;display:flex;position:absolute;container-type:inline-size}@media (width<=768px){._links_1gcy0_1{left:40%}}._links_1gcy0_1 a{transform:translateX(calc(-100cqi + var(--box-width)));opacity:0;pointer-events:none;transition:background-color .2s ease-in-out, transform var(--translate-duration) ease-in-out calc(var(--box-index) * var(--stagger)), opacity var(--opacity-duration) ease-in-out calc(var(--box-index) * var(--stagger)), pointer-events 0s linear calc(var(--translate-duration) + var(--box-index) * var(--stagger)) allow-discrete}[data-links-visible=true] ._links_1gcy0_1 a{opacity:1;pointer-events:auto;transform:translate(0)}._card_32txm_1{--padding:1rem;--clip-percentage:20%;--image-shape:polygon(100% 0, 100% 100%, var(--clip-percentage) 100%, 0 0);--card-duration:.25s;--card-enter-end:var(--card-duration);opacity:0;will-change:opacity;transition:opacity var(--card-duration) ease-in-out;background-color:#fff;border-radius:4px;position:relative;box-shadow:0 2px 5px -1px #32325d40,0 1px 3px -1px #0000004d}._card_32txm_1[data-visible=true]{opacity:1}@media (width<=768px){._card_32txm_1{--image-shape:polygon(100% 0, 100% 100%, 0 90%, 0 0)}}._card_32txm_1>header{margin:2rem 2rem 1rem}@media (width<=768px){._card_32txm_1>header{margin:1.5rem 2rem 1rem}}._title-link_32txm_56{display:inline}._title_32txm_56{text-align:left;color:#333;margin:0;font-size:1.25rem;font-weight:400}._description_32txm_68{text-align:left;margin:1rem 2rem}._visuals_32txm_73{float:right;aspect-ratio:1;shape-outside:var(--image-shape);width:min(100%,440px);clip-path:var(--image-shape);margin-left:1rem;position:relative}@media (width<=768px){._visuals_32txm_73{float:none;aspect-ratio:16/9;shape-outside:none;clip-path:none;width:100%;margin-left:0}}._visuals_32txm_73 figure{width:100%;height:100%;clip-path:var(--image-shape);border-top-right-radius:4px;border-bottom-right-radius:4px;margin:0;overflow:hidden}@media (width<=768px){._visuals_32txm_73 figure{border-top-left-radius:4px;border-bottom-right-radius:0}}._visuals_32txm_73 figure:after{content:"";pointer-events:none;z-index:1;position:absolute;inset:0}._image_32txm_130{object-fit:cover;object-position:40% center;width:100%;height:100%;display:block;position:relative}@media (width<=768px){._image_32txm_130{object-position:center center}}nav{margin:1rem 2rem 2rem}._figureBottomSentinel_32txm_148{pointer-events:none;height:1px;position:absolute;bottom:0;left:0;right:0}._uiBox_1od4n_1{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background-color:#1111;border-radius:4px;justify-content:center;align-items:center;margin:0 auto;padding:.5rem 1rem;font-size:.8rem;display:flex}._uiBox_1od4n_1>*{margin:0}._errorBox_qrp91_1{gap:8px}._errorBox_qrp91_1 ._icon_qrp91_5{color:red;font-size:1.5rem}._ellipsis_1gi05_1{text-align:left;display:inline-block;position:relative}._ellipsis_1gi05_1:before{content:"...";visibility:hidden}._ellipsis_1gi05_1:after{content:"";animation:1.2s step-end infinite _ellipsis_1gi05_1;position:absolute;left:0}@keyframes _ellipsis_1gi05_1{25%{content:"."}50%{content:".."}75%{content:"..."}}._grid_1x7uo_1{grid-template-columns:1fr;gap:2rem;display:grid}._more-projects_1x7uo_7{text-align:center;font-size:.8rem;font-style:italic}._list_839ww_1{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}._start_839ww_11{justify-content:flex-start}._center_839ww_15{justify-content:center}._list_839ww_1 a{--icon-size:1.5rem;--padding:.5rem}._heading_1om42_1{color:#111;align-items:center;gap:.25rem;margin:0;font-size:.8rem;font-weight:400;display:flex}._start_1om42_11{justify-content:flex-start}._center_1om42_15{justify-content:center}._arrow_1om42_19{margin-top:.35rem}._grid_1nq2n_1{grid-template-columns:1fr;justify-self:center;gap:1rem;display:grid}@media (width<=768px){._grid_1nq2n_1{justify-self:start}}._stack_1nq2n_12{flex-direction:column;align-items:flex-start;gap:.25rem;display:flex}._intro_12h4c_1{flex-direction:column;justify-content:center;align-items:center;gap:2rem;min-height:100svh;display:flex}@media (width<=768px){._intro_12h4c_1{margin-top:2rem}}h3{text-align:center}._project-header_y28jd_5{flex-direction:column;align-items:center;gap:.5rem;margin-bottom:2rem;display:flex}._project-header_y28jd_5 a{--icon-size:1.5rem}._responsibility-list_y28jd_17{align-items:left;flex-direction:column;margin:0 0 1rem;padding:0;display:flex}._responsibility-list_y28jd_17 li{white-space:pre-wrap}._tech-stack-section_y28jd_30{flex-direction:column;gap:.25rem;margin-top:1.5rem;display:flex}:root{--page-width:800px;--header-height:6rem;--page-padding-y:4rem;--page-padding-x:2rem;--footer-bg:#f1f1f1}*,:before,:after{box-sizing:border-box}html,body{background-color:var(--footer-bg)}html,body,#root{min-height:100svh;margin:0;padding:0}#root{background:radial-gradient(circle,#fff 0%,#f8f8f8 100%);flex-direction:column;align-items:center;display:flex}#root>header{margin-top:var(--page-padding-y)}main{max-width:var(--page-width);padding:0 var(--page-padding-x);flex-direction:column;flex:1;display:flex}main.start-page-main{gap:2rem}main.center{align-items:center}main>section.full-height-section:last-child{min-height:calc(100svh - var(--page-padding-y))}.full-height-section{flex-direction:column;justify-content:center;align-items:center;min-height:100svh;display:flex}h1,h2,h3{text-align:center;text-wrap-style:balance}h2{font-size:1.5rem;font-weight:400}.h-size-1{margin:1rem 0;font-size:3rem;font-weight:400;line-height:1.1}.h-size-2{margin:1rem 0;font-size:1.5rem;font-weight:400}.h-size-3{margin:1rem 0;font-size:1.25rem;font-weight:400}.h-size-3:first-child{margin-top:0}.h-size-4{margin:.5rem 0;font-size:1.125rem;font-weight:400}.h-size-4:first-child{margin-top:0}p{text-align:center;text-wrap-style:pretty;margin:.8rem 0}section>header+p,h2+p,h3+p,p+p{margin-top:0}a{color:var(--accent);text-decoration:none;transition:color .2s ease-in-out}a:hover{text-decoration:underline}.text-center{text-align:center}p:last-child{margin-bottom:0}
