{"version":3,"file":"CaseStudy.C3NV4VTZ.mjs","names":["_Fragment","useRef","useState","c","p"],"sources":["https:/framerusercontent.com/modules/Ejw7xor8Ep1QD6tkoctA/fbs5Lauy5g2NoKyQWc6p/CaseStudy.js"],"sourcesContent":["// Apple-style case-study page shared by every project. Pick the project in the properties panel; its words and\n// images live in PROJECTS below (\"**phrase**\" renders semibold), left unindented to keep the file small enough to upload.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// Same family as the /Apple text styles\nconst FONT='\"Inter\", \"Inter Placeholder\", -apple-system, BlinkMacSystemFont, sans-serif';const DISPLAY=FONT;const INK=\"#1D1D1F\";const BODY=\"#424245\";const MUTED=\"#6E6E73\";const SOFT_LINE=\"#E8E8ED\";const HAIRLINE=\"#D2D2D7\";const PAGE=\"#F5F5F7\";const FOCUS=\"#0071E3\";const LOGO=\"https://framerusercontent.com/images/Zuhw1UOtI1bDBh5Ji5grp7eM.png\";// Framer serves resized copies; 2048px keeps screenshots crisp on retina without 6000px downloads\nconst IMG=id=>`https://framerusercontent.com/images/${id}.png?scale-down-to=2048`;// Per-file trims so plain screenshots fill their hairline frame edge to edge. Keyed by Framer image id.\nconst CROP={U7bfmHaGVqi0ppkbxvolq6uZwU:{width:\"101.215%\",marginLeft:\"-0.607%\",marginTop:\"-0.398%\",marginBottom:\"-0.398%\"},kFUhuYAIsGIDOveAEzOD5sYN1ug:{width:\"101.215%\",marginLeft:\"-0.607%\",marginTop:\"-0.398%\",marginBottom:\"-0.398%\"},K7H0ibu2qLBDadK5BLBzYoy8YSQ:{width:\"101.215%\",marginLeft:\"-0.607%\",marginTop:\"-0.399%\",marginBottom:\"-0.399%\"},rJ1Wuzd9R6VuMCWrlxHGtHO9Sc:{width:\"101.215%\",marginLeft:\"-0.607%\",marginTop:\"-0.377%\",marginBottom:\"-4.519%\"},lsdAUhmuhsNKSxb12LMhJv0G0sc:{width:\"102.459%\",marginLeft:\"-1.230%\",marginTop:\"-0.640%\",marginBottom:\"-0.320%\"},a49LPE2aDXfVuiPbNXEu6h9ZmE:{width:\"101.215%\",marginLeft:\"-0.607%\",marginTop:\"-0.272%\",marginBottom:\"-0.272%\"},SI9bRPrENXE3675IW7jqQAOgQtE:{width:\"105.042%\",marginLeft:\"-1.471%\",marginTop:\"-1.600%\",marginBottom:\"-1.814%\"}};const cropFor=src=>{const m=src.match(/images\\/([A-Za-z0-9]+)\\./);return m?CROP[m[1]]:undefined;};// Black and white chapters plus each project's own color: sampled from its\n// logo (accent) and hero art (heroTile), with a pale tint for light chapters\nconst BASE={tintCard:\"#FFFFFF\",dark:\"#000000\",darkCard:\"#1D1D1F\",brand:\"#000000\",heroTint:\"#FFFFFF\",eyebrowOnDark:\"#A1A1A6\"};// num: the yellow of the numbered markers in the Binance diagram screenshots, with white numerals like the markers\nconst BINANCE={...BASE,accent:\"#B7870B\",accentOnDark:\"#F0B90B\",heroTile:\"#F5F5F7\",tint:\"#FBF8EE\",num:\"#ECB730\",numText:\"#FFFFFF\"};const COAGENT={...BASE,accent:\"#1458BE\",accentOnDark:\"#8FB0FF\",heroTile:\"#DDE0FD\",tint:\"#F2F3FE\"};const UPPERMED={...BASE,accent:\"#1F7FB5\",accentOnDark:\"#7CC3EA\",heroTile:\"#E2EFF8\",tint:\"#EEF6FB\"};// Solayer: the card green from the app, with a mint accent on dark\nconst SOLAYER={...BASE,accent:\"#0B6B55\",accentOnDark:\"#3FE0B0\",heroTile:\"#0A0A0A\",tint:\"#EEF5F2\",num:\"#084D3E\",numText:\"#FFFFFF\"};const JOBSCAN={...BASE,accent:\"#0068D8\",accentOnDark:\"#7DB6FF\",heroTile:\"#DDEBFC\",tint:\"#EEF5FE\"};// \"More projects\" cards: the live page paths\nconst MORE={binance:{eyebrow:\"BINANCE \\xb7 FINTECH\",title:\"Fraud detection, made clear.\",link:\"/binance\",media:{src:IMG(\"HwG5rZuxsCRa6LwmGxRQF1kBpvU\"),alt:\"Binance fraud detection tool\"}},microsoft:{eyebrow:\"MICROSOFT \\xb7 AI PRODUCT\",title:\"CoAgent, designed for clarity.\",link:\"/microsoft\",media:{src:IMG(\"F6Xnkg1oz6WJEvoYKU8bV6SwsGU\"),alt:\"Microsoft Word AI co-agent\"}},uppermed:{eyebrow:\"UPPERMED \\xb7 HEALTH PRODUCT\",title:\"Care pathways, made simpler.\",link:\"/uppermed\",media:{src:IMG(\"MKGm4TJWeDp3vVESXd70CSDE\"),alt:\"Uppermed health app screens\"}},solayer:{eyebrow:\"SOLAYER \\xb7 FINTECH\",title:\"Solayer Pay, a card worth signing up for.\",link:\"/solayer\",media:{src:\"https://framerusercontent.com/images/RY2l3H72taHhCIN5WbfIMGEgrO8.png?scale-down-to=2048\",alt:\"Solayer Pay app on three iPhones with the Solayer Visa card\"}},jobscan:{eyebrow:\"JOBSCAN \\xb7 AI CAREER PRODUCT\",title:\"AI tools for career momentum.\",link:\"/jobscan\",media:{src:IMG(\"ZzY8ObXqOrHkaXh4JnkTdJ6Ac\"),alt:\"Jobscan AI resume builder\"}}};const PROJECTS={// Solayer Pay: five rounds, told as a funnel, ringed screens, notes (`todo` slots render dashed) and a path.\nsolayer:{name:\"Solayer Pay\",accent:INK,tags:\"Fintech app design\",title:\"Turning a crypto wallet into a card people sign up for\",lead:\"Too few people signed up, and too little was spent. I redesigned Solayer Pay from a wallet with a card attached into a **card-first app**, raising the **sign-up rate by 38%** and **spending volume by 25%**.\",heroImage:{src:\"https://framerusercontent.com/images/QwPwIAtClaRoFf7F07whkkkLeu8.gif\",alt:\"Click-through of the final Solayer Pay prototype: activating a card, the card home, referrals and account\"},heroBleed:false,heroClean:true,heroBare:true,plainImages:true,palette:SOLAYER,meta:[{label:\"Role\",value:\"Founding product designer\"},{label:\"Platform\",value:\"iOS & Android\"},{label:\"Scope\",value:\"0 → 1, five rounds\"}],chapters:[{id:\"problem\",nav:\"Problem\",eyebrow:\"The problem \\xb7 Round 1\",title:\"People downloaded a wallet. They didn’t sign up for one.\",tone:\"white\",lead:\"Version 1 asked for commitment before showing any value. The card, the one reason a non-trader would join, was a tab away.\",blocks:[{kind:\"gallery\",cols:3,phone:true,screens:true,items:[{src:\"https://framerusercontent.com/images/ScqI6thl7nuLHXgcKiB6GeqduQ.jpg?scale-down-to=1024\",alt:\"Version 1 sign-up screen\",caption:\"Email first, value never.\",focus:[4,47,92,14]},{src:\"https://framerusercontent.com/images/FeGnBUSac2yvfEAB4gRrtt3Fwzw.jpg?scale-down-to=1024\",alt:\"Version 1 wallet home with send, receive and token balances\",caption:\"Home is a wallet: nothing to spend on.\",focus:[4,24,92,35]},{src:\"https://framerusercontent.com/images/2zG9CrCeLXzrSN4z2Pe4uRkD2s.jpg?scale-down-to=1024\",alt:\"Version 1 card tab\",caption:\"The card hides in a second tab.\",focus:[37,88.5,22,8]}]},{kind:\"cards\",items:[{label:\"1\",title:\"No reason to join\",body:\"The first screen never answered “why sign up?”\"},{label:\"2\",title:\"Commitment before reward\",body:\"Country check, $20 fee, KYC and a deposit came before the card.\"},{label:\"3\",title:\"Nothing to come back for\",body:\"No reason to spend today, or to tell a friend.\"}]},{kind:\"notes\",items:[{label:\"What we heard\",body:\"Add a user quote on why they didn’t sign up.\",todo:true},{label:\"Baseline\",body:\"Add the starting sign-up rate.\",todo:true}]}]},{id:\"insight\",nav:\"Insight\",eyebrow:\"Reframe\",title:\"\",tone:\"grey\",blocks:[{kind:\"statement\",body:\"Nobody signs up for a wallet. They sign up for what their money can do.\"},{kind:\"cards\",items:[{label:\"1\",title:\"Lead with the outcome\",body:\"Show the card before asking for anything.\"},{label:\"2\",title:\"Earn trust before asking\",body:\"KYC and money only once people want the card.\"},{label:\"3\",title:\"Build the loop in\",body:\"Spending and inviting should reward each other.\"}]}]},{id:\"story\",nav:\"Funnel\",eyebrow:\"The sign-up funnel\",title:\"Five rounds. Each one fixed a step in the funnel.\",tone:\"tint\",blocks:[{kind:\"funnel\",stages:[\"Discover\",\"Sign up\",\"Get the card\",\"First spend\",\"Invite\"],rounds:[{n:\"2\",stage:0,title:\"Referrals\",body:\"You and a friend each earn 12.5% of the top-up fee.\"},{n:\"3\",stage:1,title:\"Card first\",body:\"The wallet tab is gone. The card is the app.\"},{n:\"4\",stage:2,title:\"No dead ends\",body:\"Clear states for country, payment and KYC.\"},{n:\"4\",stage:3,title:\"No fee shock\",body:\"An info icon explains the $0.30 fee.\"},{n:\"5\",stage:4,title:\"The loop\",body:\"A gift on the card home: invite and claim in one tap.\"}]}]},{id:\"iterations\",nav:\"Iterations\",eyebrow:\"Round 2 \\xb7 Give people a reason to join\",title:\"A warmer first impression, the same wallet underneath.\",tone:\"white\",lead:\"Rewards on the welcome screen, passkeys, a card banner, and **our first referral program**. Better screens, same structure.\",blocks:[{kind:\"gallery\",cols:3,phone:true,screens:true,round:true,items:[{src:\"https://framerusercontent.com/images/33XNxgrmZeyP4DJWoeUgT8PCVo.jpg?scale-down-to=1024\",alt:\"Version 2 welcome screen about rewards\",caption:\"Better: rewards before the email.\",focus:[8,42,84,13]},{src:\"https://framerusercontent.com/images/MZGNUwFtnQaqnxCNlvA669GpeNo.jpg?scale-down-to=1024\",alt:\"Version 2 wallet home with a card banner\",caption:\"Still a problem: the card is just a banner.\",focus:[3,23.5,94,20]},{src:\"https://framerusercontent.com/images/Ph3SzLxhos64nEpvNSgSvD7p36E.jpg?scale-down-to=1024\",alt:\"Version 2 card home with the gift icon for referrals\",caption:\"New: the gift opens referrals.\",focus:[3,5.8,11.5,6.4]}]},{kind:\"cards\",items:[{accent:true,label:\"New in 2.0 \\xb7 Referrals\",title:\"Invite a friend, and you both earn 12.5%.\",body:\"A reason to download, and a reason to top up: the reward grows with what the friend adds.\"}]},{kind:\"notes\",items:[{label:\"Decision\",body:\"Keep the wallet; improve the way in and add referrals.\"},{label:\"Trade-off\",body:\"Fast to ship, but the card stayed an upsell behind a fee and KYC.\"}],next:\"Polish couldn’t move the card out from behind the wallet. Next: change the structure.\"}]},{eyebrow:\"Round 3 \\xb7 Put the value on the first screen\",title:\"We cut the wallet tab and made the card the app.\",tone:\"tint\",lead:\"The turning point, and a hard call for a crypto company. Two tabs, **Home** and **Account**, and sign-up leads straight to the card.\",blocks:[{kind:\"gallery\",cols:3,phone:true,screens:true,items:[{src:\"https://framerusercontent.com/images/qyPTgrOZ4qE3F3HTFRHHLoyOM3k.jpg?scale-down-to=1024\",alt:\"Version 3 card introduction after sign-up\",caption:\"First screen: where it works, what it earns.\",focus:[3,47,94,28]},{src:\"https://framerusercontent.com/images/ajDTqjhKqXmfiHN0kjelTkNvg.jpg?scale-down-to=1024\",alt:\"Version 3 home built around the card\",caption:\"Home is the card: balance, deposit, wallet.\",focus:[3,46.5,94,14]},{src:\"https://framerusercontent.com/images/Fj1GiW32lemGSxXg8gtyMRYMV4.jpg?scale-down-to=1024\",alt:\"Version 3 card details sheet\",caption:\"Card details one tap away.\",focus:[3,57,94,29]}]},{kind:\"notes\",items:[{label:\"Decision\",body:\"Remove the wallet tab; Home is the card.\"},{label:\"Trade-off\",body:\"Crypto-native users lost a home for send and receive.\"}],next:\"The happy path was short, but country, payment and KYC failures still dead-ended.\"}]},{eyebrow:\"Round 4 \\xb7 Remove the reasons to quit\",title:\"No dead ends, and no fee shock.\",tone:\"grey\",lead:\"Every failure state got a clear next step. And instead of a bare fee line, an **info icon** explains small-purchase fees in plain words.\",blocks:[{kind:\"gallery\",cols:3,phone:true,screens:true,items:[{src:\"https://framerusercontent.com/images/vxVWwdYDEDvTAJgOoonpNAQYMI.jpg?scale-down-to=1024\",alt:\"Version 4 KYC pending screen\",caption:\"KYC pending: a state, not a dead end.\",focus:[8,37,84,30]},{src:\"https://framerusercontent.com/images/iTqk4Q584dqkgYVu8Za43lAqv0.jpg?scale-down-to=1024\",alt:\"Version 4 transaction details with an info icon next to the amount\",caption:\"The fee lives behind an info icon.\",focus:[65.5,30.8,11,5]},{src:\"https://framerusercontent.com/images/OdnE0eJXleBMuf4cvueNQSUnRzw.jpg?scale-down-to=1024\",alt:\"Version 4 modal explaining the small transaction fee\",caption:\"One tap: $0.30, only under $30, and why.\",focus:[9,51,82,10.5]}]},{kind:\"notes\",items:[{label:\"Decision\",body:\"Design every failure state; explain the fee with progressive disclosure.\"},{label:\"Trade-off\",body:\"The fee is one tap away, so the icon sits beside the amount and the modal states it exactly.\"}],next:\"Referrals from round 2 still sat in a corner. The final round made them a loop.\"}]},{id:\"final\",nav:\"Final design\",eyebrow:\"Round 5 \\xb7 Make every user bring the next\",title:\"A card worth signing up for.\",tone:\"white\",lead:\"Card first, no dead ends, and a gift on the home screen that turns spenders into the acquisition channel.\",blocks:[{kind:\"gallery\",cols:3,phone:true,screens:true,items:[{src:\"https://framerusercontent.com/images/BBsDKO39FmC6K5EnOogLHtSLt48.jpg?scale-down-to=1024\",alt:\"Final get your Solayer card screen\",caption:\"Value first: 175M+ places, rewards.\",focus:[3,67.5,80,15]},{src:\"https://framerusercontent.com/images/kg0gdP4SkyFahqXl0MFr61AY8.jpg?scale-down-to=1024\",alt:\"Final card home\",caption:\"Deposit, details, wallet: one screen.\",focus:[3,61,94,11.5]},{src:\"https://framerusercontent.com/images/gUoqxc0MBpJrAMbBWyUC0raxQ.jpg?scale-down-to=1024\",alt:\"Final referrals screen with the gift\",caption:\"Invite, earn 12.5%, claim from the gift.\",focus:[2,48.5,96,20]}]},{kind:\"cards\",items:[{label:\"1\",title:\"Value before sign-up\",body:\"Solves “no reason to join.”\"},{label:\"2\",title:\"Spend in the first session\",body:\"Solves “commitment before reward.”\"},{label:\"3\",title:\"Spending pays for growth\",body:\"Solves “nothing to come back for.”\"}]},{kind:\"notes\",items:[{label:\"Trade-off\",body:\"Sharing 12.5% of the fee costs revenue per referral, in exchange for growth from people who already spend.\"},{label:\"What we heard\",body:\"Add a user quote and a test result from the final prototype.\",todo:true}]}]},{id:\"impact\",nav:\"Outcome\",eyebrow:\"Outcome\",title:\"More people signing up, and spending more\",tone:\"tint\",blocks:[{kind:\"flow\",title:\"The path to a first purchase\",rows:[{label:\"Version 1\",tone:\"bad\",note:\"The card at step 3\",steps:[{t:\"Sign up\"},{t:\"Wallet home\"},{t:\"Card tab\",star:true},{t:\"Fee + KYC\"},{t:\"Deposit\"},{t:\"Spend\"}]},{label:\"Final\",tone:\"good\",note:\"The card at step 1\",steps:[{t:\"See the card\",star:true},{t:\"Sign up\"},{t:\"Activate + KYC\"},{t:\"Deposit\"},{t:\"Spend\"}]}]},{kind:\"stats\",items:[{value:\"+38%\",title:\"Sign-up rate\",body:\"More downloads became accounts once the card led the app.\"},{value:\"+25%\",title:\"Spending volume\",body:\"More spent on the card after the redesign.\"},{value:\"3 → 2\",title:\"Tabs\",body:\"The card became the product.\"}]}]},{title:\"What I’d tell my past self\",tone:\"grey\",blocks:[{kind:\"cards\",items:[{title:\"Structure beats polish\",body:\"Round 2 polished screens. Round 3 moved one tab and changed the product.\"},{title:\"Design the unhappy paths early\",body:\"Failures decide whether a sign-up becomes a customer.\"},{title:\"Prototype the moments that sell\",body:\"Activation and the gift had to feel rewarding, so I built them in code.\"}]}]}],more:[MORE.binance,MORE.microsoft]},// Solayer AI Pay: a voice ordering agent inside Solayer Pay (live prototype: solayer-pay-ai-agent.vercel.app).\n// Told visually like Solayer Pay: hero recording, a reframe, a path comparison, ringed screens, short notes.\nsolayerai:{name:\"Solayer AI Pay\",accent:INK,tags:\"Fintech AI agent design \\xb7 Claude + Vercel\",title:\"Order anything by voice, and pay with one hold\",lead:\"Solayer Pay made crypto spendable. **Solayer AI Pay** makes spending effortless: say what you want, the agent finds it nearby, and you pay with **Face ID in USDC, gasless**. I designed the agent end to end and built it as a working prototype.\",heroImage:{src:\"https://framerusercontent.com/images/hjJjdINFkHIufqqzu49CkFOPE.gif\",alt:\"Click-through of the Solayer AI Pay prototype: choosing coffee, adding items, holding to pay with Face ID and the order confirmation\"},heroBleed:false,heroClean:true,heroBare:true,plainImages:true,palette:SOLAYER,meta:[{label:\"Role\",value:\"Product designer\"},{label:\"Platform\",value:\"iOS \\xb7 voice + touch\"},{label:\"Prototype\",value:\"Live, built in code\"}],chapters:[{id:\"problem\",nav:\"Problem\",eyebrow:\"The problem\",title:\"The card made crypto spendable. Ordering still meant another app.\",tone:\"white\",lead:\"To buy a coffee with stablecoins, people still had to leave Solayer, order somewhere else, then come back to pay.\",blocks:[{kind:\"cards\",items:[{label:\"1\",title:\"Spending happened elsewhere\",body:\"The card worked everywhere, but the ordering lived in other apps.\"},{label:\"2\",title:\"Too many steps\",body:\"Search, pick, check out, then confirm a payment.\"},{label:\"3\",title:\"Crypto checkout felt risky\",body:\"Addresses, networks and fees made small purchases stressful.\"}]}]},{id:\"insight\",nav:\"Insight\",eyebrow:\"Reframe\",title:\"\",tone:\"dark\",blocks:[{kind:\"statement\",body:\"The best checkout is a sentence.\"},{kind:\"cards\",items:[{label:\"1\",title:\"Voice first, touch always\",body:\"Speak, type, or tap a craving. Every path works.\"},{label:\"2\",title:\"Show, then ask\",body:\"Places and menus come before any money moves.\"},{label:\"3\",title:\"One gesture to pay\",body:\"Hold for Face ID. No addresses, no gas.\"}]}]},{id:\"flow\",nav:\"Flow\",eyebrow:\"The flow\",title:\"From craving to paid, in one conversation.\",tone:\"tint\",blocks:[{kind:\"flow\",title:\"Buying a coffee with stablecoins\",rows:[{label:\"Before\",tone:\"bad\",note:\"Two apps, 6 steps\",steps:[{t:\"Open a delivery app\"},{t:\"Find the item\"},{t:\"Check out\"},{t:\"Switch to the wallet\",star:true},{t:\"Confirm network + fee\"},{t:\"Wait\"}]},{label:\"AI Pay\",tone:\"good\",note:\"One app, 4 steps\",steps:[{t:\"Say it\",star:true},{t:\"Pick a place\"},{t:\"Add to order\"},{t:\"Hold to pay\"}]}]}]},{id:\"design\",nav:\"Design\",eyebrow:\"Ask and choose\",title:\"Talk to it like a friend who knows the neighborhood.\",tone:\"white\",lead:\"The agent listens first, but never traps you in voice: craving chips and a text field are always one tap away.\",blocks:[{kind:\"gallery\",cols:3,phone:true,screens:true,items:[{src:\"https://framerusercontent.com/images/DVKTm28vOgICp7n7nKp7CKPG6Wg.jpg?scale-down-to=1024\",alt:\"Solayer AI listening, with a glowing orb\",caption:\"Listening: one glowing orb, no clutter.\",focus:[12,26,76,30]},{src:\"https://framerusercontent.com/images/LofcPJJp0z6MIhsAuiqzTawQVeY.jpg?scale-down-to=1024\",alt:\"What are you craving, with category chips\",caption:\"Or tap a craving: coffee, sushi, a ride.\",focus:[2,48,96,7]},{src:\"https://framerusercontent.com/images/vHu38WbO0CyR3nj74PtrEygPUss.jpg?scale-down-to=1024\",alt:\"Nearby coffee places with price, rating and time\",caption:\"Nearby places, with price, rating and ETA up front.\",focus:[3,13,94,37]}]}]},{eyebrow:\"Order and pay\",title:\"Money moves last, and only with your face.\",tone:\"dark\",lead:\"Every price is visible before paying. Paying is a single hold: Face ID, USDC, **$0.00 network fee**.\",blocks:[{kind:\"gallery\",cols:3,phone:true,screens:true,items:[{src:\"https://framerusercontent.com/images/Aes5fCIDzCepIweZ5InZvm34tyU.jpg?scale-down-to=1024\",alt:\"Menu with two items added and a review order bar\",caption:\"The order builds itself in a bar at the bottom.\",focus:[3,81,94,6.5]},{src:\"https://framerusercontent.com/images/FYDuPROPe259YGtxXgV8hvy9Y.jpg?scale-down-to=1024\",alt:\"Review order with total and hold to pay with Face ID\",caption:\"Hold to pay with Face ID. Gasless, in USDC.\",focus:[18,66,64,17]},{src:\"https://framerusercontent.com/images/Rnf52pVVJxQZf2qeThpXuUPT0.jpg?scale-down-to=1024\",alt:\"Order placed confirmation with ETA and transaction\",caption:\"Ordered: ETA and the on-chain receipt.\",focus:[20,10,60,25]}]},{kind:\"notes\",items:[{label:\"Decision\",body:\"A press-and-hold Face ID button instead of a tap, so paying is deliberate but still one gesture.\"},{label:\"Trade-off\",body:\"Holding takes a second longer than a tap, in exchange for no accidental payments from a misheard command.\"}]}]},{id:\"impact\",nav:\"Outcome\",eyebrow:\"Outcome\",title:\"Spending, without the crypto part.\",tone:\"tint\",blocks:[{kind:\"cards\",items:[{label:\"Result\",title:\"Faster ordering, more card sign-ups\",body:\"Users felt AI Pay made ordering faster, and the feature raised the Solayer Pay card sign-up rate.\"},{label:\"What we heard\",title:\"Something people use every day\",body:\"Users said they love using it every day, because the flow is smooth and the experience is fun.\"}]}]},{title:\"What I learned\",tone:\"dark\",blocks:[{kind:\"cards\",items:[{title:\"Voice needs a visible fallback\",body:\"Chips and typing made the agent usable anywhere, even with the mic blocked.\"},{title:\"Trust is a sequence\",body:\"Show the place, the menu and the total before asking for a face.\"},{title:\"Hide the chain, keep the receipt\",body:\"No gas or networks on screen, but a transaction link for anyone who wants it.\"}]}]}],more:[MORE.solayer,MORE.binance]},// Copy taken from the hand-built Binance page (/old/binance-old-3); overview, problem and research headline rewritten on request\nbinance:{name:\"Binance\",accent:INK,logo:{src:IMG(\"GZwN1ORL5HqCI1mP937AFLCIvEw\"),alt:\"Binance\"},tags:\"Enterprise data visualization design\",title:\"Enhancing Fraud Detection Efficiency with Interactive Data Visualization\",lead:\"Binance’s Risk Team investigates suspicious transactions and tracks the movement of funds. I redesigned their fraud investigation workflow, helping 25 analysts **double the number of cases they could handle from 10 to 20 per day**.\",heroImage:{src:\"https://framerusercontent.com/images/K7H0ibu2qLBDadK5BLBzYoy8YSQ.gif\",alt:\"Interactive prototype of the Binance fraud detection diagram\"},heroBleed:false,heroClean:true,plainImages:true,palette:BINANCE,meta:[{label:\"Role\",value:\"End to end design\"},{label:\"Timeline\",value:\"3 months\"},{label:\"Team\",value:\"1 PM, 1 designer, 5 dev\"}],chapters:[{id:\"problem\",nav:\"Problem\",title:\"Problem\",tone:\"white\",lead:\"The existing tool relied on a long, dense table. Analysts had to **manually search, compare, and connect data** to identify suspicious activity, making it difficult to see relationships between accounts and slowing down investigations.\",blocks:[{kind:\"image\",media:{src:IMG(\"U7bfmHaGVqi0ppkbxvolq6uZwU\"),alt:\"The old table-based fraud detection interface\"},wide:true}]},{id:\"research\",nav:\"Research\",title:\"Users felt frustrated writing data down by hand, then locating it again in the table\",tone:\"tint\",blocks:[{kind:\"image\",media:{src:IMG(\"lsdAUhmuhsNKSxb12LMhJv0G0sc\"),alt:\"Journey map of a risk analyst using the old system\"},wide:true}]},{id:\"findings\",nav:\"Findings\",title:\"Findings\",tone:\"white\",lead:\"After interviewing, I focused on the three key **pain points** most frequently highlighted by analysts with the current table format tool.\",blocks:[{kind:\"cards\",items:[{label:\"1\",title:\"Unclear asset flows in theft cases\"},{label:\"2\",title:\"Difficulty comparing data from cross columns\"},{label:\"3\",title:\"Manual Effort in Identifying Downstream Counterparties\"}]},{kind:\"profile\",media:{src:IMG(\"MBAr3XVx5DbGG4dWfjO9pTPHi7s\"),alt:\"Avatar of Peter Wang\"},name:\"Peter Wang\",meta:\"Binance risk analyst for 3 years\",details:\"\",quote:true,needsLabel:\"Brief\",needs:[\"I’m highly frustrated with the current data analysis platform.\"],challengesLabel:\"JTBD\",challenges:[\"When analyzing data, I want a tool that quickly locates and identifies information, so I can efficiently separate queries and sort flow direction.\"]}]},{id:\"goal\",nav:\"Goal\",title:\"\",tone:\"dark\",blocks:[{kind:\"art\",media:{src:IMG(\"JvPejaZ1ickNQbBqzrNLJvFFSM\"),alt:\"Illustration of a person aiming at a target\"}},{kind:\"statement\",body:\"Our goal is to increase Binance’s daily case inspection rate by 1.5x, helping retain customers through stronger support for hacked funds and suspicious transactions.\"}]},{id:\"ideation\",nav:\"Exploration\",eyebrow:\"Exploration\",title:\"Inspired by correlation diagrams and progressive disclosure.\",tone:\"tint\",lead:\"I was inspired by correlation diagrams, dot-connecting patterns, and the concept of progressive disclosure.\",blocks:[{kind:\"image\",media:{src:IMG(\"a49LPE2aDXfVuiPbNXEu6h9ZmE\"),alt:\"Correlation diagrams and dot-connecting patterns that inspired the design\"},wide:true}]},{id:\"iterations\",nav:\"Iterations\",eyebrow:\"First iteration\",title:\"Data linked to relevant information.\",tone:\"white\",lead:\"My initial design linked each piece of data to its relevant information. However, **users struggled with navigation**.\",blocks:[{kind:\"image\",media:{src:IMG(\"rJ1Wuzd9R6VuMCWrlxHGtHO9Sc\"),alt:\"First iteration of the diagram\"},wide:true}]},{eyebrow:\"Second iteration\",title:\"Redesigned the diagram with a progressive, direction-oriented view to make navigating data relationships easier.\",tone:\"tint\",blocks:[{kind:\"image\",media:{src:IMG(\"kFUhuYAIsGIDOveAEzOD5sYN1ug\"),alt:\"Second iteration: a progressive, direction-oriented diagram\"},wide:true},{kind:\"cards\",items:[{label:\"1\",title:\"Easy to explore\",body:\"Starting point from center to outward to help users easy to navigate\"},{label:\"2\",title:\"Easy to navigate complex dataset\",body:\"Expand and collapse to display hierarchical data\"},{label:\"3\",title:\"Arrow and icon\",body:\"It shows the transaction status and direction (deposit, withdraw, C2C)\"}]},{kind:\"stats\",items:[{art:{src:IMG(\"cs6OJYuBLw10ePx92JN1zfxhjKc\"),alt:\"Illustration of an analyst reviewing dashboards\"},value:\"92%\",title:\"Average usability score (23/25)\",body:\"Up from the first iteration, where no more than 4 of 25 users found any aspect of the diagram clear.\"}]}]},{id:\"visual\",nav:\"Visual design\",title:\"Iterated on diagram UI to align color usage with data hierarchy\",tone:\"white\",blocks:[{kind:\"image\",media:{src:IMG(\"SI9bRPrENXE3675IW7jqQAOgQtE\"),alt:\"Color versions of the diagram, from the first to the final version\"},wide:true},{kind:\"text\",body:\"From the first to the final version (left to right), I made color design decisions based on insights from the PM. I learned that the data hierarchy is: **transaction status > transaction direction > counterparty user**. I highlighted colors according to this order, which led to positive feedback from users.\"}]},{id:\"impact\",nav:\"Impact\",title:\"Impact on the internal organization and Binance customers\",tone:\"tint\",blocks:[{kind:\"stats\",items:[{media:{src:IMG(\"MBAr3XVx5DbGG4dWfjO9pTPHi7s\"),alt:\"\"},label:\"Binance internal analyst\",value:\"2x\",badge:\"Pass the KPI 1.5x\",title:\"Increase in daily case investigation completion\",body:\"Internal analysts boosted daily case investigations from 10 to 30, reducing labor costs and enabling the team to focus on higher-priority tasks.\"},{media:{src:IMG(\"lYUw8RBNZN4NeTRx4BXVh0M0r3E\"),alt:\"\"},label:\"Binance customer\",value:\"1.8x\",title:\"Rise in NPS satisfaction survey scores\",body:\"Binance users reporting to the risk team increased their satisfaction from 50 to 90, according to the NPS survey.\"}]}]},{title:\"Challenge & reflection\",tone:\"dark\",blocks:[{kind:\"cards\",items:[{label:\"✅\",body:\"We initially struggled with complex design requirements, and the development team had difficulty achieving the ideal data shape.\"},{label:\"✅\",body:\"To overcome this, I shared the user testing results with the team and led the effort to research and collaborate with the PM and developers to create an effective diagram formula.\"},{label:\"✅\",body:\"This approach not only met user needs but also empowered the team to tackle technical challenges. The successful implementation resulted in a 3x increase in internal work efficiency.\"}]}]}],more:[MORE.microsoft,MORE.uppermed]},microsoft:{name:\"Microsoft CoAgent\",accent:INK,logo:{src:IMG(\"88hjURxgryIqzMZZ82v6QP1Uexk\"),alt:\"CoAgent\"},tags:\"Enterprise co-agent design\",title:\"An AI Co-Agent that boosted PM–researcher collaboration 3\\xd7.\",lead:\"A UC Santa Cruz capstone with Microsoft's innovation team that **boosted work efficiency by 8.3%**.\",heroImage:{src:IMG(\"GZYzVoNHHIFLRGCs5rcs3CDisYI\"),alt:\"CoAgent side panel inside Microsoft Word\"},heroBleed:true,palette:COAGENT,meta:[{label:\"Role\",value:\"End-to-end design\"},{label:\"Timeline\",value:\"6 months\"},{label:\"Team\",value:\"1 UXR, 3 designers\"}],chapters:[{id:\"problem\",nav:\"Problem\",eyebrow:\"Challenge\",title:\"Great technology wasn't becoming great products.\",tone:\"white\",lead:\"Microsoft Research turns AI into products, but turning breakthroughs into user value was slow and often failed.\",blocks:[{kind:\"cards\",items:[{accent:true,label:\"Our solution\",title:\"Microsoft CoAgent\",body:\"An AI agent in Word that drafts and revises product specs, so PMs and researchers stay aligned.\"}]}]},{id:\"research\",nav:\"Research\",eyebrow:\"Interviews\",title:\"15 people. Three pain points.\",tone:\"tint\",lead:\"Hour-long interviews with researchers, designers and PMs on Microsoft's innovation team.\",blocks:[{kind:\"quotes\",items:[{title:\"“Not Invented Here”\",quote:\"Projects might be terminated due to their P&L evaluations, which often deem them too risky.\",who:\"P6, Product Manager\"},{title:\"User-centric design is a lone voice\",quote:\"I am the only person who does what I do.\",who:\"P1, Researcher\"},{title:\"Ideas aren't always the right ones\",quote:\"Users know what they want, but they don't know the best approach to get it.\",who:\"P7, Research Engineer\"}]}]},{id:\"findings\",nav:\"Findings\",eyebrow:\"Synthesis\",title:\"Three issues stood in the way.\",tone:\"white\",blocks:[{kind:\"cards\",items:[{media:{src:IMG(\"cvKSu4rAT1IsB3x1a6XuV1Vwto\"),alt:\"Illustration of two teams connected by a document\"},title:\"Cross-team collaboration\"},{media:{src:IMG(\"35CJy1O0sf0f5Ydh43092BgpsII\"),alt:\"Illustration of a team meeting\"},title:\"Power dynamics\"},{media:{src:IMG(\"b99Ed8gjD5nGWN6rTvq4Y23L8k\"),alt:\"Illustration of two people sharing a chart\"},title:\"User value vs. business goals\"}]}]},{eyebrow:\"Focus\",title:\"The gap was between PMs and researchers.\",tone:\"dark\",blocks:[{kind:\"personas\",items:[{media:{src:IMG(\"xnFloKBtJ3X9yoytz9KJAFqqDI\"),alt:\"Illustration of a product manager\"},title:\"Product manager\",points:[\"Assumes user needs without validation.\",\"Can't easily find or use research.\"]},{media:{src:IMG(\"S9n8agG1KQIS6Ben3aa9sU8hbs\"),alt:\"Illustration of a UX researcher\"},title:\"UX researcher\",points:[\"Can't track their impact.\",\"Struggles to turn insights into priorities.\"]}]},{kind:\"statement\",body:\"How might we help PMs decide with confidence, backed by research and tied to business goals?\"}]},{id:\"concept\",nav:\"Concept\",eyebrow:\"Concept\",title:\"Built into Copilot, inside Word.\",tone:\"tint\",lead:\"Where PMs already write their specs.\",blocks:[{kind:\"cards\",items:[{media:{src:IMG(\"7MdQItLaMcZVbCzqgBTDOlRMXA\"),alt:\"Illustration of a document shared between two people\"},title:\"Turn PM requirements into UX deliverables.\"},{media:{src:IMG(\"aUzTPItWzHu9mGs0at7pTmwk\"),alt:\"Illustration of two people and an impact map\"},title:\"Map insights to business impact.\"},{media:{src:IMG(\"KClzidqCgu28h4iywRms4vWfnI\"),alt:\"Illustration of a person with data visualizations\"},title:\"Visualize data PMs can act on.\"}]}]},{id:\"testing\",nav:\"Testing\",eyebrow:\"Validation\",title:\"Tested early, with real users.\",tone:\"white\",lead:\"A lo-fi prototype with 1 PM, 1 UX researcher and 3 users.\",blocks:[{kind:\"image\",media:{src:IMG(\"pDyfPDSagOL5ONmUknrLwGpRg\"),alt:\"Usability testing protocol and lo-fi prototype screens\"},wide:true},{kind:\"quotes\",items:[{title:\"Focus on UX outputs\",quote:\"The tool should be more focused on UX outputs, such as user needs documents.\",who:\"P1, UX Researcher\"},{title:\"Start from the PRD\",quote:\"It should be positioned from the PM's perspective, based on the product requirement document.\",who:\"P2, Product Manager\"},{title:\"Show examples, add shortcuts\",quote:\"Provide example values for each metric. Include shortcuts in the chat box.\",who:\"P3, Engineer\"}]}]},{id:\"iterations\",nav:\"Iterations\",eyebrow:\"Iterations\",title:\"Key frame iterations guided by user and AI insights\",tone:\"tint\",blocks:[{kind:\"beforeAfter\",marked:true,pairs:[{before:{media:{src:IMG(\"w37Z9JrWZXQIWrgBPUoxbqm6PG0\"),alt:\"Earlier design with many features\"},title:\"Too many irrelevant features for the PM\",body:\"Users think this feature should focus on the PM’s perspective and common workflows, excluding elements like the user journey they don’t use.\"},after:{media:{src:IMG(\"n6bC5S1SXkl9F5LwiLxZpP5MHOE\"),alt:\"Goal-oriented PRD template\"},title:\"Goal-Oriented PRD Template for PMs\",body:\"The template is tailored to the PM’s perspective, making the PRD more goal-oriented and providing a clear, structured guide.\"}},{before:{media:{src:IMG(\"lsjWckyGqqlLBZJOyHVBBusLw\"),alt:\"AI chatbot covering the document\"},title:\"AI Chatbot Hinders Document View\",body:\"The AI chatbot appearing in the center of the page makes it difficult for users to view their original document simultaneously.\"},after:{media:{src:IMG(\"DTW3bsIjympS1yxSpZplDmpgA\"),alt:\"AI chatbot in a side panel next to the document\"},title:\"Side AI Chatbot Improves Document View\",body:\"Positioning the AI chatbot beside the product requirements document makes it easier for users to compare the content and ask questions to the AI.\"}}]}]},{id:\"outcome\",nav:\"Outcome\",title:\"Outcome\",tone:\"white\",lead:\"Each feature, recorded in Word. Click a recording to open it full size.\",blocks:[{kind:\"features\",fixed:true,items:[{title:\"Feature 1 \\xb7 Assumption Generation\",media:{src:\"https://framerusercontent.com/images/hwuaeRUUIGdzQbfkQgXWdfpuikI.gif\",alt:\"Screen recording: CoAgent generating assumptions in Word\"},problem:\"PMs often base user assumptions on marketing reports, risking misaligned product decisions.\",solution:\"CoAgent addresses this by generating data-driven assumptions from user insights. It processes user data collected by researchers to provide PMs with grounded, actionable insights.\"},{title:\"Feature 2 \\xb7 UX Metrics Visualization\",media:{src:\"https://framerusercontent.com/images/G2E7WJ5RJh3ODBqCgV9uDigfi8.gif\",alt:\"Screen recording: CoAgent turning research into Jobs-to-Be-Done\"},problem:\"UXRs struggle to translate text-heavy findings into visual, actionable formats tailored to a PM’s needs.\",solution:\"The feature analyzes user research to identify themes and motivations, converting them into actionable Jobs-to-Be-Done statements that link user needs to business goals for PMs.\"},{title:\"Feature 3 \\xb7 User Insights and Business Goal Mapping\",media:{src:\"https://framerusercontent.com/images/cLVS27ZN0T7SdrVSLfhfJvzN8.gif\",alt:\"Screen recording: mapping user insights to business goals\"},problem:\"PMs struggle to align user stories with business goals and find it hard to align with UXR’s work.\",solution:\"This feature uses business goals, user insights, and data to create an actionable map, aligning user pain points with business impact and bridging goals to solutions.\"}]}]},{id:\"impact\",nav:\"Impact\",eyebrow:\"Impact\",title:\"Faster specs. Better decisions.\",tone:\"tint\",lead:\"Surveyed 20 PMs and 10 UX researchers.\",blocks:[{kind:\"stats\",items:[{value:\"25%\",title:\"Less time on specs\",body:\"About 5 hours saved per PM, every week.\"},{value:\"85%\",title:\"More confident\",body:\"Of PMs felt more confident deciding.\"},{value:\"32%\",title:\"Faster alignment\",body:\"Quicker to finalize requirements.\"}]}]},{eyebrow:\"Reflection\",title:\"Broad scope, real constraints.\",tone:\"white\",lead:\"Recruiting Microsoft PMs was hard, so testing with peers filled the gap. Next, we're publishing this work as an academic paper.\",blocks:[{kind:\"image\",media:{src:IMG(\"5d1ZDSDGYy8pmMdN9cjMmVubo\"),alt:\"Video call with the project team and our Microsoft sponsor\"},wide:true}]}],more:[MORE.uppermed,MORE.jobscan]},uppermed:{name:\"Uppermed\",accent:INK,logo:{src:IMG(\"CzVQQLGMgWReJ5hjb9O5QGbDP1g\"),alt:\"UpperMed\"},tags:\"Health product \\xb7 Mobile app \\xb7 Startup\",title:\"A calmer way to live with dialysis.\",lead:\"As **founding designer**, I took an App Store health app from research to launch and helped the startup **raise $600K**.\",heroImage:{src:IMG(\"MKGm4TJWeDp3vVESXd70CSDE\"),alt:\"Uppermed dashboard and appointment screens with illustrated patient and doctor\"},heroBleed:true,palette:UPPERMED,meta:[{label:\"Role\",value:\"Founding designer\"},{label:\"Timeline\",value:\"3 months\"},{label:\"Team\",value:\"CEO, 3 developers\"}],chapters:[{id:\"problem\",nav:\"Problem\",eyebrow:\"Problem\",title:\"Four paper logs a day.\",tone:\"white\",lead:\"Home dialysis patients tracked their body data by hand. Their care teams couldn't see it between visits.\",blocks:[{kind:\"cards\",items:[{media:{src:IMG(\"LNpU2h1JwBhJJzb7MV7p7vEKA\"),alt:\"Handwritten paper log of dialysis data\"},label:\"Before Uppermed\",title:\"Manual logs, no real-time sync\",body:\"Slow to fill in, easy to forget, impossible to share.\"}]},{kind:\"cards\",items:[{label:\"Patients\",title:\"A heavy daily burden\",body:\"Fluid, blood pressure and weight, four times a day.\"},{label:\"Clinicians\",title:\"No view between visits\",body:\"Progress was hard to monitor remotely.\"},{label:\"Communication\",title:\"No clear channel\",body:\"Phone calls and third-party apps filled the gap.\"}]}]},{id:\"research\",nav:\"Research\",eyebrow:\"Research\",title:\"25 conversations with patients and clinicians.\",tone:\"tint\",lead:\"Patients aged 40 to 80, and the people who care for them.\",blocks:[{kind:\"profile\",media:{src:IMG(\"UKx9vRwY71YTLiqsXRGTCUtg\"),alt:\"Avatar of the persona Jacky Wang\"},name:\"Jacky Wang\",meta:\"55 \\xb7 Former taxi driver \\xb7 Father of two\",details:\"His illness changed his career. He wants to stay in control of his treatment.\",needs:[\"Clearer talks with his doctors.\",\"To feel in charge of his treatment.\"],challenges:[\"Logging data four times a day.\",\"Forgetting hospital check-ins.\"]}]},{eyebrow:\"Opportunity\",title:\"Less logging. More living.\",tone:\"dark\",blocks:[{kind:\"statement\",body:\"How might we help patients manage treatment more easily, while staying close to their care team?\"},{kind:\"cards\",items:[{title:\"Sync data automatically\",body:\"No more manual entry.\"},{title:\"Share in real time\",body:\"Clinicians see progress as it happens.\"},{title:\"Guide every log\",body:\"Clear steps, fewer mistakes.\"}]}]},{id:\"ideation\",nav:\"Ideation\",eyebrow:\"Ideation\",title:\"One sitemap. Three dashboards. One winner.\",tone:\"tint\",lead:\"**10 participants** chose the third idea: a clear landing view with details one tap away.\",blocks:[{kind:\"image\",media:{src:IMG(\"UQDuIGKvGMzmIYj41UbdxNJm6ic\"),alt:\"Three dashboard ideas with pros and cons\"},wide:true},{kind:\"image\",media:{src:IMG(\"T0TgCLQS2lvunCD6AV8Wvkqac\"),alt:\"Annotated wireframes of dashboard, detail, trend, notes and chat\"},wide:true}]},{id:\"design\",nav:\"Design\",eyebrow:\"Design\",title:\"Your data. Your trends. Your care team.\",tone:\"white\",lead:\"One dashboard, clear trend charts and a direct chat with care providers.\",blocks:[{kind:\"gallery\",cols:1,phone:true,items:[{src:\"https://framerusercontent.com/images/AgvsBprmwvxgkEidFmiwhwDm4.gif\",alt:\"Animated walkthrough of the Uppermed app\"}]}]},{id:\"iterations\",nav:\"Iterations\",eyebrow:\"Iterations\",title:\"Clearer with every test.\",tone:\"tint\",lead:\"Tested with 10 users and checked against **WCAG**, so older patients read everything with ease.\",blocks:[{kind:\"cards\",items:[{media:{src:IMG(\"KvR6u3cucUw5tTj4v1WCLquwWg0\"),alt:\"Dashboard before and after\"},label:\"Dashboard\",title:\"Easier to use\",body:\"A clear date picker, details on their own page, chat one tap away.\"},{media:{src:IMG(\"7vOUrNAQo4jpSSYUAk8ThQT5os\"),alt:\"Trend screen before and after\"},label:\"Trends\",title:\"Every category in view\",body:\"Tabs replaced a hidden dropdown.\"}]}]},{id:\"impact\",nav:\"Impact\",eyebrow:\"Impact\",title:\"Loved by patients. Trusted by clinicians.\",tone:\"white\",lead:\"Tested with 10 patients and 10 clinicians.\",blocks:[{kind:\"stats\",items:[{value:\"9/10\",title:\"Error-free\",body:\"Patients finished all 5 tasks without errors.\"},{value:\"9\",title:\"Net Promoter Score\",body:\"Out of 10, for “Would you recommend it?”\"},{value:\"10/10\",title:\"Lighter workload\",body:\"Doctors and nurses felt the difference.\"}]}]},{id:\"final\",nav:\"Final\",eyebrow:\"Final design\",title:\"The hi-fi prototype.\",tone:\"dark\",blocks:[{kind:\"gallery\",cols:4,phone:true,items:[{src:IMG(\"kjQ328zpwFhWU4miwa7ByIjNfLY\"),alt:\"Dashboard screen\"},{src:IMG(\"wW78GCsCFRmLaanMF726DMR5yQ\"),alt:\"Calendar screen\"},{src:IMG(\"dmGvGiei2FB14YMfNumIzuya4\"),alt:\"Appointment screen\"},{src:IMG(\"ZTVLsVJX6B4iRq6udjveDBdb0\"),alt:\"Dashboard with upcoming appointment alert\"}]}]},{eyebrow:\"Reflection\",title:\"Empathy is the work.\",tone:\"tint\",lead:\"Friendlier empty states, a family mode for remote care and playful note-taking. Seeing patients take charge of their recovery taught me what design is for.\",blocks:[]}],more:[MORE.jobscan,MORE.binance]},jobscan:{name:\"Jobscan\",accent:INK,logo:{src:IMG(\"rgzYRvIowsHs52VBNixb41GAI\"),alt:\"Jobscan\"},tags:\"AI product \\xb7 Web \\xb7 Design system\",title:\"Seven steps became three.\",lead:\"I redesigned Jobscan's AI LinkedIn optimizer and built its design system. **Sign-ups rose 41%. Conversions rose 28%.**\",heroImage:{src:IMG(\"ZzY8ObXqOrHkaXh4JnkTdJ6Ac\"),alt:\"Redesigned LinkedIn Optimization page on a laptop\"},heroBleed:true,palette:JOBSCAN,meta:[{label:\"Role\",value:\"End-to-end design\"},{label:\"Timeline\",value:\"3 months\"},{label:\"Team\",value:\"1 PM, 3 developers\"}],chapters:[{id:\"problem\",nav:\"Problem\",eyebrow:\"At a glance\",title:\"From download-and-upload to one click.\",tone:\"white\",blocks:[{kind:\"beforeAfter\",pairs:[{before:{media:{src:IMG(\"FBNYNcOoUbZOg5ziuWUrU103U1A\"),alt:\"Old LinkedIn Optimization page\"},title:\"Download, upload, repeat\",body:\"Several windows and a PDF round-trip.\"},after:{media:{src:IMG(\"QQSfa8DNhHu0tsONVE28MZ93jU\"),alt:\"Redesigned LinkedIn Optimization page\"},title:\"Connect once, scan instantly\",body:\"One guided flow, right on the page.\"}}]}]},{id:\"context\",nav:\"Context\",eyebrow:\"Context\",title:\"A million job seekers. One confusing flow.\",tone:\"dark\",lead:\"Jobscan's AI suggests keywords and formatting that help LinkedIn profiles get noticed. But confusing steps kept users from **becoming paying customers**.\",blocks:[]},{id:\"research\",nav:\"Research\",eyebrow:\"Research\",title:\"Listening first.\",tone:\"white\",lead:\"120 Trustpilot reviews, guerrilla tests with 7 users and 15 interviews.\",blocks:[{kind:\"image\",media:{src:IMG(\"MmtxsLjQg5c6xaRo00cLJ1UDY\"),alt:\"Social listening, guerrilla testing and user interview photos\"},wide:true},{kind:\"image\",media:{src:IMG(\"x5V1bJ7xqjqxPXV6OP5bN0pxw\"),alt:\"User quotes about confusing steps and unclear instructions\"},wide:true}]},{id:\"findings\",nav:\"Findings\",eyebrow:\"Findings\",title:\"Three problems to solve.\",tone:\"tint\",blocks:[{kind:\"cards\",items:[{label:\"Efficiency\",title:\"Too many steps\",body:\"Multiple windows and a file round-trip.\"},{label:\"Discoverability\",title:\"Too much noise\",body:\"Irrelevant content buried the task.\"},{label:\"Readability\",title:\"Hard to read\",body:\"Unclear hierarchy, inconsistent components.\"}]},{kind:\"statement\",body:\"How might we make LinkedIn optimization feel effortless?\"}]},{id:\"ideation\",nav:\"Ideation\",eyebrow:\"Ideation\",title:\"Seven redundant steps became three.\",tone:\"white\",lead:\"**5 wireframes, 20 users.** The third idea won for its simplicity.\",blocks:[{kind:\"image\",media:{src:IMG(\"xmaGNdtJv1lRHvHWlCxFOmksk\"),alt:\"Diagram of the old seven-step flow\"},wide:true},{kind:\"image\",media:{src:IMG(\"RTBooIwMCX9wOorxU4HlTToc\"),alt:\"Three wireframe ideas, with the third highlighted\"},wide:true}]},{id:\"system\",nav:\"Design system\",eyebrow:\"Design system\",title:\"Built from scratch.\",tone:\"dark\",lead:\"Open Sans, a clear color scale and reusable components, ready for developers.\",blocks:[{kind:\"image\",media:{src:IMG(\"0SzCA8cemrh5bVw5Yg4HxJZ00\"),alt:\"Design system type, color and components\"},wide:true}]},{id:\"iterations\",nav:\"Iterations\",eyebrow:\"Design improvements\",title:\"Clear steps. Less noise.\",tone:\"tint\",blocks:[{kind:\"beforeAfter\",pairs:[{before:{media:{src:IMG(\"m8prZD6ZdwWHOMA1eInQoJLshGg\"),alt:\"Old step with unclear instructions\"},title:\"Unclear\",body:\"Vague instructions and a redundant upload.\"},after:{media:{src:IMG(\"kwKYSwUm5fdYEaTl68kIGMtPA\"),alt:\"New step with progress and one-click connect\"},title:\"Guided\",body:\"Progress, one-click connect and helpful tips.\"}},{before:{media:{src:IMG(\"dvggnhC3EpwEFjU4tvKXdCpYI\"),alt:\"Old page with irrelevant information\"},title:\"Distracting\",body:\"Extra content pulled focus.\"},after:{media:{src:IMG(\"N59eEWpPd8NN2NyrBHL5yQAyN8\"),alt:\"New clean page highlighting key tasks\"},title:\"Focused\",body:\"Key tasks first, 3 steps down to 2.\"}}]},{kind:\"gallery\",cols:1,items:[{src:\"https://framerusercontent.com/images/PtawyhnA7YePYnT5CAYe0P945hM.gif\",alt:\"Prototype of the new flow\"}]},{kind:\"cards\",items:[{label:\"Efficiency\",title:\"7/7 done in 2 minutes\"},{label:\"Discoverability\",title:\"6/7 found the CTA easily\"},{label:\"Readability\",title:\"7/7 read it better\"}]}]},{id:\"impact\",nav:\"Impact\",eyebrow:\"Impact\",title:\"A small flow. A big result.\",tone:\"white\",lead:\"One month after launch.\",blocks:[{kind:\"stats\",items:[{value:\"41%\",title:\"More sign-ups\",body:\"Monthly sign-up rate.\"},{value:\"28%\",title:\"Higher conversion\",body:\"Subscriber conversion rate.\"},{value:\"3\",title:\"Steps, down from 7\",body:\"The core optimization flow.\"}]}]},{eyebrow:\"Reflection\",title:\"Evidence wins the room.\",tone:\"dark\",lead:\"The PM first said no. User testing results and a working session with PM and developers turned it around, and we shipped the idea users voted for.\",blocks:[]}],more:[MORE.binance,MORE.microsoft]}};// ---------- rendering ----------\n// **phrase** → semibold ink, like HighlightText on the Binance page\nfunction Rich({text}){const parts=text.split(/(\\*\\*[^*]+\\*\\*)/g);return /*#__PURE__*/_jsx(_Fragment,{children:parts.map((p,i)=>p.startsWith(\"**\")&&p.endsWith(\"**\")?/*#__PURE__*/_jsx(\"strong\",{className:\"cs-strong\",children:p.slice(2,-2)},i):/*#__PURE__*/_jsx(\"span\",{children:p},i))});}function Tile({media,pad=true,plain=false}){if(plain){return /*#__PURE__*/_jsx(\"div\",{className:\"cs-plain\",children:/*#__PURE__*/_jsx(\"img\",{src:media.src,alt:media.alt,loading:\"lazy\",style:{display:\"block\",width:\"100%\",height:\"auto\",maxWidth:\"none\",...cropFor(media.src)||{}}})});}return /*#__PURE__*/_jsx(\"div\",{className:`cs-tile ${pad?\"cs-tile-pad\":\"\"}`,children:/*#__PURE__*/_jsx(\"img\",{src:media.src,alt:media.alt,loading:\"lazy\",style:{display:\"block\",width:\"100%\",height:\"auto\",borderRadius:pad?14:0}})});}// Clean hero: the shot alone in the same hairline frame as the plain screenshots, with its file trim\n// applied. The frame is sized from the image's own ratio: as wide as the column allows, but no taller\n// than ~78% of the viewport, so the trimmed image fills it edge to edge on every side.\nfunction HeroClean({media,bare=false}){const ref=useRef(null);const[ratio,setRatio]=useState(0);const[w,setW]=useState(0);useEffect(()=>{if(typeof window===\"undefined\")return;const fit=()=>{const el=ref.current;if(!el||!el.parentElement||!ratio)return;const avail=el.parentElement.getBoundingClientRect().width;const capH=Math.max(520,window.innerHeight*.78);setW(Math.min(avail,capH*ratio));};fit();window.addEventListener(\"resize\",fit);return()=>window.removeEventListener(\"resize\",fit);},[ratio]);return /*#__PURE__*/_jsx(\"div\",{ref:ref,className:`cs-plain cs-hero-plain ${bare?\"cs-hero-bare\":\"\"}`,style:w?{width:w,maxWidth:\"100%\"}:{width:\"100%\",maxWidth:1e3},children:/*#__PURE__*/_jsx(\"img\",{src:media.src,alt:media.alt,onLoad:e=>{const t=e.currentTarget;if(t.naturalWidth&&t.naturalHeight)setRatio(t.naturalWidth/t.naturalHeight);},style:{display:\"block\",width:\"100%\",height:\"auto\",maxWidth:\"none\",...cropFor(media.src)||{}}})});}// An image with an optional one-line caption below it\nfunction Fig({media,className=\"\",children}){return /*#__PURE__*/_jsxs(\"figure\",{className:`cs-fig ${className}`,children:[children,media.caption&&/*#__PURE__*/_jsx(\"figcaption\",{className:\"cs-cap\",children:media.caption})]});}function renderBlock(b,key,plain=false){switch(b.kind){case\"text\":return /*#__PURE__*/_jsx(\"p\",{className:\"cs-body cs-narrow\",children:/*#__PURE__*/_jsx(Rich,{text:b.body})},key);case\"image\":return /*#__PURE__*/_jsx(Fig,{media:b.media,className:b.wide?\"cs-wide\":\"cs-mid\",children:/*#__PURE__*/_jsx(Tile,{media:b.media,plain:plain})},key);case\"art\":return /*#__PURE__*/_jsx(\"div\",{className:\"cs-art\",children:/*#__PURE__*/_jsx(\"img\",{src:b.media.src,alt:b.media.alt,loading:\"lazy\"})},key);case\"logos\":return /*#__PURE__*/_jsx(\"div\",{className:\"cs-logos\",children:b.items.map((m,i)=>/*#__PURE__*/_jsx(\"img\",{src:m.src,alt:m.alt,loading:\"lazy\"},i))},key);case\"quotes\":return /*#__PURE__*/_jsx(\"div\",{className:\"cs-grid3 cs-wide\",children:b.items.map((q,i)=>/*#__PURE__*/_jsxs(\"figure\",{className:\"cs-card\",style:{margin:0},children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-card-title\",children:q.title}),/*#__PURE__*/_jsxs(\"blockquote\",{className:\"cs-quote\",children:[\"“\",q.quote,\"”\"]}),/*#__PURE__*/_jsx(\"figcaption\",{className:\"cs-who\",children:q.who})]},i))},key);case\"cards\":return /*#__PURE__*/_jsx(\"div\",{className:`${b.items.length===1?\"cs-grid1 cs-mid\":b.items.length===2?\"cs-grid2\":\"cs-grid3\"} cs-wide`,children:b.items.map((c,i)=>/*#__PURE__*/_jsxs(\"div\",{className:`cs-card ${c.media?\"cs-has-media\":\"\"} ${c.accent?\"cs-card-accent\":\"\"}`,children:[c.media&&/*#__PURE__*/_jsx(\"div\",{className:\"cs-card-media\",children:/*#__PURE__*/_jsx(\"img\",{src:c.media.src,alt:c.media.alt,loading:\"lazy\"})}),/*#__PURE__*/_jsxs(\"div\",{className:\"cs-card-text\",children:[c.label&&(/^\\d+$/.test(c.label)?/*#__PURE__*/_jsx(\"div\",{className:\"cs-num\",children:c.label}):/*#__PURE__*/_jsx(\"div\",{className:\"cs-label\",children:c.label})),c.title&&/*#__PURE__*/_jsx(\"div\",{className:\"cs-card-title\",children:c.title}),c.body&&/*#__PURE__*/_jsx(\"p\",{className:\"cs-card-body\",children:c.body})]})]},i))},key);case\"personas\":return /*#__PURE__*/_jsx(\"div\",{className:\"cs-grid2 cs-wide\",children:b.items.map((p,i)=>/*#__PURE__*/_jsxs(\"div\",{className:\"cs-card cs-persona\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-card-media cs-persona-media\",children:/*#__PURE__*/_jsx(\"img\",{src:p.media.src,alt:p.media.alt,loading:\"lazy\"})}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-card-title\",children:p.title}),/*#__PURE__*/_jsx(\"ul\",{className:\"cs-points\",children:p.points.map((pt,j)=>/*#__PURE__*/_jsxs(\"li\",{children:[/*#__PURE__*/_jsx(\"span\",{className:\"cs-dot\",\"aria-hidden\":\"true\"}),pt]},j))})]})]},i))},key);case\"statement\":return /*#__PURE__*/_jsx(\"p\",{className:\"cs-statement cs-narrow\",children:b.body},key);case\"beforeAfter\":if(b.marked){// Marked form: no card. Each shot, then a red \"Before\" or green \"After\" rule with its icon, then title and text\nreturn /*#__PURE__*/_jsx(\"div\",{className:\"cs-wide cs-ba-list\",children:b.pairs.map((pair,i)=>/*#__PURE__*/_jsx(\"div\",{className:\"cs-grid2 cs-ba-row\",children:[\"before\",\"after\"].map(side=>/*#__PURE__*/_jsxs(\"figure\",{className:`cs-ba cs-ba-${side}`,children:[/*#__PURE__*/_jsx(\"a\",{className:\"cs-ba-shot\",href:pair[side].media.src,target:\"_blank\",rel:\"noopener\",children:/*#__PURE__*/_jsx(\"img\",{src:pair[side].media.src,alt:pair[side].media.alt,loading:\"lazy\"})}),/*#__PURE__*/_jsxs(\"div\",{className:\"cs-ba-mark\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"cs-ba-ic\",\"aria-hidden\":\"true\",children:side===\"before\"?\"✕\":\"✓\"}),side===\"before\"?\"Before\":\"After\"]}),/*#__PURE__*/_jsxs(\"figcaption\",{children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-card-title\",children:pair[side].title}),/*#__PURE__*/_jsx(\"p\",{className:\"cs-card-body\",children:pair[side].body})]})]},side))},i))},key);}return /*#__PURE__*/_jsx(\"div\",{className:\"cs-wide cs-stack\",children:b.pairs.map((pair,i)=>/*#__PURE__*/_jsx(\"div\",{className:\"cs-grid2\",children:[\"before\",\"after\"].map(side=>/*#__PURE__*/_jsxs(\"div\",{className:\"cs-card\",children:[/*#__PURE__*/_jsx(\"div\",{className:`cs-badge ${side===\"after\"?\"cs-badge-ink\":\"\"}`,children:side===\"before\"?\"Before\":\"After\"}),/*#__PURE__*/_jsx(\"div\",{className:\"cs-card-media cs-shot\",children:/*#__PURE__*/_jsx(\"img\",{src:pair[side].media.src,alt:pair[side].media.alt,loading:\"lazy\"})}),/*#__PURE__*/_jsx(\"div\",{className:\"cs-card-title\",children:pair[side].title}),/*#__PURE__*/_jsx(\"p\",{className:\"cs-card-body\",children:pair[side].body})]},side))},i))},key);case\"features\":return /*#__PURE__*/_jsx(\"div\",{className:`cs-wide cs-stack cs-features ${b.fixed?\"cs-features-fixed\":\"\"}`,children:b.items.map((f,i)=>/*#__PURE__*/_jsxs(\"div\",{className:\"cs-feature\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-feature-media\",children:b.fixed?/*#__PURE__*/_jsx(\"a\",{className:\"cs-ba-shot\",href:f.media.src,target:\"_blank\",rel:\"noopener\",children:/*#__PURE__*/_jsx(\"img\",{src:f.media.src,alt:f.media.alt,loading:\"lazy\"})}):/*#__PURE__*/_jsx(Tile,{media:f.media})}),/*#__PURE__*/_jsxs(\"div\",{className:\"cs-feature-text\",children:[/*#__PURE__*/_jsx(\"h3\",{className:\"cs-h3\",children:f.title}),/*#__PURE__*/_jsxs(\"div\",{className:\"cs-ps\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"cs-ps-k cs-ps-bad\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"cs-ba-ic\",\"aria-hidden\":\"true\",children:\"✕\"}),\"Problem\"]}),/*#__PURE__*/_jsx(\"p\",{className:\"cs-card-body\",children:f.problem})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"cs-ps\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"cs-ps-k cs-ps-good\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"cs-ba-ic\",\"aria-hidden\":\"true\",children:\"✓\"}),\"Solution\"]}),/*#__PURE__*/_jsx(\"p\",{className:\"cs-card-body cs-solution\",children:f.solution})]})]})]},i))},key);case\"stats\":{const n=b.items.length;const grid=n===1?\"cs-grid1 cs-mid\":n===2?\"cs-grid2\":n===5?\"cs-grid5\":\"cs-grid3\";return /*#__PURE__*/_jsx(\"div\",{className:`${grid} cs-wide`,children:b.items.map((s,i)=>/*#__PURE__*/_jsxs(\"div\",{className:`cs-card cs-stat ${s.art?\"cs-stat-art\":\"\"}`,children:[s.art&&/*#__PURE__*/_jsx(\"div\",{className:\"cs-stat-illo\",children:/*#__PURE__*/_jsx(\"img\",{src:s.art.src,alt:s.art.alt,loading:\"lazy\"})}),/*#__PURE__*/_jsxs(\"div\",{className:\"cs-stat-main\",children:[(s.media||s.label)&&/*#__PURE__*/_jsxs(\"div\",{className:\"cs-stat-who\",children:[s.media&&/*#__PURE__*/_jsx(\"img\",{src:s.media.src,alt:s.media.alt,loading:\"lazy\"}),s.label&&/*#__PURE__*/_jsx(\"span\",{className:\"cs-label\",children:s.label})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"cs-stat-row\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-stat-value\",children:s.value}),s.badge&&/*#__PURE__*/_jsx(\"div\",{className:\"cs-badge cs-badge-ink\",children:s.badge})]}),s.title&&/*#__PURE__*/_jsx(\"div\",{className:\"cs-card-title\",children:s.title}),/*#__PURE__*/_jsx(\"p\",{className:\"cs-card-body\",children:s.body})]})]},i))},key);}case\"gallery\":return /*#__PURE__*/_jsx(\"div\",{className:`cs-wide cs-gallery ${b.screens?\"cs-screens\":\"\"} ${b.round?\"cs-screens-round\":\"\"}`,style:{[\"--cols\"]:b.cols},children:b.items.map((m,i)=>/*#__PURE__*/_jsx(Fig,{media:m,children:/*#__PURE__*/_jsx(\"div\",{className:`cs-tile ${b.phone?\"cs-phone\":\"\"}`,children:/*#__PURE__*/_jsxs(\"span\",{className:\"cs-shotwrap\",children:[/*#__PURE__*/_jsx(\"img\",{src:m.src,alt:m.alt,loading:\"lazy\"}),m.focus&&/*#__PURE__*/_jsx(\"span\",{className:\"cs-focus\",\"aria-hidden\":\"true\",style:{left:`${m.focus[0]}%`,top:`${m.focus[1]}%`,width:`${m.focus[2]}%`,height:`${m.focus[3]}%`}})]})})},i))},key);case\"notes\":return /*#__PURE__*/_jsxs(\"div\",{className:\"cs-notes cs-wide\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-notes-grid\",children:b.items.map((n,i)=>/*#__PURE__*/_jsxs(\"div\",{className:`cs-note ${n.todo?\"cs-note-todo\":\"\"}`,children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-note-k\",children:n.label}),/*#__PURE__*/_jsx(\"p\",{className:\"cs-card-body\",children:/*#__PURE__*/_jsx(Rich,{text:n.body})})]},i))}),b.next&&/*#__PURE__*/_jsxs(\"div\",{className:\"cs-next\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-note-k\",children:\"Why the next round\"}),/*#__PURE__*/_jsx(\"p\",{className:\"cs-card-body\",children:b.next})]})]},key);case\"funnel\":return /*#__PURE__*/_jsx(\"div\",{className:\"cs-wide cs-funnel\",style:{[\"--n\"]:b.stages.length},children:b.stages.map((st,i)=>/*#__PURE__*/_jsxs(\"div\",{className:\"cs-fn-col\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"cs-fn-stage\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"cs-fn-dot\",children:i+1}),/*#__PURE__*/_jsx(\"span\",{className:\"cs-fn-name\",children:st})]}),b.rounds.filter(r=>r.stage===i).map((r,j)=>/*#__PURE__*/_jsxs(\"div\",{className:\"cs-fn-card\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"cs-fn-r\",children:[\"Round \",r.n]}),/*#__PURE__*/_jsx(\"div\",{className:\"cs-card-title\",children:r.title}),/*#__PURE__*/_jsx(\"p\",{className:\"cs-card-body\",children:r.body})]},j))]},i))},key);case\"flow\":return /*#__PURE__*/_jsxs(\"div\",{className:\"cs-wide cs-flow\",children:[b.title&&/*#__PURE__*/_jsx(\"div\",{className:\"cs-flow-title\",children:b.title}),b.rows.map((row,i)=>/*#__PURE__*/_jsxs(\"div\",{className:`cs-flow-row cs-flow-${row.tone}`,children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-flow-label\",children:row.label}),/*#__PURE__*/_jsx(\"div\",{className:\"cs-flow-steps\",children:row.steps.map((st,j)=>/*#__PURE__*/_jsxs(\"span\",{className:\"cs-flow-item\",children:[j>0&&/*#__PURE__*/_jsx(\"span\",{className:\"cs-flow-arrow\",\"aria-hidden\":\"true\",children:\"→\"}),/*#__PURE__*/_jsx(\"span\",{className:`cs-flow-chip ${st.star?\"cs-flow-star\":\"\"}`,children:st.t})]},j))}),/*#__PURE__*/_jsx(\"div\",{className:\"cs-flow-note\",children:row.note})]},i))]},key);case\"profile\":{const groups=[[b.needsLabel||\"Needs\",b.needs],[b.challengesLabel||\"Challenges\",b.challenges]];if(b.quote){// Quote form: no card. The person's words set large, with the labels kept small, and the person as attribution\nreturn /*#__PURE__*/_jsxs(\"figure\",{className:\"cs-pquote cs-mid\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-pquote-cols\",children:groups.map(([k,list])=>/*#__PURE__*/_jsxs(\"div\",{className:\"cs-pquote-col\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-ps-k\",children:k}),list.map((t,j)=>/*#__PURE__*/_jsxs(\"blockquote\",{className:\"cs-pquote-text\",children:[\"“\",t,\"”\"]},j))]},k))}),/*#__PURE__*/_jsxs(\"figcaption\",{className:\"cs-pquote-who\",children:[/*#__PURE__*/_jsx(\"img\",{className:\"cs-avatar\",src:b.media.src,alt:b.media.alt,loading:\"lazy\"}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-card-title\",children:b.name}),/*#__PURE__*/_jsx(\"div\",{className:\"cs-who\",style:{paddingTop:2},children:b.meta})]})]})]},key);}return /*#__PURE__*/_jsxs(\"div\",{className:\"cs-card cs-profile cs-mid\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"cs-profile-head\",children:[/*#__PURE__*/_jsx(\"img\",{className:\"cs-avatar\",src:b.media.src,alt:b.media.alt,loading:\"lazy\"}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-card-title\",children:b.name}),/*#__PURE__*/_jsx(\"div\",{className:\"cs-who\",style:{paddingTop:2},children:b.meta})]})]}),b.details&&/*#__PURE__*/_jsx(\"p\",{className:\"cs-card-body\",children:b.details}),/*#__PURE__*/_jsx(\"div\",{className:\"cs-grid2\",style:{gap:24},children:groups.map(([k,list])=>/*#__PURE__*/_jsxs(\"div\",{className:\"cs-ps\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-ps-k\",children:k}),/*#__PURE__*/_jsx(\"ul\",{className:\"cs-points\",style:{marginTop:4},children:list.map((t,j)=>/*#__PURE__*/_jsxs(\"li\",{children:[/*#__PURE__*/_jsx(\"span\",{className:\"cs-dot\",\"aria-hidden\":\"true\"}),t]},j))})]},k))})]},key);}case\"video\":return /*#__PURE__*/_jsx(\"div\",{className:\"cs-wide\",children:/*#__PURE__*/_jsx(\"div\",{className:\"cs-video\",children:/*#__PURE__*/_jsx(\"iframe\",{src:`https://www.youtube-nocookie.com/embed/${b.youtubeId}?rel=0`,title:b.title,loading:\"lazy\",allow:\"accelerometer; encrypted-media; gyroscope; picture-in-picture; fullscreen\",allowFullScreen:true,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",border:0}})})},key);}}/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight auto\n */export default function CaseStudy(props){const{project,homeHref,showBackButton,heroImage,heroAlt}=props;const p=PROJECTS[project]||PROJECTS.microsoft;const pal=p.palette;const P=pal||{accent:INK,accentOnDark:\"#A1A1A6\",heroTile:PAGE,tint:PAGE,tintCard:\"#FFFFFF\",dark:\"#1D1D1F\",darkCard:\"#2C2C2E\",brand:INK,heroTint:\"#FFFFFF\",eyebrowOnDark:\"#A1A1A6\"};// Numbered badges: the project's marker color when it has one, else ink (light badge on black sections)\nconst numFill=P.num||INK;const numText=P.numText||\"#FFFFFF\";const numFillDark=P.num||\"#F5F5F7\";const numTextDark=P.num?numText:\"#000000\";const onCanvas=RenderTarget.current()===RenderTarget.canvas;const navItems=p.chapters.filter(c=>c.id&&c.nav);const[active,setActive]=useState(\"\");const[pastHero,setPastHero]=useState(false);const rootRef=useRef(null);// A dropped-in product shot (or a project that asks for a clean hero) sits straight on white, no tile\nconst heroOverride=typeof heroImage===\"string\"&&heroImage.length>0||Boolean(p.heroClean);const hero=typeof heroImage===\"string\"&&heroImage.length>0?{src:heroImage,alt:heroAlt||p.heroImage.alt}:p.heroImage;// Highlight the chapter currently under the top bar\nuseEffect(()=>{if(typeof window===\"undefined\"||typeof IntersectionObserver===\"undefined\")return;const els=navItems.map(n=>document.getElementById(`cs-${n.id}`)).filter(Boolean);const io=new IntersectionObserver(entries=>{const vis=entries.filter(e=>e.isIntersecting).sort((a,b)=>a.boundingClientRect.top-b.boundingClientRect.top);if(vis[0])startTransition(()=>setActive(vis[0].target.id.replace(\"cs-\",\"\")));},{rootMargin:\"-60px 0px -55% 0px\",threshold:0});els.forEach(el=>io.observe(el));return()=>io.disconnect();},[project]);// \"Back to top\" appears once the hero has scrolled away, like on the home page\nuseEffect(()=>{if(typeof window===\"undefined\"||onCanvas)return;const onScroll=()=>{const next=window.scrollY>600;startTransition(()=>setPastHero(v=>v===next?v:next));};onScroll();window.addEventListener(\"scroll\",onScroll,{passive:true});return()=>window.removeEventListener(\"scroll\",onScroll);},[onCanvas]);// Quiet, Apple-like reveal: each block rises 24px and fades in once\nuseEffect(()=>{const root=rootRef.current;if(!root||onCanvas||typeof IntersectionObserver===\"undefined\")return;if(window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return;const items=Array.from(root.querySelectorAll(\".cs-hero > *, .cs-meta, .cs-ch-in > *, .cs-feature\"));items.forEach(el=>el.classList.add(\"cs-rv\"));const io=new IntersectionObserver(entries=>entries.forEach(e=>{if(e.isIntersecting){e.target.classList.add(\"cs-in\");io.unobserve(e.target);}}),{rootMargin:\"0px 0px -8% 0px\",threshold:.08});items.forEach(el=>io.observe(el));return()=>io.disconnect();},[project,onCanvas]);const reduceMotion=()=>typeof window!==\"undefined\"&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;const go=id=>e=>{e.preventDefault();const el=document.getElementById(`cs-${id}`);if(!el)return;window.scrollTo({top:el.getBoundingClientRect().top+window.scrollY-52,behavior:reduceMotion()?\"auto\":\"smooth\"});startTransition(()=>setActive(id));};const toTop=()=>{if(typeof window===\"undefined\")return;window.scrollTo({top:0,behavior:reduceMotion()?\"auto\":\"smooth\"});};const barStyle={// Sticky (not fixed): Framer wraps layers in transforms, which would pin a fixed bar to the layer instead of the window\nposition:onCanvas?\"absolute\":\"sticky\",top:0,left:0,right:0,zIndex:30,height:52,background:\"rgba(255, 255, 255, 0.72)\",backdropFilter:\"saturate(180%) blur(20px)\",WebkitBackdropFilter:\"saturate(180%) blur(20px)\",borderBottom:\"1px solid rgba(0, 0, 0, 0.08)\",fontFamily:'-apple-system, BlinkMacSystemFont, \"SF Pro Text\", \"Inter\", sans-serif'};const showTop=pastHero||onCanvas;const backStyle={position:onCanvas?\"absolute\":\"fixed\",right:20,bottom:onCanvas?20:68,zIndex:30,opacity:showTop?1:0,transform:showTop?\"translateY(0)\":\"translateY(8px)\",pointerEvents:showTop?\"auto\":\"none\",transition:\"opacity .3s ease, transform .3s cubic-bezier(.2,.8,.2,1)\"};return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,className:\"cs-root\",style:{position:\"relative\",width:\"100%\",fontFamily:FONT,color:INK,background:\"#FFFFFF\"},children:[/*#__PURE__*/_jsx(\"style\",{children:`\n        @import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap\");\n        .cs-root { container-type: inline-size; container-name: cs; --accent: ${P.accent}; -webkit-font-smoothing: antialiased; }\n        .cs-root, .cs-root * { box-sizing: border-box; }\n        .cs-strong { font-weight: 600; color: ${INK}; }\n        /* Top bar: same language as the home page's AppleNav */\n        .cs-bar-in { max-width: 1024px; height: 100%; margin: 0 auto; padding: 0 22px; display: flex; align-items: center; justify-content: space-between; gap: 24px; }\n        .cs-home { display: flex; align-items: center; min-width: 44px; min-height: 44px; flex-shrink: 0; transition: opacity .2s ease; }\n        .cs-home:hover { opacity: .7; }\n        .cs-home img { width: 30px; height: 30px; object-fit: contain; mix-blend-mode: multiply; }\n        .cs-links { display: flex; gap: 32px; min-width: 0; margin-left: auto; overflow-x: auto; scrollbar-width: none; }\n        .cs-links::-webkit-scrollbar { display: none; }\n        .cs-link { position: relative; font-size: 13px; font-weight: 400; line-height: 44px; color: ${INK}; opacity: .8; text-decoration: none; white-space: nowrap; transition: opacity .2s ease; }\n        .cs-link:hover, .cs-link[aria-current=\"true\"] { opacity: 1; }\n        .cs-link::after { content: \"\"; position: absolute; left: 0; right: 0; bottom: 8px; height: 2px; border-radius: 2px; background: var(--accent); transform: scaleX(0); transition: transform .3s cubic-bezier(.2,.8,.2,1); }\n        .cs-link[aria-current=\"true\"]::after { transform: scaleX(1); }\n\n        /* Reveal */\n        .cs-rv { opacity: 0; transform: translateY(24px); transition: opacity .9s cubic-bezier(.2,.8,.2,1), transform .9s cubic-bezier(.2,.8,.2,1); }\n        .cs-rv.cs-in { opacity: 1; transform: none; }\n\n        /* Product-first hero: logo, tags, one headline, then the product in Apple's\n        1200px column (capped so it shares the first screen with the headline), then the summary */\n        .cs-hero { padding: 104px 40px 0; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 14px; }\n        .cs-logo { height: 32px; width: auto; }\n        .cs-tags { font-size: 17px; font-weight: 600; line-height: 1.3; letter-spacing: -0.01em; color: ${MUTED}; }\n        .cs-h1 { margin: 0; max-width: 900px; font-family: ${DISPLAY}; font-size: 48px; font-weight: 600; line-height: 1.08; letter-spacing: -0.025em; text-wrap: balance; }\n        .cs-lead { margin: 0; max-width: 760px; font-size: 21px; line-height: 1.42; letter-spacing: -0.01em; color: ${MUTED}; text-wrap: pretty; }\n        .cs-hero-media { width: 100%; max-width: 1200px; margin-top: 34px; display: flex; justify-content: center; }\n        .cs-hero-media .cs-tile { display: inline-block; max-width: 100%; }\n        .cs-hero-media .cs-tile img { width: auto !important; max-width: 100%; max-height: max(480px, 72svh); margin: 0 auto; }\n        .cs-hero-media .cs-tile.cs-tile-pad { padding: clamp(16px, 3cqi, 40px); }\n        .cs-hero-media .cs-tile.cs-tile-pad img { max-height: max(440px, 66svh); border-radius: 0 !important; box-shadow: none; }\n        .cs-hero-media.cs-hero-clean .cs-tile { background: transparent; border-radius: 0; overflow: visible; }\n        /* Clean hero: the shot in the same hairline frame as the plain screenshots; HeroClean sizes it from the image ratio */\n        .cs-hero-media .cs-hero-plain { max-width: 100%; }\n        .cs-hero-media .cs-hero-bare { border: none; border-radius: 0; background: transparent; }\n        /* Plain screenshots: no tile, full width, one hairline frame and soft corners on every one */\n        .cs-plain { width: 100%; border-radius: 20px; overflow: hidden; border: 1px solid rgba(0,0,0,0.10); background: #FFFFFF; }\n        .cs-tone-dark .cs-plain { border-color: rgba(255,255,255,0.14); }\n        .cs-hero-lead { margin-top: 34px; }\n\n        .cs-meta { max-width: 1200px; margin: 88px auto 0; padding: 32px 24px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; border-top: 1px solid ${HAIRLINE}; border-bottom: 1px solid ${HAIRLINE}; }\n        .cs-meta > div + div { padding-left: 24px; border-left: 1px solid ${SOFT_LINE}; }\n        .cs-meta-k { font-size: 14px; font-weight: 500; line-height: 1.4; color: ${MUTED}; margin-bottom: 8px; }\n        .cs-meta-v { font-family: ${DISPLAY}; font-size: 28px; font-weight: 600; letter-spacing: -0.015em; line-height: 1.18; }\n\n        .cs-ch { padding: 160px 40px; scroll-margin-top: 52px; }\n        .cs-ch-in { max-width: 1200px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; gap: 72px; }\n        .cs-ch-head { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 18px; max-width: 820px; }\n        .cs-eyebrow { font-size: 17px; font-weight: 600; line-height: 1.3; letter-spacing: -0.01em; color: ${MUTED}; }\n        .cs-h2 { margin: 0; font-family: ${DISPLAY}; font-size: 48px; font-weight: 600; line-height: 1.08; letter-spacing: -0.025em; text-wrap: balance; }\n        /* Sentence-length headlines step down so they stay to about three lines */\n        .cs-h2.cs-h2-long { font-size: 40px; line-height: 1.12; letter-spacing: -0.022em; }\n        .cs-h3 { margin: 0; font-family: ${DISPLAY}; font-size: 28px; font-weight: 600; line-height: 1.18; letter-spacing: -0.015em; }\n\n        .cs-tone-white { background: #FFFFFF; }\n        .cs-tone-grey { background: ${PAGE}; }\n        .cs-tone-tint { background: ${P.tint}; }\n        .cs-tone-tint .cs-tile, .cs-tone-tint .cs-card { background: ${P.tintCard}; }\n        .cs-tone-tint .cs-lead, .cs-tone-tint .cs-eyebrow { color: #636366; }\n        .cs-tone-dark { background: ${P.dark}; color: #FFFFFF; }\n        .cs-tone-brand { background: ${P.brand}; color: #FFFFFF; }\n        .cs-tone-dark .cs-h2, .cs-tone-brand .cs-h2, .cs-tone-dark .cs-statement, .cs-tone-brand .cs-statement, .cs-tone-dark .cs-h3, .cs-tone-dark .cs-strong { color: #F5F5F7; }\n        .cs-tone-dark .cs-eyebrow { color: ${P.eyebrowOnDark}; }\n        .cs-tone-dark .cs-lead, .cs-tone-dark .cs-body { color: #A1A1A6; }\n        .cs-tone-brand .cs-eyebrow, .cs-tone-brand .cs-lead { color: rgba(255,255,255,0.82); }\n        .cs-tone-dark .cs-card, .cs-tone-dark .cs-tile { background: ${P.darkCard}; }\n        .cs-tone-dark .cs-card-title { color: #F5F5F7; }\n        .cs-tone-dark .cs-card-body, .cs-tone-dark .cs-points li, .cs-tone-dark .cs-quote { color: #A1A1A6; }\n        .cs-tone-dark .cs-card .cs-label, .cs-tone-dark .cs-ps-k, .cs-tone-dark .cs-who { color: ${P.eyebrowOnDark}; }\n        .cs-tone-dark .cs-dot { background: ${P.eyebrowOnDark}; }\n        .cs-tone-dark .cs-ps { border-top-color: rgba(255,255,255,0.14); }\n        .cs-tone-dark .cs-solution { color: #F5F5F7; }\n        .cs-tone-dark .cs-persona .cs-card-media { background: #FFFFFF; border-radius: 20px; padding: 16px; }\n        .cs-tone-brand .cs-card { background: rgba(255,255,255,0.12); }\n        .cs-tone-brand .cs-stat-value, .cs-tone-brand .cs-card-title { color: #FFFFFF; }\n        .cs-tone-brand .cs-card-body { color: rgba(255,255,255,0.85); }\n        .cs-card-accent { background: ${P.brand} !important; color: #F5F5F7; padding: 64px !important; }\n        .cs-card-accent .cs-card-title { color: #F5F5F7; font-size: 40px; line-height: 1.1; letter-spacing: -0.02em; }\n        .cs-card-accent .cs-card-body { color: #A1A1A6; font-size: 21px; line-height: 1.42; max-width: 640px; }\n        .cs-card-accent .cs-label { color: #A1A1A6 !important; font-size: 17px; font-weight: 600; }\n        .cs-hero-tinted { background: linear-gradient(180deg, ${P.heroTint} 0%, #FFFFFF 78%); padding-bottom: 8px; }\n        /* Project color */\n        .cs-hero-media .cs-tile { background: ${P.heroTile}; }\n        .cs-ch .cs-eyebrow, .cs-ch.cs-grey .cs-eyebrow, .cs-tone-tint .cs-eyebrow { color: ${P.accent}; }\n        .cs-tone-dark .cs-eyebrow { color: ${P.accentOnDark}; }\n        .cs-tone-dark .cs-badge-ink { background: ${P.accentOnDark}; color: #000; }\n        .cs-card-accent .cs-label { color: ${P.accentOnDark} !important; }\n        .cs-tone-white .cs-stat-value { color: ${INK}; }\n        .cs-tone-white .cs-stat .cs-card-title { color: ${P.accent}; }\n        .cs-features { gap: 96px; }\n        .cs-feature:nth-child(even) .cs-feature-media { order: 2; }\n        .cs-feature:nth-child(even) { grid-template-columns: minmax(0, 1fr) minmax(0, 1.8fr); }\n\n        .cs-wide { width: 100%; }\n        .cs-mid { width: 100%; max-width: 960px; }\n        .cs-narrow { max-width: 680px; }\n        .cs-stack { display: flex; flex-direction: column; gap: 24px; }\n        .cs-body { margin: 0; font-size: 17px; line-height: 1.5; letter-spacing: -0.01em; color: ${BODY}; text-align: center; }\n        .cs-tile { background: ${PAGE}; border-radius: 28px; overflow: hidden; }\n        .cs-tile-pad { padding: clamp(20px, 5cqi, 64px); }\n        .cs-ch.cs-grey .cs-tile, .cs-ch.cs-grey .cs-card { background: #FFFFFF; }\n        /* Captioned image */\n        .cs-fig { margin: 0; min-width: 0; display: flex; flex-direction: column; gap: 14px; }\n        .cs-cap { align-self: center; max-width: 680px; font-size: 15px; line-height: 1.45; letter-spacing: -0.005em; color: ${MUTED}; text-align: center; }\n        .cs-tone-tint .cs-cap { color: #636366; }\n        .cs-tone-dark .cs-cap { color: #A1A1A6; }\n        /* Illustration on its own, no tile */\n        .cs-art { display: flex; justify-content: center; margin-bottom: -40px; }\n        .cs-art img { display: block; height: 200px; width: auto; max-width: 100%; object-fit: contain; }\n        .cs-grid1, .cs-grid2, .cs-grid3, .cs-grid5 { display: grid; gap: 24px; }\n        .cs-grid2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n        .cs-grid3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }\n        .cs-grid5 { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 16px; }\n        .cs-card { background: ${PAGE}; border-radius: 28px; padding: 44px; display: flex; flex-direction: column; gap: 12px; text-align: left; }\n        .cs-card-media { display: flex; align-items: center; justify-content: center; height: 260px; margin-bottom: 12px; }\n        .cs-card-text { display: flex; flex-direction: column; gap: 12px; }\n        .cs-grid2 .cs-card-media { height: 340px; }\n        .cs-grid3 .cs-card-media { height: 280px; }\n        .cs-persona-media img { max-height: 100%; }\n        .cs-grid1.cs-mid { max-width: 1200px; }\n        .cs-grid1 .cs-has-media { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 56px; align-items: center; padding: 56px; }\n        .cs-grid1 .cs-has-media .cs-card-media { height: 440px; margin: 0; }\n        .cs-grid1 .cs-has-media .cs-card-media img { border-radius: 16px; }\n        .cs-grid1 .cs-has-media .cs-card-title { font-size: 28px; line-height: 1.18; letter-spacing: -0.015em; }\n        .cs-card-media img { max-width: 100%; max-height: 100%; object-fit: contain; }\n        .cs-shot { height: auto; }\n        .cs-shot img { width: 100%; height: auto; border-radius: 12px; box-shadow: 0 1px 0 rgba(0,0,0,0.04), 0 12px 32px rgba(0,0,0,0.07); }\n        .cs-label { font-size: 14px; font-weight: 500; line-height: 1.4; color: ${MUTED}; }\n        /* Numbered step: one round badge style everywhere, in the color of the markers on the screenshots */\n        .cs-num { display: inline-flex; align-items: center; justify-content: center; align-self: flex-start; width: 36px; height: 36px; margin-bottom: 8px; border-radius: 999px; background: ${numFill}; color: ${numText}; font-size: 17px; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; }\n        .cs-tone-dark .cs-num { background: ${numFillDark}; color: ${numTextDark}; }\n        .cs-card-title { font-family: ${DISPLAY}; font-size: 21px; font-weight: 600; line-height: 1.24; letter-spacing: -0.01em; color: ${INK}; }\n        .cs-card-body { margin: 0; font-size: 17px; line-height: 1.5; letter-spacing: -0.01em; color: ${BODY}; }\n        .cs-solution { color: ${INK}; }\n        .cs-quote { margin: 0; font-size: 17px; line-height: 1.5; letter-spacing: -0.01em; color: ${BODY}; }\n        .cs-who { margin-top: auto; padding-top: 8px; font-size: 14px; font-weight: 500; line-height: 1.4; color: ${MUTED}; }\n        .cs-card .cs-who, .cs-card .cs-label, .cs-card .cs-ps-k, .cs-ch.cs-grey .cs-lead, .cs-more-card .cs-label { color: #636366; }\n        .cs-persona { flex-direction: row; gap: 32px; align-items: center; }\n        .cs-persona-media { width: 180px; height: 280px; flex-shrink: 0; margin: 0; }\n        .cs-points { list-style: none; margin: 16px 0 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }\n        .cs-points li { display: flex; gap: 12px; font-size: 17px; line-height: 1.5; color: ${BODY}; }\n        .cs-dot { flex-shrink: 0; width: 6px; height: 6px; margin-top: 0.62em; border-radius: 999px; background: ${INK}; }\n        .cs-statement { margin: 24px 0 0; font-family: ${DISPLAY}; font-size: 40px; font-weight: 600; line-height: 1.2; letter-spacing: -0.02em; text-align: center; text-wrap: balance; max-width: 860px; }\n        .cs-badge { align-self: flex-start; padding: 6px 14px; border-radius: 999px; background: ${SOFT_LINE}; font-size: 14px; font-weight: 600; line-height: 1.3; color: ${BODY}; }\n        /* \"After\" tag: project color, white text (declared after .cs-badge so it wins) */\n        .cs-badge-ink { color: #FFF; background: ${P.accent}; }\n        .cs-feature { display: grid; grid-template-columns: minmax(0, 1.8fr) minmax(0, 1fr); gap: 64px; align-items: center; }\n        .cs-feature-text { display: flex; flex-direction: column; gap: 20px; }\n        .cs-ps { display: flex; flex-direction: column; gap: 6px; padding-top: 16px; border-top: 1px solid ${SOFT_LINE}; }\n        .cs-ps-k { font-size: 14px; font-weight: 500; line-height: 1.4; color: ${MUTED}; }\n        .cs-stat { padding: 48px 44px; }\n        .cs-stat-who { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; }\n        .cs-stat-who img { width: 44px; height: 44px; border-radius: 999px; object-fit: cover; background: #FFE9B8; }\n        .cs-stat-row { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 12px; }\n        .cs-stat-row .cs-badge { align-self: center; }\n        .cs-stat-value { font-family: ${DISPLAY}; font-size: 96px; font-weight: 700; line-height: 1; letter-spacing: -0.04em; color: ${INK}; }\n        .cs-tone-tint .cs-stat .cs-card-title { color: ${P.accent}; }\n        /* A single stat stands alone: centered, big number, title and one line under it */\n        .cs-grid1 .cs-stat { max-width: 720px; margin: 0 auto; align-items: center; text-align: center; padding: 64px 56px; gap: 8px; }\n        .cs-grid1 .cs-stat .cs-stat-row { justify-content: center; margin-bottom: 6px; }\n        .cs-grid1 .cs-stat .cs-stat-value { font-size: 120px; letter-spacing: -0.045em; }\n        .cs-grid1 .cs-stat .cs-card-title { font-size: 24px; }\n        .cs-grid1 .cs-stat .cs-card-body { max-width: 520px; }\n        /* A stat with an illustration beside it: full width like the card row above, picture left, number right */\n        .cs-stat-main { display: flex; flex-direction: column; gap: inherit; min-width: 0; }\n        .cs-grid1 .cs-stat.cs-stat-art { max-width: none; width: 100%; display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: 56px; align-items: center; text-align: left; padding: 40px 64px; }\n        .cs-grid1 .cs-stat.cs-stat-art .cs-stat-main { align-items: flex-start; gap: 8px; }\n        .cs-grid1 .cs-stat.cs-stat-art .cs-stat-row { justify-content: flex-start; }\n        .cs-stat-illo { display: flex; align-items: center; justify-content: center; }\n        .cs-stat-illo img { display: block; width: 100%; max-width: 340px; height: auto; }\n        .cs-grid5 .cs-stat { padding: 32px 26px; border-radius: 24px; }\n        .cs-grid5 .cs-stat-value { font-size: 52px; letter-spacing: -0.035em; }\n        .cs-grid5 .cs-card-body { font-size: 15px; line-height: 1.45; }\n        .cs-video { position: relative; width: 100%; aspect-ratio: 16 / 9; border-radius: 28px; overflow: hidden; background: #000; }\n        .cs-gallery { display: grid; grid-template-columns: repeat(var(--cols), minmax(0, 1fr)); gap: 24px; }\n        .cs-gallery .cs-tile { display: flex; align-items: center; justify-content: center; padding: clamp(12px, 2.4cqi, 28px); }\n        .cs-gallery img { display: block; max-width: 100%; height: auto; border-radius: 12px; }\n        .cs-gallery .cs-phone img { max-height: 640px; width: auto; border-radius: 0; }\n        /* Phone shots float on the section itself: no card behind them */\n        .cs-gallery .cs-tile.cs-phone { background: transparent !important; padding: 0; }\n        /* App screenshots: rounded like a phone screen, with a hairline so light and dark screens read on any section */\n        .cs-screens .cs-phone img { width: 100%; max-height: none; border-radius: 28px; box-shadow: 0 0 0 1px rgba(0,0,0,.08), 0 24px 48px rgba(0,0,0,.12); }\n        .cs-tone-dark .cs-screens .cs-phone img { box-shadow: 0 0 0 1px rgba(255,255,255,.12), 0 24px 48px rgba(0,0,0,.5); }\n        /* Screens exported with the phone's rounded corners filled dark: round to the screen's own curve so the dark corners are clipped away */\n        .cs-screens-round .cs-phone img { border-radius: 16% / 7.4%; }\n        /* Three phones across stay phone-sized, with room for a caption under each */\n        .cs-gallery.cs-screens { max-width: 1040px; column-gap: 40px; row-gap: 40px; }\n        .cs-screens .cs-cap { font-size: 14px; max-width: 300px; }\n        /* A ring on the part of a screen the caption talks about */\n        .cs-shotwrap { position: relative; display: inline-block; max-width: 100%; line-height: 0; }\n        .cs-screens .cs-shotwrap { display: block; width: 100%; }\n        .cs-focus { position: absolute; border-radius: 14px; border: 2.5px solid ${P.accent}; box-shadow: 0 0 0 5px color-mix(in srgb, ${P.accent} 22%, transparent); pointer-events: none; }\n        .cs-tone-dark .cs-focus { border-color: ${P.accentOnDark}; box-shadow: 0 0 0 5px color-mix(in srgb, ${P.accentOnDark} 25%, transparent); }\n        /* Decision notes: labelled points in two columns, then why the next round changed */\n        .cs-notes { max-width: 1040px; display: flex; flex-direction: column; gap: 28px; }\n        .cs-notes-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px 48px; }\n        .cs-note { display: flex; flex-direction: column; gap: 8px; padding-top: 18px; border-top: 1px solid ${HAIRLINE}; text-align: left; }\n        .cs-note-k { font-size: 13px; font-weight: 600; line-height: 1.3; letter-spacing: 0.06em; text-transform: uppercase; color: ${P.accent}; }\n        .cs-note-todo { padding: 16px 18px; border: 1.5px dashed ${HAIRLINE}; border-radius: 16px; }\n        .cs-note-todo .cs-card-body { color: ${MUTED}; font-style: italic; }\n        .cs-next { display: flex; flex-direction: column; gap: 8px; padding: 22px 26px; border-radius: 20px; background: color-mix(in srgb, ${P.accent} 8%, transparent); text-align: left; }\n        .cs-next .cs-card-body { color: ${INK}; }\n        .cs-tone-dark .cs-note { border-top-color: rgba(255,255,255,0.16); }\n        .cs-tone-dark .cs-note-todo { border-color: rgba(255,255,255,0.22); }\n        .cs-tone-dark .cs-note-k { color: ${P.accentOnDark}; }\n        .cs-tone-dark .cs-next { background: rgba(255,255,255,0.06); }\n        .cs-tone-dark .cs-next .cs-card-body { color: #F5F5F7; }\n        /* Marked before/after: shot, colored rule with icon, then title and text, no card */\n        .cs-ba-list { display: flex; flex-direction: column; gap: 64px; }\n        .cs-ba-row { gap: 48px; align-items: start; }\n        .cs-ba { margin: 0; display: flex; flex-direction: column; gap: 0; text-align: left; }\n        .cs-ba-shot { display: block; border-radius: 14px; overflow: hidden; border: 1px solid rgba(0,0,0,0.10); background: #FFFFFF; cursor: zoom-in; }\n        .cs-ba-shot img { display: block; width: 100%; height: auto; transition: transform .5s cubic-bezier(.2,.8,.2,1); }\n        .cs-ba-shot:hover img { transform: scale(1.02); }\n        /* Before and after share one frame shape, so the rules and titles line up across the row */\n        .cs-ba .cs-ba-shot img { aspect-ratio: 16 / 10; object-fit: cover; object-position: top center; }\n        .cs-ba-mark { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 20px 0 22px; padding-top: 14px; border-top: 3px solid var(--mark); font-size: 15px; font-weight: 600; color: var(--mark); }\n        .cs-ba-before { --mark: #E5484D; }\n        .cs-ba-after { --mark: #30A46C; }\n        .cs-ba figcaption { display: flex; flex-direction: column; gap: 8px; }\n        .cs-ba-ic { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 999px; background: var(--mark); color: #FFFFFF; font-size: 11px; font-weight: 700; line-height: 1; flex-shrink: 0; }\n        .cs-ps-bad, .cs-ps-good { display: flex; align-items: center; gap: 8px; font-weight: 600; color: ${INK} !important; }\n        .cs-ps-bad { --mark: #E5484D; }\n        .cs-ps-good { --mark: #30A46C; }\n        .cs-tone-dark .cs-ps-bad, .cs-tone-dark .cs-ps-good { color: #F5F5F7 !important; }\n        /* Fixed feature rows: image always left, text right */\n        .cs-features-fixed .cs-feature, .cs-features-fixed .cs-feature:nth-child(even) { grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); }\n        .cs-features-fixed .cs-feature:nth-child(even) .cs-feature-media { order: 0; }\n        .cs-features-fixed .cs-ps { border-top: none; padding-top: 4px; }\n        /* Funnel: stage pills joined by a line, each stage's rounds stacked beneath it */\n        .cs-funnel { display: grid; grid-template-columns: repeat(var(--n), minmax(0, 1fr)); gap: 16px; align-items: start; }\n        .cs-fn-col { display: flex; flex-direction: column; gap: 12px; min-width: 0; }\n        .cs-fn-stage { position: relative; display: flex; flex-direction: column; align-items: center; gap: 10px; padding-bottom: 8px; text-align: center; }\n        .cs-fn-stage::before { content: \"\"; position: absolute; top: 20px; left: 50%; width: calc(100% + 16px); height: 2px; background: color-mix(in srgb, ${P.accent} 30%, transparent); z-index: 0; }\n        .cs-fn-col:last-child .cs-fn-stage::before { display: none; }\n        .cs-fn-dot { position: relative; z-index: 1; display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 999px; background: ${P.accent}; color: #FFFFFF; font-size: 17px; font-weight: 700; box-shadow: 0 0 0 6px ${P.tint}; }\n        .cs-fn-name { font-size: 15px; font-weight: 600; color: ${INK}; }\n        .cs-fn-card { background: #FFFFFF; border-radius: 20px; padding: 20px 18px; display: flex; flex-direction: column; gap: 6px; text-align: left; box-shadow: 0 1px 0 rgba(0,0,0,0.03), 0 10px 24px rgba(0,0,0,0.05); }\n        .cs-fn-card .cs-card-title { font-size: 18px; }\n        .cs-fn-card .cs-card-body { font-size: 15px; line-height: 1.45; }\n        .cs-fn-r { font-size: 12px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: ${P.accent}; }\n        /* Path: rows of step chips with arrows; the starred chip is where the value shows up */\n        .cs-flow { max-width: 1040px; display: flex; flex-direction: column; gap: 16px; background: #FFFFFF; border-radius: 28px; padding: 36px 40px; }\n        .cs-flow-title { font-size: 13px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: ${P.accent}; margin-bottom: 4px; text-align: left; }\n        .cs-flow-row { display: grid; grid-template-columns: 96px minmax(0, 1fr) 150px; gap: 20px; align-items: center; padding: 16px 0; border-top: 1px solid ${SOFT_LINE}; }\n        .cs-flow-label { font-size: 15px; font-weight: 600; color: ${INK}; text-align: left; }\n        .cs-flow-steps { display: flex; flex-wrap: wrap; align-items: center; row-gap: 10px; }\n        .cs-flow-item { display: inline-flex; align-items: center; }\n        .cs-flow-arrow { margin: 0 8px; color: #AEAEB2; font-size: 15px; }\n        .cs-flow-chip { padding: 8px 14px; border-radius: 999px; background: ${PAGE}; font-size: 14px; font-weight: 500; color: ${BODY}; white-space: nowrap; }\n        .cs-flow-star { background: ${P.accent}; color: #FFFFFF; font-weight: 600; }\n        .cs-flow-bad .cs-flow-star { background: #E5484D; }\n        .cs-flow-note { font-size: 14px; font-weight: 600; text-align: right; }\n        .cs-flow-bad .cs-flow-note { color: #E5484D; }\n        .cs-flow-good .cs-flow-note { color: ${P.accent}; }\n        .cs-profile { gap: 20px; }\n        /* Profile as a quote: no card, big words, small attribution */\n        .cs-pquote { margin: 0; display: flex; flex-direction: column; align-items: center; gap: 40px; padding: 8px 0; }\n        .cs-pquote-cols { width: 100%; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px; align-items: start; }\n        .cs-pquote-col { display: flex; flex-direction: column; gap: 12px; text-align: left; }\n        .cs-pquote-col .cs-ps-k { font-size: 14px; font-weight: 500; letter-spacing: 0; color: ${MUTED}; }\n        .cs-pquote-text { margin: 0; font-family: ${DISPLAY}; font-size: 24px; font-weight: 600; line-height: 1.3; letter-spacing: -0.015em; color: ${INK}; text-wrap: pretty; }\n        .cs-pquote-who { display: flex; align-items: center; gap: 14px; text-align: left; }\n        .cs-pquote-who .cs-avatar { width: 56px; height: 56px; }\n        .cs-pquote-who .cs-card-title { font-size: 17px; }\n        .cs-tone-dark .cs-pquote-text { color: #F5F5F7; }\n        .cs-profile-head { display: flex; align-items: center; gap: 16px; }\n        .cs-avatar { width: 72px; height: 72px; border-radius: 999px; object-fit: cover; background: #FFE9B8; }\n        .cs-logos { display: flex; justify-content: center; gap: 24px; }\n        .cs-logos img { height: 56px; width: auto; }\n\n        .cs-more-card { position: relative; display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 48px 24px 0; height: 460px; border-radius: 28px; background: ${PAGE}; color: ${INK}; text-decoration: none; overflow: hidden; text-align: center; transition: transform .35s cubic-bezier(.2,.8,.2,1), box-shadow .35s ease; }\n        .cs-more-card:hover { transform: translateY(-6px); box-shadow: 0 24px 48px rgba(0,0,0,0.10); }\n        .cs-more-card:active { transform: translateY(-2px) scale(0.985); }\n        .cs-more-card .cs-arrow { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 999px; background: rgba(0,0,0,0.06); color: ${INK}; transition: background .25s ease, color .25s ease, transform .3s cubic-bezier(.2,.8,.2,1); }\n        .cs-more-card:hover .cs-arrow { background: ${INK}; color: #FFF; transform: translateX(4px); }\n        .cs-more-title { font-size: 28px; line-height: 1.18; letter-spacing: -0.015em; }\n        .cs-more-img { flex: 1; min-height: 0; display: flex; align-items: flex-end; justify-content: center; margin-top: 16px; }\n        .cs-more-img img { max-width: 100%; max-height: 100%; object-fit: contain; transition: transform .5s cubic-bezier(.2,.8,.2,1); transform-origin: 50% 100%; }\n        .cs-more-card:hover .cs-more-img img { transform: scale(1.03); }\n\n        /* Floating \"Back to top\" pill: identical to the home page's BackToTop (fill, size, hover lift, arrow nudge) */\n        .cs-back { display: inline-flex; align-items: center; gap: 4px; height: 36px; padding: 6px 6px 6px 12px; border-radius: 10px; border: none; cursor: pointer; background: #121212; color: #FFF; font-family: ${FONT}; font-size: 14px; font-weight: 500; line-height: 24px; white-space: nowrap; box-shadow: 0 2px 3px rgba(0,0,0,0.25); transition: background .2s ease, transform .25s cubic-bezier(.2,.8,.2,1), box-shadow .25s ease; }\n        .cs-back:hover { background: #000; transform: translateY(-2px); box-shadow: 0 6px 14px rgba(0,0,0,0.22); }\n        .cs-back:active { transform: translateY(0) scale(0.97); box-shadow: 0 2px 3px rgba(0,0,0,0.25); }\n        .cs-back .cs-back-arrow { display: inline-flex; width: 24px; height: 24px; align-items: center; justify-content: center; transition: transform .25s cubic-bezier(.2,.8,.2,1); }\n        .cs-back:hover .cs-back-arrow { transform: translateY(-2px); }\n\n        .cs-link:focus-visible, .cs-home:focus-visible { outline: none; border-radius: 6px; box-shadow: 0 0 0 2px #FFFFFF, 0 0 0 4px ${FOCUS}; }\n        .cs-more-card:focus-visible, .cs-back:focus-visible {\n        outline: none; box-shadow: 0 0 0 2px #FFFFFF, 0 0 0 4px ${FOCUS};\n        }\n        @media (prefers-reduced-motion: reduce) { .cs-root *, .cs-root *::before, .cs-root *::after { transition: none !important; } .cs-rv { opacity: 1 !important; transform: none !important; } .cs-back:hover { transform: none; } }\n\n        @container cs (max-width: 1199px) {\n        .cs-h1 { font-size: 40px; line-height: 1.1; }\n        .cs-h2 { font-size: 40px; line-height: 1.1; }\n        .cs-h2.cs-h2-long { font-size: 34px; line-height: 1.14; }\n        .cs-stat-value { font-size: 80px; }\n        .cs-grid5 .cs-stat-value { font-size: 44px; }\n        .cs-statement { font-size: 32px; line-height: 1.22; }\n        .cs-ch { padding: 120px 40px; }\n        .cs-hero { padding-top: 96px; }\n        .cs-features { gap: 72px; }\n        }\n        @container cs (max-width: 809px) {\n        .cs-h1 { font-size: 30px; line-height: 1.12; letter-spacing: -0.02em; }\n        .cs-h2 { font-size: 30px; line-height: 1.12; letter-spacing: -0.02em; }\n        .cs-h2.cs-h2-long { font-size: 26px; line-height: 1.18; }\n        .cs-lead { font-size: 19px; }\n        .cs-meta-v, .cs-h3, .cs-more-title { font-size: 24px; line-height: 1.2; }\n        .cs-stat-value { font-size: 64px; letter-spacing: -0.035em; }\n        .cs-hero-media .cs-tile img { max-height: none; width: 100% !important; }\n        .cs-hero-media .cs-tile { display: block; width: 100%; }\n        .cs-grid1 .cs-has-media { grid-template-columns: 1fr; gap: 24px; padding: 24px; }\n        .cs-grid1 .cs-stat { padding: 40px 24px; }\n        .cs-grid1 .cs-stat.cs-stat-art { grid-template-columns: 1fr; gap: 24px; text-align: center; padding: 32px 24px; }\n        .cs-grid1 .cs-stat.cs-stat-art .cs-stat-main { align-items: center; }\n        .cs-grid1 .cs-stat.cs-stat-art .cs-stat-row { justify-content: center; }\n        .cs-stat-illo img { max-width: 260px; }\n        .cs-grid1 .cs-stat .cs-stat-value { font-size: 72px; }\n        .cs-card-accent { padding: 32px 24px !important; }\n        .cs-card-accent .cs-card-title { font-size: 30px; }\n        .cs-card-accent .cs-card-body { font-size: 19px; }\n        .cs-grid1 .cs-has-media .cs-card-media { height: 360px; }\n        .cs-grid2 .cs-card-media { height: 280px; }\n        .cs-statement { font-size: 26px; line-height: 1.25; letter-spacing: -0.015em; }\n        .cs-art img { height: 150px; }\n        .cs-plain { border-radius: 14px; }\n        }\n        /* Tablet: keep three-card rows three across, just tighter */\n        @container cs (max-width: 900px) {\n        .cs-ch { padding-left: 24px; padding-right: 24px; }\n        .cs-grid3 { gap: 12px; }\n        .cs-grid5 { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }\n        .cs-grid3 .cs-card { padding: 28px 22px; border-radius: 24px; }\n        .cs-grid3 .cs-card-media { height: 170px; }\n        .cs-grid3 .cs-card-title { font-size: 19px; }\n        .cs-grid3 .cs-card-body, .cs-grid3 .cs-quote { font-size: 15px; }\n        .cs-grid3 .cs-stat-value { font-size: 52px; letter-spacing: -0.035em; }\n        .cs-feature, .cs-feature:nth-child(even) { grid-template-columns: 1fr; gap: 28px; }\n        .cs-feature:nth-child(even) .cs-feature-media { order: 0; }\n        .cs-features-fixed .cs-feature, .cs-features-fixed .cs-feature:nth-child(even) { grid-template-columns: 1fr; }\n        .cs-persona { flex-direction: column; align-items: flex-start; }\n        .cs-persona-media { width: 100%; }\n        .cs-gallery { grid-template-columns: repeat(min(var(--cols), 2), minmax(0, 1fr)); }\n        }\n        @container cs (max-width: 600px) {\n        .cs-bar-in { padding: 0 16px; }\n        .cs-links { gap: 22px; }\n        .cs-hero { padding: 88px 20px 0; gap: 12px; }\n        .cs-hero-media { margin-top: 24px; }\n        .cs-hero-lead { margin-top: 24px; }\n        .cs-meta { grid-template-columns: 1fr; gap: 0; margin: 64px 16px 0; padding: 0; }\n        .cs-meta > div { padding: 20px 0 !important; border-left: none !important; }\n        .cs-meta > div + div { border-top: 1px solid ${SOFT_LINE}; }\n        .cs-ch { padding: 88px 16px; }\n        .cs-ch-in { gap: 44px; }\n        .cs-features { gap: 56px; }\n        .cs-grid2, .cs-grid3 { grid-template-columns: 1fr; gap: 12px; }\n        .cs-pquote-cols { grid-template-columns: 1fr; gap: 32px; }\n        .cs-pquote-text { font-size: 21px; }\n        .cs-grid5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n        .cs-card, .cs-stat, .cs-grid3 .cs-card { padding: 28px 24px; border-radius: 24px; }\n        .cs-grid3 .cs-card-media { height: 220px; }\n        .cs-grid3 .cs-card-body, .cs-grid3 .cs-quote { font-size: 17px; }\n        .cs-grid3 .cs-stat-value { font-size: 64px; }\n        .cs-tile { border-radius: 24px; }\n        .cs-more-card { height: 380px; }\n        .cs-video { border-radius: 20px; }\n        }\n        /* App-screen galleries stay three across down to tablet, then stack one phone at a time */\n        @container cs (max-width: 900px) {\n        .cs-gallery.cs-screens { grid-template-columns: repeat(var(--cols), minmax(0, 1fr)); column-gap: 16px; }\n        .cs-screens .cs-cap { font-size: 13px; }\n        }\n        @container cs (max-width: 600px) {\n        .cs-gallery.cs-screens { grid-template-columns: minmax(0, 280px); justify-content: center; row-gap: 36px; }\n        .cs-screens .cs-cap { font-size: 15px; }\n        .cs-notes-grid { grid-template-columns: 1fr; gap: 20px; }\n        .cs-flow { padding: 24px 20px; }\n        .cs-flow-row { grid-template-columns: 1fr; gap: 10px; }\n        .cs-flow-note { text-align: left; }\n        }\n        /* Funnel: two-up on tablets, one stage per row on phones (the joining line only runs across a single row) */\n        @container cs (max-width: 900px) {\n        .cs-funnel { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 28px; }\n        .cs-fn-stage::before { display: none; }\n        }\n        @container cs (max-width: 600px) {\n        .cs-funnel { grid-template-columns: 1fr; }\n        }\n        `}),/*#__PURE__*/_jsx(\"nav\",{\"aria-label\":\"Case study sections\",style:barStyle,children:/*#__PURE__*/_jsxs(\"div\",{className:\"cs-bar-in\",children:[/*#__PURE__*/_jsx(\"a\",{className:\"cs-home\",href:homeHref,\"aria-label\":\"Karina Su, home\",children:/*#__PURE__*/_jsx(\"img\",{src:LOGO,alt:\"\"})}),/*#__PURE__*/_jsx(\"div\",{className:\"cs-links\",children:navItems.map(n=>/*#__PURE__*/_jsx(\"a\",{className:\"cs-link\",href:`#cs-${n.id}`,onClick:go(n.id),\"aria-current\":active===n.id?\"true\":undefined,children:n.nav},n.id))})]})}),/*#__PURE__*/_jsxs(\"header\",{className:`cs-hero ${pal&&!heroOverride?\"cs-hero-tinted\":\"\"}`,style:{paddingTop:onCanvas?undefined:52},children:[p.logo&&/*#__PURE__*/_jsx(\"img\",{className:\"cs-logo\",src:p.logo.src,alt:p.logo.alt}),/*#__PURE__*/_jsx(\"div\",{className:\"cs-tags\",children:p.tags}),/*#__PURE__*/_jsx(\"h1\",{className:\"cs-h1\",children:p.title}),/*#__PURE__*/_jsx(\"div\",{className:`cs-hero-media ${heroOverride?\"cs-hero-clean\":\"\"}`,children:heroOverride?/*#__PURE__*/_jsx(HeroClean,{media:hero,bare:Boolean(p.heroBare)}):/*#__PURE__*/_jsx(Tile,{media:hero,pad:!p.heroBleed})}),/*#__PURE__*/_jsx(\"p\",{className:\"cs-lead cs-hero-lead\",children:/*#__PURE__*/_jsx(Rich,{text:p.lead})})]}),/*#__PURE__*/_jsx(\"dl\",{className:\"cs-meta\",children:p.meta.map((m,i)=>/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"dt\",{className:\"cs-meta-k\",children:m.label}),/*#__PURE__*/_jsx(\"dd\",{className:\"cs-meta-v\",style:{margin:0},children:m.value})]},i))}),p.chapters.map((c,i)=>{const t=c.tone||(c.grey?\"grey\":\"white\");const hasHead=Boolean(c.eyebrow||c.title||c.lead);return /*#__PURE__*/_jsx(\"section\",{id:c.id?`cs-${c.id}`:undefined,className:`cs-ch cs-tone-${t} ${t===\"grey\"?\"cs-grey\":\"\"}`,children:/*#__PURE__*/_jsxs(\"div\",{className:\"cs-ch-in\",children:[hasHead&&/*#__PURE__*/_jsxs(\"div\",{className:\"cs-ch-head\",children:[c.eyebrow&&/*#__PURE__*/_jsx(\"div\",{className:\"cs-eyebrow\",children:c.eyebrow}),c.title&&/*#__PURE__*/_jsx(\"h2\",{className:`cs-h2 ${c.title.length>70?\"cs-h2-long\":\"\"}`,children:c.title}),c.lead&&/*#__PURE__*/_jsx(\"p\",{className:\"cs-lead\",children:/*#__PURE__*/_jsx(Rich,{text:c.lead})})]}),c.blocks.map((b,j)=>renderBlock(b,j,Boolean(p.plainImages)))]})},i);}),/*#__PURE__*/_jsx(\"section\",{className:\"cs-ch\",style:{background:\"#FFFFFF\"},children:/*#__PURE__*/_jsxs(\"div\",{className:\"cs-ch-in\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"cs-ch-head\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"cs-eyebrow\",children:\"More projects\"}),/*#__PURE__*/_jsx(\"h2\",{className:\"cs-h2\",children:\"Keep exploring.\"})]}),/*#__PURE__*/_jsx(\"div\",{className:\"cs-grid2 cs-wide\",children:p.more.map((m,i)=>/*#__PURE__*/_jsxs(\"a\",{className:\"cs-more-card\",href:m.link,children:[/*#__PURE__*/_jsx(\"span\",{className:\"cs-label\",children:m.eyebrow}),/*#__PURE__*/_jsx(\"span\",{className:\"cs-card-title cs-more-title\",children:m.title}),/*#__PURE__*/_jsxs(\"span\",{style:{display:\"inline-flex\",alignItems:\"center\",gap:10,fontSize:17,fontWeight:500},children:[\"View case study\",/*#__PURE__*/_jsx(\"span\",{className:\"cs-arrow\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"svg\",{width:\"14\",height:\"14\",viewBox:\"0 0 14 14\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M3 7h8M7.5 3.5 11 7l-3.5 3.5\",stroke:\"currentColor\",strokeWidth:\"1.8\",fill:\"none\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})})]}),/*#__PURE__*/_jsx(\"span\",{className:\"cs-more-img\",children:/*#__PURE__*/_jsx(\"img\",{src:m.media.src,alt:m.media.alt,loading:\"lazy\"})})]},i))})]})}),showBackButton&&/*#__PURE__*/_jsx(\"div\",{style:backStyle,children:/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:\"cs-back\",onClick:toTop,\"aria-hidden\":!showTop,tabIndex:showTop?0:-1,children:[\"Back to top\",/*#__PURE__*/_jsx(\"span\",{className:\"cs-back-arrow\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"svg\",{width:\"14\",height:\"14\",viewBox:\"0 0 14 14\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"1.6\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M7 11.5v-9M3.5 6 7 2.5 10.5 6\"})})})]})})]});}CaseStudy.defaultProps={project:\"microsoft\",homeHref:\"/\",showBackButton:true};addPropertyControls(CaseStudy,{project:{type:ControlType.Enum,title:\"Project\",options:Object.keys(PROJECTS),optionTitles:Object.values(PROJECTS).map(p=>p.name)},heroImage:{type:ControlType.Image,title:\"Hero image\"},heroAlt:{type:ControlType.String,title:\"Hero alt\",hidden:p=>!p.heroImage},homeHref:{type:ControlType.String,title:\"Home link\"},showBackButton:{type:ControlType.Boolean,title:\"Back to top\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CaseStudy\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CaseStudy.map"],"mappings":"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"}