home-atom 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +25 -0
  2. package/bin/home-atom.js +135 -0
  3. package/dist/client/.vite/manifest.json +184 -0
  4. package/dist/client/_next/static/chunks/app-top-nav-Dh0jEt8u.js +1 -0
  5. package/dist/client/_next/static/chunks/chevron-left-Dn3noAqV.js +1 -0
  6. package/dist/client/_next/static/chunks/framework-BQUlGUOV.js +9 -0
  7. package/dist/client/_next/static/chunks/hls-CgexCc5Z.js +40 -0
  8. package/dist/client/_next/static/chunks/house-DQz6VeTk.js +1 -0
  9. package/dist/client/_next/static/chunks/index-hn3AiVww.js +33 -0
  10. package/dist/client/_next/static/chunks/layout-segment-context-DRM8YCgm.js +1 -0
  11. package/dist/client/_next/static/chunks/manage-profiles-modal-Doi6QM4e.js +1 -0
  12. package/dist/client/_next/static/chunks/navigation-errors-C_V42-00.js +1 -0
  13. package/dist/client/_next/static/chunks/netflix-browser-L_Vb9wXK.js +2 -0
  14. package/dist/client/_next/static/chunks/playback-activity-Dug3BRYr.js +1 -0
  15. package/dist/client/_next/static/chunks/playback-activity-track-switcher-CbO6kl8K.js +1 -0
  16. package/dist/client/_next/static/chunks/rolldown-runtime-QTnfLwEv.js +1 -0
  17. package/dist/client/_next/static/chunks/spotify-app-f93K4FG_.js +1 -0
  18. package/dist/client/_next/static/chunks/step-forward-CV8I5pPb.js +1 -0
  19. package/dist/client/_next/static/chunks/storefront-C_nmcuvH.js +1 -0
  20. package/dist/client/_next/static/chunks/streamed-icons-DwsKSgMb.js +1 -0
  21. package/dist/client/_next/static/css/index.BGXy8e6j.css +1 -0
  22. package/dist/client/_next/static/css/layout.AKSLtSR6.css +1 -0
  23. package/dist/client/_next/static/css/layout.D8T68cCD.css +1 -0
  24. package/dist/client/_next/static/css/manage-profiles-modal.BAVyxRRR.css +1 -0
  25. package/dist/client/_next/static/e1ce9af7-d770-43d6-845a-511443f19971/_buildManifest.js +1 -0
  26. package/dist/client/_next/static/e1ce9af7-d770-43d6-845a-511443f19971/_ssgManifest.js +1 -0
  27. package/dist/client/_next/static/media/roboto-cyrillic-ext-wght-normal.BCp_3N7R.woff2 +0 -0
  28. package/dist/client/_next/static/media/roboto-cyrillic-wght-normal.fOt7epNf.woff2 +0 -0
  29. package/dist/client/_next/static/media/roboto-greek-ext-wght-normal.Bgw4czJT.woff2 +0 -0
  30. package/dist/client/_next/static/media/roboto-greek-wght-normal.DlT9XTxE.woff2 +0 -0
  31. package/dist/client/_next/static/media/roboto-latin-ext-wght-normal.DYIxWhlt.woff2 +0 -0
  32. package/dist/client/_next/static/media/roboto-latin-wght-normal.ccAYIvAh.woff2 +0 -0
  33. package/dist/client/_next/static/media/roboto-math-wght-normal.4a3xuzGk.woff2 +0 -0
  34. package/dist/client/_next/static/media/roboto-symbols-wght-normal.B7iHSfaG.woff2 +0 -0
  35. package/dist/client/_next/static/media/roboto-vietnamese-wght-normal._f1XEJpo.woff2 +0 -0
  36. package/dist/client/icons/home.ico +0 -0
  37. package/dist/client/icons/keyboard.ico +0 -0
  38. package/dist/client/icons/netflix.ico +0 -0
  39. package/dist/client/icons/remote-screen.ico +0 -0
  40. package/dist/client/icons/spotify.ico +0 -0
  41. package/dist/client/vinext-client-entry-manifest.json +3 -0
  42. package/dist/server/BUILD_ID +1 -0
  43. package/dist/server/__vite_rsc_assets_manifest.js +162 -0
  44. package/dist/server/_next/static/app-page-cache-DcrtN14Y.js +1 -0
  45. package/dist/server/_next/static/app-page-cache-render-DoCquoNb.js +1 -0
  46. package/dist/server/_next/static/app-prerender-endpoints-rDLH8gfm.js +1 -0
  47. package/dist/server/_next/static/app-route-handler-dispatch-Be2YIqVp.js +1 -0
  48. package/dist/server/_next/static/app-static-generation-BX8cz43B.js +1 -0
  49. package/dist/server/_next/static/app-top-nav-aGPkB57A.js +1 -0
  50. package/dist/server/_next/static/automation-UGP78ei5.js +172 -0
  51. package/dist/server/_next/static/automation-tAN_1u1H.js +118 -0
  52. package/dist/server/_next/static/base-path-Cmiu3HvG.js +1 -0
  53. package/dist/server/_next/static/cache-headers-BQ-QuzWN.js +1 -0
  54. package/dist/server/_next/static/catalog-BS93IoWO.js +1 -0
  55. package/dist/server/_next/static/css/index.BGXy8e6j.css +1 -0
  56. package/dist/server/_next/static/css/layout.AKSLtSR6.css +1 -0
  57. package/dist/server/_next/static/css/layout.D8T68cCD.css +1 -0
  58. package/dist/server/_next/static/database-BNnYfHmT.js +114 -0
  59. package/dist/server/_next/static/db-BE1J0NNS.js +98 -0
  60. package/dist/server/_next/static/downloader-DgnjNL5T.js +21 -0
  61. package/dist/server/_next/static/framework~index-B2E_Di_-.js +18 -0
  62. package/dist/server/_next/static/framework~index~layout~layout~page~page~page~layout~page~app-page-cache-render~app-page-cac~nvd6h53m-ydvR7YSg.js +1 -0
  63. package/dist/server/_next/static/http-B2HyuWoI.js +1 -0
  64. package/dist/server/_next/static/input-platform-C0756QEt.js +1 -0
  65. package/dist/server/_next/static/instrumentation-BV3gg-L-.js +1 -0
  66. package/dist/server/_next/static/isr-decision-D1zHgPSI.js +1 -0
  67. package/dist/server/_next/static/layout-ClEWbCcj.js +1 -0
  68. package/dist/server/_next/static/layout-Ds3pFa6r.js +1 -0
  69. package/dist/server/_next/static/media/roboto-cyrillic-ext-wght-normal.BCp_3N7R.woff2 +0 -0
  70. package/dist/server/_next/static/media/roboto-cyrillic-wght-normal.fOt7epNf.woff2 +0 -0
  71. package/dist/server/_next/static/media/roboto-greek-ext-wght-normal.Bgw4czJT.woff2 +0 -0
  72. package/dist/server/_next/static/media/roboto-greek-wght-normal.DlT9XTxE.woff2 +0 -0
  73. package/dist/server/_next/static/media/roboto-latin-ext-wght-normal.DYIxWhlt.woff2 +0 -0
  74. package/dist/server/_next/static/media/roboto-latin-wght-normal.ccAYIvAh.woff2 +0 -0
  75. package/dist/server/_next/static/media/roboto-math-wght-normal.4a3xuzGk.woff2 +0 -0
  76. package/dist/server/_next/static/media/roboto-symbols-wght-normal.B7iHSfaG.woff2 +0 -0
  77. package/dist/server/_next/static/media/roboto-vietnamese-wght-normal._f1XEJpo.woff2 +0 -0
  78. package/dist/server/_next/static/netflix-page-BRbORN1F.js +1 -0
  79. package/dist/server/_next/static/page-C457kN_n.js +1 -0
  80. package/dist/server/_next/static/page-Cs-erYTy.js +1 -0
  81. package/dist/server/_next/static/page-DlBGATQp.js +1 -0
  82. package/dist/server/_next/static/page-DlRXyzSQ.js +1 -0
  83. package/dist/server/_next/static/providers-B3YELr_F.js +108 -0
  84. package/dist/server/_next/static/providers-CMBIwNGs.js +1 -0
  85. package/dist/server/_next/static/request-context-C1ZJzkex.js +1 -0
  86. package/dist/server/_next/static/request-profile-B1yGQ0l6.js +1 -0
  87. package/dist/server/_next/static/rolldown-runtime-DaDcL9Zw.js +1 -0
  88. package/dist/server/_next/static/route-96DdgJBs.js +1 -0
  89. package/dist/server/_next/static/route-B0WNLJZp.js +1 -0
  90. package/dist/server/_next/static/route-BBmE0xf12.js +1 -0
  91. package/dist/server/_next/static/route-BPcAdbz_.js +1 -0
  92. package/dist/server/_next/static/route-BWk9YK7r.js +1 -0
  93. package/dist/server/_next/static/route-BdG5ojMj2.js +1 -0
  94. package/dist/server/_next/static/route-BovNctFc.js +1 -0
  95. package/dist/server/_next/static/route-C2LuSjoh.js +1 -0
  96. package/dist/server/_next/static/route-C74RA7va.js +1 -0
  97. package/dist/server/_next/static/route-CCUsQ7AG.js +1 -0
  98. package/dist/server/_next/static/route-CHJzaQu2.js +73 -0
  99. package/dist/server/_next/static/route-CN6VdJwN.js +1 -0
  100. package/dist/server/_next/static/route-CNNiXZoM2.js +1 -0
  101. package/dist/server/_next/static/route-CVPPmUto.js +1 -0
  102. package/dist/server/_next/static/route-CeVsDcbj2.js +1 -0
  103. package/dist/server/_next/static/route-Cim7D4XQ.js +1 -0
  104. package/dist/server/_next/static/route-CjUCKwSj2.js +1 -0
  105. package/dist/server/_next/static/route-CkH7Cg-p.js +1 -0
  106. package/dist/server/_next/static/route-Cn40NftM.js +1 -0
  107. package/dist/server/_next/static/route-DAyF4BHS.js +1 -0
  108. package/dist/server/_next/static/route-DWAMZHLa.js +1 -0
  109. package/dist/server/_next/static/route-DXTJyFWD.js +1 -0
  110. package/dist/server/_next/static/route-D_G2SOlz.js +1 -0
  111. package/dist/server/_next/static/route-Dbs39TkC.js +1 -0
  112. package/dist/server/_next/static/route-DiT9UYUd.js +1 -0
  113. package/dist/server/_next/static/route-DslPFTAK.js +1 -0
  114. package/dist/server/_next/static/route-UWQN8uYr.js +1 -0
  115. package/dist/server/_next/static/route-ipFkK3iA.js +1 -0
  116. package/dist/server/_next/static/route-jMq6H_yh.js +1 -0
  117. package/dist/server/_next/static/route-mzLdjDCs2.js +1 -0
  118. package/dist/server/_next/static/route-vD15s2A8.js +1 -0
  119. package/dist/server/_next/static/route-xtz48fti.js +1 -0
  120. package/dist/server/_next/static/route-zazqen-A2.js +1 -0
  121. package/dist/server/_next/static/seed-cache-oCd9Lfdw.js +1 -0
  122. package/dist/server/_next/static/server-CS40XqUP.js +1 -0
  123. package/dist/server/_next/static/storage-D1zF0J_t.js +288 -0
  124. package/dist/server/_next/static/streamer-B1PRR-dj.js +2 -0
  125. package/dist/server/_next/static/subtitles-DYBlMnha.js +2 -0
  126. package/dist/server/_next/static/title-progress-CQBrSxvN.js +1 -0
  127. package/dist/server/_next/static/unified-request-context-CgIMz2dD.js +1 -0
  128. package/dist/server/index.js +17 -0
  129. package/dist/server/prerendered-routes/404.html +2 -0
  130. package/dist/server/prerendered-routes/index.html +2 -0
  131. package/dist/server/prerendered-routes/index.rsc +13 -0
  132. package/dist/server/ssr/__vite_rsc_assets_manifest.js +162 -0
  133. package/dist/server/ssr/_next/static/app-elements-Psr6bSdJ.js +1 -0
  134. package/dist/server/ssr/_next/static/app-prefetch-fetch-queue-Dm_lGOGz.js +1 -0
  135. package/dist/server/ssr/_next/static/app-router-context-QPmikWPX.js +1 -0
  136. package/dist/server/ssr/_next/static/app-router-scroll-C0MNOLz-.js +1 -0
  137. package/dist/server/ssr/_next/static/app-top-nav-a5vUAoEs.js +1 -0
  138. package/dist/server/ssr/_next/static/base-path-DtcGyvwb.js +1 -0
  139. package/dist/server/ssr/_next/static/chevron-left-CkBJG8E2.js +1 -0
  140. package/dist/server/ssr/_next/static/css/refresh-cw.BAVyxRRR.css +1 -0
  141. package/dist/server/ssr/_next/static/default-global-error-B62cHCkh.js +31 -0
  142. package/dist/server/ssr/_next/static/error-boundary-C28whqLB.js +1 -0
  143. package/dist/server/ssr/_next/static/hls-CgexCc5Z.js +40 -0
  144. package/dist/server/ssr/_next/static/house-l1u9dUbj.js +1 -0
  145. package/dist/server/ssr/_next/static/layout-segment-context-DK0O-NeY.js +1 -0
  146. package/dist/server/ssr/_next/static/minimize-C9JLgte-.js +1 -0
  147. package/dist/server/ssr/_next/static/navigation-BCDRWdBm.js +1 -0
  148. package/dist/server/ssr/_next/static/navigation-context-state-BnWorqxb.js +1 -0
  149. package/dist/server/ssr/_next/static/navigation-errors-BRIEcp79.js +1 -0
  150. package/dist/server/ssr/_next/static/navigation-server-CCLiCOcy.js +1 -0
  151. package/dist/server/ssr/_next/static/netflix-browser-CMAehdwi.js +2 -0
  152. package/dist/server/ssr/_next/static/pin-BQre-tQY.js +1 -0
  153. package/dist/server/ssr/_next/static/playback-activity-D5TYX2Ae.js +1 -0
  154. package/dist/server/ssr/_next/static/refresh-cw-CWdWHjqY.js +1 -0
  155. package/dist/server/ssr/_next/static/rolldown-runtime-DSjMdhoD.js +1 -0
  156. package/dist/server/ssr/_next/static/slot-CE_M6qTT.js +1 -0
  157. package/dist/server/ssr/_next/static/spotify-app-CE-RaTjZ.js +1 -0
  158. package/dist/server/ssr/_next/static/storefront-C5NNzPMa.js +1 -0
  159. package/dist/server/ssr/_next/static/streamed-icons-D2p1hUS_.js +1 -0
  160. package/dist/server/ssr/_next/static/url-safety-CnwxMXYX.js +1 -0
  161. package/dist/server/ssr/index.js +3 -0
  162. package/dist/server/ssr/vinext-client-assets.js +1 -0
  163. package/dist/server/ssr/vinext-server.json +1 -0
  164. package/dist/server/vinext-client-assets.js +1 -0
  165. package/dist/server/vinext-externals.json +5 -0
  166. package/dist/server/vinext-prerender-paths.json +7 -0
  167. package/dist/server/vinext-prerender.json +219 -0
  168. package/dist/server/vinext-server.json +1 -0
  169. package/package.json +66 -0
@@ -0,0 +1,2 @@
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"/><link rel="stylesheet" href="/_next/static/css/index.BGXy8e6j.css" data-rsc-css-href="/_next/static/css/index.BGXy8e6j.css" data-precedence="vite-rsc/importer-resources"/><link rel="modulepreload" fetchPriority="low" href="/_next/static/chunks/index-hn3AiVww.js"/><script src="/_next/static/chunks/rolldown-runtime-QTnfLwEv.js" type="module" async=""></script><script src="/_next/static/chunks/framework-BQUlGUOV.js" type="module" async=""></script><script src="/_next/static/chunks/navigation-errors-C_V42-00.js" type="module" async=""></script><meta name="robots" content="noindex"/><title>Apps on Google Play</title><meta name="description" content="A handcrafted Next.js recreation of the Google Play Apps storefront."/><link rel="icon" href="/icons/home.ico" type="image/x-icon"/><title>404: This page could not be found.</title><script>Object.assign(((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}),{params:{},nav:{"pathname":"/__vinext_nonexistent_for_404__","searchParams":[]}})</script><link rel="modulepreload" href="/_next/static/chunks/index-hn3AiVww.js" />
2
+ </head><body><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script type="module" src="/_next/static/chunks/index-hn3AiVww.js" id="_R_" async=""></script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push("1:\"$Sreact.fragment\"\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push(":HL[\"/_next/static/css/index.BGXy8e6j.css\",\"style\" ]\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push("0:{\"__route\":\"route:/__vinext_nonexistent_for_404__\",\"__interceptionContext\":null,\"__layoutIds\":[],\"__rootLayout\":null,\"route:/__vinext_nonexistent_for_404__\":[[[\"$\",\"link\",\"css:/_next/static/css/index.BGXy8e6j.css\",{\"rel\":\"stylesheet\",\"precedence\":\"vite-rsc/importer-resources\",\"href\":\"/_next/static/css/index.BGXy8e6j.css\",\"data-rsc-css-href\":\"/_next/static/css/index.BGXy8e6j.css\"}],\"$undefined\"],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[[\"$\",\"meta\",\"charset\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"robots\",{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$1\",\"metadata\",{\"children\":[[\"$\",\"title\",\"0\",{\"children\":\"Apps on Google Play\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A handcrafted Next.js recreation of the Google Play Apps storefront.\"}],[\"$\",\"link\",\"2\",{\"data-vinext-streamed-icon\":\"$undefined\",\"rel\":\"icon\",\"href\":\"/icons/home.ico\",\"type\":\"image/x-icon\",\"sizes\":\"$undefined\",\"color\":\"$undefined\",\"media\":\"$undefined\",\"fetchPriority\":\"$undefined\"}]]}],[\"$\",\"$1\",\"viewport\",{\"children\":[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover\"}]]}],[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]]]}]}]]}\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).done=true</script></body></html>
@@ -0,0 +1,2 @@
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"/><link rel="stylesheet" href="/_next/static/css/index.BGXy8e6j.css" data-rsc-css-href="/_next/static/css/index.BGXy8e6j.css" data-precedence="vite-rsc/importer-resources"/><link rel="stylesheet" href="/_next/static/css/manage-profiles-modal.BAVyxRRR.css" data-precedence="vite-rsc/client-reference"/><link rel="modulepreload" fetchPriority="low" href="/_next/static/chunks/index-hn3AiVww.js"/><script src="/_next/static/chunks/rolldown-runtime-QTnfLwEv.js" type="module" async=""></script><script src="/_next/static/chunks/framework-BQUlGUOV.js" type="module" async=""></script><script src="/_next/static/chunks/navigation-errors-C_V42-00.js" type="module" async=""></script><link rel="modulepreload" href="/_next/static/chunks/layout-segment-context-DRM8YCgm.js" crossorigin=""/><link rel="modulepreload" href="/_next/static/chunks/storefront-C_nmcuvH.js" crossorigin=""/><link rel="modulepreload" href="/_next/static/chunks/chevron-left-Dn3noAqV.js" crossorigin=""/><link rel="modulepreload" href="/_next/static/chunks/step-forward-CV8I5pPb.js" crossorigin=""/><link rel="modulepreload" href="/_next/static/chunks/playback-activity-track-switcher-CbO6kl8K.js" crossorigin=""/><link rel="modulepreload" href="/_next/static/chunks/manage-profiles-modal-Doi6QM4e.js" crossorigin=""/><title>Apps on Google Play</title><meta name="description" content="A handcrafted Next.js recreation of the Google Play Apps storefront."/><link rel="icon" href="/icons/home.ico" type="image/x-icon"/><script>Object.assign(((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}),{params:{},nav:{"pathname":"/","searchParams":[]}})</script><link rel="modulepreload" href="/_next/static/chunks/index-hn3AiVww.js" />
2
+ </head><body><div class="site-shell"><header class="topbar"><div class="topbar__inner"><a class="brand-link" href="#top" aria-label="Google Play home"><div class="play-logo" aria-label="Google Play"><svg aria-hidden="true" class="play-mark" viewBox="0 0 40 44" xmlns="http://www.w3.org/2000/svg"><path d="M3.2 2.2 23 22 3.2 41.8A5.1 5.1 0 0 1 1 37.6V6.4c0-1.7.8-3.2 2.2-4.2Z" fill="#23c56e"></path><path d="m23 22 6.4-6.4 7.8 4.5c2.4 1.4 2.4 3.5 0 4.9l-7.8 4.5L23 22Z" fill="#ffc928"></path><path d="M3.2 2.2A5 5 0 0 1 8.5 2l20.9 12.1L23 22 3.2 2.2Z" fill="#45a6ff"></path><path d="M3.2 41.8 23 22l6.4 7.5L8.5 41.9c-2 1.1-3.8 1-5.3-.1Z" fill="#f34b4b"></path></svg><span><span class="google-word">Google</span> Play</span></div></a><nav class="main-nav"><a href="#games" class="">Games</a><a href="#apps" class="active" aria-current="page">Apps</a><a href="#movies-&amp;-tv" class="">Movies &amp; TV</a><a href="#books" class="">Books</a><a href="#kids" class="">Kids</a></nav><div class="top-actions"><button type="button" aria-label="Search"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg></button><button type="button" aria-label="Help"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-question-mark" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><path d="M12 17h.01"></path></svg></button></div></div></header><main id="top"><h1 class="sr-only">Apps on Google Play</h1><section class="store-container device-section" aria-label="Choose a device"><div class="device-tabs"><button type="button" class="active" aria-pressed="true"><svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-smartphone" aria-hidden="true"><rect width="14" height="20" x="5" y="2" rx="2" ry="2"></rect><path d="M12 18h.01"></path></svg>Phone</button><button type="button" class="" aria-pressed="false"><svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tablet" aria-hidden="true"><rect width="16" height="20" x="4" y="2" rx="2" ry="2"></rect><line x1="12" x2="12.01" y1="18" y2="18"></line></svg>Tablet</button><button type="button" class="" aria-pressed="false"><svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tv" aria-hidden="true"><path d="m17 2-5 5-5-5"></path><rect width="20" height="15" x="2" y="7" rx="2"></rect></svg>TV</button><button type="button" class="" aria-pressed="false"><svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-laptop" aria-hidden="true"><path d="M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z"></path><path d="M20.054 15.987H3.946"></path></svg>Chromebook</button><button type="button" class="" aria-pressed="false"><svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-watch" aria-hidden="true"><path d="M12 10v2.2l1.6 1"></path><path d="m16.13 7.66-.81-4.05a2 2 0 0 0-2-1.61h-2.68a2 2 0 0 0-2 1.61l-.78 4.05"></path><path d="m7.88 16.36.8 4a2 2 0 0 0 2 1.61h2.72a2 2 0 0 0 2-1.61l.81-4.05"></path><circle cx="12" cy="12" r="6"></circle></svg>Watch</button><button type="button" class="" aria-pressed="false"><svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-car-front" aria-hidden="true"><path d="m21 8-2 2-1.5-3.7A2 2 0 0 0 15.646 5H8.4a2 2 0 0 0-1.903 1.257L5 10 3 8"></path><path d="M7 14h.01"></path><path d="M17 14h.01"></path><rect width="18" height="8" x="3" y="10" rx="2"></rect><path d="M5 18v2"></path><path d="M19 18v2"></path></svg>Car</button><button type="button" class="" aria-pressed="false"><svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-monitor" aria-hidden="true"><rect width="20" height="14" x="2" y="3" rx="2"></rect><line x1="8" x2="16" y1="21" y2="21"></line><line x1="12" x2="12" y1="17" y2="21"></line></svg>XR headset</button></div></section><section class="store-container activity-section" aria-labelledby="activity-heading"><div class="activity-heading"><div><h2 id="activity-heading">Activity</h2><p>Control Netflix and Spotify playing on your other devices<!-- -->.</p></div></div><div class="activity-empty" role="status"><span class="activity-empty__icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play" aria-hidden="true"><path d="M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z"></path></svg></span><span><strong>Nothing playing right now</strong><small>Start Netflix or Spotify on another device and it will appear here.</small></span></div></section><section class="store-container first-section" id="apps"><div class="section-heading"><div><h2>Discover apps for <!-- -->phone</h2><p>Fresh finds picked to make every day a little better</p></div><button class="view-more" type="button" aria-label="View more apps"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button></div><div class="rail-shell"><button class="rail-arrow rail-arrow--left" type="button" aria-label="Scroll Apps for Phone left"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left" aria-hidden="true"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg></button><div class="app-rail" aria-label="Apps for Phone"><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #252b33 0%, #11151a 58%, #f06a4a 160%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-keyboard" aria-hidden="true"><path d="M10 8h.01"></path><path d="M12 12h.01"></path><path d="M14 8h.01"></path><path d="M16 12h.01"></path><path d="M18 8h.01"></path><path d="M6 8h.01"></path><path d="M7 16h10"></path><path d="M8 12h.01"></path><rect width="20" height="16" x="2" y="4" rx="2"></rect></svg><span class="icon-shine"></span></div><span class="app-card__name">Keyboard, trackpad</span><span class="app-card__category">Tools</span><span class="rating">4.9<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #eaf2ff 0%, #4f7bd9 52%, #182744 135%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-monitor" aria-hidden="true"><rect width="20" height="14" x="2" y="3" rx="2"></rect><line x1="8" x2="16" y1="21" y2="21"></line><line x1="12" x2="12" y1="17" y2="21"></line></svg><span class="icon-shine"></span></div><span class="app-card__name">Remote Screen</span><span class="app-card__category">Tools</span><span class="rating">4.9<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #241012 0%, #090909 64%, #e50914 180%)" aria-hidden="true"><span class="netflix-icon-mark">N</span><span class="icon-shine"></span></div><span class="app-card__name">Netflix</span><span class="app-card__category">Entertainment</span><span class="rating">4.8<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #30e978 0%, #169c4a 52%, #08180e 130%)" aria-hidden="true"><span class="spotify-icon-mark"><i></i><i></i><i></i></span><span class="icon-shine"></span></div><span class="app-card__name">Spotify</span><span class="app-card__category">Music &amp; audio</span><span class="rating">4.8<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #fff0b5 0%, #ffb774 52%, #ef6f6c 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkles" aria-hidden="true"><path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"></path><path d="M20 2v4"></path><path d="M22 4h-4"></path><circle cx="4" cy="20" r="2"></circle></svg><span class="icon-shine"></span></div><span class="app-card__name">Daylight</span><span class="app-card__category">Wellbeing &amp; focus</span><span class="rating">4.8<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #f8fafc 0%, #dce4ec 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar-days" aria-hidden="true"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path><path d="M8 14h.01"></path><path d="M12 14h.01"></path><path d="M16 14h.01"></path><path d="M8 18h.01"></path><path d="M12 18h.01"></path><path d="M16 18h.01"></path></svg><span class="icon-shine"></span></div><span class="app-card__name">Noted Calendar</span><span class="app-card__category">Productivity</span><span class="rating">4.6<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #7457ff 0%, #4020c9 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-music2 lucide-music-2" aria-hidden="true"><circle cx="8" cy="18" r="4"></circle><path d="M12 18V2l7 4"></path></svg><span class="icon-shine"></span></div><span class="app-card__name">Sonora</span><span class="app-card__category">Music &amp; audio</span><span class="rating">4.7<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #d9ffe8 0%, #46c985 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-leaf" aria-hidden="true"><path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z"></path><path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12"></path></svg><span class="icon-shine"></span></div><span class="app-card__name">Sprout Habit</span><span class="app-card__category">Health &amp; fitness</span><span class="rating">4.5<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #d8f2ff 0%, #408bd5 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-brain-circuit" aria-hidden="true"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"></path><path d="M9 13a4.5 4.5 0 0 0 3-4"></path><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"></path><path d="M3.477 10.896a4 4 0 0 1 .585-.396"></path><path d="M6 18a4 4 0 0 1-1.967-.516"></path><path d="M12 13h4"></path><path d="M12 18h6a2 2 0 0 1 2 2v1"></path><path d="M12 8h8"></path><path d="M16 8V5a2 2 0 0 1 2-2"></path><circle cx="16" cy="13" r=".5"></circle><circle cx="18" cy="3" r=".5"></circle><circle cx="20" cy="21" r=".5"></circle><circle cx="20" cy="8" r=".5"></circle></svg><span class="icon-shine"></span></div><span class="app-card__name">Mindly AI</span><span class="app-card__category">Education</span><span class="rating">4.8<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #ffd6de 0%, #c8466f 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-camera" aria-hidden="true"><path d="M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z"></path><circle cx="12" cy="13" r="3"></circle></svg><span class="icon-shine"></span></div><span class="app-card__name">Grain Camera</span><span class="app-card__category">Photography</span><span class="rating">4.4<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #baf5f0 0%, #0c978c 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-circle" aria-hidden="true"><path d="M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719"></path></svg><span class="icon-shine"></span></div><span class="app-card__name">Circles</span><span class="app-card__category">Social</span><span class="rating">4.6<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #ffe5f3 0%, #dd6fa9 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-heart" aria-hidden="true"><path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"></path></svg><span class="icon-shine"></span></div><span class="app-card__name">Kindred</span><span class="app-card__category">Lifestyle</span><span class="rating">4.9<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button></div><button class="rail-arrow rail-arrow--right" type="button" aria-label="Scroll Apps for Phone right"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></button></div></section><section class="store-container editorial-section"><div class="section-heading section-heading--simple"><h2><svg xmlns="http://www.w3.org/2000/svg" width="23" height="23" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap" aria-hidden="true"><path d="M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z"></path></svg> Catch the buzz</h2></div><div class="promo-rail"><article class="promo-card promo-card--green"><div class="promo-art" aria-hidden="true"><span class="promo-orb promo-orb--one"></span><span class="promo-orb promo-orb--two"></span><span class="field-line field-line--one"></span><span class="field-line field-line--two"></span><span class="field-ball">⚽</span></div><span class="promo-eyebrow">Trending</span><div class="promo-copy"><h3>Find your next pickup game</h3><p>Meet local players and get moving</p></div><div class="promo-app"><div class="app-icon app-icon--small" style="background:linear-gradient(145deg, #d9ffe8 0%, #46c985 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-leaf" aria-hidden="true"><path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z"></path><path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12"></path></svg><span class="icon-shine"></span></div><span><strong>Sprout Habit</strong><small>Health &amp; fitness</small></span><button type="button" aria-label="View details for Sprout Habit">View</button></div></article><article class="promo-card promo-card--plum"><div class="promo-art" aria-hidden="true"><span class="promo-orb promo-orb--one"></span><span class="promo-orb promo-orb--two"></span><span class="picnic-sun"></span><span class="picnic-blanket"></span><span class="picnic-item picnic-item--one">🍊</span><span class="picnic-item picnic-item--two">🥤</span></div><span class="promo-eyebrow">Editor’s pick</span><div class="promo-copy"><h3>The art of picnic-core</h3><p>Curate a softer kind of weekend</p></div><div class="promo-app"><div class="app-icon app-icon--small" style="background:linear-gradient(145deg, #ffe5f3 0%, #dd6fa9 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-heart" aria-hidden="true"><path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"></path></svg><span class="icon-shine"></span></div><span><strong>Kindred</strong><small>Lifestyle</small></span><button type="button" aria-label="View details for Kindred">View</button></div></article><article class="promo-card promo-card--blue"><div class="promo-art" aria-hidden="true"><span class="promo-orb promo-orb--one"></span><span class="promo-orb promo-orb--two"></span><span class="score-ring"></span><span class="score-card">3–2</span><span class="score-ball">⚽</span></div><span class="promo-eyebrow">Live now</span><div class="promo-copy"><h3>Score big on match day</h3><p>Follow every moment together</p></div><div class="promo-app"><div class="app-icon app-icon--small" style="background:linear-gradient(145deg, #baf5f0 0%, #0c978c 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-circle" aria-hidden="true"><path d="M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719"></path></svg><span class="icon-shine"></span></div><span><strong>Circles</strong><small>Social</small></span><button type="button" aria-label="View details for Circles">View</button></div></article></div></section><section class="store-container ai-section"><div class="section-heading"><div><h2>Do more with AI apps</h2><p>Helpful tools for ideas, answers, and everyday tasks</p></div><button class="view-more" type="button" aria-label="View more AI apps"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button></div><div class="feature-grid"><button class="feature-card feature-card--1" type="button"><span class="feature-card__badge"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkles" aria-hidden="true"><path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"></path><path d="M20 2v4"></path><path d="M22 4h-4"></path><circle cx="4" cy="20" r="2"></circle></svg> AI-powered</span><span class="feature-card__art" aria-hidden="true"><span class="feature-phone"><div class="app-icon app-icon--small" style="background:linear-gradient(145deg, #f1d8ff 0%, #9844d2 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wand-sparkles" aria-hidden="true"><path d="m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72"></path><path d="m14 7 3 3"></path><path d="M5 6v4"></path><path d="M19 14v4"></path><path d="M10 2v2"></path><path d="M7 8H3"></path><path d="M21 16h-4"></path><path d="M11 3H9"></path></svg><span class="icon-shine"></span></div><span></span><span></span><span></span></span><span class="feature-spark feature-spark--one">✦</span><span class="feature-spark feature-spark--two">✦</span></span><span class="feature-card__copy"><strong>Lumen AI</strong><small>Write, organize, and explore new ideas with an assistant that stays out of your way.</small></span></button><button class="feature-card feature-card--2" type="button"><span class="feature-card__badge"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkles" aria-hidden="true"><path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"></path><path d="M20 2v4"></path><path d="M22 4h-4"></path><circle cx="4" cy="20" r="2"></circle></svg> AI-powered</span><span class="feature-card__art" aria-hidden="true"><span class="feature-phone"><div class="app-icon app-icon--small" style="background:linear-gradient(145deg, #d5f7ff 0%, #2b86c8 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-earth" aria-hidden="true"><path d="M21.54 15H17a2 2 0 0 0-2 2v4.54"></path><path d="M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17"></path><path d="M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05"></path><circle cx="12" cy="12" r="10"></circle></svg><span class="icon-shine"></span></div><span></span><span></span><span></span></span><span class="feature-spark feature-spark--one">✦</span><span class="feature-spark feature-spark--two">✦</span></span><span class="feature-card__copy"><strong>Echo Translate</strong><small>Natural voice translation and useful local phrases for conversations wherever you go.</small></span></button><button class="feature-card feature-card--3" type="button"><span class="feature-card__badge"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkles" aria-hidden="true"><path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"></path><path d="M20 2v4"></path><path d="M22 4h-4"></path><circle cx="4" cy="20" r="2"></circle></svg> AI-powered</span><span class="feature-card__art" aria-hidden="true"><span class="feature-phone"><div class="app-icon app-icon--small" style="background:linear-gradient(145deg, #dff9e8 0%, #3eaf6d 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span class="icon-shine"></span></div><span></span><span></span><span></span></span><span class="feature-spark feature-spark--one">✦</span><span class="feature-spark feature-spark--two">✦</span></span><span class="feature-card__copy"><strong>Clearspace</strong><small>A private, thoughtful assistant that helps you tidy files, photos, and everyday digital clutter.</small></span></button></div></section><section class="store-container charts-section"><div class="section-heading"><div><h2>Popular apps</h2><p>What everyone is downloading right now</p></div><button class="view-more" type="button" aria-label="View popular apps"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button></div><div class="charts-grid"><button type="button" class="chart-row"><span class="chart-number">1</span><div class="app-icon app-icon--small" style="background:linear-gradient(145deg, #252b33 0%, #11151a 58%, #f06a4a 160%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-keyboard" aria-hidden="true"><path d="M10 8h.01"></path><path d="M12 12h.01"></path><path d="M14 8h.01"></path><path d="M16 12h.01"></path><path d="M18 8h.01"></path><path d="M6 8h.01"></path><path d="M7 16h10"></path><path d="M8 12h.01"></path><rect width="20" height="16" x="2" y="4" rx="2"></rect></svg><span class="icon-shine"></span></div><span class="chart-copy"><strong>Keyboard, trackpad</strong><small>Tools</small><span class="rating">4.9<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button><button type="button" class="chart-row"><span class="chart-number">2</span><div class="app-icon app-icon--small" style="background:linear-gradient(145deg, #eaf2ff 0%, #4f7bd9 52%, #182744 135%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-monitor" aria-hidden="true"><rect width="20" height="14" x="2" y="3" rx="2"></rect><line x1="8" x2="16" y1="21" y2="21"></line><line x1="12" x2="12" y1="17" y2="21"></line></svg><span class="icon-shine"></span></div><span class="chart-copy"><strong>Remote Screen</strong><small>Tools</small><span class="rating">4.9<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button><button type="button" class="chart-row"><span class="chart-number">3</span><div class="app-icon app-icon--small" style="background:linear-gradient(145deg, #241012 0%, #090909 64%, #e50914 180%)" aria-hidden="true"><span class="netflix-icon-mark">N</span><span class="icon-shine"></span></div><span class="chart-copy"><strong>Netflix</strong><small>Entertainment</small><span class="rating">4.8<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button><button type="button" class="chart-row"><span class="chart-number">4</span><div class="app-icon app-icon--small" style="background:linear-gradient(145deg, #30e978 0%, #169c4a 52%, #08180e 130%)" aria-hidden="true"><span class="spotify-icon-mark"><i></i><i></i><i></i></span><span class="icon-shine"></span></div><span class="chart-copy"><strong>Spotify</strong><small>Music &amp; audio</small><span class="rating">4.8<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button><button type="button" class="chart-row"><span class="chart-number">5</span><div class="app-icon app-icon--small" style="background:linear-gradient(145deg, #f1d8ff 0%, #9844d2 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wand-sparkles" aria-hidden="true"><path d="m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72"></path><path d="m14 7 3 3"></path><path d="M5 6v4"></path><path d="M19 14v4"></path><path d="M10 2v2"></path><path d="M7 8H3"></path><path d="M21 16h-4"></path><path d="M11 3H9"></path></svg><span class="icon-shine"></span></div><span class="chart-copy"><strong>Lumen AI</strong><small>Productivity</small><span class="rating">4.8<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button><button type="button" class="chart-row"><span class="chart-number">6</span><div class="app-icon app-icon--small" style="background:linear-gradient(145deg, #d8f2ff 0%, #408bd5 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-brain-circuit" aria-hidden="true"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"></path><path d="M9 13a4.5 4.5 0 0 0 3-4"></path><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"></path><path d="M3.477 10.896a4 4 0 0 1 .585-.396"></path><path d="M6 18a4 4 0 0 1-1.967-.516"></path><path d="M12 13h4"></path><path d="M12 18h6a2 2 0 0 1 2 2v1"></path><path d="M12 8h8"></path><path d="M16 8V5a2 2 0 0 1 2-2"></path><circle cx="16" cy="13" r=".5"></circle><circle cx="18" cy="3" r=".5"></circle><circle cx="20" cy="21" r=".5"></circle><circle cx="20" cy="8" r=".5"></circle></svg><span class="icon-shine"></span></div><span class="chart-copy"><strong>Mindly AI</strong><small>Education</small><span class="rating">4.8<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button><button type="button" class="chart-row"><span class="chart-number">7</span><div class="app-icon app-icon--small" style="background:linear-gradient(145deg, #d5f7ff 0%, #2b86c8 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-earth" aria-hidden="true"><path d="M21.54 15H17a2 2 0 0 0-2 2v4.54"></path><path d="M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17"></path><path d="M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05"></path><circle cx="12" cy="12" r="10"></circle></svg><span class="icon-shine"></span></div><span class="chart-copy"><strong>Echo Translate</strong><small>Travel &amp; local</small><span class="rating">4.7<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></span><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button></div></section><section class="store-container moments-section"><div class="moments-banner"><div class="moments-copy"><span class="moments-kicker">Made for the moment</span><h2>Small apps. Big summer energy.</h2><p>Plan a spontaneous day out, capture the good bits, and keep your favorite people in the loop.</p><button type="button">Explore the collection <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></button></div><div class="moments-art" aria-hidden="true"><span class="sun-disc"></span><span class="postcard postcard--one"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-camera" aria-hidden="true"><path d="M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z"></path><circle cx="12" cy="13" r="3"></circle></svg></span><span class="postcard postcard--two"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-heart" aria-hidden="true"><path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"></path></svg></span><span class="postcard postcard--three"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-music2 lucide-music-2" aria-hidden="true"><circle cx="8" cy="18" r="4"></circle><path d="M12 18V2l7 4"></path></svg></span></div></div></section><section class="store-container final-rail-section"><div class="section-heading"><div><h2>Tools worth trying</h2><p>Handy helpers, creative companions, and smart little upgrades</p></div><button class="view-more" type="button" aria-label="View more tools"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button></div><div class="rail-shell"><button class="rail-arrow rail-arrow--left" type="button" aria-label="Scroll Tools worth trying left"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left" aria-hidden="true"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg></button><div class="app-rail" aria-label="Tools worth trying"><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #f1d8ff 0%, #9844d2 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wand-sparkles" aria-hidden="true"><path d="m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72"></path><path d="m14 7 3 3"></path><path d="M5 6v4"></path><path d="M19 14v4"></path><path d="M10 2v2"></path><path d="M7 8H3"></path><path d="M21 16h-4"></path><path d="M11 3H9"></path></svg><span class="icon-shine"></span></div><span class="app-card__name">Lumen AI</span><span class="app-card__category">Productivity</span><span class="rating">4.8<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #d5f7ff 0%, #2b86c8 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-earth" aria-hidden="true"><path d="M21.54 15H17a2 2 0 0 0-2 2v4.54"></path><path d="M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17"></path><path d="M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05"></path><circle cx="12" cy="12" r="10"></circle></svg><span class="icon-shine"></span></div><span class="app-card__name">Echo Translate</span><span class="app-card__category">Travel &amp; local</span><span class="rating">4.7<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #dff9e8 0%, #3eaf6d 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span class="icon-shine"></span></div><span class="app-card__name">Clearspace</span><span class="app-card__category">Tools</span><span class="rating">4.6<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #ffe3c0 0%, #ee8251 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open" aria-hidden="true"><path d="M12 5v16"></path><path d="M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z"></path></svg><span class="icon-shine"></span></div><span class="app-card__name">Storyloom</span><span class="app-card__category">Entertainment</span><span class="rating">4.9<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #cfe8ff 0%, #3d55b8 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-music2 lucide-music-2" aria-hidden="true"><circle cx="8" cy="18" r="4"></circle><path d="M12 18V2l7 4"></path></svg><span class="icon-shine"></span></div><span class="app-card__name">Wave Studio</span><span class="app-card__category">Music &amp; audio</span><span class="rating">4.5<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button><button class="app-card" type="button"><div class="app-icon" style="background:linear-gradient(145deg, #fff0da 0%, #e58b3d 100%)" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-camera" aria-hidden="true"><path d="M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z"></path><circle cx="12" cy="13" r="3"></circle></svg><span class="icon-shine"></span></div><span class="app-card__name">Muse Camera</span><span class="app-card__category">Photography</span><span class="rating">4.7<!-- --> <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-star" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg></span></button></div><button class="rail-arrow rail-arrow--right" type="button" aria-label="Scroll Tools worth trying right"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></button></div></section></main><footer class="site-footer"><div class="store-container footer-grid"><div><h3>Google Play</h3><a href="#play-pass">Play Pass</a><a href="#play-points">Play Points</a><a href="#gift-cards">Gift cards</a><a href="#redeem">Redeem</a><a href="#refund">Refund policy</a></div><div><h3>Kids &amp; family</h3><a href="#parent-guide">Parent Guide</a><a href="#family-sharing">Family sharing</a></div><div class="footer-note"><div class="play-logo" aria-label="Google Play"><svg aria-hidden="true" class="play-mark" viewBox="0 0 40 44" xmlns="http://www.w3.org/2000/svg"><path d="M3.2 2.2 23 22 3.2 41.8A5.1 5.1 0 0 1 1 37.6V6.4c0-1.7.8-3.2 2.2-4.2Z" fill="#23c56e"></path><path d="m23 22 6.4-6.4 7.8 4.5c2.4 1.4 2.4 3.5 0 4.9l-7.8 4.5L23 22Z" fill="#ffc928"></path><path d="M3.2 2.2A5 5 0 0 1 8.5 2l20.9 12.1L23 22 3.2 2.2Z" fill="#45a6ff"></path><path d="M3.2 41.8 23 22l6.4 7.5L8.5 41.9c-2 1.1-3.8 1-5.3-.1Z" fill="#f34b4b"></path></svg><span><span class="google-word">Google</span> Play</span></div><p>A handcrafted interface study built with Next.js. Product names and listings are original demo content.</p></div></div><div class="store-container footer-bottom"><div><a href="#terms">Terms of Service</a><a href="#privacy">Privacy</a><a href="#about">About Google Play</a><a href="#developers">Developers</a></div><button type="button"><svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-earth" aria-hidden="true"><path d="M21.54 15H17a2 2 0 0 0-2 2v4.54"></path><path d="M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17"></path><path d="M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05"></path><circle cx="12" cy="12" r="10"></circle></svg> United States (English)</button></div></footer><div class="notice-toast" role="status"></div></div><script type="module" src="/_next/static/chunks/index-hn3AiVww.js" id="_R_" async=""></script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push("2:I[\"8c0f216c4604\",[],\"Children\",1]\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push("3:I[\"593f344dc510\",[],\"GlobalErrorBoundary\",1]\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push("4:I[\"0b874ad30386\",[],\"default\",1]\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push("5:I[\"593f344dc510\",[],\"ErrorBoundary\",1]\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push("6:I[\"15c18cfaeeff\",[],\"LayoutSegmentProvider\",1]\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push("7:I[\"8c0f216c4604\",[],\"Slot\",1]\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push("8:I[\"593f344dc510\",[],\"NotFoundBoundary\",1]\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push("9:I[\"9276801271d6\",[],\"AppRouterScrollTarget\",1]\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push("a:I[\"593f344dc510\",[],\"RedirectBoundary\",1]\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push(":HL[\"/_next/static/css/index.BGXy8e6j.css\",\"style\" ]\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push("0:{\"__route\":\"route:/\",\"__interceptionContext\":null,\"__layoutIds\":[\"layout:/\"],\"__rootLayout\":\"/\",\"__sourcePage\":\"/page\",\"page:/\":\"$L1\",\"layout:/\":[[[[\"$\",\"link\",\"css:/_next/static/css/index.BGXy8e6j.css\",{\"rel\":\"stylesheet\",\"precedence\":\"vite-rsc/importer-resources\",\"href\":\"/_next/static/css/index.BGXy8e6j.css\",\"data-rsc-css-href\":\"/_next/static/css/index.BGXy8e6j.css\"}],\"$undefined\"],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{}]}]}]],null],\"route:/\":[[[\"$\",\"meta\",null,{\"charSet\":\"utf-8\"}],[[\"$\",\"title\",\"0\",{\"children\":\"Apps on Google Play\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A handcrafted Next.js recreation of the Google Play Apps storefront.\"}],[\"$\",\"link\",\"2\",{\"data-vinext-streamed-icon\":\"$undefined\",\"rel\":\"icon\",\"href\":\"/icons/home.ico\",\"type\":\"image/x-icon\",\"sizes\":\"$undefined\",\"color\":\"$undefined\",\"media\":\"$undefined\",\"fetchPriority\":\"$undefined\"}]],[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, viewport-fit=cover\"}]]],[\"$\",\"$L3\",null,{\"fallback\":\"$4\",\"children\":[\"$\",\"$L5\",null,{\"fallback\":\"$4\",\"children\":[\"$\",\"$L6\",null,{\"providerId\":\"layout:/\",\"segmentMap\":{\"children\":[]},\"children\":[\"$\",\"$L7\",null,{\"id\":\"layout:/\",\"parallelSlots\":\"$undefined\",\"children\":[\"$\",\"$L8\",null,{\"resetKey\":\"\",\"fallback\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$La\",null,{\"children\":[[\"$\",\"$L6\",null,{\"providerId\":\"page:/\",\"segmentMap\":{\"children\":[\"__PAGE__\"]},\"children\":[\"$\",\"$L7\",null,{\"id\":\"page:/\"}]}],null]}]}]}]}]}]}]}],null,null],\"__layoutFlags\":{\"layout:/\":\"s\"},\"__artifactCompatibility\":{\"schemaVersion\":1,\"graphVersion\":\"app-route-graph:1177fd80f83fa7b0\",\"deploymentVersion\":\"e1ce9af7-d770-43d6-845a-511443f19971\",\"appElementsSchemaVersion\":1,\"rscPayloadSchemaVersion\":1,\"rootBoundaryId\":\"/\",\"renderEpoch\":null},\"__renderObservation\":{\"schemaVersion\":1,\"output\":{\"kind\":\"app-rsc\",\"mountedSlotsFingerprint\":null,\"renderEpoch\":null,\"rootBoundaryId\":\"/\",\"routeId\":\"route:/\"},\"completeness\":\"partial\",\"boundaryOutcome\":{\"kind\":\"unknown\"},\"requestApis\":[{\"kind\":\"connection\",\"status\":\"unknown\"},{\"kind\":\"cookies\",\"status\":\"unknown\"},{\"kind\":\"draftMode\",\"status\":\"unknown\"},{\"kind\":\"headers\",\"status\":\"unknown\"},{\"kind\":\"params\",\"status\":\"unknown\"},{\"kind\":\"searchParams\",\"status\":\"unknown\"}],\"dynamicFetches\":[],\"cacheTags\":[\"/\",\"_N_T_/\",\"_N_T_/index\",\"_N_T_/layout\",\"_N_T_/page\"],\"pathTags\":[\"/\"],\"cacheability\":\"unknown\",\"downgrade\":{\"target\":\"freshRender\",\"reasons\":[{\"code\":\"CP_DOWNGRADE_CACHEABILITY_UNKNOWN\",\"target\":\"freshRender\"},{\"code\":\"CP_DOWNGRADE_INCOMPLETE_OBSERVATION\",\"completeness\":\"partial\",\"target\":\"freshRender\"},{\"code\":\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"requestApi\":\"connection\",\"target\":\"freshRender\"},{\"code\":\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"requestApi\":\"cookies\",\"target\":\"freshRender\"},{\"code\":\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"requestApi\":\"draftMode\",\"target\":\"freshRender\"},{\"code\":\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"requestApi\":\"headers\",\"target\":\"freshRender\"},{\"code\":\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"requestApi\":\"params\",\"target\":\"freshRender\"},{\"code\":\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"requestApi\":\"searchParams\",\"target\":\"freshRender\"}],\"fallback\":{\"kind\":\"breakerFallback\",\"code\":\"CP_PRIVATE_DYNAMIC_DOWNGRADE\",\"mode\":\"renderFresh\",\"scope\":\"affectedOutput\",\"fields\":{\"reasonCodes\":[\"CP_DOWNGRADE_CACHEABILITY_UNKNOWN\",\"CP_DOWNGRADE_INCOMPLETE_OBSERVATION\",\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\",\"CP_DOWNGRADE_UNKNOWN_REQUEST_API\"],\"target\":\"freshRender\"}},\"isPublicCacheCandidate\":false}}}\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push("b:I[\"f1da2b17eb86\",[],\"Storefront\",1]\n")</script><script>((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).rsc.push("1:[\"$\",\"$Lb\",null,{}]\n")</script><script>Object.assign(((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}),{"initialCacheKind":"static"});((self[Symbol.for("vinext.navigationRuntime")]??={bootstrap:{routeManifest:null},functions:{}}).bootstrap.rsc??={rsc:[]}).done=true</script></body></html>
@@ -0,0 +1,13 @@
1
+ 2:I["8c0f216c4604",[],"Children",1]
2
+ 3:I["593f344dc510",[],"GlobalErrorBoundary",1]
3
+ 4:I["0b874ad30386",[],"default",1]
4
+ 5:I["593f344dc510",[],"ErrorBoundary",1]
5
+ 6:I["15c18cfaeeff",[],"LayoutSegmentProvider",1]
6
+ 7:I["8c0f216c4604",[],"Slot",1]
7
+ 8:I["593f344dc510",[],"NotFoundBoundary",1]
8
+ 9:I["9276801271d6",[],"AppRouterScrollTarget",1]
9
+ a:I["593f344dc510",[],"RedirectBoundary",1]
10
+ :HL["/_next/static/css/index.BGXy8e6j.css","style" ]
11
+ 0:{"__route":"route:/","__interceptionContext":null,"__layoutIds":["layout:/"],"__rootLayout":"/","__sourcePage":"/page","page:/":"$L1","layout:/":[[[["$","link","css:/_next/static/css/index.BGXy8e6j.css",{"rel":"stylesheet","precedence":"vite-rsc/importer-resources","href":"/_next/static/css/index.BGXy8e6j.css","data-rsc-css-href":"/_next/static/css/index.BGXy8e6j.css"}],"$undefined"],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L2",null,{}]}]}]],null],"route:/":[[["$","meta",null,{"charSet":"utf-8"}],[["$","title","0",{"children":"Apps on Google Play"}],["$","meta","1",{"name":"description","content":"A handcrafted Next.js recreation of the Google Play Apps storefront."}],["$","link","2",{"data-vinext-streamed-icon":"$undefined","rel":"icon","href":"/icons/home.ico","type":"image/x-icon","sizes":"$undefined","color":"$undefined","media":"$undefined","fetchPriority":"$undefined"}]],[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1, viewport-fit=cover"}]]],["$","$L3",null,{"fallback":"$4","children":["$","$L5",null,{"fallback":"$4","children":["$","$L6",null,{"providerId":"layout:/","segmentMap":{"children":[]},"children":["$","$L7",null,{"id":"layout:/","parallelSlots":"$undefined","children":["$","$L8",null,{"resetKey":"","fallback":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"children":["$","$L9",null,{"children":["$","$La",null,{"children":[["$","$L6",null,{"providerId":"page:/","segmentMap":{"children":["__PAGE__"]},"children":["$","$L7",null,{"id":"page:/"}]}],null]}]}]}]}]}]}]}],null,null],"__layoutFlags":{"layout:/":"s"},"__artifactCompatibility":{"schemaVersion":1,"graphVersion":"app-route-graph:1177fd80f83fa7b0","deploymentVersion":"e1ce9af7-d770-43d6-845a-511443f19971","appElementsSchemaVersion":1,"rscPayloadSchemaVersion":1,"rootBoundaryId":"/","renderEpoch":null},"__renderObservation":{"schemaVersion":1,"output":{"kind":"app-rsc","mountedSlotsFingerprint":null,"renderEpoch":null,"rootBoundaryId":"/","routeId":"route:/"},"completeness":"partial","boundaryOutcome":{"kind":"unknown"},"requestApis":[{"kind":"connection","status":"unknown"},{"kind":"cookies","status":"unknown"},{"kind":"draftMode","status":"unknown"},{"kind":"headers","status":"unknown"},{"kind":"params","status":"unknown"},{"kind":"searchParams","status":"unknown"}],"dynamicFetches":[],"cacheTags":["/","_N_T_/","_N_T_/index","_N_T_/layout","_N_T_/page"],"pathTags":["/"],"cacheability":"unknown","downgrade":{"target":"freshRender","reasons":[{"code":"CP_DOWNGRADE_CACHEABILITY_UNKNOWN","target":"freshRender"},{"code":"CP_DOWNGRADE_INCOMPLETE_OBSERVATION","completeness":"partial","target":"freshRender"},{"code":"CP_DOWNGRADE_UNKNOWN_REQUEST_API","requestApi":"connection","target":"freshRender"},{"code":"CP_DOWNGRADE_UNKNOWN_REQUEST_API","requestApi":"cookies","target":"freshRender"},{"code":"CP_DOWNGRADE_UNKNOWN_REQUEST_API","requestApi":"draftMode","target":"freshRender"},{"code":"CP_DOWNGRADE_UNKNOWN_REQUEST_API","requestApi":"headers","target":"freshRender"},{"code":"CP_DOWNGRADE_UNKNOWN_REQUEST_API","requestApi":"params","target":"freshRender"},{"code":"CP_DOWNGRADE_UNKNOWN_REQUEST_API","requestApi":"searchParams","target":"freshRender"}],"fallback":{"kind":"breakerFallback","code":"CP_PRIVATE_DYNAMIC_DOWNGRADE","mode":"renderFresh","scope":"affectedOutput","fields":{"reasonCodes":["CP_DOWNGRADE_CACHEABILITY_UNKNOWN","CP_DOWNGRADE_INCOMPLETE_OBSERVATION","CP_DOWNGRADE_UNKNOWN_REQUEST_API","CP_DOWNGRADE_UNKNOWN_REQUEST_API","CP_DOWNGRADE_UNKNOWN_REQUEST_API","CP_DOWNGRADE_UNKNOWN_REQUEST_API","CP_DOWNGRADE_UNKNOWN_REQUEST_API","CP_DOWNGRADE_UNKNOWN_REQUEST_API"],"target":"freshRender"}},"isPublicCacheCandidate":false}}}
12
+ b:I["f1da2b17eb86",[],"Storefront",1]
13
+ 1:["$","$Lb",null,{}]
@@ -0,0 +1,162 @@
1
+ export default {
2
+ "bootstrapScriptContent": "import(\"/_next/static/chunks/index-hn3AiVww.js\")",
3
+ "clientEntryDeps": {
4
+ "js": [
5
+ "/_next/static/chunks/index-hn3AiVww.js",
6
+ "/_next/static/chunks/rolldown-runtime-QTnfLwEv.js",
7
+ "/_next/static/chunks/framework-BQUlGUOV.js",
8
+ "/_next/static/chunks/navigation-errors-C_V42-00.js"
9
+ ],
10
+ "css": []
11
+ },
12
+ "clientReferenceDeps": {
13
+ "a340ac14ea46": {
14
+ "js": [
15
+ "/_next/static/chunks/app-top-nav-Dh0jEt8u.js",
16
+ "/_next/static/chunks/framework-BQUlGUOV.js",
17
+ "/_next/static/chunks/rolldown-runtime-QTnfLwEv.js",
18
+ "/_next/static/chunks/index-hn3AiVww.js",
19
+ "/_next/static/chunks/navigation-errors-C_V42-00.js",
20
+ "/_next/static/chunks/chevron-left-Dn3noAqV.js",
21
+ "/_next/static/chunks/house-DQz6VeTk.js"
22
+ ],
23
+ "css": []
24
+ },
25
+ "f1da2b17eb86": {
26
+ "js": [
27
+ "/_next/static/chunks/storefront-C_nmcuvH.js",
28
+ "/_next/static/chunks/rolldown-runtime-QTnfLwEv.js",
29
+ "/_next/static/chunks/framework-BQUlGUOV.js",
30
+ "/_next/static/chunks/index-hn3AiVww.js",
31
+ "/_next/static/chunks/navigation-errors-C_V42-00.js",
32
+ "/_next/static/chunks/chevron-left-Dn3noAqV.js",
33
+ "/_next/static/chunks/step-forward-CV8I5pPb.js",
34
+ "/_next/static/chunks/playback-activity-track-switcher-CbO6kl8K.js",
35
+ "/_next/static/chunks/manage-profiles-modal-Doi6QM4e.js"
36
+ ],
37
+ "css": [
38
+ "/_next/static/css/manage-profiles-modal.BAVyxRRR.css"
39
+ ]
40
+ },
41
+ "278c117307e7": {
42
+ "js": [
43
+ "/_next/static/chunks/netflix-browser-L_Vb9wXK.js",
44
+ "/_next/static/chunks/rolldown-runtime-QTnfLwEv.js",
45
+ "/_next/static/chunks/framework-BQUlGUOV.js",
46
+ "/_next/static/chunks/index-hn3AiVww.js",
47
+ "/_next/static/chunks/navigation-errors-C_V42-00.js",
48
+ "/_next/static/chunks/chevron-left-Dn3noAqV.js",
49
+ "/_next/static/chunks/step-forward-CV8I5pPb.js",
50
+ "/_next/static/chunks/playback-activity-Dug3BRYr.js",
51
+ "/_next/static/chunks/manage-profiles-modal-Doi6QM4e.js"
52
+ ],
53
+ "css": [
54
+ "/_next/static/css/manage-profiles-modal.BAVyxRRR.css"
55
+ ]
56
+ },
57
+ "6fda1fc439ba": {
58
+ "js": [
59
+ "/_next/static/chunks/spotify-app-f93K4FG_.js",
60
+ "/_next/static/chunks/rolldown-runtime-QTnfLwEv.js",
61
+ "/_next/static/chunks/framework-BQUlGUOV.js",
62
+ "/_next/static/chunks/chevron-left-Dn3noAqV.js",
63
+ "/_next/static/chunks/playback-activity-track-switcher-CbO6kl8K.js",
64
+ "/_next/static/chunks/manage-profiles-modal-Doi6QM4e.js",
65
+ "/_next/static/chunks/playback-activity-Dug3BRYr.js",
66
+ "/_next/static/chunks/house-DQz6VeTk.js",
67
+ "/_next/static/chunks/index-hn3AiVww.js",
68
+ "/_next/static/chunks/navigation-errors-C_V42-00.js"
69
+ ],
70
+ "css": [
71
+ "/_next/static/css/manage-profiles-modal.BAVyxRRR.css"
72
+ ]
73
+ },
74
+ "9276801271d6": {
75
+ "js": [
76
+ "/_next/static/chunks/index-hn3AiVww.js",
77
+ "/_next/static/chunks/rolldown-runtime-QTnfLwEv.js",
78
+ "/_next/static/chunks/framework-BQUlGUOV.js",
79
+ "/_next/static/chunks/navigation-errors-C_V42-00.js"
80
+ ],
81
+ "css": []
82
+ },
83
+ "0b874ad30386": {
84
+ "js": [
85
+ "/_next/static/chunks/index-hn3AiVww.js",
86
+ "/_next/static/chunks/rolldown-runtime-QTnfLwEv.js",
87
+ "/_next/static/chunks/framework-BQUlGUOV.js",
88
+ "/_next/static/chunks/navigation-errors-C_V42-00.js"
89
+ ],
90
+ "css": []
91
+ },
92
+ "593f344dc510": {
93
+ "js": [
94
+ "/_next/static/chunks/index-hn3AiVww.js",
95
+ "/_next/static/chunks/rolldown-runtime-QTnfLwEv.js",
96
+ "/_next/static/chunks/framework-BQUlGUOV.js",
97
+ "/_next/static/chunks/navigation-errors-C_V42-00.js"
98
+ ],
99
+ "css": []
100
+ },
101
+ "bad85346fc72": {
102
+ "js": [
103
+ "/_next/static/chunks/index-hn3AiVww.js",
104
+ "/_next/static/chunks/rolldown-runtime-QTnfLwEv.js",
105
+ "/_next/static/chunks/framework-BQUlGUOV.js",
106
+ "/_next/static/chunks/navigation-errors-C_V42-00.js"
107
+ ],
108
+ "css": []
109
+ },
110
+ "15c18cfaeeff": {
111
+ "js": [
112
+ "/_next/static/chunks/layout-segment-context-DRM8YCgm.js",
113
+ "/_next/static/chunks/rolldown-runtime-QTnfLwEv.js",
114
+ "/_next/static/chunks/framework-BQUlGUOV.js",
115
+ "/_next/static/chunks/navigation-errors-C_V42-00.js",
116
+ "/_next/static/chunks/index-hn3AiVww.js"
117
+ ],
118
+ "css": []
119
+ },
120
+ "8c0f216c4604": {
121
+ "js": [
122
+ "/_next/static/chunks/index-hn3AiVww.js",
123
+ "/_next/static/chunks/rolldown-runtime-QTnfLwEv.js",
124
+ "/_next/static/chunks/framework-BQUlGUOV.js",
125
+ "/_next/static/chunks/navigation-errors-C_V42-00.js"
126
+ ],
127
+ "css": []
128
+ },
129
+ "89c3cac48cb5": {
130
+ "js": [
131
+ "/_next/static/chunks/streamed-icons-DwsKSgMb.js",
132
+ "/_next/static/chunks/rolldown-runtime-QTnfLwEv.js",
133
+ "/_next/static/chunks/framework-BQUlGUOV.js",
134
+ "/_next/static/chunks/index-hn3AiVww.js",
135
+ "/_next/static/chunks/navigation-errors-C_V42-00.js"
136
+ ],
137
+ "css": []
138
+ }
139
+ },
140
+ "serverResources": {
141
+ "app/layout.tsx": {
142
+ "js": [],
143
+ "css": [
144
+ "/_next/static/css/index.BGXy8e6j.css"
145
+ ]
146
+ },
147
+ "app/netflix/layout.tsx": {
148
+ "js": [],
149
+ "css": [
150
+ "/_next/static/css/layout.D8T68cCD.css",
151
+ "/_next/static/css/index.BGXy8e6j.css"
152
+ ]
153
+ },
154
+ "app/spotify/layout.tsx": {
155
+ "js": [],
156
+ "css": [
157
+ "/_next/static/css/layout.AKSLtSR6.css",
158
+ "/_next/static/css/index.BGXy8e6j.css"
159
+ ]
160
+ }
161
+ }
162
+ }
@@ -0,0 +1 @@
1
+ import"react/jsx-runtime";import{isValidElement as e}from"react";function t(e){return e.startsWith(`/`)&&!e.startsWith(`//`)&&!e.includes(`?`)&&!e.includes(`#`)&&!e.includes(`\0`)}function n(e){if(e===`/`||e.length>1&&e[0]===`/`&&!e.includes(`//`)&&!e.includes(`/./`)&&!e.includes(`/../`)&&!e.endsWith(`/.`)&&!e.endsWith(`/..`))return e;let t=e.split(`/`),n=[];for(let e of t)e===``||e===`.`||(e===`..`?n.pop():n.push(e));return`/`+n.join(`/`)}var r=(e,t)=>e<t?-1:+(e>t);function i(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function a(e={}){return{schemaVersion:1,graphVersion:e.graphVersion??null,deploymentVersion:e.deploymentVersion??null,appElementsSchemaVersion:1,rscPayloadSchemaVersion:1,rootBoundaryId:e.rootBoundaryId??null,renderEpoch:e.renderEpoch??null}}function o(e){return typeof e==`string`||e===null}function s(e){return e.schemaVersion===1&&e.appElementsSchemaVersion===1&&e.rscPayloadSchemaVersion===1}function c(e){return!i(e)||!s(e)||!o(e.graphVersion)||!o(e.deploymentVersion)||!o(e.rootBoundaryId)||!o(e.renderEpoch)?null:{schemaVersion:1,graphVersion:e.graphVersion,deploymentVersion:e.deploymentVersion,appElementsSchemaVersion:1,rscPayloadSchemaVersion:1,rootBoundaryId:e.rootBoundaryId,renderEpoch:e.renderEpoch}}var l=new WeakMap;function u(e,t){l.get(e)?.get(t)?.release()}var d=`\0`,f=`__artifactCompatibility`,p=`__cacheEntryReuseProof`,m=`__dynamicStaleTime`,h=`__interception`,g=`__interceptionContext`,_=`__layoutIds`,v=`__layoutFlags`,y=`__renderObservation`,b=`__route`,x=`__rootLayout`,S=`__skippedLayoutIds`,C=`__sourcePage`,w=`__slotBindings`,T=`__VINEXT_UNMATCHED_SLOT__`,E=Symbol.for(`vinext.unmatchedSlot`),D=new Set;function O(e){return new Set(e)}var k=O(`CP_CACHE_ENTRY_PROOF_MISSING.CP_MODEL_DISABLED.CP_ARTIFACT_COMPATIBILITY_INCOMPATIBLE.CP_ARTIFACT_COMPATIBILITY_UNKNOWN.CP_DIMENSION_COUNT_EXCEEDED.CP_DIMENSION_NAME_MISSING.CP_DIMENSION_NAME_TOO_LONG.CP_DIMENSION_VALUE_COUNT_EXCEEDED.CP_DIMENSION_VALUE_TOO_LONG.CP_DIMENSION_VALUES_MISSING.CP_ENCODED_VARIANT_TOO_LONG.CP_INVALID_VARIANT_BUDGET.CP_ROUTE_VARIANT_BUDGET_ROUTE_MISMATCH.CP_ROUTE_VARIANT_CEILING_EXCEEDED.CP_UNSAFE_PUBLIC_DIMENSION.CP_BOUNDARY_OUTCOME_MISMATCH.CP_BOUNDARY_OUTCOME_UNKNOWN.CP_PRIVATE_DYNAMIC_DOWNGRADE.CP_STATIC_LAYOUT_CANDIDATE_OUTPUT_KIND.CP_STATIC_LAYOUT_CURRENT_OUTPUT_KIND.CP_STATIC_LAYOUT_ID_MISMATCH.CP_STATIC_LAYOUT_OBSERVATION_OUTPUT_KIND.CP_STATIC_LAYOUT_OBSERVATION_OUTPUT_MISMATCH.CP_STATIC_LAYOUT_PRIVATE_DYNAMIC_DOWNGRADE.CP_STATIC_LAYOUT_REQUEST_API_OBSERVED.CP_STATIC_LAYOUT_REQUEST_API_UNKNOWN.CP_STATIC_LAYOUT_ROOT_BOUNDARY_MISMATCH.CP_STATIC_LAYOUT_ROOT_BOUNDARY_UNKNOWN.CP_STATIC_LAYOUT_VARIANT_DIMENSION_UNPROVEN`.split(`.`)),A=r;function j(e,t){return A(e.slotId,t.slotId)}function M(e,t={}){let n=t.layoutIds?new Set(t.layoutIds):null,r=new Set,i=[];for(let t of e){if(r.has(t.slotId))throw Error(`[vinext] Invalid __slotBindings in App Router payload: duplicate slot id`);if(r.add(t.slotId),n&&t.ownerLayoutId!==null&&!n.has(t.ownerLayoutId))throw Error(`[vinext] Invalid __slotBindings in App Router payload: owner layout id missing from __layoutIds`);i.push({...t})}return i.sort(j)}function N(e,t){return t===null?e:`${e}${d}${t}`}function P(e,t){return N(`route:${e}`,t)}function ee(e,t){return N(`page:${e}`,t)}function te(e){return`layout:${e}`}function ne(e){return`template:${e}`}function re(e,t){return`slot:${e}:${t}`}function F(e,t){return N(e,t)}function I(e){let t=e.indexOf(d),n=t===-1?e:e.slice(0,t);return n.startsWith(`/`)?{interceptionContext:t===-1?null:e.slice(t+1),path:n}:null}function L(e){return e.startsWith(`/`)?e:null}function R(e){if(e.startsWith(`route:`)){let t=I(e.slice(6));return t?{interceptionContext:t.interceptionContext,kind:`route`,path:t.path}:null}if(e.startsWith(`page:`)){let t=I(e.slice(5));return t?{interceptionContext:t.interceptionContext,kind:`page`,path:t.path}:null}if(e.startsWith(`layout:`)){let t=L(e.slice(7));return t?{kind:`layout`,treePath:t}:null}if(e.startsWith(`template:`)){let t=L(e.slice(9));return t?{kind:`template`,treePath:t}:null}if(e.startsWith(`slot:`)){let t=e.slice(5),n=t.indexOf(`:`);if(n<=0)return null;let r=t.slice(0,n),i=L(t.slice(n+1));return i?{kind:`slot`,name:r,treePath:i}:null}return null}function z(e){if(!e.startsWith(`slot:`))return!1;let t=e.slice(5),n=t.indexOf(`:`);return n>0&&t.charCodeAt(n+1)===47}function B(e){let t=[...e.layoutIds??[]],n={[b]:e.routeId,[g]:e.interceptionContext,[_]:t,[x]:e.rootLayoutTreePath,...e.dynamicStaleTimeSeconds===void 0?{}:{[m]:e.dynamicStaleTimeSeconds},...e.sourcePage===null||e.sourcePage===void 0?{}:{[C]:e.sourcePage}},r=e.interception?{...n,[h]:e.interception}:n;return e.slotBindings&&e.slotBindings.length>0?{...r,[w]:M(e.slotBindings,{layoutIds:t})}:r}function V(e){let t=!1;for(let[n,r]of Object.entries(e))if(z(n)&&r===`__VINEXT_UNMATCHED_SLOT__`){t=!0;break}if(!t)return e;let n={};for(let[t,r]of Object.entries(e))n[t]=z(t)&&r===`__VINEXT_UNMATCHED_SLOT__`?E:r;return n}function H(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;for(let t of Object.values(e))if(t!==`s`&&t!==`d`)return!1;return!0}function U(e){return H(e)?e:{}}function W(e,t){if(e===void 0)return[];if(!Array.isArray(e))throw Error(`[vinext] Invalid ${t} in App Router payload: expected layout id string[]`);let n=[];for(let r of e){if(typeof r!=`string`)throw Error(`[vinext] Invalid ${t} in App Router payload: expected layout id string[]`);if(R(r)?.kind!==`layout`)throw Error(`[vinext] Invalid ${t} in App Router payload: expected layout ids`);n.push(r)}return n}function G(e){return W(e,_)}function K(e){return W(e,S)}function q(e){return e===`active`||e==="default"||e===`unmatched`}function J(e,t={}){if(e===void 0)return[];if(!Array.isArray(e))throw Error(`[vinext] Invalid __slotBindings in App Router payload: expected array`);let n=[];for(let t of e){if(!i(t))throw Error(`[vinext] Invalid __slotBindings in App Router payload: expected objects`);let e=t.slotId;if(typeof e!=`string`||R(e)?.kind!==`slot`)throw Error(`[vinext] Invalid __slotBindings in App Router payload: expected slot ids`);let r=t.ownerLayoutId;if(r!==null&&(typeof r!=`string`||R(r)?.kind!==`layout`))throw Error(`[vinext] Invalid __slotBindings in App Router payload: expected owner layout ids`);let a=t.state;if(!q(a))throw Error(`[vinext] Invalid __slotBindings in App Router payload: expected state`);let o=t.activeRouteId;if(o!=null&&(typeof o!=`string`||R(o)?.kind!==`route`))throw Error(`[vinext] Invalid __slotBindings in App Router payload: expected route ids`);n.push({...o===void 0?{}:{activeRouteId:o},ownerLayoutId:r,slotId:e,state:a})}return M(n,t)}function Y(e,t){let n=e[t];if(typeof n!=`string`)throw Error(`[vinext] Invalid __interception in App Router payload: expected strings`);return n}function X(e){if(!t(e))throw Error(`[vinext] Invalid __interception in App Router payload: expected path URLs`);return e}function Z(e,t){let n=R(e);if(n?.kind!==`route`||n.path!==t||n.interceptionContext!==null)throw Error(`[vinext] Invalid __interception in App Router payload: expected route ids`);return e}function ie(e){if(R(e)?.kind!==`slot`)throw Error(`[vinext] Invalid __interception in App Router payload: expected slot id`);return e}function ae(e){if(e==null)return null;if(!i(e))throw Error(`[vinext] Invalid __interception in App Router payload: expected object`);let t=X(Y(e,`sourceMatchedUrl`)),n=X(Y(e,`targetMatchedUrl`));return{sourceMatchedUrl:t,sourceRouteId:Z(Y(e,`sourceRouteId`),t),slotId:ie(Y(e,`slotId`)),targetMatchedUrl:n,targetRouteId:Z(Y(e,`targetRouteId`),n)}}function oe(t){return!(typeof t!=`object`||!t||Array.isArray(t)||e(t))}function se(e,t){return{...e,[v]:t}}function Q(e){if(!oe(e.element))return e.element;let t=ce(e.skipDisposition),n={};for(let[r,i]of Object.entries(e.element)){if(t.has(r)){u(e.element,r);continue}n[r]=i===E?T:i}return n[v]=e.layoutFlags,t.size>0&&(n[S]=[...t]),n[f]=e.artifactCompatibility??a(),e.cacheEntryReuseProof&&(n[p]=e.cacheEntryReuseProof),e.dynamicStaleTimeSeconds!==void 0&&(n[m]=e.dynamicStaleTimeSeconds),e.renderObservation&&(n[y]=e.renderObservation),n}function ce(e){if(e?.enabled!==!0)return D;let t=new Set;for(let n of e.skippedEntryIds)R(n)?.kind===`layout`&&t.add(n);return t}function le(e){return e===void 0?a():c(e)??a()}function ue(e){return e==null||typeof e!=`string`||!e.startsWith(`/`)?null:e}function $(){return{kind:`runtime-cache-entry`,decision:null}}function de(e){return typeof e==`string`&&k.has(e)}function fe(e){return e===`renderFresh`||e===`privateUncacheable`}function pe(e){return e===`affectedOutput`||e===`route`}function me(e){if(e===void 0)return null;if(!i(e)||e.kind!==`runtime-cache-entry`)return $();let t=e.decision;return t===null||!i(t)?$():t.kind===`reuse`&&t.canReuse===!0&&t.code===`CP_STATIC_LAYOUT_REUSE_PROVEN`&&t.reuseClass===`static-layout`?{kind:`runtime-cache-entry`,decision:{canReuse:!0,code:t.code,kind:`reuse`,reuseClass:t.reuseClass}}:t.kind===`reject`&&t.canReuse===!1&&de(t.code)&&fe(t.mode)&&pe(t.scope)?{kind:`runtime-cache-entry`,decision:{canReuse:!1,code:t.code,kind:`reject`,mode:t.mode,scope:t.scope}}:$()}function he(e){let t=e[b];if(typeof t!=`string`)throw Error(`[vinext] Missing __route string in App Router payload`);let n=e[g];if(n!=null&&typeof n!=`string`)throw Error(`[vinext] Invalid __interceptionContext in App Router payload`);let r=e[x];if(r===void 0)throw Error(`[vinext] Missing __rootLayout key in App Router payload`);if(r!==null&&typeof r!=`string`)throw Error(`[vinext] Invalid __rootLayout in App Router payload: expected string or null`);let i=U(e[v]),a=G(e[_]),o=K(e[S]),s=J(e[w],{layoutIds:a}),c=ae(e[h]),l=le(e[f]),u=me(e[p]),d=e[m],y=typeof d==`number`&&Number.isFinite(d)&&d>=0?d:void 0,T=ue(e[C]);return{artifactCompatibility:l,...u?{cacheEntryReuseProof:u}:{},...y===void 0?{}:{dynamicStaleTimeSeconds:y},interception:c,interceptionContext:n??null,layoutIds:a,layoutFlags:i,routeId:t,rootLayoutTreePath:r,skippedLayoutIds:o,slotBindings:s,sourcePage:T}}var ge={keys:{artifactCompatibility:f,cacheEntryReuseProof:p,dynamicStaleTime:m,interception:h,interceptionContext:g,layoutIds:_,layoutFlags:v,renderObservation:y,rootLayout:x,route:b,skippedLayoutIds:S,slotBindings:w,sourcePage:C},unmatchedSlotValue:T,createMetadataEntries:B,decode:V,encodeCacheKey:F,encodeLayoutId:te,encodeOutgoingPayload:Q,encodePageId:ee,encodeRouteId:P,encodeSlotId:re,encodeTemplateId:ne,isSlotId:z,parseElementKey:R,readMetadata:he,withLayoutFlags:se};export{E as n,n as r,ge as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime-DSjMdhoD.js";var t=e({});export{t};
@@ -0,0 +1 @@
1
+ import*as e from"node:async_hooks";import{AsyncLocalStorage as t}from"node:async_hooks";import*as n from"react";globalThis.AsyncLocalStorage=e.AsyncLocalStorage;var r=globalThis,i=class{getStore(){}run(e,t,...n){return t(...n)}exit(e,...t){return e(...t)}enterWith(e){}disable(){}};function a(e){let n=Symbol.for(e);return r[n]??=typeof t==`function`?new t:new i}var o=a(`vinext.pprFallbackShell.als`),s=a(`vinext.pprFallbackShell.cacheTaskStack.als`);function c(e){let t=setTimeout(()=>{t=null,n=setTimeout(()=>{n=null,e()},0)},0),n=null;return()=>{t!==null&&(clearTimeout(t),t=null),n!==null&&(clearTimeout(n),n=null)}}function l(e){if(e.pendingCacheTasks!==0)return;let t=e.cacheReadyResolvers.splice(0);for(let e of t)e()}function u(e){e.pendingCacheTasks!==0||e.pendingCacheReadyCleanup!==null||(e.pendingCacheReadyCleanup=c(()=>{e.pendingCacheReadyCleanup=null,l(e),e.phase===`final`&&d(e)}))}function d(e){e.phase!==`final`||!e.isFinalRenderStarted||!e.hasDynamicBoundary||e.pendingCacheTasks>0||e.pendingCacheReadyCleanup!==null||e.isAbortScheduled||(e.isAbortScheduled=!0,e.pendingAbortCleanup=c(()=>{e.pendingAbortCleanup=null,e.isAbortScheduled=!1,e.phase===`final`&&e.hasDynamicBoundary&&e.pendingCacheTasks===0&&e.pendingCacheReadyCleanup===null&&!e.reactAbortController.signal.aborted&&(e.reactAbortController.abort(),e.abortController.abort())}))}function f(e,t){t.isPending&&(t.isPending=!1,t.epoch===e.cacheEpoch&&(e.pendingCacheTasks--,u(e)))}function p(e,t){!t.isPending||t.isIgnored||(t.isIgnored=!0,f(e,t))}function m(){return o.getStore()??null}function h(e){e.hasDynamicBoundary=!0;for(let t of s.getStore()??[])p(e,t);u(e)}function g(){let e=m();e===null||e.fallbackParamNames.size===0||h(e)}function _(e){return typeof DOMException<`u`&&e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&e.name===`HangingPromiseRejectionError`}var v=Symbol.for(`vinext.appRouterContext`),y=Symbol.for(`vinext.globalLayoutRouterContext`),b=Symbol.for(`vinext.layoutRouterContext`),x=Symbol.for(`vinext.missingSlotContext`),S=Symbol.for(`vinext.templateContext`);function C(e,t){if(typeof n.createContext!=`function`)return null;let r=globalThis;return r[e]||(r[e]=n.createContext(t)),r[e]??null}var w=C(v,null);C(y,null),C(b,null),C(x,new Set),C(S,null);export{a as i,_ as n,g as r,w as t};
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import*as t from"react";import"react-dom";function n(e){try{return decodeURIComponent(e)}catch{return e}}var r=Symbol.for(`vinext.appRouterScrollIntent`);function i(){let e=globalThis;return e[r]??={nextId:0,pending:null},e[r]}function a(){return i().pending}function o(e,t){let n=i(),r=n.pending;e==null||r===null||r.id===e.id&&r.commitId===t&&(n.pending={...r,targetHoistedInHead:!0})}function s(e,t){if(e==null)return null;let n=i(),r=n.pending;return r===null||r.id!==e.id||t!==void 0&&r.commitId!==t?null:(n.pending=null,r)}var c=t.createContext(null),l=[`bottom`,`height`,`left`,`right`,`top`,`width`,`x`,`y`];function u(e){return null}function d(e){let t=getComputedStyle(e).position;if(t===`fixed`||t===`sticky`)return!0;let n=e.getBoundingClientRect();return l.every(e=>n[e]===0)}function f(e,t){let n=e.getClientRects();if(n.length===0)return!1;let r=1/0;for(let e of n)e.top<r&&(r=e.top);return r>=0&&r<=t}function p(e){let t=n(e.startsWith(`#`)?e.slice(1):e);return t===`top`?document.body:document.getElementById(t)??document.getElementsByName(t)[0]??null}function m(e){let t=e.ownerDocument?.head;return t!=null&&t.contains(e)}function h(e){if(!(e instanceof Element)||m(e))return null;let t=e;for(;!(t instanceof HTMLElement)||d(t);){if(t.nextElementSibling===null)return null;t=t.nextElementSibling}return{kind:`element`,element:t}}function g(e,t){if(t!==null){e.scrollIntoView({behavior:`auto`});return}let n=document.documentElement,r=n.clientHeight;f(e,r)||(n.scrollTop=0,f(e,r)||e.scrollIntoView({behavior:`auto`,block:`start`,inline:`nearest`}))}var _=class extends t.Component{scheduledCommitId=null;schedulePotentialScroll=()=>{let e=this.props.commitId;this.scheduledCommitId=e,queueMicrotask(()=>{this.scheduledCommitId===e&&this.handlePotentialScroll()})};handlePotentialScroll=()=>{let e=a();if(e===null||this.props.commitId===null||e.commitId!==this.props.commitId)return;let t;if(t=e.hash===null?null:p(e.hash),t===null){t=u(this);let n=t instanceof Element?t:t?.parentElement;if(t!==null&&n!=null&&m(t)&&!e.headElements?.has(n)){o(e,this.props.commitId);return}}let n=h(t);if(n===null)return;let r=n.element,i=s(e,this.props.commitId);i!==null&&(g(r,i.hash),r.focus())};componentDidMount(){this.schedulePotentialScroll()}componentDidUpdate(){this.schedulePotentialScroll()}componentWillUnmount(){this.scheduledCommitId=null}render(){return this.props.children}};function v({children:n}){return e(_,{commitId:t.useContext(c),children:n})}export{v as AppRouterScrollTarget};
@@ -0,0 +1 @@
1
+ import{t as e}from"./navigation-BCDRWdBm.js";import{t}from"./chevron-left-CkBJG8E2.js";import{t as n}from"./house-l1u9dUbj.js";import{jsx as r,jsxs as i}from"react/jsx-runtime";var a={netflix:`Netflix`,spotify:`Spotify`};function o(){let o=e().split(`/`).filter(Boolean)[0]??``,s=a[o]??o;return i(`nav`,{className:`app-top-nav`,"aria-label":`App navigation`,children:[i(`a`,{className:`app-top-nav__home`,href:`/`,children:[r(t,{size:16,strokeWidth:2.5}),r(n,{size:14,strokeWidth:2.2}),r(`span`,{children:`Home`})]}),r(`span`,{className:`app-top-nav__separator`,"aria-hidden":`true`,children:`/`}),r(`span`,{className:`app-top-nav__app`,children:s})]})}export{o as AppTopNav};
@@ -0,0 +1 @@
1
+ function e(e,t){return t?e===t||e.startsWith(t+`/`):!1}function t(t,n){return e(t,n)?t.slice(n.length)||`/`:t}function n(t,n){return!n||e(t,n)?t:t===`/`?n:`${n}${t}`}export{t as n,n as t};
@@ -0,0 +1 @@
1
+ import{createContext as e,createElement as t,forwardRef as n,useContext as r}from"react";var i=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),a=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),o=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),s=e=>{let t=o(e);return t.charAt(0).toUpperCase()+t.slice(1)},c={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},l=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},u=e({}),d=()=>r(u),f=n(({color:e,size:n,strokeWidth:r,absoluteStrokeWidth:a,className:o=``,children:s,iconNode:u,...f},p)=>{let{size:m=24,strokeWidth:h=2,absoluteStrokeWidth:g=!1,color:_=`currentColor`,className:v=``}=d()??{},y=a??g?Number(r??h)*24/Number(n??m):r??h;return t(`svg`,{ref:p,...c,width:n??m??c.width,height:n??m??c.height,stroke:e??_,strokeWidth:y,className:i(`lucide`,v,o),...!s&&!l(f)&&{"aria-hidden":`true`},...f},[...u.map(([e,n])=>t(e,n)),...Array.isArray(s)?s:[s]])}),p=(e,r)=>{let o=n(({className:n,...o},c)=>t(f,{ref:c,iconNode:r,className:i(`lucide-${a(s(e))}`,`lucide-${e}`,n),...o}));return o.displayName=s(e),o},m=p(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]);export{p as n,m as t};
@@ -0,0 +1 @@
1
+ ._backdrop_ttlmb_1{z-index:150;color:#fff;-webkit-backdrop-filter:blur(.25rem);backdrop-filter:blur(.25rem);background:#000000c2;place-items:start center;padding:2.5rem 1rem;animation:.18s _backdrop-in_ttlmb_1;display:grid;position:fixed;inset:0;overflow-y:auto}._modal_ttlmb_15{--profile-manager-red:#e50914;background:radial-gradient(circle at 90% 0,#e5091429,#0000 18rem),#181818;border:1px solid #3f3f3f;border-radius:.65rem;width:min(45rem,100vw - 2rem);padding:2.5rem;animation:.22s cubic-bezier(.16,1,.3,1) _modal-in_ttlmb_1;position:relative;box-shadow:0 1.5rem 5rem #000000b8}._close_ttlmb_29{z-index:5;color:#fff;cursor:pointer;background:#181818;border:0;border-radius:50%;place-items:center;width:2.25rem;height:2.25rem;padding:0;display:grid;position:absolute;top:1rem;right:1rem}._close_ttlmb_29:hover{background:#303030}._close_ttlmb_29:focus-visible{outline-offset:2px;outline:2px solid #fff}._close_ttlmb_29 svg{width:1.35rem}._header_ttlmb_59{align-items:center;gap:.9rem;margin-bottom:1.5rem;display:flex}._icon_ttlmb_66{background:var(--profile-manager-red);border-radius:.45rem;flex:none;place-items:center;width:2.8rem;height:2.8rem;display:grid}._icon_ttlmb_66 svg{width:1.35rem}._header_ttlmb_59 h2{margin:0 0 .25rem;font-size:1.75rem}._header_ttlmb_59 p{color:#aaa;margin:0;font-size:.82rem}._list_ttlmb_91{border:1px solid #3b3b3b;border-radius:.4rem;display:grid;overflow:hidden}._row_ttlmb_98{background:#232323;border-bottom:1px solid #383838;grid-template-columns:auto 1fr auto auto;align-items:center;gap:.75rem;min-height:4.8rem;padding:.8rem;display:grid}._row_ttlmb_98:last-child{border-bottom:0}._avatar_ttlmb_113{border-radius:.35rem;flex:none;place-items:center;width:3rem;height:3rem;font-size:1.2rem;font-weight:850;display:grid;box-shadow:inset 0 -.35rem #00000021}._name_ttlmb_125{flex-direction:column;gap:.18rem;min-width:0;display:flex}._name_ttlmb_125 b{text-overflow:ellipsis;overflow:hidden}._name_ttlmb_125 small{color:#999;font-size:.7rem}._iconButton_ttlmb_142{color:#fff;cursor:pointer;background:0 0;border:1px solid #565656;border-radius:50%;place-items:center;width:2.35rem;height:2.35rem;padding:0;display:grid}._iconButton_ttlmb_142:hover{background:#343434;border-color:#fff}:is(._iconButton_ttlmb_142:focus-visible,._button_ttlmb_161:focus-visible){outline-offset:2px;outline:2px solid #fff}._iconButton_ttlmb_142 svg{width:1rem}._iconButtonDanger_ttlmb_170{color:#ff8d92}._iconButton_ttlmb_142:disabled{opacity:.3;cursor:not-allowed}._editor_ttlmb_179{background:#292929;border-bottom:1px solid #383838;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:1rem;padding:1rem;display:grid}._editorFields_ttlmb_189{gap:.4rem;min-width:0;display:grid}._editorFields_ttlmb_189>label,._addForm_ttlmb_196 label{font-size:.72rem;font-weight:750}._editorFields_ttlmb_189>input,._addForm_ttlmb_196>div>input{color:#fff;background:#181818;border:1px solid #686868;border-radius:.25rem;outline:0;width:100%;height:2.6rem;padding:0 .75rem}._editorFields_ttlmb_189>input:focus,._addForm_ttlmb_196 input:focus{border-color:#fff}._editorActions_ttlmb_218{align-self:center;gap:.45rem;display:flex}._button_ttlmb_161{color:#fff;cursor:pointer;background:#303030;border:1px solid #5a5a5a;border-radius:.25rem;justify-content:center;align-items:center;gap:.4rem;min-height:2.45rem;padding:.45rem .8rem;font-size:.75rem;font-weight:750;display:inline-flex}._button_ttlmb_161 svg{width:1rem}._buttonPrimary_ttlmb_244{border-color:var(--profile-manager-red);background:var(--profile-manager-red)}._buttonQuiet_ttlmb_249{background:0 0}._buttonDanger_ttlmb_253{background:#8f2026;border-color:#8f2026}._button_ttlmb_161:disabled{opacity:.55;cursor:wait}._colorPicker_ttlmb_263{border:0;min-width:0;margin:.25rem 0 0;padding:0}._colorPicker_ttlmb_263 legend{color:#aaa;margin-bottom:.35rem;font-size:.67rem}._colorPicker_ttlmb_263>div{flex-wrap:wrap;gap:.42rem;display:flex}._colorPicker_ttlmb_263 label{cursor:pointer;display:block}._colorPicker_ttlmb_263 input{opacity:0;width:1px;height:1px;position:absolute}._colorPicker_ttlmb_263 span{border:2px solid #0000;border-radius:50%;width:1.45rem;height:1.45rem;display:block;box-shadow:0 0 0 1px #5c5c5c}._colorPicker_ttlmb_263 input:focus-visible+span{outline-offset:2px;outline:2px solid #fff}._colorPicker_ttlmb_263 input:checked+span{border-color:#fff;box-shadow:0 0 0 2px #fff}._deleteConfirm_ttlmb_313{background:#75272b2b;border:1px solid #75272b;border-radius:.35rem;grid-template-columns:1fr auto auto;align-items:center;gap:.55rem;margin-top:.8rem;padding:.8rem;display:grid}._deleteConfirm_ttlmb_313>span{flex-direction:column;gap:.2rem;display:flex}._deleteConfirm_ttlmb_313 small{color:#aaa;font-size:.7rem}._addForm_ttlmb_196{grid-template-columns:minmax(10rem,1fr) 1fr auto;align-items:end;gap:1rem;margin-top:1.25rem;display:grid}._addForm_ttlmb_196>div:first-child{gap:.4rem;display:grid}._error_ttlmb_349{color:#ff777d;margin:.8rem 0 0;font-size:.78rem}._spin_ttlmb_355{animation:.9s linear infinite _spin_ttlmb_355}@keyframes _backdrop-in_ttlmb_1{0%{opacity:0}}@keyframes _modal-in_ttlmb_1{0%{opacity:0;transform:scale(.96)translateY(1rem)}}@keyframes _spin_ttlmb_355{to{transform:rotate(360deg)}}@media (max-width:700px){._backdrop_ttlmb_1{place-items:stretch stretch;padding:0}._modal_ttlmb_15{width:100%;min-height:100svh;padding:4.5rem 1rem max(2rem, env(safe-area-inset-bottom));border:0;border-radius:0}._editor_ttlmb_179{grid-template-columns:auto minmax(0,1fr)}._editorActions_ttlmb_218{grid-column:1/-1;justify-content:flex-end}._deleteConfirm_ttlmb_313,._addForm_ttlmb_196{grid-template-columns:1fr}._deleteConfirm_ttlmb_313 ._button_ttlmb_161{width:100%}._close_ttlmb_29{top:max(.8rem, env(safe-area-inset-top));position:fixed;right:.8rem}}
@@ -0,0 +1,31 @@
1
+ import{n as e}from"./rolldown-runtime-DSjMdhoD.js";import{jsx as t,jsxs as n}from"react/jsx-runtime";import"react";var r=e({default:()=>c}),i={container:{fontFamily:`system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"`,height:`100vh`,display:`flex`,alignItems:`center`,justifyContent:`center`},card:{marginTop:`-32px`,maxWidth:`325px`,padding:`32px 28px`,textAlign:`left`},icon:{marginBottom:`24px`},title:{fontSize:`24px`,fontWeight:500,letterSpacing:`-0.02em`,lineHeight:`32px`,margin:`0 0 12px 0`,color:`var(--next-error-title)`},message:{fontSize:`14px`,fontWeight:400,lineHeight:`21px`,margin:`0 0 20px 0`,color:`var(--next-error-message)`},form:{margin:0},buttonGroup:{display:`flex`,gap:`8px`,alignItems:`center`},button:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,height:`32px`,padding:`0 12px`,fontSize:`14px`,fontWeight:500,lineHeight:`20px`,borderRadius:`6px`,cursor:`pointer`,color:`var(--next-error-btn-text)`,background:`var(--next-error-btn-bg)`,border:`var(--next-error-btn-border)`},buttonSecondary:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,height:`32px`,padding:`0 12px`,fontSize:`14px`,fontWeight:500,lineHeight:`20px`,borderRadius:`6px`,cursor:`pointer`,color:`var(--next-error-btn-secondary-text)`,background:`var(--next-error-btn-secondary-bg)`,border:`var(--next-error-btn-secondary-border)`},digestFooter:{position:`fixed`,bottom:`32px`,left:`0`,right:`0`,textAlign:`center`,fontFamily:`ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace`,fontSize:`12px`,lineHeight:`18px`,fontWeight:400,margin:`0`,color:`var(--next-error-digest)`}},a=`
2
+ :root {
3
+ --next-error-bg: #fff;
4
+ --next-error-text: #171717;
5
+ --next-error-title: #171717;
6
+ --next-error-message: #171717;
7
+ --next-error-digest: #666666;
8
+ --next-error-btn-text: #fff;
9
+ --next-error-btn-bg: #171717;
10
+ --next-error-btn-border: none;
11
+ --next-error-btn-secondary-text: #171717;
12
+ --next-error-btn-secondary-bg: transparent;
13
+ --next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);
14
+ }
15
+ @media (prefers-color-scheme: dark) {
16
+ :root {
17
+ --next-error-bg: #0a0a0a;
18
+ --next-error-text: #ededed;
19
+ --next-error-title: #ededed;
20
+ --next-error-message: #ededed;
21
+ --next-error-digest: #a0a0a0;
22
+ --next-error-btn-text: #0a0a0a;
23
+ --next-error-btn-bg: #ededed;
24
+ --next-error-btn-border: none;
25
+ --next-error-btn-secondary-text: #ededed;
26
+ --next-error-btn-secondary-bg: transparent;
27
+ --next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);
28
+ }
29
+ }
30
+ body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }
31
+ `.replace(/\n\s*/g,``);function o(){return t(`svg`,{width:`32`,height:`32`,viewBox:`-0.2 -1.5 32 32`,fill:`none`,style:i.icon,children:t(`path`,{d:`M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z`,fill:`var(--next-error-title)`})})}function s(){}function c({error:e}){let r=e?.digest,c=!!r,l=c?`A server error occurred. Reload to try again.`:`Reload to try again, or go back.`;return n(`html`,{id:`__next_error__`,children:[t(`head`,{children:t(`style`,{dangerouslySetInnerHTML:{__html:a}})}),n(`body`,{children:[t(`div`,{style:i.container,children:n(`div`,{style:i.card,children:[t(o,{}),t(`h1`,{style:i.title,children:`This page couldn’t load`}),t(`p`,{style:i.message,children:l}),n(`div`,{style:i.buttonGroup,children:[t(`form`,{style:i.form,children:t(`button`,{type:`submit`,style:i.button,children:`Reload`})}),!c&&t(`button`,{type:`button`,style:i.buttonSecondary,onClick:s,children:`Back`})]})]})}),r&&n(`p`,{style:i.digestFooter,children:[`ERROR `,r]})]})]})}export{r as n,c as t};
@@ -0,0 +1 @@
1
+ import{r as e,t}from"./app-router-context-QPmikWPX.js";import{c as n}from"./navigation-context-state-BnWorqxb.js";import{n as r,t as i}from"./navigation-errors-BRIEcp79.js";import"./navigation-server-CCLiCOcy.js";import{t as a}from"./default-global-error-B62cHCkh.js";import{n as o}from"./base-path-DtcGyvwb.js";import{Fragment as s,jsx as c,jsxs as l}from"react/jsx-runtime";import*as u from"react";import d from"react";function f(e){return!1}var p=Symbol.for(`vinext.clientNavigationState`),m=Symbol.for(`vinext.clientNavigationRenderContext`),h=``;function g(){return globalThis[p]}function _(){return g()?.cachedPathname??o(window.location.pathname,h)}function v(){return n()?.pathname??`/`}function y(e){let t=g();return t?(t.listeners.add(e),()=>t.listeners.delete(e)):()=>{}}function b(){let e=globalThis;return e[m]??=u.createContext(null)}function x(){e();let t=u.useContext(b()),n=u.useSyncExternalStore(y,_,v);return t&&(g()?.navigationSnapshotActiveCount??0)>0?t.pathname:n}function S(){if(!t||typeof u.useContext!=`function`)throw Error(`invariant expected app router to be mounted`);let e=u.useContext(t);if(e===null)throw Error(`invariant expected app router to be mounted`);return e}function C(e){return!e||typeof e!=`object`||!(`digest`in e)?null:String(e.digest)}function w(e){let t=C(e);return t===null?!1:t===`NEXT_NOT_FOUND`||t.startsWith(`NEXT_HTTP_ERROR_FALLBACK;`)||t.startsWith(`NEXT_REDIRECT;`)}function T({fallback:e,error:t}){return c(e,{error:Object.assign(Error(t.message),{digest:t.digest,name:t.name??`Error`,stack:t.stack}),reset:()=>globalThis.location?.reload()})}function E(e){return e==null||e===``?null:e}function D(e){return{previousPathname:e.pathname,previousResetKey:E(e.resetKey)}}function O(e,t){let n=E(e.previousResetKey),r=E(t.previousResetKey);return n!==null||r!==null?n!==r:e.previousPathname!==t.previousPathname}function k({redirect:e,redirectType:t,reset:n}){let r=S();return d.useEffect(()=>{d.startTransition(()=>{t===`push`?r.push(e):r.replace(e),n()})},[e,t,n,r]),null}var A=class extends d.Component{constructor(e){super(e),this.state={redirect:null,redirectType:null}}static getDerivedStateFromError(e){if(r(e)){if(`handled`in e&&e.handled)return{redirect:null,redirectType:null};let t=i(e.digest);if(!t)throw e;return{redirect:t.url,redirectType:t.type}}throw e}render(){let{redirect:e,redirectType:t}=this.state;return e!==null&&t!==null?c(k,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null,redirectType:null})}):this.props.children}};function j({children:e}){return c(A,{children:e})}var M=class extends d.Component{constructor(e){super(e),this.state={error:null,...D(e)}}static getDerivedStateFromProps(e,t){let n=D(e);return t.error&&f(t.error.thrownValue)||t.error&&O(n,t)?{error:null,...n}:{error:t.error,...n}}static getDerivedStateFromError(e){if(w(e))throw e;return{error:{thrownValue:e}}}handleDevErrorRecovery=()=>{this.state.error&&this.setState({error:null,...D(this.props)})};componentDidMount(){this.handleDevErrorRecovery}componentWillUnmount(){this.handleDevErrorRecovery}reset=()=>{this.setState({error:null})};render(){if(this.state.error){let e=this.props.fallback;return c(e,{error:this.state.error.thrownValue,reset:this.reset})}return this.props.children}};function N({fallback:e,children:t,resetKey:n}){return c(M,{pathname:x(),resetKey:n,fallback:e,children:t})}function P({fallback:e,children:t}){return c(M,{pathname:x(),fallback:e,isImplicitRootErrorBoundary:e===a,children:t})}var F=class extends d.Component{constructor(e){super(e),this.state={notFound:!1,...D(e)}}static getDerivedStateFromProps(e,t){let n=D(e);return t.notFound&&O(n,t)?{notFound:!1,...n}:{notFound:t.notFound,...n}}static getDerivedStateFromError(e){if(e&&typeof e==`object`&&`digest`in e){let t=String(e.digest);if(t===`NEXT_NOT_FOUND`||t===`NEXT_HTTP_ERROR_FALLBACK;404`)return{notFound:!0}}throw e}render(){return this.state.notFound?l(s,{children:[c(`meta`,{name:`robots`,content:`noindex`}),this.props.fallback]}):this.props.children}};function I({fallback:e,children:t,resetKey:n}){return c(F,{pathname:x(),resetKey:n,fallback:e,children:t})}var L=class extends d.Component{constructor(e){super(e),this.state={forbidden:!1,...D(e)}}static getDerivedStateFromProps(e,t){let n=D(e);return t.forbidden&&O(n,t)?{forbidden:!1,...n}:{forbidden:t.forbidden,...n}}static getDerivedStateFromError(e){if(e&&typeof e==`object`&&`digest`in e&&String(e.digest)===`NEXT_HTTP_ERROR_FALLBACK;403`)return{forbidden:!0};throw e}render(){return this.state.forbidden?l(s,{children:[c(`meta`,{name:`robots`,content:`noindex`}),this.props.fallback]}):this.props.children}};function R({fallback:e,children:t,resetKey:n}){return c(L,{pathname:x(),resetKey:n,fallback:e,children:t})}var z=class extends d.Component{constructor(e){super(e),this.state={unauthorized:!1,...D(e)}}static getDerivedStateFromProps(e,t){let n=D(e);return t.unauthorized&&O(n,t)?{unauthorized:!1,...n}:{unauthorized:t.unauthorized,...n}}static getDerivedStateFromError(e){if(e&&typeof e==`object`&&`digest`in e&&String(e.digest)===`NEXT_HTTP_ERROR_FALLBACK;401`)return{unauthorized:!0};throw e}render(){return this.state.unauthorized?l(s,{children:[c(`meta`,{name:`robots`,content:`noindex`}),this.props.fallback]}):this.props.children}};function B({fallback:e,children:t,resetKey:n}){return c(z,{pathname:x(),resetKey:n,fallback:e,children:t})}d.Component;export{N as ErrorBoundary,R as ForbiddenBoundary,P as GlobalErrorBoundary,I as NotFoundBoundary,j as RedirectBoundary,T as SerializedErrorBoundary,B as UnauthorizedBoundary};