From e4dfc13c321070be01d2dda8b1dc6a6b50dbb2c0 Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 1 Mar 2026 08:57:04 +0800 Subject: [PATCH 01/24] feat: add new Cubao Free font --- apps/web/app/fonts/Cubao_Free_Narrow.otf | Bin 0 -> 61816 bytes apps/web/app/fonts/Cubao_Free_Regular.otf | Bin 0 -> 61832 bytes apps/web/app/fonts/Cubao_Free_Wide.otf | Bin 0 -> 63440 bytes apps/web/app/layout.tsx | 21 ++++++++++++++++++++- apps/web/components/ExpandedPinView.tsx | 2 +- apps/web/components/PinDetailsCard.tsx | 3 +-- 6 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 apps/web/app/fonts/Cubao_Free_Narrow.otf create mode 100644 apps/web/app/fonts/Cubao_Free_Regular.otf create mode 100644 apps/web/app/fonts/Cubao_Free_Wide.otf diff --git a/apps/web/app/fonts/Cubao_Free_Narrow.otf b/apps/web/app/fonts/Cubao_Free_Narrow.otf new file mode 100644 index 0000000000000000000000000000000000000000..c3a0681fc3c5d07159bcc46744a322dd7ad682a6 GIT binary patch literal 61816 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 OWf8M^>fism_WuCN&PZ_p literal 0 HcmV?d00001 diff --git a/apps/web/app/fonts/Cubao_Free_Regular.otf b/apps/web/app/fonts/Cubao_Free_Regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..e6ee13bb44eeec61486c0acad8211ef608395e70 GIT binary patch literal 61832 zcmeFa34EPZwfDbII;E#29YPBSN_!}S1=`X!P>}JI4iHEO+c1hi+UB&8HmOP4QiscN z1PPOha)YQ`MG^I?n2X?5^f-c&dO<;%XTm5mq$O?l|NC3(IZaZEsPFr^_x|6H-pkYd zJkQ>1uX(M#_I^$l*48cz!$Khp2-9ZIo0lE^-8=Ik9Cca<-ybt?UhVu(?D6AF2+ywx zA>N`R%;9VR-*_r3oH#hE5G2;3VUU-`OYgX5twtWac;Dqq!!|Q%v z{~ldz3!~$w%dRL}%YAt$(^LM(xU#kJ)8UM=Z|Sz|3WKC(>3>&-03KY!z_RJ7%fldg zT~zjC?l1O#QxAvfDd3fbK?8hHA;3dDNdC7dKX*BN&1P>Hkd22k*V?e2SHd}zwU)Jl zzf&+Sb;|bnXNJb4okA+NB<->=B;1>{2ZSl9qm%Z)Fgo>_q&+B%O#LQl59aySq&+mG z%l1#&!^3W6bxC`dQFHejl(Z|t9y33hv`2>Y%pWA}QDMl;jY+#QEIe#26s86ag@9H3 z=j~J&8@`^j%R)u?ZPFeP&Ipet?SWz6)VWD}P{^jPP1=Kb{^z7UH0)Y7GHDMFQ_H3& z?Oi5bRJI{$SA;`mo|LplhFxb~owP@VikY`0?aJ`wnRkcTp((5h8$xqv2rI(MAZ||z z%fbQtJ0naB)5GCmGVNKRjy_FrUG3F&m$v?`j6WhA%>OM7^Va}FJxU|$lKx?K z)0z#<4J%f*W+yE>AUk8)^us4-XVo<~HD+h6u4_)OY;9e0#K8wIt)JRh-+FMJUexhC zfaF?$*D-xI%ma;j{x8epwM*-ovh$kj>$zFXvlaAPWz&Ym^()q{(%5;1bgTW_Ob?Bm z0h-hJ_Xz&mIqd$>yyszIN|?!iCANflO^vPdnwnSCXJ<^EmOUcd2cKkm9v(Jj<`hx- zc2xAAsV`02NjL?hn?nl{a{f;yOwOTKM&a)j`CpOgKdyLEQK{8o{=KpGe(ZKk= zqn0pFp5E&XAC2}NtN3>rqZ@5L&9s*Ga-KBP7B=d;BvgkQ{#}Rxs&8M&HT@vSfOk|P z;pMpXV%C4&5;o$-8sIt2GV)bCS#NHk&hRSrtm91!@3PRdF5zY!mMczV`*5<(aGe$2 zV?A53!yR2o3-rq+t%2GWFqQI4GEF>Pfpb|1?`w>&X)N-8;{Vcp_`fL3MFYhDh5TDf zs|MN3wx>(Dz8&|oU@mVo)5g}rsb(ZC-P~Z$W#ETF<^KeIQ;fTd(E7PJ{Q2QHXqwA2 zX^W(}0$I4cv$XO&De2`q>!a+~C8#hXdIho7G^d4s8?Yt!%PL*`DmKgo|``75^vg)7UzLs{UDUl^a#xHN0su&#;X97Srew7HfIC#>T2=iMHOc z($D$?uHdD)%Ny)wgH^($4o$8zY*&N(GGLW#M%LB{AJ_7)Q?0k|dqjUD&&3OQ9a(T` zoMY&?uj9S=p|_$;IQgCYMH>7|zCrKYN3A!i&ZWQRmtD#;E#unD8~G{uL+PO`J_`;j zxfgu-qY^HXR0$J*<1p7)-&Wvz=+X>pz^B)nHYGe&VC(gen#naob4Y^nG{UANf&M;9 zxRhk#z2toyPj5OZ7Nz$%A(nHDHxg)BiBOav$zaF0G-E#h~#J9iB4cCH$p-OS7m%3gltA{An zyZ(``q&2R;;)%E+J9SBDlz81Y;--P-IxIf#$la2>OWb`Yp7e6MzYdjjduQXtNyRE@ zWxa8^+4ReKTavSLSlElZ(hAp}zEQlynO-{(2R4|!mV8HlUGK%$rSbtJ*kC+T=HVVq zwjf!&)h2|EXE@Ss#Oo4eb>O!Ksy4s{_d_K*)OQ(hdvWRYkR|FB z#a(Yp*4!6Q$K2nDF3m6R(O;`e-eL~XXdY2^0sqzVpCa!Pu$tH>D_a6ieYI{PFvW+w z!R_@IC2S-o>7U0lc?QW({oX3ez80)iggkBEWmGzxz%yC9XqW^P#k#+Z?^hfcvKRL@Ex?rTE@_8L(tUT@_+9cD?!}wv-^>Wz^-?JNmq!rAg55v=a*NdS z9i{AXRsPR?_{6^{OMW{!lys@DmA9BhECaK?o?0>~Q7-Hx<-XZ*8VYxmh(@&1S3OHw z>T)UJz7Wo687wVT^w}|Qdpo>K`cuj}>X}_$SbQmI(>%MAcI~K@rI@d5L-A6UEczs0 zlxWmU>1dpY8n^k37Al8;s7t0(3tN;eXB7YLrL%Gmq3OxKr%ajQ(79Bn~J~Rs36p zB-is!S*zQkQ{OkjDH~PB=a%78bN!drYi!?a%c(C}*W2^Ssn;rOF)Nj7EKF--MTBhF zpZ{iCd(IA#Vv*sZth~ke;5fPelw{=dU2;ylFf8Roy_vS_j%$L~m!uyhxq0@}pXw%{ z$`45oTo=;ZITsW|N*?2#>F%A$b06K8GTjYHUgBO*Z(MS!fa$I`+w*rNkDzgHpY^G) z^v7d_EP0hdE{!f#2}*qw@7|heyKnZD&D&9{^|g50TOHBd^7%`*uh>d_E^$iMS6VZa ztW0wWUtde9-D35IG}RA97io^R=1Q^WxFY zJdZf7-dgkQ=yTk5-pNyYX7ACyl-bL=`mQn@FUcyOMClnu`9D7A+sSNav8_LDJFYt3 zUei3o5hwqV^@VihudOhYRmo<1tI9~$l6 zl2>h&J_Oj6{ujzL!HNU$J}lub|XnN(qDc}vAMT0 zCvWF93i)P9w|To}_VPfPzoL$=4fNMs9`(gZ>2du|q08?GTg|9{9XILYa+|HRT69b3 zrNFURYLFH4b@`D(cD>cUqnlA<(0Yc=Vme1IxF z9-YNw&!q%+=Mk`f%q!(|C2f!uH1mJL&9kXerkCEyTBv_6Iu%T6x7&up@Yvr!Yi>+r zQ(AMD;zj?gz_n4jUD6Qwcu`wgMYyJdo-rAWSG{3uDfw8lKdWG!5!O(l3GZuiX^ zceVoTPj&AoMUE05`{rxCJ^EHtd!@Z&JXADP{^>Eev_kJ+`zlfBma9lC*~>dh1GJix z#fv(%#Hr<`XUeeUyY$ART>2fg-Jza`w$;OHNuZPkEeq!|n`$P~&gEp7f?MK&N9exU zpRb&D#*cT_uF@#?j=i(&oYSJYY4h88gaGM*Lmo53d!$1NYi^byz~xKh^|wOXT4l^J_|$XiDoR-Kze1Y zIfZixAL*=gsbmSgT#=Ot6U`)9>rOKqkCdcI3*o8Wm8{U`aBOr6!nM%p(zyQoEm=#c zUuj(L4*FX?gu^P$EzRwvUHlX;9YgmQ;=?<`of_WZSWl&BqVcn{hrfl6h(5zd!sy=H-)@A3-dQY~l^@!5>tCnTW z4QpCkrnW!~r<)F5IIkw1PEYyA|CcuW7tLLeowsm7ZMLR*_S^+a=JrKDJ0&|~W_Div z(&n{w%^NrwHtn$gqY2ZC7SEkE|G1jDu%$k`q6xaQO?l(xTlkor1c3)+#r@W%Y)fmy zY7UOI!knh&Rm;~mEU!;5uU`ij*Q~Bbh(KA^v6tX@GGf)$hro{-@u8pFEM@<5}7WJGAtJW?@ z#U^K0H!W|-OWA}OGeSvo!_u{_JQ2dHHe~Bi>!!vP`j@%5huMuyt=X2QRjB9&JzU*V zziM55%hW6qOWS0VL3Y_H=Fq^#4Oy(AVVyHwM8ltDb&W!2DVBmsP0rS@URu9=xmr7* z0b&O?HT!g~^uTK=8C}9(c)hZ&)uw7r3^%QlwU|wUuILuJJ7Qu;C%l);df&H9POofQ zkNz|pwxSt?o9kEA*Y%pXh%*^vTQ{t!mx?7^cV;x#e_(AxbG@k_`jgCqBzRVbJWGC} z*LP%>H-WV#t6Q^X)rK^Eje$+e)*2L3NJv@RBHqIM1SY__X=v_C0BSL3?!4*+)wR_N z7c5CnoF{!R`KyWGkVki<7Xs5#Zx)hoSjGI?sdNEnx1at@pMcown7t{F_&w6=K}=xf5sC_)4Jl=v@cBaCp8&Hf-|;#*yE zUmC6k{L`HCOV*c!gT8a_U^c7qInv*{%)>MhGk9$J>fW>u((Yf=JF)<&Y{)KKS=R_- zR-k9itLx+eoAp?3vZR6inIVl$H`cGu);F$e;2f}cEMjM^ZC%;a{8kcM8dl)a@Bo^o zUM-Az1^#ih+O74=RyH;)t6P;`-`pT6GQAtz8k84dtY6s#{~Ncvtwf#s;l%Wd<}RLJ zy<`c7kljB!d*OmPiBT-7Z(iNdVn=Y%Pn>Bz#4&p#E^x9tZN&}T@rrs25#nGnb<@&T zj2JGY>p)=*p1?WVZ*Cie_i?AY0bfE-9B;h=G`E+y;SH1fxjv5}xYkwuyfk*V-Dv}g zVAFTnbjiG#ZtYS9wvv74(ch-^5*gfDPLyhDY&jyGo_;`fK|KjilCJba9XHfm(wGJ$ z-@rJc*;=ZOf>sJ0{g`Hf z?Cs-)>6QX=5-{rP2)q&qj-gS)^vFqyKzg9(e&ii@OyXu=M*t;5sXwo^vawF>pebd za=~ST_O>YtB+slMuhI>ChomT4X;Q~M3lC3{)4cu#J&B~lx$%L?_J_eXro;-{@ z-DcuBzEw^yJ$t)A+>0hbg&tUc;+h+kvJg3C7l|u?jRYeYqVT5>At$|tQ8*?kg2z7* ztwidO1C+*CKcStN^o~>8E6?!Vul4CG8`^G%%H*)%Bzs_zQd+pWsTH44-?+S~8NSKT zmXm60UhE!Y;j1VAYU5NH_ah zf~RB;JBlaWD;{`rsPm?ulSrJGa!82ibxukFEnn4Rn)vBe^^?=9*S1(5)i+2Y2a+TN z_ttdCouCbJ7WRv--rr&x=r{MXOLCZ<=U(`Wzb*HYW(amE5y>XGSGqU%>c|Drc56`v31MAR0~vkZCP;LwRSKcFnBn`EwVi zYfqT#>#-#Z=hdD%Yw_G{^^)wO#S2fVo-=n&cH*oh+)tdGJ+->_goP*9X6dnb)`Hs8 zSs-L*EjT@UQuTs4lhbogW2LoZNp|7lZ1wy_HPv(HOwLv>m|b)7oazO~XOCmtf`wY~ z&9ANnXzfB9nt-aF%eZ-IaG8AqkY^oNT~l3q`sD1q>e>Z@IS-(-vWsRduC1PZa?Py8 z*+nNWUbK*f5Hq6KcRLqgKBv=Ia|AU)||QX zXDvQyvM^i-$&0hrWhz(#BRlsL`em1#Fsr5}%iHvJ7}*mR*36;zadW|b7Ar|d2f~ei zle2SX&7XC=C@8^IH>V)o%K>rf__+(_E}m60IlE-h+}YJ?z`E+ib7zAfJz+P*^At$r z6iep5=VTtxFP%(*3{IG9sDtw?{(rVqLvo-y6ber5!o{`QQ8~4G$y`3HT3o#Z_N3=6 zUN|4%h=LIk`pK}6xll33S7OmKy|V@Sc7>pqMyH)|bLP&f0U&y@;H`ZrqxAnGr~e7U zxBG%4B(;^D)EubGP{Q8vv#&lMNWJ|xU$c^Gy9Vpq8da%Pv-Wzwc0jbxrFyn%^5=4= zF9mdJN~hvmX!|)cRlRk--QVk-pNRLpbnPFjhAtSZX|1rk{$uoBwRrV;8EC4RhgsxL zOY7FN)@-gP6KHL&Tdu|Nxpk}RRyLiRZK=cMQHEH<{kd6|^2GVN77}QJ_zH4Le?z*! zlP@$h0+9ddi%R`BF8K=a3Vr2g_XF7m4q=a=ZwAxhec^-Qrts_Vr|@8SGQ1JChM1k0 zy&*>WWW(9KD~4OcJ>ik?RM=E{7axs}#B1Z#@r&`Q_^cWdY-FC^vmtXdo&swK1 zY)6pq1^fN)(mr=*p1r2`?ut_Ly)@3Me_x*L>isK_#p>3zEv0wY>WXD9zl zg@FS@DwV3-$=7&%H=7EFZW*NAooacKlcsIwljtobIqaiLAKFlV-Y%8bF zvyF@Da3b3hH58|{@v(?P`eI7awG^aJpG)8@?UB6TTn*J$x_R5N-@V z2p!=+!jHlav4ESyRpCFwPs5M-I{RmQTYO3QRrq=MMffFlb9=arFLyVF--XWb`|yYG zU*V2$C)V`Ga96lHTo?Wv?#FuW4G)C-!so)H;i2#_w)9wdJaqwX=t@atpRj+~q=9AW zFIU_@@;75n8ar>dpJe9mHG0CQCww#e^xo--*@>s_yX*c>9XM(7YX`5IF{$dNnXkY5 z&?7!}Q_(P@5JRNUVP$jPJH&H6HZ!p z(sxdJxn^cfQ%!r#uWDYMKYjiO=U+YlSM#?n-145X#qV1(rgnJkA+=Z4{! z%ctLT`W>e~b4J-2d!BK~8K<4`;WMr|<5y=q{oZ%IH~-$RzxRnV$DG-E=C{s#Hr$YsYaYh3oFWu41jTRv{ZjVpegYrAFB+*?w&+|pgV zWxy?CH|@LW`YrnozGch$F`MRg7q`qEQn6)1MNdnNu__nCO`RKK>XytU>%X#obPU;! zT=&J5m&erb`5}fMcNNCO`1L~gWQ@hCa7m0eZVZge6k^S!~;W&!Db$F0qq0&(bGG1}D$-;)z1wSyy2_qic#WK35Mi*8xLhrJww002gsqwydt^TN z4Fa0#%3aB1@F~34K)2KKK1|{?ml;&OwHFnI&^`9r7+N&ND1rNE zd!Zbl;=n*nWRe;H%-GYBYb&pq5>q*brw*yvnEF}_on84D#^hI6Yru7}thKWU1GZ|w zHjUrfUc3Ap$W-J2=v=Zug`wvrBaq~6nu2~nu7428W@WHC881j>Bm^l9jvHQ>%m#Tg3#)`@*xmZ>S zBU2wPU=`>Wz0Hhvm24!+Fq*+;(5R=q%|U|nmW$b`B(f}DKzS0yN7TG5pqVhkz{Tfz z7Nc-^UQ?SFu$CFA`IQtxjc;}^)(kF!N*FdjTol6rLSsO_@bv_@Nd-+g0MW;-f+lQa zRO5RN8f@l(8tX;e3P{&cvyn2*aJLY{Q1D7pu#}+u(fWx_X=vOG?eR?}jc*#-T?L>T z7o=#v*9&=~_$tp#uBBFR8p9B=C&ffztnibM3kM3o7C0Do)3eZ#i(x{QX|rCt%W%#C zA8OF%xFS;&Mdoa`YRWzofrftKB*r@hs!Xkih2JLiyHmzt?)*&&&9L7LRTdFbJ&Npa(&8>@o6%&`a&b^2+aA!_-1b`VqH@s>^GNZIb5}QDUM><_qIvxK2XW z+!&C|CKzKqn3W)e$(kdjc@Ge}f*Ph7(eNdd3#$sDE5?RF#uv3JfhWEYb!I zt{D)6ueynM!YMb1hlGZ?zdLG*hBxyV|q);VVfWzt0q|=3bn(6obHiHCT(}@m0BNV4g-DB*rS9CtBy8NZf#d6Jltp z3g(E!0gKAUZJEEPC(l7++*VU;73MTw)+M$VO17@oTg1(@dAA|DH&N`tLvLlOa+k)i zrx;_}>%?jvw|Q|Eo-G3N_>CIH+K4vB*SF8KNuV}qP9-n#SzS<2P*RYH&(hHpA--lX zA;l#>v?GT%tRVbX9uT0SoqoGA!fZE;*4S;j-PJ&&@nIUe}sEZ3>bY(G?opeWT(;E0;SRz!&%oN%o9-)T4WI&edDPce+MW&>WjHa!; z@|qY|x62zw2(wTk3@@I5`Z_h0;;JjTMtMsl$w|sMWP#>=lF=e3=F#MBP+@=z4p{QK z$N-yjdPzoWsoyglYH1#|;x<8egLIi;*paS+p!dpu;#RRq6va1mYvFHWd*M?tK3&EA zE3iL4sW&g_@~WUcufeZ_aO_f-7X&>XJ~w*y?~Py z&~CLXx;`bXHZ?v~&tL&Dl~yRrW1g{x`w%3`$ARG9E;mA<58W@M;%tG2rvL7Xq(#X)-i&NHWJ3b#)&LzVc6!`(-#QXtgL}a@*Ff zjQ>ZO;t;?IYm>EJp(Ao{I2j)SIO(DCSVoxcW@?HT%Xx{MvF1p%Qt`l7Ce979TVXOt zLxTu8MhqFKw|h%idv$Qhs>?WC?8TurOq~aJ7MT%Ry`N=b(*YG97l26sh|g)*UV3)7 z;0v%{iQ$X)B3?2ylxLGrqdA%w;ERirjH`-(=fTP>#Vz^mU z+MAign)1rxS80f4*J}Y8rsNBsW+p*32nt^oO3mX2RwfdV9u5}>Gskx^ftw-E$}7Hz z5kIC}wwNKcy)$!F3f4SO7Q=6p<$kcMrn_N4Of8#KjNxf{)Nr7te~*a05+z9OAx4do zcguhVPOB&_EZ{8%LZ|Y2dE}Wj?mx_6^;|y2b<-_yw5B<8yW z^8~SIiWqY|V=SPAd0nWmtLY*EvPf4gyl*fTZ6hy=sn6I7`TOS5ECYVf_ynl<4HM?C z1%EHli%$r%h0GaF0}qcVReH8q6VL3*k(AOeR0_fGlQvX*kHu)FVC$H3+dE?TgyO|i zt!QRtu<1hzd&cmQ_WNU4+S%som@m;IwNFP?<-23q38L{g`2s=Y)tcf!q}M3}Htjls zC5(arB*-;i%oP?O4enpjL-Q%$78yMdpan0_z&+lxF{s7uGs4~C&wbo_s%fqe#m6y= z6i*2xpkX3PxkDJP&V!l5bAb^+PMm}ARbm@H371V1LRy`1j7SrYh9ZnK`3Ux?Oc8C> zR05CXFyXR|S^D@7*nhF4Kv#DM z${>8fumq%(;@kkdjG7Y4wyuIpN*4NY@xxqf0#-PtHY%lLsb9prh1(dU=NGFR?8e$; zLgg(6+ThU=fAG}fdpi2UbA_PjVZq(f?3cwTD_lJWR8yq*P-oG6hFN!;@?+wSL$hx-!L2ei(?)T8w;Rqq5cbNIv)P zF+L^<*xJ{^u<9S=ybx^>@O7cLS=hd*30|;S45BVi$(O_jR2ho*cG%kHImU-_4Ny`M z_JHH@DQ-h0FD$bNGlW);rrm>V_tLgYAzP0uAC~JXwHSb*T*?&p;K8^G*j8cmoLIr6 z;*dK!OS};O_?RNMM7^a7?iplQN+ZR7m>4h|o1`Q617kfoq=me6d%==5tC`4qdeAVS z;iLIJKzU{BNmNOWP2`Oed6H;&FO<0sDre?3h{RvxB`SLE>aCHrtsm`GvdVM*yNhFF zwRb|BxblCoK2~{-le*IiSw+t+Rzxam?aIr&l2?ZZz7Dh6GIFY$QKqmTN*67C+fTY> zL1I6twiP$`7gufJyuXRFD;LB5ymdPEl(4lz4|__l2>##Tij=YVz-j}X2`%bvOV+*R zMU;4H-H1v^)K=HqIzLFO8Z9x$jZ0rlRp{XvwuM*K1LD0B>x;UeoLHSMe-gMSKrLRU zVcnwW-wJ{3`K!WU7rnV&3b?nl#VVasc@cjql1xv`0eeg6mY$V&?>ZPea6R>+v;dN4 zfv#0&l)1$&&Bs^ z5I#eWpoa<_;b2-Wgejdxa=Ph|X6x249Ugd$nJna91etJvl;ar@x^KSl5ppv1Rulz8 zTJ8r7V!j|@o?8ewV|di|X;DHy3#!%{Dp(KDISkW?2bhEvc!8Gs?V@K|2H`Jw_D7@{ z27_?CQ#z$wJKo+wrO?vfxQQY0_KkrlZBfw$`SEEz{F2~wcjQ{jD{f+$++}G50 zE|cF1+HdAp^t>mATWU5|Uc2d$815n8gs+}Wsx~i0Bx3yufMFc+h@C<>x(EW_TSEb*7zs*2>AX7RENW$?&3Nd2_@ z2`6i|tpa+CFN6eZV7_pnTcN3>m-(NkyOO3D+n7225D~_Qgulg;H#0@}*R9b*s&dGY z3l%T=SlMNtLZId`QLjy}_5lv4a2e1pO;Jr-Xh_c0%5Jqp?3J@-HRr*4pD1L5ffb(u zf>ztjT!qT3Qpk9prhQphn2~oGiF*Ahach|ne@3h*7qG458(eu)s#((Np|`C9OhbrN zff^hxrL7!CLWt7{pn4ar+QR_|EOv?CTBgN2B%w)$BGXBdpMqW?@`@;ZQXhIuM5LX8f?jzS+1>)wQM#4TA20OA7xH>6MCjNc0J;BQYaKU76T7v0$++9 z4cKs~Ft%r7nLb#}uS{KxBet6+C5ogb<#I3sh1HXqh?N6*ILw3C93%)+tLB(L!Lvwj zkQ`p+mQKVN46FrZbLy1qRo)w%XRu`{rwM^F@yN=LlCSU74AQefdOKJ%Z57`8<(W=d zX=v)oO(Xl%{VQAyf+fDTVzos(X#2`hOjAfww%om^YYGW5%SM(DrM1M(g0h*FLL8;F z#OoPW5I>H#6LM`Vo6dq_+lRE$_;Y^0%By1PI~}ZZe$=jz_evKd2hI;LUC4`tzTWrJ znr6?4x2isb_i=ICP$V-Z`Xa%+ox2CtO<2J}9rAWcT0LhJ1Ej1I7?mm1;sSq5Wr9_v zc01!65{Vh&8^T1YfIlPt>|14Ceg-y<5{6tg%R0 zN86KL22{2khDxQ(Zih-LD8avSm26JcYol?HSgCjyhPJCE4h++?l&~7iGb_4OUN6z= zhIetB$ZOCb%j#7ow7C;aF9Z-qm8DpBw3}jydQ5iLB8KT}+axhIsQ^^xa7E~mbMthjjJ1>I5 z8yNXw2jJ!C;>Sg^$yLcco)xw0`BID*Q>aMID1_9vyU!$&XVvYegz#*-qN@9(7=G1J zMGa#-AX4Az%2T|!4K}9MYwOj)iD51%;>max1fbv|OH_IM7n}jyj6(XKJL#<#(HLbtS;e+I}zHpqY`C+`?NGJX~C4RI|qot+w75t*rzcf_9>!Nz_pnquy3GB2s zB#TyUsN&n$MrV=A%IL4h@EoT z=sBSuH@_BBwG4|D`ESPX@{Ctv9Ia~1U+|mXjHwl1ZU+c@*2%l|Nz6r()xT8_h!5%Z z-Y#9_wJb_LQpNV1I|?t9i(QHKYDYI7=L=VhU${6}Br_Z!l`75{;nTvvmrC+c#EN~p&u%stdj z2{mY`frYUtfu!akn$-`i+`;j%p zPhm}I9{WOe7vb2WUKY@#tzl>t(^_KpqR3DUB|awpSr&MoI@|K4QExdmFe@qWyp~Z8 zW$Bl8``w%Lhz4neRv$dme7`iDMT{31rC2IHJHfXKtmUn@s#54fUJ?hDX~aj&>9h6C zEAiE1nRBHO#>cY#tg=YDmZ&HTaiUi{r5C^o`P1OM_AXR5k$fw<3e2Kj6}&O&B+t}w zpwQl`eilf!2nQ4Dos6(h5SNIkH`MPYDc2xD(W*=OewiX94|jzsm)PNXwV2aYYI8^K zRvps{|+qvCK&&-;KiwUzB3k_VxX9^dfLsHqz z!Yd=GD!UJR!Ve1m^vMYRJpwZd__TOyt-B!;MsXo=BhYO7f~r?mKxDZk@8EA0gOsaiR?01}uD?7D)VaHl`xfpA+h!SxyLve-XN-#Yc(<$c(j)Mw^f2MVn~ybOi9q zCRcHVLGd1O$t?L1LY2RCLG1&_V6EUF;sb+ShZb5So05dE8 zTdBi$52t~JmN{sk=08G+%5j84bOz2%H6te4k%?WU7-0yKs=&-F4Iof=wRmOYSj~B# zqQm5lLt?lqbARP`V%Z!RkUE{ZA0vH9p<)GICkJ>rt5?Jb6VxDK4olEIp`g8k_=XTv za&DSnBC*n(Ef$QY;VhxA6+@V9;?5VI!SUMWtmU0rF3Nk5|5mlLDo|TGE#8&VSX#{H z&h}AZpbg6?+`Zo>z{ef|dak_)e&W;XdiH{bX$5MP_b^DhuYJBSLY*yX#sBe)TRS}w zc9W7_+r_O`%wacmw#>sq?>3ZPd;%fFjtC~RL;UFyx)QL9nlcCuLL{88XNsP&pkagt zo?#|*B<*BtOj;VUResI!Wp znxH0rTIgGNdYwLQW-qFX>bvn9l9}183E13|Pq>k{o?(C!VE;hL?h z7{;Z&@FU!7rg)37i+w$~^lx6G^VDKb^)-iN36gmwf&sf#noS9+{$5OBm+= zXYg95N^D{98|9!!WtwC77isY{t?_@+et(Lk{kKtK4%bPE%~|3;bS6ZzQKw{{vB=G{ znWMFUVtPAys7Z7P4sLU=ie5&j8B1(aRU8VtOQ&dk1ywSA(!&v^N`gHEdByNsKzaVR z5E$^ymaNL{%`@wE0#E?u2Qe%xe@OFNx%42cR%3GT015c2jof;C-1?_>3l~B{3r4h7 zoe1Mxg#=ssSHw6{LN>2-pXrq?(tLHtpk!&r5*}1vMR80`wN_9p$dT$uw~YH~P`09J zAoP9ov*+XcgeA4Ok6ASd_UQgq4efxz*fuS)2APBYiLp*X$34GK$QFdGIP6UeUUH#& z%0U*o`Wew*bL(rNKd5CPL;C795O1mTiw+D3NyroWFpgyWnZX2UNi)1#14qgNChPTh zv2-%1*lIkC?JV9zrz2g2Je}KFTK*q-eYK&&2_Mu$8*fS8kWo^F^D-{84 zb6F1lJaH?BXz~S4?UCH+%#LUnnqlk^`g@HkE#ef$!=9SWw3RXlw2dIRbdP1MP&r40 zS)v#Q@|=(+vwN;;}oX^kH_q5}%x7}d{E>>2E z_nOY)Cu01S0BnTn_zMxxsoO5$c8%2~ZZUiRoG0`-+x|=Um$=K>U4YCz&J?*8 zUv^<`Nm9O$w}aI}?JS^xBw>Z?AO`9HE8Kg-LPA#;-2&a>@6|y&yt>X05+qNbmbX_j zW7?n{-=zCy5maF{m)%vKvgLe=-`9z$5&8YJ!&i13oy$g1?quR@l|Ts2G0c8RIX=&l z6Ly)~@HqGR7CbP`8Ci}fU!!$`9O*+wT&CEw0vgqRRx?{DmY<^~(8dwduR-+jAbJZF zyZ$N{_4L6si$oIl%ewvJo=$tY;Hi9J9;zd%Ul-h$q#{;LU`3R)ewm@wrOVA6BXag9 z88L^FE>VhgraY)zDx@bhs+!`Z=Aw{nzVHSsWax4|*dK0(N--!aw8zvGzl9!3sV16q zM1ds)#y>e8Ou`oDMyuA>C<@&<_Q)%?hsrCyOJkWpUXwo~hV$f5u82S7QwB~seXScz zj#Q~;OGZU5Eih8G_HmA~Ykd;~V)4BXGoe}Xd_1j%rV2d%{uZOWJ=)S#(C2a$!GE8`2Ndck;md$d2H3!!y?KoO+rrOsZ zO4Y0w;YR;UWA4i)`j>@ucTI5v_Ksr6>H}BtJY>WOWgqT&EqU8TC=v82-HZQV!fAX%ORVO__@@a2y8ap-s^cFGFzaV{bDKDFn6TKW zRz_3U0kT8Y^BH0G5n3UwRwcTnW6%g>1j^;^bPNniR_4z;(>2mgV85wXuL`6s%AQ38 zF0_q8wMR7RnK3`!U?;>L$rSLiDhXPYVpUbp2JKck7Tb=OHd*kYgL?hOx^ARJK!SH$ z0BwH83rM8z<2UVxZ=KmyKzJ5lbSL=^kZu8 zDa;!r;I}Zfu$`%DVR^p1>1AR+rUD^hYEF935M{%9W~C;(N%)#0*O#yA&sRne6P>SO zYc64H4z_wi^B$RrVm;R~DYR9F%;yi#gj&#)SjyXeEcJmqVds~ykkTQPuK6m}pvKp? z+o7P}N))&t*!HI8vkci5D7#xw@awQnUL7uWbGQ}_5Ei__>FI?sX3qzxF>umnZ^_*} zwdI+za?d!)_2nI#E%$?6Xq+((!=q)F_TuUof3BvIb3c3hWJfp=KPeaSjO@TqFQIVp zH7Zb8jTrq#mlluDD*=lynkjGvRd9>XcNRa(Q{gdG0G<^kgT>FMx^kbh%{0_}cRjdS zLK!c$zD3<9YWUC9-K42Up0){pD{xrw<9n?F8zOMdz4aAB zU0yXDtjz7*93gB!KZai`XFImN1#R!jr>={s@6~K1S^J$7dz{W9v!lzvZ6ZsFuarSM zy0Sd;0LhLn(X5resIg<^XcCqg!NP z4R1X+oge{7e%tqPx3}a!eD_vLv09WHWBi#WeA^veW+PPe?&xX`$hP%$vZHG%I-Xs( zxJ?U&a9juWA5H=@?{E@``3Ga(njfx#!uCS%RUKGQAUShz$%29k4QXW&1Ji_MNG=@9 zw-|O0L6${|asIIqjAWs@IIk2|3tJPBR}GXX)MMYRT{%Qx3{j3< zT2tiOe$+E;I<`}+%AN(fg{M*r9ZM8##crr0rIl z8-orfN~>qC$c6`Ih)u4v1e`oWHi^a=rYOByT=DTb+??Ck%qOrSmav7|CV>fb1 zgK`*Q2_p*^IAppvt}4ul;R{mZ=lS)D@(T7V5K|0a*DRAd_K(4KkdBir-}i%8$RD$J ze!Tlq?D!|=21@1fwA-Q z+dYmOVA4GC<074lUm(imF2aARo5HMnZPmQONZneBK8jnb3#pX44(3||_kYO7<#sh?hx%WThDId#?h#)3QnmDI~jJq<$OU~Bg9QiQ`#YJRh_EzPl zQYjKoru^(;iV2$cO)iztFlcX>LYMHQ^nMeI1Utm(Yn>* zR<$ayVZJazOtp^_DWut!v?&rRDydUdj%{US+u9_grD0aEdR*L{#8^uKe21$OOzm@^ z_#goX6*-H6+YT~UEz9wOxcdnJ8PSXf#)DvN#vad9KWQ;%0Sh1t1o!ax;fqW;^gwHW zDc}(LW(xF^@chsr$evHX-ZcD|;)cSIeNCtS20*juOC`4IWJIJm7*Su(mj|NhxE!C# zB>E0sQf}alZAfTwQC{&MKoYM%KyflPp<^Y=CSFg`vlW^9RkvJ0Q7BB#T-80CdZyM? z_55}~n6z;OC5rheR#3ewLRncQ}_RMp(H0w8=mW`%k8DL-9|}_3Te@ zP1XIiu#L%0VV&joxAS^SS7Es#EN`9^OH^u!Z%S#7QH!;~SGfxHJ<$tE<2nK2{hquJ zWVvhw*tzn_2*p1tLpR}_Y2!4_ex#tYC}bYFJeA+Ls!Z$VsEr>(DU8xYwoSS_fV~W^ zBCDTLwIKVNVGYOQ$x=2`id)2c6Xv~=%AdeA4B?saB4mWPkuXD`Y+wEoA#Vbr900P` z99hF_9VzuWyKbyQ6AXtyFU`fzMvWgGEeGof#|Nv-7Jn35?0FLs!AY(ce59f z{$50uTG-rXLE5#GhuZ5iDROF$;lsKL8YOOe~E#LAReck+<7R+I<{?T zrzGD~2-<}{sghTn)TZ}KSAJ{%bme#6#Q`pnV-5n71V#VKUuIjw0gkW-wqv7&nkK<9m|ND=|isp*Ovx3Aa2O%l@8qH2kTY^Di0g{L`Wz^MIExbO?kpdH2xhr`3R?(<^ma+eDf zJ2pK`O&nRgJ6-X79~!8Hur5Y`zY~+D3y0;J<29=0sY)aj-?ecOJJn1Xr$J))Ghc38 zA7a^uMKs^Pj;Z`sI3iv7@8L+uEF6`t_)n*CUCqYitmHFd=oz}a3};Zu1sb{+DtUCe z0#yEiLzO?=t|_S}^7CWh=cC}zo_yvOw&+KC-W^}1HRBa&%Yu$T5(?$Vpz8x=YMaSa zj+N@Tjb8(5sk<`QxiEJt1IRXEJG0|>$}8ygJ+bVBt6}pOU~>+=-Y8XLF+XM&dJO?p zIVd$*3k1>hRSiFw!=0&J_^uX;IX;4NGW@u7&-=S`V`ir-ZZI~bejr)?qNA#3e)s&* zmDyM}`!_JR6@#d}d``MDJC~l@#g#fwpY(3Q7})MubS;tvI}V@DyD7JM$e4NQ3iwjO zX05aJ8!^1n&J@RX<-0!%Dyau$9i)Y0j!##7b2}T$)^^QzHLDzin!PLn=69TYnMRy) zZqYG1AzeAH8V`a7vLRUU2BU3~ShglIUdxoZ-v%1fc@n9xp2RpYom`m*fg;xWPV z3^u$Uj8pCMK5IHRGH?&oGK)H=dn_JnH{x67{1|=+q(=w|81_ ze%&dln(3#QiaO0gA)&nTHV@PBkbI7LVM{!OaA9d^JjAQPvTLh$P)N2I&qAR?pLnT0 zMrccQvd!iSJiwsHbO%9#*Chu*q^-aGnH4QEkmcpJjLbmuhD?Y0i6aBhY7c+@>kbA$ z@LmN0Pzyvnb>6IJuW_p{$gBYP8jt;pH|0|)s~u?37LL-zRs>cr(^nuuheDvzUKdr! z6lvvkTg7Yp>dJCATL6_YS;&f&mgS^%OC6)U@)0T(=JIWCo#<+}ml9X^7Uy(0$37La z!wz~z#$^-uN~0E3Y72KJ^$QShQ0Ryj#%TBh{rk5bcP2d_hn%pvlG$Z<&y( z20CK4u=uSC3E(E#Xqn|=u%i~Xn%alHegJiEfZDGg@I4y8eh@ghK*Ihxn6vF6@nI~y zu_NyK0%Hv+k5q$=K-RCqxJ#_Jy+5liXqgpzz|KiQleEH-a8Wj!8Gg~SGdQ+gcdUee z3rN_nAH+w*c01wTb0?^y1z{DDzpT7tn0v%i+A)EP2~v0PD-w(?Ys4s%o>r!{{p~VQ zW!#LBI=34G+!EQPD*gnG;{G8KBSYmNJ7{>zQfk{eMYS0teI`xQd9835Eb&@Ksw(HX zr0x61PwK}p;=Um5)te{u+Uhvgx=Z6wr1NEXes(9phX>fDltK?4W=2~v@Ec!+QcF7H zdk^|ys01NSh2zQH4w=h$;zhgGViTAfW`|121YT^S4GFK6SNsqn*dgK2_-$}7tTR3P z08?WL^!-4do@Rjd46R{m)e3A)oH&#&!M`}84IW@KQnZ?3V{DvBo?=*0nejue4lXkA6)qf6;`XT`zo){#64f%&?iYC>Ue_^}Uoqw~ zV3D9KEz;?+BJ*Lu6DCys)l!KcvH9zjkN?g-|A!@v z|6dRPyUSKTB(EUyr~X}O#(^DsP?Tb69Gg^NyPVUXBtQqNG-5k0FR&^kJ+3C%@D=O35#`UEF4sIl13rP*f>@paYSMsSIL zp)RJM3ACemR#+$T$QSte82?g134}HrDSOenmrY#GeqC(8xVlB7v^~sWW?Gbu^c8yV zsp$@@bqK&q87palubpS}k98@|Q3iU*>(>T_geNK4>HBr7G25@<+5wSxqn(v{l%h7f z+X8Jns86bHv`zCrrs3K=^-r2~hz!Kkj{+P8H#VtN#I}*@uR^)XY*rkkFTY*@WZR)s z>J|N$3k2`hj@$+OXdUwdhu`!OH)=SGPi0V5xo1^%3`1;BoafPghg0VrJ`X;cZY|&A)!L zk3;OFjTO9)(KI?dh!kIGgS0AJooCfAT!*Sc+TL{VMjQPSFCwYRLBh~NAm_I4LnwFh>E3J9XDfOzy}rxD zO|R{`>5pUDF21O3bNR)CFCL!mUXtz}ape_P{%iZ^F8|EcKl}dh;oX-F>puUpSA6gD z!*>}MW>khF^oNojPdz#yJKzU{{xEpbkU2xnDX%F1MENh$KOKJJ@LNYrAJtZQ->$ok ztr$CJ>=k35-Mu|?_a1TFYvaE<;eZLB+56Y~)a=u>-`)F9p0xX06Y9QFO9Pn!sq;TPml#WrxTChcXn4AD_|?+mYEvur>3iX#xhzRdY}c2#@R8Ore7(M&(4V9f0xu2yXS^3?xAa*YV)w zKd3NKN@3gE=2J)MR=bP*jz^9zpy-b%YY{#lV9iF-s-+J@5o5&`>5H8AM+7NK9V zCt~j-x;!Z;@i`%CM)i{T$0w=65EnEI^)MFLp9wLQw_}3lR_${;{eY4m__|)Q(5772 zLo}Gd9jdpR#1;Ff<_$qVl#BnErG2&Zq-ecH5`9x|WpM5~6%2gmR@*yvf*sfWIfV=D z0D(4}Io5RM;8k=u^)GsOCnL7~Q3Spw_kFwg^O|ISdl%2N-xc%B>wActyy6rR2WxfJ z&v>Z~O#8)4V&8=@0p8({eZNzj^@DyEA_=C1aod7A9>AeW>adBq{TJmRys9oQh{`wHdBL7F zoY|~<+hczKPWT2_4^S0=@Cmkgsa=9hMHPBJOM4{Bjah}z9oLQdka{% z8)t;ae2uen0)N&p%T0TD>nVsG*TlnsQ0fB9c+zIS`->5BenHD#PZCT|27zh7x;cHQ z$wsTo?lnd6#@_EDwCv;aahCk;k6Rgr)n$s{qMr$fn?>Qv;<0|Ak#A6Pa9cW{+i+`fE?6LbMc~b!Kc!&` zmi)FVt-&4ov9^~q9SS0B^|b;*D54<<)$?Nuu4(nxE^(MGZmJ zzF_DLVs4LRLz#h$j>}LDGv{vcm|rRp|MdB7eAeif%=FQM?}#g;BrOJ#_A=GI?SOa` zbmD8qefLP5`vkDqpy(NUNZ&6&y=v9j%<#_ws{B=7JzVlJz=~{R!!D32U@)Xpi9F|$ zph!$plyHWVERuomCJNuBfm#&!Pn%k+Se5$>8l!<^p*SYxG%|hYhMQraoyb5!ZEY9u zX*im>gXLc?Ku~(U3&CuLCs<6@hPRv9Yb21c$u216z#WDg>s~ zv26R1Dy7YCi$rH$JSpDkjEsNW|C*HGL2;Y2=yq-u5P$3}>I&uNV8TJ>)R8S7>H_~s z2Qr4wDDvm{{R^qdZGa6UMK^3Epo{FMJ8A7H*e{4ndun<+xiXy>@d?rJFI@$>Z(l48 z5DXuYQdiQi?g1j&9TgkLq&e7wmEnz_cOg_)M_ z`Y7WvCgY7X#15qB=SE$7_g&mpB#K?&B%cxpHmNzC^?kbiT#l>tO!IVnb0OccS?E7xsETo~ zi$p%tfqSM0Zby6yX>JnzA5A!q#7HF+~_CVVYC7&ter@%}B{5GU3Mk^o*J+LFqR`

cD%SI;`Oey+~wLAN|r!;O0(#rsxVbuq%c}2!7lkDU1;(^`6W4A(t`-gJwM|D zLzh(LPz*;NUe0CUOu^Tltpj2YRiDQ=l09$3t&-^RafkgD*fpBbLK4pbDhi(v$5@odcqt|*JF*3%O=t(xIIG1U z;Mm=$Bea2|-Vp&AY$VvK00`uSufWG}5F~kZV;`xHo44j0oGD^%`$#>kW;8|WJ6xAb z#05)Fch@a?aH%7z(}&EZMV=0gNo$N*{H0NzkTig=or^NtR_G4rN$J#`$+!Q$090uT z6QBL^i=ES34{*wVg;n^x$Ap%xsQv;Gp3<2~j)#w`1W`01(LwQtspl}^rQ?e3)uxze z#g_@z9c$$5uwiEFY16_v&?c6lxHY`Vk!BV4-dpIo+=rP4gIE%aP0lP&BZC-hixvAC)+>MFn?18a+AbyoP3kQeNh=7E z0vawVY{6&W`n-uwxtVat(8!DNc=fYXyGIBMKP?7mL4;e^>n4tk+^UNQpXd1V!FXcc z*q6HcrW-=E?urjfQns=o8zBJ5R^n|momyojhDfMJ!OEltn=S!5Ddj8bLmN%1sYZ?aKkp9!wMlNYW1Opd#n5Y_ zDxjtvv>sG|)XEWKxM+S*T@Cy8Yr-I%6LsgPPn-PM=x=MlK+BByFmgy*!fLP1;&MKa z5d8bp$1Kqh=xs!!pIV2cte9?OxWvce3-Zkup9hZQX<;qxiYds@9&Kt9a87%V_C zSU@r|`4cUAWh*RfQ631jlb5qZ(OlCOp&vAhA+7Fd_fOwIcfIdPF#H`sQ@(m#lFyVUmzaw_%i$eT0vF{KflFX z5N$tj9;}Ew!L(a$$W?QmkRN9mfM4Y={dWy44}7!}uvSQULKDdN<1Zy`W9Aln#ti;T zeP!Gx`xi!Z;17Ke(vUX{b4P3(g6PBugq$tI?Csqa9nMk0XBlQVM-mKHhJhL;H5X*Z z%Kf76&fTo7tj-D(G2YXzZ$QqX=~gjc1;ybbKQr*ZOgp)$guEPe$K=A z#Sj7g6foyA1`|Y<+bE_{1`Y=ajRPTzRVb~alUe_RxixOG%1xoo)LFo6`ET0+$7!J1 z$NAP0lUZZfkE$7IhM#_hAP)3mn7I*Q?8sVNr$Tmd^7D82z*38u;vWPM0VLlPZv&?O zf|2C~->zcrfqHk7n2OQ2Z9ouOwDBk9cx>rQT2smO_)p7Pz^Q>(=EW2`OU~Nr3nn^0 zcl{NO5oz&m5wS)5{faThRK*W}GnXgOkf2SyUrVVautBbD@y5>Lzp%OzFQ(^nr&%1N z#0;EpoFG0e0w=K~2aT)b{-oo4ni)oFdW)R(`WQbPDr&2&;N-uoc#L@QgaC8u*_DWI z!>z?L`wgv1y~t^=frG`gaH3GgCwz`8Qzdu;+v^*KCkMVzH+}vuWPA&UgZ9I~`)1Kr21r_( zM(FVjW1s{e+N*L%3`Ao5B!tS1YTMRiVUP&9#qr&1{fA+Nm2ET{%M@f>u`*(~Eyptu z=YA+-I11(6!NE<-{5bhGw28_gdOKA8_;!bin4XyrP$^u$f$$-(?Z=PiwM=^&_Ir8) z)u1S(`5kIngmW~C@{U}gCtaOIc-3BHV!@AHuP*YprJaBt&p20jz6g{L`AFU|1by=|kwxLO`RyL{wAac#FZ_35p^FJ>%(AD#F z&ugpy7$2UI7dGY7Gi<7ODt&5-r?#DnD&FcPCCO4DmG_##)^%ogT24qnU{Ok%aAff% zJ|nrnwM~i0rF?Wk;y9RPi4qkpE-q7~cI+kI8c}AoxKWsZ;uXk*bH%cO;?ubrW>rp} z!4pdc+$TVzHo@Qt#x1X)d_8f7;anE51XE8(iV;=iOYT_HlO2=5kPjWZYMYFZ|W*76Lm^>y%* zUvOA9i@3l;urh;{K8cxr&8VwVTBAK_2}#R2W!CXg@GSJ3#j=N z2Qh)LGx{vR^I08roL_Pfg3sfW>&TfHoC%B*$Qhb-NPF=Q_NB?i0}X3ZYO+lPN4n?4?u8u(asbE}NDKIR%F;Bxx!BHU~>e2WMU3q6Wyr5_FygI*AA zvxV6oxbPd*y{#gPb6l;Jz$m54OtyW*mvhjbI5hxi)nsS41Qb16%N2V3ug_cRdYSaq zmL!*%Ts6sMf??vpt&@z3t9KW7sK^pk|x4c@m57jl?_Q4^pHXzALxo$9PGc94=~Q0}W_UXX%{dt=y!?!j zx--TTyCOcV~r=-q|V1ofMs)})%^XKw_l<52<3U*O-=(0$c+7035CL)($5ExplxZJ}UFNzs5hpan60i9Yx+#Q2~wc;lkOMT7UK3F;^+#CnTH zWCB5A@LmI<8lzE}2Nj~F-atTz+KW@L1u2Dgn3?wY`~CN!3{Xvc&}qKYea_i??X}ik zd)@Xv=WMmxNeSCGGK#!XwH{2;l(oWGLU216YY))j@hh)p{z%1uHPB>FI{>LpS#Eq5 z4`8JXS?ATL%@t2C&4cMAetK|+t~P>7Bbw`E>cdXilf@^fsQl`uNsdz=Juo)P%0%{r z)_ttIggoDd4w@qZ#Ro4Od3W?CBhWaEsu_nQhRY<*>DQ4&z*>Q$Y18T>h2eU?+a z7+Z8|+S5b3kKH(Am@0`r$3 za}>Jf^RyT-)}Aw_Gd%-$S;q#%&hF@equz%L`&VS6GU`WDBD{C!_C&9KNTu;JC4S%VGlb*Og^!p( zP(jXX`$)!#>=Hmhyx`oJv+A71mFiltTaT(^-1FVnRaw1wLg9bDh(6cD^M=Qf_Aw5t z1+v`6roPJ}Z^S~M%yO+?epsxwFCT+izvH4k=)EhuT|g^ub2v`Q?^N(iedhIE=ApSJ z{KQ$hVPQ#w=ui*5>RZpE7#`Z(V@WZ|w< z!sO0ckycyQm$P(iG2fn&kFrJm?xc<_AN3f;you$@XwhVmFpdp6l#aX+xi%g6{$^J6rI7N4X)W6Gfby z4cy1Q=Xi!$-OlCNSmL^l`kn+lff$yZ31l`PQ#~0R>|o1C=D%Y%j_U~(LAxe0bs*Yn z-O=;g+8@X!%$>B3;5C1@b-Ifl%}UoEfn}|5N`d>QBJl+EqGjviRXjdvi&`#gWRq!- zvdWB0Ew1z&Id00RjbkZKQm9f|8x*{|7H^4TlG@KAe1$=GG9CiG3e9BBdirt^h- zuQAeQAecUD8pz}i%v>54khKCKyafW7UtGIss9dM#%X#7Ato}3kv2QxIS0(>K%7dZm$kT*w#*sCAC7`*k&A+@_ zPy=FfHq@4RLzISW@_fK|HaOKZ`sI>3O|)dm^dU-?6e?CCv*bzWzVRvsJu%JnggS5s zFwFy8mNIpdcAc2$(NvxExTCO7!u|x{X6hVDd&b7!%k3f4c4mL;=0GMKJ&ET_Eg9UE zm&$>R1qun+lG5)mYh@XWpJX1AG-WKZHDt!_R7_P5X4d>#5{QmoM@RPd8~V_ql0V!v zhOv~q>zPvYRn8E<11aSjq(LgV&7-nAI>UyiVdrNKsRVRMYZ^!CX{JYdYk*i&ucVC? z62Zl3NE$ht;eG~3>OPI1(msi@=BF|(?&fW_m@5}<;}CV&+%{|p(P_4*)RNHOVv9si z#Bb_2=Idn~8IJb)4&K2o2jf!+FrGx*k+7O(E?6Sr^r>jH zhJw+kn{|=xn<~f4x`>hkNKi)qj6zuqPwMBV9=Ay#JnRh&JnOL&TnkILd)Kg=w`W<; z(oCco5^MIWKU^=omrqoYNKpk!rU?!JrDSfhVC9Ctk`iLpmO@vYpd_PDlcD|AOP<4> zVMh8~Lk7yavGK1SfHTa_N9aNzJ?V4*Qn`?<0Ye}=m=a%P)Zv_JO7rS_?~yd?oysY@ z7Dw9%JyBM|ZTIpKcthHxtm?vtW?FpAffPObPFOi}XLA6Ahk%0m7X*-}Nd$sEdNli!K|UhjSns7f`u z6&5{NqEEe)8rUA#+}rpm#61(2C+sM3FV_EX2~X&apxf*d-4}tbK9p9~^QhaXnx?_^ zbZ%v0A7nhLP0uUW;5FpKgXZ_ro1T6z(MLIAP1XG)BJC@ZEU`+<0Jlajj4b9cujyHbOhSnx^7 z-7)L}?$4~K3aEiXEz!h<#48ayM}=3^vF6C77-7s6MR^m6Md+(CD5psgucP=Y17IB; z!J4od%zLosg&(35Csy~rmhj3x3P|agP9`4gk@ zl`Z2RXGPwNSpO^P1i{=>orEVaC~|y)_SGLvHabf@GTnXMv_W>t>73Tx9Vwv={azb@ zYXC>*s`G`eb87TNPu4LxS{7shCecQ`2-RD2xpeADH`hBr%QJYI{Zwb$_HvYd=l zuBNN*!U z_&9Y4;;vS&FFeBQsrob@Ysgn1nrkC~WG5N6{bI6GY8N?nNuRwNVCBrwa;wQbb@`cL ztJpgX$asMx*p~2V0GY0VO`Y|JNnuPB8o?&&*Z&)s`MEmOsahS)eBCzQ;8SB~dNe)N zm74@xdH5qjaJ!VpQMv>5nLH}2B7B`UNEBb+;Kw$0vV-Maq8vBR$H+962m0Z=oE%6W z9!%`iDUlgFiAXpU?8us?Co~kCorI|5)aur|zu4rr5LWX#_c{SH3snI%X}iT157R$i zrsVE!4@tf!rUBawmt07=!Gn|YS~mR}q^f-Xc&PVjb}YT zZ?s-y<;_MphrX&yQS&kXlt_osJS3RPnPFE$NQ3yG=_|POuMElnw$Ko3#aq6nXsj zOMx*$cMk?GAbDbL6d}8VI#D+fL38lc;o=%0!$J*9Gesr5icus0D$8O(Hq#^2BuS|U zsb7{yVCw8qifS}BB@dJRmGo-&w@Xf@!`}sqDZ;N$?02X5kjb?~t)*3N?aAI^*mDYsqH8!3WX#D;5;3=5; zp?5w>XTHvr!H=~f{kYW=7*0se0$FJ!Ru*!ju1_zu^X0UwPq-c=bvkPC3BhA_S*3>>qSQ_@!CG2E*P?8@2-=xoMWke-$E*w9r;K+ zRdI4S>=4F;haJKosG%f`(9giJMJ7-6KY5OL=2KYY(A#wDHcR;yHf|BotGze76^`9X z-lK9s`%s_gVwD7rj`Y4GUqLS9sKl$`tj66sPnGsNr}lXbm`CVFIh|T!_YVziRm=dRVSdxKFh>CcyG-a#aqJ{z^%7&MzlKk z*bB}<%*28^-X7vS4ihRig9_Nd{Mu84Ji<9D$=i{*-)(T z4KPYGUP;Isi$|)AQ+$0u=kI^2jO$V7GE-6+n zPI0$>(kHTT5-2e%xVr`fvhGsW2@h_u-!Cq4?1um=-@g@1t^LOcv{ZaQl%admu&t4t;gw%AfhNxL zNZkg}$mWX;)<}rAAsu?UUQBa$z34;?*GEDLxp0*9BC7mn=BQc&qRGbYLqok*>w*2i zV98&{<6SpibD#g;z2W>@^8d@nH+CMQ^n+45=arS6ZDmE@J4?53q%7}yOUcZ6! z%lLtJ-=+L61kOcVe>?U4T?%e*0_Jz=BmMqY{n_V@j4ia5j#B2a@0!v_ zX=Uf;zP06;T>ZC)W_z=z*`MQ9O7}GPl+xVHZ_m@4P{)7Uxx;VvU)z4`v+q2k)*fm; z1M2J=wLKWv$2X4zjsExKE`81Z3ud`9`>N&IV`xg7BlZ7GdY*#OY;7Ua?^9O;cYE%H zCr`gq`?TL@wYeECZ*P9V4<66@dtTX4PARWqq~5~sL;UK$FO^Mg>2GDqQfF!B)Xu9r z7j!P~Tz$Bfb^lZAUzH=Zwohf`s1}d8`G4RrR!38spR)zPUtE@!W0}pf|NiUN{{naV BY*zpP literal 0 HcmV?d00001 diff --git a/apps/web/app/fonts/Cubao_Free_Wide.otf b/apps/web/app/fonts/Cubao_Free_Wide.otf new file mode 100644 index 0000000000000000000000000000000000000000..1ae70bb3e9117c0a5377d6f30864a87c46c10be1 GIT binary patch literal 63440 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

eFsiiSBJ^B?^@19t8Sq_AUnCN~D;)3> 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 V - + {children} diff --git a/apps/web/components/ExpandedPinView.tsx b/apps/web/components/ExpandedPinView.tsx index 379204c..df79ad9 100644 --- a/apps/web/components/ExpandedPinView.tsx +++ b/apps/web/components/ExpandedPinView.tsx @@ -269,7 +269,7 @@ export function ExpandedPinView({ pin, onClose }: ExpandedPinViewProps) { } .modal-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 20px; } - .badge { font-family: var(--font-chakra); font-size: 12px; font-weight: 900; letter-spacing: 0.1em; text-transform: uppercase; } + .badge { font-family: var(--font-cubao-wide); font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase; } h2 { font-family: var(--font-chakra); color: white; font-size: 26px; font-weight: 800; margin: 4px 0 0 0; } .close-btn { diff --git a/apps/web/components/PinDetailsCard.tsx b/apps/web/components/PinDetailsCard.tsx index b4b46d1..d113016 100644 --- a/apps/web/components/PinDetailsCard.tsx +++ b/apps/web/components/PinDetailsCard.tsx @@ -93,8 +93,7 @@ export function PinDetailsCard({ pin, isLocked, onLockClick, onClose, onExpand } font-size: 11px; text-transform: uppercase; letter-spacing: 0.1em; - font-weight: 900; - font-family: var(--font-chakra); + font-family: var(--font-cubao-wide); } .close-btn { From 3a11931fdc74c47efb7c3a0ae0b9ef7f1d4930ce Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 1 Mar 2026 10:03:53 +0800 Subject: [PATCH 02/24] feat: use Cubao for pin icons --- apps/web/components/NeonPin.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/components/NeonPin.tsx b/apps/web/components/NeonPin.tsx index b827e63..eb5b109 100644 --- a/apps/web/components/NeonPin.tsx +++ b/apps/web/components/NeonPin.tsx @@ -59,7 +59,7 @@ export function NeonPin({ pin, isSelected, isLocked, isVisible, onClick }: NeonP transform: "rotate(-45deg)", fontSize: "18px", color: isSelected ? "#000" : color, - fontWeight: "bold" + fontFamily: "var(--font-cubao-wide), sans-serif" }}> {pin.icon} From 60d9ae447e8d0fc8326f2bc4087a8f64ae3a3f91 Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 1 Mar 2026 10:30:01 +0800 Subject: [PATCH 03/24] feat: use Cubao for verification status text --- apps/web/components/ExpandedPinView.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/web/components/ExpandedPinView.tsx b/apps/web/components/ExpandedPinView.tsx index df79ad9..67a2df9 100644 --- a/apps/web/components/ExpandedPinView.tsx +++ b/apps/web/components/ExpandedPinView.tsx @@ -168,7 +168,7 @@ export function ExpandedPinView({ pin, onClose }: ExpandedPinViewProps) { {/* STATUS */}

STATUS - VERIFIED + VERIFIED
{/* RATING */} @@ -387,6 +387,7 @@ export function ExpandedPinView({ pin, onClose }: ExpandedPinViewProps) { .meta-value { font-family: var(--font-nunito); font-size: 14px; font-weight: 700; color: #eee; } .font-mono { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; letter-spacing: 0.05em; } + .font-cubao-wide { font-family: var(--font-cubao-wide); font-weight: 100; letter-spacing: 0.1em;} .text-muted { color: #888; font-style: italic; } .text-neon-green { color: var(--neon-green, #00FF99); text-shadow: 0 0 10px rgba(0, 255, 153, 0.3); } .text-neon-yellow { color: var(--neon-yellow, #FFD700); text-shadow: 0 0 10px rgba(255, 215, 0, 0.3); } From 42e641fc8bfe60952b25aed5c66e3945e4dda72f Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 1 Mar 2026 23:04:20 +0800 Subject: [PATCH 04/24] feat: beautify sign-in page --- apps/web/app/sign-in/page.tsx | 55 +++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 12 deletions(-) diff --git a/apps/web/app/sign-in/page.tsx b/apps/web/app/sign-in/page.tsx index bf48fce..c0bf4a6 100644 --- a/apps/web/app/sign-in/page.tsx +++ b/apps/web/app/sign-in/page.tsx @@ -1,20 +1,51 @@ 'use client' - -import { authClient } from '@/lib/auth-client' +import { authClient } from '@/lib/auth-client' export default function SignIn() { - const handleLogin = async () => - authClient.signIn.social({ provider: 'google', callbackURL: '/dashboard' }) - + const handleLogin = async () => { + await authClient.signIn.social({ provider: 'google', callbackURL: '/dashboard' }) + } + return ( -
- +
+ + {/* BACKGROUND GLOW */} +
+ + {/* LOGIN CARD */} +
+ + {/* HEADER SECTION */} +
+
+ + + +
+ +

UP WayPoint

+
+ + {/* AUTH BUTTON */} + + + {/* FOOTER */} + +
+ +
) } \ No newline at end of file From a3bf9ffc425a0d285aa06cd8156e324a2c8d1dd5 Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 1 Mar 2026 23:08:14 +0800 Subject: [PATCH 05/24] feat: use prepared CSS style for sign-in page --- apps/web/app/sign-in/page.tsx | 138 +++++++++++++++++++++++++++++++++- 1 file changed, 135 insertions(+), 3 deletions(-) diff --git a/apps/web/app/sign-in/page.tsx b/apps/web/app/sign-in/page.tsx index c0bf4a6..762a627 100644 --- a/apps/web/app/sign-in/page.tsx +++ b/apps/web/app/sign-in/page.tsx @@ -20,7 +20,7 @@ export default function SignIn() {
- +
@@ -40,12 +40,144 @@ export default function SignIn() { {/* FOOTER */}
- + +
) } \ No newline at end of file From 8b6e4531c6c373cb9993319f991e23587d9bb831 Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 8 Mar 2026 08:56:54 +0800 Subject: [PATCH 06/24] feat: modify dashboard --- apps/web/app/dashboard/page.tsx | 252 +++++++++++++++++++++++++++----- 1 file changed, 219 insertions(+), 33 deletions(-) diff --git a/apps/web/app/dashboard/page.tsx b/apps/web/app/dashboard/page.tsx index 9d75388..4f862d3 100644 --- a/apps/web/app/dashboard/page.tsx +++ b/apps/web/app/dashboard/page.tsx @@ -5,37 +5,223 @@ import { signOut } from "@/lib/auth-client"; import { trpc } from "@/lib/trpc"; import Link from "next/link"; -const SignOutButton = () => { - const router = useRouter(); - - const handleSignOut = async () => { - await signOut(); - router.refresh(); - }; - - return ( - - ); -}; - export default function Dashboard() { - const { data } = trpc.user.getCurrent.useQuery(); - - // if (!data) redirect('/sign-in') - return ( -
-

- Welcome, {data?.name || "Unknown"}! -

-

You made it to the protected area. 🎉

- Admin Test Link - -
- ); -} + const router = useRouter(); + const { data } = trpc.user.getCurrent.useQuery(); + + const handleSignOut = async () => { + await signOut(); + router.refresh(); + }; + + return ( +
+ +
+ +
+ + {/* HEADER SECTION */} +
+
+ + + + +
+ +

+ Welcome, {data?.name ? data.name.toUpperCase() : "OPERATOR"}! +

+

You made it to the protected area. 🎉

+
+ + {/* ACTIONS PORTAL */} +
+ + + + + GO TO MAP + + + {/* Secondary Action: Admin */} + + + + + + ADMIN OVERRIDE + +
+ + {/* FOOTER & SIGN OUT */} +
+ +
+ +
+ + +
+ ); +} \ No newline at end of file From bb14f93a6459f59b30ca7a4218a24fef769d5527 Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 8 Mar 2026 09:17:58 +0800 Subject: [PATCH 07/24] feat: add redirect functions --- apps/web/app/dashboard/page.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/web/app/dashboard/page.tsx b/apps/web/app/dashboard/page.tsx index 4f862d3..28ede90 100644 --- a/apps/web/app/dashboard/page.tsx +++ b/apps/web/app/dashboard/page.tsx @@ -9,10 +9,13 @@ export default function Dashboard() { const router = useRouter(); const { data } = trpc.user.getCurrent.useQuery(); - const handleSignOut = async () => { - await signOut(); - router.refresh(); - }; + const goToMap = () => router.push("/"); + const goToAdmin = () => router.push("/admin"); + + const handleSignOut = async () => { + await signOut(); + router.refresh(); + }; return (
From 41a864bce718fd9f2dab7efbb3e9430ece507d4a Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 8 Mar 2026 09:18:57 +0800 Subject: [PATCH 08/24] feat: use `button` instead of `Link` --- apps/web/app/dashboard/page.tsx | 37 +++++++++++++++++---------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/apps/web/app/dashboard/page.tsx b/apps/web/app/dashboard/page.tsx index 28ede90..21354b3 100644 --- a/apps/web/app/dashboard/page.tsx +++ b/apps/web/app/dashboard/page.tsx @@ -39,24 +39,25 @@ export default function Dashboard() {

You made it to the protected area. 🎉

- {/* ACTIONS PORTAL */} -
- - - - - GO TO MAP - - - {/* Secondary Action: Admin */} - - - - - - ADMIN OVERRIDE - -
+ {/* ACTIONS PORTAL */} +
+ {/* Primary Action: Go to Map */} + + + {/* Secondary Action: Admin */} + +
{/* FOOTER & SIGN OUT */}
From 47599969fef7245f3e035764093112a7a5238293 Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 8 Mar 2026 09:20:02 +0800 Subject: [PATCH 09/24] feat: beautify dashboard page --- apps/web/app/dashboard/page.tsx | 100 +++++++++++++++++--------------- 1 file changed, 52 insertions(+), 48 deletions(-) diff --git a/apps/web/app/dashboard/page.tsx b/apps/web/app/dashboard/page.tsx index 21354b3..dd4ac1b 100644 --- a/apps/web/app/dashboard/page.tsx +++ b/apps/web/app/dashboard/page.tsx @@ -3,11 +3,10 @@ import { useRouter } from "next/navigation"; import { signOut } from "@/lib/auth-client"; import { trpc } from "@/lib/trpc"; -import Link from "next/link"; export default function Dashboard() { - const router = useRouter(); - const { data } = trpc.user.getCurrent.useQuery(); + const router = useRouter(); + const { data } = trpc.user.getCurrent.useQuery(); const goToMap = () => router.push("/"); const goToAdmin = () => router.push("/admin"); @@ -17,27 +16,27 @@ export default function Dashboard() { router.refresh(); }; - return ( -
- -
- -
- - {/* HEADER SECTION */} -
-
- - - - -
- -

- Welcome, {data?.name ? data.name.toUpperCase() : "OPERATOR"}! -

-

You made it to the protected area. 🎉

-
+ return ( +
+ +
+ +
+ + {/* HEADER SECTION */} +
+
+ + + + +
+ +

+ Welcome, {data?.name ? data.name.toUpperCase() : "OPERATOR"}! +

+

You made it to the protected area. 🎉

+
{/* ACTIONS PORTAL */}
@@ -59,16 +58,16 @@ export default function Dashboard() {
- {/* FOOTER & SIGN OUT */} -
- -
+ {/* FOOTER & SIGN OUT */} +
+ +
-
+
- -
- ); +
+ ); } \ No newline at end of file From 09c85eca5ee53af4dc1005b3d9507c60387d6f1b Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 8 Mar 2026 09:28:08 +0800 Subject: [PATCH 10/24] feat: modify admin page --- apps/web/app/admin/page.tsx | 97 ++++++++++++++++++++++++------------- 1 file changed, 64 insertions(+), 33 deletions(-) diff --git a/apps/web/app/admin/page.tsx b/apps/web/app/admin/page.tsx index 535f85c..943a106 100644 --- a/apps/web/app/admin/page.tsx +++ b/apps/web/app/admin/page.tsx @@ -4,36 +4,67 @@ import { useRouter } from "next/navigation"; import { signOut } from "@/lib/auth-client"; import { trpc } from "@/lib/trpc"; -const SignOutButton = () => { - const router = useRouter(); - - const handleSignOut = async () => { - await signOut(); - router.refresh(); - }; - - return ( - - ); -}; - -export default function Dashboard() { - const { data } = trpc.user.getCurrent.useQuery(); - - // if (!data) redirect('/sign-in') - return ( -
-

- Welcome, {data?.name || "Unknown"}! -

-

You made it to the admin area. 🎉

- -
- ); -} +export default function AdminDashboard() { + const router = useRouter(); + const { data } = trpc.user.getCurrent.useQuery(); + + const handleSignOut = async () => { + await signOut(); + router.refresh(); + }; + + const goToDashboard = () => router.push("/dashboard"); + const goToMap = () => router.push("/"); + + return ( +
+ +
+ +
+ + {/* HEADER SECTION */} +
+
+ {/* Admin Shield/Lock Icon */} + + + + +
+ +

+ ADMIN: {data?.name ? data.name.toUpperCase() : "UNKNOWN"} +

+

You have accessed the restricted area. 🚨

+
+ + {/* ACTIONS PORTAL */} +
+ + + +
+ + {/* FOOTER & SIGN OUT */} +
+ +
+ +
+
+ ); +} \ No newline at end of file From 7ef4f72bdb2c28bfc912bd76d02eb3c99f10e1c7 Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 8 Mar 2026 09:30:36 +0800 Subject: [PATCH 11/24] feat: beautify admin page --- apps/web/app/admin/page.tsx | 167 ++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) diff --git a/apps/web/app/admin/page.tsx b/apps/web/app/admin/page.tsx index 943a106..0684a09 100644 --- a/apps/web/app/admin/page.tsx +++ b/apps/web/app/admin/page.tsx @@ -65,6 +65,173 @@ export default function AdminDashboard() { + + ); } \ No newline at end of file From 4c49fb4987fd37791e7ed121f5610df29b26fab7 Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 8 Mar 2026 09:49:26 +0800 Subject: [PATCH 12/24] feat: add router functions --- apps/web/components/TopBar.tsx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/apps/web/components/TopBar.tsx b/apps/web/components/TopBar.tsx index 5ecdf6c..57585d4 100644 --- a/apps/web/components/TopBar.tsx +++ b/apps/web/components/TopBar.tsx @@ -13,6 +13,17 @@ interface TopBarProps { } export function TopBar({ onMenuClick, activeFilter, onFilterChange, searchQuery, onSearchChange }: TopBarProps) { + const router = useRouter(); + const { data: user } = trpc.user.getCurrent.useQuery(); + + const handleProfileClick = () => { + if (user) { + router.push("/dashboard"); + } else { + router.push("/sign-in"); + } + }; + const filters: FilterType[] = ["all", "academic", "food", "social", "utility"]; return ( From 85e59d8e2d0e0a4af2bea4dd94f55d5ae321d261 Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 8 Mar 2026 09:50:03 +0800 Subject: [PATCH 13/24] feat: modify profile picture button to redirect user to the sign-in or dashboard page --- apps/web/components/TopBar.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/web/components/TopBar.tsx b/apps/web/components/TopBar.tsx index 57585d4..ee349b3 100644 --- a/apps/web/components/TopBar.tsx +++ b/apps/web/components/TopBar.tsx @@ -1,6 +1,7 @@ "use client"; -import { useState } from "react"; +import { useRouter } from "next/navigation"; +import { trpc } from "@/lib/trpc"; export type FilterType = "all" | "academic" | "food" | "social" | "utility"; @@ -84,11 +85,11 @@ export function TopBar({ onMenuClick, activeFilter, onFilterChange, searchQuery, {/* === RIGHT ZONE (Full Height Tool Stack) === */} -
+
{/* Top Group */}
- )} {/* DETAILS CARD (Only if pin IS selected) */} @@ -80,6 +73,41 @@ export function HeadsUpDisplay({ selectedPin, onLockClick, isLocked, onClearSele /> )}
+ + {/* TACTICAL BUTTON STYLING */} +
); } \ No newline at end of file From 8a70e5c32ded8c23736390363a895ee461a6cf1a Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 8 Mar 2026 10:13:28 +0800 Subject: [PATCH 15/24] feat: handle `isAddingPin` state --- apps/web/app/page.tsx | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx index 1585219..f7358f2 100644 --- a/apps/web/app/page.tsx +++ b/apps/web/app/page.tsx @@ -96,6 +96,7 @@ export default function Home() { const { mode, selectedPin, selectPin, clearSelection, expandDetails, toggleMenu, toggleLock } = useWaypointState(); const [activeFilter, setActiveFilter] = useState("all"); const [searchQuery, setSearchQuery] = useState(""); + const [isAddingPin, setIsAddingPin] = useState(false); return ( @@ -108,7 +109,19 @@ export default function Home() { mapId={process.env.NEXT_PUBLIC_MAP_ID || '71238adec955b8c6d66f595a'} gestureHandling={'greedy'} disableDefaultUI={true} - onClick={() => clearSelection()} + onClick={(e) => { + if (isAddingPin) { + const lat = e.detail.latLng?.lat; + const lng = e.detail.latLng?.lng; + + if (lat && lng) { + console.log("New Pin Dropped at:", lat, lng); + setIsAddingPin(false); + } + } else { + clearSelection(); + } + }} restriction={{ latLngBounds: { north: 14.663668, @@ -160,6 +173,10 @@ export default function Home() { isLocked={mode === "LOCKED"} onLockClick={toggleLock} onClearSelection={clearSelection} + onAddPinClick={() => { + clearSelection(); + setIsAddingPin(true); + }} /> From 64dcc9db8a63f940566cac7f2222a44c02f0b445 Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 8 Mar 2026 10:20:41 +0800 Subject: [PATCH 16/24] feat: initialize dynamic pins with `HARDCODED_PINS` --- apps/web/app/page.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx index f7358f2..a3cdcda 100644 --- a/apps/web/app/page.tsx +++ b/apps/web/app/page.tsx @@ -97,6 +97,7 @@ export default function Home() { const [activeFilter, setActiveFilter] = useState("all"); const [searchQuery, setSearchQuery] = useState(""); const [isAddingPin, setIsAddingPin] = useState(false); + const [pins, setPins] = useState(HARDCODED_PINS); return ( From d88069171b42187733373732cf5c20898357415c Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 8 Mar 2026 10:21:30 +0800 Subject: [PATCH 17/24] feat: render with dynamic pins --- apps/web/app/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx index a3cdcda..7ad20d4 100644 --- a/apps/web/app/page.tsx +++ b/apps/web/app/page.tsx @@ -133,7 +133,7 @@ export default function Home() { strictBounds: false }} > - {HARDCODED_PINS.map((pinData) => { + {pins.map((pinData) => { const matchesCategory = activeFilter === "all" || pinData.type === activeFilter; const matchesSearch = pinData.title.toLowerCase().includes(searchQuery.toLowerCase()) || From c8684619cf0bffde40a83afae0eea365995d3fdf Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 8 Mar 2026 10:27:35 +0800 Subject: [PATCH 18/24] feat: try adding pin --- apps/web/app/page.tsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx index 7ad20d4..28febd9 100644 --- a/apps/web/app/page.tsx +++ b/apps/web/app/page.tsx @@ -116,7 +116,17 @@ export default function Home() { const lng = e.detail.latLng?.lng; if (lat && lng) { - console.log("New Pin Dropped at:", lat, lng); + const newWaypoint: Pin = { + id: `temp-${Date.now()}`, + title: "New Pin", + description: "Description here...", + position: { lat, lng }, + type: "utility", + icon: "?" + }; + + setPins((prevPins) => [...prevPins, newWaypoint]); + selectPin(newWaypoint); setIsAddingPin(false); } } else { From a38994552e470123480e1f2ce532e05483f1295e Mon Sep 17 00:00:00 2001 From: ptrn23 Date: Sun, 8 Mar 2026 10:39:26 +0800 Subject: [PATCH 19/24] feat: add tactical crosshair when pinpointing a pin --- apps/web/app/page.tsx | 48 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx index 28febd9..b5cf5d0 100644 --- a/apps/web/app/page.tsx +++ b/apps/web/app/page.tsx @@ -5,7 +5,7 @@ import { HeadsUpDisplay } from "@/components/HeadsUpDisplay"; import { NeonPin } from "@/components/NeonPin"; import { useWaypointState } from "@/hooks/useWaypointState"; import { TopBar, FilterType } from "@/components/TopBar"; -import { useState } from "react" +import { useState, useEffect, useRef } from "react"; import { Pin } from "@/types/waypoint"; // SPRINT 1: Hardcoded Data @@ -98,6 +98,20 @@ export default function Home() { const [searchQuery, setSearchQuery] = useState(""); const [isAddingPin, setIsAddingPin] = useState(false); const [pins, setPins] = useState(HARDCODED_PINS); + const cursorRef = useRef(null); + + useEffect(() => { + if (!isAddingPin) return; + const handleMouseMove = (e: MouseEvent) => { + if (cursorRef.current) { + cursorRef.current.style.transform = `translate(${e.clientX - 24}px, ${e.clientY - 24}px)`; + } + }; + + window.addEventListener("mousemove", handleMouseMove); + + return () => window.removeEventListener("mousemove", handleMouseMove); + }, [isAddingPin]); return ( @@ -178,6 +192,38 @@ export default function Home() { onSearchChange={setSearchQuery} /> + {/* TARGETING CROSSHAIR (Only visible when armed) */} + {isAddingPin && ( +
+ {/* Tactical Crosshair SVG */} + + + + + + + + +
+ )} + {/* UI LAYER */} Date: Sun, 8 Mar 2026 10:59:46 +0800 Subject: [PATCH 20/24] feat: create `AddPinModal` --- apps/web/components/AddPinModal.tsx | 259 ++++++++++++++++++++++++++++ 1 file changed, 259 insertions(+) create mode 100644 apps/web/components/AddPinModal.tsx diff --git a/apps/web/components/AddPinModal.tsx b/apps/web/components/AddPinModal.tsx new file mode 100644 index 0000000..fe8c264 --- /dev/null +++ b/apps/web/components/AddPinModal.tsx @@ -0,0 +1,259 @@ +"use client"; + +import { useState } from "react"; +import { Pin } from "@/types/waypoint"; + +interface AddPinModalProps { + coords: { lat: number; lng: number }; + onSave: (pin: Pin) => void; + onCancel: () => void; +} + +export function AddPinModal({ coords, onSave, onCancel }: AddPinModalProps) { + const [title, setTitle] = useState(""); + const [description, setDescription] = useState(""); + const [type, setType] = useState<"academic" | "food" | "social" | "utility">("utility"); + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + if (!title.trim()) return; + + const iconMap = { + academic: "?", + food: "?", + social: "?", + utility: "?" + }; + + const newPin: Pin = { + id: `pin-${Date.now()}`, + title: title.trim(), + description: description.trim(), + position: coords, + type: type, + icon: iconMap[type], + }; + + onSave(newPin); + }; + + return ( +
+
+ +
+ + + + +

ADD NEW PIN

+
+ +
+
+ + setTitle(e.target.value)} + placeholder="e.g. Quezon Hall" + required + autoFocus + /> +
+ +
+ +