:root{--ink:#212529;--muted:#6b6b6b;--bg:#fff;--surface:#f5f5f5;--border:#ebebeb;--accent:#07c;--ink-rgb:33, 37, 41;--nav-bg:#ffffffdb;--control-bg:#ffffffeb;--device-bezel:#212529;--shadow-card:0 10px 28px #2125290f;--shadow-device:0 24px 60px #21252938;--shadow-device-sm:0 18px 40px #2125292e;--shadow-control:0 2px 12px #2125291f;--mark-filter:none;--logo-filter:grayscale(1);--logo-filter-hover:grayscale(0);--sans:Inter, "Inter Placeholder", system-ui, sans-serif;--device-corner:17% / 8.4%;--nav-h:72px;font:16px/1.75 var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--ink);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root[data-theme=dark],.app--article{--ink:#f4f4f2;--muted:#9b9ba1;--bg:#0d0d0e;--surface:#18181a;--border:#2a2a2d;--accent:#4da3ff;--ink-rgb:244, 244, 242;--nav-bg:#0d0d0ee0;--control-bg:#18181aeb;--device-bezel:#35353a;--shadow-card:0 10px 28px #00000080;--shadow-device:0 24px 60px #000000b8;--shadow-device-sm:0 18px 40px #0000009e;--shadow-control:0 2px 12px #00000080;--mark-filter:invert(1);--logo-filter:grayscale(1) invert(1);--logo-filter-hover:grayscale(1) invert(1);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{margin:0}html{scroll-behavior:smooth}#root{flex-direction:column;width:100%;min-height:100svh;display:flex}h1,h2,h3{color:var(--ink);margin:0}h1{letter-spacing:-.02em;font-size:clamp(32px,4.3vw,52px);font-weight:500;line-height:1.4}p{margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}::selection{background:#0099ff2e}.app{text-align:left;flex-direction:column;min-height:100vh;display:flex}.shell{width:min(886px,100% - 48px);margin:0 auto}.site-nav{z-index:20;background:var(--nav-bg);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid #0000;position:sticky;top:0}.site-nav-shell{justify-content:space-between;align-items:center;width:min(886px,100% - 48px);margin:0 auto;padding:20px 0;display:flex}.site-nav-brand{height:32px;color:var(--ink);align-items:center;gap:8px;font-size:16px;font-weight:600;line-height:1;display:inline-flex}.site-nav-brand:hover{text-decoration:none}.site-nav-brand img{width:34px;height:34px;filter:var(--mark-filter);display:block}.site-nav-end{align-items:center;gap:24px;display:flex}.site-nav-links{gap:28px;display:flex}.site-nav-links a{color:var(--muted);font-size:15px;transition:color .16s}.site-nav-links a:hover{color:var(--ink);text-decoration:none}.theme-toggle{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:0;flex:none;place-items:center;padding:0;transition:color .16s;display:grid}.theme-toggle:hover,.theme-toggle:focus-visible{color:var(--ink)}.theme-toggle svg{stroke:currentColor;stroke-width:2px;width:18px;height:18px}.theme-toggle svg circle{fill:none}.theme-toggle-half{fill:currentColor;stroke:none;transition:opacity .32s}.theme-toggle-half--end,.theme-toggle--dark .theme-toggle-half--start{opacity:0}.theme-toggle--dark .theme-toggle-half--end{opacity:1}@media (prefers-reduced-motion:reduce){.theme-toggle-half{transition:none}}.site-nav-menu-toggle{width:32px;height:32px;color:var(--muted);cursor:pointer;background:0 0;border:0;flex:none;place-items:center;padding:0;transition:color .16s;display:none}.site-nav-menu-toggle:hover,.site-nav-menu-toggle:focus-visible{color:var(--ink)}.site-nav-menu-icon{gap:5px;width:22px;display:grid}.site-nav-menu-icon span{background:currentColor;border-radius:1.5px;height:3px;transition:transform .26s,opacity .16s;display:block}.site-nav-menu-icon span:nth-child(2){width:60%;margin-left:auto}.site-nav--menu-open .site-nav-menu-icon span:first-child{transform:translateY(8px)rotate(45deg)}.site-nav--menu-open .site-nav-menu-icon span:nth-child(2){opacity:0}.site-nav--menu-open .site-nav-menu-icon span:nth-child(3){transform:translateY(-8px)rotate(-45deg)}.site-nav-menu{z-index:19;padding:calc(var(--nav-h) + 20px) 0 40px;background:var(--bg);visibility:hidden;flex-direction:column;justify-content:space-between;transition:transform .32s cubic-bezier(.22,.61,.36,1),visibility 0s linear .32s;display:none;position:fixed;inset:0;transform:translateY(-100%)}.site-nav-menu.is-open{visibility:visible;transition:transform .32s cubic-bezier(.22,.61,.36,1),visibility;transform:translateY(0)}.site-nav-menu-links{flex-direction:column;width:min(886px,100% - 48px);margin:0 auto;display:flex;overflow-y:auto}.site-nav-menu-links a{color:var(--ink);letter-spacing:-.03em;padding:14px 0;font-size:clamp(32px,9vw,40px);font-weight:500;line-height:1.15}.site-nav-menu-links a:hover,.site-nav-menu-links a:focus-visible{text-decoration:none}.site-nav-menu-links a:after{content:"";background:var(--border);width:56px;height:1px;margin-top:14px;transition:width .26s,background .2s;display:block}.site-nav-menu-links a:hover:after,.site-nav-menu-links a:focus-visible:after,.site-nav-menu-links a[aria-current=page]:after{background:var(--ink);width:100%}.site-nav-menu-footer{width:min(886px,100% - 48px);margin:0 auto;padding-top:32px}.site-nav-menu-email{color:var(--ink);letter-spacing:-.01em;font-size:24px;font-weight:500;display:inline-block}.site-nav-menu-socials{flex-wrap:wrap;gap:8px 20px;margin:16px 0 0;padding:0;font-size:15px;list-style:none;display:flex}.site-nav-menu-socials a{color:var(--muted);transition:color .16s}.site-nav-menu-socials a:hover,.site-nav-menu-socials a:focus-visible{color:var(--ink);text-decoration:none}@media (prefers-reduced-motion:reduce){.site-nav-menu,.site-nav-menu.is-open,.site-nav-menu-icon span,.site-nav-menu-links a:after{transition:none}}.hero{padding:clamp(72px,12vw,140px) 0 clamp(56px,8vw,96px)}.hero-layout{grid-template-columns:620px minmax(180px,300px);justify-content:space-between;align-items:start;gap:clamp(24px,3vw,32px);width:min(960px,100% - 48px);display:grid}.hero-copy{width:100%;min-width:0;max-width:620px}.hero-avatar{background:var(--surface);border-radius:50%;width:72px;height:72px;margin-bottom:32px;overflow:hidden}.hero-avatar img{object-fit:cover;width:100%;height:100%}.hero-heading{max-width:620px}.hero-heading-muted{color:var(--muted);display:block}.hero-meta{max-width:541px;color:var(--ink);flex-wrap:wrap;align-items:center;gap:4px 12px;margin-top:24px;font-size:18px;line-height:1.8;display:flex}.hero-meta-logo{align-items:center;transition:opacity .16s;display:inline-flex}.hero-meta-logo:hover{opacity:.7}.hero-meta-logo img{width:auto;height:40px;filter:var(--mark-filter);display:block}.hero-clients{width:min(960px,100% - 48px);margin:clamp(40px,6vw,64px) auto 0}.hero-clients-marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.hero-clients-marquee-track{width:max-content;animation:34s linear infinite hero-clients-scroll;display:flex}.hero-clients-logos{align-items:center;gap:var(--client-gap,44px);padding:0;padding-right:var(--client-gap,44px);margin:0;list-style:none;display:flex}.hero-clients-logos li{flex:none;align-items:center;display:flex}@keyframes hero-clients-scroll{0%{transform:translate(0)}to{transform:translate(-33.3333%)}}.hero-clients-logos img{height:var(--logo-h,30px);object-fit:contain;width:auto;max-width:160px;filter:var(--logo-filter);opacity:.55;transition:filter .2s,opacity .2s;display:block}.hero-clients-logos a:hover img{filter:var(--logo-filter-hover);opacity:1}.hero-side{flex-direction:column;align-self:stretch;align-items:flex-end;gap:24px;min-width:0;display:flex}.hero-cursor-stage{aspect-ratio:1;contain:layout paint;background:0 0;width:100%;max-width:300px;height:auto;display:block}.now-playing-card{border:1px solid var(--border);background:var(--bg);width:100%;height:126px;box-shadow:var(--shadow-card);border-radius:14px;flex-direction:column;justify-content:space-between;padding:14px 16px;display:flex;overflow:hidden}.now-playing-main{flex-direction:column;justify-content:space-between;min-width:0;height:100%;display:flex}.now-playing-card--has-artwork{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:14px;display:grid}.now-playing-artwork-frame{border:1px solid var(--border);background-color:var(--bg);background-image:repeating-conic-gradient(var(--border) 0% 25%, transparent 0% 50%);background-size:14px 14px;border-radius:10px;width:98px;height:98px;animation:1.8s steps(2,end) infinite now-playing-checker-crawl;position:relative;overflow:hidden}.now-playing-artwork-frame.is-ready{animation:none}.now-playing-artwork-placeholder{color:var(--muted);place-items:center;display:grid;position:absolute;inset:0}.now-playing-card--playing .now-playing-artwork-placeholder{color:var(--accent)}.now-playing-artwork-note{background:0 0;width:7px;height:7px;animation:.9s step-end infinite now-playing-note-hop;transform:translate(-24.5px,-24.5px);box-shadow:21px 0,28px 0,21px 7px,35px 7px,21px 14px,42px 14px,21px 21px,35px 21px,21px 28px,7px 35px,14px 35px,21px 35px,0 42px,7px 42px,14px 42px,21px 42px,7px 49px,14px 49px}.now-playing-artwork-frame.is-ready .now-playing-artwork-note{animation:none}.now-playing-artwork{object-fit:cover;opacity:0;width:100%;height:100%;position:absolute;inset:0}.now-playing-artwork-frame.is-ready .now-playing-artwork{opacity:1;transition:opacity .45s steps(4,end)}.now-playing-card--offline .now-playing-artwork-frame{opacity:.72;filter:grayscale(.6)}.now-playing-glyph-text{contain:layout paint;background:0 0;width:100%;height:48px;display:block}.now-playing-status{color:var(--muted);align-items:center;gap:8px;display:inline-flex}.now-playing-status .pixel-text{min-width:0}.pixel-text{display:block}.now-playing-eq{flex-shrink:0;align-items:flex-end;gap:2px;height:12px;display:inline-flex}.now-playing-eq span{background:currentColor;width:3px;height:4px}.now-playing-card--playing .now-playing-status{color:var(--accent)}.now-playing-card--playing .now-playing-eq span{animation:.9s step-end infinite now-playing-eq-step}.now-playing-card--playing .now-playing-eq span:nth-child(2){animation-delay:-.3s}.now-playing-card--playing .now-playing-eq span:nth-child(3){animation-delay:-.6s}.now-playing-progress-row{color:var(--muted);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.now-playing-progress{gap:2px;height:6px;display:flex}.now-playing-progress-cell{background:var(--border);flex:1}.now-playing-progress-cell.is-filled{background:var(--ink)}.now-playing-progress-cell.is-head{animation:1s step-end infinite now-playing-blink}.now-playing-card--offline,.now-playing-card--recent,.now-playing-card--paused{box-shadow:none}.now-playing-card--offline .now-playing-glyph-text,.now-playing-card--offline .now-playing-progress-row{opacity:.72}@keyframes now-playing-note-hop{0%,to{transform:translate(-24.5px,-24.5px)}50%{transform:translate(-24.5px,-31.5px)}}@keyframes now-playing-checker-crawl{0%{background-position:0 0}to{background-position:14px 14px}}@keyframes now-playing-eq-step{0%{height:4px}20%{height:10px}40%{height:6px}60%{height:12px}80%{height:8px}to{height:4px}}@keyframes now-playing-blink{0%{opacity:1}50%{opacity:.3}to{opacity:1}}.section{border-top:1px solid var(--border);padding:clamp(56px,8vw,96px) 0}.section--flush{border-top:0;padding-top:0}.section-label{color:var(--ink);font-size:16px;font-weight:600;line-height:1.75}.section-heading-row{justify-content:space-between;align-items:baseline;gap:24px;margin-bottom:clamp(32px,5vw,48px);display:flex}.writing-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;display:grid}.writing-preview-card{min-width:0}.writing-preview-link{color:var(--ink);display:block}.writing-preview-link:hover,.writing-preview-link:focus-visible{text-decoration:none}.writing-preview-copy{flex-direction:column;gap:7px;margin-top:16px;display:flex}.writing-preview-meta{color:var(--muted);flex-wrap:wrap;gap:6px 10px;font-size:13px;display:flex}.writing-preview-title{text-underline-offset:4px;font-size:18px;font-weight:600;line-height:1.4;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;transition:text-decoration-color .2s}.writing-preview-link:hover .writing-preview-title,.writing-preview-link:focus-visible .writing-preview-title{text-decoration-color:currentColor}.section-cta{margin-top:clamp(48px,7vw,80px)}.section-cta--compact{margin-top:36px}.btn-secondary{isolation:isolate;border:1px solid var(--border);color:var(--ink);border-radius:999px;align-items:center;gap:8px;padding:10px 22px;font-size:15px;font-weight:500;transition:color .26s,border-color .26s;display:inline-flex;position:relative;overflow:hidden}.btn-secondary:before{content:"";z-index:-1;background:var(--ink);transform-origin:0;transition:transform .26s;position:absolute;inset:0;transform:scaleX(0)}.btn-secondary:hover{color:var(--bg);border-color:var(--ink);text-decoration:none}.btn-secondary:hover:before{transform:scaleX(1)}.btn-icon{fill:currentColor;width:13px;height:13px}@media (prefers-reduced-motion:reduce){.btn-secondary,.btn-secondary:before{transition:none}}.honors-layout{grid-template-columns:minmax(0,1fr) 280px;align-items:start;gap:40px;display:grid}.honors-main{min-width:0}.honors-list{flex-direction:column;gap:20px;margin:0;padding:0;list-style:none;display:flex}.honor-link{color:var(--ink);align-items:flex-start;gap:20px;display:flex}a.honor-link:hover,a.honor-link:focus-visible{text-decoration:none}.honor-badge{border:1px solid var(--border);background:var(--surface);border-radius:10px;flex:none;place-items:center;width:44px;height:44px;display:grid}.honor-badge svg{width:19px;height:19px;fill:var(--muted)}.honor-badge--winner{border-color:var(--ink);background:var(--ink)}.honor-badge--winner svg{fill:var(--bg)}.honor-badge--placed{border-color:var(--ink);background:var(--bg)}.honor-badge--placed svg{fill:var(--ink)}.honor-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.honor-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 24px;display:flex}.honor-title-wrap{min-width:0;display:flex;position:relative}.honor-title{z-index:2;background:var(--bg);color:var(--ink);text-underline-offset:4px;font-size:16px;font-weight:600;line-height:1.5;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;transition:text-decoration-color .2s;position:relative}a.honor-link:hover .honor-title,a.honor-link:focus-visible .honor-title{text-decoration-color:currentColor}.honor-spray{display:none}@media (hover:hover) and (pointer:fine){.honor-title{padding-right:6px}.honor-date{padding-left:6px}.honor-spray{z-index:1;width:0;height:0;display:block;position:absolute;top:50%;right:24px}}.honor-spray i{width:var(--w);height:var(--h);background:var(--ink);opacity:0;border-radius:1px;position:absolute}.honor-spray i.is-muted{background:var(--muted)}.honor-spray--winner i:nth-child(5n+1){background:#e9a13b}.honor-spray--winner i:nth-child(5n+2){background:#d95d4e}.honor-spray--winner i:nth-child(5n+3){background:var(--accent)}.honor-spray--winner i:nth-child(5n+4){background:#3e9c6d}.honor-spray--winner i:nth-child(5n+5){background:#7b61c9}.honor-link:hover .honor-spray i,.honor-link:focus-visible .honor-spray i{animation:honor-spray .78s cubic-bezier(.15, .75, .3, 1) var(--d) both}@keyframes honor-spray{0%{opacity:0;transform:translate(0)scale(.3)rotate(0)}18%{opacity:1}to{opacity:0;transform:translate(var(--tx), var(--ty)) scale(1) rotate(var(--r))}}.honor-date{z-index:2;background:var(--bg);color:var(--muted);font-variant-numeric:tabular-nums;flex:none;font-size:13px;position:relative}.honor-meta{color:var(--muted);font-size:14px;line-height:1.5}.honors-toggle{margin-top:24px}button.btn-secondary{font-family:inherit;line-height:inherit;cursor:pointer;background:0 0}.honor-gallery{grid-template-columns:minmax(0,1fr);gap:16px;display:grid}.honor-gallery-frame{aspect-ratio:16/10;border:1px solid var(--border);background:var(--surface);border-radius:12px;display:block;overflow:hidden}.honor-gallery-frame img,.honor-gallery-frame .lazy-image-placeholder{object-fit:cover;width:100%;height:100%;display:block}.honor-gallery-frame img{transform:scale(var(--photo-scale,1))}@media (width<=900px){.honors-layout{grid-template-columns:minmax(0,1fr);gap:clamp(32px,5vw,44px)}.honors-list,.honor-gallery{max-width:680px}.honor-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}}@media (width<=640px){.honor-gallery{grid-template-columns:minmax(0,1fr)}.honor-heading{flex-direction:column;align-items:flex-start;gap:1px}.honor-date{order:-1;padding-left:0}}@media (prefers-reduced-motion:reduce){.honor-title{transition:none}.honor-link:hover .honor-spray i,.honor-link:focus-visible .honor-spray i{animation:none}}.about-body{align-items:flex-start;gap:clamp(32px,6vw,64px);margin-top:24px;display:flex}.about-copy{width:100%;min-width:0;max-width:541px;color:var(--ink);flex-direction:column;flex:auto;gap:20px;font-size:16px;line-height:1.8;display:flex}.about-visual{flex:none;width:clamp(220px,28vw,280px)}.about-photo{aspect-ratio:4/5;background:var(--surface);border-radius:16px;width:100%;overflow:hidden}.about-photo img{object-fit:cover;object-position:50% 30%;width:100%;height:100%}.about-now-playing{width:100%;margin-top:4px}.about-socials{flex-wrap:wrap;gap:8px 24px;margin:4px 0 0;padding:0;font-size:15px;list-style:none;display:flex}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.toolkit-marquee{margin:-4px 0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000);mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000)}.toolkit-marquee-track{align-items:center;gap:10px;width:max-content;padding:4px 0;animation:22s linear infinite toolkit-marquee-scroll;display:flex}.toolkit-pill{border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:8px;padding:6px 16px;font-size:14px;transition:color .2s;display:inline-flex}.toolkit-pill:hover{color:var(--ink)}.toolkit-pill-logo{background-color:var(--muted);width:14px;height:14px;-webkit-mask-image:var(--logo-url);mask-image:var(--logo-url);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--logo-url);flex:none;transition:background-color .2s;-webkit-mask-position:50%;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat}.toolkit-pill:hover .toolkit-pill-logo{background-color:var(--ink)}@keyframes toolkit-marquee-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.toolkit-marquee-track{animation:none}.hero-clients-marquee{-webkit-mask-image:none;mask-image:none}.hero-clients-marquee-track{width:auto;animation:none}.hero-clients-marquee-track>[aria-hidden=true]{display:none}.hero-clients-logos{flex-wrap:wrap;row-gap:24px;padding-right:0}}.project-list{flex-direction:column;gap:clamp(56px,6.5vw,84px);display:flex}.project-card{flex-direction:column;display:flex}.project-card-shell{flex-direction:column;gap:24px;display:flex}.project-media{aspect-ratio:3;background:var(--surface);border:1px solid var(--border);border-radius:12px;width:100%;position:relative;overflow:hidden}.project-media>img,.project-carousel{width:100%;height:100%;position:absolute;inset:0}.project-media--photo>img{object-fit:cover}.project-media--screenshot{justify-content:center;align-items:flex-end;display:flex}.project-media--screenshot>img,.project-media--screenshot .project-carousel{width:min(720px,78%);height:86%;position:relative;inset:auto}.project-media--screenshot>img,.project-media--screenshot .project-carousel-image{object-fit:cover;object-position:top center;box-shadow:var(--shadow-device-sm);border:1px solid rgba(var(--ink-rgb), .08);border-bottom:0;border-radius:10px 10px 0 0}.project-media--phone{justify-content:center;align-items:flex-end;display:flex}.project-phone-frame{border:5px solid var(--device-bezel);width:clamp(128px,17vw,150px);max-height:90%;box-shadow:var(--shadow-device-sm);background:var(--device-bezel);border-bottom:0;border-radius:22px 22px 0 0;overflow:hidden}.project-phone-frame img{border-radius:17px 17px 0 0;width:100%;height:auto;display:block}.lazy-image-placeholder{background:var(--surface);width:100%;height:100%;display:block}.project-carousel-image{object-fit:cover;opacity:0;z-index:1;width:100%;height:100%;transition:opacity 0s linear .5s;position:absolute;inset:0}.project-carousel-image--device{object-fit:contain;border-radius:var(--device-corner);width:auto;height:calc(100% - 18px);inset:18px auto auto 50%;transform:translate(-50%)}.project-carousel-image.is-active{opacity:1;z-index:2;transition:opacity .5s}.project-carousel-controls{background:var(--control-bg);box-shadow:var(--shadow-control);opacity:0;border-radius:999px;align-items:center;gap:8px;padding:4px 8px;transition:opacity .2s;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.project-media:hover .project-carousel-controls,.project-media:focus-within .project-carousel-controls,.archive-card-media:hover .project-carousel-controls,.archive-card-media:focus-within .project-carousel-controls{opacity:1}.project-carousel-controls button{width:24px;height:24px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:grid}.project-carousel-controls button:hover{background:var(--surface)}.project-carousel-controls .project-action-icon{fill:currentColor;width:14px;height:14px}.project-carousel-dots{gap:6px;display:flex}.project-carousel-dot{background:rgba(var(--ink-rgb), .24);border-radius:50%;width:6px;height:6px;transition:background .2s}.project-carousel-dot.is-active{background:var(--ink)}.project-copy{flex-direction:column;gap:6px;max-width:620px;display:flex}.project-kicker{color:var(--muted);align-items:baseline;gap:10px;font-size:13px;display:flex}.project-title{align-items:center;gap:10px;font-size:18px;font-weight:600;line-height:1.4;display:flex}.project-logo{width:auto;max-width:88px;height:var(--logo-h,26px);flex:none;justify-content:center;align-items:center;display:inline-flex}.project-logo img,.project-logo .lazy-image-placeholder{width:auto;max-width:88px;height:auto;max-height:var(--logo-h,24px);object-fit:contain;filter:var(--logo-filter);opacity:.78;transition:filter .2s,opacity .2s;display:block}.project-logo--wide{max-width:100px;height:var(--logo-h,30px)}.project-logo--wide img,.project-logo--wide .lazy-image-placeholder{max-width:100px;max-height:var(--logo-h,28px)}.project-logo--mark{width:var(--logo-h,28px);height:var(--logo-h,28px)}.project-logo--mark img,.project-logo--mark .lazy-image-placeholder{width:var(--logo-h,28px);height:var(--logo-h,28px);object-fit:contain;max-width:none;max-height:none}a.project-logo:hover img{filter:var(--logo-filter-hover);opacity:1}.project-description{color:var(--muted);font-size:15px;line-height:1.7}.project-action-group{flex-wrap:wrap;align-items:flex-start;gap:8px 20px;margin-top:8px;display:flex}.project-action{color:var(--accent);cursor:pointer;background:0 0;border:0;align-items:center;gap:5px;padding:0;font-family:inherit;font-size:14px;font-weight:500;display:inline-flex}.project-action:hover{text-decoration:underline}.project-action-icon{fill:currentColor;width:12px;height:12px}.page-hero{padding:clamp(88px,13vw,152px) 0 clamp(72px,10vw,112px)}.page-title{letter-spacing:-.035em;max-width:760px;font-size:clamp(42px,6vw,60px);line-height:1.15}.page-intro{max-width:620px;color:var(--muted);margin-top:24px;font-size:18px;line-height:1.8}.archive-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(48px,7vw,72px) 28px;display:grid}.archive-card{flex-direction:column;gap:16px;min-width:0;display:flex}.archive-card-media{aspect-ratio:16/10;background:var(--surface);border-radius:16px;position:relative;overflow:hidden}.archive-card .archive-card-media{aspect-ratio:16/9;border:1px solid var(--border);border-radius:12px}.archive-card-media>img,.archive-card-media>.lazy-image-placeholder{width:100%;height:100%}.archive-card-media--photo>img{object-fit:cover}.archive-card-media--screenshot>img{object-fit:cover;object-position:top center}.archive-card-media--device{place-items:center;padding:18px 24px 0;display:grid}.archive-card-media--device>img{object-fit:contain;object-position:bottom center;border-radius:var(--device-corner);width:auto;max-width:38%}.archive-card-carousel{position:absolute;inset:0}.archive-card-carousel-image{object-fit:cover;opacity:0;z-index:1;width:100%;height:100%;transition:opacity 0s linear .5s;position:absolute;inset:0}.archive-card-carousel-image.is-active{opacity:1;z-index:2;transition:opacity .5s}.archive-card-carousel-image--screenshot{object-position:top center}.archive-card-carousel-image--device{object-fit:contain;border-radius:var(--device-corner);width:38%;height:auto;margin-inline:auto;inset:18px 0 auto}.archive-card-media--phone{place-items:center;padding:18px 24px 0;display:grid}.archive-card-media--phone>img{object-fit:contain;object-position:bottom center;border:5px solid var(--device-bezel);width:auto;max-width:52%;box-shadow:var(--shadow-device-sm);border-bottom:0;border-radius:24px 24px 0 0}.archive-card-copy{flex-direction:column;gap:7px;display:flex}.archive-card-title{align-items:center;gap:10px;font-size:18px;font-weight:600;line-height:1.4;display:flex}.archive-card-title .project-logo--wordmark{height:20px}.archive-card-title .project-logo--wordmark img,.archive-card-title .project-logo--wordmark .lazy-image-placeholder{max-width:72px;max-height:18px}.app--writing{--writing-bg:var(--bg);--writing-surface:var(--surface);--writing-border:var(--border);--writing-ink:var(--ink);--writing-muted:var(--muted);color:var(--writing-ink);background:var(--writing-bg)}.app--writing .site-nav-brand{color:var(--writing-ink)}.app--writing .site-nav-links a,.app--writing .site-footer-links a,.app--writing .site-footer-copy{color:var(--writing-muted)}.app--writing .site-nav-links a:hover,.app--writing .site-nav-links a:focus-visible,.app--writing .site-footer-links a:hover,.app--writing .site-footer-links a:focus-visible,.app--writing .site-nav-links a[aria-current=page]{color:var(--writing-ink)}.app--writing .site-footer{border-top-color:var(--writing-border)}.writing-hero{border-bottom:0;padding:clamp(88px,13vw,144px) 0 clamp(36px,6vw,52px)}.writing-hero-grid{width:min(640px,100% - 48px);display:block}.writing-hero-title h1{color:var(--writing-ink);letter-spacing:-.035em;font-size:clamp(42px,6vw,60px);font-weight:500;line-height:1.15}.writing-hero-intro{max-width:600px;color:var(--writing-muted);margin-top:22px;font-size:clamp(17px,2vw,19px);line-height:1.75}.writing-index{padding:0 0 clamp(112px,16vw,176px)}.writing-index>.shell{width:min(640px,100% - 48px)}.writing-filter-clear{color:var(--writing-muted);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;padding:0;font-size:14px;transition:color .16s;display:inline-flex;position:relative}.writing-filter-clear:before,.writing-card-category:before{content:"";position:absolute;inset:-12px -10px}.writing-filter-clear:hover,.writing-filter-clear:focus-visible{color:var(--writing-ink);text-underline-offset:4px;text-decoration:underline}.writing-filter-clear-icon{width:14px;height:14px}.writing-list{display:block}.writing-card{border-bottom:1px solid var(--writing-border);padding:clamp(32px,5vw,44px) 0}.writing-card-link{min-height:0;color:var(--writing-ink);background:0 0;border:0;border-radius:0;padding:0;display:block}.writing-card-link:hover,.writing-card-link:focus-visible{border-color:var(--writing-border);background:0 0;text-decoration:none;transform:none}.writing-card-label{color:var(--writing-muted);font-variant-numeric:tabular-nums;text-transform:none;letter-spacing:0;align-items:baseline;margin-bottom:12px;font-size:13px;display:flex}.writing-card-category{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:none;transition:color .16s;position:relative}.writing-card-category:hover,.writing-card-category:focus-visible,.writing-card-category[aria-pressed=true]{color:var(--writing-ink)}.writing-card-main{min-width:0}.writing-card-content{grid-template-columns:minmax(0,1fr) 156px;align-items:start;gap:clamp(24px,4vw,36px);display:grid}.writing-card-thumbnail{aspect-ratio:4/3;border:1px solid var(--writing-border);background:var(--writing-surface);border-radius:12px;overflow:hidden}.writing-card-thumbnail img{object-fit:cover;width:100%;height:100%;display:block}.writing-meta{color:var(--writing-muted);flex-wrap:wrap;gap:6px 18px;margin-top:18px;font-size:13px;display:flex}.writing-card-title{max-width:700px;color:var(--writing-ink);letter-spacing:-.02em;text-underline-offset:5px;margin-top:0;font-size:clamp(25px,3.5vw,32px);font-weight:500;line-height:1.3;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:1px;transition:text-decoration-color .16s}.writing-card-link:hover .writing-card-title,.writing-card-link:focus-visible .writing-card-title{text-decoration-color:currentColor}.writing-card-excerpt{max-width:680px;color:var(--writing-muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-top:12px;font-size:16px;line-height:1.75;display:-webkit-box;overflow:hidden}.app--article{--writing-bg:var(--bg);--writing-surface:var(--surface);--writing-border:var(--border);--writing-ink:var(--ink);--writing-muted:var(--muted);color:var(--writing-ink);background:var(--writing-bg)}.app--article .site-nav-brand{color:var(--writing-ink)}.app--article .site-nav-links a,.app--article .site-footer-links a,.app--article .site-footer-copy{color:var(--writing-muted)}.app--article .site-nav-links a:hover,.app--article .site-nav-links a:focus-visible,.app--article .site-footer-links a:hover,.app--article .site-footer-links a:focus-visible,.app--article .site-nav-links a[aria-current=page]{color:var(--writing-ink)}.app--article .site-footer{border-top-color:var(--writing-border)}.article-header{padding-top:clamp(48px,7vw,72px);padding-bottom:clamp(40px,6vw,56px)}.article-topline{justify-content:space-between;align-items:center;gap:24px;margin-bottom:clamp(32px,5vw,48px);display:flex}.article-back-link{color:var(--writing-muted);align-items:center;gap:7px;margin-bottom:0;font-size:14px;transition:color .16s;display:inline-flex}.app--article .article-header{width:min(900px,100% - 48px)}.app--article .article-title{max-width:900px;font-size:clamp(48px,7vw,72px)}.app--article .article-layout{width:min(800px,100% - 48px);display:block}.article-back-link:hover,.article-back-link:focus-visible{color:var(--writing-ink);text-decoration:none}.app--article .article-meta,.app--article .article-date,.app--article .article-original-title{color:var(--writing-muted)}.article-date{font-size:13px}.app--article .article-title,.app--article .article-section h2{color:var(--writing-ink)}.app--article .article-section blockquote cite{color:var(--writing-muted)}.article-back-icon{fill:currentColor;width:13px;height:13px}.article-meta{margin:28px 0 0}.article-meta a{color:inherit;text-underline-offset:4px;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;transition:text-decoration-color .16s}.article-meta a:hover,.article-meta a:focus-visible{text-decoration-color:currentColor}.article-title{letter-spacing:-.045em;max-width:820px;font-size:clamp(40px,7vw,72px);font-weight:500;line-height:1.08}.article-original-title{color:var(--muted);margin-top:20px;font-size:15px;font-style:italic}.article-hero-shell{aspect-ratio:3;border:1px solid var(--writing-border);background:var(--writing-surface);border-radius:20px;width:min(1120px,100% - 48px);margin:0 auto;overflow:hidden}.article-hero-image{object-fit:cover;width:100%;height:100%;display:block}.article-dek{max-width:none;color:var(--writing-ink);letter-spacing:-.025em;margin:0 0 36px;font-weight:500;font-size:clamp(26px,3.2vw,34px)!important;line-height:1.25!important}.article-rule{border-top:1px solid var(--ink)}.article-layout{padding-top:clamp(72px,10vw,112px);padding-bottom:clamp(96px,13vw,160px);display:block}.article-rail{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;flex-direction:column;gap:4px;padding-top:8px;font-size:12px;display:flex}.article-body{min-width:0}.article-body p{font-size:18px;line-height:1.75}.article-introduction{color:var(--writing-muted);font-weight:400;font-size:18px!important;line-height:1.75!important}.article-rich-content{color:var(--writing-muted)}.article-rich-content p,.article-rich-content li{font-size:18px;line-height:1.75}.article-rich-content p+p{margin-top:24px}.article-rich-content strong{color:var(--writing-ink);font-weight:600}.article-rich-content h2{color:var(--writing-ink);letter-spacing:-.04em;margin:clamp(72px,10vw,104px) 0 28px;font-size:clamp(38px,5vw,58px);font-weight:500;line-height:1.08}.article-rich-content h3{color:var(--writing-ink);letter-spacing:-.025em;margin:52px 0 20px;font-size:clamp(25px,3.5vw,34px);font-weight:500;line-height:1.2}.article-rich-content ul,.article-rich-content ol{margin:28px 0;padding-left:26px}.article-rich-content li+li{margin-top:10px}.article-rich-content a{color:var(--writing-ink);text-decoration:underline;-webkit-text-decoration-color:var(--writing-muted);text-decoration-color:var(--writing-muted);text-underline-offset:4px;transition:text-decoration-color .16s}.article-rich-content a:hover,.article-rich-content a:focus-visible{-webkit-text-decoration-color:var(--writing-ink);text-decoration-color:var(--writing-ink)}.article-rich-content figure{margin:48px 0}.article-rich-content figure+figure{margin-top:-20px}.article-rich-content figure img{border:1px solid var(--writing-border);background:var(--writing-surface);border-radius:16px;width:100%;height:auto;display:block}.article-rich-content figcaption{color:var(--writing-muted);margin-top:12px;font-size:13px;line-height:1.6}.article-rich-content blockquote{border:1px solid var(--writing-border);background:var(--writing-surface);border-radius:16px;margin:48px 0;padding:clamp(28px,5vw,44px)}.article-rich-content blockquote p,.article-rich-content blockquote{color:var(--writing-ink);letter-spacing:-.025em;font-size:clamp(24px,3.2vw,32px);font-weight:500;line-height:1.4}.article-rich-content .article-embed-link{margin-top:48px}.article-section{margin-top:clamp(80px,11vw,112px)}.article-section h2{letter-spacing:-.04em;margin-bottom:28px;font-size:clamp(38px,5vw,58px);font-weight:500;line-height:1.08}.app--article .article-section>p{color:var(--writing-muted)}.article-section>p+p{margin-top:24px}.article-section blockquote{border:1px solid var(--writing-border);background:var(--writing-surface);border-radius:16px;margin:56px 0;padding:clamp(28px,5vw,44px)}.article-section blockquote p{color:var(--writing-ink);letter-spacing:-.025em;font-size:clamp(25px,3.4vw,34px);font-weight:500;line-height:1.4}.article-section blockquote cite{color:var(--muted);margin-top:16px;font-size:14px;font-style:normal;display:block}.article-next{border-top:1px solid var(--writing-border)}.article-next-link{color:var(--writing-ink);grid-template-columns:minmax(0,1fr) minmax(220px,360px);align-items:center;gap:clamp(40px,8vw,96px);padding-top:clamp(64px,9vw,104px);padding-bottom:clamp(64px,9vw,104px);display:grid}.article-next-link:hover,.article-next-link:focus-visible{text-decoration:none}.article-next-kicker{color:var(--writing-muted);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:8px;margin-bottom:20px;font-size:13px;font-weight:500;display:flex}.article-next-icon{fill:currentColor;width:12px;height:12px;transition:transform .18s}.article-next-link h2{max-width:720px;color:var(--writing-ink);letter-spacing:-.04em;font-size:clamp(34px,5vw,58px);font-weight:500;line-height:1.08}.article-next-meta{color:var(--writing-muted);margin-top:24px}.article-next-thumbnail{aspect-ratio:4/3;border:1px solid var(--writing-border);background:var(--writing-surface);border-radius:16px;overflow:hidden}.article-next-thumbnail img{object-fit:cover;width:100%;height:100%;transition:transform .32s;display:block}.article-next-link:hover .article-next-icon,.article-next-link:focus-visible .article-next-icon{transform:translate(4px)}.article-next-link:hover .article-next-thumbnail img,.article-next-link:focus-visible .article-next-thumbnail img{transform:scale(1.025)}@media (prefers-reduced-motion:reduce){.article-next-icon,.article-next-thumbnail img{transition:none}}.section--contact{padding-bottom:clamp(80px,10vw,128px)}.contact-lead{max-width:541px;color:var(--ink);margin-top:24px;font-size:clamp(20px,2.6vw,26px);font-weight:500;line-height:1.5}.contact-email{margin-top:24px;font-size:clamp(18px,2.2vw,22px);font-weight:500;display:inline-block}.contact-email-row{flex-wrap:wrap;align-items:center;gap:12px 20px;margin-top:32px;display:flex}.contact-page-email{letter-spacing:-.02em;overflow-wrap:anywhere;font-size:clamp(22px,3.4vw,34px);font-weight:500;line-height:1.3;display:inline-block}.contact-copy{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:999px;padding:8px 16px;font-size:14px;line-height:1.4;transition:color .2s,border-color .2s}.contact-copy:hover,.contact-copy:focus-visible{color:var(--ink);border-color:var(--ink)}.page-hero--contact{padding-bottom:clamp(96px,14vw,168px)}.contact-dialogue{max-width:640px;color:var(--ink);margin-top:36px}.contact-dialogue-text{contain:layout paint;background:0 0;width:100%;height:35px;display:block}.contact-socials{flex-wrap:wrap;gap:8px;margin:32px 0 0;padding:0;list-style:none;display:flex}.contact-socials a{border:1px solid var(--border);background:var(--surface);width:44px;height:44px;color:var(--muted);border-radius:10px;place-items:center;transition:color .2s,border-color .2s,transform .2s;display:grid}.contact-socials a:hover,.contact-socials a:focus-visible{color:var(--ink);border-color:var(--ink);transform:translateY(-2px)}.contact-socials svg{fill:currentColor;width:18px;height:18px}@media (prefers-reduced-motion:reduce){.contact-socials a,.contact-copy{transition:none}.contact-socials a:hover,.contact-socials a:focus-visible{transform:none}}.site-footer{border-top:1px solid var(--border);margin-top:auto;padding:32px 0}.site-footer-shell{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;display:flex}.site-footer-copy{color:var(--muted);font-size:14px}.site-footer-links{flex-wrap:wrap;gap:8px 24px;font-size:14px;display:flex}.site-footer-links a{color:var(--muted);transition:color .16s}.site-footer-links a:hover{color:var(--ink);text-decoration:none}@media (width<=899px){.hero-layout{grid-template-columns:1fr}.hero-cursor-stage{display:none}.hero-side{align-items:flex-start}}@media (width<=809px){.hero-layout,.hero-clients{width:min(886px,100% - 48px)}.article-next-link{grid-template-columns:1fr;gap:32px}.article-next-thumbnail{aspect-ratio:16/9;width:min(420px,100%)}.project-media{aspect-ratio:16/9}.project-media--screenshot{aspect-ratio:auto;padding-top:24px}.project-media--screenshot>img{object-fit:contain;width:90%;height:auto;position:relative;inset:auto}.project-media--screenshot .project-carousel{aspect-ratio:5/3;width:90%;height:auto;position:relative;inset:auto}.about-body{flex-direction:column-reverse}.about-visual{width:min(280px,100%)}.site-nav-links,.site-nav-end{gap:16px}.hero-clients-logos{--client-gap:32px}.hero-clients-logos img{height:calc(var(--logo-h,30px) * .82)}.archive-grid{grid-template-columns:1fr}.archive-grid--preview{gap:48px}.writing-preview-grid{grid-template-columns:1fr;gap:40px}.article-layout,.app--article .article-layout{grid-template-columns:1fr}.article-rail{flex-direction:row;gap:16px;padding-top:0}}@media (width<=639px){.site-nav-links{display:none}.site-nav-menu-toggle{display:grid}.site-nav-menu{display:flex}.site-nav-end{gap:4px}}@media (width<=599px){.writing-card-content{grid-template-columns:1fr;gap:24px}.writing-card-thumbnail{aspect-ratio:16/9}}@media (width<=479px){.shell,.site-nav-shell,.hero-layout,.hero-clients{width:min(100% - 32px,886px)}.site-nav-brand span{display:none}.hero-clients-logos{--client-gap:24px}.writing-card{padding:28px 0}.writing-hero-grid,.writing-index>.shell,.app--article .article-header,.app--article .article-layout,.article-hero-shell{width:min(100% - 32px,760px)}.writing-meta{gap:4px 10px}.article-title,.app--article .article-title{font-size:42px}.article-topline{margin-bottom:44px}.article-hero-shell{border-radius:14px}.article-section h2{font-size:36px}.article-body p{font-size:17px}.article-section{margin-top:52px}.now-playing-card{padding:14px 12px}.now-playing-card--has-artwork{gap:12px}.now-playing-artwork-frame{width:86px;height:86px}}@media (prefers-reduced-motion:reduce){.writing-card-title{transition:none}.now-playing-card--playing .now-playing-eq span,.now-playing-progress-cell.is-head,.now-playing-artwork-frame,.now-playing-artwork-note{animation:none}.now-playing-artwork-frame.is-ready .now-playing-artwork{transition:none}}
