@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@300;400;500&display=swap";:root{--c0:#0d0d0f;--c1:#121217;--c2:#18181e;--c3:#25252e;--c4:#3a3a46;--c5:#777785;--c6:#9797a7;--c7:#b8b8c6;--c8:#d4d4df;--c9:#f0f0f5;--accent:#c9c9d5;--accent2:#9494a5;--mono:"DM Mono", monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--c0:#f3f3f5;--c1:#ededf0;--c2:#e5e5e9;--c3:#d7d7de;--c4:#b8b8c3;--c5:#777784;--c6:#60606d;--c7:#484852;--c8:#303038;--c9:#17171c;--accent:#303038;--accent2:#676774;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;min-height:100%}body{background:var(--c0);min-width:20rem;min-height:100%;color:var(--c8);font-family:var(--mono);line-height:1.55;transition:background .2s,color .2s}button,a{font:inherit}#root,.pf{min-height:100%}.top-actions{z-index:10;gap:.875rem;display:flex;position:absolute;top:2.75rem;right:5.75rem}.icon-button,.social-link{color:var(--c5);background:var(--c1);border:.0625rem solid var(--c3);cursor:pointer;place-items:center;text-decoration:none;transition:color .2s,border-color .2s,background .2s;display:grid}.icon-button{border-radius:1.65rem;width:3.75rem;height:3.75rem}.icon-button:hover,.icon-button:focus-visible,.social-link:hover,.social-link:focus-visible,.social-link.is-selected{color:var(--c9);border-color:var(--c5);outline:none}.language-button{letter-spacing:.04rem;font-size:.78rem;font-weight:500}.icon-button svg{fill:none;stroke:currentColor;stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round;width:1.15rem;height:1.15rem}.hero{width:min(100% - 3rem,32rem);margin:0 auto;padding:7.25rem 0 2.75rem}.hero-photo{object-fit:contain;border:.0625rem solid var(--c3);border-radius:.9rem;width:min(11.75rem,56vw);height:auto;margin:0 auto;display:block}.hero-main{margin-top:5.35rem}.hero-heading{padding-left:.8rem}.hero h1{color:var(--c8);letter-spacing:.025rem;white-space:nowrap;font-size:1.5rem;font-weight:400;line-height:1.35}.hero-heading p{color:var(--c6);margin-top:.25rem;font-size:1.25rem;font-weight:300}.social-links{justify-content:center;gap:.9rem;margin-top:3.35rem;display:flex}.social-link{border-radius:1rem;width:3.85rem;height:3.85rem}.social-link svg{fill:currentColor;stroke:currentColor;stroke-width:1.2px;width:1.65rem;height:1.65rem}.social-link rect{fill:none}.social-contact-row{max-height:0;color:var(--c7);background:var(--c1);border:0 solid var(--c3);opacity:0;border-radius:.45rem;grid-template-columns:minmax(0,1fr);align-items:center;margin-top:0;font-size:.75rem;transition:max-height .25s,margin-top .25s,opacity .2s,transform .25s,border-width .25s;display:grid;position:relative;overflow:hidden;transform:translateY(-.35rem)}.social-contact-row.is-visible{opacity:1;border-width:.0625rem;max-height:2rem;margin-top:.65rem;transform:translateY(0)}.social-contact-row.has-actions{grid-template-columns:minmax(0,1fr) 2rem 2rem;height:2rem;max-height:2rem;overflow:visible}.social-contact-url{text-align:center;white-space:nowrap;text-overflow:ellipsis;width:100%;padding:.38rem .75rem;overflow:hidden}.social-contact-row.has-actions .social-contact-url{text-align:left;align-self:center;padding-top:0;padding-bottom:0}.social-copy-toast{color:var(--c8);background:var(--c2);border:.0625rem solid var(--c3);pointer-events:none;border-radius:.35rem;padding:.25rem .55rem;font-size:.65rem;line-height:1;position:absolute;bottom:calc(100% + .4rem);right:0}.social-action-button{width:2rem;height:2rem;color:var(--c6);border:0;border-left:.0625rem solid var(--c3);cursor:pointer;background:0 0;align-self:center;place-items:center;padding:0;display:grid}.social-action-button:hover,.social-action-button:focus-visible{color:var(--c9);background:var(--c2);outline:none}.social-action-button svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:1rem;height:1rem}.hero-info{color:var(--c6);letter-spacing:.04rem;margin-top:2.85rem;font-size:1.25rem;font-weight:300;line-height:1.45}.hero-info p+p{margin-top:1.6rem}section{width:min(100% - 3rem,32rem);margin:0 auto;padding:2.25rem 0 4.5rem}.section-label{width:fit-content;color:var(--c6);border:.0625rem solid var(--c3);letter-spacing:.05rem;border-radius:2rem;margin:0 auto 4.25rem;padding:.32rem 1.15rem;font-size:1rem;font-weight:300}.stack-grid{grid-template-rows:repeat(4,5.25rem);grid-template-columns:repeat(5,1fr);gap:.65rem;display:grid}.stack-item{min-width:0;color:inherit;font:inherit;background:var(--c1);border:.0625rem solid var(--c3);cursor:pointer;border-radius:.65rem;padding:0;transition:opacity .2s,background .2s,border-color .2s,transform .2s}.stack-item:hover,.stack-item:focus-visible,.stack-item.is-selected{background:var(--c2);border-color:var(--c5);outline:none;transform:translateY(-.12rem)}.stack-grid.has-active-group .stack-item.is-dimmed{opacity:.5}.stack-grid.has-selection .stack-item:not(.is-selected){opacity:.25;pointer-events:none}.stack-content{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.65rem;height:100%;padding:.7rem .35rem;display:flex}.stack-icon{width:2rem;height:2rem;color:var(--c7);place-items:center;display:grid}.stack-icon svg,.stack-icon-asset{width:100%;height:100%}.stack-icon svg{fill:currentColor}.stack-icon-asset{background:currentColor;display:block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.stack-name{color:var(--c7);font-size:.7rem}.stack-projects{gap:.35rem;margin-top:.65rem;display:grid}.stack-project-link,.stack-project-empty{height:2rem;color:var(--c7);background:var(--c1);border:.0625rem solid var(--c3);border-radius:.45rem;align-items:center;padding:0 .75rem;font-size:.75rem;display:flex}.stack-project-link{justify-content:space-between;text-decoration:none;transition:background .2s,border-color .2s}.stack-project-link:hover,.stack-project-link:focus-visible{background:var(--c2);border-color:var(--c5);outline:none}.stack-project-empty{color:var(--c6);justify-content:center}.services-list{gap:1rem;display:grid}.service-item{background:var(--c1);border:.0625rem solid var(--c3);border-radius:.85rem;grid-template-columns:2.5rem 1fr;gap:1rem;padding:1.4rem;transition:background .2s,border-color .2s;display:grid}.service-item:hover{background:var(--c2);border-color:var(--c5)}.service-number{color:var(--c5);font-size:.68rem}.service-content h3{color:var(--c8);font-size:.95rem;font-weight:400}.service-content p{color:var(--c5);margin-top:.45rem;font-size:.75rem;line-height:1.7}.service-tags{flex-wrap:wrap;gap:.4rem;margin-top:1rem;display:flex}.projects-list{gap:1rem;display:grid}.project-item,.stat-item,.exp-item{color:inherit;background:var(--c1);border:.0625rem solid var(--c3);border-radius:.85rem;text-decoration:none;transition:background .2s,border-color .2s}.project-item{grid-template-columns:1fr auto;gap:1rem;padding:1.4rem;display:grid}.project-item:hover{background:var(--c2);border-color:var(--c5)}.project-number,.project-arrow,.exp-period{color:var(--c5);font-size:.68rem}.project-name,.exp-role{color:var(--c8);margin-top:.25rem;font-size:.95rem}.project-metadata{flex-wrap:wrap;gap:.4rem;margin-top:.65rem;display:flex}.project-metadata-item{min-height:1.65rem;color:var(--c6);background:var(--c0);border:.0625rem solid var(--c3);border-radius:2rem;align-items:center;gap:.35rem;padding:.25rem .55rem;font-size:.58rem;line-height:1;display:inline-flex}.project-metadata-item svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:.8rem;height:.8rem}.project-detail-metadata{margin-top:1rem}.project-detail-metadata .project-metadata-item{min-height:1.9rem;padding:.35rem .7rem;font-size:.68rem}.project-desc,.exp-desc{color:var(--c5);margin-top:.45rem;font-size:.75rem;line-height:1.7}.project-tags{flex-wrap:wrap;gap:.4rem;margin-top:1rem;display:flex}.tag{color:var(--c6);border:.0625rem solid var(--c3);border-radius:1rem;padding:.2rem .5rem;font-size:.55rem}.experience-mark{width:2.5rem;height:2.5rem;color:var(--c7);background:currentColor;-webkit-mask:url(/experience-shape.svg) 50%/contain no-repeat;mask:url(/experience-shape.svg) 50%/contain no-repeat}.exp-meta{flex-direction:column;align-items:center;gap:.75rem;display:flex}.exp-period{align-self:flex-start}.exp-item{grid-template-columns:8rem 1fr;gap:1.5rem;padding:1.5rem;display:grid}.exp-company{color:var(--accent2);margin-top:.2rem;font-size:.68rem}.contact-form{background:var(--c1);border:.0625rem solid var(--c3);border-radius:.85rem;gap:1rem;padding:1.5rem;display:grid}.contact-form-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.contact-field{gap:.45rem;display:grid}.contact-field span{color:var(--c5);font-size:.68rem}.contact-field input,.contact-field textarea{width:100%;color:var(--c8);background:var(--c2);border:.0625rem solid var(--c3);resize:vertical;border-radius:.5rem;outline:none;padding:.75rem;transition:border-color .2s,background .2s}.contact-field input:focus,.contact-field textarea:focus{background:var(--c1);border-color:var(--c5)}.contact-field input::placeholder,.contact-field textarea::placeholder{color:var(--c5);opacity:.7}.contact-submit{min-height:2.75rem;color:var(--c8);background:var(--c2);border:.0625rem solid var(--c3);cursor:pointer;border-radius:.5rem;justify-content:space-between;align-items:center;padding:0 1rem;transition:background .2s,border-color .2s;display:flex}.contact-submit:hover,.contact-submit:focus-visible{background:var(--c1);border-color:var(--c5);outline:none}footer{color:var(--c4);text-align:center;padding:1rem 1.5rem 3rem;font-size:.65rem}.detail-nav{width:min(100% - 3rem,44rem);margin:0 auto;padding-top:2rem}.detail-nav a{color:var(--c6);font-size:.75rem;text-decoration:none}.project-hero,.detail-section{width:min(100% - 3rem,44rem);margin:0 auto}.project-hero{padding:6rem 0 3rem}.project-hero h1{color:var(--c9);margin-top:1rem;font-size:2.4rem;font-weight:400;line-height:1.2}.hero-tag{color:var(--accent2);font-size:.75rem}.hero-bio{color:var(--c6);margin-top:1.5rem;font-size:.9rem}.hero-cta{gap:.8rem;margin-top:2rem;display:flex}.btn-primary,.btn-ghost{border:.0625rem solid var(--c3);border-radius:2rem;padding:.65rem 1rem;font-size:.72rem;text-decoration:none;transition:color .2s,background .2s,border-color .2s}.btn-primary{color:var(--c0);background:var(--c8);border-color:var(--c8)}.btn-ghost{color:var(--c8);background:var(--c1)}.btn-primary:hover,.btn-primary:focus-visible{background:var(--c9);border-color:var(--c9)}.btn-ghost:hover,.btn-ghost:focus-visible{color:var(--c9);border-color:var(--c5)}.project-not-found{min-height:37.5rem}.detail-section{padding-top:4rem}.stats-grid,.gallery-grid{gap:1rem;display:grid}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr))}.stat-item{padding:1.25rem}.stat-value{color:var(--c8);font-size:1.4rem}.stat-label{color:var(--c5);font-size:.7rem}.gallery-grid{grid-template-columns:repeat(auto-fit,minmax(18rem,1fr))}.gallery-img{aspect-ratio:16/9;object-fit:cover;border:.0625rem solid var(--c3);border-radius:.85rem;width:100%}.detail-tags{gap:.75rem;margin-top:0}.detail-tag{padding:.5rem 1rem;font-size:.75rem}.fade-in{opacity:0;animation:.6s forwards fade-up;transform:translateY(1rem)}.fade-in:nth-child(2){animation-delay:.1s}.fade-in:nth-child(3){animation-delay:.2s}.fade-in:nth-child(4){animation-delay:.3s}@keyframes fade-up{to{opacity:1;transform:translateY(0)}}.scroll-reveal{opacity:0;transition:opacity .6s ease-out,transform .6s ease-out;transform:translateY(1.5rem)}.scroll-reveal.fade-in-visible{opacity:1;transform:translateY(0)}@media (width<=48rem){.top-actions{top:1.5rem;right:1.5rem}.icon-button{border-radius:1.3rem;width:3.25rem;height:3.25rem}.hero{padding-top:6.5rem}.hero-main{margin-top:3.5rem}.hero h1{white-space:normal;font-size:1.5rem}.hero-heading p,.hero-info{font-size:1.25rem}.stack-grid{grid-template-rows:none;grid-template-columns:repeat(3,1fr)}.stack-item{min-height:5.25rem;grid-area:auto!important}.exp-item,.contact-form-row{grid-template-columns:1fr}.service-item{grid-template-columns:2rem 1fr}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
