:root{--piece-size:8rem;--piece-border-size:.15rem;--piece-border-color:#78c78e;--apple-black:#e8f4f8;--apple-card:rgba(255,255,255,0.45);--apple-cardborder:rgba(255,255,255,0.6);--apple-surface:rgba(255,255,255,0.3);--apple-blue:#2e9e4f;--apple-text:#1a3a2a;--apple-gray:#4a7a5a}#about{min-height:100vh;min-height:100svh;vertical-align:middle}#about,#header-flex{display:flex;justify-content:center}#header-flex{align-items:center}#header-image{position:relative;flex:0 0 28rem;width:28rem;height:20rem;margin-left:5rem}.hero-preview{position:relative;width:100%;height:100%;border-radius:0;transform:translate3d(0,1.5rem,0) scale(.92);transform-origin:center;transition:transform .7s ease,border-radius .5s ease}.hero-dots,.hero-photo,.hero-veil{position:absolute;inset:0;width:100%;height:100%;border-radius:inherit}.hero-dots,.hero-veil{opacity:0;transition:opacity .5s ease,transform .7s ease,border-radius .5s ease}.hero-dots{inset:-20%;width:auto;height:auto;background-position:50%;background-repeat:repeat;background-size:4.5rem;border-radius:0;transform-origin:center;transform:translate3d(1.2rem,-.6rem,0) rotate(-3deg) scale(1.2);box-shadow:inset 0 0 5rem 6.5rem rgba(223,237,219,.92);z-index:-1}.hero-veil{background:radial-gradient(ellipse 84% 78% at 52% 48%,rgba(255,255,255,.14) 0,rgba(255,255,255,.08) 48%,rgba(240,247,241,.04) 70%,transparent 100%),linear-gradient(135deg,rgba(236,246,244,.5),rgba(223,237,219,.42));backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.hero-photo{background-position:50%;background-size:cover;opacity:0;transform:scale(.98);transition:opacity .5s ease,transform .7s ease,border-radius .5s ease}.hero-preview-visible{transform:translateZ(0) scale(1)}.hero-preview-visible .hero-dots{opacity:1;background-image:url(/dotted.svg);background-position:50%;background-repeat:repeat;background-size:4.5rem;box-shadow:inset 0 0 5rem 10rem #e3f2ee;animation:search 1.4s ease-in-out .3s 1 normal forwards}.hero-preview-visible .hero-veil{opacity:1}.hero-preview-rounded,.hero-preview-rounded .hero-photo,.hero-preview-rounded .hero-veil{border-radius:.75rem}.hero-preview-tilted{transform:rotate(3deg)}.hero-preview-tilted .hero-dots{transform:translate3d(1.45rem,-.7rem,0) rotate(-6deg) scale(1.42)}.hero-preview-tilted .hero-photo{transform:scale(1)}#header-text{max-width:38rem;position:relative;z-index:10}#header-text h1{font-size:4.5rem;line-height:1;font-weight:700;color:var(--apple-text);letter-spacing:-.04em;margin-left:-4px}#header-text h1 span{width:22rem;height:4rem;background-image:url(/name-dark.svg);background-size:22rem;background-position:-.9rem -1.35rem;transition:background-position 2s;margin-left:-.45rem}#code-block,#header-text h1 span{display:inline-block;vertical-align:top}#code-block{background-color:rgba(255,255,255,.35);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);min-width:min(32rem,100%);margin-top:1.5rem;padding:1rem 1.25rem;border:1px solid rgba(255,255,255,.6);border-radius:.75rem;text-align:left;font-size:.75rem;line-height:1.25rem;color:var(--apple-gray);font-family:SF Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;white-space:pre-wrap;transition:border-color .3s ease;box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 4px 16px rgba(46,158,79,.06)}#code-block:hover{border-color:rgba(255,255,255,.85)}@keyframes search{0%{box-shadow:inset 0 0 5rem 10rem #e3f2ee}15%{box-shadow:inset 0 0 5rem 5.75rem #e3f2ee}to{box-shadow:inset 0 0 5rem 6.5rem #e3f2ee}}.jigsaw-text{width:calc(100% - 18rem)}.jigsaw,.jigsaw-text{display:inline-block;vertical-align:top}.jigsaw{width:17rem;text-align:right;margin-left:1rem;transform:rotate(-3deg)}.piece{fill:transparent;stroke-width:.4rem;opacity:0}.jigsaw.show .piece{left:0;opacity:1;transition-duration:.5s;transition-timing-function:ease;stroke:#78c78e;filter:drop-shadow(2px 2px 4px rgba(46,158,79,.2))}.jigsaw .piece-1{animation:piece-cycle 4.8s linear 0s infinite}.jigsaw .piece-2{animation:piece-cycle 4.8s linear 1.2s infinite;transition-delay:.2s}.jigsaw .piece-3{animation:piece-cycle 4.8s linear 2.4s infinite;transition-delay:.4s}.jigsaw .piece-4{animation:piece-cycle 4.8s linear 3.6s infinite;transition-delay:.6s}@keyframes piece-cycle{0%{stroke:#78c78e}30%{stroke:#5bb87a}60%{stroke:#3eaa66}90%{stroke:#2e9e4f}to{stroke:#78c78e}}.section-header-3d{vertical-align:middle;display:inline-block;width:30rem;padding:.6rem;transition:0s;transition-timing-function:ease;transition-delay:0s;opacity:0;background:rgba(255,255,255,.35);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-radius:18px;border:1px solid rgba(255,255,255,.6);box-shadow:inset 0 1px 0 rgba(255,255,255,.8),inset 0 -1px 0 rgba(0,0,0,.04),0 8px 32px rgba(46,158,79,.08)}.section-header-3d,.section-header-3d canvas{height:280px}.section-header-3d canvas{border-radius:12px;background:rgba(255,255,255,.2);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.5);box-shadow:inset 0 1px 0 rgba(255,255,255,.6),inset 0 -1px 0 rgba(0,0,0,.04)}.section-header-3d.show{transition:.8s ease;transition-delay:.2s;opacity:1}h2{letter-spacing:-.04em;margin-left:-3px}.project-section{max-width:90rem;margin:0 auto 8rem;padding:6rem 1.25rem}.section-header{max-width:64rem;margin:0 auto;display:flex;justify-content:space-around;align-items:center;flex-wrap:wrap}.project-set{display:flex;flex-wrap:wrap;justify-content:space-evenly;align-items:stretch}.project-item{flex-shrink:0;width:40rem;background:rgba(255,255,255,.45);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.6);border-radius:1rem;margin:6rem 1rem 0;transition:all .4s ease;position:relative;overflow:hidden;box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 4px 20px rgba(46,158,79,.06)}.project-item:hover{border-color:rgba(255,255,255,.85);transform:translateY(-4px);box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 12px 40px rgba(46,158,79,.15)}a.project-item[href]:hover{background:rgba(220,255,230,.5);border-color:rgba(46,158,79,.35);box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 12px 40px rgba(46,158,79,.22)}.project-item .project-lights{position:absolute;top:0;bottom:0;width:100%;border-radius:1rem;overflow:hidden;pointer-events:none}.project-item .project-lights div{width:0;transition:opacity .4s ease}.project-item:hover .project-lights div{opacity:1}.project-item .grey-light{opacity:.4}.project-item .gold-light{opacity:0}.project-item-sub{width:100%;padding:2rem;display:inline-flex;border-radius:1rem;justify-content:space-between;position:relative}.project-image{width:14rem;height:14rem;background-size:cover;background-position:50%;flex-shrink:0;border-radius:.75rem;margin-top:-3rem;margin-left:1.5rem;box-shadow:0 8px 24px rgba(0,0,0,.12);transition:all .4s ease}.project-item:hover .project-image{transform:translateY(-2px);box-shadow:0 12px 32px rgba(0,0,0,.18)}.project-title{font-size:1.75rem;line-height:2rem;margin-left:-1px;letter-spacing:-.02em}.project-specs{font-weight:500;margin-bottom:.5rem;letter-spacing:.3px;color:var(--apple-gray);font-size:.8rem}.project-for:after{content:" \2022 ";opacity:.5}.project-extract{letter-spacing:.2px;line-height:1.6;font-size:.875rem;color:#5a8a6a}.expand-projects{height:6rem;width:6rem;background-color:rgba(255,255,255,.45);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid rgba(255,255,255,.6);font-size:2rem;line-height:6rem;padding:0;border-radius:1rem;margin:6rem 18rem 0;transition:all .3s ease;color:var(--apple-text);cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}.expand-projects:hover{background-color:rgba(255,255,255,.6);border-color:rgba(255,255,255,.85)}@media only screen and (max-width:1140px) and (min-width:1024px){#header-text{margin-right:-6rem}}@media only screen and (max-width:1024px){#header-flex,#header-text{flex-wrap:wrap}#header-text{margin-top:6rem;display:flex;justify-content:center}#header-image{margin-top:-41rem;margin-left:15%;margin-right:-15%;opacity:.25}#code-block{background:rgba(255,255,255,.55)}}@media only screen and (max-width:768px){.jigsaw-text{width:calc(100% - 2rem)}.jigsaw{position:relative;margin-left:-15rem;z-index:-1;opacity:.5;filter:blur(1px)}}@media only screen and (max-width:640px){.jigsaw{margin-top:1rem}}@media only screen and (max-width:600px){#about,#header-flex{display:block}#header-text{padding:0 1rem;margin-top:8rem}#header-text h1{margin-bottom:2rem;width:100%}#header-text h1 span{width:15rem;background-position-x:-.9rem}#header-image{margin-top:-27rem}.project-item{width:100%;margin-top:4rem}.project-item-sub{flex-wrap:wrap-reverse}.project-image{width:100%;margin:-3rem 0 1rem}}@media only screen and (max-width:440px){.section-header-3d canvas{transform:scale(.8)}}