.homepage{flex-direction:column;align-items:center;display:flex}.homepage .hero-banner{flex-direction:column;justify-content:center;align-self:flex-start;width:100vw;height:100svh;margin-left:calc(50% - 50vw);display:flex;position:relative}.homepage .hero-banner .hero-banner-backdrop{pointer-events:none;position:absolute;inset:0;overflow:hidden}.homepage .hero-banner .hero-banner-backdrop .hero-banner-frame{border:1px solid var(--border-color-transparency-1);animation:2.4s cubic-bezier(.16,1,.3,1) both hero-blueprint-reveal;position:absolute;inset:clamp(1.5rem,6vw,5rem)}.homepage .hero-banner .hero-banner-backdrop .hero-banner-guide{background-color:var(--bg-main-color-transparency-1);animation:2.4s cubic-bezier(.16,1,.3,1) both hero-blueprint-reveal;position:absolute}.homepage .hero-banner .hero-banner-backdrop .hero-banner-guide-dimension-top{width:1px;height:clamp(8rem,12vw,18rem);animation-delay:.35s;top:0%;right:30%}.homepage .hero-banner .hero-banner-backdrop .hero-banner-guide-dimension-left-first{width:clamp(8rem,25vw,45rem);height:1px;animation-delay:.35s;top:22%;left:0%}.homepage .hero-banner .hero-banner-backdrop .hero-banner-guide-dimension-left-second{width:clamp(3rem,10vw,18rem);height:1px;animation-delay:.35s;top:36%;left:0%}.homepage .hero-banner .hero-banner-backdrop .hero-banner-guide-dimension{width:clamp(8rem,25vw,45rem);height:1px;animation-delay:.35s;bottom:22%;right:0%}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-title-layout{position:relative}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-title-layout .hero-banner-guide-horizontal{background-color:#d2ac5c52;width:100vw;height:1px;position:absolute;top:100%;left:50%;transform:translate(-50%)}.homepage .hero-banner .hero-banner-backdrop .hero-banner-guide-left,.homepage .hero-banner .hero-banner-backdrop .hero-banner-guide-right{width:1px;height:100%;top:0}.homepage .hero-banner .hero-banner-backdrop .hero-banner-guide-left{left:18%}.homepage .hero-banner .hero-banner-backdrop .hero-banner-guide-right{animation-delay:.2s;right:18%}.homepage .hero-banner .hero-banner-backdrop .hero-banner-corner{border-color:var(--border-color-transparency-2);border-style:solid;width:clamp(2.5rem,6vw,5rem);height:clamp(2.5rem,6vw,5rem);animation:2.4s cubic-bezier(.16,1,.3,1) both hero-blueprint-reveal;position:absolute}.homepage .hero-banner .hero-banner-backdrop .hero-banner-corner-top-left{border-width:1px 0 0 1px;top:clamp(.75rem,2vw,1.5rem);left:clamp(.75rem,2vw,1.5rem)}.homepage .hero-banner .hero-banner-backdrop .hero-banner-corner-top-right{border-width:1px 1px 0 0;animation-delay:.1s;top:clamp(.75rem,2vw,1.5rem);right:clamp(.75rem,2vw,1.5rem)}.homepage .hero-banner .hero-banner-backdrop .hero-banner-corner-bottom-left{border-width:0 0 1px 1px;animation-delay:.2s;bottom:clamp(.75rem,2vw,1.5rem);left:clamp(.75rem,2vw,1.5rem)}.homepage .hero-banner .hero-banner-backdrop .hero-banner-corner-bottom-right{border-width:0 1px 1px 0;animation-delay:.3s;bottom:clamp(.75rem,2vw,1.5rem);right:clamp(.75rem,2vw,1.5rem)}.homepage .hero-banner .hero-banner-content-wrapper{z-index:1;flex-direction:column;align-items:center;width:100%;max-width:80rem;margin:0 auto;padding:0 1.5rem;display:flex;position:relative}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header{text-align:center;width:100%;min-width:0;position:relative}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-details{justify-content:center;align-items:center;gap:1rem;width:100%;min-width:0;margin-bottom:3rem;display:flex;transform:none}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-details .details-line{background-color:color-mix(in srgb, var(--accent-color) 50%, transparent);flex:0 0 2.5rem;width:2.5rem;height:.0714rem}@media (width<=360px){.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-details{gap:.5rem}}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-details-measure{visibility:hidden;pointer-events:none;margin:0;position:absolute;top:0;left:0}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-details.header-details-wrap .details-line{display:none}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .details-text-roles-stack{flex-direction:column;align-items:center;gap:.375rem;display:flex}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-details .details-text{letter-spacing:.2143rem;min-width:0;color:var(--accent-color);text-transform:uppercase;flex:0 auto;font-family:DM Mono,monospace;font-size:11px}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-details .details-text-role{white-space:nowrap;display:inline-block}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-title-mask{margin-bottom:1.25rem;padding-bottom:1.5rem;position:relative;overflow:hidden}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-title-mask .header-title{margin:0;transform:none}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-description{color:var(--description-main-color);white-space:pre-line;font-size:clamp(1rem,1.8vw,1.2rem);font-weight:300;line-height:1.625}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem;width:100%;margin-top:2rem;display:flex;transform:none}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-actions .actions-button{letter-spacing:.025em;cursor:pointer;background:0 0;border:none;align-items:center;gap:.5rem;padding:.875rem 2rem;font-family:inherit;font-size:1rem;transition:all .3s;display:flex}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-actions .actions-button.primary{background-color:var(--accent-color);color:var(--text-main-color);font-weight:var(--font-weight-medium)}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-actions .actions-button.primary:hover{background-color:var(--accent-lighter-color)}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-actions .actions-button.secondary{border:1px solid var(--border-color-transparency-2);color:var(--text-secondary-color-transparency-7);font-weight:var(--font-weight-light)}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-actions .actions-button.secondary:hover{border-color:var(--border-color-transparency-5);color:var(--text-secondary-color-transparency-9)}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-actions .actions-button.tertiary{color:var(--text-secondary-color-transparency-6);font-weight:var(--font-weight-light)}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-actions .actions-button.tertiary:hover{color:var(--text-secondary-color-transparency-8)}.homepage .hero-banner .hero-banner-scroll{z-index:1;flex-direction:column;align-items:center;gap:1rem;display:flex;position:absolute;bottom:2.5rem;left:50%;transform:translate(-50%)}@keyframes hero-blueprint-reveal{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.homepage .hero-banner .hero-banner-scroll .scroll-text{letter-spacing:.2143rem;color:var(--accent-color-transparency-6);text-transform:uppercase;font-family:DM Mono,monospace;font-size:10px}.homepage .hero-banner .hero-banner-scroll .scroll-vertical-line{background:linear-gradient(to bottom, var(--accent-color-transparency-3), transparent);width:1px;height:2.5rem;animation:1.5s infinite alternate move-up-down}@keyframes reveal-up{0%{transform:translateY(calc(100% + .15em))}to{transform:translateY(0)}}@keyframes hero-title-run-in{0%{opacity:0;transform:translate(-5rem)}to{opacity:1;transform:translate(0)}}@keyframes hero-title-run-in-mobile{0%{opacity:0;transform:translate(-1.5rem)}to{opacity:1;transform:translate(0)}}@keyframes fade-up{0%{opacity:0;transform:translateY(1.5rem)}to{opacity:1;transform:translateY(0)}}@keyframes move-up-down{0%{transform:translateY(0)}to{transform:translateY(.625rem)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-title-mask,.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-description-mask{overflow:hidden}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-title-mask .header-title,.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-description-mask .header-description{animation:2s cubic-bezier(.16,1,.3,1) both reveal-up}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-details,.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-actions{animation:2s cubic-bezier(.16,1,.3,1) both fade-up}.homepage .hero-banner .hero-banner-scroll{animation:2s cubic-bezier(.16,1,.3,1) both fade-in}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-details{animation-delay:.1s}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-title-mask .header-title{animation:2s cubic-bezier(.16,1,.3,1) .5s both hero-title-run-in}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-title-mask{overflow:visible}@media (width<=640px){.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-title-mask .header-title{animation-name:hero-title-run-in-mobile}}@media (width>=768px){.homepage .hero-banner .hero-banner-content-wrapper{padding-left:3rem;padding-right:3rem}}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-header .header-description-mask .header-description{animation-delay:.9s}.homepage .hero-banner .hero-banner-content-wrapper .hero-banner-actions{animation-delay:1.5s}.homepage .hero-banner .hero-banner-scroll{animation-delay:2s}.homepage .hero-banner .hero-banner-scroll .scroll-vertical-line{animation-delay:2.5s}.about-me-section{align-self:flex-start;width:100vw;margin-left:calc(50% - 50vw);padding-top:3rem;padding-bottom:1.5rem;scroll-margin-top:5rem}.about-me-grid{grid-template-columns:1fr;align-items:start;gap:3rem;width:100%;max-width:80rem;margin:0 auto;padding:0 1.5rem;display:grid}.about-me-sidebar{opacity:0;flex-direction:column;gap:2rem;transition:opacity 1.8s cubic-bezier(.16,1,.3,1),transform 1.8s cubic-bezier(.16,1,.3,1);display:flex;transform:translate(-2rem)}.about-me-content{opacity:0;transition:opacity 1.8s cubic-bezier(.16,1,.3,1) .35s,transform 1.8s cubic-bezier(.16,1,.3,1) .35s;transform:translateY(2rem)}.about-me-grid.in-view .about-me-sidebar,.about-me-grid.in-view .about-me-content{opacity:1;transform:translate(0)}.about-me-image-wrapper{aspect-ratio:3/4;background-color:var(--bg-secondary-color,#111115);position:relative;overflow:hidden}.about-me-image{object-fit:cover;opacity:.85;width:100%;height:100%;display:block}.about-me-image-overlay{pointer-events:none;background:linear-gradient(#0000 45%,#09090bb3 100%);position:absolute;inset:0}.about-me-location{letter-spacing:.25em;text-transform:uppercase;color:var(--accent-color-transparency-8);font-family:DM Mono,monospace;font-size:10px;position:absolute;bottom:1.25rem;left:1.25rem;right:1.25rem}.about-me-socials{gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.about-me-social-link{border:1px solid var(--border-color-transparency-2);width:2.25rem;height:2.25rem;color:var(--text-secondary-color-transparency-6);justify-content:center;align-items:center;transition:all .3s;display:flex}.about-me-social-link svg{width:13px;height:13px}.about-me-social-link:hover{border-color:var(--accent-color-transparency-5);color:var(--accent-color)}.about-me-content-label{letter-spacing:.28em;text-transform:uppercase;color:var(--accent-color);margin-bottom:3rem;font-family:DM Mono,monospace;font-size:11px;display:block}.experience-timeline{margin:0;padding:0;list-style:none;position:relative}.experience-timeline:before{content:"";background:linear-gradient(var(--accent-color-transparency-5), var(--accent-color-transparency-1), transparent);width:1px;position:absolute;top:.5rem;bottom:0;left:0}.experience-item{opacity:0;padding-bottom:3.5rem;padding-left:2.25rem;transition:opacity 1.2s cubic-bezier(.16,1,.3,1),transform 1.2s cubic-bezier(.16,1,.3,1);position:relative;transform:translateY(1.5rem)}.experience-item:last-child{padding-bottom:0}.about-me-grid.in-view .experience-item{opacity:1;transform:translateY(0)}.about-me-grid.in-view .experience-item:first-child{transition-delay:.7s}.about-me-grid.in-view .experience-item:nth-child(2){transition-delay:1s}.experience-item-dot{background-color:var(--accent-color);border-radius:50%;width:7px;height:7px;position:absolute;top:7px;left:-3px}.experience-item-date{letter-spacing:.15em;color:var(--accent-color-transparency-8);margin-bottom:.5rem;font-family:DM Mono,monospace;font-size:10px;display:block}.experience-item-heading{align-items:baseline;gap:.75rem;margin-bottom:.75rem;display:flex}.experience-item-company{font-size:1.4rem;font-weight:var(--font-weight-light);color:var(--text-secondary-color)}.experience-item-role{color:var(--text-secondary-color-transparency-6);font-size:.875rem}.experience-item-highlights{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.experience-item-highlight{color:var(--text-secondary-color-transparency-6);padding-left:1rem;font-size:12px;position:relative}.experience-item-highlight:before{content:"";background-color:var(--accent-color-transparency-6,#c8a96e99);border-radius:50%;width:4px;height:4px;position:absolute;top:.5em;left:0}@media (width>=1024px){.about-me-grid{grid-template-columns:380px 1fr;gap:5rem}.about-me-sidebar{position:sticky;top:7rem}}@media (width>=1280px){.about-me-grid{gap:7rem}}@media (width>=768px){.about-me-grid{padding-left:3rem;padding-right:3rem}}.projects-section{background-color:var(--bg-section-alt-color);align-self:flex-start;width:100vw;margin-left:calc(50% - 50vw);padding:1.5rem 0;scroll-margin-top:5rem}.projects-section-content{width:100%;max-width:80rem;margin:0 auto;padding:0 1.5rem}.projects-label{letter-spacing:.28em;text-transform:uppercase;color:var(--accent-color);margin-bottom:3rem;font-family:DM Mono,monospace;font-size:11px;display:block}.projects-grid{flex-direction:column;gap:3rem;margin:0;padding:0;list-style:none;display:flex}.project-link{color:inherit;flex-direction:row-reverse;align-items:center;gap:2.5rem;text-decoration:none;display:flex}.project:nth-child(2n) .project-link{flex-direction:row}.project-image{object-fit:cover;object-position:center 30%;width:100%;height:100%;display:block}.project-image-wrapper{aspect-ratio:4/3;background-color:var(--bg-secondary-color,#111115);flex:none;width:55%;max-width:34rem;position:relative;overflow:hidden}.project-click-hint{width:3rem;height:3rem;color:var(--text-secondary-color);filter:drop-shadow(0 2px 6px #09090b99);pointer-events:none;opacity:0;transition:opacity .4s;position:absolute;top:.6rem;left:.6rem}.project-click-hint-visible{opacity:1}@media (hover:hover){.project-link:hover .project-click-hint{opacity:0}}.project:nth-child(2n) .project-click-hint{left:auto;right:.6rem}.project-click-hint-cursor{transform-origin:8px 4px;animation:2.6s ease-in-out infinite project-click-hint-tap}.project-click-hint-sparkle{transform-origin:4.5px -.2px;animation:2.6s ease-in-out infinite project-click-hint-sparkle}@keyframes project-click-hint-tap{0%,to{transform:scale(1)}50%{transform:scale(.88)}}@keyframes project-click-hint-sparkle{0%,to{opacity:.5;transform:scale(.8)}50%{opacity:1;transform:scale(1.6)}}.project-info{flex:auto;max-width:28rem;margin-top:0;margin-left:auto}.project:nth-child(2n) .project-info{max-width:none;margin-left:0}.project-overlay{pointer-events:none;background:linear-gradient(#0000 40%,#09090b99 100%);position:absolute;inset:0}.project-overlay:after{content:"";opacity:0;background:linear-gradient(#09090b26 75%,#09090bbf 100%);transition:opacity .4s;position:absolute;inset:0}.project-link:hover .project-overlay:after{opacity:1}.project-discover-text{text-align:center;font-family:var(--font-family-ui);letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary-color-transparency-6);opacity:0;pointer-events:none;font-size:13px;transition:opacity .4s,transform .4s;position:absolute;bottom:1.25rem;left:1.5rem;right:1.5rem;transform:translateY(.5rem)}@media (hover:hover){.project-link:hover .project-discover-text{opacity:1;transform:translateY(0)}}.project-info{margin-top:1.25rem}.project-title{font-size:1.4rem;font-weight:var(--font-weight-light);color:var(--text-secondary-color);margin-bottom:.5rem;transition:color .3s;display:inline-block;position:relative}.project-title:after{content:"";background-color:var(--accent-color);transform-origin:100%;width:100%;height:1px;transition:transform .4s cubic-bezier(.16,1,.3,1);position:absolute;bottom:-.25rem;left:0;transform:scaleX(0)}.project-link:hover .project-title:after{transform-origin:0;transform:scaleX(1)}.project-description{color:var(--text-secondary-color-transparency-6);max-width:32rem;margin:0;font-size:13px;line-height:1.75}.project-discover-more{color:var(--accent-color);max-width:32rem;margin:1rem 0 0;font-size:16px;line-height:1.75}@media (width>=768px){.projects-section-content{padding-left:3rem;padding-right:3rem}}@media (width<=640px){.project-link,.project:nth-child(2n) .project-link{flex-direction:column;align-items:stretch;gap:1.25rem}.project-image-wrapper{width:100%;max-width:none}.project-info{max-width:none;margin-left:0}.projects-grid{gap:4.5rem}}@media (width>=1024px){.projects-grid{gap:3.5rem 3rem}}.project{opacity:.2;transition:opacity 2s cubic-bezier(.16,1,.3,1),transform 2s cubic-bezier(.16,1,.3,1);transform:translateY(2.5rem)}.project.in-view{opacity:1;transform:translateY(0)}.project:not(.in-view),.project:first-child.in-view{transition-delay:0s}.project:nth-child(2).in-view{transition-delay:.12s}.project:nth-child(3).in-view{transition-delay:.24s}.project:nth-child(4).in-view{transition-delay:.36s}.contact-section{align-self:flex-start;width:100vw;margin-left:calc(50% - 50vw);padding:3rem 0;scroll-margin-top:5rem}.contact-grid{grid-template-columns:1fr;gap:3rem;width:100%;max-width:80rem;margin:0 auto;padding:0 1.5rem;display:grid}.contact-intro{flex-direction:column;gap:1.5rem;display:flex}.contact-label{letter-spacing:.28em;text-transform:uppercase;color:var(--accent-color);font-family:DM Mono,monospace;font-size:11px}.contact-heading{font-size:clamp(2.5rem,5vw,4.25rem);font-weight:var(--font-weight-light);color:var(--text-secondary-color);margin:0;line-height:.95}.contact-supporting-text{font-family:var(--font-family-ui);color:var(--description-main-color);max-width:28rem;margin:0;font-size:13px;line-height:1.85}.contact-links{flex-direction:column;gap:1rem;margin:1rem 0 0;padding:0;list-style:none;display:flex}.contact-link{color:var(--text-secondary-color-transparency-7);font-family:var(--font-family-ui);align-items:center;gap:.75rem;font-size:13px;transition:color .3s;display:flex}.contact-link:hover{color:var(--accent-color)}.contact-link-icon{width:1.5rem;height:1.5rem;color:var(--accent-color-transparency-8);flex-shrink:0;justify-content:center;align-items:center;display:flex}.contact-link-icon svg{width:100%;height:100%}.contact-link-arrow{opacity:0;font-size:11px;transition:opacity .2s,transform .2s;transform:translate(-.25rem,.25rem)}.contact-link:hover .contact-link-arrow{opacity:1;transform:translate(0)}.contact-form{flex-direction:column;gap:1.75rem;display:flex}.contact-form-field{flex-direction:column;gap:.5rem;display:flex}.contact-form-field label{letter-spacing:.28em;text-transform:uppercase;color:var(--text-secondary-color-transparency-5);font-family:DM Mono,monospace;font-size:10px}.contact-form-field input,.contact-form-field textarea{border:none;border-bottom:1px solid var(--border-color-transparency-2);color:var(--text-secondary-color);caret-color:var(--text-secondary-color);font-family:var(--font-family-ui);background:0 0;padding:.625rem 0;font-size:13px;transition:border-color .3s}.contact-form-field input::placeholder,.contact-form-field textarea::placeholder{color:var(--text-secondary-color-transparency-4)}.contact-form-field textarea{resize:vertical;min-height:4rem}.contact-form-field input:focus,.contact-form-field textarea:focus{border-color:var(--accent-color-transparency-5);outline:none}.contact-form-submit{font-family:var(--font-family-ui);letter-spacing:.025em;background-color:var(--accent-color);color:var(--text-main-color);font-size:13px;font-weight:var(--font-weight-medium);cursor:pointer;border:none;align-self:flex-start;align-items:center;gap:.5rem;margin-top:.5rem;padding:.875rem 2rem;transition:background-color .3s;display:flex}.contact-form-submit:hover{background-color:var(--accent-lighter-color)}@media (width>=768px){.contact-grid{padding-left:3rem;padding-right:3rem}}@media (width>=1024px){.contact-grid{grid-template-columns:1fr 1fr;align-items:center;gap:5rem}}@media (width>=1280px){.contact-grid{gap:7rem}}.site-footer{border-top:1px solid var(--accent-color-transparency-3);align-self:flex-start;width:100vw;margin-left:calc(50% - 50vw);padding:2rem 1.5rem}.site-footer-inner{flex-direction:column;align-items:center;gap:1rem;width:100%;max-width:80rem;margin:0 auto;display:flex}.site-footer-copyright{letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary-color-transparency-5);font-family:DM Mono,monospace;font-size:11px}.site-footer-credit{letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary-color-transparency-4);font-family:DM Mono,monospace;font-size:11px;transition:color .2s}.site-footer-credit:hover{color:var(--accent-color)}.site-footer-links{align-items:center;gap:1.7143rem;display:flex}.site-footer-links button{cursor:pointer;letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary-color-transparency-7);background:0 0;border:none;padding:0;font-family:DM Mono,monospace;font-size:11px;transition:color .2s}.site-footer-links button:hover{color:var(--accent-color)}@media (width>=640px){.site-footer-inner{grid-template-columns:1fr auto 1fr;align-items:center;display:grid}.site-footer-credit{justify-self:start}.site-footer-copyright{justify-self:center}.site-footer-links{justify-self:end}}
