@font-face{font-family:redaction_bold;src:url(/fonts/Redaction-Bold.woff2)}@font-face{font-family:redaction_bold_10;src:url(/fonts/Redaction_10-Bold.woff2)}@font-face{font-family:redaction_bold_20;src:url(/fonts/Redaction_20-Bold.woff2)}@font-face{font-family:redaction_bold_35;src:url(/fonts/Redaction_35-Bold.woff2)}@font-face{font-family:redaction_bold_50;src:url(/fonts/Redaction_50-Bold.woff2)}@font-face{font-family:redaction_bold_70;src:url(/fonts/Redaction_70-Bold.woff2)}@font-face{font-family:redaction_bold_100;src:url(/fonts/Redaction_100-Bold.woff2)}:root{--gutter:4vw}html{-webkit-text-size-adjust:100%}body{color:#fff;background:#000;justify-content:center;align-items:end;height:100svh;margin:0;position:relative;overflow-x:clip}section{min-height:100svh}h1{color:#fff;letter-spacing:0;text-transform:uppercase;white-space:nowrap;margin:0;padding:0;font-family:neue-haas-grotesk-text,sans-serif;font-size:16.6667vw;font-style:normal;font-weight:900;line-height:.95}#intro{position:relative}#hi1,#hi2{position:absolute;bottom:0;left:0}#hi2{opacity:0}.char{text-align:center;display:inline-block;overflow:visible}p{color:#fff;font-family:neue-haas-grotesk-display,sans-serif;font-size:30px;font-style:normal;font-weight:400}#scroll-hint{color:#555;pointer-events:none;opacity:0;z-index:9999;letter-spacing:.02em;font-family:neue-haas-grotesk-display,sans-serif;font-size:16px;font-style:italic;font-weight:100;transition:opacity .6s;position:fixed;bottom:2rem;right:2rem}#scroll-hint.visible{opacity:1}#scroll-hint .hint-touch{display:none}a{color:#fff}.posts-section{min-height:auto;padding:clamp(6rem,12vh,12rem) 0 0}.posts-section-title{text-transform:uppercase;color:#fff;letter-spacing:-.02em;margin:0 0 4vh;padding:0;font-family:neue-haas-grotesk-text,sans-serif;font-size:clamp(1.5rem,3.5vw,3rem);font-style:normal;font-weight:900;line-height:1}.portfolio-grid{grid-template-columns:repeat(auto-fill,minmax(min(500px,100%),1fr));gap:2rem;display:grid}.portfolio-card{color:#fff;opacity:0;border-radius:4px;text-decoration:none;transition:opacity .6s,transform .6s;display:block;position:relative;overflow:hidden;transform:translateY(24px)}.portfolio-card--visible{opacity:1;transform:translateY(0)}.portfolio-card-media{aspect-ratio:16/9;background:#111;width:100%;position:relative;overflow:hidden}.portfolio-card-media:before{content:"";z-index:0;background:linear-gradient(90deg,#111 0%,#1c1c1c 50%,#111 100%) 0 0/200% 100%;transition:opacity .4s;animation:1.6s ease-in-out infinite card-shimmer;position:absolute;inset:0}.portfolio-card-media.img-loaded:before{opacity:0;pointer-events:none}@keyframes card-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.portfolio-card-video{object-fit:cover;z-index:1;opacity:0;width:100%;height:100%;transition:transform .6s,opacity .5s;position:relative}.portfolio-card-media.img-loaded .portfolio-card-video{opacity:.85}.portfolio-card-video--playing{transform:scale(1.02);opacity:1!important}.portfolio-card-overlay{z-index:2;background:linear-gradient(#0000 50%,#000000b3 100%);transition:opacity .4s;position:absolute;inset:0}.portfolio-card:hover .portfolio-card-overlay{opacity:.4}.portfolio-card-info{padding:1.25rem .25rem}.portfolio-card-title{margin-bottom:.6rem;font-family:neue-haas-grotesk-text,sans-serif;font-size:1.75rem;font-weight:700;line-height:1.2}.portfolio-card-description{color:#888;margin:0 0 1.1rem;font-family:neue-haas-grotesk-display,sans-serif;font-size:1.1rem;font-weight:400;line-height:1.6}.portfolio-card:hover .portfolio-card-cta{color:#000;background:#fff;border-color:#fff}@media (max-width:600px){.portfolio-grid{grid-template-columns:1fr}}.case-studies-section{min-height:auto;padding:12vh 4vw 10vh}.case-studies-title{text-transform:uppercase;color:#fff;letter-spacing:-.02em;margin:0 0 2.5vh;padding:0;font-family:neue-haas-grotesk-text,sans-serif;font-size:clamp(2.5rem,7vw,6rem);font-style:normal;font-weight:900;line-height:1}.case-studies-intro{color:#888;max-width:62ch;margin:0 0 10vh;font-family:neue-haas-grotesk-display,sans-serif;font-size:clamp(1.05rem,1.5vw,1.45rem);font-weight:400;line-height:1.65}.case-studies-list{flex-direction:column;gap:clamp(6rem,12vh,12rem);display:flex}.case-study-row{color:#fff;opacity:0;grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;gap:clamp(2rem,5vw,5rem);text-decoration:none;transition:opacity .7s,transform .7s;display:grid;transform:translateY(32px)}.case-study-row--visible{opacity:1;transform:translateY(0)}.case-study-row:nth-child(odd) .case-study-media{order:2}.case-study-media{aspect-ratio:4/3;background:#111;position:relative;overflow:hidden}.case-study-media:before{content:"";z-index:0;background:linear-gradient(90deg,#111 0%,#1c1c1c 50%,#111 100%) 0 0/200% 100%;transition:opacity .4s;animation:1.6s ease-in-out infinite card-shimmer;position:absolute;inset:0}.case-study-media.img-loaded:before{opacity:0;pointer-events:none}.case-study-media img{object-fit:cover;object-position:center top;z-index:1;opacity:0;width:100%;height:100%;transition:opacity .5s,transform .7s;position:relative}.case-study-media.img-loaded img{opacity:.85}.case-study-row:hover .case-study-media img{opacity:1;transform:scale(1.03)}.case-study-eyebrow{text-transform:uppercase;letter-spacing:.09em;color:#777;margin-bottom:1.75rem;font-family:monospace;font-size:.8rem}.case-study-eyebrow span{color:#444;padding:0 .35em}.case-study-headline{text-transform:uppercase;letter-spacing:-.015em;color:#fff;margin:0 0 2.25rem;font-family:neue-haas-grotesk-text,sans-serif;font-size:clamp(1.5rem,3vw,3rem);font-weight:900;line-height:1.05}.case-study-cta{text-transform:uppercase;letter-spacing:.09em;color:#fff;border:1px solid #333;padding:.95rem 1.5rem;font-family:monospace;font-size:.8rem;transition:background .25s,color .25s,border-color .25s;display:inline-block}.case-study-row:hover .case-study-cta{color:#000;background:#fff;border-color:#fff}@media (max-width:860px){.case-study-row{grid-template-columns:1fr;gap:2rem}.case-study-row:nth-child(odd) .case-study-media{order:0}.case-studies-intro{margin-bottom:7vh}}.skills-section{min-height:auto;padding:12vh 4vw 10vh;position:relative;overflow:hidden}.skills-section-title{text-transform:uppercase;color:#fff;letter-spacing:-.02em;margin:0 0 6vh;padding:0;font-family:neue-haas-grotesk-text,sans-serif;font-size:clamp(2.5rem,7vw,6rem);font-style:normal;font-weight:900;line-height:1}.skills-field{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:1.2rem 2rem;display:flex}.skill-tag{color:#fff;opacity:0;white-space:nowrap;letter-spacing:.03em;font-family:monospace;font-size:clamp(1rem,2.5vw,2rem)}.skill-ascii{color:#444;-webkit-user-select:none;user-select:none;font-size:clamp(.8rem,1.8vw,1.4rem)}.post-page{max-width:780px;min-height:100svh;margin:0 auto;padding:6vh 4vw 10vh}.post-back{color:#555;letter-spacing:.02em;min-height:44px;margin-bottom:2.5rem;padding:.9rem 1.2rem .9rem 0;font-family:neue-haas-grotesk-display,sans-serif;font-size:.9rem;font-weight:400;text-decoration:none;transition:color .2s;display:inline-block}@media (hover:hover){.post-back:hover{color:#fff}}.post-content h1,.post-content h2,.post-content h3{color:#fff;text-transform:none;letter-spacing:-.01em;margin:0 0 1rem;padding:0;font-family:neue-haas-grotesk-text,sans-serif;font-weight:700;line-height:1.15}.post-content h1{margin-bottom:2.5rem;font-size:clamp(2.2rem,5vw,3.8rem)}.post-content h2{margin-top:3.5rem;font-size:1.75rem}.post-content h3{margin-top:2.5rem;font-size:1.3rem}.post-content p{color:#ccc;margin:0 0 1.6rem;font-family:neue-haas-grotesk-display,sans-serif;font-size:1.25rem;font-weight:400;line-height:1.8}.post-content a{color:#fff;text-underline-offset:3px;text-decoration:underline}.post-content ul,.post-content ol{color:#ccc;margin:0 0 1.6rem;padding-left:1.5rem;font-family:neue-haas-grotesk-display,sans-serif;font-size:1.25rem;line-height:1.8}.post-content li{margin-bottom:.4rem}.post-content strong{color:#fff;font-weight:700}.post-content em{color:#aaa;font-style:italic}.post-content hr{border:none;border-top:1px solid #222;margin:3rem 0}.post-content code{color:#ccc;background:#111;border-radius:2px;padding:.15em .4em;font-family:monospace;font-size:.9rem}.post-content pre{background:#0d0d0d;border:1px solid #222;margin:0 0 1.4rem;padding:1.5rem;overflow-x:auto}.post-content pre code{background:0 0;padding:0}.post-content img{border-radius:4px;width:100%;height:auto;margin:0 0 1.6rem;display:block}.post-content iframe{aspect-ratio:16/9;border:none;border-radius:4px;width:100%;height:auto;margin:0 0 1.6rem;display:block}.site-footer{padding:12vh 4vw 10vh}.footer-heading{color:#fff;letter-spacing:-.02em;text-transform:uppercase;margin:0 0 3rem;padding:0;font-family:neue-haas-grotesk-text,sans-serif;font-size:clamp(2.5rem,7vw,6rem);font-weight:900;line-height:1}.footer-links{flex-direction:column;gap:1.1rem;margin:0;padding:0;list-style:none;display:flex}.footer-link{color:#fff;align-items:center;gap:1rem;min-height:48px;padding:.5rem 0;font-family:neue-haas-grotesk-display,sans-serif;font-size:1.3rem;font-weight:600;text-decoration:none;transition:opacity .2s;display:inline-flex}@media (hover:hover){.footer-link:hover{opacity:.6}}.footer-link svg{flex-shrink:0}#page-loader{z-index:99999;pointer-events:none;opacity:0;width:100%;height:2px;transition:opacity .15s;position:fixed;top:0;left:0;overflow:hidden}#page-loader.active{opacity:1}#page-loader:before,#page-loader:after{content:"";background:#fff;height:100%;animation:1.6s cubic-bezier(.4,0,.2,1) infinite loader-bar;position:absolute;top:0}#page-loader:after{animation-delay:.8s}@keyframes loader-bar{0%{left:0%;right:100%}30%{left:0%;right:35%}70%{left:35%;right:0%}to{left:100%;right:-5%}}@keyframes page-slide-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.page-enter-slide{animation:.5s backwards page-slide-in}.page-exit{opacity:0!important;transition:opacity .35s!important}.pixelate-canvas{z-index:3;width:100%;height:100%;image-rendering:pixelated;pointer-events:none;transition:opacity .25s;position:absolute;inset:0}.post-content .research-figure{margin:2.5rem 0 3rem}.post-content .research-figure img{background:#fff;width:auto;max-width:100%;max-height:78vh;margin:0 auto}.post-content .research-figure.narrow img{max-width:min(100%,560px)}.post-content .research-figure figcaption{letter-spacing:.02em;color:#777;margin-top:.9rem;font-family:monospace;font-size:.78rem;line-height:1.6}.post-content .research-stats{flex-wrap:wrap;gap:2.5rem;margin:2rem 0 2.5rem;display:flex}.post-content .research-stats div strong{color:#fff;font-family:neue-haas-grotesk-text,sans-serif;font-size:clamp(2rem,4vw,3rem);font-weight:900;line-height:1;display:block}.post-content .research-stats div span{text-transform:uppercase;letter-spacing:.08em;color:#777;margin-top:.4rem;font-family:monospace;font-size:.75rem;display:block}a{-webkit-tap-highlight-color:transparent}@media (hover:none){.portfolio-card:hover .portfolio-card-cta,.case-study-row:hover .case-study-cta{color:#fff;background:0 0;border-color:#333}.case-study-row:hover .case-study-media img{transform:none}.portfolio-card:active .portfolio-card-cta,.case-study-row:active .case-study-cta{color:#000;background:#fff;border-color:#fff}.portfolio-card-cta,.case-study-cta{min-height:44px}}.carousel-meta{display:none}a{touch-action:manipulation}@media (hover:none) and (pointer:coarse){#scroll-hint{left:50%;right:auto;bottom:calc(env(safe-area-inset-bottom) + 1.1rem);letter-spacing:.14em;text-transform:uppercase;color:#777;font-family:monospace;font-size:.72rem;font-style:normal;font-weight:400;transform:translate(-50%)}#scroll-hint .hint-pointer{display:none}#scroll-hint .hint-touch{flex-direction:column;align-items:center;gap:.35rem;display:flex}#scroll-hint .hint-touch:before{content:"↑";font-size:1rem;animation:1.6s ease-in-out infinite hint-bob}.portfolio-card-media,.case-study-media{transition:transform .25s}.portfolio-card:active .portfolio-card-media,.case-study-row:active .case-study-media{transform:scale(.975)}}@keyframes hint-bob{0%,to{opacity:.6;transform:translateY(0)}50%{opacity:1;transform:translateY(-5px)}}@media (max-width:760px){:root{--gutter:20px}h1{font-size:calc((100vw - 2*var(--gutter))/5.3)}#hi1,#hi2{left:calc(var(--gutter) + env(safe-area-inset-left));bottom:calc(env(safe-area-inset-bottom) + 5.5rem)}.case-studies-section,.skills-section,.site-footer{padding-left:calc(var(--gutter) + env(safe-area-inset-left));padding-right:calc(var(--gutter) + env(safe-area-inset-right))}.case-studies-section{padding-top:4.5rem;padding-bottom:5rem}.case-studies-list{gap:4.5rem}.case-study-row{gap:1.5rem}.case-study-media{margin:0 calc(-1*var(--gutter))}.case-study-headline{margin-bottom:1.5rem;font-size:1.75rem;line-height:1.02}.case-study-cta{box-sizing:border-box;justify-content:space-between;align-items:center;width:100%;min-height:52px;padding:0 1.1rem;display:flex}.case-study-cta:after{content:"→";font-size:1rem}.posts-section{padding-top:4.5rem}.portfolio-grid{overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);padding:0 var(--gutter)2px;margin:0 calc(-1*var(--gutter));scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:12px;display:flex;overflow-x:auto}.portfolio-grid::-webkit-scrollbar{display:none}.portfolio-grid:after{content:"";flex:0 0 calc(var(--gutter) - 12px)}.portfolio-card{scroll-snap-align:start;opacity:1;background:#0c0c0c;border:1px solid #1d1d1d;border-radius:14px;flex-direction:column;flex:0 0 84%;display:flex;transform:none}.portfolio-card-media{aspect-ratio:4/3}.portfolio-card-info{flex-direction:column;flex:1;padding:1rem 1rem 1.1rem;display:flex}.portfolio-card-title{margin-bottom:.45rem;font-size:1.3rem}.portfolio-card-description{-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-bottom:1.1rem;font-size:.95rem;line-height:1.5;display:-webkit-box;overflow:hidden}.portfolio-card .portfolio-card-cta{min-height:46px;margin-top:auto}.carousel-meta{letter-spacing:.08em;color:#777;align-items:center;gap:14px;margin-top:1.1rem;font-family:monospace;font-size:.75rem;display:flex}.carousel-count{font-variant-numeric:tabular-nums}.carousel-track{background:#222;flex:1;height:2px;position:relative;overflow:hidden}.carousel-thumb{transform-origin:0;background:#fff;transition:transform .3s;position:absolute;inset:0}.skills-section{padding-top:4rem;padding-bottom:4rem}.skill-repeat{display:none}.skills-field{gap:.9rem 1.4rem}.skill-tag{font-size:1rem}.skill-ascii{font-size:.8rem}.skills-section-title,.footer-heading{margin-bottom:2rem;font-size:2.75rem}.site-footer{padding-top:4rem;padding-bottom:calc(4rem + env(safe-area-inset-bottom))}.footer-links{grid-template-columns:1fr 1fr;gap:10px;display:grid}.footer-link{box-sizing:border-box;border:1px solid #222;border-radius:14px;flex-direction:column;justify-content:space-between;align-items:flex-start;gap:1.5rem;width:100%;min-height:108px;padding:16px;font-size:1rem;transition:background .2s;display:flex}.footer-link:active{background:#141414}.post-page{padding:calc(env(safe-area-inset-top) + 2rem)calc(var(--gutter) + env(safe-area-inset-right))calc(7rem + env(safe-area-inset-bottom))calc(var(--gutter) + env(safe-area-inset-left))}.post-back{z-index:50;left:calc(var(--gutter) + env(safe-area-inset-left));bottom:calc(1rem + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(14px)saturate(1.4);backdrop-filter:blur(14px)saturate(1.4);color:#fff;background:#121212b8;border:1px solid #ffffff1a;border-radius:999px;align-items:center;height:48px;min-height:0;margin:0;padding:0 1.2rem;font-size:.95rem;animation:.4s .45s backwards pill-in;display:flex;position:fixed}.post-back:active{background:#282828d9}.post-content h1{margin-bottom:1.75rem;font-size:2.4rem}.post-content h2{margin-top:3rem;font-size:1.5rem}.post-content h3{font-size:1.15rem}.post-content p,.post-content ul,.post-content ol{font-size:1.125rem;line-height:1.7}.post-content img,.post-content iframe,.post-content .research-figure img,.post-content .research-figure.narrow img{width:calc(100% + 2*var(--gutter));max-width:none;max-height:none;margin-left:calc(-1*var(--gutter));margin-right:calc(-1*var(--gutter));border-radius:0}.post-content .research-figure{margin:2rem 0 2.5rem}.post-content .research-stats{border-top:1px solid #222;margin:1.75rem 0 2.25rem;display:block}.post-content .research-stats div{border-bottom:1px solid #222;justify-content:space-between;align-items:baseline;gap:1rem;padding:1rem 0;display:flex}.post-content .research-stats div strong{flex-shrink:0;font-size:2rem}.post-content .research-stats div span{text-align:right;max-width:55%;margin:0;line-height:1.5}}@media (max-height:520px) and (orientation:landscape){h1{font-size:26svh}#hi1,#hi2{left:calc(var(--gutter) + env(safe-area-inset-left));bottom:calc(env(safe-area-inset-bottom) + 3.5rem)}}@media (hover:none){.portfolio-card-video--playing{transform:none}}@keyframes pill-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.portfolio-card,.case-study-row{opacity:1;transition:none;transform:none}#scroll-hint .hint-touch:before,.post-back{animation:none}}
