:root{--bg: #181818;--card: #1e1e1e;--border: #353535;--muted: #868585;--b600: #404040;--radius: 1.625rem;--gap: 12px;--row: 26px}@media (min-width: 640px){:root{--row: 30px}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scrollbar-width:thin;scrollbar-color:#3a3a3a transparent;scrollbar-gutter:stable both-edges}html::-webkit-scrollbar{width:8px;height:8px}html::-webkit-scrollbar-thumb{background-color:#3a3a3a;background-clip:content-box;border:2px solid transparent;border-radius:9999px}body{min-height:100dvh;padding:16px;display:flex;align-items:center;justify-content:center;overflow-x:hidden;background-color:transparent;color:#fff;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-feature-settings:"cv02","cv03","cv04","cv11";font-size:1rem;line-height:1.5;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}html{background-color:#0b0b0b}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.9'/%3E%3C/svg%3E"),radial-gradient(130% 110% at var(--glow-x, 0%) var(--glow-y, 100%),#3a3a3a 0%,#222222 38%,#121212 70%,#080808 100%);background-size:240px 240px,auto;background-repeat:repeat,no-repeat;background-blend-mode:overlay,normal}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}img{display:block;max-width:100%}h1,h2,h3{font-size:inherit;font-weight:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.bento{width:100%;max-width:42rem;margin:0 auto;flex:1;display:grid;grid-template-columns:repeat(15,minmax(0,1fr));grid-auto-rows:var(--row);gap:var(--gap)}.bento.is-wide{max-width:min(1280px,100%)}.cell{grid-column:span var(--mc);grid-row:span var(--mr);border-radius:var(--radius);perspective:1000px;box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}@media (min-width: 640px){.cell{grid-column:span var(--c);grid-row:span var(--r);transition:transform .6s,box-shadow .6s,opacity .6s,color .6s;will-change:transform,opacity;--shadow-c: #1a1a1a;box-shadow:0 20px 25px -5px var(--shadow-c),0 8px 10px -6px var(--shadow-c)}}.card{width:100%;height:100%;background-color:var(--card);border:1px solid var(--border);border-radius:var(--radius);contain:paint;opacity:0;animation:scale-pop .8s cubic-bezier(.34,1.3,.64,1) both;animation-delay:calc(var(--i) * 70ms)}@keyframes scale-pop{0%{opacity:0;transform:scale(.5) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@keyframes reveal-up{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes float{0%,to{transform:translate(0)}50%{transform:translateY(-10px)}}.hero{display:flex;flex-direction:column;justify-content:center;padding:16px;font-weight:500;-webkit-user-select:none;user-select:none}.hero>*+*{margin-top:8px}.hero h1{font-size:1.875rem;line-height:1.2}.hero .role{min-height:32px}.hero .role p{color:var(--muted);font-size:1.25rem;line-height:1.4}.cursor{color:#fff;display:inline-block;transform:translateY(-2px);opacity:1;transition:opacity .5s ease-in-out}.cursor.blinking{animation:blink 1s infinite}@media (min-width: 640px){.hero{padding:32px}.hero h1{font-size:2.25rem;line-height:1.11}.hero .role p{font-size:1.5rem;line-height:1.33}}.avatar-wrap{position:relative;perspective:1200px;clip-path:inset(-1000% -1000% 0%);contain:layout;-webkit-font-smoothing:subpixel-antialiased}.flip{position:relative;width:100%;height:100%;cursor:pointer;transform-style:preserve-3d;transition:transform .6s;will-change:transform;outline:none}.flip.is-flipped{transform:rotateY(180deg)}.face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden}.face.front{z-index:2;transform:rotateY(0)}.face.back{transform:rotateY(180deg)}.avatar-img{position:absolute;bottom:0;height:94px;width:auto;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;image-rendering:auto;will-change:filter;transition:height .3s,transform .3s,filter .3s;transform:translateZ(1px) scale(1.01);transform-origin:bottom center}.front .avatar-img{right:10px}.back .avatar-img{left:50%;translate:-52% 0}@media (min-width: 640px){.avatar-img{height:146px}.front .avatar-img{right:16px}}@media (min-width: 768px){.avatar-wrap:hover .avatar-img{transform:scale(1.05);filter:drop-shadow(10px 10px 2px #000)}}.icon-link{display:flex;width:100%;height:100%;align-items:center;justify-content:center;padding:16px;outline:none;cursor:pointer}.icon-link .ico{width:56px;height:56px;color:#7a7a7a;transition:transform .5s,color .3s}.icon-link svg{width:100%;height:100%;display:block}@media (min-width: 640px){.icon-link .ico{width:48px;height:48px}.icon-link:hover .ico{transform:scale(1.1);color:#fff}}.card-title{color:var(--muted);font-weight:500;pointer-events:none;-webkit-user-select:none;user-select:none}@media (min-width: 640px){.card-title{transition:opacity .3s}.group:hover .card-title{opacity:.3}}.projects{display:flex;flex-direction:column;padding:16px}.projects .head{position:relative;z-index:10;display:flex;align-items:center;justify-content:space-between}.arrow-btn{position:relative;display:flex;width:36px;height:36px;align-items:center;justify-content:center;overflow:hidden;border-radius:9999px;border:1px solid var(--b600);background-color:var(--card);cursor:pointer}.arrow-btn .arrows{width:100%;display:flex;flex-direction:column;gap:4px;translate:-8px 11px}.arrow-btn svg{width:18px;height:18px;min-width:18px;min-height:18px;display:block}.arrow-btn .arrows svg:first-child{margin-left:auto}.thumbs{flex:1;display:flex;align-items:center;justify-content:center;translate:0 4px}.thumbs-box{position:relative;margin:0 auto;min-height:162px;width:100%;max-width:332px}.thumb-reveal{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;pointer-events:none;animation:reveal-up .5s cubic-bezier(.34,1.56,.64,1) forwards}.thumb-float{width:100%;height:100%;animation:float 3s ease-in-out infinite}.thumb{position:absolute;aspect-ratio:4 / 3;width:144px;border-radius:.5rem;object-fit:cover;-webkit-user-select:none;user-select:none;box-shadow:0 20px 25px -5px #000,0 8px 10px -6px #000;transform:translateZ(0);will-change:transform,opacity,translate;transition:transform 2s cubic-bezier(.23,1,.32,1),translate 2s cubic-bezier(.23,1,.32,1),opacity 2s cubic-bezier(.23,1,.32,1),box-shadow 2s cubic-bezier(.23,1,.32,1)}.thumb.l{left:8px;z-index:3;translate:0 64px;rotate:-10deg}.thumb.c{left:50%;z-index:2;translate:-50% 28px;rotate:2deg}.thumb.r{right:8px;z-index:1;translate:0 64px;rotate:10deg}@media (min-width: 640px){.projects{padding:24px 32px 16px}.arrow-btn{transition:background-color .25s}.arrow-btn:hover{background-color:var(--bg)}.arrow-btn:hover .arrows{translate:8px -11px;transition:translate .4s ease-in-out}.thumb{width:116px}.group:hover .thumb{box-shadow:0 10px 15px -3px #000,0 4px 6px -4px #000}.group:hover .thumb.l{translate:-12px 48px;transition-delay:.1s}.group:hover .thumb.c{translate:-50% 8px}.group:hover .thumb.r{translate:12px 48px;transition-delay:.2s}}.arrow-btn{color:inherit}.arrow-btn .close-x{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;opacity:0;transform:rotate(-90deg) scale(.6);transition:opacity .3s,transform .3s}.arrow-btn .close-x svg{width:18px;height:18px;margin:0}.projects.is-open .arrow-btn .arrows{opacity:0}.projects.is-open .arrow-btn .close-x{opacity:1;transform:none}.projects.is-open .card-title{opacity:1!important}.projects-panel{flex:1;margin-top:16px;opacity:0;transition:opacity .35s ease}.projects-panel[hidden]{display:none}.projects.is-open .projects-panel{opacity:1;transition:opacity .3s ease}.thumbs.is-leaving .thumb{transition:transform .5s cubic-bezier(.65,0,.35,1),opacity .4s ease;opacity:0}.thumbs.is-leaving .thumb.l{transform:translate(-150px,-60px) rotate(-22deg) scale(.7)}.thumbs.is-leaving .thumb.c{transform:translateY(-150px) scale(.6)}.thumbs.is-leaving .thumb.r{transform:translate(150px,-60px) rotate(22deg) scale(.7);transition-delay:.05s}.thumbs.is-leaving .thumb-float{animation-play-state:paused}.project-grid .project{opacity:0;transform:translateY(28px) scale(.96);transition:opacity .3s ease,transform .35s cubic-bezier(.65,0,.35,1);transition-delay:calc((3 - var(--k, 0)) * 40ms)}.projects-panel.is-in .project{opacity:1;transform:none;transition:opacity .5s ease,transform .75s cubic-bezier(.65,0,.35,1);transition-delay:calc(var(--k, 0) * 90ms)}.project-grid{display:grid;grid-template-columns:1fr;gap:12px}.project-grid[hidden]{display:none}@media (min-width: 640px){.project-grid{grid-template-columns:1fr 1fr;gap:16px}}.project{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:18px;overflow:hidden;background-color:var(--bg)}.project-media{position:relative;display:block;aspect-ratio:16 / 10;overflow:hidden;background-color:#111}a.project-media{cursor:pointer}.carousel{position:absolute;top:0;right:0;bottom:0;left:0}.slide{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;opacity:0;transform:scale(1.06);transition:opacity .9s ease,transform 5s ease-out;will-change:opacity,transform}.slide.is-active{opacity:1;transform:scale(1)}.slide .full{width:100%;height:100%;object-fit:cover;object-position:top}.slide-bg{position:absolute;top:-12%;right:-12%;bottom:-12%;left:-12%;width:124%;height:124%;max-width:none;object-fit:cover;filter:blur(18px) brightness(.45) saturate(1.2)}.phone,.sheet{position:absolute;left:50%;top:9%;height:112%;translate:-50% 0;overflow:hidden;background-color:#000;box-shadow:0 24px 48px -12px #000c}.phone{aspect-ratio:9 / 19.5;border-radius:22px;border:4px solid #2b2b2b}.sheet{aspect-ratio:1 / 1.414;border-radius:4px;background-color:#fff}.phone img,.sheet img{width:100%;height:100%;object-fit:cover;object-position:top}.project-info{padding:14px 16px 16px}.project-info h3{font-size:1rem;font-weight:500}.project-info h3 em{color:var(--muted);font-style:normal;font-weight:400;font-size:.875rem;margin-left:8px}.project-info p{color:var(--muted);font-size:.875rem;margin-top:4px}.project-link{display:inline-block;margin-top:10px;font-size:.875rem;font-weight:500;color:#fff;border-bottom:1px solid var(--b600);transition:border-color .25s}.project-link:hover{border-color:#fff}@media (min-width: 640px){a.project-media .slide .full,a.project-media .phone{transition:transform 5s ease-out,scale .6s ease}a.project-media:hover .slide.is-active .full{scale:1.03}}.cell.is-mini{display:flex;align-items:center;justify-content:center}.cell .card{transition:width .7s cubic-bezier(.65,0,.35,1),height .7s cubic-bezier(.65,0,.35,1),border-radius .7s cubic-bezier(.65,0,.35,1)}.cell.is-mini .card{width:30px;height:30px;border-radius:50%}.cell.is-mini .icon-link{padding:0}.icon-link .ico{transition:width .7s cubic-bezier(.65,0,.35,1),height .7s cubic-bezier(.65,0,.35,1),transform .5s,color .3s}.cell.is-mini .icon-link .ico{width:16px;height:16px}@media (max-width: 639px){.cell.is-mini .card{width:26px;height:26px}.cell.is-mini .icon-link .ico{width:14px;height:14px}}.cell.is-vanishing{transition:opacity .3s ease,transform .35s cubic-bezier(.65,0,.35,1);opacity:0;transform:scale(.85)}.hero h1{transition:font-size .7s cubic-bezier(.65,0,.35,1)}.hero{transition:padding .7s cubic-bezier(.65,0,.35,1)}.hero .role{transition:opacity .35s ease,max-height .7s cubic-bezier(.65,0,.35,1);max-height:60px;overflow:hidden}.cell.is-compact .hero{padding:0 24px;justify-content:center}.cell.is-compact .hero h1{font-size:1.375rem;line-height:1.2;white-space:nowrap}.cell.is-compact .hero .role{opacity:0;max-height:0;min-height:0;margin:0;pointer-events:none}.avatar-img{transition:height .7s cubic-bezier(.65,0,.35,1),transform .3s,filter .3s}.cell.is-compact .avatar-img{height:64px}.cell.is-compact .front .avatar-img{right:12px}@media (max-width: 639px){.cell.is-compact .hero{padding:0 16px}.cell.is-compact .hero h1{font-size:1.125rem}.cell.is-compact .avatar-img{height:56px}}.case-view{display:flex;flex-direction:column;gap:12px}.case-view[hidden]{display:none}.project-grid,.case-view{transition:opacity .4s cubic-bezier(.65,0,.35,1)}.project-grid.is-fading,.case-view.is-fading{opacity:0}.case-bar{display:flex;align-items:center;justify-content:space-between;gap:12px}.case-back{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px 0 10px;border-radius:999px;border:1px solid var(--b600);background-color:var(--bg);color:#fff;font-size:.8125rem;font-weight:500;transition:background-color .25s,border-color .25s}.case-back:hover{border-color:#666}.case-back svg{width:16px;height:16px}.case-title{color:var(--muted);font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.case-title strong{color:#fff;font-weight:500}.case-title .sep{margin:0 8px}.case-right{display:inline-flex;align-items:center;gap:12px}.case-full{color:var(--muted);font-size:.8125rem;white-space:nowrap;transition:color .25s}.case-full:hover{color:#fff}.case-site{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px 0 14px;border-radius:999px;background-color:#fff;color:#111;font-size:.8125rem;font-weight:500;white-space:nowrap;transition:background-color .25s}.case-site:hover{background-color:#e6e6e6}.case-site svg{width:15px;height:15px}.case-counter{color:var(--muted);font-size:.8125rem;font-variant-numeric:tabular-nums;letter-spacing:.08em}@media (max-width: 639px){.case-title{display:none}}.case-stage{position:relative;border-radius:18px;overflow:hidden;isolation:isolate}.case-stage:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.9'/%3E%3C/svg%3E"),radial-gradient(120% 100% at calc(6% + var(--progress, 0) * 88%) calc(100% - var(--progress, 0) * 86%),#474747,#262626,#161616 68%,#0e0e0e);background-size:240px 240px,auto;background-repeat:repeat,no-repeat;background-blend-mode:overlay,normal;animation:grain-shimmer 1.6s steps(1) infinite}@keyframes grain-shimmer{0%{background-position:0 0,0 0}20%{background-position:-70px 40px,0 0}40%{background-position:50px -60px,0 0}60%{background-position:-30px -90px,0 0}80%{background-position:90px 20px,0 0}to{background-position:0 0,0 0}}.case-scroller{position:relative;z-index:1;container:stage / inline-size;height:clamp(520px,78vh,760px);overflow-y:auto;scroll-snap-type:y mandatory;scroll-behavior:smooth;scrollbar-width:none;border-radius:18px;outline:none}.case-scroller::-webkit-scrollbar{display:none}.case-scroller.js-snap{scroll-snap-type:none;scroll-behavior:auto}.case-slide{--rel: 0;--dist: 0;min-height:100%;scroll-snap-align:start;scroll-snap-stop:always;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-auto-rows:auto;align-content:stretch;align-items:stretch;gap:10px;padding:10px 40px 10px 10px;opacity:calc(1 - var(--dist) * .55)}.c2{grid-column:span 2}.c3{grid-column:span 3}.c4{grid-column:span 4}.c6{grid-column:span 6}.cs-card{--depth: 28px;--fx: 0px;--fy: 60px;--frot: 0deg;--delay: 0ms;position:relative;container-type:inline-size;background-color:#181818d1;border:1px solid var(--border);border-radius:18px;padding:14px 16px;overflow:hidden;opacity:0;transform:translate(var(--fx),var(--fy)) rotate(var(--frot)) scale(.9);filter:blur(10px);translate:0 calc(var(--rel) * var(--depth));transition:transform .95s cubic-bezier(.65,0,.35,1) var(--delay),opacity .6s ease var(--delay),filter .8s ease var(--delay);will-change:transform,opacity,filter}.case-slide.in .cs-card{opacity:1;transform:none;filter:blur(0)}.cs-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;border-radius:inherit;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.9'/%3E%3C/svg%3E");background-size:200px 200px;mix-blend-mode:overlay;opacity:.32}.cs-card>*{position:relative}.cs-shot.wide img,.cs-shot.band img,.cs-shot.cs-phone img{position:absolute}.cs-title,.cs-cover{--depth: 12px}.cs-insight,.cs-lens,.cs-list{--depth: 46px}.cs-shot{--depth: 80px}.cs-shot.cs-phone{--depth: 110px}.cs-table,.cs-swatches,.cs-tabs{--depth: 34px}.cs-eyebrow{color:var(--muted);font-size:clamp(.625rem,1.4cqi,.8125rem);font-weight:500;letter-spacing:.14em;text-transform:uppercase;margin-bottom:.6em}.cs-title h3{font-size:clamp(1.25rem,3.4cqi,2.5rem);line-height:1.12;font-weight:500;letter-spacing:-.01em}.cs-cover h3{font-size:clamp(1.5rem,6.4cqi,3.5rem);line-height:1.08;font-weight:500;letter-spacing:-.015em}.cs-lede{color:var(--muted);font-size:clamp(.8125rem,1.6cqi,1.125rem);margin-top:.5em;max-width:64ch}.cs-cover .cs-lede{font-size:clamp(.875rem,2.3cqi,1.25rem)}.cs-insight,.cs-lens,.cs-list,.cs-title,.cs-outro,.cs-tabs,.cs-swatches{display:flex;flex-direction:column;justify-content:center}.cs-card h4{font-size:clamp(.8125rem,3.1cqi,1.1875rem);font-weight:500;margin-bottom:.4em}.cs-card p{font-size:clamp(.75rem,2.6cqi,1.0625rem);line-height:1.45;color:#c9c9c9}.cs-insight p,.cs-note,.cs-outro p{color:var(--muted)}.cs-note{margin-top:10px;font-size:clamp(.75rem,1.2cqi,.9375rem)}.cs-cover{display:flex;flex-direction:column;justify-content:center}.cs-chips{list-style:none;display:flex;flex-wrap:wrap;gap:5px;margin-top:12px}.cs-list{justify-content:flex-start}.cs-list h4{flex:none;font-size:clamp(.875rem,min(3.6cqh,4.2cqi),1.375rem);margin-bottom:.5em}.cs-list .cs-chips{flex:1 1 auto;min-height:0;display:flex;flex-wrap:wrap;align-content:space-evenly;align-items:center;gap:.45em .5em;margin-top:0;font-size:clamp(.8125rem,min(5.4cqh,6.2cqi),1.375rem)}.cs-list .cs-chips li{flex:0 0 auto;font-size:1em;padding:.42em .95em;border-radius:999px;transform-origin:center;transition:transform .5s cubic-bezier(.65,0,.35,1),background-color .45s ease,border-color .45s ease,color .45s ease}.cs-list .cs-chips li:hover{transform:translateY(-.18em) scale(1.08) rotate(var(--tilt, 3deg));background-color:#2b2b2b;border-color:#5c5c5c;color:#fff;z-index:1}@media (min-width: 640px){.cs-list{container-type:size}}@media (min-width: 640px) and (max-height: 820px){.cs-note{display:none}.cs-flow li{padding:6px 8px}.cs-list .cs-chips li{padding:.32em .8em}}@media (max-width: 639px){.cs-list .cs-chips{font-size:clamp(.6875rem,2.3cqi,.9375rem)}}.case-slide.in .cs-list .cs-chips li,.case-slide.in .cs-flow li{animation:var(--chip-anim, chip-rise) .7s cubic-bezier(.65,0,.35,1) backwards;animation-delay:calc(var(--delay, 0ms) + .32s + var(--j, 0) * 50ms)}.case-slide.in .cs-list .cs-chips li[style*=chip-pop],.case-slide.in .cs-flow li[style*=chip-pop]{animation-timing-function:cubic-bezier(.34,1.56,.64,1)}.case-slide:not(.in) .cs-list .cs-chips li,.case-slide:not(.in) .cs-flow li{opacity:0}@keyframes chip-rise{0%{opacity:0;transform:translateY(26px) scale(.9)}to{opacity:1;transform:none}}@keyframes chip-drop{0%{opacity:0;transform:translateY(-26px) scale(.9)}to{opacity:1;transform:none}}@keyframes chip-slide-l{0%{opacity:0;transform:translate(-46px)}to{opacity:1;transform:none}}@keyframes chip-slide-r{0%{opacity:0;transform:translate(46px)}to{opacity:1;transform:none}}@keyframes chip-spin{0%{opacity:0;transform:rotate(-28deg) scale(.55)}to{opacity:1;transform:none}}@keyframes chip-pop{0%{opacity:0;transform:scale(.25)}to{opacity:1;transform:none}}@keyframes chip-flip{0%{opacity:0;transform:perspective(400px) rotateX(90deg)}to{opacity:1;transform:none}}@keyframes chip-blur{0%{opacity:0;transform:scale(1.15);filter:blur(10px)}to{opacity:1;transform:none;filter:blur(0)}}.cs-chips li{transition:transform .5s cubic-bezier(.65,0,.35,1),background-color .45s ease,border-color .45s ease}.cs-chips li:hover{transform:translateY(-.15em) scale(1.05) rotate(var(--tilt, 2deg));background-color:#2b2b2b;border-color:#5c5c5c}.cs-chips li{padding:.3em .8em;border-radius:999px;border:1px solid var(--b600);background-color:var(--card);color:#ddd;font-size:clamp(.6875rem,2.3cqi,.9375rem)}.cs-chips a{color:#fff}.cs-byline{color:var(--muted);font-size:clamp(.8125rem,1.8cqi,1rem);margin-top:1.2em}.cs-shot{padding:0;background-color:#0f0f0f}.cs-shot img{width:100%;height:100%;object-fit:contain;object-position:center}.cs-shot.wide{aspect-ratio:16 / 10;min-height:0}.cs-shot.band{aspect-ratio:16 / 9;min-height:0}.cs-shot.wide img,.cs-shot.band img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;padding:34px 10px 10px;box-sizing:border-box}.cs-shot.band:after{content:"";position:absolute;left:0;right:0;bottom:0;height:5px;background-color:var(--tint)}.cs-shot.cs-phone{min-height:235px}.cs-shot.cs-phone.tall{min-height:340px}.cs-shot.cs-phone img{position:absolute;left:50%;top:50%;translate:-50% -50%;height:calc(100% - 52px);width:86%;max-width:420px;object-fit:contain;object-position:center;filter:drop-shadow(0 20px 30px rgba(0,0,0,.7));animation:cs-float 7s ease-in-out infinite}.cs-shot.cs-phone:nth-child(odd) img{animation-delay:-2.5s}.cs-shot.cs-phone:nth-child(3n) img{animation-duration:8.5s}@keyframes cs-float{0%,to{translate:-50% -50%}50%{translate:-50% calc(-50% - 7px)}}.cs-shot.cs-phone.framed img{border:3px solid #2b2b2b;border-radius:22px;background-color:#000;width:auto;max-width:86%}.cs-shot.cs-cycle img{transition:opacity 2s cubic-bezier(.65,0,.35,1),scale 2.4s cubic-bezier(.65,0,.35,1),filter .5s ease}.cs-cycle.wide img{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0}.cs-cycle.cs-phone img{opacity:0}.cs-shot.cs-cycle img.is-on{opacity:1;scale:1}.cs-shot.cs-cycle img:not(.is-on){pointer-events:none;scale:1.04}.cs-shot.cs-cycle:hover img.is-on{scale:1.05}.cs-cycle .cs-label{transition:opacity .35s ease,color .3s ease}.cs-cycle .cs-label.is-swapping{opacity:0}.cs-shot{cursor:zoom-in}.cs-shot img{transition:scale .7s cubic-bezier(.65,0,.35,1),filter .5s ease}.cs-shot:hover img{scale:1.05;filter:brightness(1.06)}.cs-shot.cs-phone:hover img{scale:1.04;animation-play-state:paused;filter:drop-shadow(0 20px 30px rgba(0,0,0,.7)) brightness(1.06)}.cs-shot:hover .cs-label{color:#fff}.case-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;cursor:zoom-out;background-color:#08080800;backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px);transition:background-color .6s ease,backdrop-filter .6s ease,-webkit-backdrop-filter .6s ease}.case-lightbox.on{background-color:#080808d6;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.case-lightbox img{position:fixed;object-fit:contain;background-color:#111;border-radius:14px;box-shadow:0 40px 90px -20px #000000e6;will-change:transform}html.lightbox-open{overflow:hidden}@media (hover: hover) and (pointer: fine){.case-view,.case-view *,.case-lightbox{cursor:none!important}}.case-cursor-dot,.case-cursor-ring{position:fixed;top:0;left:0;z-index:300;pointer-events:none;opacity:0;transition:opacity .25s ease;will-change:transform;mix-blend-mode:difference}.case-cursor-dot.on,.case-cursor-ring.on{opacity:1}.case-cursor-dot{width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background-color:#fff}.case-cursor-ring{width:0;height:0}.case-cursor-ring i{position:absolute;left:-18px;top:-18px;width:36px;height:36px;border-radius:50%;border:1.5px solid rgba(255,255,255,.9);background-color:#fff0;transition:transform .35s cubic-bezier(.65,0,.35,1),border-color .35s ease,background-color .35s ease}.case-cursor-ring.hot i{transform:scale(1.5);border-color:#ffffff73;background-color:#ffffff1a}.case-cursor-ring.press i{transform:scale(.8)}.case-cursor-ring.hot.press i{transform:scale(1.25)}@container stage (min-width: 820px){.cs-card{padding:22px 26px}.case-slide{gap:14px;padding:14px 44px 14px 14px}}.cs-label{position:absolute;top:10px;left:12px;z-index:1;color:var(--muted);font-size:clamp(.625rem,1.6cqi,.8125rem);font-weight:500;letter-spacing:.08em;text-transform:uppercase}.cs-shot.wide .cs-label,.cs-shot.band .cs-label{text-shadow:0 1px 2px rgba(0,0,0,.6);color:#ddd}.cs-flow{list-style:none;display:grid;grid-template-columns:repeat(5,1fr);gap:6px;counter-reset:step}.cs-flow li{padding:8px;border-radius:12px;border:1px solid var(--b600);background-color:var(--card);display:flex;flex-direction:column;gap:2px}.cs-flow li:before{counter-increment:step;content:counter(step,decimal-leading-zero);color:var(--muted);font-size:.625rem;letter-spacing:.1em}.cs-flow strong{font-size:clamp(.75rem,1.2cqi,.9375rem);font-weight:500}.cs-flow span{color:var(--muted);font-size:clamp(.6875rem,1cqi,.8125rem)}.cs-table{padding:6px 8px;overflow-x:auto}.cs-table table{width:100%;border-collapse:collapse;font-size:clamp(.75rem,1.25cqi,1rem)}.cs-table th,.cs-table td{text-align:left;vertical-align:top;padding:8px 10px;border-top:1px solid var(--border)}.cs-table thead th{border-top:0;color:var(--muted);font-weight:500;font-size:.625rem;letter-spacing:.1em;text-transform:uppercase}.cs-table tbody th{color:#fff;font-weight:500;white-space:nowrap}.cs-table td{color:var(--muted)}.cs-table .hi{color:#fff}.cs-table tbody td.hi{background-color:#ffffff08}.cs-swatches ul{list-style:none;display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-top:8px}.cs-swatches li{display:grid;grid-template-columns:22px 1fr;column-gap:8px;align-items:center}.cs-swatches i{grid-row:span 2;width:22px;height:22px;border-radius:6px;background-color:var(--sw);border:1px solid rgba(255,255,255,.08)}.cs-swatches strong{font-size:clamp(.75rem,1.2cqi,.9375rem);font-weight:500}.cs-swatches span{color:var(--muted);font-size:clamp(.6875rem,1cqi,.8125rem)}.cs-palette{padding:0;display:flex;flex-direction:column}.cs-palette>.cs-label{position:static;padding:12px 16px 10px}.cs-palette .hues{flex:1 1 auto;min-height:0;display:flex}.hue{position:relative;flex:1 1 0;min-width:0;display:grid;grid-template-columns:max-content minmax(0,1fr);grid-template-rows:1fr auto auto auto;align-content:end;column-gap:.6em;row-gap:.15em;padding:14px 14px 16px;border:0;background-color:var(--sw);color:var(--ink);text-align:left;cursor:pointer;overflow:hidden;outline:none;transition:flex-grow .7s cubic-bezier(.65,0,.35,1)}.hue:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.9'/%3E%3C/svg%3E");background-size:200px 200px;mix-blend-mode:overlay;opacity:.35;pointer-events:none}.hue>span{position:relative;display:block}.hue-name{grid-column:1;grid-row:2;align-self:baseline}.hue-hex{grid-column:2;grid-row:2;align-self:baseline;white-space:nowrap}.hue-role{grid-column:1 / -1;grid-row:3}.hue-note{grid-column:1 / -1;grid-row:4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.hue-name{font-weight:600;font-size:clamp(.8125rem,1.7cqi,1.375rem);line-height:1.1;white-space:nowrap}.hue-hex{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:clamp(.6875rem,1.1cqi,.9375rem);letter-spacing:.08em}.hue-role{font-size:clamp(.8125rem,1.35cqi,1.0625rem);font-weight:500;margin-top:.2em}.hue-note{font-size:clamp(.75rem,1.1cqi,.9375rem);line-height:1.35;max-width:32ch}.hue-hex,.hue-role,.hue-note{opacity:0;translate:0 10px;max-height:0;overflow:hidden;transition:opacity .4s ease,translate .55s cubic-bezier(.65,0,.35,1),max-height .55s cubic-bezier(.65,0,.35,1)}.hue:hover,.hue:focus-visible,.hue.is-open{flex-grow:3.4}.hue:hover .hue-role,.hue:focus-visible .hue-role,.hue.is-open .hue-role,.hue:hover .hue-note,.hue:focus-visible .hue-note,.hue.is-open .hue-note{opacity:1;translate:0 0;max-height:4.5em}.hue:hover .hue-hex,.hue:focus-visible .hue-hex,.hue.is-open .hue-hex{opacity:.85;translate:0 0;max-height:2em}.hue.is-copied .hue-hex:after{content:" · copied"}.hue-foot{padding:10px 16px 12px;color:var(--muted);font-size:clamp(.75rem,1.1cqi,.9375rem)}.case-slide.in .hue{animation:hue-in .6s cubic-bezier(.65,0,.35,1) backwards;animation-delay:calc(var(--delay, 0ms) + .26s + var(--j, 0) * 50ms)}.case-slide:not(.in) .hue{opacity:0}@keyframes hue-in{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:none}}@media (max-width: 639px){.cs-palette .hues{flex-direction:column}.hue{padding:10px 14px;justify-content:center}.hue-name{font-size:.9375rem}}.cs-tabs ul{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}.cs-tabs li{padding:.3em .8em;border-radius:999px;font-size:clamp(.6875rem,2.3cqi,.9375rem);font-weight:500;border:1px solid transparent;transform-origin:center;transition:transform .5s cubic-bezier(.65,0,.35,1),background-color .45s ease,border-color .45s ease,color .45s ease}.cs-tabs li.both{background-color:#9dff4d1f;border-color:#9dff4d59;color:#cfffa8}.cs-tabs li.main{background-color:#2f6df624;border-color:#2f6df666;color:#b9ccff}.cs-tabs li:hover{transform:translateY(-.18em) scale(1.08) rotate(var(--tilt, 3deg));z-index:1}.cs-tabs li.both:hover{background-color:#9dff4d47;border-color:#9dff4db3;color:#eaffd6}.cs-tabs li.main:hover{background-color:#2f6df652;border-color:#2f6df6cc;color:#e2ebff}.cs-legend{color:var(--muted);font-size:clamp(.75rem,1.8cqi,.9375rem)}.cs-legend i{display:inline-block;width:8px;height:8px;border-radius:999px;margin:0 5px 0 2px;vertical-align:middle}.cs-legend i.both{background-color:#9dff4d}.cs-legend i.main{background-color:#2f6df6}.cs-lens ul{list-style:none;display:flex;flex-direction:column;gap:8px}.cs-lens li{position:relative;padding-left:12px;color:var(--muted);font-size:clamp(.8125rem,2.9cqi,1.0625rem)}.cs-lens li:before{content:"";position:absolute;left:0;top:.55em;width:4px;height:4px;border-radius:999px;background-color:#fff;opacity:.6}.cs-outro{display:flex;flex-direction:column;justify-content:center}.cs-btn{display:inline-flex;align-items:center;justify-content:center;align-self:flex-start;margin-top:12px;height:2.8em;padding:0 1.1em;border-radius:.5rem;background-color:#fff;color:#111;font-size:clamp(.8125rem,2.2cqi,1rem);font-weight:500;transition:background-color .25s}.cs-btn:hover{background-color:#e6e6e6}.case-dots{position:absolute;right:10px;top:50%;translate:0 -50%;z-index:3;display:flex;flex-direction:column;gap:10px}.case-dots a{position:relative;display:block;width:8px;height:8px;border-radius:999px;background-color:#3a3a3a;transition:background-color .3s,transform .3s cubic-bezier(.65,0,.35,1)}.case-dots a:after{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px}.case-dots a:before{content:attr(data-title);position:absolute;right:20px;top:50%;translate:6px -50%;white-space:nowrap;padding:5px 11px;border-radius:999px;border:1px solid var(--border);background-color:#181818eb;color:#fff;font-size:.75rem;font-weight:500;letter-spacing:.02em;opacity:0;pointer-events:none;transition:opacity .25s ease,translate .35s cubic-bezier(.65,0,.35,1)}.case-dots a:hover{background-color:#8a8a8a;transform:scale(1.4)}.case-dots a:hover:before{opacity:1;translate:0 -50%}.case-dots a.is-active{background-color:#fff;transform:scale(1.5)}.case-hint{position:absolute;bottom:8px;left:50%;translate:-50% 0;color:var(--muted);font-size:.6875rem;letter-spacing:.12em;text-transform:uppercase;pointer-events:none;opacity:1;transition:opacity .4s;animation:hint-bob 1.8s ease-in-out infinite}.case-hint.is-done{opacity:0}@keyframes hint-bob{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}@media (min-width: 640px){.case-slide{height:100%;min-height:0;grid-template-rows:var(--rows, none)}.case-slide>.cs-card{min-height:0}.cs-shot.wide,.cs-shot.band{aspect-ratio:auto}.cs-shot.cs-phone,.cs-shot.cs-phone.tall{min-height:0}.cs-table,.cs-list{overflow:hidden}}@media (max-width: 639px){.case-scroller{height:clamp(460px,74vh,680px);scroll-snap-type:y proximity}.case-slide{grid-template-columns:1fr;padding-right:2px}.case-slide>*{grid-column:span 1!important}.cs-shot.cs-phone{min-height:260px}.cs-flow{grid-template-columns:repeat(2,1fr)}.cs-swatches ul{grid-template-columns:repeat(3,1fr)}.case-dots{display:none}}@media (prefers-reduced-motion: reduce){.case-scroller{scroll-behavior:auto}.cs-card{transition:none;opacity:1;transform:none;filter:none;translate:none}.cs-shot img{transition:none}.case-slide .cs-list .cs-chips li,.case-slide .cs-flow li,.case-slide .hue{animation:none;opacity:1}.hue{transition:none}.case-slide{opacity:1}.case-stage:before{animation:none}.cs-shot.cs-phone img,.case-hint{animation:none}}.canvas-card{position:relative}.canvas-card .touch-guard{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;background:#000;opacity:0;-webkit-user-select:none;user-select:none}.canvas-host{position:relative;width:100%;height:100%;padding:10px;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.canvas-host:active{cursor:grabbing}.canvas-host .card-title{position:absolute;top:20px;left:16px;z-index:1}.canvas-host canvas{display:block;width:100%;height:100%}@media (min-width: 640px){.canvas-card .touch-guard{display:none}.canvas-host .card-title{top:30px;left:32px}}.collab{display:flex;flex-direction:column;-webkit-user-select:none;user-select:none}.collab .text{position:relative;padding:16px 16px 0}.collab .text>*+*{margin-top:8px}.collab h3{font-size:1.875rem;line-height:1.2}.collab p{color:var(--muted)}.collab .foot{flex:1;display:flex;align-items:flex-end;margin-top:8px;padding:0 16px 16px;overflow-y:hidden}.contact-btn{position:relative;margin-top:20px;display:flex;height:64px;width:100%;align-items:center;justify-content:center;overflow:hidden;border-radius:.5rem;border:1px solid var(--b600);background-color:var(--card);padding:0 32px;white-space:nowrap;-webkit-user-select:none;user-select:none;cursor:pointer}.contact-btn .lbl{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.contact-btn .arr{position:absolute;top:0;right:-36px;display:flex;height:100%;align-items:center;justify-content:center;padding:0 8px;background-color:var(--b600)}.contact-btn .arr svg{width:20px;height:20px;display:block}@media (min-width: 640px){.collab .text{padding:24px 32px 0}.collab p{padding-right:48px}.collab .foot{padding:0 32px 24px}.contact-btn{height:48px;width:auto;max-width:fit-content;transition:background-color .3s;will-change:transform}.contact-btn:hover{background-color:var(--bg)}.contact-btn .lbl{transition:transform .3s}.contact-btn:hover .lbl{transform:translate(-16px)}.contact-btn .arr{transition:right .3s}.contact-btn:hover .arr{right:0}}@media (prefers-reduced-motion: reduce){.card,.thumb-reveal{animation-duration:.01ms;animation-delay:0ms}.thumb-float,.cursor.blinking{animation:none}.cell,.thumb,.contact-btn .lbl,.contact-btn .arr,.arrow-btn .arrows,.flip{transition:none}.project-grid .project{transition:none;opacity:1;transform:none}.thumbs.is-leaving .thumb{transition:none}}.resume{position:fixed;z-index:100;background-color:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;box-shadow:0 30px 60px -20px #000000b3;transition:top .65s cubic-bezier(.65,0,.35,1),left .65s cubic-bezier(.65,0,.35,1),width .65s cubic-bezier(.65,0,.35,1),height .65s cubic-bezier(.65,0,.35,1),border-radius .65s cubic-bezier(.65,0,.35,1)}.resume[hidden]{display:none}.resume.open{top:0!important;left:0!important;width:100%!important;height:100%!important;border-radius:0;border-color:transparent}.resume-inner{display:flex;flex-direction:column;height:100%;opacity:0;transition:opacity .25s ease}.resume.open .resume-inner{opacity:1;transition:opacity .35s ease .45s}.resume-bar{flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;border-bottom:1px solid var(--border);background-color:var(--card)}.resume-bar-title{color:var(--muted);font-weight:500;font-size:.9375rem}.resume-actions{display:flex;align-items:center;gap:8px}.resume-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:.5rem;border:1px solid var(--b600);background-color:var(--card);color:#fff;font-weight:500;font-size:.9375rem;white-space:nowrap;cursor:pointer;transition:background-color .25s,border-color .25s}.resume-btn:hover{background-color:var(--bg);border-color:#555}.resume-btn svg{width:18px;height:18px;display:block}.resume-download{background-color:#fff;color:#111;border-color:#fff}.resume-download:hover{background-color:#e6e6e6;border-color:#e6e6e6}.resume-close{width:40px;padding:0}.resume-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:32px 16px 48px}@media (min-width: 640px){.resume-scroll{padding:48px 24px 72px}}.resume-doc{max-width:760px;margin:0 auto;background-color:#f6f5f2;color:#1c1c1c;border-radius:12px;padding:36px 28px;box-shadow:0 20px 50px -20px #000c;font-size:.9375rem;line-height:1.55}@media (min-width: 640px){.resume-doc{padding:56px 64px}}.resume-doc h1{font-size:1.875rem;line-height:1.15;font-weight:500;letter-spacing:-.01em}.resume-doc h2{margin-top:32px;padding-bottom:6px;border-bottom:1px solid #d8d6d0;font-size:.8125rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:#6b6b6b}.resume-doc h3{font-size:1rem;font-weight:500}.resume-doc h4{font-size:.9375rem;font-weight:500;margin-top:12px}.resume-doc em{font-style:normal;color:#6b6b6b;font-weight:400}.resume-doc ul{padding-left:18px;margin-top:6px}.resume-doc li+li{margin-top:4px}.resume-doc a{color:inherit;text-decoration:underline;text-decoration-color:#b8b6b0;text-underline-offset:2px}.rd-date{color:#6b6b6b;font-size:.8125rem;letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px}.rd-role{color:#6b6b6b;font-size:1.125rem;margin-top:4px}.rd-summary{margin-top:16px}.rd-contact{list-style:none;padding:0;margin-top:16px;display:flex;flex-wrap:wrap;gap:6px 24px}.rd-contact li{display:flex;gap:8px}.rd-contact span{color:#6b6b6b}.rd-list{list-style:none;padding:0}.rd-list li+li{margin-top:6px}.rd-job{margin-top:20px}.rd-job-head{display:flex;flex-direction:column;gap:2px}@media (min-width: 640px){.rd-job-head{flex-direction:row;align-items:baseline;gap:16px}}.rd-years{flex:none;min-width:120px;color:#6b6b6b;font-variant-numeric:tabular-nums}.rd-sub{margin-top:10px;color:#6b6b6b}.rd-project{margin-left:0}@media (min-width: 640px){.rd-project{margin-left:136px}}html.resume-open{overflow:hidden;scrollbar-gutter:auto}@media (prefers-reduced-motion: reduce){.resume,.resume-inner{transition:none}}
