@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Unbounded Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Unbounded Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/unbounded-cyrillic-wght-normal.C627f1f8.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Unbounded Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/unbounded-vietnamese-wght-normal.rat7GD3o.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Unbounded Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/unbounded-latin-ext-wght-normal.D6H-S6MW.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Unbounded Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/unbounded-latin-wght-normal.D5afBTBx.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:dark;--bg:#0b0b0b;--card:#161616;--card-hover:#1c1c1c;--line:#ffffff14;--line-strong:#ffffff2e;--text:#f5f5f5;--muted:#a3a3a3;--blue:#2533ff;--blue-light:#8c95ff;--radius:8px;--display:"Unbounded Variable", ui-sans-serif, system-ui, sans-serif;--sans:"Inter Variable", ui-sans-serif, system-ui, sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font:15px/1.5 var(--sans);letter-spacing:-.01em;-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,p,ul,figure,blockquote{margin:0;padding:0}ul{list-style:none}a{color:inherit}img{max-width:100%;height:auto;display:block}:focus-visible{outline:2px solid var(--blue-light);outline-offset:2px}.page{grid-template-columns:260px minmax(0,1fr);gap:56px;max-width:1240px;margin:0 auto;padding:56px 32px;display:grid}.intro{align-self:start;position:sticky;top:56px}.avatar{object-fit:cover;border-radius:50%;width:88px;height:88px;margin-bottom:20px}.intro h1{font:700 25px/1.15 var(--display);letter-spacing:-.03em;margin-bottom:14px}.intro p{color:var(--muted);margin-bottom:12px}.intro p a{color:var(--text);text-underline-offset:3px}.button{border-radius:var(--radius);color:#0b0b0b;text-align:center;background:#f5f5f5;margin:20px 0;padding:11px 18px;font-weight:600;text-decoration:none;transition:background .15s;display:block}.button:hover{background:#fff}.socials{flex-wrap:wrap;gap:6px 16px;font-size:13px;display:flex}.socials a{color:var(--muted);padding:2px 0;text-decoration:none}.socials a:hover{color:var(--text)}main{grid-template-columns:minmax(0,1fr);gap:clamp(88px,11vw,136px);min-width:0;display:grid}.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 32px;display:grid}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.card{border-radius:var(--radius);text-decoration:none;display:block}a.card:hover{border-color:var(--text)}.section-head{justify-content:space-between;margin-bottom:28px;display:flex}.section-head h2{font-size:15px;font-weight:600}.section-head span{color:var(--muted)}.card-head{justify-content:space-between;align-items:baseline;margin-bottom:16px;display:flex}.card-head h2{font-size:15px;font-weight:600}.card-head a{color:var(--muted);font-size:13px;text-decoration:none}.card-head a:hover{color:var(--text)}.chart-total{color:var(--muted);margin-bottom:24px;font-size:15px;font-weight:400}.chart-total strong{color:var(--text);letter-spacing:-.03em;font-size:22px;font-weight:700}.chart{gap:12px;display:flex}.ticks{height:220px;color:var(--muted);text-align:right;flex-direction:column;justify-content:space-between;min-width:30px;font-size:11px;line-height:1;display:flex}.bars{flex:1;gap:8px;min-width:0;display:flex}.bar-col{text-align:center;flex:1;min-width:0}.bar-track{background:repeating-linear-gradient(to bottom, var(--line) 0 1px, transparent 1px 110px);border-bottom:1px solid var(--line);align-items:flex-end;height:220px;display:flex;position:relative}.bar{transform-origin:bottom;background:#f5f5f5;border-radius:2px 2px 0 0;width:100%;position:relative}.bar.peak{background:var(--blue)}.bar-value{font-variant-numeric:tabular-nums;opacity:0;font-size:11px;transition:opacity .12s;position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%)}.bar-col:hover .bar-value,.bar.peak .bar-value{opacity:1}.bar-label{color:var(--muted);margin-top:8px;font-size:11px;display:block}@media (prefers-reduced-motion:no-preference){.bar{animation:.6s cubic-bezier(.2,.8,.2,1) both grow}@keyframes grow{0%{transform:scaleY(0)}}}.lead{grid-template-columns:minmax(0,1fr);gap:40px;min-width:0;display:grid}.clients-title{margin-bottom:20px;font-size:15px;font-weight:600}.clients{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000);mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000)}.clients-track{width:max-content;display:flex}.clients ul{flex:none;align-items:center;gap:64px;padding-right:64px;display:flex}.clients li{flex:none}.clients img{filter:brightness(0)invert();opacity:.55;width:auto;max-width:100%}.project{border-top:1px solid var(--line);border-radius:0;flex-direction:column;gap:10px;padding-top:16px;display:flex}.project-head{align-items:center;gap:10px;display:flex}.project-head img,.logo-letter{border-radius:8px;flex:none;width:32px;height:32px}.logo-letter{background:var(--blue);font:700 14px var(--display);place-items:center;display:grid}.project h3,.service h3{font-size:16px;font-weight:600}.project-head h3{min-width:0}.pill{color:var(--muted);white-space:nowrap;margin-left:auto;font-size:12px}.project p,.service p,.video p{color:var(--muted)}.tags{flex-wrap:wrap;gap:2px 12px;margin-top:auto;display:flex}.tags li{color:var(--muted);font-size:12px}.more{color:var(--blue-light);margin-top:auto;font-weight:500}.service{border-top:1px solid var(--line);border-radius:0;flex-direction:column;gap:10px;padding-top:16px;display:flex}.service .tags{padding-top:6px}.stack{border-top:1px solid var(--line);color:var(--muted);margin-top:24px;padding-top:16px;font-size:13px}.stack strong{color:var(--text);margin-right:8px;font-weight:600}.heatmap-scroll{padding-bottom:4px;overflow-x:auto}.heatmap{grid-template-rows:repeat(7,1fr);grid-auto-columns:minmax(10px,1fr);grid-auto-flow:column;gap:3px;min-width:680px;display:grid}.cell{aspect-ratio:1;background:#ffffff0f;border-radius:3px}.l1{background:#232a78}.l2{background:#2533ff}.l3{background:#6a75ff}.l4{background:#c5caff}.photo{grid-row:span 2;min-height:320px;padding:0;position:relative;overflow:hidden}.photo img{object-fit:cover;object-position:center 25%;width:100%;height:100%;position:absolute;inset:0}.photo-caption{background:#000000bf;border-radius:4px;padding:3px 8px;font-size:12px;position:absolute;bottom:12px;left:12px}.photo-caption strong{font-weight:600}.video h2{margin:14px 0 4px;font-size:16px;font-weight:600}.video-thumb{border-radius:var(--radius);display:block;position:relative;overflow:hidden}.video-thumb img{aspect-ratio:16/9;object-fit:cover;width:100%}.video-thumb:hover .play{background:#3f4bff}.video-player{aspect-ratio:16/9;border-radius:var(--radius);background:#000;border:0;width:min(1200px,100vw - 32px,177.778dvh - 256px);display:block}.video-note{color:var(--muted);margin-top:8px;font-size:12px}.video-box{background:0 0;border:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;overflow:hidden}.video-box[open]{place-items:center;display:grid}.video-box::backdrop{background:#000000e6}.video-box-close{border:1px solid var(--line-strong);width:44px;height:44px;color:var(--text);cursor:pointer;background:#00000080;border-radius:50%;font-size:22px;line-height:1;position:absolute;top:16px;right:16px}.video-box-close:hover{background:#ffffff24}.play{background:var(--blue);color:#fff;border-radius:50%;place-items:center;width:48px;height:48px;margin:auto;padding-left:3px;font-size:15px;display:grid;position:absolute;inset:0}.quote{flex-direction:column;justify-content:space-between;gap:24px;display:flex}.quote blockquote{letter-spacing:-.02em;font-size:20px;font-weight:500;line-height:1.35}.quote figcaption{color:var(--muted);font-size:13px}.quote figcaption strong{color:var(--text);font-weight:600;display:block}.contact{width:min(420px,100vw - 32px);color:var(--text);background:#050505;border:1px solid #ffffff12;border-radius:24px;padding:24px}.contact::backdrop{background:#000000b3}.contact h2{font:700 20px/1.2 var(--display);letter-spacing:-.03em;margin-bottom:6px}.contact p{color:var(--muted);margin-bottom:20px}.contact button{font:inherit;color:inherit;cursor:pointer}.contact-close{width:36px;height:36px;color:var(--muted);background:0 0;border:0;border-radius:50%;font-size:22px;line-height:1;position:absolute;top:12px;right:12px}.contact .contact-close:hover{color:var(--text);background:#ffffff12}.contact-copy{border:1px solid var(--line);text-align:left;background:#ffffff0d;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:12px 16px;font-weight:500;display:flex}.contact-copy:hover{border-color:var(--line-strong)}.contact-copy span{overflow-wrap:anywhere;min-width:0}.contact-copy small{color:#ffffffb3;flex:none;font-size:13px}.contact-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}.contact-links a{border-radius:var(--radius);color:#0b0b0b;text-align:center;background:#f5f5f5;padding:11px 12px;font-weight:600;text-decoration:none;transition:background .15s}.contact-links a:hover{background:#fff}.contact:focus{outline:0}.contact :focus-visible{outline:1px solid var(--muted);outline-offset:3px}.wizard,.wizard-back{position:relative}.wizard-step:not(.is-current){display:none}.contact .wizard-step h2{margin:2px 40px 18px 0}.wizard-card{backdrop-filter:blur(22px)saturate(1.4);background:#ffffff0d;border:1px solid #ffffff1a;border-radius:20px;overflow:hidden;box-shadow:inset 0 1px #ffffff14}.wizard-head{color:#ffffffb3;letter-spacing:.06em;text-transform:uppercase;font-variant-numeric:tabular-nums;justify-content:space-between;padding:12px 16px;font-size:11px;display:flex}.contact .wizard-option{border:0;border-top:1px solid var(--line);text-align:left;background:0 0;justify-content:space-between;width:100%;padding:13px 16px;font-weight:500;display:flex}.contact .wizard-option:hover,.contact .wizard-option.is-picked{background:#ffffff0d}.contact .wizard-option:focus-visible{outline-offset:-3px}.wizard-slider{border-top:1px solid var(--line);color:#ffffffb3;padding:12px 16px 4px;font-size:12px;display:block}.wizard-slider input{cursor:grab;-webkit-appearance:none;appearance:none;background:0 0;width:100%;height:28px;margin:4px 0 0;display:block}.wizard-slider input:active{cursor:grabbing}.wizard-slider input:focus-visible{outline-offset:0;border-radius:4px}.wizard-slider input::-webkit-slider-runnable-track{background:linear-gradient(to right, #f5f5f5 var(--fill,0%), #ffffff2e var(--fill,0%));border-radius:2px;height:4px}.wizard-slider input::-moz-range-track{background:linear-gradient(to right, #f5f5f5 var(--fill,0%), #ffffff2e var(--fill,0%));border-radius:2px;height:4px}.wizard-slider input::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;transition:transform var(--mid) var(--ease);background:#f5f5f5;border-radius:50%;margin-top:-8px;box-shadow:0 2px 8px #00000080}.wizard-slider input::-moz-range-thumb{width:20px;height:20px;transition:transform var(--mid) var(--ease);background:#f5f5f5;border:0;border-radius:50%;box-shadow:0 2px 8px #00000080}.wizard-slider input:hover::-webkit-slider-thumb,.wizard-slider input:active::-webkit-slider-thumb{transform:scale(1.15)}.wizard-slider input:hover::-moz-range-thumb,.wizard-slider input:active::-moz-range-thumb{transform:scale(1.15)}.contact .wizard-slider-use{font-variant-numeric:tabular-nums;border-top:0}.wizard-field{border-top:1px solid var(--line);color:#ffffffb3;padding:10px 16px;font-size:12px;display:block}.wizard-field:focus-within{background:#ffffff0d}.wizard-field input,.wizard-field textarea{width:100%;color:var(--text);font:16px/1.4 var(--sans);resize:none;background:0 0;border:0;margin-top:2px;padding:0;display:block}.wizard-field input:focus,.wizard-field textarea:focus{outline:0}.wizard-summary{grid-template-columns:auto minmax(0,1fr);margin:0;display:grid}.wizard-summary dt,.wizard-summary dd{border-top:1px solid var(--line);margin:0;padding:11px 16px}.wizard-summary dt{color:#ffffffb3;text-transform:capitalize;padding-right:0}.wizard-summary dd{text-align:right;font-weight:500}.wizard-card .contact-copy{border:0;border-top:1px solid var(--line);background:0 0;border-radius:0;padding:11px 16px}.wizard-card .contact-copy:hover{background:#ffffff0d}.contact-links{margin-top:12px}.contact .wizard-next{border-radius:var(--radius);color:#0b0b0b;background:#f5f5f5;border:0;width:100%;margin-top:12px;padding:11px 12px;font-weight:600}.contact .wizard-next:hover{background:#fff}.wizard-note{color:#ffffffb3;margin:12px 0 0;font-size:12px;line-height:1.5}.contact .wizard-back{color:#fffc;background:0 0;border:0;margin-top:16px;padding:2px 0;font-size:13px;display:block}.contact .wizard-back[hidden]{display:none}.contact .wizard-back:hover{color:var(--text)}footer{color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 24px;padding-top:8px;font-size:13px;display:flex}.footer-links{flex-wrap:wrap;gap:8px 20px;display:flex}footer a{text-decoration:none}footer a:hover{color:var(--text)}.wordmark{font:800 15px var(--display);color:var(--text)}@media (width<=960px){.page{grid-template-columns:minmax(0,1fr);gap:36px;padding:32px 16px}.intro{position:static}.grid-3{grid-template-columns:minmax(0,1fr)}.button{display:inline-block}}@media (width<=640px){.grid{grid-template-columns:minmax(0,1fr)}.bars{gap:3px}.ticks{display:none}.bar-label{letter-spacing:-.03em;font-size:9px}.bar-value{display:none}.bar.peak .bar-value{display:block}.photo{aspect-ratio:1}}:root{--ease:cubic-bezier(.22, 1, .36, 1);--spring:cubic-bezier(.34, 1.56, .64, 1);--fast:.24s;--mid:.46s;--slow:.86s}[hidden]{display:none!important}.card{position:relative}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}@keyframes settle{0%{opacity:0;transform:scale(.9)}}.intro>*{animation:rise var(--slow) var(--ease) backwards}.intro>:nth-child(2){animation-delay:60ms}.intro>:nth-child(3){animation-delay:.12s}.intro>:nth-child(4){animation-delay:.17s}.intro>:nth-child(5){animation-delay:.22s}.intro>:nth-child(6){animation-delay:.27s}.intro>.avatar{animation-name:settle}.chart-card{animation:rise var(--slow) var(--ease) 80ms backwards}.js [data-reveal]:not(.in){opacity:0}.js [data-reveal].in{animation:rise var(--slow) var(--ease) backwards}.roll{vertical-align:bottom;display:inline-grid;overflow:hidden}.roll>span{transition:transform var(--mid) var(--ease), opacity var(--mid) var(--ease);grid-area:1/1}.roll>span:last-child{opacity:0;transform:translateY(110%)}a:hover>.roll>span:first-child,a:focus-visible>.roll>span:first-child,.project:hover .roll>span:first-child,.project:focus-visible .roll>span:first-child{opacity:0;transform:translateY(-110%)}a:hover>.roll>span:last-child,a:focus-visible>.roll>span:last-child,.project:hover .roll>span:last-child,.project:focus-visible .roll>span:last-child{opacity:1;transform:none}.pill.roll{width:var(--pill-from,auto);flex:none;grid-template-columns:minmax(0,1fr);justify-items:end}.pill.roll>span{white-space:nowrap}.project:hover .pill.roll,.project:focus-visible .pill.roll{width:var(--pill-to,auto)}.project:hover .pill,.project:focus-visible .pill{color:var(--text)}.pill{transition:color var(--mid) var(--ease), width var(--mid) var(--ease)}.button{transition:background var(--fast), transform var(--mid) var(--ease)}.button:active{transition-duration:80ms;transform:scale(.98)}.link{text-decoration:none;position:relative}.link:after{content:"";transform-origin:100%;height:1px;transition:transform var(--mid) var(--ease);background:currentColor;position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.link:hover:after,.link:focus-visible:after{transform-origin:0;transform:scaleX(1)}.intro p .link:after{opacity:.4;transform:scaleX(1)}.intro p .link:hover:after{opacity:1}.external:before{content:"↗";opacity:0;transition:opacity var(--fast), transform var(--mid) var(--ease);margin-left:2px;font-size:.8em;position:absolute;top:-1px;left:100%;transform:translate(-3px,3px)}.external:hover:before,.external:focus-visible:before{opacity:1;transform:none}.card-head .external{margin-right:12px}a.card{transition:border-color var(--mid) var(--ease), opacity var(--mid) var(--ease), transform var(--mid) var(--ease)}a.card:active{transition-duration:80ms;transform:scale(.992)}.chart-card{background:radial-gradient(70% 90% at 75% 15%, var(--blue), transparent 70%), var(--bg);padding:24px;overflow:hidden}.plasma{opacity:0;width:100%;height:100%;transition:opacity var(--slow) var(--ease);position:absolute;inset:0}.plasma.is-on{opacity:1}.contact .plasma.is-on{opacity:.32}.chart-card>:not(.plasma),.project-cta>:not(.plasma){position:relative}.project-cta{border-radius:var(--radius);background:var(--bg);border-top:0;padding:16px;overflow:hidden}.project-cta p{color:#ffffffd9}.project-cta .more{color:#fff}.project-cta .slot{border-color:#ffffff80}.project-cta .slot:before,.project-cta .slot:after{background:#fff}.chart-card .chart-total,.chart-card .ticks,.chart-card .bar-label{color:#fffc}.chart-card .chart-total strong{color:#fff}.chart-card .bar{background:#ffffff6b}.chart-card .bar.peak,.chart-card.scrubbing .bar-col.on .bar{background:#fff}.chart-card .bar-track{background:repeating-linear-gradient(#ffffff29 0 1px,#0000 1px 110px);border-bottom-color:#ffffff29}.chart-total{font-variant-numeric:tabular-nums;align-items:baseline;gap:.4em;display:flex}.bar{animation-duration:.9s;animation-timing-function:var(--ease);animation-delay:calc(var(--i) * 50ms + .12s);transition:opacity var(--mid) var(--ease), background var(--fast)}.bar-label{transition:color var(--fast)}.bar-col{cursor:default}.bar-value{transition:opacity var(--fast)}.scrubbing .bar{opacity:.22}.scrubbing .bar-col.on .bar{opacity:1;background:var(--blue)}.scrubbing .bar-col.on .bar-label{color:var(--text)}.scrubbing .bar.peak .bar-value{opacity:0}.scrubbing .bar-col.on .bar-value,.bar-col:hover .bar-value{opacity:1}.work-head{align-items:center;gap:16px}.filters{display:none}.js .filters{margin-left:auto;display:flex;position:relative}.filters button{color:var(--muted);font:inherit;cursor:pointer;transition:color var(--fast);background:0 0;border:0;padding:3px 11px;font-size:12px;position:relative}.filters button:hover,.filters button[aria-pressed=true]{color:var(--text)}.filter-indicator{background:var(--text);height:1px;transition:transform .64s var(--ease), width .64s var(--ease);position:absolute;bottom:0;left:0}.work-count{text-align:right;font-variant-numeric:tabular-nums;min-width:1ch}.section-head span.work-count{color:var(--muted)}.dim{opacity:.28}.slot{border:1px solid var(--line-strong);border-radius:var(--radius);width:32px;height:32px;transition:background var(--mid) var(--ease), border-color var(--mid) var(--ease), transform var(--mid) var(--spring);flex:none;position:relative}.slot:before,.slot:after{content:"";background:var(--muted);width:12px;height:1.5px;transition:background var(--fast);margin:auto;position:absolute;inset:0}.slot:after{transform:rotate(90deg)}.project-cta:hover .slot{background:var(--blue);border-color:var(--blue);transform:rotate(90deg)}.project-cta:hover .slot:before,.project-cta:hover .slot:after{background:#fff}.arrow{transition:transform var(--mid) var(--ease);display:inline-block}a:hover .arrow{transform:translate(4px)}a:hover .arrow-up{transform:translateY(-4px)}.service .more{color:var(--muted);transition:color var(--fast);margin-top:2px;font-size:13px}.service:hover .more{color:var(--blue-light)}.service .tags{margin-top:0}.service p{flex:1}.service .tags li{transition:color var(--mid) var(--ease)}.service:hover .tags li{color:var(--text)}.service:hover .tags li:nth-child(2){transition-delay:40ms}.service:hover .tags li:nth-child(3){transition-delay:80ms}.service:hover .tags li:nth-child(4){transition-delay:.12s}.readout{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;margin-right:16px;font-size:13px}.heatmap-scroll{margin:-6px;padding:6px}.cell{transition:transform var(--mid) var(--ease), opacity .7s var(--ease);transition-delay:calc(var(--w) * 12ms)}.js [data-heatmap]:not(.in) .cell{opacity:0;transform:scale(.3)}.heatmap.settled .cell{transition-duration:.3s;transition-delay:0s}.heatmap.settled .cell:hover{z-index:1;outline:1px solid #ffffff80;transition-duration:90ms;position:relative;transform:scale(1.7)}@media (prefers-reduced-motion:no-preference){.clients-track{animation:80s linear infinite clients}.clients:hover .clients-track{animation-play-state:paused}@keyframes clients{to{transform:translate(-50%)}}}@media (prefers-reduced-motion:reduce){.clients{overflow-x:auto}.clients ul[aria-hidden]{display:none}}.clients img{transition:opacity var(--mid) var(--ease)}.clients li:hover img{opacity:1}.video-box::backdrop{animation:fade var(--mid) var(--ease)}.video-box-close{transition:transform var(--mid) var(--ease), background var(--fast)}.video-box-close:hover{transform:rotate(90deg)}.video-thumb img{transition:transform var(--slow) var(--ease), filter var(--slow) var(--ease)}.video-thumb:hover img,.video-thumb:focus-visible img{filter:brightness(1.15);transform:scale(1.04)}.play{white-space:nowrap;transition:width .6s var(--ease), background var(--fast);border-radius:999px;justify-content:flex-start;align-items:center;gap:0;padding:0 0 0 18px;display:flex;overflow:hidden}.play-icon{flex:none}.play-label{opacity:0;transition:opacity var(--fast), transform .6s var(--ease);margin-left:8px;font-size:13px;font-weight:600;transform:translate(-4px)}.video-thumb:hover .play,.video-thumb:focus-visible .play{width:118px}.video-thumb:hover .play-label,.video-thumb:focus-visible .play-label{opacity:1;transition-delay:60ms;transform:none}.word{transition:color .5s var(--ease);transition-delay:calc(var(--i) * 45ms + .2s)}.js .quote:not(.in) .word{color:#ffffff40}.contact::backdrop{animation:fade var(--mid) var(--ease)}@keyframes fade{0%{opacity:0}}.contact-close{transition:transform var(--mid) var(--ease), background var(--fast), color var(--fast)}.contact .contact-close:hover{transform:rotate(90deg)}.contact-copy{transition:border-color var(--fast), background var(--fast), transform var(--mid) var(--ease)}.contact-copy:hover{background:#ffffff14}.contact-copy:active,.contact-links a:active{transition-duration:80ms;transform:scale(.98)}.contact-copy small{font-variant-numeric:tabular-nums;display:inline-block}.contact-links a{transition:background var(--fast), transform var(--mid) var(--ease)}.wizard-next:active{transition-duration:80ms;transform:scale(.98)}.wizard-option span:first-child{transition:transform var(--mid) var(--ease)}.wizard-option:hover span:first-child,.wizard-option:focus-visible span:first-child{transform:translate(6px)}.wizard-option .arrow{opacity:.6;transition:opacity var(--fast), transform var(--mid) var(--ease)}.wizard-option:hover .arrow,.wizard-option:focus-visible .arrow,.wizard-option.is-picked .arrow{opacity:1;transform:translate(4px)}.wizard-next{transition:background var(--fast), transform var(--mid) var(--ease)}.wizard-back{transition:color var(--fast)}@media (width<=640px){.work-head{flex-wrap:wrap}.js .filters{order:3;justify-content:space-between;width:100%;margin-left:0}.work-count{margin-left:auto}.readout{margin-right:12px;font-size:12px}}@media (prefers-reduced-motion:reduce){*,:before,:after,::backdrop{transition-duration:1ms!important;transition-delay:0s!important;animation-duration:1ms!important;animation-delay:0s!important}}.digest-row{border-bottom:1px solid var(--line);grid-template-columns:96px minmax(0,1fr) auto;align-items:baseline;gap:16px;padding:16px 0;text-decoration:none;display:grid}.digest-row time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.digest-row h3{font-size:15px;font-weight:600}.digest-row p,.digest-row .arrow{color:var(--muted)}.digest-row:hover .arrow{color:var(--blue-light)}.empty{color:var(--muted)}.empty strong{color:var(--text);margin-bottom:2px;font-size:16px;font-weight:600;display:block}.viewfinder{text-align:center;place-content:center;min-height:280px;padding:40px 24px;display:grid}.corner{border:0 solid var(--line-strong);width:22px;height:22px;transition:transform var(--slow) var(--ease) .2s;position:absolute}.corner:first-child{border-width:1px 0 0 1px;top:20px;left:20px}.corner:nth-child(2){border-width:1px 1px 0 0;top:20px;right:20px}.corner:nth-child(3){border-width:0 0 1px 1px;bottom:20px;left:20px}.corner:nth-child(4){border-width:0 1px 1px 0;bottom:20px;right:20px}.js section:not(.in) .corner:first-child{transform:translate(-12px,-12px)}.js section:not(.in) .corner:nth-child(2){transform:translate(12px,-12px)}.js section:not(.in) .corner:nth-child(3){transform:translate(-12px,12px)}.js section:not(.in) .corner:nth-child(4){transform:translate(12px,12px)}.viewfinder h3{font:700 20px/1.2 var(--display);letter-spacing:-.03em;margin-bottom:6px}.viewfinder p{color:var(--muted)}.photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.photo-grid figure{border-radius:var(--radius);overflow:hidden}.photo-grid img{aspect-ratio:4/5;object-fit:cover;width:100%;height:100%}.article{max-width:660px;margin:0 auto;padding:56px 16px 96px;display:block}.back{color:var(--muted);margin-bottom:40px;font-size:13px;display:inline-block}.article time{color:var(--muted);font-size:13px}.article h1{font:700 clamp(26px, 5vw, 36px)/1.15 var(--display);letter-spacing:-.03em;margin:6px 0 32px}.prose{color:#d4d4d4;font-size:17px;line-height:1.65}.prose>*{margin:0 0 1.1em}.prose h2,.prose h3{color:var(--text);margin-top:1.8em;font-weight:600;line-height:1.25}.prose a{color:var(--blue-light);text-underline-offset:3px}.prose img{border-radius:12px}.prose ul,.prose ol{list-style:revert;padding-left:1.3em}@media (width<=640px){.digest-row{grid-template-columns:minmax(0,1fr) auto;gap:2px 12px}.digest-row time{grid-column:1/-1}.photo-grid{grid-template-columns:minmax(0,1fr)}}.login{place-items:center;min-height:100dvh;padding:16px;display:grid}.login form{gap:8px;width:min(360px,100%);padding:28px;display:grid}.login h1{font:700 22px/1.2 var(--display);letter-spacing:-.03em;margin-bottom:12px}.login label{color:var(--muted);font-size:13px}.login input,.editor-field input,.post-date,.post-body{border:1px solid var(--line-strong);width:100%;color:var(--text);font:inherit;background:#ffffff0d;border-radius:12px;padding:11px 14px}.login .button{width:100%;font:inherit;cursor:pointer;border:0;margin:10px 0 0;font-weight:600}.login-error{color:#ff9c9c;font-size:13px}.load-failed{text-align:center;background:#5c1f1f;padding:10px 16px}[data-edit]{cursor:text;outline-offset:3px;transition:outline-color var(--fast);border-radius:4px;outline:1px dashed #0000}[data-edit]:hover{outline-color:var(--line-strong)}[data-edit]:focus{outline:1px solid var(--blue-light)}.admin-bar{z-index:20;border:1px solid var(--line-strong);background:#1f1f1f;border-radius:16px;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;max-width:calc(100vw - 32px);padding:6px;font-size:13px;display:flex;position:fixed;bottom:16px;right:16px;box-shadow:0 12px 40px #00000080}.admin-status{color:var(--muted);padding:0 10px}.admin-status.is-error{color:#ff9c9c}.admin-bar form{display:contents}.admin-bar button,.edit-item,.editor-dialog button{color:var(--text);font:inherit;cursor:pointer;transition:background var(--fast);background:#ffffff14;border:0;border-radius:10px;padding:6px 11px;font-size:13px}.admin-bar button:hover,.edit-item:hover,.editor-dialog button:hover{background:#ffffff29}.admin-bar .danger,.editor-dialog .danger{color:#ff9c9c}.edit-item{z-index:2;background:#000000bf;position:absolute;bottom:10px;right:10px}.avatar-wrap{width:88px;margin-bottom:20px;position:relative}.avatar-wrap .avatar{margin-bottom:0}.avatar-wrap .edit-item{padding:3px 8px;font-size:11px;bottom:-6px;right:-6px}.photo .edit-item{top:10px;bottom:auto}.photo-grid figure{position:relative}.photo-grid figcaption{background:#000000bf;max-width:60%;padding:3px 8px;font-size:12px;position:absolute;bottom:10px;left:10px}.editor-dialog{background:var(--card);width:min(460px,100vw - 32px);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--radius);padding:24px}.editor-dialog::backdrop{background:#000000b3}.editor-dialog form{gap:14px;display:grid}.editor-dialog h2{font-size:18px;font-weight:600}.editor-field{color:var(--muted);gap:4px;font-size:13px;display:grid}.editor-field input{font-size:15px}.editor-tags{border:0;flex-wrap:wrap;gap:6px 14px;margin:0;padding:0;font-size:14px;display:flex}.editor-tags legend{color:var(--muted);margin-bottom:6px;padding:0;font-size:13px}.editor-check{align-items:center;gap:6px;display:flex}.editor-actions{justify-content:flex-end;gap:6px;display:flex}.editor-actions .danger{margin-right:auto}.editor-dialog .primary{background:var(--blue)}.editor-dialog .primary:hover{background:#3f4bff}.post-date{width:auto;padding:6px 10px;font-size:13px}.post-excerpt{color:var(--muted);margin:-16px 0 24px}.post-body{resize:vertical;min-height:50dvh;margin-bottom:80px;font-size:16px;line-height:1.6}.draft-badge{color:var(--blue-light);background:#8c95ff33;border-radius:999px;margin-left:8px;padding:1px 7px;font-size:11px;font-weight:500}
