:root{--color-primary:#232324;--color-secondary:#383a41;--color-tertiary:#8e8e90;--color-quaternary:#eee;--color-accent-green:#e0f27e;--color-accent-blue:#0084ff;--color-accent-secondary:#e5f2ff;--border:#00000024;--wash:#0000000a;--gallery-aspect:8/5}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif;margin:0}*{box-sizing:border-box}#root,*,body,html{margin:0;padding:0}#root,body,html{-ms-overflow-style:none;height:100%;overflow-x:hidden;overflow-y:auto;scrollbar-width:none;width:100%}#root::-webkit-scrollbar,body::-webkit-scrollbar,html::-webkit-scrollbar{display:none;height:0;width:0}.project-content{scrollbar-width:none}.project-content::-webkit-scrollbar{display:none}html.overlay-open-root,html.overlay-open-root #root,html.overlay-open-root body{overflow:hidden!important}.slide-in{transform-origin:bottom}.slide-in,.slide-out{background:var(--color-primary);height:100vh;left:0;pointer-events:none;position:fixed;top:0;width:100%;will-change:transform;z-index:999999}.slide-out{transform-origin:top}.transition-spinner{left:50%;pointer-events:none;position:fixed;top:50%;transform:translate(-50%,-50%);z-index:1000000}header{backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);background:#ffffff80;font-family:Google Sans Code,Roboto Mono,SF Mono,Monaco,Inconsolata,Courier New,monospace;left:0;padding:0;position:fixed;right:0;text-align:center;top:0;transition:opacity .24s ease;z-index:30}nav{color:var(--color-primary);font-size:12px;justify-content:space-between;margin:0 auto;padding:16px;text-transform:uppercase}nav,nav>div{display:flex}nav>div{align-items:flex-start;flex-direction:column;gap:3px}nav>div:last-child{align-items:flex-end}nav span.nav-subtitle{display:flex}.nav-menu a,nav span.nav-subtitle{align-items:center;color:var(--color-tertiary);gap:6px}.nav-menu a{display:inline-flex;text-decoration:none;transition:color .12s ease;-webkit-transition:color .12s ease}.nav-arrow-slot{display:inline-flex;overflow:hidden;width:12px}.nav-menu a.active,.nav-menu a:hover{color:var(--color-primary)}.social-links{align-items:center;display:flex;gap:6px}.social-links a{background:none;box-sizing:initial;color:var(--color-tertiary);cursor:pointer;font-size:13px;position:relative;text-decoration:none;transition:color .12s ease;-webkit-transition:color .12s ease}.social-links a:hover{color:var(--color-primary)}@media (max-width:768px){.nav-location{display:none}.nav-contact{align-items:end;display:none;text-align:right}}.spinner-ring{position:relative}.text-ring{--character-width:1;--inner-angle:calc((360/var(--total))*1deg);--radius:calc((var(--character-width, 1)/sin(var(--inner-angle)))*-1ch);animation:spinner-ring-spin 6s linear infinite;color:#fff;display:block;inset:0;position:absolute}.text-ring [style*="--index"]{font-weight:600;left:50%;position:absolute;text-transform:uppercase;top:50%;transform:translate(-50%,-50%) rotate(calc(var(--inner-angle)*var(--index))) translateY(var(--radius))}@keyframes spinner-ring-spin{to{rotate:-1turn}}.info-panel{font-family:Google Sans Code,Roboto Mono,SF Mono,Monaco,Inconsolata,Courier New,monospace;left:62%;perspective:800px;pointer-events:none;position:fixed;top:50%;transform:translate(-50%,-50%);z-index:10}.info-panel--3d{perspective:800px;position:static;transform:none;z-index:auto}.info-card{color:#111;display:flex;flex-direction:column;font-size:18px;gap:8px;padding:16px;width:320px}.info-meta{color:#666;display:flex;justify-content:flex-start}.info-title{color:#111}.info-desc{color:#111;line-height:1.5}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.footer{bottom:0;left:0;padding:0;position:fixed;right:0;text-align:center;transition:opacity .24s ease;z-index:30}.footer-content{align-items:flex-end;color:var(--color-primary);display:flex;font-size:12px;gap:12px;justify-content:space-between;margin:0 auto;padding:16px;text-transform:uppercase}.footer-col{display:flex;flex-direction:column}.footer-col-left{align-items:flex-start}.footer-col-right{align-items:flex-end}.footer-col-left span:first-child{border-bottom:none}.footer-col span{align-items:center;display:flex;gap:4px;padding:4px}.scene-controls{border-bottom:none;display:flex;gap:8px;padding:4px}.scene-controls a{align-items:center;color:var(--color-primary);cursor:pointer;display:inline-flex;justify-content:center;text-decoration:none}.scene-controls a:hover,.socials a:hover{color:var(--color-accent-green)}@media (max-width:1200px){.footer-content{align-items:center;display:flex;flex-direction:column;gap:8px;grid-template-columns:1fr auto;padding:12px 0;text-align:center}.footer-col-left,.footer-col-right{display:none}}@media (max-width:992px){.footer-col-center{align-self:stretch;grid-column:1;justify-content:center;min-width:0;order:1;overflow:hidden;width:100%}}.side-menu{align-items:flex-start;display:flex;flex-direction:column;gap:0;pointer-events:auto;position:fixed;top:50%;transform:translateY(-50%);transition:all .24s ease;z-index:20}.side-menu.left{left:16px}.side-menu.right{align-items:flex-end;right:16px}.side-menu-item{align-items:center;cursor:pointer;display:flex;height:16px;width:120px}.side-menu-line{background:var(--color-secondary);cursor:pointer;height:1px;width:120px;will-change:transform,opacity}.side-menu-line.active{background:var(--color-primary)}.app-container.is-zoomed .side-menu{opacity:0;pointer-events:none}@media (max-width:1200px){.side-menu-item,.side-menu-line{width:60px}}.project-overlay{align-items:center;background-color:#fff;display:flex;inset:0;justify-content:center;overflow:hidden;position:fixed;z-index:1000}.project-content{height:100vh;overflow:auto;position:relative;width:100vw;z-index:1}.project-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between}.project-header-left{display:flex;flex-direction:column;gap:6px}.project-body a.ui-button{align-items:center;border:1px solid var(--color-primary);box-shadow:1px 1px 0 var(--color-primary);color:var(--color-primary);display:flex;font-size:11px;gap:6px;padding:4px 6px 4px 8px;text-decoration:none;text-transform:uppercase;transition:all .2s ease}.project-body a.ui-button:hover{background:var(--color-primary);color:#fff}.project-title{color:var(--color-primary);font-size:1.5rem;font-weight:700;margin:0}.project-meta{align-items:center;color:var(--color-tertiary);font-family:Google Sans Code,Roboto Mono,SF Mono,Monaco,Inconsolata,Courier New,monospace;font-size:11px;margin:0;text-transform:uppercase}.project-body{background-color:#fff;display:flex;flex-direction:column;margin:56px auto;overflow:auto;padding:48px}.project-body p{color:var(--color-secondary);font-size:13px;font-weight:400;line-height:1.65;margin:1.5rem 0 0}.project-body h3{color:var(--color-primary);font-size:1rem;font-weight:700;margin:2rem 0 0}.project-body p a{color:var(--color-accent-blue)}.project-regular .project-body{max-width:720px}.project-wide .project-body{max-width:960px}.media-gallery{display:flex;flex-direction:column;gap:16px;margin-top:1.5rem}.gallery-item{aspect-ratio:var(--gallery-aspect);background-color:var(--wash);border-radius:8px;display:block;height:auto;object-fit:cover;width:100%}.figure{display:flex;flex-direction:column;gap:6px;margin:0;position:relative}.figure-caption{color:var(--color-tertiary);font-size:10px;text-transform:uppercase}.video-mask{border-radius:8px;display:flex;overflow:hidden}.video-stack{position:relative}.video-stack .video-el{position:relative;z-index:1}.video-stack .video-poster{height:100%;inset:0;object-fit:cover;pointer-events:none;position:absolute;transition:opacity .24s ease;width:100%;z-index:2}.video-stack .video-el.is-playing+.video-poster{opacity:0}.video-stack .video-loading{align-items:center;display:flex;inset:0;justify-content:center;pointer-events:none;position:absolute;transition:opacity .24s ease,visibility .24s ease;z-index:3}.video-stack .video-loading:before{background:#00000059;content:"";inset:0;position:absolute}.video-stack .video-spinner{animation:video-spin .9s linear infinite;border:2px solid #ffffff59;border-radius:50%;border-top-color:#fff;height:16px;width:16px;z-index:4}@keyframes video-spin{to{transform:rotate(1turn)}}.video-stack .video-el.is-playing~.video-loading{opacity:0;visibility:hidden}.video-mask iframe{aspect-ratio:16/9;width:100%!important}#archive-gallery,#swiftui-gallery{margin:1.5rem 0 0}#archive-gallery .gallery-item,#swiftui-gallery .gallery-item{margin:0}#swiftui-gallery figcaption{display:none}.overlay-close{align-items:center;-webkit-appearance:none;appearance:none;border:1px solid var(--color-primary);box-shadow:1px 1px 0 var(--color-primary);color:var(--color-primary);cursor:pointer;display:flex;font-size:48px;font-weight:400;height:40px;justify-content:center;left:16px;position:absolute;text-transform:uppercase;top:16px;transition:background-color .2s ease;width:40px;will-change:transform;z-index:3}.overlay-close:hover{background:var(--color-primary);color:#fff}.project-archive-item-name{color:var(--color-secondary);font-size:11px;margin-top:6px}@media (max-width:768px){#archive-gallery{--archive-cols:1;gap:8px}#swiftui-gallery{--swiftui-cols:2;gap:8px}.figure-caption{display:block}.project-body{margin:48px auto;padding:16px}.project-header{align-items:flex-start;flex-direction:column;gap:16px;justify-content:flex-start}.project-overlay .overlay-close{height:36px;left:auto;padding:0;right:16px;width:36px}}.ui-button{-webkit-appearance:none;appearance:none;background:#f5f5f5;border:1px solid var(--color-primary);border-radius:2px;box-shadow:1px 1px 0 var(--color-primary);color:var(--color-primary);cursor:pointer;font-family:Google Sans Code,Roboto Mono,SF Mono,Monaco,Inconsolata,Courier New,monospace;font-size:11px;padding:8px;text-decoration:none;text-transform:uppercase}.ui-button,.ui-button-inner{align-items:center;display:inline-flex;gap:6px}.ui-button-inner{transform-origin:center}.ui-button:hover{background:var(--color-primary);color:#fff}.ui-button.visit-variant:hover svg{color:#fff}.ui-button-leading,.ui-button-trailing{align-items:center;display:inline-flex}.ui-button--square{height:48px;justify-content:center;padding:0;width:48px}.menu-item{background:#dcdcdc;display:inline-flex;justify-content:flex-start;padding:8px 12px;position:relative;text-decoration:none;white-space:nowrap}.menu-item,.menu-item-row{align-items:center;gap:8px}.menu-item-row{display:flex;width:100%}.menu-item-accessory{align-items:center;color:var(--color-secondary);display:inline-flex;margin-left:auto}.menu-button-icon,.menu-button-label,.menu-item-accessory{pointer-events:none}.menu-item.is-hovered,.menu-item:hover{background-color:var(--color-primary);color:#fff}.menu-item-label{font-size:11px;text-transform:uppercase}.menu{bottom:16px;font-family:Google Sans Code,Roboto Mono,SF Mono,Monaco,Inconsolata,Courier New,monospace;left:0;pointer-events:none;position:fixed;right:0;z-index:200}.menu-items{grid-gap:8px;align-items:stretch;display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));justify-content:center;margin:0 auto;max-width:960px;padding:0;pointer-events:auto}.menu-items:hover{cursor:pointer}#mobile-menu{display:none;flex-direction:row;gap:8px;pointer-events:auto}#mobile-menu .mobile-menu-button{align-items:center;background:#f5f5f5;border:1px solid var(--color-primary);border-radius:4px;box-shadow:1px 1px 0 var(--color-primary);color:var(--color-primary);display:flex;font-size:11px;font-weight:600;gap:8px;justify-content:center;padding:8px 10px;text-transform:uppercase}#mobile-menu .ui-button-label{display:flex;gap:6px}@media (max-width:992px){.menu{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr))}}@media (max-width:768px){#mobile-menu{display:flex}}.project-carousel{display:none}@media (max-width:768px){.mobile-carousel-anchor{background:#0000;bottom:0;left:0;padding-bottom:max(env(safe-area-inset-bottom),24px);position:fixed;right:0;z-index:40}.project-carousel{display:flex;flex-direction:column;gap:8px;text-align:center}.pc-controls{gap:8px}.pc-arrow,.pc-controls{align-items:center;display:flex;justify-content:center}.pc-arrow{background:none;background:var(--color-quaternary);border:none;border:1px solid var(--color-primary);border-radius:999px;box-shadow:1px 1px 0 var(--color-primary);color:var(--color-secondary);padding:4px}.pc-content-viewport{min-height:80px;overflow:visible;overscroll-behavior:contain;padding:8px 24px 12px;position:relative;touch-action:pan-x}.pc-track{align-items:stretch;display:flex;gap:12px;will-change:transform}.pc-slide{display:flex;flex:0 0 auto}.pc-content{background:#f5f5f5;border:1px solid var(--color-primary);border-radius:7px;box-shadow:1px 1px 0 var(--color-primary);flex:1 1;height:100%;justify-content:space-between;padding:16px;position:relative;width:100%;z-index:1}.pc-content,.pc-content-container{align-items:flex-start;display:flex;gap:8px}.pc-content-container{flex-direction:column}.pc-dots{background:var(--color-quaternary);border:1px solid var(--color-primary);border-radius:999px;box-shadow:1px 1px 0 var(--color-primary);display:flex;grid-column:1/-1;justify-content:center;padding:6px 10px;top:-1px}.pc-dot,.pc-dots{position:relative}.pc-dot{background:#0000;border:none;cursor:pointer;height:28px;padding:0;width:18px}.pc-dot-rail{display:inline-block;height:8px;position:relative;width:16px}.pc-dot-pill{align-items:center;background:var(--color-tertiary);border-radius:7px;display:inline-flex;font-size:12px;height:8px;line-height:1;min-width:8px;padding:0;text-transform:uppercase;white-space:nowrap;width:8px}.pc-title-row{align-items:flex-start;display:flex;flex-direction:column;gap:2px}.pc-title{color:var(--color-primary);font-size:15px;font-weight:600}.pc-meta{color:var(--color-tertiary);font-size:11px;text-align:left}.pc-desc{color:var(--color-secondary);font-size:12px;line-height:1.45;text-align:left;text-transform:none}.pc-button{font-size:12px;font-weight:600;padding:8px 10px}.pc-button .ui-button-label{align-items:center;display:flex;gap:4px}}#section-about{margin:120px auto;max-width:960px;min-height:100vh;position:relative;width:100%}.about-row{flex-direction:row}.about-row,.experience-row{display:flex;gap:16px;justify-content:center}.experience-row{flex-direction:column}.about-col{flex:1 1 50%}.about-title{align-items:center;display:flex;flex-direction:column;justify-content:space-between;margin-bottom:16px;overflow:hidden}.about-title h1{color:var(--color-primary);font-family:Inter Tight,sans-serif;font-size:116px;font-weight:800;margin:0;padding:0;text-transform:uppercase;white-space:nowrap}.about-title h1 .title-word{display:inline-block}.about-title h1 .title-space{display:inline}.about-manifesto p,.background p{color:var(--color-secondary);font-size:15px;font-weight:400;line-height:1.65;margin:1.5rem 0 0}.background p a,.background p span{border-bottom:1px dotted var(--color-tertiary);color:var(--color-primary);cursor:pointer;font-weight:700;padding:0 1px;position:relative;text-decoration:none;vertical-align:top;z-index:1}.background p a:after,.background p span:after{border-radius:2px;bottom:2px;content:"";height:4px;left:0;position:absolute;transition:all .1s ease-out;width:100%;z-index:-1}.background p a:hover,.background p span:hover{border-bottom:none;color:var(--color-accent-green)}.background p a:hover:after,.background p span:hover:after{background-color:var(--color-primary);bottom:0;cursor:pointer;height:100%}.photo-carousel-3d{perspective:800;pointer-events:auto;position:relative;top:170px;width:100%}.photo-carousel-3d-stage{height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(.75);width:0}.photo-carousel-3d-ring{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);transform-style:preserve-3d;will-change:transform}.experience-timeline{align-items:center;display:flex;flex-direction:column;justify-content:center}.job-list{margin-top:48px;width:100%}.job-list-body{display:flex;flex-direction:column}.job-row{border-bottom:1px solid var(--border);display:grid;font-family:Google Sans Code,Roboto Mono,SF Mono,Monaco,Inconsolata,Courier New,monospace;font-size:11px;grid-template-columns:1fr 1fr 1fr;padding:20px 0;position:relative;text-transform:uppercase}.job-col.job-dates{color:var(--color-tertiary);padding-left:18px;position:relative}.job-col.job-dates:before{color:var(--color-tertiary);content:"\2192";font-size:12px;left:0;opacity:0;position:absolute;top:50%;transform:translateY(-50%) translateX(-6px);transition:none}.job-list.dragging .job-row.active .job-col.job-dates:before,.job-list.timeline-hover .job-row.active .job-col.job-dates:before,.job-row:hover .job-col.job-dates:before{color:var(--color-primary);opacity:1;transform:translateY(-50%) translateX(0);transition:transform .15s ease,opacity .15s ease,color .15s ease}.job-list:hover .job-row.active:not(:hover) .job-col.job-dates:before{opacity:0;transform:translateY(-50%) translateX(-6px);transition:none}.job-col.job-name{color:var(--color-primary);font-weight:500}.job-col.job-role{color:var(--color-tertiary);text-align:right}.timeline-scroller{-ms-overflow-style:none;left:50%;max-width:960px;overflow-x:hidden;overflow-y:hidden;position:relative;scrollbar-width:none;transform:translateX(-50%);width:100vw}.timeline-centerline{background:red;bottom:32px;left:50%;pointer-events:none;position:absolute;top:0;transform:translateX(-.5px);width:1px;z-index:3}.timeline-centerline:before{border-left:4px solid #0000;border-right:4px solid #0000;border-top:6px solid red;content:"";left:50%;position:absolute;top:6px;transform:translate(-50%,-100%)}.timeline-scroller:after,.timeline-scroller:before{bottom:0;content:"";pointer-events:none;position:absolute;top:0;width:120px;z-index:2}.timeline-scroller:before{background:linear-gradient(90deg,#fff,#fff0);left:0}.timeline-scroller:after{background:linear-gradient(270deg,#fff,#fff0);right:0}.timeline-scroller::-webkit-scrollbar{display:none}.timeline-lines{align-items:end;display:flex;height:72px;position:relative}.timeline-dates{color:var(--color-tertiary);display:flex;font-family:Google Sans Code,Roboto Mono,SF Mono,Monaco,Inconsolata,Courier New,monospace;font-size:10px;justify-content:space-between;margin-top:12px}.timeline-job{left:0;position:absolute;top:0}.timeline-dots{bottom:0;height:0;left:0;pointer-events:none;position:absolute;right:0}.timeline-dot{background:var(--color-primary);border:1px solid var(--border);border-radius:50%;bottom:-3px;height:4px;position:absolute;right:1px;transform:translateX(-50%);width:4px}.about-protoyping{display:flex;flex-direction:column;justify-content:center;margin:72px auto 0;max-width:720px;width:100%}.about-protoyping h2{color:var(--color-tertiary);font-family:Cormorant Garamond,serif;font-size:24px;font-style:italic;font-weight:500;text-align:center}.about-protoyping p{color:var(--color-secondary);font-size:15px;font-weight:400;line-height:1.65;margin:1.5rem 0 0;text-align:justify}.about-contact{align-items:center;background:var(--color-primary);border-radius:7px;display:flex;font-family:Google Sans Code,Roboto Mono,SF Mono,Monaco,Inconsolata,Courier New,monospace;gap:48px;justify-content:space-between;margin:48px auto;max-width:720px;padding:24px}.about-contact-content{display:flex;flex-direction:column;gap:6px;max-width:320px}.about-contact h3{color:#fff;font-weight:400;text-transform:uppercase}.about-contact p{color:var(--color-tertiary);font-size:10px;font-weight:400;line-height:1.65}.contact-buttons{flex-direction:row;gap:12px}.contact-buttons,.contact-buttons a{align-items:center;display:flex;justify-content:center}.contact-buttons a{border-radius:2px;color:var(--color-quaternary);padding:6px;text-decoration:none;transition:all .12s ease-in-out;-webkit-transition:all .12s ease-in-out}.contact-buttons a:hover{color:var(--color-accent-green)}.contact-buttons a svg{transition:all .12s ease-in-out;-webkit-transition:all .12s ease-in-out}.contact-buttons a:hover svg{transform:scale(1.1)}@media (max-width:768px){.about-title h1{font-size:16vw;line-height:.9;white-space:normal}.about-title h1 .title-space{display:none}.about-title h1 .title-word{display:block}.experience-timeline{display:none}.job-col.job-dates{padding-left:0}.job-col.job-dates:before{content:none!important;display:none!important}.about-protoyping{margin-top:48px}.about-protoyping h2{font-size:24px;font-weight:500;padding:0 24px}.about-protoyping p{text-align:left}.about-contact{align-items:flex-start;flex-direction:column;gap:16px;padding:16px}.about-contact-content{max-width:100%}}@media (max-width:1024px){#section-about{margin:100px auto;padding:0 16px}.about-row{flex-direction:column}.photo-carousel-3d{height:280px;top:0;transform:scale(.9)}.photo-carousel-3d-stage{position:relative}}
/*# sourceMappingURL=main.381e129b.css.map*/