/* Mobile Home project stage: horizontal snap only; vertical scroll leaves the stage. */
.mv3{display:none}
@media(max-width:767px){
html.mobile-home-v3,html.mobile-home-v3 body{height:auto!important;min-height:100%;margin:0;overflow-x:hidden!important;background:#efefed;color:#101010}.home-page>.hero,.home-page>.p3-projects-shell,.home-page>.p4-selected-work,.home-page>.custom-cursor{display:none!important}
.mv3{--lime:#c8e823;--ink:#101010;--stage-ink:#101010;--project-bg:239,239,237;--project-ambient:21,23,21;--project-accent:200,232,35;--project-shadow:0,0,0;--touch-x:50%;--touch-y:52%;--touch-strength:0;--touch-tilt-x:0deg;--touch-tilt-y:0deg;display:block;min-height:100svh;background:rgb(var(--project-bg));color:var(--ink);font-family:"Roboto Flex",Arial,sans-serif;transition:background-color .45s ease,color .45s ease}.mv3 *{box-sizing:border-box}.mv3 button,.mv3 a{font:inherit;color:inherit}
.mv3-hero{position:relative;min-height:100svh;overflow:hidden;background:radial-gradient(circle at 74% 57%,#fff 0 8%,#efefed 69%)}.mv3-hero:after{position:absolute;z-index:0;right:-34vw;top:23svh;width:74vw;height:74vw;border:1px solid #1010101c;border-radius:50%;box-shadow:0 0 0 10vw rgba(200,232,35,.05);content:""}.mv3-header{position:relative;z-index:3;display:flex;align-items:center;justify-content:space-between;height:70px;margin:0 22px;border-bottom:1px solid #10101026}.mv3-header a,.mv3-menu header a{font:510 25px/1 "Roboto Flex",Arial,sans-serif;letter-spacing:-.07em;text-decoration:none}.mv3-header a i,.mv3-menu header a i{display:inline-block;width:8px;height:8px;margin:0 0 9px 4px;border-radius:50%;background:var(--lime)}.mv3-header button{display:flex;align-items:center;gap:13px;border:0;background:transparent;padding:10px 0;font:500 13px/1 "IBM Plex Mono",monospace;letter-spacing:-.06em}.mv3-header button span,.mv3-header button span:before,.mv3-header button span:after{display:block;width:28px;height:1px;background:currentColor;content:""}.mv3-header button span{position:relative}.mv3-header button span:before{position:absolute;top:-8px}.mv3-header button span:after{position:absolute;top:8px}
.mv3-copy{padding:34px 22px 0}.mv3-copy h1,.mv3-copy p{position:relative;z-index:2}.mv3-copy h1{margin:0;white-space:nowrap;word-break:normal;overflow-wrap:normal;font:470 clamp(58px,16vw,70px)/.86 "Roboto Flex",Arial,sans-serif;letter-spacing:-.108em}.mv3-copy p{margin:22px 0 0;font:500 10px/1.45 "IBM Plex Mono",monospace;letter-spacing:-.045em}.mv3-scroll{position:absolute;z-index:3;bottom:42px;left:22px;display:grid;gap:10px;text-decoration:none;font:500 10px/1.18 "IBM Plex Mono",monospace;letter-spacing:-.05em}.mv3-scroll:first-letter{font:300 30px/.5 Arial;color:var(--lime)}.mv3-rail{position:absolute;z-index:2;top:108px;right:22px;display:grid;gap:14px;width:84px;font:500 10px/1.4 "IBM Plex Mono",monospace;letter-spacing:-.05em}.mv3-rail b{color:var(--lime);font:400 28px/.8 "Roboto Flex",Arial,sans-serif;letter-spacing:-.08em}.mv3-rail span,.mv3-rail p{margin:0}.mv3-rail i{display:block;width:1px;height:61px;background:#1010101e}
.mv3-hero-preview{position:absolute;z-index:1;top:57svh;left:0;right:0;height:43svh;overflow:hidden;perspective:920px;pointer-events:none}.mv3-hero-preview img{position:absolute;display:block;aspect-ratio:390/844;object-fit:cover;border:1px solid #10101022;border-radius:23px;box-shadow:0 20px 36px rgba(21,23,21,.22)}.mv3-hero-main{z-index:2;top:0;left:50%;width:54vw;transform:translateX(-50%) rotateY(-2deg)}.mv3-hero-side{z-index:1;top:72px;width:37vw;opacity:.88}.mv3-hero-side.is-left{left:-7vw;transform:rotateY(2deg)}.mv3-hero-side.is-right{right:-7vw;transform:rotateY(-2deg)}
.mv3-stage-wrap{position:relative;overflow:hidden;padding:18px 0 0;background:rgb(var(--project-bg));color:var(--stage-ink);transition:background-color .3s ease,color .3s ease;touch-action:pan-y}.mv3-stage{position:relative;height:min(68svh,590px);min-height:430px;overflow:hidden;isolation:isolate;background:radial-gradient(circle at var(--touch-x) var(--touch-y),rgba(var(--project-accent),calc(var(--touch-strength) * .25)),transparent 27%),radial-gradient(circle at 50% 52%,rgba(var(--project-ambient),.17),transparent 58%);transition:background .25s ease}.mv3-stage:before{position:absolute;inset:0;z-index:0;pointer-events:none;content:"";background:radial-gradient(120px circle at var(--touch-x) var(--touch-y),rgba(var(--project-accent),calc(var(--touch-strength) * .22)),transparent 74%);mix-blend-mode:multiply}.mv3-ambient{position:absolute;z-index:-1;left:6vw;top:11%;width:88vw;height:88vw;border-radius:50%;background:radial-gradient(circle,rgba(var(--project-ambient),.27),rgba(var(--project-accent),.08) 28%,transparent 68%);filter:blur(13px);opacity:.62}.mv3-cards{position:absolute;inset:0;perspective:920px;transform-style:preserve-3d}.mv3-card{position:absolute;display:block;width:76vw;aspect-ratio:390/844;margin:0;overflow:hidden;border:1px solid #10101022;border-radius:24px;background:#111;box-shadow:0 24px 42px rgba(var(--project-shadow),.28);transform-origin:50% 50%;transition:left .28s cubic-bezier(.2,.8,.2,1),top .28s cubic-bezier(.2,.8,.2,1),transform .28s cubic-bezier(.2,.8,.2,1),opacity .28s ease}.mv3-card img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}.mv3-swipe-hint{position:absolute;z-index:4;right:22px;bottom:16px;margin:0;color:color-mix(in srgb,var(--stage-ink) 66%,transparent);font:500 9px/1 "IBM Plex Mono",monospace;letter-spacing:.02em}.mv3-swipe-hint span{margin:0 6px;color:var(--lime);font:400 17px/1 Arial}
.mv3-project-info{display:grid;gap:9px;padding:24px 22px 28px;background:rgb(var(--project-bg));color:var(--stage-ink);transition:background-color .45s ease,color .32s ease}.mv3-count,.mv3-project-type{margin:0;font:500 10px/1.25 "IBM Plex Mono",monospace;letter-spacing:-.04em}.mv3-count b{color:var(--project-accent)}.mv3-project-info h2{margin:0;font:510 clamp(36px,11vw,46px)/.86 "Roboto Flex",Arial,sans-serif;letter-spacing:-.09em}.mv3-project-actions{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-top:8px}.mv3-open{display:inline-flex;width:max-content;padding:0 0 6px;border-bottom:1px solid currentColor;text-decoration:none;font:500 10px/1 "IBM Plex Mono",monospace;letter-spacing:-.05em}.mv3-controls{display:flex;gap:8px}.mv3-controls button{display:grid;place-items:center;width:42px;height:42px;border:1px solid currentColor;border-radius:50%;background:transparent;font:300 21px/1 Arial}.mv3-after{display:flex;align-items:flex-end;min-height:48svh;padding:30px 22px;background:#111;color:#efefed}.mv3-after p{max-width:17ch;margin:0;font:400 32px/.94 "Roboto Flex",Arial,sans-serif;letter-spacing:-.07em}.mv3-after span{display:block;margin-bottom:14px;color:var(--lime);font:500 10px/1 "IBM Plex Mono",monospace;letter-spacing:-.05em}
.mv3-menu{position:fixed;z-index:2147483646;inset:0;display:grid;grid-template-rows:70px 1fr 60px;padding:0 22px;background:#efefed;color:#101010;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-10px);transition:opacity .28s ease,transform .34s cubic-bezier(.2,.8,.2,1),visibility 0s .34s}.mv3-menu.is-open{opacity:1;visibility:visible;pointer-events:auto;transform:none;transition-delay:0s}.mv3-menu header,.mv3-menu footer{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #10101026}.mv3-menu button{border:0;background:none;padding:9px 0;font:500 11px/1 "IBM Plex Mono",monospace;letter-spacing:-.05em}.mv3-menu button b{margin-left:7px;font:300 22px/.3 Arial}.mv3-menu nav{display:grid;align-content:center}.mv3-menu nav a{display:grid;grid-template-columns:31px 1fr auto;align-items:center;min-height:70px;border-bottom:1px solid #10101026;text-decoration:none;opacity:0;transform:translateY(14px);transition:opacity .34s ease,transform .38s cubic-bezier(.2,.8,.2,1)}.mv3-menu.is-open nav a{opacity:1;transform:none}.mv3-menu.is-open nav a:nth-child(1){transition-delay:.06s}.mv3-menu.is-open nav a:nth-child(2){transition-delay:.11s}.mv3-menu.is-open nav a:nth-child(3){transition-delay:.16s}.mv3-menu.is-open nav a:nth-child(4){transition-delay:.21s}.mv3-menu.is-open nav a:nth-child(5){transition-delay:.26s}.mv3-menu nav span,.mv3-menu nav i,.mv3-menu footer{font:500 10px/1 "IBM Plex Mono",monospace;font-style:normal;letter-spacing:-.05em}.mv3-menu nav span{color:#98b300}.mv3-menu nav strong{font:460 39px/.88 "Roboto Flex",Arial,sans-serif;letter-spacing:-.08em}.mv3-menu footer{border-top:1px solid #10101026;border-bottom:0;color:#10101096}.mv3-menu-open{overflow:hidden!important}
.mv3-case{position:fixed;z-index:2147483645;inset:0;overflow:auto;-webkit-overflow-scrolling:touch;background:rgb(var(--project-bg));color:var(--stage-ink);opacity:0;visibility:hidden;pointer-events:none;transform:translateY(10px);transition:opacity .24s ease,transform .28s cubic-bezier(.2,.8,.2,1),visibility 0s .28s}.mv3.is-case-open .mv3-case{opacity:1;visibility:visible;pointer-events:auto;transform:none;transition-delay:0s}.mv3-case header{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;height:70px;margin:0 22px;border-bottom:1px solid currentColor;background:rgb(var(--project-bg))}.mv3-case header a{font:510 25px/1 "Roboto Flex",Arial,sans-serif;letter-spacing:-.07em;text-decoration:none}.mv3-case header i{display:inline-block;width:8px;height:8px;margin:0 0 9px 4px;border-radius:50%;background:var(--lime)}.mv3-case header button{border:0;background:none;padding:9px 0;color:inherit;font:500 10px/1 "IBM Plex Mono",monospace;letter-spacing:-.05em}.mv3-case header b{margin-left:7px;font:300 22px/.3 Arial}.mv3-case article{padding:34px 22px 58px}.mv3-case-count,.mv3-case-type,.mv3-case-made>p{margin:0;font:500 10px/1.35 "IBM Plex Mono",monospace;letter-spacing:-.05em}.mv3-case-count{color:var(--project-accent)}.mv3-case h2{max-width:8ch;margin:14px 0 10px;font:500 clamp(43px,13vw,56px)/.84 "Roboto Flex",Arial,sans-serif;letter-spacing:-.09em;word-break:normal;overflow-wrap:normal}.mv3-case-type{opacity:.68}.mv3-case-summary{max-width:29ch;margin:26px 0;font:400 17px/1.42 "Roboto Flex",Arial,sans-serif;letter-spacing:-.04em}.mv3-case-made{margin:26px 0 32px;padding-top:15px;border-top:1px solid currentColor}.mv3-case-made ul{display:grid;gap:8px;margin:14px 0 0;padding:0;list-style:none;font:400 13px/1.35 "Roboto Flex",Arial,sans-serif}.mv3-case-made li:before{content:'—';margin-right:8px;color:var(--project-accent)}.mv3-case-captures{display:grid;gap:14px}.mv3-case-captures img{display:block;width:100%;border:1px solid currentColor;border-radius:16px;background:#111;object-fit:contain}.mv3-case-mobile{aspect-ratio:390/844}.mv3-case-desktop{aspect-ratio:16/10}.mv3-case-external{display:inline-flex;margin-top:28px;padding-bottom:7px;border-bottom:1px solid currentColor;color:inherit;text-decoration:none;font:500 11px/1 "IBM Plex Mono",monospace;letter-spacing:-.05em}.mv3-case-open{overflow:hidden!important}
@media(prefers-reduced-motion:reduce){.mv3 *{animation:none!important;transition:none!important}.mv3-card:not([aria-hidden="false"]){display:none}.mv3-ambient{transform:none!important}}
}
