1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,23498,e=>{"use strict";var t=e.i(43476),s=e.i(71645),a=e.i(57688),r=e.i(82791),l=e.i(58897),i=e.i(22016);let n=[{name:"Cross",ms:4100,swatch:"bg-[#06B6D4]"},{name:"F2L",ms:19600,swatch:"bg-[#7C3AED]"},{name:"OLL",ms:6200,swatch:"bg-[#F59E0B]"},{name:"PLL",ms:8500,swatch:"bg-[#10B981]"}],o=[{title:"Save 4.80 seconds in your solve.",subtitle:"Drill F2L pair insertions."},{title:"Cut your 2.4s PLL recognition pause.",subtitle:"Learn the 2-Look PLL."}];function d({className:e}){return(0,t.jsx)("svg",{"aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",className:e,children:(0,t.jsx)("path",{d:"M6.5 6.5v11M17.5 6.5v11M3.5 9.5v5M20.5 9.5v5M6.5 12h11"})})}function c(){return(0,t.jsxs)("figure",{className:"relative mx-auto w-full min-w-0 max-w-sm",children:[(0,t.jsx)("div",{"aria-hidden":"true",className:"pointer-events-none absolute -inset-6 rounded-[2.5rem] bg-gradient-to-br from-[#7C3AED]/25 to-[#06B6D4]/20 blur-2xl"}),(0,t.jsxs)("div",{className:"relative rounded-3xl border border-white/10 bg-[#1E1E2E] px-4 pb-5 pt-3 shadow-2xl sm:px-5",children:[(0,t.jsx)("div",{"aria-hidden":"true",className:"mx-auto mb-4 h-1 w-10 rounded-full bg-[#9E9E9E]/30"}),(0,t.jsx)("div",{className:"flex justify-center",children:(0,t.jsxs)("p",{className:"inline-flex max-w-full items-center gap-2 rounded-full border border-[#7C3AED]/40 bg-[#7C3AED]/15 px-3.5 py-1.5 text-sm font-bold text-[#A78BFA]",children:["Solved with CFOP",(0,t.jsx)("span",{"aria-hidden":"true",className:"size-2 shrink-0 rounded-full bg-[#10B981]"})]})}),(0,t.jsx)("p",{className:"mt-3 text-center text-4xl font-bold tabular-nums text-[#F8FAFC]",children:"38.42s"}),(0,t.jsx)("p",{className:"mt-1 text-center text-sm text-[#94A3B8]",children:"61 moves · 1.6 TPS"}),(0,t.jsx)("div",{"aria-hidden":"true",className:"mt-5 flex h-3 overflow-hidden rounded-md",children:n.map(e=>(0,t.jsx)("span",{className:`h-full basis-0 ${e.swatch}`,style:{flexGrow:e.ms}},e.name))}),(0,t.jsx)("ul",{"aria-label":"Phase splits",className:"mt-2 flex flex-wrap gap-x-3 gap-y-1",children:n.map(e=>(0,t.jsxs)("li",{className:"flex items-center gap-1 text-xs text-[#94A3B8]",children:[(0,t.jsx)("span",{"aria-hidden":"true",className:`size-2.5 shrink-0 rounded-[3px] ${e.swatch}`}),`${e.name} ${(e.ms/1e3).toFixed(1)}s`]},e.name))}),(0,t.jsx)("p",{className:"mt-5 text-sm font-bold text-[#F8FAFC]",children:"Coach suggestions"}),(0,t.jsx)("ul",{className:"mt-2 space-y-2",children:o.map(e=>(0,t.jsxs)("li",{className:"flex items-center gap-3 rounded-[14px] bg-[#06B6D4]/10 px-3.5 py-3",children:[(0,t.jsx)(d,{className:"hidden size-6 shrink-0 text-[#06B6D4] min-[360px]:block"}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-sm font-bold text-[#F8FAFC]",children:e.title}),(0,t.jsx)("p",{className:"text-xs text-[#94A3B8]",children:e.subt
1itle})]})]},e.title))})]}),(0,t.jsx)("figcaption",{className:"relative mt-4 text-center text-xs text-zinc-400",children:"Sample post-solve summary with illustrative data"})]})}let m=[{title:"Method detection",body:"Recognizes CFOP, Roux, ZZ, Petrus, and Beginner (LBL) solves, including hybrids like LBL â Roux.",dot:"bg-[#06B6D4]"},{title:"Phase splits",body:"A color-coded bar shows how long each phase took, so you can see where the time went.",dot:"bg-[#7C3AED]"},{title:"Coach suggestions",body:"Tips on what slowed you down, each linked to a drill or lesson that targets it. Free on three solves every seven days, unlimited with Pro.",dot:"bg-[#F59E0B]"}],x=[{title:"Solve breakdown",body:"Method, time, TPS, and phase splits for your analyzed solves. Never metered."},{title:"Coach suggestions",body:"On three solves every seven days, with their drill and lesson links."},{title:"Learn, practice, solve",body:"Every lesson, practice mode, and solver, plus the camera scanner."},{title:"Timer & stats",body:"Sessions, history, averages, and progress charts."}],h=[{title:"Unlimited coaching",body:"Coach suggestions, with their drill and lesson links, on every analyzed solve."},{title:"Deep stats",body:"Methods Used, Average Phase Splits, and Coach insights, built from the analyses on your device â including solves from before you upgraded."},{title:"Ad-free",body:"No full-screen ads or ad cards, and hint unlocks are instant."},{title:"Restore anytime",body:"Pro works offline. On a new device, restore it from Settings with the same Google Play account."}],u=[{title:"Two-Shot Camera Scanner",desc:"Show three faces, flip the cube, then show the other three. Colors are read on-device, and any unsure sticker is flagged for a quick check.",icon:"ð·",gradient:"from-orange-500/20 to-red-500/20"},{title:"6 Powerful Solvers",desc:"Solve a scanned or entered cube with Beginner, CFOP, Roux, ZZ, or Petrus, phase by phase, or get a computer-optimized Kociemba solution in about 22 moves.",icon:"ð§©",gradient:"from-red-500/20 to-pink-500/20"},{title:"Learn From Scratch",desc:"26 lessons take you from notation to your first solve and on through CFOP, Roux, ZZ, and Petrus, with interactive 3D demonstrations.",icon:"ð",gradient:"from-pink-500/20 to-purple-500/20"},{title:"Algorithm Practice",desc:"Drill F2L, OLL, PLL, and CMLL cases plus block and EOLine trainers. A âDue todayâ spaced-repetition queue brings back weak cases, including ones the coach flags.",icon:"ð¯",gradient:"from-purple-500/20 to-blue-500/20"},{title:"Interactive 3D Puzzle",desc:"Swipe or flick layers on a realistic cube with slice moves, undo/redo, Ghost Mode, and guided hints that can switch solvers mid-solve.",icon:"ð§",gradient:"from-blue-500/20 to-cyan-500/20"},{title:"Timer, Sessions & Stats",desc:"15-second WCA-style inspection, named sessions, Ao5/Ao12, and charts for solve times, personal bests, and turn speed. Untimed scrambled solves save to Free Play.",icon:"ð",gradient:"from-cyan-500/20 to-teal-500/20"}];function p({points:e,checkClassName:s}){return(0,t.jsx)("ul",{className:"mt-5 space-y-4",children:e.map(e=>(0,t.jsxs)("li",{className:"flex gap-3 text-sm leading-relaxed",children:[(0,t.jsx)("span",{"aria-hidden":"true",className:s,children:"â"}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"font-semibold text-white",children:e.title}),(0,t.jsx)("p",{className:"text-zinc-400",children:e.body})]})]},e.title))})}function g(){return(0,t.jsx)("section",{id:"cubexpert","aria-labelledby":"cubexpert-title",className:"py-16 px-6",children:(0,t.jsx)("div",{className:"max-w-6xl mx-auto",children:(0,t.jsxs)("div",{className:"relative p-8 md:p-12 rounded-3xl bg-gradient-to-br from-orange-500/10 via-red-500/10 to-pink-500/10 border border-white/5 overflow-hidden",children:[(0,t.jsx)("div",{className:"absolute top-0 right-0 w-64 h-64 bg-orange-500/20 rounded-full blur-[100px]"}),(0,t.jsx)("div",{className:"absolute bottom-0 left-0 w-48 h-48 bg-pink-500/15 rounded-full blur-[80px]"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("div",{className:"text-center mb-10",children:[(0,t.jsxs)("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-gradient-to-r from-orange-500/10 to-pink-500/10 border border-orange-500/20 text-orange-400 text-xs font-medium uppercase tracking-wider mb-6",children:[(0,t.jsx)("span",{className:"w-2 h-2 bg-green-500 rounded-full motion-safe:animate-pulse"}),(0,t.jsx)("span",{children:"v2.0.3 â Solve Analyzer & CubeXpert Pro"})]}),(0,t.jsx)("h2",{id:"cubexpert-title",className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:(0,t.jsx)("span",{className:"bg-clip-text text-transparent bg-gradient-to-r from-[#7C3AED] to-[#06B6D4]",children:"CubeXpert"})}),(0,t.jsx)("p",{className:"max-w-2xl mx-auto text-lg text-zinc-400 leading-relaxed",children:"Whether you are a complete beginner or an aspiring speedcuber, CubeXpert helps you learn, practice, and improve with interactive 3D guidance, six s
1olvers, and two-shot camera scanning â and now the Solve Analyzer breaks down your solves and tells you what to practice next."})]}),(0,t.jsx)("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4 mb-12",children:(0,t.jsxs)("a",{href:"https://play.google.com/store/apps/details?id=com.visionflutter.cubexpert",target:"_blank",rel:"noopener noreferrer",className:"w-full sm:w-auto px-8 py-4 bg-gradient-to-r from-orange-600 to-pink-600 hover:from-orange-500 hover:to-pink-500 text-white font-semibold rounded-full transition-all shadow-[0_0_40px_-10px_rgba(249,115,22,0.5)] hover:shadow-[0_0_60px_-10px_rgba(249,115,22,0.7)] text-center flex items-center justify-center gap-2",children:[(0,t.jsx)("svg",{className:"w-5 h-5",viewBox:"0 0 24 24",fill:"currentColor",children:(0,t.jsx)("path",{d:"M3.609 1.814L13.792 12 3.61 22.186a.996.996 0 0 1-.61-.92V2.734a1 1 0 0 1 .609-.92zm10.89 10.893l2.302 2.302-10.937 6.333 8.635-8.635zm3.199-3.198l2.807 1.626a1 1 0 0 1 0 1.73l-2.808 1.626L15.206 12l2.492-2.491zM5.864 2.658L16.8 8.99l-2.302 2.302-8.634-8.634z"})}),"Get it on Google Play"]})}),(0,t.jsxs)("div",{className:"grid items-center gap-10 lg:grid-cols-2 lg:gap-12 mb-16",children:[(0,t.jsxs)("div",{className:"min-w-0 max-w-xl mx-auto lg:mx-0",children:[(0,t.jsx)("p",{className:"text-xs font-semibold uppercase tracking-widest text-cyan-300 mb-3",children:"New in 2.0"}),(0,t.jsx)("h3",{className:"text-2xl md:text-3xl font-bold tracking-tight mb-4",children:"Solve Analyzer"}),(0,t.jsx)("p",{className:"text-zinc-400 leading-relaxed mb-6",children:"Finish a scrambled solve on the virtual cube and CubeXpert breaks it down: the method it recognizes, your time and turns per second, and how long each phase took. It all runs on your device, and you can switch it off in Settings."}),(0,t.jsx)("ul",{className:"space-y-4",children:m.map(e=>(0,t.jsxs)("li",{className:"flex gap-3",children:[(0,t.jsx)("span",{"aria-hidden":"true",className:`mt-2 size-2 shrink-0 rounded-full ${e.dot}`}),(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"font-semibold text-white",children:e.title}),(0,t.jsx)("p",{className:"text-sm text-zinc-400 leading-relaxed",children:e.body})]})]},e.title))})]}),(0,t.jsx)(c,{})]}),(0,t.jsxs)("div",{className:"grid gap-6 lg:grid-cols-2",children:[(0,t.jsxs)("div",{className:"min-w-0 p-6 md:p-8 rounded-2xl bg-zinc-900/50 border border-white/10",children:[(0,t.jsx)("h3",{className:"text-xl font-semibold",children:"Free forever"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-zinc-400",children:"Not a trial, and nothing expires."}),(0,t.jsx)(p,{points:x,checkClassName:"text-green-500"})]}),(0,t.jsxs)("div",{className:"min-w-0 p-6 md:p-8 rounded-2xl bg-gradient-to-br from-[#7C3AED]/20 to-[#06B6D4]/10 border border-[#7C3AED]/30",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-2",children:[(0,t.jsx)("h3",{className:"text-xl font-semibold",children:"CubeXpert Pro"}),(0,t.jsx)("span",{className:"px-2.5 py-1 rounded-full bg-[#F59E0B]/15 text-[#FBBF24] text-xs font-medium uppercase tracking-wider",children:"One-time purchase"})]}),(0,t.jsx)("p",{className:"mt-1 text-sm text-zinc-400",children:"Pay once. No subscription, no renewal."}),(0,t.jsx)(p,{points:h,checkClassName:"text-[#A78BFA]"})]})]}),(0,t.jsxs)("p",{className:"mt-4 mb-12 text-center text-sm text-zinc-400",children:["Pro is sold through Google Play at the price shown at checkout."," ",(0,t.jsx)(i.default,{href:"/terms-of-service#purchases",className:"font-medium text-cyan-300 underline decoration-cyan-300/40 underline-offset-4 rounded-sm transition-colors hover:text-cyan-200 hover:decoration-cyan-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-cyan-300/70 focus-visible:ring-offset-2 focus-visible:ring-offset-black",children:"Read the purchase terms"})]}),(0,t.jsx)("h3",{className:"sr-only",children:"More in CubeXpert"}),(0,t.jsxs)("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6 mb-12",children:[u.map(e=>(0,t.jsxs)("div",{className:`p-6 rounded-2xl bg-gradient-to-br ${e.gradient} border border-white/5 hover:border-white/10 transition-all hover:scale-[1.02]`,children:[(0,t.jsx)("div",{"aria-hidden":"true",className:"text-3xl mb-4",children:e.icon}),(0,t.jsx)("h4",{className:"text-lg font-semibold mb-2",children:e.title}),(0,t.jsx)("p",{className:"text-zinc-400 text-sm leading-relaxed",children:e.desc})]},e.title)),(0,t.jsx)("div",{className:"col-span-full text-center mt-4",children:(0,t.jsxs)("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-zinc-900/50 border border-white/10 text-zinc-400 text-sm",children:[(0,t.jsx)("span",{className:"w-1.5 h-1.5 bg-green-500 rounded-full"}),"Privacy Focused: No account required ⢠Solves analyzed on-device ⢠Local data storage"]})})]}),(0,t.jsx)("div",{className:"flex items-center justify-center",children:(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("div",{className:"absolute -inset-4 bg-gradient-to-r from-orange-500/30 to-pink-500/30 rounded-full blur-2xl opacity-50"}),(0,t.jsx)(a.default,{src:"/cubexpert.png",alt:"CubeXpert",width:180,height:180,className:"relative drop-shadow-2xl"})]})})]})]})})})}
1function b(){let[e,i]=(0,s.useState)(!1),[n,o]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let e=()=>{let e=window.location.hash;if(e){let t=document.querySelector(e);t&&t.scrollIntoView({behavior:"smooth"})}};return setTimeout(e,100),window.addEventListener("hashchange",e),()=>window.removeEventListener("hashchange",e)},[]);let d=(e,t)=>{navigator.clipboard.writeText(e),"biometric"===t?(i(!0),setTimeout(()=>i(!1),2e3)):(o(!0),setTimeout(()=>o(!1),2e3))};return(0,t.jsxs)("div",{className:"min-h-screen bg-black text-white selection:bg-purple-500 selection:text-white overflow-x-hidden",children:[(0,t.jsxs)("div",{className:"fixed inset-0 z-0",children:[(0,t.jsx)("div",{className:"absolute top-[-10%] left-[-10%] w-[40%] h-[40%] bg-purple-900/30 rounded-full blur-[120px]"}),(0,t.jsx)("div",{className:"absolute bottom-[-10%] right-[-10%] w-[40%] h-[40%] bg-blue-900/20 rounded-full blur-[120px]"}),(0,t.jsx)("div",{className:"absolute top-[40%] right-[20%] w-[30%] h-[30%] bg-pink-900/10 rounded-full blur-[100px]"})]}),(0,t.jsxs)("div",{className:"relative z-10 font-sans",children:[(0,t.jsx)(r.default,{}),(0,t.jsxs)("section",{className:"pt-16 pb-12 px-6 text-center",children:[(0,t.jsxs)("h1",{className:"text-4xl md:text-6xl font-bold tracking-tight mb-4",children:["Our ",(0,t.jsx)("span",{className:"bg-clip-text text-transparent bg-gradient-to-r from-blue-400 to-purple-500",children:"Solutions"})]}),(0,t.jsx)("p",{className:"text-lg text-zinc-400 max-w-2xl mx-auto",children:"Premium Flutter plugins and mobile applications crafted with passion."})]}),(0,t.jsx)(g,{}),(0,t.jsx)("section",{id:"anti-2048",className:"py-16 px-6",children:(0,t.jsx)("div",{className:"max-w-6xl mx-auto",children:(0,t.jsxs)("div",{className:"relative p-8 md:p-12 rounded-3xl bg-gradient-to-br from-violet-500/10 via-purple-500/10 to-fuchsia-500/10 border border-white/5 overflow-hidden",children:[(0,t.jsx)("div",{className:"absolute top-0 right-0 w-64 h-64 bg-violet-500/20 rounded-full blur-[100px]"}),(0,t.jsx)("div",{className:"absolute bottom-0 left-0 w-48 h-48 bg-fuchsia-500/15 rounded-full blur-[80px]"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("div",{className:"text-center mb-10",children:[(0,t.jsxs)("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-gradient-to-r from-violet-500/10 to-fuchsia-500/10 border border-violet-500/20 text-violet-300 text-xs font-medium uppercase tracking-wider mb-6",children:[(0,t.jsx)("span",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"}),(0,t.jsx)("span",{children:"v1.0.1 â Symmetric Annihilation"})]}),(0,t.jsx)("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:(0,t.jsx)("span",{className:"bg-clip-text text-transparent bg-gradient-to-r from-violet-400 via-purple-400 to-fuchsia-400",children:"Anti-2048"})}),(0,t.jsx)("p",{className:"max-w-2xl mx-auto text-lg text-zinc-400 leading-relaxed",children:"The 2048 you know, inverted. Slide tiles across a mirror line so matching pairs annihilate each other, and race to clear the board. A cerebral puzzle of symmetry and subtractionânow available on Android."})]}),(0,t.jsx)("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4 mb-12",children:(0,t.jsxs)("a",{href:"https://play.google.com/store/apps/details?id=com.visionflutter.anti2048",target:"_blank",className:"w-full sm:w-auto px-8 py-4 bg-gradient-to-r from-violet-600 to-fuchsia-600 hover:from-violet-500 hover:to-fuchsia-500 text-white font-semibold rounded-full transition-all shadow-[0_0_40px_-10px_rgba(139,92,246,0.5)] hover:shadow-[0_0_60px_-10px_rgba(139,92,246,0.7)] text-center flex items-center justify-center gap-2",children:[(0,t.jsx)("svg",{className:"w-5 h-5",viewBox:"0 0 24 24",fill:"currentColor",children:(0,t.jsx)("path",{d:"M3.609 1.814L13.792 12 3.61 22.186a.996.996 0 0 1-.61-.92V2.734a1 1 0 0 1 .609-.92zm10.89 10.893l2.302 2.302-10.937 6.333 8.635-8.635zm3.199-3.198l2.807 1.626a1 1 0 0 1 0 1.73l-2.808 1.626L15.206 12l2.492-2.491zM5.864 2.658L16.8 8.99l-2.302 2.302-8.634-8.634z"})}),"Get it on Google Play"]})}),(0,t.jsxs)("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6 mb-12",children:[[{title:"Symmetric Annihilation",desc:"Slide tiles across a mirror axis so matching pairs cancel out. It is 2048 in reverse: clear the board instead of building it up.",icon:"ðª",gradient:"from-violet-500/20 to-purple-500/20"},{title:"Three Board Sizes",desc:"Play 4Ã4 Classic for quick duels, 6Ã6 Strategist for deeper planning, or 8Ã8 Marathon for long campaigns.",icon:"ð¯",gradient:"from-purple-500/20 to-fuchsia-500/20"},{title:"Beat the Clock",desc:"Switch to Timer Mode for high-pressure runs, with the option to watch a rewarded ad for +60 seconds when you need it.",icon:"â±ï¸",gradient:"from-fuchsia-500/20 to-pink-500/20"}
1,{title:"Global Leaderboards",desc:"Compete on Google Play Games leaderboards for fewest moves and most tiles annihilated. Sign-in is optional.",icon:"ð",gradient:"from-indigo-500/20 to-violet-500/20"},{title:"Hints & Undo",desc:"Stuck? Take a hint or undo a move to find the path forward â or revive a lost game to keep your run alive.",icon:"ð¡",gradient:"from-violet-500/20 to-indigo-500/20"},{title:"Local History & Stats",desc:"Every game is recorded on-device with moves, outcome, and max tile, so you can track your progress over time.",icon:"ð",gradient:"from-purple-500/20 to-indigo-500/20"}].map((e,s)=>(0,t.jsxs)("div",{className:`p-6 rounded-2xl bg-gradient-to-br ${e.gradient} border border-white/5 hover:border-white/10 transition-all hover:scale-[1.02]`,children:[(0,t.jsx)("div",{className:"text-3xl mb-4",children:e.icon}),(0,t.jsx)("h4",{className:"text-lg font-semibold mb-2",children:e.title}),(0,t.jsx)("p",{className:"text-zinc-400 text-sm leading-relaxed",children:e.desc})]},s)),(0,t.jsx)("div",{className:"col-span-full text-center mt-4",children:(0,t.jsxs)("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-zinc-900/50 border border-white/10 text-zinc-400 text-sm",children:[(0,t.jsx)("span",{className:"w-1.5 h-1.5 bg-green-500 rounded-full"}),"Privacy Focused: No account required ⢠Local data storage ⢠Optional Play Games sign-in"]})})]}),(0,t.jsx)("div",{className:"flex items-center justify-center",children:(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("div",{className:"absolute -inset-4 bg-gradient-to-r from-violet-500/30 to-fuchsia-500/30 rounded-full blur-2xl opacity-50"}),(0,t.jsx)(a.default,{src:"/anti2048.png",alt:"Anti-2048",width:180,height:180,className:"relative drop-shadow-2xl rounded-3xl"})]})})]})]})})}),(0,t.jsx)("section",{id:"spillway",className:"py-16 px-6",children:(0,t.jsx)("div",{className:"max-w-6xl mx-auto",children:(0,t.jsxs)("div",{className:"relative p-8 md:p-12 rounded-3xl bg-gradient-to-br from-amber-500/10 via-orange-500/10 to-teal-500/10 border border-white/5 overflow-hidden",children:[(0,t.jsx)("div",{className:"absolute top-0 right-0 w-64 h-64 bg-amber-500/20 rounded-full blur-[100px]"}),(0,t.jsx)("div",{className:"absolute bottom-0 left-0 w-48 h-48 bg-teal-500/15 rounded-full blur-[80px]"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("div",{className:"text-center mb-10",children:[(0,t.jsxs)("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-gradient-to-r from-amber-500/10 to-teal-500/10 border border-amber-500/20 text-amber-300 text-xs font-medium uppercase tracking-wider mb-6",children:[(0,t.jsx)("span",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"}),(0,t.jsx)("span",{children:"v1.0.0 â Sandpile Cascades"})]}),(0,t.jsx)("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:(0,t.jsx)("span",{className:"bg-clip-text text-transparent bg-gradient-to-r from-amber-300 via-amber-400 to-teal-300",children:"Spillway"})}),(0,t.jsx)("p",{className:"max-w-2xl mx-auto text-lg text-zinc-400 leading-relaxed",children:"A minimalist sandpile puzzle about chain reactions. Tap to drop grains of sand, watch overloaded cells topple into their neighbours, and ride the cascade to sculpt the board into the target shapeâbefore you run out of drops. Now available on Android."})]}),(0,t.jsx)("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4 mb-12",children:(0,t.jsxs)("a",{href:"https://play.google.com/store/apps/details?id=com.visionflutter.spillway",target:"_blank",className:"w-full sm:w-auto px-8 py-4 bg-gradient-to-r from-amber-600 to-teal-600 hover:from-amber-500 hover:to-teal-500 text-white font-semibold rounded-full transition-all shadow-[0_0_40px_-10px_rgba(245,158,11,0.5)] hover:shadow-[0_0_60px_-10px_rgba(245,158,11,0.7)] text-center flex items-center justify-center gap-2",children:[(0,t.jsx)("svg",{className:"w-5 h-5",viewBox:"0 0 24 24",fill:"currentColor",children:(0,t.jsx)("path",{d:"M3.609 1.814L13.792 12 3.61 22.186a.996.996 0 0 1-.61-.92V2.734a1 1 0 0 1 .609-.92zm10.89 10.893l2.302 2.302-10.937 6.333 8.635-8.635zm3.199-3.198l2.807 1.626a1 1 0 0 1 0 1.73l-2.808 1.626L15.206 12l2.492-2.491zM5.864 2.658L16.8 8.99l-2.302 2.302-8.634-8.634z"})}),"Get it on Google Play"]})}),(0,t.jsxs)("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6 mb-12",children:[[{title:"Topple & Cascade",desc:"Tap to drop a grain. When a cell reaches four grains it spills to its four neighbours, and each spill can tip the next â chain the cascade to match the target shape before your drops run out.",icon:"ð",gradient:"from-
1amber-500/20 to-orange-500/20"},{title:"A Daily for Everyone",desc:"One deterministic puzzle every player in the world shares each day. Build a streak and chase the fastest solve time.",icon:"ð ",gradient:"from-orange-500/20 to-yellow-500/20"},{title:"Endless Practice",desc:"Start with hand-crafted tutorial levels, then play an endless stream of generated puzzles that ramp in difficulty as you improve.",icon:"â¾ï¸",gradient:"from-yellow-500/20 to-teal-500/20"},{title:"Lives & Rewarded Boosts",desc:"Five lives that refill over time. Out of lives? Watch an optional rewarded ad to top back up and keep your run going.",icon:"â¤ï¸",gradient:"from-teal-500/20 to-emerald-500/20"},{title:"Global Leaderboards",desc:"Compete on Google Play Games for the fastest daily solves and longest streaks. Sign-in is optional.",icon:"ð",gradient:"from-emerald-500/20 to-cyan-500/20"},{title:"Streak Reminders",desc:"Optional on-device notifications nudge you before a streak expires or when your lives refill. Scheduled locally â nothing tracked.",icon:"ð",gradient:"from-cyan-500/20 to-amber-500/20"}].map((e,s)=>(0,t.jsxs)("div",{className:`p-6 rounded-2xl bg-gradient-to-br ${e.gradient} border border-white/5 hover:border-white/10 transition-all hover:scale-[1.02]`,children:[(0,t.jsx)("div",{className:"text-3xl mb-4",children:e.icon}),(0,t.jsx)("h4",{className:"text-lg font-semibold mb-2",children:e.title}),(0,t.jsx)("p",{className:"text-zinc-400 text-sm leading-relaxed",children:e.desc})]},s)),(0,t.jsx)("div",{className:"col-span-full text-center mt-4",children:(0,t.jsxs)("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-zinc-900/50 border border-white/10 text-zinc-400 text-sm",children:[(0,t.jsx)("span",{className:"w-1.5 h-1.5 bg-green-500 rounded-full"}),"Privacy Focused: No account required ⢠Local on-device data ⢠Optional Play Games sign-in"]})})]}),(0,t.jsx)("div",{className:"flex items-center justify-center",children:(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("div",{className:"absolute -inset-4 bg-gradient-to-r from-amber-500/30 to-teal-500/30 rounded-full blur-2xl opacity-50"}),(0,t.jsx)(a.default,{src:"/spillway.png",alt:"Spillway",width:180,height:180,className:"relative drop-shadow-2xl rounded-3xl"})]})})]})]})})}),(0,t.jsx)("section",{id:"animated-cards-carousel",className:"py-16 px-6",children:(0,t.jsx)("div",{className:"max-w-6xl mx-auto",children:(0,t.jsxs)("div",{className:"relative p-8 md:p-12 rounded-3xl bg-gradient-to-br from-teal-500/10 via-cyan-500/10 to-blue-500/10 border border-white/5 overflow-hidden",children:[(0,t.jsx)("div",{className:"absolute top-0 right-0 w-64 h-64 bg-cyan-500/20 rounded-full blur-[100px]"}),(0,t.jsx)("div",{className:"absolute bottom-0 left-0 w-48 h-48 bg-teal-500/15 rounded-full blur-[80px]"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsxs)("div",{className:"text-center mb-10",children:[(0,t.jsxs)("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-gradient-to-r from-teal-500/10 to-cyan-500/10 border border-cyan-500/20 text-cyan-400 text-xs font-medium uppercase tracking-wider mb-6",children:[(0,t.jsx)("span",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"}),(0,t.jsx)("span",{children:"v1.0.2 â All Platforms"})]}),(0,t.jsx)("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4",children:(0,t.jsx)("span",{className:"bg-clip-text text-transparent bg-gradient-to-r from-teal-400 via-cyan-400 to-blue-500",children:"Animated Cards Carousel"})}),(0,t.jsx)("p",{className:"max-w-2xl mx-auto text-lg text-zinc-400 leading-relaxed",children:"Create dynamic and customizable animated carousels for Flutter apps. Perfect for displaying portfolios, galleries, or widget collections with smooth transitions and visual appeal."})]}),(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4 mb-12",children:[(0,t.jsx)("a",{href:"https://pub.dev/packages/animated_cards_carousel",target:"_blank",className:"w-full sm:w-auto px-8 py-4 bg-gradient-to-r from-teal-600 to-cyan-600 hover:from-teal-500 hover:to-cyan-500 text-white font-semibold rounded-full transition-all shadow-[0_0_40px_-10px_rgba(20,184,166,0.5)] hover:shadow-[0_0_60px_-10px_rgba(20,184,166,0.7)] text-center",children:"View on Pub.dev"}),(0,t.jsxs)("button",{onClick:()=>d("flutter pub add animated_cards_carousel","carousel"),className:"w-full sm:w-auto px-6 py-4 bg-zinc-900/80 hover:bg-zinc-800 text-zinc-300 font-mono text-sm rounded-full border border-zinc-700 transition-all flex items-center justify-center gap-3 group",children:[(0,t.jsx)("span",{className:"text-zinc-500",children:"$"}),"flutter pub add animated_cards_carousel",(0,t.jsx)("span",{className:"text-zinc-500 group-hover:text-cyan-400 transition-colors",children:n?"â":"â"})]})]}),(0,t.jsx)("div",{className:"grid md:grid-cols-2 lg:grid-cols-4 gap-6 mb-12",children:[{title:"Smooth Animations",desc:"Cards transition with fluid translation, scaling, and opacity effects.",icon:"â¨",gradient:"from-teal-500/20 to-cyan-500/20"},{title:"Customizable Ratio",desc:"Adjustable card aspect ratio with golden ratio default.",icon:"ð",gradient:"from-cyan-500/20 to-blue-500/20"},{title:"Flexible Margins",desc:"Control spacing between cards in portrait and landscape modes.",icon:"ð",gradient:"from-blue-500/20 to-indigo-500/20"},{title:"Any Widget",desc:"Display any Flutter widget as carousel cards.",icon:"ð§©",gradient:"from-indigo-500/20 to-purple-500/20"}].map((e,s)=>(0,t.jsxs)("div",{className:`p-6 rounded-2xl bg-gradient-to-br ${e.gradient} border border-white/5 hover:border-white/10 transition-all hover:scale-[1.02]`,children:[(0,t.jsx)("div",{className:"text-3xl mb-4",children:e.icon}),(0,t.jsx)("h4",{className:"text-lg font-semibold mb-2",children:e.title}),(0,t.jsx)("p",{className:"text-zinc-400 text-sm leading-relaxed",children:e.desc})]},s))}),(0,t.jsxs)("div",{className:"relative group max-w-3xl mx-auto",children:[(0,t.jsx)("div",{className:"absolute -inset-1 bg-gradient-to-r from-teal-600 to-cyan-600 rounded-xl blur opacity-25 group-hover:opacity-40 transition duration-1000"}),(0,t.jsxs)("div",{className:"relative rounded-xl bg-[#0a0a0f] border border-white/10 p-6 shadow-2xl overflow-x-auto",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("div",{className:"w-3 h-3 rounded-full bg-red-500/60"}),(0,t.jsx)("div",{className:"w-3 h-3 rounded-full bg-yellow-500/60"}),(0,t.jsx)("div",{className:"w-3 h-3 rounded-full bg-green-500/60"})]}),(0,t.jsx)("span",{className:"text-xs text-zinc-600",children:"main.dart"})]}),(0,t.jsx)("pre",{className:"font-mono text-sm overflow-x-auto text-zinc-300 max-w-full w-0 min-w-full",children:(0,t.jsx)("code",{children:`AnimatedCardsCarousel( 2 cardAspectRatio: 1.61803399, // Golden ratio 3 cardMargin: 16.0, 4 cardsList: List.generate( 5 10, 6 (index) => Card( 7 color: Colors.primaries[index % Colors.primaries.length], 8 child: Center( 9 child: Text('Card \${index + 1}'), 10 ), 11 ), 12 ), 13)`})})]})]}),(0,t.jsx)("div",{className:"mt-10 text-center",children:(0,t.jsxs)("a",{href:"https://github.com/chamodanethra/animated_cards_carousel",target:"_blank",className:"inline-flex items-center gap-2 px-6 py-3 bg-zinc-900 hover:bg-zinc-800 text-zinc-300 font-semibold rounded-full border border-zinc-700 transition-all",children:[(0,t.jsx)("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{d:"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"})}),"View on GitHub"]})})]})]})})}),(0,t.jsx)("section",{id:"biometric-signature",className:"py-16 px-6",children:(0,t.jsxs)("div",{className:"max-w-6xl mx-auto",children:[(0,t.jsxs)("div",{className:"text-center mb-12",children:[(0,t.jsxs)("div",{className:"inline-flex items-center gap-2 px-4 py-2 rounded-full bg-gradient-to-r from-blue-500/10 to-purple-500/10 border border-blue-500/20 text-blue-400 text-xs font-medium uppercase tracking-wider mb-6",children:[(0,t.jsx)("span",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"}),(0,t.jsx)("span",{children:"v13.1.0 â iOS ⢠Android ⢠macOS ⢠Windows"})]}),(0,t.jsx)("h2",{className:"text-3xl md:text-5xl font-bold tracking-tight mb-4",children:(0,t.jsx)("span",{className:"bg-clip-text text-transparent bg-gradient-to-r from-blue-400 via-purple-500 to-pink-500",children:"Biometric Signature"})}),(0,t.jsxs)("p",{className:"max-w-2xl mx-auto text-lg text-zinc-400 leading-relaxed",children:["Create cryptographic signatures using device biometrics with keys stored in",(0,t.jsx)("span",{className:"text-white font-medium",children:" Secure Enclave"})," (iOS/macOS),",(0,t.jsx)("span",{className:"text-white font-medium",children:" StrongBox/Keystore"})," (Android), and",(0,t.jsx)("span",{className:"text-white font-medium",children:" TPM"})," (Windows)."]})]}),(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4 mb-16",children:[(0,t.jsx)("a",{href:"https://pub.dev/packages/biometric_signature",target:"_blank",className:"w-full sm:w-auto px-8 py-4 bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-500 hover:to-purple-500 text-white font-semibold rounded-full transition-all shadow-[0_0_40px_-10px_rgba(139,92,246,0.5)] hover:shadow-[0_0_60px_-10px_rgba(139,92,246,0.7)] text-center",children:"View on Pub.dev"}),(0,t.jsxs)("button",{onClick:()=>d("flutter pub add biometric_signature","biometric"),className:"w-full sm:w-auto px-6 py-4 bg-zinc-900/80 hover:bg-zinc-800 text-zinc-300 font-mono text-sm rounded-full border border-zinc-700 transition-all flex items-center justify-center gap-3 group",children:[(0,t.jsx)("span",{className:"text-zinc-500",children:"$"}),"flutter pub add biometric_signature",(0,t.jsx)("span",{className:"text-zinc-500 group-hover:text-blue-400 transition-colors",children:e?"â":"â"})]})]}),(0,t.jsx)("div",{className:"py-8 px-6 mb-16 rounded-2xl border border-white/5 bg-zinc-900/20 backdrop-blur-sm",children:(0,t.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-8 text-center",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-3xl font-bold bg-clip-text text-transparent bg-gradient-to-r from-blue-400 to-purple-400",children:"RSA + EC"}),(0,t.jsx)("div",{className:"text-sm text-zinc-500 mt-1",children:"Key Algorithms"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-3xl font-bold bg-clip-text text-transparent bg-gradient-to-r from-purple-400 to-pink-400",children:"4"}),(0,t.jsx)("div",{className:"text-sm text-zinc-500 mt-1",children:"Platforms Supported"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-3xl font-bold bg-clip-text text-transparent bg-gradient-to-r from-pink-400 to-red-400",children:"ECIES"}),(0,t.jsx)("div",{className:"text-sm text-zinc-500 mt-1",children:"Hybrid Encryption"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-3xl font-bold bg-clip-text text-transparent bg-gradient-to-r from-green-400 to-blue-400",children:"100%"}),(0,t.jsx)("div",{className:"text-sm text-zinc-500 mt-1",children:"Hardware Secured"})]})]})}),(0,t.jsxs)("div",{className:"mb-16",children:[(0,t.jsx)("h3",{className:"text-2xl font-bold text-center mb-8",children:"Bank-Grade Security. Developer-Friendly API."}),(0,t.jsx)("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6",children:[{title:"Hardware Security",desc:"Keys are generated and stored in Secure Enclave (iOS/macOS) and StrongBox/Keystore (Android). Private keys never leave the secure hardware.",icon:"ð",gradient:"from-purple-500/20 to-blue-500/20"},{title:"Cryptographic Signatures",desc:"Create RSA-2048 or ECDSA (P-256) signatures that your backend can independently verify. True proof of identity.",icon:"âï¸",gradient:"from-blue-500/20 to-cyan-500/20"},{title:"ECIES Decryption",desc:"Decrypt sensitive data using hybrid ECIES encryption with X9.63 key derivation, SHA-256, and AES-GCM.",icon:"ð",gradient:"from-cyan-500/20 to-green-500/20"},{title:"Biometric Authentication",desc:"Seamless integration with FaceID, TouchID, and Android BiometricPrompt. Native UI on every platform.",icon:"ð",gradient:"from-green-500/20 to-yellow-500/20"},{title:"Key Invalidation",desc:"Optionally invalidate keys when biometric enrollment changes. Detect if fingerprints or Face ID have been modified.",icon:"ð«",gradient:"from-yellow-500/20 to-orange-500/20"},{title:"Device Credential Fallback",desc:"Allow PIN, pattern, or password fallback on Android when biometrics are unavailable.",icon:"ð¢",gradient:"from-orange-500/20 to-red-500/20"}].map((e,s)=>(0,t.jsxs)("div",{className:`p-8 rounded-2xl bg-gradient-to-br ${e.gradient} border border-white/5 hover:border-white/10 transition-all hover:scale-[1.02] group`,children:[(0,t.jsx)("div",{className:"text-4xl mb-6",children:e.icon}),(0,t.jsx)("h4",{className:"text-xl font-semibold mb-3",children:e.title}),(0,t.jsx)("p",{className:"text-zinc-400 leading-relaxed text-sm",children:e.desc})]},s))})]}),(0,t.jsxs)("div",{className:"mb-16",children:[(0,t.jsx)("h3",{className:"text-2xl font-bold text-center mb-8",children:"Multi-Platform Support"}),(0,t.jsxs)("div",{className:"grid md:grid-cols-2 lg:grid-cols-4 gap-6",children:[(0,t.jsxs)("div",{className:"relative p-6 rounded-2xl bg-gradient-to-b from-zinc-800/50 to-zinc-900/50 border border-white/5 overflow-hidden group",children:[(0,t.jsx)("div",{className:"absolute top-0 right-0 w-32 h-32 bg-blue-500/10 rounded-full blur-3xl"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("div",{className:"w-14 h-14 bg-gradient-to-br from-gray-700 to-gray-900 rounded-2xl flex items-center justify-center text-2xl mb-5 shadow-lg",children:"ð"}),(0,t.jsx)("h4",{className:"text-xl font-bold mb-3",children:"iOS"}),(0,t.jsxs)("ul",{className:"space-y-2 text-sm text-zinc-400",children:[(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," Secure Enclave"]}),(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," Face ID & Touch ID"]}),(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," RSA & ECDSA signing"]}),(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," Keychain storage"]})]})]})]}),(0,t.jsxs)("div",{className:"relative p-6 rounded-2xl bg-gradient-to-b from-zinc-800/50 to-zinc-900/50 border border-white/5 overflow-hidden group",children:[(0,t.jsx)("div",{className:"absolute top-0 right-0 w-32 h-32 bg-green-500/10 rounded-full blur-3xl"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("div",{className:"w-14 h-14 bg-gradient-to-br from-green-600 to-green-800 rounded-2xl flex items-center justify-center text-2xl mb-5 shadow-lg",children:"ð¤"}),(0,t.jsx)("h4",{className:"text-xl font-bold mb-3",children:"Android"}),(0,t.jsxs)("ul",{className:"space-y-2 text-sm text-zinc-400",children:[(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," StrongBox / Keystore"]}),(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," BiometricPrompt API"]}),(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," Device credential fallback"]}),(0,t.jsxs)("li",{className:"flex items-center gap-2",c
13hildren:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," Custom UI options"]})]})]})]}),(0,t.jsxs)("div",{className:"relative p-6 rounded-2xl bg-gradient-to-b from-zinc-800/50 to-zinc-900/50 border border-white/5 overflow-hidden group",children:[(0,t.jsx)("div",{className:"absolute top-0 right-0 w-32 h-32 bg-purple-500/10 rounded-full blur-3xl"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("div",{className:"w-14 h-14 bg-gradient-to-br from-gray-600 to-gray-800 rounded-2xl flex items-center justify-center text-2xl mb-5 shadow-lg",children:"ð»"}),(0,t.jsx)("h4",{className:"text-xl font-bold mb-3",children:"macOS"}),(0,t.jsxs)("ul",{className:"space-y-2 text-sm text-zinc-400",children:[(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," Secure Enclave"]}),(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," Touch ID support"]}),(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," ECDSA P-256 keys"]}),(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," Keychain integration"]})]})]})]}),(0,t.jsxs)("div",{className:"relative p-6 rounded-2xl bg-gradient-to-b from-zinc-800/50 to-zinc-900/50 border border-white/5 overflow-hidden group",children:[(0,t.jsx)("div",{className:"absolute top-0 right-0 w-32 h-32 bg-cyan-500/10 rounded-full blur-3xl"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("div",{className:"w-14 h-14 bg-gradient-to-br from-cyan-600 to-blue-800 rounded-2xl flex items-center justify-center text-2xl mb-5 shadow-lg",children:"ðª"}),(0,t.jsx)("h4",{className:"text-xl font-bold mb-3",children:"Windows"}),(0,t.jsxs)("ul",{className:"space-y-2 text-sm text-zinc-400",children:[(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," TPM hardware backing"]}),(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," Windows Hello"]}),(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," ECDSA P-256 signing"]}),(0,t.jsxs)("li",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-green-500",children:"â"})," PIN fallback support"]})]})]})]})]})]}),(0,t.jsxs)("div",{className:"mb-16",children:[(0,t.jsx)("h3",{className:"text-2xl font-bold text-center mb-8",children:"Simple Workflow"}),(0,t.jsx)("div",{className:"grid md:grid-cols-4 gap-6",children:[{step:"01",title:"Create Keys",desc:"Generate hardware-backed key pair with biometric protection.",gradient:"from-blue-400 to-blue-600"},{step:"02",title:"Register Public Key",desc:"Send the public key to your backend for future verification.",gradient:"from-purple-400 to-purple-600"},{step:"03",title:"Sign Data",desc:"User authenticates, hardware signs the payload.",gradient:"from-pink-400 to-pink-600"},{step:"04",title:"Verify Signature",desc:"Backend verifies the signature using the stored public key.",gradient:"from-green-400 to-green-600"}].map((e,s)=>(0,t.jsxs)("div",{className:"relative",children:[s<3&&(0,t.jsx)("div",{className:"hidden md:block absolute top-12 left-[60%] w-[80%] h-0.5 bg-gradient-to-r from-zinc-700 to-transparent"}),(0,t.jsxs)("div",{className:"p-6 rounded-2xl bg-zinc-900/50 border border-white/5 relative z-10",children:[(0,t.jsx)("div",{className:`text-4xl font-bold mb-4 bg-clip-text text-transparent bg-gradient-to-r ${e.gradient}`,children:e.step}),(0,t.jsx)("h4",{className:"text-lg font-semibold mb-2",children:e.title}),(0,t.jsx)("p",{className:"text-sm text-zinc-500",children:e.desc})]})]},s))})]}),(0,t.jsxs)("div",{className:"grid lg:grid-cols-2 gap-12 items-start",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-2xl md:text-3xl font-bold mb-6",children:"Clean, Intuitive API"}),(0,t.jsx)("p",{className:"text-lg text-zinc-400 mb-8",children:"Integrate secure biometric signatures in minutes with our well-documented API. Full platform customization when you need it."}),(0,t.jsxs)("ul",{className:"space-y-4 text-zinc-300",children:[(0,t.jsxs)("li",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-8 h-8 rounded-full bg-gradient-to-r from-green-500/20 to-green-600/20 text-green-500 flex items-center justify-center text-sm",children:"â"}
13),(0,t.jsx)("span",{children:"Type-safe Dart API with null safety"})]}),(0,t.jsxs)("li",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-8 h-8 rounded-full bg-gradient-to-r from-green-500/20 to-green-600/20 text-green-500 flex items-center justify-center text-sm",children:"â"}),(0,t.jsx)("span",{children:"Platform-specific configuration options"})]}),(0,t.jsxs)("li",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-8 h-8 rounded-full bg-gradient-to-r from-green-500/20 to-green-600/20 text-green-500 flex items-center justify-center text-sm",children:"â"}),(0,t.jsx)("span",{children:"Comprehensive error handling"})]}),(0,t.jsxs)("li",{className:"flex items-center gap-3",children:[(0,t.jsx)("div",{className:"w-8 h-8 rounded-full bg-gradient-to-r from-green-500/20 to-green-600/20 text-green-500 flex items-center justify-center text-sm",children:"â"}),(0,t.jsx)("span",{children:"Backend examples in Node.js, Python & Go"})]})]})]}),(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{className:"relative group",children:[(0,t.jsx)("div",{className:"absolute -inset-1 bg-gradient-to-r from-blue-600 to-purple-600 rounded-xl blur opacity-25 group-hover:opacity-40 transition duration-1000"}),(0,t.jsxs)("div",{className:"relative rounded-xl bg-[#0a0a0f] border border-white/10 p-6 shadow-2xl overflow-x-auto",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("div",{className:"w-3 h-3 rounded-full bg-red-500/60"}),(0,t.jsx)("div",{className:"w-3 h-3 rounded-full bg-yellow-500/60"}),(0,t.jsx)("div",{className:"w-3 h-3 rounded-full bg-green-500/60"})]}),(0,t.jsx)("span",{className:"text-xs text-zinc-600",children:"create_keys.dart"})]}),(0,t.jsx)("pre",{className:"font-mono text-sm overflow-x-auto text-zinc-300 max-w-full w-0 min-w-full",children:(0,t.jsx)("code",{children:`// Create biometric-protected keys 14final result = await BiometricSignature() 15 .createKeys( 16 enforceBiometric: true, 17 promptMessage: "Authenticate to register", 18 ); 19 20if (result != null) { 21 // Send public key to your backend 22 await api.registerPublicKey(result.publicKey); 23}`})})]})]}),(0,t.jsxs)("div",{className:"relative group",children:[(0,t.jsx)("div",{className:"absolute -inset-1 bg-gradient-to-r from-purple-600 to-pink-600 rounded-xl blur opacity-25 group-hover:opacity-40 transition duration-1000"}),(0,t.jsxs)("div",{className:"relative rounded-xl bg-[#0a0a0f] border border-white/10 p-6 shadow-2xl overflow-x-auto",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("div",{className:"w-3 h-3 rounded-full bg-red-500/60"}),(0,t.jsx)("div",{className:"w-3 h-3 rounded-full bg-yellow-500/60"}),(0,t.jsx)("div",{className:"w-3 h-3 rounded-full bg-green-500/60"})]}),(0,t.jsx)("span",{className:"text-xs text-zinc-600",children:"sign_data.dart"})]}),(0,t.jsx)("pre",{className:"font-mono text-sm overflow-x-auto text-zinc-300 max-w-full w-0 min-w-full",children:(0,t.jsx)("code",{children:`// Sign a challenge from your server 24final signature = await BiometricSignature() 25 .createSignature( 26 options: SignatureOptions( 27 payload: serverChallenge, 28 promptMessage: "Confirm transaction", 29 ), 30 ); 31 32// Send signature to backend for verification`})})]})]})]})]}),(0,t.jsx)("div",{className:"mt-16 text-center",children:(0,t.jsxs)("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4",children:[(0,t.jsx)("a",{href:"https://pub.dev/packages/biometric_signature",target:"_blank",className:"w-full sm:w-auto px-8 py-4 bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-500 hover:to-purple-500 text-white font-semibold rounded-full transition-all shadow-[0_0_40px_-10px_rgba(139,92,246,0.5)]",children:"Read Documentation"}),(0,t.jsx)("a",{href:"https://github.com/chamodanethra/biometric_signature/tree/master/example",target:"_blank",className:"w-full sm:w-auto px-8 py-4 bg-zinc-900 hover:bg-zinc-800 text-zinc-300 font-semibold rounded-full border border-zinc-700 transition-all",children:"View Example App"})]})})]})}),(0,t.jsx)(l.default,{})]})]})}e.s(["default",()=>b],23498)}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.