@@ -562,29 +562,64 @@ export function RewardsPage() {
562562 < TabsContent value = "web" >
563563 { renderTaskList ( webTasks ) }
564564 </ TabsContent >
565- < TabsContent value = "mobile" >
565+ < TabsContent
566+ value = "mobile"
567+ className = "animate-fade-in-up"
568+ >
566569 { mobileShareTask ? (
567- < div className = "flex items-center gap-4 rounded-lg px-3 py-3" >
568- < div className = "shrink-0 rounded-xl border border-border bg-white p-1.5" >
569- < QRCodeSVG
570- value = { MOBILE_SHARE_QR_URL }
571- size = { 56 }
572- />
573- </ div >
574- < div className = "min-w-0 flex-1" >
575- < div className = "flex items-center gap-1.5" >
576- < span className = "text-[13px] font-medium text-text-primary" >
570+ < div
571+ className = { cn (
572+ "group flex flex-col items-center gap-4" ,
573+ "rounded-[20px] border border-[var(--color-border-subtle)] bg-surface-1" ,
574+ "px-6 py-6 shadow-[var(--shadow-refine)]" ,
575+ "transition-[box-shadow] duration-300 ease-out" ,
576+ "hover:shadow-[var(--shadow-elevated)]" ,
577+ ) }
578+ >
579+ < div className = "flex flex-col items-center gap-1.5 text-center" >
580+ < div className = "flex items-center gap-2" >
581+ < span className = "text-[14px] font-semibold leading-tight text-text-primary" >
577582 { t ( "rewards.mobileQrHint" ) }
578583 </ span >
579- < span className = "text-[11px] font-semibold leading-none tabular-nums text-[var(--color-success)]" >
584+ < span
585+ className = { cn (
586+ "inline-flex items-center rounded-full px-2.5 py-0.5" ,
587+ "text-[11px] font-semibold leading-none tabular-nums" ,
588+ "bg-[var(--color-success-muted)] text-[var(--color-success)]" ,
589+ "ring-1 ring-inset ring-[var(--color-success-border)]" ,
590+ ) }
591+ >
580592 +{ formatRewardAmount ( mobileShareTask . reward ) } { " " }
581593 { t ( "layout.sidebar.balanceUnit" ) }
582594 </ span >
583595 </ div >
584- < p className = "mt-0.5 text-[11px] text-text-muted" >
596+ < p className = "max-w-[320px] text-[12px] leading-relaxed text-text-muted" >
585597 { t ( "rewards.mobileQrDesc" ) }
586598 </ p >
587599 </ div >
600+
601+ < div
602+ className = { cn (
603+ "animate-breathe rounded-[20px] border bg-white p-4" ,
604+ "transition-transform duration-300 ease-out" ,
605+ "group-hover:scale-[1.02]" ,
606+ ) }
607+ >
608+ < QRCodeSVG
609+ value = { MOBILE_SHARE_QR_URL }
610+ size = { 168 }
611+ level = "H"
612+ bgColor = "#ffffff"
613+ fgColor = "#1c1f23"
614+ imageSettings = { {
615+ src : "/favicon/apple-touch-icon.png" ,
616+ height : 38 ,
617+ width : 38 ,
618+ excavate : true ,
619+ } }
620+ />
621+ </ div >
622+
588623 < button
589624 type = "button"
590625 disabled = {
@@ -596,10 +631,17 @@ export function RewardsPage() {
596631 void handleTaskAction ( mobileShareTask )
597632 }
598633 className = { cn (
599- "inline-flex h-[26px] shrink-0 items-center justify-center gap-2 rounded-full px-3 text-[11px] font-medium leading-none transition-all" ,
634+ "inline-flex h-[36px] items-center justify-center gap-2 rounded-full px-5" ,
635+ "text-[12px] font-semibold leading-none" ,
636+ "transition-all duration-200 active:scale-[0.98]" ,
600637 mobileShareTask . isClaimed
601638 ? "bg-surface-2 text-text-muted"
602- : "border border-[var(--color-brand-primary)]/30 text-[var(--color-brand-primary)] hover:bg-[var(--color-brand-primary)]/5" ,
639+ : cn (
640+ "bg-[var(--color-accent)] text-white" ,
641+ "shadow-[var(--shadow-card)]" ,
642+ "hover:bg-[var(--color-accent-hover)] hover:shadow-[var(--shadow-refine)]" ,
643+ "disabled:cursor-not-allowed disabled:bg-[var(--color-accent)]/60" ,
644+ ) ,
603645 ) }
604646 >
605647 { claimingTaskId === mobileShareTask . id ? (
0 commit comments