@font-face{font-family:Fairfax Hax HD;src:url(./FairfaxHaxHD-CGogbSTN.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--c-primary-950:#1f0909;--c-primary-900:#2e0e0e;--c-primary:#441616;--c-primary-700:#5a1e1e;--c-primary-600:#6e2626;--c-secondary-800:#7a1c1c;--c-secondary:#a32626;--c-secondary-400:#c43d3d;--c-secondary-300:#d86565;--c-accent:#d8d6d6;--c-accent-70:#d8d6d6b3;--c-accent-45:#aaa6a6;--c-accent-15:#d8d6d626;--bg-center:#7b3735;--bg-mid:#5a1919;--bg-edge:#2b0a0a;--bg-mid-stop:42%;--bg-x:calc((var(--gutter) + var(--col-w) + 100vw) / 2);--bg-y:50vh;--bg-bleed:8vmax;--bg-motion-duration:26s;--bg-gradient:radial-gradient(circle farthest-corner at calc(var(--bg-x) + var(--bg-bleed)) calc(var(--bg-y) + var(--bg-bleed)), var(--bg-center) 0%, var(--bg-mid) var(--bg-mid-stop), var(--bg-edge) 100%);--font-primary:"Fairfax Hax HD", "Courier New", monospace;--font-secondary:"proxima-nova", "Proxima Nova", Helvetica, Arial, sans-serif;--fs-xs:.75rem;--fs-sm:.875rem;--fs-md:1rem;--fs-lg:1.25rem;--fs-xl:clamp(1.75rem, 3vw, 2.75rem);--fs-nav-title:.875rem;--fs-nav-title-mobile:clamp(.65rem, 3vw, .8rem);--nav-title-tracking:.1em;--fs-works-list:1.125rem;--works-num-scale:.72;--works-num-gap:2ch;--project-gap:0px;--project-max:1400px;--project-shadow:-24px 30px 90px 6px #0000008c, 0 0 160px 24px #00000038;--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--gutter:clamp(20px, 4.5vw, 72px);--nav-top:calc(clamp(20px, 3.5vw, 44px) + var(--safe-top));--nav-h:var(--nav-height,calc(var(--nav-top) + 1.5rem));--col-w:clamp(220px, 22vw, 340px);--ease:cubic-bezier(.2, .7, .2, 1)}@view-transition{navigation:auto}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:#571414}body{padding-left:var(--safe-left);padding-right:var(--safe-right);min-height:100dvh;color:var(--c-accent);font-family:var(--font-primary);font-size:var(--fs-md);-webkit-font-smoothing:antialiased;margin:0;line-height:1.5}a{color:inherit;text-decoration:none}body:before{content:"";inset:calc(var(--bg-bleed) * -1);z-index:-1;background:var(--bg-gradient);pointer-events:none;will-change:transform;animation:bg-drift var(--bg-motion-duration) ease-in-out infinite;position:fixed}@keyframes bg-drift{0%,to{transform:translate(0)scale(1)}25%{transform:translate(-1.6vw,1.2vh)scale(1.035)}50%{transform:translate(1.2vw,2vh)scale(1.015)}75%{transform:translate(1.8vw,-1.4vh)scale(1.045)}}@media (prefers-reduced-motion:reduce){body:before{animation:none}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}body>*{transition:opacity .35s var(--ease)}html.is-loading body>*{opacity:0}::selection{background:var(--c-secondary);color:var(--c-accent)}:focus-visible{outline:1px solid var(--c-accent);outline-offset:4px}.site-nav{z-index:20;padding:var(--nav-top) calc(var(--gutter) + var(--safe-right)) 0 calc(var(--gutter) + var(--safe-left));font-size:var(--fs-sm);letter-spacing:.04em;pointer-events:none;justify-content:space-between;align-items:baseline;gap:1rem;display:flex;position:fixed;inset:0 0 auto}.site-nav a{pointer-events:auto}.site-nav__home{font-size:var(--fs-nav-title);letter-spacing:var(--nav-title-tracking);white-space:nowrap;font-weight:400}.site-nav__links{text-transform:uppercase;gap:clamp(1rem,2.5vw,2.5rem);display:flex}.site-nav__links a{color:var(--c-accent-70);transition:color .2s}.site-nav__links a:hover,.site-nav__links a[aria-current=page]{color:var(--c-accent)}.site-nav__links a[aria-current=page]{text-underline-offset:.3em;text-decoration:underline;-webkit-text-decoration-color:var(--c-secondary-400);text-decoration-color:var(--c-secondary-400)}.lang-switch{color:var(--c-accent-45);pointer-events:auto;align-items:baseline;gap:.4ch;margin-right:clamp(1rem,3vw,3rem);display:flex}.lang-switch button{color:var(--c-accent-45);font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;background:0 0;border:0;padding:0;transition:color .2s}.lang-switch button:hover,.lang-switch button[aria-pressed=true]{color:var(--c-accent)}.site-footer{font-size:var(--fs-xs);color:var(--c-accent-45);letter-spacing:.04em}.site-footer p,[data-i18n="about.services.text"]{white-space:pre-line;margin:0}body[data-page=home]{overflow:hidden}.home{grid-template-columns:calc(var(--gutter) + var(--col-w)) 1fr;height:100dvh;display:grid}.works-col{padding:calc(var(--nav-h) + clamp(1.5rem, 4vw, 3.5rem)) 1.5rem calc(var(--gutter) * .6 + var(--safe-bottom)) var(--gutter);scrollbar-width:none;flex-direction:column;grid-area:1/1;display:flex;overflow-y:auto}.works-col .site-footer{margin-top:auto;padding-top:2rem}.works-list{font-size:var(--fs-works-list);margin:0;padding:0;list-style:none}.works-list a{align-items:baseline;gap:var(--works-num-gap);color:var(--c-accent-45);transition:color .2s, transform .3s var(--ease);padding:.3em 0;display:flex}.works-list__num{font-size:calc(var(--works-num-scale) * 1em);flex:none}.works-list a.is-active{color:var(--c-accent);transform:translate(.5ch)}@media (hover:hover){.works-list a:hover{color:var(--c-accent);transform:translate(.5ch)}}.works-list a.is-current{color:var(--c-accent)}.works-list a.is-current .works-list__num{color:var(--c-secondary-300)}.gallery{min-width:0;transition:opacity .4s var(--ease), visibility .4s;min-height:0;padding:calc(var(--nav-h) + 1rem) var(--gutter) calc(var(--nav-h) + 1rem) 1rem;grid-area:1/2;position:relative;overflow:hidden}.gallery canvas{touch-action:none;cursor:grab;outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}.gallery.is-dragging canvas{cursor:grabbing}.gallery.is-hovering canvas{cursor:pointer}.gallery__label{z-index:2;background:var(--c-accent);color:var(--c-primary);font-size:var(--fs-xs);white-space:nowrap;pointer-events:none;opacity:0;padding:.25em .6em;transition:opacity .15s;position:absolute;top:0;left:0}.gallery__label.is-visible{opacity:1}.gallery__hint{right:var(--gutter);bottom:calc(var(--gutter) * .6 + var(--safe-bottom));z-index:2;font-size:var(--fs-xs);color:var(--c-accent-45);text-transform:uppercase;letter-spacing:.06em;pointer-events:none;margin:0;position:absolute}.gallery__hint-touch{display:none}@media (hover:none){.gallery__hint-desktop{display:none}.gallery__hint-touch{display:inline}}.gallery__fallback{padding:var(--gutter);color:var(--c-accent-70);font-size:var(--fs-sm);text-align:center;place-items:center;display:grid;position:absolute;inset:0}.project-panel{z-index:30;padding:var(--gutter);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#1f0909d1;place-items:center;display:grid;position:fixed;inset:0}.project-panel[hidden]{display:none}.project-panel__box{border:1px solid var(--c-accent-15);background:var(--c-primary);width:min(520px,100%);padding:clamp(1.5rem,4vw,2.5rem)}.project-panel__meta{color:var(--c-accent-45);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;margin:0 0 .5rem}.project-panel__title{font-size:var(--fs-xl);margin:0 0 1rem;font-weight:400;line-height:1.1}.project-panel__text{font-family:var(--font-secondary);color:var(--c-accent-70);margin:0 0 1.5rem}.btn{appearance:none;border:1px solid var(--c-accent-45);color:var(--c-accent);font:inherit;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;cursor:pointer;background:0 0;padding:.6em 1.1em;transition:background .2s,color .2s}.btn:hover{background:var(--c-accent);color:var(--c-primary)}.page{grid-template-columns:var(--col-w) minmax(0, 1fr);min-height:100dvh;padding:calc(var(--nav-h) + clamp(3rem, 10vw, 8rem)) var(--gutter) var(--gutter);grid-template-rows:1fr auto;gap:1.5rem;display:grid}.page>.site-footer{padding-top:clamp(3rem,8vw,6rem);padding-bottom:var(--safe-bottom);grid-column:1/-1}.page__label{font-size:var(--fs-sm);color:var(--c-accent-45);text-transform:uppercase;letter-spacing:.06em;margin:0}.page__content{max-width:68ch}.page__title{white-space:pre-line;font-size:var(--fs-xl);margin:0 0 2rem;font-weight:400;line-height:1.1}.page__text{font-family:var(--font-secondary);font-weight:400;font-size:var(--fs-lg);color:var(--c-accent-70);line-height:1.55}.page__text p{margin:0 0 1.25em}.page__text strong{color:var(--c-accent);font-weight:400}.info-list{font-size:var(--fs-sm);grid-template-columns:max-content 1fr;gap:.75rem 2rem;margin:3rem 0 0;display:grid}.info-list dt{color:var(--c-accent-45);text-transform:uppercase;letter-spacing:.06em}.info-list dd{margin:0}.info-list--text{align-items:baseline;gap:1.75rem 3rem}.info-list--text dt{font-size:var(--fs-md)}.info-list--text dd{text-wrap:pretty;max-width:52ch;font-family:var(--font-secondary);font-weight:400;font-size:var(--fs-md);color:var(--c-accent-70);line-height:1.6}.info-list--text dd a{color:var(--c-accent)}.info-list__prose{text-wrap:pretty;-webkit-hyphens:manual;hyphens:manual;max-width:52ch}.info-list__prose p{margin:0}.info-list__prose .info-list__interests{color:var(--c-accent);margin-top:.6em}.skills{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.skills li{align-items:baseline;gap:1.25ch;display:flex}.skills__dots{font-family:var(--font-primary);font-size:var(--fs-lg);letter-spacing:.15em;color:var(--c-accent);line-height:1}.info-list a,.link{border-bottom:1px solid var(--c-secondary);transition:border-color .2s,color .2s}.info-list a:hover,.link:hover{border-color:var(--c-accent)}.contact-email{font-size:var(--fs-lg);border-bottom:1px solid var(--c-secondary);word-break:break-word;transition:border-color .2s;display:inline-block}.contact-email:hover{border-color:var(--c-accent)}.home.is-project .gallery{opacity:0;visibility:hidden;pointer-events:none}.project{overscroll-behavior:contain;pointer-events:none;min-width:0;height:100dvh;padding:calc(var(--nav-h) + clamp(1.5rem, 4vw, 3.5rem)) var(--gutter) var(--gutter) calc(var(--gutter) + var(--col-w) + 1rem);-webkit-mask-image:linear-gradient(transparent calc(var(--nav-h) - .5rem), #000 calc(var(--nav-h) + 1.5rem));-webkit-mask-image:linear-gradient(transparent calc(var(--nav-h) - .5rem), #000 calc(var(--nav-h) + 1.5rem));mask-image:linear-gradient(transparent calc(var(--nav-h) - .5rem), #000 calc(var(--nav-h) + 1.5rem));animation:project-in .9s var(--ease);transform-origin:60% 40%;grid-area:1/1/auto/-1;overflow-y:auto}.project[hidden]{display:none}@keyframes project-in{0%{opacity:0;transform:scale(1.05)}}.project__inner{max-width:var(--project-max);pointer-events:auto}.project__header{justify-content:space-between;align-items:flex-end;gap:1.25rem 2rem;margin-bottom:clamp(2rem,5vw,3.5rem);display:flex}.project__back{color:var(--c-accent-70);font:inherit;font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.06em;cursor:pointer;background:0 0;border:0;flex:none;padding:.5rem 0 .15rem .75rem;transition:color .2s}.project__back:hover{color:var(--c-accent)}.project__end{justify-content:flex-end;margin-top:clamp(2rem,5vw,3rem);display:flex}.project__meta{font-size:var(--fs-xs);flex-wrap:wrap;gap:.75rem 2.5rem;margin:0;display:flex}.project__meta dt{color:var(--c-accent-45);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.25rem}.project__meta dd{margin:0}.project__meta a{border-bottom:1px solid var(--c-secondary);transition:border-color .2s}.project__meta a:hover{border-color:var(--c-accent)}.project__blocks{gap:var(--project-gap);box-shadow:var(--project-shadow);animation:project-shadow 1.4s var(--ease) both;display:grid}@keyframes project-shadow{0%{box-shadow:0 0 #0000,0 0 #0000}}.project__block{margin:0;position:relative}.project__block.is-viewable:not(.project__block--video){cursor:zoom-in}.project__text{background:#0c0707;padding:clamp(2.5rem,7vw,5.5rem) clamp(1.5rem,7vw,6rem)}.project__text-title{font-family:var(--font-primary);font-weight:400;font-size:var(--fs-lg);letter-spacing:.1em;color:var(--c-accent);margin:0 0 1.5rem}.project__text-num{color:var(--c-secondary)}.project__text p{max-width:60ch;font-family:var(--font-secondary);font-weight:400;font-size:var(--fs-md);color:var(--c-accent-70);text-wrap:pretty;margin:0;line-height:1.7}.project__media{background:#0a0a0a;width:100%;height:auto;display:block}canvas.project__media{opacity:0;transition:opacity .5s var(--ease)}canvas.project__media.is-loaded{opacity:1}.project__expand{border:1px solid var(--c-accent-45);width:2.25rem;height:2.25rem;color:var(--c-accent);font:inherit;cursor:pointer;opacity:.75;background:#00000073;border-radius:50%;font-size:1rem;transition:opacity .2s,background .2s;position:absolute;top:.75rem;right:.75rem}.project__expand:hover{opacity:1;background:#000000b3}.is-protected canvas,.is-protected video,.is-protected img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none}html.has-lightbox,html.has-lightbox body{overflow:hidden}.lightbox{z-index:50;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;transition:opacity .35s var(--ease);background:#120505eb;position:fixed;inset:0}.lightbox.is-open{opacity:1}.lightbox:focus{outline:none}.lightbox__stage{perspective:1400px;touch-action:none;place-items:center;display:grid;position:absolute;inset:0;overflow:hidden}.lightbox__tilt{transform-style:preserve-3d;will-change:transform}.lightbox__zoom{transform-origin:50%;will-change:transform}.lightbox__media{cursor:zoom-in;background:#0a0a0a;display:block;box-shadow:0 40px 120px #000000a6}canvas.lightbox__media{opacity:0;transition:opacity .4s var(--ease)}.lightbox__media.is-loaded{opacity:1}.lightbox.is-zoomed .lightbox__media{cursor:grab}.lightbox.is-panning .lightbox__media{cursor:grabbing}.lightbox__close,.lightbox__nav,.lightbox__zoomctl button{color:var(--c-accent-70);font:inherit;cursor:pointer;background:0 0;border:0;transition:color .2s}.lightbox__close:hover,.lightbox__nav:hover,.lightbox__zoomctl button:hover{color:var(--c-accent)}.lightbox__close{top:var(--nav-top);right:calc(var(--gutter) + var(--safe-right));font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;position:absolute}.lightbox__nav{padding:1rem;font-size:1.5rem;position:absolute;top:50%;transform:translateY(-50%)}.lightbox__nav--prev{left:calc(var(--gutter) - 1rem + var(--safe-left))}.lightbox__nav--next{right:calc(var(--gutter) - 1rem + var(--safe-right))}.lightbox.is-single .lightbox__nav{display:none}.lightbox__bar{inset:auto calc(var(--gutter) + var(--safe-right)) calc(var(--gutter) * .5 + var(--safe-bottom)) calc(var(--gutter) + var(--safe-left));font-size:var(--fs-xs);color:var(--c-accent-70);pointer-events:none;justify-content:space-between;align-items:center;display:flex;position:absolute}.lightbox__bar>*{pointer-events:auto}.lightbox__count{margin:0}.lightbox__title{color:var(--c-accent-45);text-transform:uppercase;letter-spacing:.06em;margin-left:1.5ch}.lightbox__zoomctl{align-items:center;gap:.25rem;display:flex}.lightbox__zoomctl button{min-width:2rem;font-size:var(--fs-sm);padding:.4rem}.lightbox__zoomctl [data-zoom-reset]{min-width:4.5ch;font-size:var(--fs-xs)}.project__blocks,.project__end{transition:opacity .6s var(--ease)}.project.is-loading .project__blocks,.project.is-loading .project__end{opacity:0}.project__loader{left:var(--bg-x);z-index:5;align-items:baseline;gap:var(--works-num-gap);font-size:var(--fs-xl);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .35s var(--ease);display:flex;position:fixed;top:50vh;translate:-50% -50%}.project.show-loader .project__loader{opacity:1;transition-duration:.15s}.project__loader-num{font-size:calc(1em * var(--works-num-scale));color:var(--c-secondary-300)}.project__play{cursor:pointer;background:#0a0a0a;border:0;width:100%;height:100%;padding:0;display:block;position:relative}.project__play img{object-fit:cover;opacity:.85;width:100%;height:100%;transition:opacity .3s;display:block}.project__play:hover img{opacity:1}.project__play-icon{aspect-ratio:1;border:1px solid var(--c-accent-70);width:4.5rem;color:var(--c-accent);transition:background .3s, scale .3s var(--ease);background:#00000073;border-radius:50%;place-items:center;padding-left:.3rem;font-size:1.4rem;display:grid;position:absolute;top:50%;left:50%;translate:-50% -50%}.project__play:hover .project__play-icon{background:#000000b3;scale:1.06}.project__embed iframe{border:0;width:100%;height:100%;display:block}.project__pdf{border-bottom:1px solid var(--c-secondary);padding:1rem 0;display:inline-block}@media (width<=1024px){:root{--col-w:clamp(200px, 26vw, 260px)}}@media (width<=760px){:root{--bg-x:50vw;--bg-y:calc(clamp(340px, 125vw, 72svh) / 2);--fs-xs:.8125rem;--fs-sm:.9375rem;--nav-top:calc(34px + var(--safe-top))}.site-nav{flex-wrap:wrap;row-gap:1.9rem;padding-bottom:1rem;font-size:.9375rem}.site-nav:before{content:"";z-index:-1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:absolute;inset:0 0 -2.75rem;-webkit-mask-image:linear-gradient(#000 45%,#0000);mask-image:linear-gradient(#000 45%,#0000)}body[data-page=home]{overflow:auto}.home{grid-template-columns:1fr;height:auto}.site-nav__links{flex:1 0 100%}.lang-switch{order:2;margin-left:auto;margin-right:0}.site-nav__home{font-size:var(--fs-nav-title-mobile);text-align:center;white-space:nowrap;flex:1 0 100%}.gallery,.project{grid-area:auto/1}.home.is-project .gallery{display:none}.project{height:auto;padding:calc(var(--nav-h) + 2.25rem) var(--gutter) calc(2.5rem + var(--safe-bottom));--project-shadow:0 24px 60px 4px #00000080;order:-1;overflow:visible;-webkit-mask-image:none;mask-image:none}.lightbox__nav{font-size:1.25rem}.project__meta{font-size:var(--fs-md);gap:1rem 2rem}.project__meta dt{font-size:var(--fs-xs)}.project__back{font-size:var(--fs-md)}.project__end{margin-top:2.5rem}.gallery canvas{-webkit-mask-image:linear-gradient(#000 calc(100% - 6rem),#0000);mask-image:linear-gradient(#000 calc(100% - 6rem),#0000)}.project__loader{font-size:clamp(1.4rem,7vw,1.9rem);top:45vh}.gallery{height:clamp(340px,125vw,72svh);padding:1rem var(--gutter) 2.75rem;order:-1}.gallery__hint{left:var(--gutter);right:var(--gutter);text-align:center;bottom:1rem}.works-col{padding:4rem var(--gutter) var(--gutter);grid-row:auto;overflow:visible}.home.is-project .works-col{padding-top:1.5rem}.page{padding-top:calc(var(--nav-h) + 3.25rem);grid-template-rows:auto 1fr auto;grid-template-columns:1fr;row-gap:1rem}.page__title{margin-bottom:1.5rem}.info-list--text{gap:1.25rem}.info-list{grid-template-columns:minmax(5.5rem,max-content) 1fr;gap:1.25rem}.works-col .site-footer{padding-top:6.5rem;padding-bottom:calc(2.5rem + var(--safe-bottom));white-space:normal}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important}}
