:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fbfbfd;--bg-raised:#fff;--bg-sunken:#f5f5f7;--ink:#1d1d1f;--ink-secondary:#6e6e73;--ink-tertiary:#86868b;--hairline:#0000001a;--hairline-strong:#00000029;--accent:#0071e3;--accent-hover:#0077ed;--accent-pressed:#006edb;--accent-ink:#fff;--link:#06c;--success:#1d8a4b;--nav-material:#fbfbfdb8;--nav-hairline:#00000014;--card-material:#ffffffb8;--card-hairline:#00000012;--card-shadow:0 1px 2px #0000000a;--card-shadow-lifted:0 12px 32px #00000014;--focus-ring:0 0 0 3px #0071e359;--radius-card:16px;--radius-control:12px;--font-sans:-apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Helvetica Neue", "Segoe UI", Roboto, Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--ease-drawer:cubic-bezier(.32, .72, 0, 1);--dur-press:.14s;--dur-ui:.22s;--shell:1120px;--shell-pad:clamp(1.25rem, 4vw, 2.5rem);--section-gap:clamp(4.5rem, 9vw, 7.5rem)}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--bg-raised:#1d1d1f;--bg-sunken:#0d0d0f;--ink:#f5f5f7;--ink-secondary:#a1a1a6;--ink-tertiary:#77777c;--hairline:#ffffff24;--hairline-strong:#ffffff38;--accent:#2997ff;--accent-hover:#3fa1ff;--accent-pressed:#1e8bff;--accent-ink:#fff;--link:#2997ff;--success:#30d158;--nav-material:#0a0a0ca6;--nav-hairline:#ffffff1a;--card-material:#1d1d1fb8;--card-hairline:#ffffff17;--card-shadow:0 1px 2px #0006, 0 8px 24px #00000073;--card-shadow-lifted:0 2px 4px #00000073, 0 16px 40px #0009;--focus-ring:0 0 0 3px #2997ff73}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--hairline-strong) transparent}body{font-family:var(--font-sans);letter-spacing:-.003em;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-optical-sizing:auto;caret-color:var(--accent);margin:0;font-size:1.0625rem;line-height:1.6}body.theme-anim,body.theme-anim *,body.theme-anim :before,body.theme-anim :after{transition:background-color .3s,color .3s,border-color .3s}::selection{background:color-mix(in srgb, var(--accent) 22%, transparent)}img,video{max-width:100%;display:block}button{font:inherit;color:inherit}a{color:var(--link);text-decoration:none}a:hover{text-underline-offset:.18em;text-decoration:underline;text-decoration-thickness:1px}:focus-visible{box-shadow:var(--focus-ring);border-radius:6px;outline:none}.skip-link{z-index:200;background:var(--accent);color:var(--accent-ink);border-radius:var(--radius-control);opacity:0;pointer-events:none;padding:.6rem 1rem;font-weight:600;position:fixed;top:-100px;left:12px}.skip-link:focus{opacity:1;pointer-events:auto;top:12px}.shell{max-width:var(--shell);padding-inline:var(--shell-pad);margin-inline:auto}.section{padding-block:var(--section-gap)}.section-tight{padding-block:calc(var(--section-gap) * .62)}.section-sunken{background:var(--bg-sunken)}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem 2rem;margin-bottom:clamp(1.75rem,3vw,2.5rem);display:flex}.section-head h2{margin:0}.cluster{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.stack-sm>*+*{margin-top:.5rem}.link-arrow{color:var(--link);align-items:center;gap:.35em;font-size:.9375rem;font-weight:600;display:inline-flex}.link-arrow svg{transition:transform var(--dur-ui) var(--ease-out)}@media (hover:hover) and (pointer:fine){a:hover .link-arrow svg{transform:translate(3px)}}.ruled{border-top:1px solid var(--hairline);margin:0;padding:0;list-style:none}.ruled>li{border-bottom:1px solid var(--hairline)}.ruled-row{color:inherit;grid-template-columns:4.5rem 1fr auto;align-items:baseline;gap:.25rem 1.5rem;padding-block:1.1rem;text-decoration:none;display:grid}@media (width<=640px){.ruled-row{grid-template-columns:3.5rem 1fr}.ruled-row>:last-child{grid-column:2}}.display-xl,.display,.title,.headline,h1,h2,h3{text-wrap:balance}.lede,.body,p{text-wrap:pretty}.display-xl{letter-spacing:-.035em;font-size:clamp(3rem,9vw,6rem);font-weight:700;line-height:.98}.display{letter-spacing:-.03em;font-size:clamp(2rem,4.2vw,3rem);font-weight:700;line-height:1.06}.title{letter-spacing:-.02em;font-size:clamp(1.5rem,3vw,2.125rem);font-weight:650;line-height:1.15}.headline{letter-spacing:-.014em;font-size:clamp(1.1875rem,2vw,1.375rem);font-weight:600;line-height:1.25}.lede{letter-spacing:-.008em;color:var(--ink-secondary);max-width:46ch;font-size:clamp(1.125rem,2vw,1.3125rem);line-height:1.5}.body{color:var(--ink-secondary);max-width:68ch}.footnote{color:var(--ink-tertiary);font-size:.875rem}.eyebrow{text-transform:none;letter-spacing:-.005em;color:var(--ink-tertiary);font-size:.8125rem;font-weight:500}.mono{font-family:var(--font-mono);overflow-wrap:anywhere}.numeral{font-variant-numeric:tabular-nums;letter-spacing:-.02em}.card{background:var(--bg-raised);border:1px solid var(--card-hairline);border-radius:var(--radius-card);box-shadow:var(--card-shadow)}a.card{transition:transform .25s var(--ease-out), box-shadow .25s var(--ease-out)}a.card:active{transition-duration:.1s;transform:scale(.985)}.nav-material{background:var(--nav-material);-webkit-backdrop-filter:blur(20px)saturate(180%);backdrop-filter:blur(20px)saturate(180%)}.btn{background:var(--accent);min-height:44px;color:var(--accent-ink);letter-spacing:-.01em;cursor:pointer;transition:background-color var(--dur-ui) ease, transform var(--dur-press) var(--ease-out);border:1px solid #0000;border-radius:980px;justify-content:center;align-items:center;gap:.5rem;padding:.7rem 1.5rem;font-size:1rem;font-weight:600;text-decoration:none;display:inline-flex}.btn-sm{min-height:40px;padding:.5rem 1.15rem;font-size:.9375rem}.btn:hover{background:var(--accent-hover);text-decoration:none}.btn:active{background:var(--accent-pressed);transform:scale(.97)}.btn-secondary{background:var(--card-material);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-color:var(--card-hairline);color:var(--ink);box-shadow:var(--card-shadow)}.btn-secondary:hover{background:var(--bg-raised)}[data-theme=dark] .btn-secondary:hover{background:#3c3c40d9}.chip{background:color-mix(in srgb, var(--accent) 9%, transparent);color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 18%, transparent);border-radius:980px;align-items:center;padding:.28rem .75rem;font-size:.8125rem;font-weight:500;display:inline-flex}.media-frame{border-radius:var(--radius-card);border:1px solid var(--card-hairline);background:var(--bg-sunken);overflow:hidden}.media-frame img,.media-frame video{object-fit:cover;width:100%;height:100%}.reveal{opacity:0}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (prefers-reduced-transparency:reduce){.nav-material,.card,.btn-secondary{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--bg-raised)}}@media (prefers-contrast:more){:root{--ink-secondary:#3a3a3c;--hairline:#00000059;--hairline-strong:#00000080}[data-theme=dark]{--ink-secondary:#c9c9ce;--hairline:#ffffff73;--hairline-strong:#fff9}}:root{--frame-bezel:#242426;--frame-rim:#858589;--frame-bar:#f0f0f2;--frame-pill:#fff;--frame-url:#535358;--frame-divider:#d6d6da;--frame-metal-top:#e5e5e8;--frame-metal-bottom:#a5a5ac;--frame-shadow:0 2px 5px #00000014, 0 14px 28px #0000001f;--frame-shadow-hover:0 4px 8px #0000001a, 0 20px 36px #0000002e}[data-theme=dark]{--frame-bar:#29292d;--frame-pill:#3b3b40;--frame-url:#e1e1e6;--frame-divider:#48484d;--frame-metal-top:#bdbdc4;--frame-metal-bottom:#74747c;--frame-shadow:0 2px 5px #0000004d, 0 14px 28px #0006;--frame-shadow-hover:0 4px 8px #00000059, 0 20px 36px #0000008c}.device{width:100%;position:relative}.device-lid{background:var(--frame-bezel);box-shadow:inset 0 0 0 1px var(--frame-rim), var(--frame-shadow);flex-direction:column;display:flex;position:relative}.device-iphone .device-lid{aspect-ratio:9/19.5;border-radius:14%/6.46%}.device-ipad .device-lid{aspect-ratio:3/4;border-radius:4.5%/3.375%}.device-screen{background:var(--bg-sunken);min-height:0;overflow:hidden}.device-iphone .device-screen{border-radius:12%/5.54%;flex:1;margin:2.2%}.device-ipad .device-screen{border-radius:2%/1.5%;flex:1;margin:3%}.device-screen img{object-fit:cover;object-position:top;width:100%;height:100%}.device-island{background:#080809;border-radius:999px;width:28%;height:3%;position:absolute;top:2.4%;left:36%}.device-iphone:before,.device-iphone:after{content:"";background:var(--frame-rim);border-radius:1em;width:1%;position:absolute}.device-iphone:before{background:linear-gradient(to bottom, var(--frame-rim) 0 38%, transparent 38% 62%, var(--frame-rim) 62% 100%);height:13%;top:20%;left:-.8%}.device-iphone:after{height:8%;top:27%;right:-.8%}.device-cam{aspect-ratio:1;background:#080809;border-radius:50%;width:1.2%;position:absolute;top:.8%;left:49.4%;box-shadow:inset 0 0 0 1px #45454a}.device-mac{padding-inline:3%;padding-bottom:3%}.device-mac .device-lid{border-radius:2%/3%;padding:1.6%}.device-mac .device-screen{border-radius:.5em}.device-mac .device-screen img{object-fit:contain;height:auto}.device-mac .device-cam{width:.8%;top:.7%;left:49.6%}.device-base{aspect-ratio:35;background:linear-gradient(var(--frame-metal-top), var(--frame-metal-bottom));clip-path:polygon(0 0,100% 0,98% 78%,95% 100%,5% 100%,2% 78%);border-radius:0 0 1em 1em;width:106.4%;margin-left:-3.2%;display:block;position:relative}.device-base:before{content:"";background:var(--frame-metal-bottom);border-radius:0 0 1em 1em;width:14%;height:32%;position:absolute;top:0;left:43%}.browser-frame{background:var(--bg-sunken);width:100%;box-shadow:var(--frame-shadow);border:1px solid var(--frame-divider);border-radius:12px;overflow:hidden}.browser-frame-bar{background:var(--frame-bar);border-bottom:1px solid var(--frame-divider);grid-template-columns:60px minmax(0,1fr) 60px;align-items:center;gap:8px;height:40px;padding:0 12px;display:grid}.browser-frame-dots{gap:6px;display:flex}.browser-frame-dots i{border-radius:50%;width:12px;height:12px;box-shadow:inset 0 0 0 1px #0000001f}.browser-frame-dots i:first-child{background:#ff5f57}.browser-frame-dots i:nth-child(2){background:#febc2e}.browser-frame-dots i:nth-child(3){background:#28c840}.browser-frame-title{background:var(--frame-pill);width:100%;min-width:0;max-width:28rem;height:26px;color:var(--frame-url);border-radius:6px;justify-content:center;justify-self:center;align-items:center;gap:7px;padding-inline:10px;font-size:11.5px;font-weight:500;display:flex}.browser-frame-title>:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.browser-frame-lock{border:1px solid;border-radius:1px;flex:0 0 7px;height:6px;margin-top:3px;position:relative}.browser-frame-lock:before{content:"";border:1px solid;border-bottom:0;border-radius:4px 4px 0 0;width:5px;height:5px;position:absolute;top:-5px;left:0}.browser-frame-body img{object-fit:contain;width:100%;height:auto;display:block}.gallery-item{min-width:0}.gallery-item>.device,.gallery-item>.browser-frame,.gallery-item>.plain-shot{transition:transform var(--dur-ui) var(--ease-out), box-shadow var(--dur-ui) var(--ease-out)}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.gallery-item>:hover{transform:translateY(-4px)}.gallery-item>.browser-frame:hover,.gallery-item>.plain-shot:hover,.gallery-item>.device:hover .device-lid{box-shadow:var(--frame-shadow-hover)}}.device-lid{transition:box-shadow var(--dur-ui) var(--ease-out)}.plain-shot{background:var(--bg-sunken);box-shadow:inset 0 0 0 1px var(--card-hairline), 0 8px 24px #0000001f;border-radius:12px;overflow:hidden}.plain-shot img{width:100%;height:auto;display:block}.grid-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:clamp(1rem,2.5vw,1.75rem);display:grid}@media (hover:hover) and (pointer:fine){.project-card:hover{box-shadow:var(--card-shadow-lifted);transform:translateY(-3px)}.yt-lite-facade:hover .yt-lite-play{background:#000000b8;transform:scale(1.07)}.channel-card:hover .channel-arrow{opacity:1;transform:translate(0)}}.project-card{transition:transform .25s var(--ease-out), box-shadow .25s var(--ease-out);flex-direction:column;display:flex;overflow:hidden}.project-card:focus-within{box-shadow:var(--card-shadow-lifted);transform:translateY(-3px)}.project-card .project-media{aspect-ratio:16/10;border-radius:calc(var(--radius-card) - 8px);background:var(--bg-sunken);margin:8px 8px 0;position:relative;overflow:hidden}.project-card .project-media img,.project-card .project-media video{object-fit:cover;width:100%;height:100%}.project-card .project-body{flex-direction:column;flex:1;gap:.5rem;padding:1.25rem 1.35rem 1.4rem;display:flex}.project-card .project-meta{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.award-row{border-top:1px solid var(--hairline);grid-template-columns:4.5rem 1fr auto;align-items:start;gap:clamp(1rem,3vw,2rem);padding:clamp(1.25rem,2.5vw,1.75rem) clamp(1.25rem,3vw,2rem);display:grid}.award-row:last-child{border-bottom:1px solid var(--hairline)}.award-row .award-year{font-variant-numeric:tabular-nums;color:var(--ink-tertiary);padding-top:.2rem;font-weight:600}.award-metrics{flex-wrap:wrap;gap:.4rem;margin-top:.6rem;display:flex}.award-cert{border:1px solid var(--card-hairline);border-radius:12px;max-width:380px;margin-top:.75rem;overflow:hidden}.award-cert img{width:100%;display:block}.cert-card{transition:transform .25s var(--ease-out), box-shadow .25s var(--ease-out);flex-direction:column;gap:.5rem;padding:1.4rem 1.5rem;display:flex}@media (hover:hover) and (pointer:fine){.cert-card:hover{box-shadow:var(--card-shadow-lifted);transform:translateY(-3px)}}.timeline{margin:0;padding:0;list-style:none;position:relative}.timeline:before{content:"";background:var(--hairline-strong);width:1px;position:absolute;top:.5rem;bottom:.5rem;left:.4rem}.timeline li{padding-left:2.25rem;padding-block:1.1rem;position:relative}.timeline li:before{content:"";background:var(--bg);border:2.5px solid var(--accent);border-radius:50%;width:.8rem;height:.8rem;position:absolute;top:1.6rem;left:0}.repo-card{height:100%;transition:transform .25s var(--ease-out), box-shadow .25s var(--ease-out);flex-direction:column;gap:.55rem;padding:1.25rem 1.35rem;display:flex}@media (hover:hover) and (pointer:fine){.repo-card:hover{box-shadow:var(--card-shadow-lifted);transform:translateY(-3px)}}.repo-card .repo-head{align-items:center;gap:.5rem;font-weight:600;display:flex}.repo-card .repo-lang{color:var(--ink-tertiary);align-items:center;gap:.4rem;margin-top:auto;font-size:.8125rem;display:inline-flex}.repo-card .repo-dot{border-radius:50%;width:.6rem;height:.6rem}.hero{padding-block:clamp(3.5rem,8vw,6rem) clamp(1rem,3vw,2rem);position:relative;overflow:hidden}.hero-grid{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center;gap:clamp(2.5rem,5vw,4rem);display:grid}.hero-copy h1{margin:0 0 1.25rem}.hero-copy .headline{color:var(--ink);margin:0 0 .9rem}.hero-copy .lede{margin:0 0 1rem}.hero-credential{color:var(--ink-secondary);margin:0 0 1.75rem;font-size:.9375rem}.hero-status{align-items:baseline;gap:.5rem;margin:1.25rem 0 0;display:flex}.hero-status .status-dot{flex:0 0 .5rem}.hero-stage{margin:0 calc(var(--shell-pad) * -.5) 3rem 0;min-width:0;position:relative}.hero-stage-link{aspect-ratio:16/10;border-color:var(--hairline);display:block}.hero-stage-link:focus-visible{box-shadow:none;outline:3px solid var(--accent);outline-offset:-4px}.hero-caption{text-align:right;max-width:62%;margin:.75rem 0 0 auto}.hero-portrait{aspect-ratio:4/5;border-radius:var(--radius-card);border:1px solid var(--card-hairline);width:30%;box-shadow:0 0 0 5px var(--bg), var(--card-shadow-lifted);background:var(--bg-sunken);pointer-events:auto;position:absolute;bottom:0;left:-9%;overflow:hidden}.hero-portrait img{object-fit:cover;width:100%;height:100%;transform:scale(1.06)}@media (width<=860px){.hero-grid{grid-template-columns:1fr}.hero-stage{margin:0 0 1.5rem}.hero-portrait{width:30%;bottom:0;left:4%}.hero-caption{max-width:58%}}.status-line{color:var(--ink-secondary);align-items:center;gap:.5rem;font-size:.875rem;display:inline-flex}.status-dot{background:var(--success);width:.5rem;height:.5rem;box-shadow:0 0 0 0 color-mix(in srgb, var(--success) 45%, transparent);animation:pulse-dot 2.4s var(--ease-in-out) infinite;border-radius:50%}@keyframes pulse-dot{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--success) 45%, transparent)}55%{box-shadow:0 0 0 7px color-mix(in srgb, var(--success) 0%, transparent)}to{box-shadow:0 0 0 0 color-mix(in srgb, var(--success) 0%, transparent)}}.page-header{padding-block:clamp(3rem,7vw,5rem) clamp(2rem,4vw,3rem)}.story-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:clamp(1.25rem,3vw,2rem);display:grid}.story-grid .story-block{border-top:2px solid var(--accent);padding-top:1rem}.story-grid .story-block h3{text-transform:uppercase;letter-spacing:.09em;color:var(--ink-secondary);margin:0 0 .6rem;font-size:.8125rem}.detail-hero{border-radius:var(--radius-card);border:1px solid var(--card-hairline);background:var(--bg-sunken);aspect-ratio:21/9;max-height:62vh;overflow:hidden}.detail-hero video,.detail-hero img{object-fit:cover;width:100%;height:100%}.detail-hero.detail-hero-yt{aspect-ratio:16/9}.yt-lite,.yt-lite-facade,.yt-lite iframe{width:100%;height:100%}.yt-lite-facade{cursor:pointer;background:0 0;border:0;padding:0;display:block;position:relative}.yt-lite-facade img{object-fit:cover;width:100%;height:100%;display:block}.yt-lite-play{color:#fff;-webkit-backdrop-filter:blur(6px);width:68px;height:68px;transition:transform .2s var(--ease-out), background .2s var(--ease-out);background:#00000094;border-radius:50%;justify-content:center;align-items:center;margin:auto;display:flex;position:absolute;inset:0;box-shadow:0 6px 20px #00000059}.yt-lite-facade:focus-visible .yt-lite-play{background:#000000b8;transform:scale(1.07)}.yt-lite iframe{border:0;display:block}@media (width<=720px){.detail-hero{aspect-ratio:4/3}}.shot-gallery{gap:2.5rem;display:grid}.shot-group-label{margin:0 0 1rem}.shot-grid{grid-template-columns:minmax(0,1fr);align-items:start;gap:1.5rem;display:grid}.shot-grid-phone{flex-wrap:wrap;justify-content:center;gap:clamp(1rem,3vw,2rem);max-width:976px;margin-inline:auto;display:flex}.shot-grid-phone>.gallery-item{flex:none;width:clamp(150px,22vw,220px)}.shot-grid-ipad>.gallery-item{justify-self:center;width:100%;max-width:340px}@media (width>=720px){.shot-grid-ipad,.shot-grid-plain{grid-template-columns:repeat(2,minmax(0,1fr))}.shot-grid-ipad>.gallery-item{max-width:420px}}@media (width>=900px){.shot-grid-desktop{grid-template-columns:repeat(2,minmax(0,1fr))}.shot-grid-feature>:first-child{grid-column:1/-1}}@media (width<=640px){.shot-grid-phone{width:100%;min-width:0;max-width:100%;scroll-padding-inline:var(--shell-pad);scroll-snap-type:x mandatory;scrollbar-width:none;flex-wrap:nowrap;justify-content:flex-start;margin-inline:0;padding:.5rem 3px 1.5rem;overflow-x:auto}.shot-grid-phone::-webkit-scrollbar{display:none}.shot-grid-phone>.gallery-item{scroll-snap-align:start;flex:0 0 min(72vw,260px);width:auto}}.contact-clock{font-variant-numeric:tabular-nums;letter-spacing:-.03em;font-size:clamp(2.5rem,6vw,3.75rem);font-weight:650;line-height:1}.channel-list{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:1rem;display:grid}.channel-card{min-height:76px;color:var(--ink);transition:transform .25s var(--ease-out), box-shadow .25s var(--ease-out);flex-direction:row;align-items:center;gap:.9rem;padding:1rem 1.1rem;text-decoration:none;display:flex}@media (hover:hover) and (pointer:fine){.channel-card:hover{box-shadow:var(--card-shadow-lifted);text-decoration:none;transform:translateY(-3px)}}.project-card:active,.repo-card:active,.cert-card:active,.channel-card:active{transition-duration:.1s;transform:scale(.985)}.channel-tile{width:44px;height:44px;color:var(--ink-secondary);background:var(--bg-sunken);border:1px solid var(--card-hairline);transition:background-color .25s var(--ease-out), border-color .25s var(--ease-out), color .25s var(--ease-out), transform .25s var(--ease-out);border-radius:12px;flex:none;justify-content:center;align-items:center;display:inline-flex}@media (hover:hover) and (pointer:fine){.channel-card:hover .channel-tile{transform:scale(1.06)}}.channel-card[data-channel=linkedin]:hover .channel-tile{color:#0a66c2;background:#0a66c21a;border-color:#0a66c23d}.channel-card[data-channel=github]:hover .channel-tile{color:var(--ink);background:color-mix(in srgb, var(--ink) 8%, transparent);border-color:color-mix(in srgb, var(--ink) 22%, transparent)}.channel-card[data-channel=google-play]:hover .channel-tile,.channel-card[data-channel=phone]:hover .channel-tile{color:#00994f;background:#00994f1a;border-color:#00994f3d}.channel-play-stack{display:inline-flex;position:relative}.channel-play-stack svg{transition:opacity .25s var(--ease-out)}.channel-play-color{opacity:0;position:absolute;inset:0}.channel-card[data-channel=google-play]:hover .channel-play-mono,.channel-card[data-channel=google-play]:focus-visible .channel-play-mono{opacity:0}.channel-card[data-channel=google-play]:hover .channel-play-color,.channel-card[data-channel=google-play]:focus-visible .channel-play-color{opacity:1}.channel-copy{gap:.15rem;min-width:0;display:grid}.channel-label{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-tertiary);font-size:.75rem;font-weight:600}.channel-value{word-break:break-word;font-size:.9375rem;font-weight:600}.channel-arrow{color:var(--ink-tertiary);opacity:0;transition:opacity .25s var(--ease-out), transform .25s var(--ease-out);flex:none;margin-left:auto;transform:translate(-6px)}.channel-card:focus-visible .channel-arrow{opacity:1;transform:translate(0)}.channel-tile.is-static{cursor:default}.device,.browser-frame,.plain-shot,.shell [style*=grid-template-columns]>*{min-width:0;max-width:100%}.shell>*,.story-grid>*,.grid-cards>*,.card>*{min-width:0}.project-meta,.repo-head,.story-block,.card .numeral{overflow-wrap:anywhere}@media (width<=640px){.shell .card[style*=grid-template-columns]{grid-template-columns:minmax(0,1fr)!important}}.hero-status .status-dot{animation:none}.home-work{gap:clamp(1.25rem,3vw,2rem);display:grid}.work-tile{color:var(--ink);flex-direction:column;display:flex;overflow:hidden}.work-tile:hover{text-decoration:none}.work-tile:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.work-tile.work-feature{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;display:grid}.work-media{aspect-ratio:4/3;background:var(--bg-sunken);overflow:hidden}.work-feature .work-media{aspect-ratio:16/10}.work-media img,.work-media video{object-fit:cover;width:100%;height:100%}.work-body{flex-direction:column;flex:1;gap:.75rem;padding:clamp(1.25rem,3vw,2rem);display:flex}.work-body h3,.work-body p{margin:0}.work-body .link-arrow{margin-top:auto;padding-top:.5rem}.work-title-row{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.work-title-row .numeral{flex-shrink:0}.work-pair{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1.25rem,3vw,2rem);display:grid}.home-awards h3,.home-awards p{margin:0}.home-awards .footnote{margin-top:.35rem}.home-award-year{color:var(--ink-tertiary)}.home-award-summary{text-align:right;max-width:36ch}.home-repo-count{margin:.75rem 0 0}.home-repos{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:2.5rem;margin:0;padding:0;list-style:none;display:grid}.home-repos li{border-bottom:1px solid var(--hairline);min-width:0}.home-repos li:nth-child(-n+2){border-top:1px solid var(--hairline)}.home-repo-row{color:var(--ink);grid-template-columns:minmax(0,1fr) auto 14px;align-items:center;gap:.75rem;padding-block:.9rem;display:grid}.home-repo-row:hover{text-decoration:none}.home-repo-copy{min-width:0}.home-repo-copy h3{margin:0;font-size:.95rem;font-weight:500}.home-repo-copy p{white-space:nowrap;text-overflow:ellipsis;margin:.25rem 0 0;overflow:hidden}.home-repo-meta{color:var(--ink-tertiary);white-space:nowrap;align-items:center;gap:.4rem;font-size:.8125rem;display:inline-flex}.home-repo-dot{border-radius:50%;flex-shrink:0;width:.5rem;height:.5rem}.home-repo-arrow{opacity:.5;transition:opacity .2s var(--ease-out), transform .2s var(--ease-out);display:flex}.home-repo-row:focus-visible .home-repo-arrow{opacity:1;transform:translate(0)}.home-contact{padding-block:clamp(2rem,5vw,3.5rem)}.home-contact h2{margin:0 0 1rem}.home-contact .lede{max-width:38ch;margin:0 0 1.75rem}.home-contact-email{color:var(--ink);overflow-wrap:anywhere;max-width:100%}@media (hover:hover) and (pointer:fine){.work-tile:hover{box-shadow:var(--card-shadow-lifted);transform:translateY(-3px)}.work-tile:active{transform:scale(.985)}.home-repo-arrow{opacity:0;transform:translate(-4px)}.home-repo-row:hover .home-repo-arrow{opacity:1;transform:translate(0)}}@media (width<=760px){.work-tile.work-feature,.work-pair,.home-repos{grid-template-columns:1fr}.home-awards .ruled-row{grid-template-columns:3.5rem 1fr}.home-award-summary{text-align:left;grid-column:2}.home-repos li:nth-child(2){border-top:0}.home-repo-copy p{white-space:normal}}@media (width<=420px){.home-repo-row{grid-template-columns:minmax(0,1fr) 14px}.home-repo-meta{grid-area:2/1}.home-repo-arrow{grid-area:1/2}}.page-header h1{margin:0 0 .75rem}.page-content{padding-bottom:var(--section-gap)}.page-stack{gap:clamp(2rem,4vw,3rem);display:grid}.content-heading-row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.4rem 1rem;display:flex}.content-heading-row h2,.content-heading-row h3{margin:0}.detail-title{font-size:clamp(2.5rem,6vw,4.25rem)}.detail-breadcrumb{margin-bottom:1rem}.detail-media{margin-bottom:clamp(2.5rem,5vw,4rem)}.detail-gallery-preview{grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;gap:1.5rem;padding-block:1.5rem;display:grid}.detail-gallery-preview .gallery-item-phone{justify-self:center;width:min(100%,220px)}.detail-gallery-preview .gallery-item-ipad{justify-self:center;width:min(100%,340px)}.plain-shot{width:100%}@media (width<=640px){.detail-gallery-preview{grid-template-columns:minmax(0,1fr)}}.detail-layout{grid-template-columns:minmax(0,1fr) 260px;align-items:start;gap:clamp(2rem,5vw,4rem);display:grid}.detail-layout>*{min-width:0}.detail-sidebar{grid-area:1/2;position:sticky;top:88px}.detail-meta{gap:1.5rem;margin:0;display:grid}.detail-meta dt{color:var(--ink-tertiary);margin-bottom:.4rem;font-size:.875rem}.detail-meta dd{overflow-wrap:anywhere;margin:0;font-size:.9375rem}.detail-meta-line{display:block}.detail-meta .link-arrow{margin-bottom:.5rem;display:flex}.detail-meta .headline{color:var(--ink);margin:0 0 .5rem}.detail-story{grid-area:1/1;gap:2rem;max-width:68ch;display:grid}.detail-story-block h2{margin:0 0 .75rem}.detail-story-block p{margin:0}.detail-followup{gap:3rem;margin-top:3rem;display:grid}.more-work-row h3,.more-work-row p{margin:0}.more-work-row p{margin-top:.35rem}.award-index-row{grid-template-columns:4.5rem minmax(0,1fr) minmax(0,36ch);align-items:start}.award-index-row h3,.award-index-row p{margin:0}.award-index-row .footnote{margin-top:.35rem}.award-summary p+p{margin-top:.75rem}.award-thumbs{flex-wrap:wrap;gap:.5rem;margin-block:.75rem;display:flex}.award-thumbs a{border:1px solid var(--hairline);border-radius:8px;overflow:hidden}.award-thumbs img{width:auto;height:64px}.achievement-tabs{border:1px solid var(--hairline);border-radius:24px;flex-wrap:wrap;gap:.25rem;padding:.25rem;display:inline-flex}.achievement-tab{color:var(--ink-secondary);cursor:pointer;transition:background-color var(--dur-ui) var(--ease-out);background:0 0;border:0;border-radius:20px;padding:.55rem 1rem;font-size:.9375rem;font-weight:600}.achievement-tab.is-active{background:var(--bg-sunken);color:var(--ink)}.cert-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1.5rem;display:grid}.cert-grid>*{min-width:0}.cert-card{height:100%}.cert-card p{margin:0}.cert-card .headline{font-size:1.0625rem}.cert-verify{margin-top:auto;padding-top:.5rem}.experience-org{color:var(--ink-secondary);margin:.3rem 0 0;font-size:.9375rem;font-weight:600}.experience-summary{margin:.5rem 0 0}.experience-sections{gap:2.5rem;margin-top:3rem;display:grid}.education-list{gap:1.25rem;display:grid}.education-list p{margin:.25rem 0 0}.contact-primary{gap:2rem;display:grid}.contact-local{border-top:1px solid var(--hairline);padding-top:1.5rem}.contact-timezone{letter-spacing:0;font-weight:500}.channel-list{grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr))}.not-found{text-align:center;padding-block:clamp(5rem,14vw,9rem)}.not-found .lede{margin:0 auto 2rem}.site-nav{z-index:50;transition:border-color var(--dur-ui) var(--ease-out);border-bottom:1px solid #0000;position:sticky;top:0}.site-nav.nav-scrolled{border-bottom-color:var(--nav-hairline)}.nav-inner{justify-content:space-between;align-items:center;gap:1rem;height:3.5rem;display:flex}.nav-brand{color:var(--ink);letter-spacing:-.02em;font-size:1.0625rem;font-weight:700}.nav-brand-dot{color:var(--accent)}.nav-links{align-items:center;gap:.25rem;display:flex}.nav-link{color:var(--ink-secondary);transition:color var(--dur-ui) var(--ease-out);padding:.45rem .8rem;font-size:.9375rem;font-weight:500;position:relative}.nav-link.is-active{color:var(--ink);font-weight:600}.nav-link:hover,.nav-brand:hover{text-decoration:none}.nav-active{background:var(--ink);height:1.5px;position:absolute;bottom:0;left:.8rem;right:.8rem}.nav-actions{align-items:center;gap:.5rem;display:flex}.icon-btn{border:1px solid var(--card-hairline);background:var(--card-material);width:36px;height:36px;color:var(--ink-secondary);cursor:pointer;transition:color var(--dur-ui) var(--ease-out), transform var(--dur-press) var(--ease-out);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.icon-btn:active{transform:scale(.92)}.nav-menu-btn{display:none}.mobile-menu{border-bottom:1px solid var(--nav-hairline);overflow:hidden}.mobile-menu-inner{gap:.25rem;padding-block:.75rem;display:grid}.mobile-menu .nav-link{border-radius:12px;padding:.7rem .8rem;font-size:1.0625rem}.site-footer{border-top:1px solid var(--hairline);background:var(--bg-sunken);margin-top:var(--section-gap);padding-block:2.5rem}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem 2rem;display:flex}.footer-name{letter-spacing:-.015em;font-weight:600}.footer-links{flex-wrap:wrap;gap:1.25rem;display:flex}.footer-links a{text-underline-offset:.2em}@media (hover:hover) and (pointer:fine){.icon-btn:hover,.nav-link:hover{color:var(--ink)}}@media (width<=960px){.detail-layout{grid-template-columns:minmax(0,1fr)}.detail-sidebar{grid-area:1/1;position:static}.detail-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-story{grid-row:2}}@media (width<=760px){.award-index-row{grid-template-columns:3.5rem minmax(0,1fr)}.award-summary,.more-work-row>.link-arrow{grid-column:2}}@media (width<=720px){.nav-links{display:none}.nav-menu-btn{display:inline-flex}}.home-awards .award-summary{text-align:right}.home-repo-arrow.link-arrow{color:inherit}@media (width<=760px){.home-awards .award-summary{text-align:left}}.achievements h1,.achievements h2,.award-title h3,.cert-card h2{text-wrap:balance}.achievements .achievement-tabs{border-radius:16px;width:fit-content;max-width:100%;display:flex}.achievement-tab{border-radius:12px;min-height:44px;transition:none}.award-filters{scroll-snap-type:x mandatory;gap:8px;padding:4px 4px 16px;display:flex;overflow-x:auto}.filter-chip{scroll-snap-align:start;border:1px solid var(--hairline-strong);background:var(--bg);min-height:44px;color:var(--ink);cursor:pointer;border-radius:999px;flex:none;padding:8px 16px}.filter-chip[aria-pressed=true]{background:var(--ink);color:var(--bg)}.award-proof-row{grid-template-columns:64px minmax(0,1fr);align-items:start;gap:24px;padding-block:32px;display:grid}.award-year{color:var(--ink-secondary)}.award-copy{min-width:0}.award-copy p{max-width:72ch;margin:8px 0 0}.award-title{flex-wrap:wrap;align-items:baseline;gap:8px 16px;display:flex}.award-title h3{margin:0}.rank-pill{background:var(--bg-sunken);color:var(--ink);border:1px solid var(--hairline-strong);white-space:nowrap;border-radius:999px;padding:4px 12px;font-size:.8125rem;font-weight:600;display:inline-block}.award-thumbs{align-items:center;gap:8px;margin:16px 0 0}.proof-thumb{border:1px solid var(--hairline-strong);background:var(--bg-sunken);cursor:pointer;aspect-ratio:10/7;border-radius:8px;width:160px;max-width:100%;padding:0;display:block;overflow:hidden}.proof-thumb img{object-fit:cover;object-position:top;width:100%;height:100%}.proof-link{color:var(--link);cursor:pointer;background:0 0;border:0;min-height:44px;padding:8px;font-size:.875rem}.award-copy>.link-arrow{margin-top:16px}.more-results{margin-top:48px}.more-results>h2{margin:0 0 16px}.award-compact{grid-template-columns:64px minmax(0,1fr) auto;align-items:center;padding-block:16px}.award-compact .headline{font-size:1rem}.cert-card{background:var(--bg-raised);box-shadow:none;border-radius:var(--radius-card);flex-direction:column;gap:16px;display:flex}.cert-card:hover{box-shadow:none;transform:none}.cert-thumb{width:100%;margin-top:auto}.cert-no-proof{min-height:44px;margin-top:auto!important}.credential-id{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.credential-id code{overflow-wrap:anywhere;font-size:.8125rem}.credential-id .copy-btn{min-height:44px;padding:8px 12px}.cert-verify{min-height:44px;margin-top:0}.academic-row{grid-template-columns:96px minmax(0,1fr);gap:24px}.academic-row h2{margin:0}.academic-row p{margin:8px 0 0}.proof-viewer{border:1px solid var(--hairline-strong);border-radius:var(--radius-card);background:var(--bg-raised);width:min(1000px,100vw - 32px);max-width:none;max-height:92dvh;color:var(--ink);padding:16px;overflow:auto}.proof-viewer::backdrop{background:#000000b3}.proof-viewer>img{object-fit:contain;width:100%;height:min(65vh,720px)}.proof-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;display:flex}.proof-toolbar p{flex:1;margin:0;font-size:.875rem}.proof-toolbar button,.proof-toolbar a{min-width:44px;min-height:44px;padding:8px 12px}.proof-toolbar button{border:1px solid var(--hairline-strong);background:var(--bg-sunken);cursor:pointer;border-radius:8px}.proof-toolbar button:disabled{opacity:.5;cursor:default}.proof-navigation{align-items:center;gap:8px;font-size:.875rem;display:flex}.proof-error{text-align:center;padding-block:64px}.achievements :focus-visible,.proof-viewer :focus-visible,.proof-thumb:focus-visible,.proof-link:focus-visible{outline:3px solid var(--accent);outline-offset:3px;box-shadow:none}.proof-thumb:active,.filter-chip:active,.proof-toolbar button:active,.proof-link:active{background:var(--hairline-strong)}@media (hover:hover) and (pointer:fine){.proof-thumb:hover,.filter-chip:hover,.proof-toolbar button:hover{border-color:var(--ink-secondary)}.proof-link:hover{text-decoration:underline}}@media (width<=640px){.achievements .achievement-tabs{border-radius:16px;flex-wrap:nowrap;width:100%}.achievements .achievement-tab{flex:1;padding:8px 4px;font-size:.75rem}.award-proof-row{grid-template-columns:1fr;gap:8px}.award-compact{grid-template-columns:minmax(0,1fr) auto}.award-compact .award-year{grid-column:1/-1}.award-thumbs .proof-thumb{width:128px}.academic-row{grid-template-columns:1fr;gap:8px}.proof-viewer{padding:8px}.proof-navigation{gap:4px}.proof-toolbar button{padding-inline:8px}}.award-copy .footnote,.cert-card .footnote,.academic-row .footnote{color:var(--ink-secondary)}.cert-card:active{transform:none}.cert-card{padding:24px;transition:none}.page-header:has(+.achievements) h1{text-wrap:balance}.achievement-highlights{--medal-gold:#85600b;--medal-silver:#59616c;--medal-bronze:#92512b;font-variant-numeric:tabular-nums;min-width:0}[data-theme=dark] .achievement-highlights{--medal-gold:#e8c76c;--medal-silver:#c3cbd6;--medal-bronze:#e0a17c}.achievement-highlights>h2{margin:0 0 20px}.highlights-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;display:grid}.highlights-grid>*{min-width:0}.highlight-hero{grid-area:span 2/span 6}.highlight-totals,.highlight-podium{grid-column:span 6}.highlight-mix,.highlight-latest,.highlight-verified{grid-column:span 4}.highlight-tile{text-align:left;width:100%;min-width:0;height:100%;color:var(--ink);background:var(--bg-raised);border:1px solid var(--hairline);border-radius:var(--radius-card);box-shadow:var(--card-shadow);overflow-wrap:anywhere;transition:transform .18s var(--ease-out), box-shadow .18s var(--ease-out);flex-direction:column;gap:16px;padding:24px;display:flex}button.highlight-tile{cursor:pointer}.highlight-tile h3,.highlight-tile p{margin:0}.highlight-caption{color:var(--ink-secondary);font-size:.875rem;line-height:1.5}.highlight-action{color:var(--link);margin-top:auto;font-size:.875rem;font-weight:600}.highlight-tile strong{letter-spacing:-.035em;font-size:clamp(2.5rem,4vw,3.75rem);font-weight:650;line-height:1}.highlight-hero-button{gap:24px}.highlight-proof{border-radius:var(--radius-card);flex:1;width:100%;min-height:220px;display:block;position:relative;overflow:hidden;box-shadow:0 4px 16px #00000017}.highlight-proof:after{content:"";border:1px solid var(--hairline);border-radius:inherit;pointer-events:none;position:absolute;inset:0}.highlight-proof img{object-fit:cover;object-position:top;width:100%;height:100%;position:absolute}.highlight-copy{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.highlight-copy>.title{font-size:clamp(1.5rem,2.6vw,2rem)}.highlight-copy>.rank-pill{color:var(--ink)}.highlight-total-row{flex-wrap:wrap;gap:28px;display:flex}.highlight-total-row>span{flex-direction:column;gap:8px;font-size:.9375rem;display:flex}.highlight-chart{width:100%;height:140px;margin-top:auto;display:block;overflow:visible}.highlight-chart text{fill:var(--ink-secondary);font:12px var(--font-sans)}.highlight-chart rect{fill:var(--ink-secondary);fill-opacity:.3}.highlight-chart rect.is-latest{fill:var(--accent);fill-opacity:1}.highlight-podium-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-block:8px;display:grid}.highlight-podium-row>span{flex-direction:column;gap:12px;display:flex}.highlight-medal-label{align-items:center;gap:6px;font-size:.8125rem;display:flex}.medal-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.medal-gold{background:var(--medal-gold)}.medal-silver{background:var(--medal-silver)}.medal-bronze{background:var(--medal-bronze)}.highlight-mix-bar{gap:3px;min-height:44px;display:flex}.highlight-mix-bar button{cursor:pointer;border:0;border-radius:4px;flex-basis:0;min-width:12px}.mix-tone-0{background:var(--accent)}.mix-tone-1{background:color-mix(in srgb, var(--ink) 80%, var(--bg-raised))}.mix-tone-2{background:color-mix(in srgb, var(--ink) 60%, var(--bg-raised))}.mix-tone-3{background:color-mix(in srgb, var(--ink) 40%, var(--bg-raised))}.mix-tone-4{background:color-mix(in srgb, var(--ink) 22%, var(--bg-raised))}.highlight-mix-legend{flex-wrap:wrap;gap:2px 12px;display:flex}.highlight-mix-legend button{cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;min-height:44px;padding:8px 0;font-size:.8125rem;display:inline-flex}.highlight-mix-legend i{border-radius:50%;width:8px;height:8px}.highlight-mix-legend .numeral{color:var(--ink-secondary)}.highlight-mix-legend button[aria-pressed=true]{text-underline-offset:4px;text-decoration:underline}.highlight-photo{color:#fff;isolation:isolate;background:#171719;justify-content:flex-end;min-height:300px;position:relative;overflow:hidden}.highlight-photo>img{object-fit:cover;z-index:-2;width:100%;height:100%;position:absolute;inset:0}.highlight-photo:before{content:"";z-index:-1;background:linear-gradient(#00000026,#000000d1 48%,#000000f0);position:absolute;inset:0}.highlight-photo-copy{flex-direction:column;gap:12px;font-size:.875rem;display:flex}.highlight-photo-meta{justify-content:space-between;align-items:center;gap:8px;display:flex}.highlight-photo .rank-pill{color:#fff;background:#0009;border-color:#ffffff80}.highlight-photo .highlight-action{color:#fff}.highlight-verified-heading{flex-direction:column;gap:12px;display:flex}.highlight-verified-heading .headline{font-size:1.125rem}.highlight-issuers{flex-wrap:wrap;gap:6px;display:flex}.highlight-issuers>span{border:1px solid var(--hairline);border-radius:6px;padding:4px 8px;font-size:.75rem;font-weight:600;display:inline-block}.achievement-highlights :focus-visible{outline:3px solid var(--accent);outline-offset:3px;box-shadow:none}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.highlight-tile:hover{box-shadow:var(--card-shadow-lifted);transform:translateY(-2px)}}@media (prefers-reduced-motion:no-preference){button.highlight-tile:active,.highlight-mix button:active{transform:scale(.985)}}@media (prefers-reduced-motion:reduce){.highlights-grid>*{opacity:1!important;transform:none!important}.highlight-tile{transition:none}}@media (width<=1023px){.highlights-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.highlights-grid>*{grid-column:span 1}.highlight-hero{grid-row:span 2}.highlight-verified{grid-column:span 2}.highlight-verified-heading{flex-direction:row;align-items:center}.highlight-verified-heading .headline{max-width:28ch}}@media (width<=599px){.highlights-grid{grid-template-columns:minmax(0,1fr)}.highlights-grid>*{grid-area:auto/1}.highlight-tile{padding:20px}.highlight-proof{flex:none;height:260px}.highlight-verified-heading{flex-direction:column;align-items:flex-start}}.work-page,.work-page section,.work-page section>*,.work-showcase>*,.work-grid>*{min-width:0}.work-stats{color:var(--ink-secondary);flex-wrap:wrap;gap:.6rem 0;margin-top:2rem;display:flex}.work-stats span{border-left:1px solid var(--hairline-strong);padding-inline:1rem}.work-stats span:first-child{border:0;padding-left:0}.work-stats b{color:var(--ink);font-weight:600}.work-filter-bar{border-top:1px solid var(--hairline);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:2rem;padding-block:1.5rem;display:flex}.work-filters,.work-chips{flex-wrap:wrap;gap:.5rem;display:flex}.work-filters button{font:inherit;border:1px solid var(--hairline-strong);background:var(--bg-raised);min-height:44px;color:var(--ink-secondary);cursor:pointer;border-radius:999px;padding:.5rem 1rem;font-size:.875rem}.work-filters button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.work-filter-bar p{color:var(--ink-secondary);margin:0}.work-featured{margin-bottom:var(--section-gap);gap:clamp(3rem,6vw,6rem);display:grid}.work-showcase{color:var(--ink);border-radius:20px;grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:clamp(1.5rem,4vw,3rem);display:grid}.work-showcase-reverse{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}.work-showcase-reverse .work-feature-media{order:2}.work-feature-media{aspect-ratio:16/10;border-top:2px solid var(--project-accent);background:var(--bg-raised);box-shadow:var(--card-shadow);border-radius:20px;overflow:hidden}.work-feature-media img,.work-feature-media video{object-fit:cover;width:100%;height:100%}.work-feature-copy h2{overflow-wrap:anywhere;margin:.6rem 0;font-size:clamp(2rem,3.4vw,3rem)}.work-number{color:var(--ink-secondary);font-size:.875rem}.work-tagline{margin:0;font-size:1.125rem;line-height:1.45}.work-statline{color:var(--ink-secondary);margin:1rem 0;font-size:.9375rem}.work-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;padding-block:.5rem 1.5rem;display:grid}.work-metric strong{letter-spacing:-.03em;font-size:2.5rem;font-weight:600;line-height:1.1;display:block}.work-metric span{color:var(--ink-secondary);margin-top:.4rem;font-size:.8125rem;display:block}.work-metric strong.work-metric-text{letter-spacing:-.01em;font-size:1.125rem;line-height:1.35}.work-chip{border:1px solid var(--hairline-strong);background:var(--bg-raised);color:var(--ink-secondary);border-radius:999px;padding:.25rem .65rem;font-size:.75rem}.work-card-bottom{justify-content:space-between;align-items:center;gap:.75rem;margin-top:1.5rem;font-size:.875rem;display:flex}.work-year{color:var(--ink-secondary);align-items:center;gap:.5rem;display:flex}.work-year i{background:var(--project-accent);border-radius:50%;width:6px;height:6px}.work-grid{grid-template-columns:minmax(0,1fr);gap:1.5rem;display:grid}.work-tile{background:var(--bg-raised);border:1px solid var(--hairline);height:100%;color:var(--ink);transition:transform .22s var(--ease-out);border-radius:16px;flex-direction:column;display:flex;overflow:hidden}.work-tile-media{aspect-ratio:16/10;background:var(--bg-sunken);border-radius:16px;overflow:hidden}.work-tile-media img{object-fit:cover;width:100%;height:100%;transition:transform .22s var(--ease-out)}.work-tile-copy{flex-direction:column;flex:1;padding:1.25rem;display:flex}.work-tile-copy h2{overflow-wrap:anywhere;margin:0}.work-tile-tagline{color:var(--ink-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:.6rem 0 1rem;font-size:.9375rem;line-height:1.5;display:-webkit-box;overflow:hidden}.work-tile-copy .work-card-bottom{margin-top:auto;padding-top:1.25rem}.work-showcase:hover,.work-tile:hover{text-decoration:none}.work-showcase:focus-visible,.work-tile:focus-visible,.work-filters button:focus-visible{outline:3px solid var(--link);outline-offset:5px}.work-closing{margin-top:var(--section-gap);border-top:1px solid var(--hairline);flex-wrap:wrap;justify-content:space-between;gap:1.5rem;padding-top:1.5rem;font-size:.9375rem;display:flex}.work-closing>div{gap:1.5rem;display:flex}.work-closing a{align-items:center;gap:.4rem;display:inline-flex}@media (width>=640px){.work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1100px){.work-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=800px){.work-showcase,.work-showcase-reverse{grid-template-columns:minmax(0,1fr)}.work-showcase-reverse .work-feature-media{order:0}}@media (hover:hover) and (pointer:fine){.work-showcase .work-chip:hover{border-color:var(--project-accent)}}@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){.work-tile:hover{transform:translateY(-2px)}.work-tile:hover img{transform:scale(1.03)}}@media (prefers-reduced-motion:no-preference){.work-tile:active{transform:scale(.985)}}.detail-followup,.detail-followup>*,.detail-gallery-reveal,.shot-gallery,.shot-group,.shot-grid,.detail-media>*{min-width:0;max-width:100%}.shot-gallery,.detail-followup{grid-template-columns:minmax(0,1fr)}@media (width<=640px){.shot-grid-ipad .device-ipad{width:min(100%,340px);margin-inline:auto}.shot-grid-desktop .browser-frame,.shot-grid-desktop .device-mac{width:100%}}@page{size:A4;margin:14mm 15mm}.pp{--pp-ink:#1d1d1f;--pp-muted:#6e6e73;--pp-line:#0000001a;--pp-soft:#f5f5f7;--pp-accent:#0071e3;color:var(--pp-ink);font-family:var(--font-sans);-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#fff;max-width:180mm;margin:0 auto;font-size:10pt;line-height:1.45}.pp *,.pp :before,.pp :after{transition:none!important;animation:none!important}.pp-page{break-after:page;padding:0}.pp-page:last-child{break-after:auto}@media screen{.pp{padding:24px 0 64px}.pp-page{min-height:269mm;margin-bottom:24px;padding:14mm 15mm;box-shadow:0 1px 2px #0000000f,0 8px 24px #00000014}}.pp h1{letter-spacing:-.02em;margin:0;font-size:26pt;line-height:1.1}.pp h2{letter-spacing:-.015em;margin:0 0 4pt;font-size:20pt;line-height:1.15}.pp h3{text-transform:uppercase;letter-spacing:.08em;color:var(--pp-muted);margin:14pt 0 6pt;font-size:8.5pt}.pp p{margin:0 0 6pt}.pp a{color:var(--pp-accent);text-decoration:none}.pp-muted{color:var(--pp-muted);font-weight:400}.pp-small{color:var(--pp-muted);font-size:8.5pt}.pp-eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--pp-accent);font-size:8.5pt;font-weight:600}.pp-title{font-size:11.5pt;font-weight:500;margin:4pt 0 2pt!important}.pp-tagline{color:var(--pp-muted);font-size:12pt}.pp-meta{color:var(--pp-muted)}.pp-cover-head{align-items:center;gap:16pt;display:flex}.pp-portrait{object-fit:cover;border-radius:50%;width:30mm;height:30mm}.pp-contact{border-top:1px solid var(--pp-line);border-bottom:1px solid var(--pp-line);grid-template-columns:repeat(4,1fr);gap:6pt;margin:12pt 0;padding:8pt 0;list-style:none;display:grid}.pp-contact li{overflow-wrap:anywhere;flex-direction:column;min-width:0;font-size:9pt;display:flex}.pp-contact span{text-transform:uppercase;letter-spacing:.08em;color:var(--pp-muted);font-size:7.5pt}.pp-summary p{font-size:10.5pt}.pp-grid-2{grid-template-columns:1fr 1fr;gap:18pt;display:grid}.pp-item{break-inside:avoid;flex-direction:column;margin-bottom:6pt;display:flex}.pp-item p{margin:2pt 0 0}.pp-exp{margin-bottom:10pt}.pp-chips{flex-wrap:wrap;gap:4pt;margin:6pt 0 0;padding:0;list-style:none;display:flex}.pp-chips li{background:var(--pp-soft);border:1px solid var(--pp-line);border-radius:999px;padding:2pt 7pt;font-size:8pt}.pp-toc{margin:0;padding-left:14pt}.pp-toc li{margin-bottom:4pt}.pp-project-head{margin-bottom:10pt}.pp-shots{grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:8pt;margin-bottom:10pt;display:grid}.pp-shots figure{break-inside:avoid;margin:0}.pp-shots img{object-fit:contain;object-position:top;border:1px solid var(--pp-line);background:var(--pp-soft);border-radius:6pt;width:100%;max-height:120mm;display:block}.pp-shots figcaption{color:var(--pp-muted);margin-top:3pt;font-size:7.5pt}.pp-story{break-inside:avoid;grid-template-columns:repeat(3,1fr);gap:12pt;display:grid}.pp-story h3{margin-top:0}.pp-project-foot{border-top:1px solid var(--pp-line);margin-top:10pt;padding-top:8pt}.pp-metrics{gap:14pt;margin:0 0 6pt;padding:0;font-weight:600;list-style:none;display:flex}.pp-links{flex-wrap:wrap;gap:4pt 14pt;font-size:8.5pt;display:flex}.pp-links strong{color:var(--pp-ink)}.pp-more{flex-direction:column;gap:10pt;margin-top:10pt;display:flex}.pp-card{break-inside:avoid;grid-template-columns:48mm 1fr;gap:10pt;display:grid}.pp-card img{aspect-ratio:16/10;object-fit:cover;border:1px solid var(--pp-line);border-radius:6pt;width:100%}.pp-card p{margin:2pt 0;font-size:9pt}.pp-list{margin:0;padding:0;list-style:none}.pp-list li{break-inside:avoid;margin-bottom:5pt;font-size:9pt}.pp-closing{border-top:1px solid var(--pp-line);color:var(--pp-muted);padding-top:8pt;margin-top:16pt!important}:is(html:has(.pp),body:has(.pp)){background:#fff}.pp-award{border-bottom:1px solid var(--pp-line);break-inside:avoid;padding-block:8pt}.pp-awards h2,.pp-awards h3{break-after:avoid}.pp-credential{overflow-wrap:anywhere;font-family:monospace;font-size:7.5pt}.pp-awards .pp-list li{margin-bottom:4pt;font-size:8pt}.pp-certifications .pp-list li{margin-bottom:3pt;font-size:8pt;line-height:1.35}.pp-certifications .pp-credential{font-size:7pt}
