@font-face{font-family:PP Supply Mono;src:url(/fonts/PPSupplyMono-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:PP Neue Montreal;src:url(/fonts/PPNeueMontreal-Medium.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}:root{--image-width: 220px;--image-height: 312px;--color-background: #f0f0f0;--color-text: #333333;--color-text-inverse: #f0f0f0;--color-text-muted: #999999;--font-mono: "PP Supply Mono", "Courier New", monospace;--font-sans: "PP Neue Montreal", sans-serif;--font-size-xs: 11px;--font-size-sm: 12px;--font-size-base: 12px;--font-size-lg: 14px;--font-size-xl: 20px;--font-size-xxl: 28px;--font-weight-normal: 400;--font-weight-medium: 500;--line-height-tight: 1.1;--line-height-base: 1.4;--line-height-relaxed: 1.3;--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 1.25rem;--spacing-lg: 1rem;--mobile-menu-space: 75px;--mobile-touch-target: 44px;--transition-fast: .3s ease;--transition-smooth: .3s cubic-bezier(.34, 1.56, .64, 1);--underline-speed: .24s;--underline-easing: ease-in-out;--underline-offset: 12;--dot-size: 6px;--border-radius-full: 50%;--z-background: 0;--z-gallery: 1;--z-dots-canvas: 2;--z-side-text: 10;--z-portfolio-description: 20;--z-portfolio-info: 25;--z-header: 100;--z-tooltips: 200;--z-mobile-overlay: 300;--z-mobile-trigger: 400}@media (min-width: 481px){:root{--image-width: 240px;--image-height: 340px}}@media (min-width: 769px){:root{--image-width: 350px;--image-height: 497px;--spacing-lg: 2rem;--font-size-base: 14px;--font-size-xs: 11px;--font-size-sm: 12px}}@media (min-height: 1001px){:root{--image-width: 430px;--image-height: 610px}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{isolation:isolate}.gallery-image,.split,.side-text,.logo,.services-list,.contact-info,.timezone,.audio-controls,.antisocial-link,.portfolio-info,.mobile-menu-trigger{visibility:hidden}body{font-family:var(--font-mono);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text);background-color:var(--color-background);text-transform:uppercase;line-height:var(--line-height-base);width:100%;height:100vh;overflow:hidden;position:relative;z-index:var(--z-background)}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);font-weight:var(--font-weight-medium);text-transform:none;line-height:var(--line-height-relaxed);letter-spacing:-.02em}h1{font-size:var(--font-size-xl)}@media (min-width: 769px){h1{font-size:var(--font-size-xxl)}}.animation-optimized{transform:translateZ(0);backface-visibility:hidden;perspective:1000px;will-change:transform,opacity,filter}.text-animation-ready{font-display:swap;text-size-adjust:100%;transform:translateZ(0);backface-visibility:hidden}.animated-text{transform:translateZ(0);will-change:transform,opacity,filter;backface-visibility:hidden}.hover-optimized{will-change:transform,color,background-color;transform:translateZ(0);backface-visibility:hidden}.hover-optimized:hover{will-change:transform,color,background-color}.gallery-performance{will-change:background-image,transform;transform:translateZ(0);backface-visibility:hidden;image-rendering:optimizeQuality}.animation-ready{opacity:0;transform:translate3d(0,20px,0);filter:blur(10px);will-change:transform,opacity,filter}.animation-complete{opacity:1;transform:translateZ(0);filter:blur(0px);will-change:auto}.interactive-fill{position:relative;z-index:1;transition:color var(--transition-fast);will-change:color;transform:translateZ(0);backface-visibility:hidden}.interactive-fill:after{content:"";position:absolute;top:0;left:0;width:0;height:100%;background-color:var(--color-text);z-index:-1;transition:width var(--transition-smooth);will-change:width;transform:translateZ(0)}.interactive-fill:hover:after,.interactive-fill:focus:after{width:100%}.interactive-fill:hover,.interactive-fill:focus{color:var(--color-text-inverse);mix-blend-mode:difference}.contact-link,.audio-toggle,.antisocial-link{position:relative;z-index:1;transition:color var(--transition-fast);will-change:color;transform:translateZ(0);backface-visibility:hidden}.contact-link:after,.audio-toggle:after,.antisocial-link:after{content:"";position:absolute;top:0;left:0;width:0;height:100%;background-color:var(--color-text);z-index:-1;transition:width var(--transition-smooth);will-change:width;transform:translateZ(0)}.contact-link:hover:after,.contact-link:focus:after,.audio-toggle:hover:after,.audio-toggle:focus:after,.antisocial-link:hover:after,.antisocial-link:focus:after{width:100%}.contact-link:hover,.contact-link:focus,.audio-toggle:hover,.audio-toggle:focus,.antisocial-link:hover,.antisocial-link:focus{color:var(--color-text-inverse);mix-blend-mode:difference}.main-container{width:100dvw;height:100dvh;display:flex;justify-content:center;align-items:center;position:relative;padding:0 1rem;z-index:var(--z-gallery)}@media (min-width: 769px){.main-container{padding:0}}.image-gallery{position:relative;width:var(--image-width);height:var(--image-height);cursor:default;max-width:calc(100dvw - 2rem);max-height:calc(100dvh - 12rem);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);margin:0;z-index:var(--z-gallery)}@media (min-width: 769px){.image-gallery{cursor:crosshair;max-width:none;max-height:none;position:relative;top:auto;left:auto;transform:none;margin:auto}}.gallery-image{position:absolute;top:0;left:0;width:100%;height:100%;background-size:contain;background-position:center;background-repeat:no-repeat;will-change:background-image,transform;transform:translateZ(0);backface-visibility:hidden;image-rendering:optimizeQuality}.site-header{position:fixed;top:0;left:0;width:100%;z-index:var(--z-header);background-color:transparent;padding:var(--spacing-sm);width:100dvw}@media (min-width: 769px){.site-header{padding:var(--spacing-lg)}}.header-container{display:grid;grid-template-columns:auto 1fr auto;gap:var(--spacing-sm);width:calc(100% - var(--mobile-menu-space));align-items:flex-start}@media (min-width: 769px){.header-container{grid-template-columns:repeat(12,1fr);font-size:inherit;width:100%}}.logo{grid-column:1;justify-self:start;display:flex;align-items:center;position:relative;text-decoration:none;color:var(--color-text);font-family:var(--font-sans);font-size:var(--font-size-xl);font-weight:var(--font-weight-medium);line-height:1.2;letter-spacing:-.02em;text-transform:none;opacity:0;transform:translate3d(0,20px,0);filter:blur(10px);will-change:transform,opacity,filter;backface-visibility:hidden;width:100%}@media (min-width: 769px){.logo{grid-column:1 / 3;font-size:var(--font-size-xxl)}}.logo-letter{display:inline-block;color:var(--color-text)}.logo-dash{display:inline-block;width:24px;overflow:hidden;text-align:center;transition:width .6s cubic-bezier(.23,1,.32,1);will-change:width;transform:translateZ(0);backface-visibility:hidden;color:var(--color-text);margin-top:-6px}.logo:hover .logo-dash{width:0px;transition:width .4s cubic-bezier(.68,-.55,.265,1.55)}.services{grid-column:2;justify-self:start;position:relative;font-size:var(--font-size-xs)}@media (min-width: 769px){.services{grid-column:5 / 7;font-size:inherit}}.services-nav{list-style:none;cursor:pointer;width:fit-content}.services-list{font-size:var(--font-size-xs);line-height:var(--line-height-tight);opacity:0;transform:translate3d(0,20px,0);filter:blur(10px);will-change:transform,opacity,filter;backface-visibility:hidden}@media (min-width: 769px){.services-list{font-size:inherit;line-height:var(--line-height-base)}}.contact{grid-column:3;justify-self:end;position:relative;max-width:calc(100% - 20px)}@media (min-width: 769px){.contact{grid-column:8 / 10;justify-self:center;max-width:none}}.contact-info,.timezone,.audio-controls{margin-bottom:1px;font-size:var(--font-size-xs);line-height:var(--line-height-tight);opacity:0;transform:translate3d(0,20px,0);filter:blur(10px);will-change:transform,opacity,filter;backface-visibility:hidden;text-align:left}@media (min-width: 769px){.contact-info,.timezone,.audio-controls{margin-bottom:calc(var(--spacing-xs) / 2);font-size:inherit;line-height:var(--line-height-base)}}.contact-link{color:var(--color-text);text-decoration:none}.timezone{position:relative;cursor:pointer;display:none;visibility:hidden}@media (min-width: 769px){.contact-info,.timezone,.audio-controls{margin-bottom:calc(var(--spacing-xs) / 2);font-size:inherit;line-height:var(--line-height-base)}.timezone{display:flex;align-items:center;gap:var(--spacing-xs);visibility:visible}}.timezone-indicator{width:8px;height:8px;display:flex;align-items:center;justify-content:center}.sun-icon{width:8px;height:8px;background-color:var(--color-text);border-radius:var(--border-radius-full)}.moon-icon{width:8px;height:8px;fill:var(--color-text)}.timezone-text{transition:color var(--transition-fast)}.timezone-text.resting{color:var(--color-text-muted)}.audio-controls{display:flex;align-items:center;gap:var(--spacing-xs);justify-content:flex-start}.audio-toggle{background:none;border:none;color:var(--color-text);font-family:inherit;font-size:inherit;font-weight:inherit;text-transform:inherit;cursor:pointer;padding:0}.mobile-menu-trigger{position:fixed;top:0;right:0;width:var(--mobile-touch-target);height:var(--mobile-touch-target);cursor:pointer;z-index:var(--z-mobile-trigger);background:none;border:none;padding:0;display:block;display:flex;align-items:center;justify-content:center;opacity:0;transform:translate3d(0,20px,0);filter:blur(10px);will-change:transform,opacity,filter;backface-visibility:hidden}@media (min-width: 769px){.mobile-menu-trigger{display:none}}.mobile-dots{position:relative;width:24px;height:24px;display:flex;justify-content:center;align-items:center}.mobile-dots .dot{position:absolute;width:3px;height:3px;background-color:var(--color-text);border-radius:50%;opacity:1;will-change:transform,opacity,scale;backface-visibility:hidden;transform:translateZ(0)}.mobile-dots .dot.center{opacity:0;transform:scale(0) translateZ(0)}.mobile-nav-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--color-background);z-index:var(--z-mobile-overlay);clip-path:inset(100% 0 0 0);pointer-events:none;display:flex;flex-direction:column;padding:var(--spacing-lg)}@media (min-width: 769px){.mobile-nav-overlay{display:none}}.mobile-nav-overlay.active{clip-path:inset(0% 0 0 0);pointer-events:auto}.mobile-nav-content{display:flex;flex-direction:column;justify-content:space-between;height:100%;opacity:0}.mobile-nav-header{flex-shrink:0;text-align:left;margin-bottom:var(--spacing-lg)}.mobile-portfolio-description{font-family:var(--font-sans);font-size:var(--font-size-xl);font-weight:var(--font-weight-medium);line-height:var(--line-height-relaxed);letter-spacing:-.02em;color:var(--color-text);text-transform:none;max-width:100%}.mobile-hoverable-word{position:relative;display:inline-block;cursor:default}.mobile-underline-svg{--path-distance: var(--underline-offset, 10);position:absolute;bottom:calc(var(--path-distance) * 1px);left:0;width:100%;height:12px;pointer-events:none;opacity:0}.mobile-underline-svg svg{width:100%;height:100%;overflow:visible}.mobile-underline-svg path{stroke:#333;stroke-width:8;stroke-linecap:round;fill:none;--path-length: 1000;stroke-dasharray:var(--path-length);stroke-dashoffset:var(--path-length)}.mobile-hoverable-word:hover .mobile-underline-svg{opacity:1}.mobile-hoverable-word:hover .mobile-underline-svg path{animation:drawIn calc(var(--underline-speed) * 2) cubic-bezier(.25,.46,.45,.94) forwards}.mobile-hoverable-word:not(:hover) .mobile-underline-svg path{animation:drawOut .5s cubic-bezier(.25,.46,.45,.94) forwards;animation-delay:.1s}.mobile-nav-main{flex:1;display:flex;align-items:center;text-align:left}.mobile-nav-footer{flex-shrink:0;display:flex;flex-direction:column;gap:var(--spacing-lg);text-align:left}.mobile-nav-footer .contact{display:flex;flex-direction:column;gap:1px;opacity:0;filter:blur(10px)}.mobile-nav-footer .contact-info,.mobile-nav-footer .timezone,.mobile-nav-footer .audio-controls{margin-bottom:1px;font-size:var(--font-size-xs);line-height:var(--line-height-tight);text-align:left;opacity:1;filter:none;transform:none}.mobile-nav-footer .timezone{display:flex;align-items:center;gap:var(--spacing-xs);visibility:visible}.mobile-portfolio-info{font-size:var(--font-size-sm);color:var(--color-text);opacity:0;filter:blur(10px);text-align:left}.mobile-portfolio-version{margin-bottom:var(--spacing-xs)}.site-header .antisocial{display:none}.mobile-nav-overlay .antisocial{display:flex;text-align:left}@media (min-width: 769px){.site-header .antisocial{grid-column:11 / 13;display:flex;justify-content:flex-end;text-align:right}.mobile-nav-overlay .antisocial{display:none}}.antisocial-nav{list-style:none;display:flex;flex-direction:column;gap:var(--spacing-sm);font-size:var(--font-size-lg);align-items:flex-start}@media (min-width: 769px){.antisocial-nav{font-size:inherit;gap:1px;align-items:flex-end}}.antisocial-link{cursor:pointer;color:var(--color-text);padding:0;display:inline-block;text-decoration:none;font-size:var(--font-size-lg);line-height:var(--line-height-base);position:relative;overflow:hidden;clip-path:inset(0 100% 0 0);opacity:0;filter:blur(10px);will-change:clip-path,opacity,filter,color;backface-visibility:hidden;transform:translateZ(0)}@media (min-width: 769px){.antisocial-link{font-size:var(--font-size-xs);line-height:1.2;clip-path:none;opacity:0;transform:translate3d(0,20px,0);filter:blur(10px)}}.side-text{display:none}@media (min-width: 769px){.side-text{position:fixed;top:50%;font-family:var(--font-sans);font-size:var(--font-size-xxl);font-weight:var(--font-weight-medium);line-height:1.2;letter-spacing:-.02em;color:var(--color-text);text-transform:none;z-index:var(--z-side-text);opacity:0;filter:blur(10px);transform:translateY(-50%);will-change:opacity,filter;display:block}.side-text--left{left:calc(50vw - var(--image-width)/2 - 150px)}.side-text--right{right:calc(50vw - var(--image-width)/2 - 150px)}}.portfolio-description{position:fixed;bottom:var(--spacing-md);left:var(--spacing-sm);max-width:calc(100dvw - 2rem);z-index:var(--z-portfolio-description);padding:var(--spacing-sm)}@media (min-width: 769px){.portfolio-description{bottom:var(--spacing-lg);left:var(--spacing-lg);max-width:420px;padding:0}}.portfolio-info{display:none}@media (min-width: 769px){.portfolio-info{position:fixed;bottom:var(--spacing-lg);right:var(--spacing-lg);z-index:var(--z-portfolio-info);font-size:var(--font-size-sm);text-align:right;display:block;opacity:0;transform:translate3d(0,20px,0);filter:blur(10px);will-change:transform,opacity,filter;backface-visibility:hidden}}.portfolio-version{margin-bottom:2px}.portfolio-coordinates{font-variant-numeric:tabular-nums;letter-spacing:.5px;display:none}@media (min-width: 769px){.portfolio-coordinates{display:block}}.dots-canvas{position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:var(--z-dots-canvas);will-change:auto}.cursor-tooltip{display:none}@media (min-width: 769px){.cursor-tooltip{position:fixed;background-color:var(--color-text);color:var(--color-text-inverse);padding:4px 8px;font-size:var(--font-size-sm);white-space:nowrap;border-radius:2px;opacity:0;transform:scale(.8) translate(-50%,-100%);transition:opacity .2s ease,transform .2s ease;pointer-events:none;z-index:var(--z-tooltips);transform-origin:bottom center;will-change:opacity,transform;backface-visibility:hidden;display:block}.cursor-tooltip.show{opacity:1;transform:scale(1) translate(-50%,-100%)}.cursor-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:4px solid transparent;border-top-color:var(--color-text)}}.split{opacity:0}.hoverable-word{position:relative;display:inline-block;cursor:default}.underline-svg{--path-distance: var(--underline-offset, 10);position:absolute;bottom:calc(var(--path-distance) * 1px);left:0;width:100%;height:12px;pointer-events:none;opacity:0}.underline-svg svg{width:100%;height:100%;overflow:visible}.underline-svg path{stroke:#333;stroke-width:8;stroke-linecap:round;fill:none;--path-length: 1000;stroke-dasharray:var(--path-length);stroke-dashoffset:var(--path-length)}@keyframes drawIn{0%{stroke-dashoffset:var(--path-length)}to{stroke-dashoffset:0}}@keyframes drawOut{0%{stroke-dashoffset:0}to{stroke-dashoffset:calc(var(--path-length) * -1)}}.hoverable-word:hover .underline-svg{opacity:1}.hoverable-word:hover .underline-svg path{animation:drawIn calc(var(--underline-speed) * 2) cubic-bezier(.25,.46,.45,.94) forwards}.hoverable-word:not(:hover) .underline-svg path{animation:drawOut .5s cubic-bezier(.25,.46,.45,.94) forwards;animation-delay:.1s}.symbol-library{position:absolute;width:0;height:0;overflow:hidden}.audio-elements{position:absolute;opacity:0;pointer-events:none}
