*,:before,:after{box-sizing:border-box}*{margin:0}body{-webkit-font-smoothing:antialiased;line-height:1.5}img,picture,video,canvas,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}p{text-wrap:pretty}h1,h2,h3,h4,h5,h6{text-wrap:balance}#root,#__next{isolation:isolate}:root{--bg:oklch(94.5% .028 95);--accent:oklch(34.987% .09711 252.64);--accent-transparent:oklch(34.987% .09711 252.64/.7);--surface:oklch(97.253% .00659 97.462);--surface-hover:oklch(90% .032 95);--action:oklch(58% .16 148);--action-hover:oklch(50% .17 148);--action-ink:oklch(98% .01 148);--shadow:oklch(34.987% .09711 252.64/.6);--primary-font:Inter;--space-sm:8px;--space-md:16px;--space-lg:32px;--space-xl:48px;--space-xxl:96px;--small-radius:10px;--medium-radius:15px;--big-radius:25px;--small-border:1px solid var(--accent);--medium-border:2px solid var(--accent);--large-border:3px solid var(--accent);--line-height-mobile:1.6rem;--font-size-sm:clamp(.6rem, .8rem + .25vw, .7rem);--font-size-base:clamp(1rem, .9rem + .5vw, 1.125rem);--font-size-lg:clamp(1.1rem, 1rem + .6vw, 1.5rem);--font-size-xl:clamp(1.3rem, 1.2rem + 1vw, 2rem);--font-size-xxl:clamp(1.8rem, 1.5rem + 2vw, 2.5rem);--font-size-xxxl:clamp(2.5rem, 2.2rem + 8vw, 5rem);--success:#16a34a;--warning:#d97706}@font-face{font-family:Inter;src:url(/assets/Inter-Dx4kXJAl.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Rust;src:url(/assets/Rust-CkbQsNta.woff2)format("woff2"),url(/assets/Rust-C6JY6bPQ.woff)format("woff");font-weight:400;font-style:normal;font-display:swap}::-webkit-scrollbar{width:10px;display:block}::-webkit-scrollbar-thumb{background:var(--accent);border-radius:var(--small-radius)}*{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}body{color:var(--accent);font-family:Inter,system-ui}html{scrollbar-width:thin;background:var(--bg);scrollbar-color:var(--accent) transparent;scroll-behavior:smooth;scrollbar-gutter:stable}:focus-visible{outline:2px solid var(--accent)}a{color:var(--accent);text-decoration:none}a:visited{color:var(--accent)}ul,li{padding:0;list-style:none}section{flex-direction:column;justify-content:center;align-items:center;width:100%;display:flex}.section-content{width:100%;max-width:90vw;height:100%;padding:var(--space-md)}.root{flex-direction:column;width:100%;display:flex}.main{align-items:center;gap:var(--space-xxl);background-color:var(--bg);flex-direction:column;flex:1;width:100%;display:flex}.text-bold{font-size:var(--font-size-base);font-weight:900}.text-normal{font-size:var(--font-size-base);font-weight:500}.text-700{font-size:var(--font-size-base);font-weight:700}.text-bold-large{font-size:var(--font-size-lg);font-weight:900}.section-title{font-size:var(--space-lg);font-weight:900}.nav-bar{width:100%;padding:var(--space-sm) var(--space-lg);background:var(--bg);box-shadow:0 1px 10px var(--accent);z-index:10;align-items:center;display:flex}.nav-bar .logo{width:100%;max-width:80px}.nav-bar .nav-list{flex-direction:row;justify-content:space-evenly;align-items:center;width:100%;height:5vh;display:flex}.nav-bar .nav-list .nav-icon{display:none}.nav-bar .nav-list .nav-label{font-size:var(--font-size-lg);font-weight:900;transition:transform .2s;display:inline-block}.nav-bar .nav-list .nav-label:hover,.nav-bar .nav-list .nav-label:focus-visible{transform:scale(.96)}.nav-bar .nav-list .nav-list__link{list-style:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.tooltip{color:inherit;border:none;border-bottom:3px dotted var(--accent);cursor:pointer;background:0 0;display:inline-block;position:relative}.tooltip__text{visibility:hidden;color:#fff;text-align:center;width:10ch;padding:var(--space-sm);background:var(--accent-transparent);border:var(--small-border);border-radius:var(--small-radius);box-shadow:0 4px 30px var(--shadow);-webkit-backdrop-filter:blur(8.3px);opacity:.1;z-index:1;transition:opacity .2s;position:absolute;top:-220%;left:-60%}.tooltip:hover .tooltip__text,.tooltip:focus-visible .tooltip__text{visibility:visible;opacity:1}#hero{flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;min-height:100svh;display:flex}.greeting{text-align:left;font-family:Rust;font-size:var(--font-size-xxxl);letter-spacing:66px;align-self:start}.portrait-wrapper{width:clamp(180px,35vw,300px)}.portrait-wrapper .portrait{object-fit:cover;width:100%;height:auto;animation:.3s fadeIn;display:block}.promise{text-wrap-style:balance;font-size:var(--font-size-base);max-width:40ch}.hero__main{grid-template-columns:1fr auto;align-items:center;width:100%;display:grid}.hero__main .hero__text{flex-direction:column;align-items:center;display:flex}.hero__main .hero__text h1{text-align:center;font-size:var(--font-size-xxl);width:100%;font-weight:900}.hero__main .hero__text h2{text-align:center;font-size:var(--font-size-xl);width:100%;min-height:15vh;font-weight:500}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.hero__cta{padding:var(--space-md);margin:var(--space-md);text-align:center;font-size:var(--font-size-xl);min-width:150px;max-width:680px;box-shadow:#00000059 0px 5px 15px, #00000029 0px 1px 4px, var(--accent) 0px 0px 0px 3px;width:100%;color:var(--action-ink);background-color:var(--action);border-radius:var(--small-radius);justify-self:center;font-weight:900;transition:transform .3s,background-color .3s,outline .2s}.hero__cta:visited{color:var(--action-ink)}.hero__cta:hover{background-color:var(--action-hover);transform:scale(.96)}.hero__cta:focus-visible{background-color:var(--action-hover);outline:4px solid var(--accent);transform:scale(.96)}.divider{min-height:5vh}#projects-section{gap:var(--space-lg);flex-direction:column;display:flex}.projects-container{background-image:radial-gradient(circle, var(--accent) .96px, transparent .96px);padding:var(--space-md);gap:var(--space-xl);scroll-snap-type:x mandatory;width:100%;scroll-padding-inline:var(--space-xl);scrollbar-width:thick;scrollbar-color:var(--accent);background-size:12px 12px;flex-flow:row;display:flex;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 24px calc(100% - 24px),#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 24px calc(100% - 24px),#0000 100%)}.flip-button{bottom:var(--space-sm);left:var(--space-sm);color:inherit;cursor:pointer;background:0 0;border:none;position:absolute}.flip-button>*{font-weight:700;display:block}.flipcard-container{padding:var(--space-sm);perspective:1000px;margin-block:var(--space-md);scroll-snap-type:x mandatory;scroll-snap-align:center;will-change:transform;flex-shrink:0;width:100%;max-width:800px;display:inline-block}.project-card{cursor:pointer;transform-style:preserve-3d;transform-origin:100%;will-change:transform;width:100%;max-width:800px;height:clamp(560px,82vw,660px);min-height:560px;transition:transform .6s cubic-bezier(.4,.15,.2,1);display:block;position:relative}.project-card.is-flipped{transform:translate(-100%)rotateY(-180deg)}.project-card__view{background-color:var(--surface);box-shadow:2px 6px 30px 4px var(--shadow);-webkit-backdrop-filter:blur(8.3px);border-radius:var(--small-radius);border:var(--medium-border);text-align:center;backface-visibility:hidden;grid-template-rows:minmax(0,1fr) auto;grid-template-columns:1fr;width:100%;height:100%;transition:box-shadow .25s,transform .25s;display:grid;position:absolute;inset:0}@media (hover:hover) and (pointer:fine){.project-card:not(.is-flipped):hover .project-card__view--front{box-shadow:0 12px 34px var(--shadow);transform:translateY(-4px)}}@media (prefers-reduced-motion:reduce){.project-card__view{transition:none}.project-card:hover .project-card__view--front{transform:none}}.project__title{font-size:var(--font-size-xl)}.project-image-wrapper{aspect-ratio:auto;position:relative}.project-image-wrapper img{border-top-left-radius:var(--small-radius);border-top-right-radius:var(--small-radius);width:100%;height:100%;display:block}.project-image-wrapper:after{content:"";background:linear-gradient(to top, var(--surface) 1%, transparent 10%);pointer-events:none;position:absolute;inset:0}.project__info{padding:var(--space-md);font-size:var(--font-size-base);gap:var(--space-sm);flex-direction:column;display:flex}.project__tech{justify-content:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.tech-icon{width:clamp(26px,6vw,40px);height:auto;display:inline-block}.project-card__view--back{padding:var(--space-sm);transform:rotateY(180deg)}.lighthouse-scores{justify-content:space-evenly;gap:var(--space-sm);border-bottom:var(--medium-border);padding-block:var(--space-md);flex-wrap:wrap;display:flex}.lighthouse-score-item{gap:var(--space-sm);flex-direction:column;flex:80px;align-items:center;display:flex}.lighthouse-score__circle{width:clamp(64px,18vw,100px);height:auto}.score-label{fill:var(--accent)}.progress-ring{stroke:var(--accent)}.background-circle{fill:none;stroke:none}.lighthouse-score__label{font-size:var(--font-size-base)}.insights{border:var(--small-border);border-radius:var(--small-radius);padding:var(--space-md);box-shadow:inset 0 0 6px var(--accent);text-align:left;overflow:auto}.insights h3{text-align:center;font-size:var(--font-size-xl);margin-bottom:var(--space-sm)}.insights-lists{line-height:var(--space-xl);font-size:var(--font-size-base);gap:var(--space-lg);grid-template-columns:1fr 1fr 1fr;display:grid}.insights-lists__list{flex-direction:column;flex:1;display:flex}.insights-lists__list ul{padding:0}.insights-lists__list li{font-size:var(--font-size-base);margin-bottom:var(--space-md);line-height:1;list-style:none}.insights-lists__list li:before{content:"[ "}.insights-lists__list li:after{content:" ]"}.project-links{color:var(--action-ink);justify-content:center;align-items:center;gap:var(--space-md);padding-top:var(--space-sm);flex-wrap:wrap;display:flex}.project-links img{width:40px}.live-preview-link{border:var(--medium-border);font-size:var(--font-size-lg);color:var(--action-ink);padding:var(--space-sm) var(--space-lg);border-radius:var(--small-radius);background:var(--action);font-weight:700;transition:background .2s,transform .2s}.live-preview-link:visited{color:var(--action-ink)}.live-preview-link:hover,.live-preview-link:focus-visible{background:var(--action-hover);transform:translateY(-2px)}#principles-section{gap:var(--space-lg);flex-direction:column;display:flex}.principle-container{background-color:var(--surface);border-radius:var(--small-radius);gap:var(--space-sm);padding:var(--space-md);border:var(--medium-border);grid-template-columns:1fr 1fr 1fr;align-items:center;display:grid}.development-promises-list li{list-style-position:inside}.development-promises-list li::marker{content:"★ "}#skills-section{gap:var(--space-lg);flex-direction:column;width:100%;display:flex}.skillset{gap:var(--space-md);border-top:var(--medium-border);margin-block:var(--space-sm);padding-block:var(--space-sm);flex-direction:column;width:100%;display:flex}.skillset__skills{gap:var(--space-sm);flex-wrap:wrap;display:flex}.skillset__skills>*{background-color:var(--accent);width:fit-content;color:var(--action-ink);padding:var(--space-sm);border-radius:var(--small-radius);border:var(--small-border)}@view-transition{navigation:auto}#process-section{gap:var(--space-lg);flex-direction:column;display:flex;overflow:clip}.process-container{align-items:center;gap:var(--space-lg);text-align:center;padding:var(--space-md);flex-direction:column;display:flex}.arrow{font-size:var(--font-size-xxl)}.step{padding:var(--space-sm)}#services-section{gap:var(--space-lg);flex-direction:column;display:flex}.service-title{text-align:center;border-bottom:var(--medium-border);padding-inline:var(--space-md);flex-direction:row;align-items:center;width:100%;display:flex}.service-title h3{flex:1}.services-container{justify-content:space-evenly;gap:var(--space-lg);grid-template-columns:1fr 1fr;display:grid}.service{background:var(--surface);box-shadow:0 0 2px var(--accent), 2px 4px 10px var(--shadow)}.service-icon{color:var(--accent);font-size:var(--space-xl)}.service__description{gap:var(--space-lg);padding:var(--space-md);padding-block:var(--space-lg);flex-direction:column;display:flex}.service__description ul{font-size:var(--font-size-base);font-weight:900}.service__description li{font-weight:400}.service__description li:before{font-size:var(--font-size-xl);padding-left:var(--space-sm);color:var(--success);content:"✔ "}#faq-section,.faq-container{gap:var(--space-md);flex-direction:column;display:flex}.faq-item{border-bottom:var(--medium-border)}.summary{-webkit-user-select:none;user-select:none;cursor:pointer;font-size:var(--font-size-base);background-color:var(--surface);padding:var(--space-md);justify-content:space-between;align-items:center;font-weight:900;list-style:none;display:flex}.summary::-webkit-details-marker{display:none}.faq-icon:before{content:"+";font-size:var(--font-size-xl);transition:transform .3s;display:inline-block}.faq-item.open .faq-icon:before{transform:rotate(-315deg)}.faq-answer{grid-template-rows:0fr;transition:grid-template-rows .3s;display:grid}.faq-answer__content{padding:0 var(--space-md);background-color:var(--surface);line-height:2;overflow:hidden}.faq-item.open .faq-answer{grid-template-rows:1fr}.faq-item.open .faq-answer__content{padding:var(--space-md)}.footer{gap:var(--space-lg);background:var(--accent);color:var(--action-ink);padding:var(--space-xl);flex-direction:column;padding-bottom:0;display:flex;position:relative}.footer__body{justify-content:space-between;align-items:center;display:flex}.footer-brand{align-items:center;gap:var(--space-sm);text-align:center;flex-direction:column;display:flex}.footer-brand__logo{width:clamp(200px,10vw,250px)}.footer-brand__title{font-family:Rust,system-ui;font-size:var(--font-size-xxl)}.footer__footer{margin-block:var(--space-lg);text-align:center;font-size:12px}.footer__links{flex-direction:row;justify-content:space-around;width:100%;display:flex}.footer__links div{gap:var(--space-sm);flex-direction:column;display:flex}.footer__links p{margin-bottom:var(--space-md)}.footer__links a{font-size:var(--font-size-base);color:var(--action-ink)}.footer__links a:hover{text-decoration:underline;transform:scale(.96)}.footer-cta{gap:var(--space-md);flex-direction:column;display:flex}.cta-button{font-size:var(--font-size-lg);padding:var(--space-md);border-radius:var(--space-sm);color:var(--action-ink);background:var(--action);justify-content:center;align-items:center;font-weight:900;transition:transform .3s,background-color .3s,outline .2s;display:flex}.cta-button:hover{background-color:var(--action-hover);transform:scale(.96)}.cta-button:visited{color:var(--action-ink)}.contact-container{text-align:center;align-items:center;gap:var(--space-xl);flex-direction:column;display:flex}@media screen and (width<=750px){#hero{gap:var(--space-xl)}#hero .greeting{text-align:center;letter-spacing:26px;align-self:center;margin-top:-5vh}#hero .promise{font-size:var(--font-size-sm);font-weight:900}section{max-width:100vw}.section-content{padding:var(--space-sm);max-width:none}.main{padding-bottom:var(--space-xxl)}.nav-bar{position:fixed;bottom:0;left:0;right:0}.nav-bar .logo{display:none}.nav-bar .nav-list .nav-icon{display:block}.nav-bar .nav-list .nav-label{display:none}.projects-container{padding:0}.project-card{max-height:75vh}.project-links{padding-block:var(--space-sm)}.live-preview-link{font-size:var(--font-size-sm)}.insights{width:100%}.lighthouse-score__circle{max-width:50px}.lighthouse-score__label{font-size:var(--font-size-sm)}.insights-lists{grid-template-columns:1fr}.insights-lists .insights-lists__list{line-height:var(--line-height-mobile)}.services-container{grid-template-columns:1fr}.principle-container{gap:var(--space-md);flex-direction:column;display:flex}.development-promises-list{order:1;width:100%}.footer{min-height:100svh;padding-top:var(--space-xl);gap:var(--space-sm);margin-bottom:50px}.footer__body{gap:var(--space-xl);flex-direction:column;display:flex}.footer__links{justify-content:space-between}}[data-animation=slide-in-left]{opacity:0;transition:transform 1s,opacity 1s;transform:translate(-50%)}[data-animation=slide-in-left].animate{opacity:1;transform:translate(0)}[data-animation=slide-in-right]{opacity:0;transition:transform 1s,opacity 1s;transform:translate(50%)}[data-animation=slide-in-right].animate{opacity:1;transform:translate(0)}[data-animation=fade-in-scale]{opacity:0;transition:transform 1s,opacity 1s;transform:scale(.1)}[data-animation=fade-in-scale].animate{opacity:1;transform:scale(1)}[data-animation=fade-in]{opacity:0;transition:opacity .8s}[data-animation=fade-in].animate{opacity:1}[data-animation=slide-in-up]{opacity:0;transition:transform 1s,opacity 1s;transform:translateY(-100%)}[data-animation=slide-in-up].animate{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){[data-animation]{transition:none;animation:none}}
