From 5d1518509818df511c6b4aeb142ad84ca4c05482 Mon Sep 17 00:00:00 2001 From: Alex Chen Date: Wed, 26 Nov 2025 12:20:06 -0500 Subject: [PATCH 1/5] Increase specificity on testimonial logo styles --- .../components/_testimonial.css | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/assets/stylesheets/marketing_redesign/components/_testimonial.css b/app/assets/stylesheets/marketing_redesign/components/_testimonial.css index 0ab5348ae..903299a70 100644 --- a/app/assets/stylesheets/marketing_redesign/components/_testimonial.css +++ b/app/assets/stylesheets/marketing_redesign/components/_testimonial.css @@ -47,12 +47,12 @@ flex-wrap: wrap; gap: var(--space--base); justify-content: center; -} -.logo { - opacity: 0.8; - scale: 0.7; - width: min-content; + .logo { + opacity: 0.8; + scale: 0.7; + width: min-content; + } } @media (min-width: 998px) { @@ -75,9 +75,9 @@ .logo-container { justify-content: space-between; padding: var(--space--x-large); - } - .logo { - scale: 1; + .logo { + scale: 1; + } } } From d03ed6e178e553ee6802a856e103c5ee7baec40f Mon Sep 17 00:00:00 2001 From: Alex Chen Date: Wed, 26 Nov 2025 12:21:42 -0500 Subject: [PATCH 2/5] Fix alt text for avatar photo --- app/views/marketing_redesign/home/show.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/marketing_redesign/home/show.html.erb b/app/views/marketing_redesign/home/show.html.erb index 7fa43a7fa..366e670d0 100644 --- a/app/views/marketing_redesign/home/show.html.erb +++ b/app/views/marketing_redesign/home/show.html.erb @@ -26,7 +26,7 @@ <%= t("marketing_redesign.home.show.testimonials.quotes.patrick_cushing_quote_html") %>
- <%= image_tag "marketing_redesign/patrick.png", alt: "Vimeo logo", class: "avatar" %> + <%= image_tag "marketing_redesign/patrick.png", alt: "Patrick Cushing wearing a green polo shirt and smiling", class: "avatar" %>

Patrick Cushing

From 5f59cce8e14bf7207b05e49df10aac8bb7943c8c Mon Sep 17 00:00:00 2001 From: Alex Chen Date: Wed, 26 Nov 2025 12:25:44 -0500 Subject: [PATCH 3/5] Update opengraph preview logo --- ...oughtbot_horizontal_default_red_on_light.png | Bin 0 -> 28261 bytes app/helpers/open_graph_helper.rb | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 app/assets/images/thoughtbot_horizontal_default_red_on_light.png diff --git a/app/assets/images/thoughtbot_horizontal_default_red_on_light.png b/app/assets/images/thoughtbot_horizontal_default_red_on_light.png new file mode 100644 index 0000000000000000000000000000000000000000..45bc7fe5e8a4702fc09830b06f22c9e55fefdbfb GIT binary patch literal 28261 zcmY)V1yq#p^FEF*NQWQ|5{e*5F4El~CEX2@OG@XGBBjzOol;BhQo;f%NJw`hu^_2{ zH2Z(>{qgnv{r4OWXZN{tp1EhPxn}NIt>?+K(giVn*m@FRwoj4Xg{CkN8hf7zWZU1-*^tkbh7smByiH0g*RjRV0ROwQoiOSHMFwF z#!`NL8j8-$r3`*KO#Ahhn&I`&#cgm|8CJ5l&*_op-8;-2c!N?K*tB5wUZ zY>r}-ir$;tSECR-IT~sa3F7@dK3nrPdwkhF_tekWHksd2*t_S-P+I65)q9}%{CV=w zd{Zp2 zO~lL;@{!rK&UZ1!h|cOOC0;GhP-ej^vzww0g;CkhNVZ+ff9)HTYEKvfai+T8N;|*y znHQb*nKP(;{%}fh!#V>R9GX~I=6CcxEB9Y>kovu@Dbdi&bJV`myAn#{W(uh130~{J z$DNI&E`4PjoF*1a0#i3~ic<**9Ib(5ioD|jdp=7Y8d(1tT4BP85oP@x1_s|Z}*a&2hA;^tqm~n^$8ne=bGuCzbloZH9to?eri2mGu6@# zoL$K-1%a)&gxSNlYkOhCKUJ@WPw!6tzo|YiL~^^@P8*p7?l!7&f^WLE?DUO$d)s`R zxkVsz&SS_Op@bG{8^H{c6@(ijgDc^`3GwF4B4MPJjd%^4oGb6*e{%nOfGM0|#o5Tg z-CYGvkgxuh*-Q3pM&*R+-{aK}0ktKo(IkWxDx+P|eDa?Aq7L@aPoz^Ix3gf6Qh%HoZx=Z5s?+t>mtRHt7Oa&fZ zoUjeGXgqmFUY4E^~Tru?7w69}JJRgO$W_7K6~;x|R+ zbKmrpLp5B_Ne)!_95wL%Z_zTKQaYD*H@HwX-|*&Apa;EU$k}14Z{(!DM`xNsV$XG! z`_l2h(*UBdaqgPx>hHIujlO#%pRcc`h+}qfup}Wi_n#2Je!BPwi<)XF&J_t5Ls0N1 z#e98BMQpRE|6UBmnrhcnD7|n|39F=LCAZfPt*F{}H@05trCii#_l4 z=Zq`FT?2dckU>M19xnWQ0akw=-$iWFI@8+z89O~to88x#7Z6HMZ>6&mMNKsv_GkJ( zw;m8U{?2}Qp?{|)MH;=Ev5f+w{zUyhNey->bWPpNnTWsKpQP`mB_`OX;x3I| zIFVJFH@b}HFEuYzt=jIJr@hGE*@$??J3;m8sAB22X6X{FYvs*9IfcE?EVBWWb7)lE#uW zBjT%mw7!INcXHhQ=O@bQ)o@J>9aYX27@4GZS^BgH3MY++=7OX$=O2s^L>hPsCd?WG znlzBT*EFwj^lOcOZQ+&rE2^k}^A3)dL~;vys&z+Hn%2v3YA|{E8Z`GfcrF5NEKM}) zc!Ar5^q=<}1PW?V4=|)RlovPMbWT z+`oRC?i^j|Vvg`e?)gY0dh>(sfR z!9CM&LUwa9-QhTo6pb;t^jvV^;&#eE(b6L9$y}V6+cU;BbNI}CE$q&~u=xLc*Xwd@ zQx1p{R3^hXUC{YlfG>r>r{H{^&I6oDj z(?Eayes$n-A-#NSXw;aluGi&1%%JaITzYOZHHgC57Tn=N%t>sG5B{lIzL735B9)}+ zM@wVu5&HS(OotL@@v_x465FfOh3S=knv~)j+kjJ^Z9o+^)j1bm1c?51y$E#26krRS z)mjFx7C2$gc8@Q;(6s-wC=96~IrAZAOwY;bB+U!?f&C{WOmO(9r&`tYP~`(c@bEWv zUmz`}0=nI8@&9X$wNy$75OOtRze((QPh`{4wYT0nzO4I0T2(8=vyMSgds@U#d?lZ= z!0y36K~L&^u;Tp20UK>G8V-3^ZwP;|6I7oMaVozb>vCqfMCEEtbN5=*rG^AY^FRNj zr*znrj>Dd~Go2@j5@I1Txp%yPJOBXY9{$t0R&c%VIP@$Yi|i$>t*MmO^6#VbxQQmW@^{K6Ysad$?lmx>);%`9UH}JS4 zC+EOD3;bUV7bO2bjW?)X)NaVbdS?Sn6v6h6u*D=2rrfFR!7Af2XI={C3=i*YeNV^Oeo!gT|ap=v9K-Y z^XCpwC&k%xty`!&XDZ3QJL$q5P*^}e>I|vYRj9N!^cMtM+2F#`rDANKB=gPhC@Y&{ zf;tTqbl$mi-dDVQ8k1GRXFuEltsx9HjWSss&r31TIVZ^**!`MZ>Loc%{7)6ko?CYr z04n^$OxKD^SWiYu z5X+w$8tg0dxSU%qrBs6L+xThzAAU(yD(FhDpIS;RbVRG7Txt0y41A=@{5e>QWG6`m z20S^&e3>$wYA@5gR2W1YHI-;kPD>84^0C?5o<0YwT^-mR0K=!mCdk!pQbY65e#h-M zK}k5)m6h`7po``c!Q;4u?YygV2P9FrA!->N+KQ~NMnnnNo!r)R6sOyt=}31`ao<+~qls6%j4 z=a!u7grm#)LxX832g2#YbuKM*v^adS@f^ej9c-fuboxY<$br1*i7}J%zl5(ct-(Kk zejxvui(+yrO8fXn_a2urHy$|#Y1DG)P0Nnu{X9|I+)K-+4{ujO`pM;cZzlDP{36XD zupEzvCRby(NPT*p>B4e})XapmEB!bA#x=evnUp0Hkq|5CtYQlQG$Il6Qq6PUZlr^a zUKFP`R#fewnS?a2c!NjM&hjfi${KzsZGV@%eigKRcA!14C3QBGF&;sR_ie{uCzb@x zcuQ`8QojHYRx-Bm2DFkm~ zvY*Xx2{3{-XmoSAYzFlAwvG3&;;0(**Rfpr=I@6ndGrtP@$&LoO$aeJUO3p}5iT%` zmQdbqJ#XtB5>US0T@x6t)cDMY{4(6-d+N0%jjYyylSX*DtyNm;d6Ws>Z3uo=?=&uu zPWQ5CDtggVFvBu`NwV%wz-XG;&GPbZ!p)Z!&31~6qYV`7jKVK(H(}QR1Z{7sCcg*N zfj}Ozv!$%-3>N55=O7ZishK)lD{!oS_ZJfw85rx--% zW(;B4K&p=&RkMM-Quf@;Oy-73dTw0{Qs3ANs5e8%S6>Faa6YRc8jc3)S{i=7(F;Iflo#)7Hl#eAd7 z{Ave>@7-q-Jjmwj8HLe5u+N{(-;=`@$UxEGOi4Pdm~W${eDy}Jx0cj}^H?A&=9`$PWac8Zr^YP{kxp?j7r#=91_bINQ&ftd*l_Io55b!$OV zdjO4XXOC-)7Av3vt#sFG+*4Dl5itzCiGa;~V1+&QaJrbmh;u}5f9b_eu0$&P5cX2;m%zDpeY^AQ-{M-}pkt&5Z8Cxk>P(1$a} z7}K0{V}Cgch@EbB`4>gakT z#`_x-EX`9ceff#eJDkQ5*DZv%Ud@}WBg;p13j@By3-c#jcS%> z^=LYNfgxfT^Z+V&brsKy`thrGR<42Xd%c0y`lRXNGz2pLH+YuOs-HH1v?SfRT?_G| z-2pXAUY#fj2pp?P;6R$7ienm(H^4^s4$HDckf7>9suqatf<|5!T62tL2rxV^vQf$N ze|op|>hc?sHp$09UHotbqSp>bAa0M$B5-6t>=ggE;v|F?>XQ$sv-s-T_Onyj*L(C` zFvBiR7dGAO6(K~mUyfe9~kz!A*uG$*8e98a60M%8UwerGf!@7*#|kY*P@ zti|U4Cg_`b4L~d7w@x4s#iM14Uvb|Ttt-`QH*mS$o=CtzWD{SI?TtkbD%n`aMJ0CQ z5poo>la`lkFQ=uGgs)?oN@m!+#?db7jTvFLkJrGtXmdH)R)0_7ZM#zb7-OG_2QR zc=7l4ITHXVbTPpCyKc9}MoVdyCkSE;#GvZy$7TU28(F7RshQsod*6^4ZBkb!R5nNj z`+vyO)>q3JH8u!+(-`*txYVRu_=x-=ZX zWj<+Br)RZJep473eD;QD1`M#^_2eY=4Fk9M?SQ3eY`}reQ=IAmAZN!OKrlIuAE(vc zs(pBstu{s7lfre5doDf~*Vc@s>TePB6alH&CRk6%MTwiMLRiL$o0BKzTmiB5h*D|X z4w%ke@3;}`m35P$;d&1yn*lnb+vEd<#R?wZtkT<7C08ocmXt0ed$2)7MQF6TJg{@1 z=*w~v`hzn7P*OPhtNbtS(@%j%`|cn0r!;$BUy$D(^TXJFEK}zYus?gx@kVmOvtcD| zWi+G7-RHe$L_AEYi|;D+-S^g4{~}Ah?&gzxN7F4Y-@A~Lbc886&>!@XgVN;*WY667 zk;o_$KoBm`5$${5CE;aASl#&@rZ&9Xs?OQPLiiVhRVjnvjvw>v?ZuV6 zMZ*7#3Y#cD{vRF(nz0JY?sR#1F5R+cV4Yd3o%`JQDOD#c(3=J}_H2Xc?O}N-ca5^u zN8EU~Q|NU@!Elk$M?hKzq!pA#jF=GR#=oRXADQFfGR6}ns7wBZx~g%K{p+qKsz(A3 zAtHbG3pd=hQY)FRUi@ylDB0B88)XvS-wgvG`HjQmG`OChM&d6a&R$-LV7$WlyJ;Di zzSPXm<4bwSU=ELRk*4n?%En)cay`jB06a^+8({zc29BLo-)m1+rak^{-#OOm_RWC8I5T~A zy4+Vj-FnQ4yIuby7BliEb#B!f2vXv_qV=BtPh>w|{a+t^N?@<1$Dd%gk^u?I)c$XL zECLtFGr_-aBy7&;e^JMwIUW7>djsRNbT6{ZUje44w@u5y9DjR)&favIkmSbyPr|rZ z{|o4X<-=gO!w!QZV$-*zLVmZS;$Ql-Qxwx(@(lmcm>R5oIp9+0*4O5D;{hXePT0jv z^YVlShF!;ye14uxgbf$$;Gv?TvOzwh-$C^pBzmD6djzD>{7GK&4ujAJOB()T!X|lJ z^+KeCsHlojCpP$&S2?@QXvH;#=uIB;Drlf@J|1;UA%%Q;YjnfsTLfuFBEX~xkzqea zf_hMSwpXzYrJ}u~!_eSUp4Cu{V5VEyWxjsCPuJ6EPO;q?B1y-M*HaiDx$HdJ*jNn9 z?m?<5;2zw3M;=@vcSvkq$6gn{*gJejrOKLN{wPriK~oj~HB@f;4>`h!`t8Z7>xa-^ z4vlxavvrA+LhP>s&`XKZD8-(Hn(~`jNFTHV`Zo<#*8XcJ$*67LQoMC-x{w?qeJ=Kh zwFHI>Yu}+Z4vJ_I5x@J}mYP^$ZQS!6kHzL`D{rtJ{W`S-Ir@eKO0vs;7jskj^Xq6P zsEY$e6jIsoj5M*Q`j>Ft05eoN;~G+n77O8FdrBAoc&)Ashe9H+a>K(F2FtQJ4on(_ zKreUUPZLGoym`*tZdq0R6JBx}^99!mci~YO?>!d`P?-D09xBgA_7E{{z7zV8ZFzQI zc~Qs|@6!w0Qlp!jhKo}NrX9JWyFb2f1;6WX60jiCigNwLe)v@|nU^k)hiVuRZ3s+J zjQ;JkvO!ICg}i=xGELD23I91@g3H6}ZiI5XoX$&Zs8N33IgkH5Vk+{efbc!r&5g~m zl!N-|uE#n9dBJmG#)wU~rV;w++(_X5+uZllc*7{2z8-QlHFNZ;>uAfXytT9GE#A*V z#)+It(+1*g208O02aE+?8@I%=mqtOgY8xLh=;t7beQ3sZY>DIfbK&>=_Z9ubb(elM zBJ0Nz69QPVk5Ul#Gt9T>a4AFUc9;CMwFuIQmx{ImK9ovQ9mai}e%AQu(>66uC@rqB z&Rvt)$wy#@0KiwhR9wDO=;&~Lcv!9%1y%Q1U5%x12>~}h6f7c4=h0xw*cII7@SVEj zB3U-69!f9p-ScM&kXp#8{4|7`PFY$LqQ%w7faU}z#Sj>t=2UzTReiB!?~fiteW;`8 z%iOySqgx`5gv6eKj?Z@sw>Bc6nkO1Y$BYP4#nbxlfvwinEIreyB+jQ55{6Pnra@bg zYq(E|1v{WLwt-D=-t4PkYXJslgF-EBU3~Gy5Y^DOkGX>bwdYlSGws+uwQ$9k(Ge{m zWwB3(Y?cS}S>{Cb%Qc_)=jdG5`f6VMB!*teE2vYM*L#2?9fkr=-9|___^p zYCUxpYHT-q-rB2+ZIUJdpw&y3u(Ht~JTP2`HSc>1%c%a^d{K+eFl3xqFWs z?$KtQZq~TeT$7Jb{cs7Jsq>7w1Km35slQv6r zXyGsehSuv}?VLfb6|**}2*%?AgBUG{SUtqa=fwEMUMOp??9CDk?H;&HmfwBleQV>hcLoRgAQoZhwjY~ZY$YX*yXq-L)@v2CutBkDr${OfUy z)XLmpiu9ZWhS%mD7%|E+&y0b(Fk!aC$GefWxxPXCWXFShJ7nN(q!0~mfwMPxI#Z3a z$2?Epxv_4NJ7SF3QT!GfcSTQ}1h(Xlt6CzJpm|=4S_WQ(h#|&)wyB@{{Hu1@7~iUU zf63-F(qn1~w#t9!ed9Xmp$-01vsZI<78!ma?C4`^PIXbebs(h4MS~p@BOF3#7Wwl-T2n%&a?*4mMd!C!CeZnToO;J5oHp$Y<^S zVl!us*^u^~$rNVT`b6Hje>h9{m@ofiVk4*6sjZruYj^~Gz_!q!W#6h|F<mg;eyG!X<49RZL6yqQ$0sRv`u)H!LI%y|H%iC3UpF;UlSn@1 zZ9NuT-JKq;3pn6EFQuu@sO%Hddx0WsV2n%7G_Fn4P`#2d^Ouzsh5P7yj~4~$-C3P_ z&w&T~@mZj8b{0>4`2G2#g3IOlUWG~*>}JfxPv?O?C+|TUzrrfA+#fYEigH)11ip{k z4Yo%6*Vp0Lfg7yiwFoIk+_-of?%;qp3WrwHdEz$7JF2Zd)aNAbW@1;r(nwmSP@d|z zjTqTFDIF`HbaSWT!0LI6_Zec2muM7|d<$P=j|)hBOsXZ7%~GjNW6&FpC*Y95#Xsi3 z3Hw=Q+nlCxmTlYR|Eiv$0X9X*(H`D+&)NK$Zo(|et-vv=7$B@EB&?)%KS0YKobH1RIqk<{IhZC(d z-Q4Q3q0d<$LNf3#KB5_Xkecerk3BB<_B>hQx_j|5KoZ3H3W@$ms8|Q0EO5;#o5Kuq z{#CO#Tp{&q{7&lo!|&#t5#}a zdlkL)%Q3ZJHXCTLQlr}z9X5))~&e{uDd`9}Q1b5HO*D|{SwJ6u0UFrO`7oK&mPV>j<^J{t)5QX zZA4WLl7p@2Avj1k_!r|~Buvd^+WG)9$WhJ#^S^6gz)0?l{jslFX+`(Kgf#*7ky)J3 z-v|COtv9o+mrDzCvgjzHe)&;7KRjVngTC$oOIjs?f~W>M0kHdFFJp^#rq$X_MNQd- z?A1t_O?*Kuy8)e$Nj+l}qCzhqK~A7jXBJ~c*AA(CHeKq_{obUYLS6qsfBY>x?`*-f zBWAp1K)EPzH9y0scbyd$MQ+jxIqppi)4^*s8mMnT$0)t65lD-~uRUJ_$WPPot< zsjEi0QEU`A7T}( zqvhixGH^&p!4Dk6q@39vK`gywDdfOYoJC7h2)T3G(Aq8vXK*$GfcFnl3|$v9$PSlx z$eDV+M%0hSTGn{^(;PF4f;DD`c0iSIfm+p^OMQXni^GCtmE_ga8+C+7O6lIW%xd(8 zEB+Rmv!;0)-$TVrUZzBH$-!p=`>j9*35tRgq0)YTyGkCP119?Rfe$J}7`4=H7MzL8F^y!JE1J zuQDPM{nmjTU1QnTl7vcxTSve+IY^)1O~qdsvm}d%v(=MV6y;T?r?$`>YCb&A@%6E` z-kn=?aVF&YeI0i#w64fK`_laef*xYIkb)y_WbOi#Jr!3X*6{l+;S#P-U z^*Ww?Vzt|-VfyIWk$pL-X%SP-Ly8Q_2i^kegp*b<|+As!uS9#V?Xw~=J%P)CIu znvjbI&v!4n-o1(Z@$_vZQ1(SyfzZN54SH62$us1=LB6=Us_ynOb@GQfSO65#LR#n6 z=|(SMmX1X%Qp)>{S3c9_PBAZ&6cN%#`p@Z3DHm_=n&=y3&4Q5F8}@B_W#QNkAh{24 z2!F6L@7&7%u;rHaYAsvEUB4yN)M%O@PXQwBiLOtQS8IL)YdFVRi^<2m4!Xql0mO>< z5h`$P*e<23q@>zXed#cz%d)?5$q6gKKE`g%>>(`EG4Z&6T|mJvb}++`v<^qereBFE0um zns>fa*(-^4bQ>D8t|!ce6ZeKm|hb;cMJ&YzQVh?0i^xO}Jx(4(^2C!}zaZgHphWmSUFVgqSNXlI|{00T+Clyyb z;q&@H-K5Tyq;%!jJ5et-Hm^MKw6WP=TUH|}Prl{Nw~<+?%@Go~-BBnvA$@Z|%_KFr zD;4yIPMo|r-R{l!Z4to0K-*KhDdhh9=xFoz5mlJ{VW=vmkNdNq9u0j`KsEJnu|CpG zW%%tdcz~%la$yCYL=ln_AhoJ%=KqT^%0W=x-SqOp$2G;Xx%!75j5$})QsC*{jVUWq zJ@k2ScFD8>*TbyOFAjqGJrZ*`4o}`rqqhelvmJD5wR&Ixq%p+irIR>)`?Zwf0hEDb z--LauMZa4x{7c-fnQzmz9r*4CMkv$#$-%x#c>ixB4d&Osy7Vc*jNdoITgwaRUDsdz zIXhFryZ=CrRy>5-D?9c!NO~u(8})MWeB`>PQHW|<8{k#)LzN`g4|WuSa|_bPj-Fj1 zVT7PzR;@K52{O{fKK5`;8*k5E%`-8RI<0jD;~G9>W{7-^Cw_?X2LpoyUmMJ{WH=>< z(8Nz_O6T%j3kO$E)K=o$&mRzPdY0eM4k&ZFtg7Qv9rm^7$=E~ooljapcKjdKT;@*? z+y{dsD!eLyc^EFt`h^m!26QpZ|zkRch)6TyXlg=emJK$1U;B&5ZsTVaic}K5o$4thrSud-)u3D`1O&(44&r4g(q|d zmdb4G?ac}B6K-K|?`aHF!`zSfA$b=@NKg?C_{gxpXWpwUUk)EGPtuq*Zz#+?B>Dok zgm%VgpB~{`GKUZN3E|Kda!}=Kv!2`Nb73D6YPTsGut1;t8Bm|hk=vLqb|=iGEaLxC zM-Hu8OA|I>rkG1N_ABBi2=A+e)&FwnWZ;Oanu}9Ht$ih9Uc_3B?9&p83{8B)SI@(~ zic{9r_(?(VmLJgy2{9iWjV1?-I-ap!TWO6G&()djYK*k75-wKERtpJyKT2vdEQ@msZ6PH?}umars#CJA?F z8sy`s6l(-sPFyDBE~D4d5MA~$1jHw@x>f=4A?;kuI z3d&JaOw48C3fG4?1^wo5UC@1KVcTfd%XKT_u$AJW=*A6_(yp^nwKV-;-)yhW+S~r2HYMG~lCtziZ04=lEK|#jr6k8fk6seq)PnX$Q?u zMD=DCNEyu9iiBQWW!;ED`GBhWFv4%cbE+&vUd!A2)JcrbWa@z_L=1Nz^+yOfx*bZ- z*TP`z%RS$5OQd4s7#A~FYic3Yd&~uJxI24o>wyFx_se@>V@(gP%;>BXzjNj7JoGJo z1|xR$n%Bdg`IDT!lUadX&L8qp{B(hLYPTf#&Oo=#b9XyRf|ozD1*yKX5Q)6+^?|G2M~ZK#t7j zM1|-8gy=+fIu7;)nJQI(u)I7X|JldzOp&_s7;>FAd+aX!JG3Nr;$8ZVv-_H9WETVU zk$>RmOOI<6#9x7U5)}Ooz4Tv;s6{r7@Oyh<AANTnllQlib^l1~T0%z{a;;P;zV#N|>Gy?D}@6||Y{bOzg9 z&9yiR;EyQsALv(2(G3WTV>K{t9<1?;-gyF%r_q`&t@<9Qu_+Rmcy88RvfqZC_9x@Qpi>sYeiDQx{PTVZ;01LFjg|bkkv3Vc)$F*k?zu88$1Fs8 zR|TX!nYnsqVfQObmjfr}-ihfP|C~sYi#C7@j;CjorHNsg4#VjjEm9bWp&a^;VFl@Y zew%Q4C3l{=pIUfLfR|q{X0y&5h2Knyc%%h6$YVwK4pY!ZlEVFvdVa=iHaQ zv3Hkqw6!-kd*OhdamWW8Lg&V}dI!YC%SQI9a&d8eiO}gAURGfNxirdPBnQ+eQ*O?|&GDmh!&!9Kfz*jqAKnjj zR&%y$Q}~pT6-wx3I=Hm3zsn$5%+Hd*rp7#|j61k^FkyE83MC!QJ3yTTeV1p z5ZnW(VXwyOt|6cPd9^Yetw$@80th*$AIH?>m+lLKyi?wG)2WK0s<}O&(wZO@j#=^J zy&Wh_CAu!Zp;=@cJE!w;2;BIY$lEs$@0gh7<4S@iOlcqlQ$3i2+7pfw6+tr33gm6$ z^i3aE9i;~9IAG}G5M-T#vD1hU34Co2Q`0x~l}m{1H&rVnjMe($Pf-k@oI|`v=K>flMQ)odsbf=zBB2Z-661tc| z#(?;M9T_RhoRRPPfo@>nzRg~%U@5Jru($Sc400q8lChOo#oHRn=OF%c^F6?bt5ADi zt*gfQCYSP?kMunb8B!U={IE*_LoG9^f#?#I47;7*;$eMGbIipyQ~FREn@6HHn(b8w z^7>J87MKn5Q9_|_mT$U#{sc!Im0hhNd30;hHBh*`sO7+98GNJ3(awrO39g3-sM)uE zR9*VAE1kqHFazH%)YLp=H)D`-E_n3kZmo7kCJ>}CsPE@~f+G3*-jf@H$DQ}is1wHgN0szd9cf&8Is6Z12fiIJvfr6XC4Pixm zYeF$8ujvx!_TF97!R9hR>X2zJFyuy5_e*xnA4h6$oxx#TLyCSk-xNPM#^%EcC%mLr zFA;~SCf02pL)vt{Jfn&gao$H3?2rjSE%bpBnh%YZ6&=qmWj52)5#+My!JC`8xoC8P zf$RCmZcA!sam-hyswzj;$#IpN1n6quS)h+k{ZxcCg9jcc^P|$EglG|4dxSro>Op{h z+YwPmmu3$M3&<@F*Z)q#dd;Nti<=K~cg_2Y%i>@HtTP;y$u6nbr5o$R(hyoX0lA71 z7lGKT&my*>yhFlqeYhk<>C*glrQzUl0_$MV^>v4!=S9uuY+uz&^Mb&Y}!IoxRlSf5m z{nSHs>~)}uy({_~G#;4gv&tJ#d9pxur>s1J)4hsdgMLs;s4|*4zc;d)qB;3?3CC(7 z?FhsZ!=Ug)fCA*DA3WH%-0*s`MGPn}ts7YR>mkPt+f=B%J5h2@Vf9u9vJAN5__`#oA>M4*$j zXI=I!pQTa_qCznT+1L-jK2axVfZEf$$Lkr;fxO#D}q5GyA`LNYVX_N;HVY zTB-2LyM|tKX4gR|SR-_|d*5~?;Fo%)-~U-D)-{Dy5Ca|awi8Rqv$qWhSSz%ozj$F& z_+@F%@`c#G`7vSSoFFl%Q-HGeTR?8v=!(Tn)0*tq*M z60Z4p5Ub55o6r3Ho6YF)^RJ4&@_+)wS+bgA3ofVD>-8#EL^z*|F37~`wBsH!=CX^J+llqm? zm%orj2L;3~3fhfN!p9H4$84BC!R(?6OD+q-4OgOw{*8vh;o~wUu<^Ll;K!+;Nt&rG zPp8RpKnYHFD5%*V2Zj@^D~51jJ~74yZRwjjVOU>!V&M{&CF60# z7nTr>kCQfEmbU`Q8ztkgL1A(DrRd=A^BthfyOPvR`Cf=GrQ5HtoS}9lJC=v@I-s3} zT#$^)M2Dd7GfGH&yrFUL3tfYm%*%q~3UZh2@Gj~FmHZTL>2m)khN;m{V`8Xt8%1pi z-hVSo<+H!;w*1t5=1sSnPx39-@+|%i^a>~gJt=nj@QlWYUdE}I*)SJkKGt5j%ad24 zM6sCi1E`VLx|@g-e#f3S)r}$hQ37X~PAw}C9=2~~n4l2V7c74Y2Cw5o_im6klXu&r z6TGT}Mr$TLMoiis8NS1gbYI@LINrI>+;#dLD1Oeo7r~v{3x~AnB-pP3cNWQLU{k-n zU>Z*%_(F!JF+mfPsc(xgNZ$cA<_21NJ5X0Ui9KVV9c_c;D3-N#0q1Hwn`m!88VwQg zpA~x4$I_Mml35Rk?m(dMfw_BBdaT75I*tymiaio3h3e(e62Jq}WM_RBjhR5X%IGSu z`KM2qoMB81t{T6UukM&n$aay(7CL$**EC6Ad7#Kv4Sq14il<;j8fyj)&D_?zsy?J_ z(eaC^taYMOpZt5r@reiH8p{0d9hWj7x-$LVgFZ$3u$|vA@ma^c6uye-!|sqEeDRnV zu1eW2BCHMi*v5CgHrnDSw z$5e-64!FAIJY=jU?w(&*LFE#govm(0TM~H<+<$#V*|GyYziJ>T{&EiPIa?mD`DHnu zf}h5f>U5#9QmXDqPkPaNs6FNTLLzqZw5ZohS-#6uS=kS`i#v*CIRA)h>UQb}MD#3g zbl&&8|75sIUC(%fXuU8ZDD=wwHb+HxZ$iK)&q^_S!l0 zFnl~gOZ4ZeP4a!A90@@Oi!^@lC#K$@6dbK{x6Y5}^Al%QhjmaQK#@7>hlu58oYpgs zb1Fw2zl6H5U_6+SJLlq&N<-doaGCwCsWFvWNCxiPq%`FrF<}$^fLn`8`4&T>n*)^B zZRU^SIjG;Pe%9~FOE8z;G~;>*etd5wxx%oH^<$Shsc^*Y{GUWxL$3?4WaL#VfVxS2 zpkNgYz%78Y%H)8}k?pA4$}xApaTk#5gG2_)0Mdl^8g4%XHW)9KVc z8{?|2bI3XIQL7F}W)IU;40t*LWq~g>8!4j(jV-nXCcR1t$RN#n3Z}}g)IXLfP55v? zo!Km8cqYi;Cz*d(8;t1jteI6jj0peC!C_%kJU4fnud>&g@}T?A#g<2>`y=7-m|JEW z;BL|O`c4?;19}h)_J$Mz*vZTTf)bmZxKme2Wh2a$88Eb3i;?;>t!Z-vcDb0X?{)D8 zx{3tH3;%<+%?o8*Y(vF)%_)oXzWK#~y^C@D$0(pi+}YOClO1}^DvP&W`_lvKSLRtC zis`9c53h*Glk~j78(pn{z^U{+&E2!Ft?%X%dc{y4POaN0@j1_;gUH>26GE=d22>Wb z`f427vAx`Mt$5$zVLDvr_y}dzyb9+m+a>>7@#tI z^Fv7^bB0&7^GLpm^nJqTqPBB44v!RV$704z&4Pc*2k({MQ_GyYP!~o?EK8pUgKBV> z-&Fxt2p^Pc$|YF3h$+`Res-{`>cCXOB>kr-`ayb5R_oHU_$A~XddIS>sx22wXEx?# zMIdLl?i{0>sp4Sa*Ecsg7k+Ajb0ndOubv|zX#e*Z=rdQqq4G8|VSy&J*+9fip;+L6qQFz$F3&-IVN_IFDX2N1yEzfKs!)syPMITq`P` z)t1~hkrTCS__N0?z1EF?@hXRPy*t(MH=_VQF zn}OlFub?vdbcXIe6V>h=I>`sk2ZdXPO#Ua2P_LNAj|KSL&J>B!L4nPOtT#@4eP@J&qQEVe##&6>5nMJgWx8K*=M#`Q;C%e>kkW-;Zex zSwKxf%IdW}XCqglAyV?cKq72KYZ<}>?B!@bXG-0VA#Pzq5Zn*8tbpqWBRpQwVytz> zW1v;%&U~7o@@O=fn#XSs*f8<5jg%8yIuT0YIaUi}UGXh*BMf+Q`en^$|4cnyiU<;{ ziRsx~r&0Rxda0TrO*w~NbfhqUR7B`bF1N34#hHVwj!T#^-?L$FI*K4PJrisGTNNu# z8PHFjnrZ#*eKog^ubv!alXBa(J$_3+LZV7Z44%Ni4z)OAvKICvW4za*VEv$Mp=q0Y zSN^HmZwiXC`Enkas`PmyNs)PCNa_3cZxlo4^aQG0(coAl8n%l0mTl3z*xCi3`e{vZ zP@yBKPy0Q|p_E@m5ow3Y;w%9U?^%dLg5i&PJnuS==mnuP;}9)rFK4<`m-6S;#!Kkr z6g@axU)zMNcDRY7Zjc4d=r{3mBH@#Yu)MQ{QAwYo-<9}zE-JPWNgZgrSi04F8Go>863>ZkcI){&+O&+FOk`r$)(!p`iw7e2|k8qj5>EbO*On$Z+ zUdBntpVsO5J;`_mb`87#P_(aN)qfjucKJ(D#qdi9HJnm01 z95wYGN_?2rr-nG0swOuQwBQ&%rcapS2Shp-eL&oqIUn&cL2$PP7-ZT9rF#uvG5sAo z!Gzk=U`st@l&xMCrN(fS6+TeT;q5aF5T0F*Ut{o&U)?%1t|c#H9^RX&^HV~~aV1)V5Zq+C|CdyLIN2T|NH&V`T2teS5$^_jWFr*JUa z14Szi1~E3RHYoxgte6>KqbTH@noXC;%VbTSq$!TgVHaK%dHin7oieYfa)~&+EDQc6 zR&|rRNyK4y=OB%0BF;eHEuKz?S-ro-$k}g8S@^w(Z6fs-WRNwEqGm8F188hgIOTyR z8V~UpfuLDoweGZmyYzA-As=Dm#2kmYS|!}>o}Rpt=&K=keC+Z5L4zMUgR}Ek#^coD zr;%?Q1DAm*N(@_qwq-p65q^JLT1jaKTfZmmfeuEVzLPIEV%(1-SWQ$kO2u=)_Cp(DMP=g9`JC|_p zI3p(?%rxSgc@Z2o^G1t;qohd*(50BZT*)yEWg!Mb@n z&*~k{D+ftBogWlHU2qg9sP6o1Y~JY^!oZQDgO8UomBXt0Z?}qXFUEnLE~CD&6l-5d zdc~?jMW}(Q2}eKin?mRd;rbDcdFC!m?->JY-|XPt(m*?%6K^mHgt<#M_XL(P9Ui^2Ys{m^@hb zOIE&=7)+S&XuK%BftPNws~B$ONNe^EjgIIbgRr2l1YC>RU0ib3 zslaPrmRIe!0EK8sjFaouc#PI2W?MPJUQe6+PON8Gy=CAR;1<6a7OwYXrHer=@&14Ih@y}o2KS=zhb>x3WB8ISSixXbtaN8kcH zwyNkP0@UFRd3Szfau&sk+n6>uns(k>Wa_59WWt*Gu;DzN6wyshd)7oV|5Gytx8*fe zb_BrgARkn~sqbVzk0965p6Le;!vlqi%L{_4AE*AKC(|k0uk>9u6`IQRFmAPaXdYo& z?5*|XV5TYn^N8KE|C|FNao3ps+;oBaTdLnGO8uJxp&)C!iH@>LDIuK8oX5-M(6+Xx zr|l#X780oEkh7hKzND(sz`aaO9Mk1UZQ8LHHGfJdF<^cJ?o;LJimxyU5iV^82~hhpGw+E_5DIJIcecT1vH^#S-A7 z5f~VHvhT(bXO;@#M-La zcEaMo7=_&ogaly&?odmf0L!0Uq*H$BZs+X)_~Dh47Zb#BhIXyZzuv|AdLoY3WL#zI=kMRiL5369?K2v*rip>;24}mLvO$=iBbSq;)+7Wj!4nWVB76g8~}LXxU-DbH{gD(IA^96mJS7`yH`3L4YB2}- zspT6#X;i`(vma#Q1YlUqm@fqd&CAQm*bIA@CMyL7(!nza=D)E~426K+afEZ1vJhjZ z7DJ7ipD8jADvV0v!W`KtM4fUr-+W472?B(I(1$U{SG^7FXa^(}4DdwUBObTp-AqnT z#YQfzGpDT+=SYtc0g!{l8pE48fMeO4CfEJP@*ecgPhN}ZJ2o8e^~W2GHB~;~u(Y6H zLNN`^r~FgpRhbdRo!iC5T0e!?w%O|p*wL(U46Rl=gV^#^CM~N)vnuMoTs#NscJ9wh z^+Q6Ou;sC<{O_{qXmk%Zf~SyI7vo3UHJA^n=mQrC{Z~`7J{Bc)=2MUzo@MJhM2Goh z&y-c}`b&vY1=y4P@|E?Ae`w|L)L(qMU1hrxeSt`2W7Gk1VBL+|xZ1zJuO_&;DZXpz zvXi$Q3pNx;=Ed_?e~xoU1L)xHm-2>&7=^-wpdez#hEFr<`hosrmqrGyWn~)#Wan+O zydNxvPTM(V4aX2XLe$a$Zr8qh&g3;aMnqdR3mrK*^p(}uZlz`hTu#yu5PF)oT#Kgv zaCJ}~3ERS7)Z`Mn4Bl$IJGX}s-gz4bZqrGBD1~?WI)Xm%sr7(nd5Ean2J|eyyO^-q zo2LI)CEY!ETQ`$v+Dl*GNkCZ&>hLL|eLHpzck;^3IXr}kS7NeRn2v2%l*F%agh;n% zlY?#0x0)ZW(bXkqtURXscymZnh!$E_Vtyu!@G3uVQADimIdkK!`&{Zlz$PaPcSEKuV@bK5D2lJU_rG$-|Zn$!}jXB`YY-< z{49#?gF%a?b3Urc`W>GlrklQ2BRx7&pddDDIK=2zN4C3^0Nj(={osiVAM1utQ@5!d zsOz^JOPMI032(Zft0M7cYgRP;W{t~?Ac^fcb?$cz6f{CbgUa;MZ?q|{7Bq+ zcIU%x8|>Id@0mQjuXhciU&C#d%Ny4}gvw#Eu$}Cld#Tj%Vd7Yl{?pmz+Lf+${2Qc? zY^NaFa5N#u`LzTC{3P#qJlS03U+!_b&}~28I_H;9%f~u zq0u^V%5hZ1Gq=WVuRbauoWngw`g~84mXrl|>8h(>x^(m=9|Mu3N+|Pk)>3!=z*$_(<|ok9d+A3)Rch zBU&H%Wl;ubf02o*#QJXeft_&zaU97Q@`xNk?l`z&8wQ4>zGw(Tf3Fs>zY2^9vi~?Pr|JIM*|6OKWqV}rgCrL{H^+w-r)Pe;C}p=-Q(NXK)-ch7Fgu&r6c&r- z8RXVL2}Zjrhdm#ooRLk{s&N$^@;e4=!8k)3dqK42vDi%B3v#6fV~Z?u>N2 z`({j(oqW5r$o{2ob!QDPFJh6t*n?2I_Hw(gc!SCh;;2b+h3@urMxu&;WLHR+a)AG2 zc4j{7af4rVsqn(rRYd4HiHC&VFdMRik9;K1Z)F2phxpSQY1OH>drt87>JBgUGH#h@ z;&{~n`_|dVB5Wh4!;I_K33TzwO1VZ$6J4r&D>HLb4uugh_xIKmz8*iO701bR_1mjS6h#kX zm9Pg~l;HV#_>M9@RiXuEni|-yhg27jkB!7j?&7MHkkXt;B#nG=6waAp`%p<{i-nR| z>1jHas)*`qNvd5ADlR}#PA+95Em(Msdrp>#LBfFFbvC55sjn|koq}aS-zcq@_7o9C zc<;9oj{VnM1V7GT!F`$&_}XlkpN=d@lE5zm4mk(}Y(U-ut(J|`nU;m}`E@`U{Aj46 zvAKh&-1gZp-tRT3_UV?YbAUo^#A=4%#|-MJuXWCHB7e8!-tks}dF(>94|N<1$8U2lboWvJuZZQ4Ju%=Fjl9mN`9Y<`JTY6JQ`8G&Le@3KbZl(n@D#8tCzLq_ zotOX8lWwoA;I;JKPOUr2l#D%C+rdF3%lK-k~Xa>s{Ts#5V0- z58=E7@7=J6!0}LI?{>!NmlX~50s_qn9&Z-VU(XtfjMRO8tdQiQ&)g1GXLCX?0P>b1 z0+^n6w#j=PvM5y4GH)mMO+fR}1)!ijz%-S*TCalo6b7=@@BAyWgZR-49E>at|yEW9*=F~3s+pvi-RPr&Ks zKI==Nn9*skq^2^d>0OX5kuX`0BHs*L_dIdDpF=eB{LyR2akIFKonyKi&K)ftoqXAo zQh}d=r{6oywz*wasPP;}JNpl_lnl|=GZ#F8uXlj|e5fO*c^mqO3fX}?qA#)dl~Z$m zQ9y{ie*d}U`vCulghf#wO>Vj8o%Ni9R^=MkCCb)rv0FK{O!4LX1k)FL*Moy}F5(=o zWn=YPw4BsN9S>&>4IO*q*A_sg1qbv89T+IzNW48|gIEOK?&>|2iBkD|9u~WJ6f5ed zE=e?OvPvuwRn-p4{JEN1Bs-633#%?}vwOV@dtaDpZ@;a;D;yVSF z*P80F$GwC&=Cg}QDK&*pb6Pz-AjSKLWG%t@QUY&qxm~q^@8+c$jkbj?du#En4z&-M<0b zhYdw6o+U95G87!~FsU;y=Te+}c*ve&?fX+EvSd!S%BrP5ulm`$tKLIhN4c}b6VIau z=ri%VhlLr2F!+T6bC7}L?>ITX%&|QR0NzeQq{x!w*}YS6?SX`*aKN24IGn>{MGCmF!O-}>|(i!&#l)xdGwy*e`0ZK z{5Os|1Em9zUKK~Zoi6rHlxRG>FL&k*qU<2>x1A4suu5N)3KY{}&Vxu7Z1T0`J#W{u zfsX_kZd)&AQjkcqRO0`@1oD@5+qhnOGlfkeqouR-{zuy^rYZ_J!=hg0jbmHp zow@E7T2AwCw0P91Ux**Nar1BNqs>+TdQ1kO^VUL|iOdeG7p}etD~fi%pLFUV$eS@L zp*eLVe>NJIO~tXV^f6c|uFwxzIxbK|Q#II@9%G5uOzHZrG|RckI*z4wnY; zTg!~sM&!Hdi7%Dy#lZ6lk~leE;t_jJn{I<4Cz3D(v;%_Hyup8 z%Eg>i2J+``EyRB*jHtu+pQ(H0c78bgP4pVp;EhOdQVf}QSvE1=Qc+e1$zsMeJhjqT zXW?CgbPz&+&5ngX8fNCRLmj$Ur}yYe9Q5zHh!+3nB);)rA`5wGr|GChLFl#0&hc#5p~k}FrOkWl{Q_h z=F&=+NT^U4!|L<>Mp~ooPt=(uUU%1Gq`to|XI|noE9hGz>V>zARK~;xisEL6taAqksHmOc6R#@dsT<1LEOngVu2bL>Gw3!uJCmfhb`49(=7xV zTMN5YK>&5BX?l7HeRSEU&VN`x!yzA7`Fs`gKg=8-x*Bd>##+M);ed zM?1`Y37yFP_AZFd?@7{#iHFfZ;-sW?ti*O{_KjBp&5?ti!60aSkP<#8Q@k74!cJ!T<@oUrXn~Z|0+_7@)sfFF6!3k90>@kXxOuJ(9a%)X zvOJ)PR^p+t$6;Nmj=C-SuNt?0*5{0;^I2^#SaH$EpL-}&jf%gYN+%#|cyPH`l5y-8 zQZtcR5a3zp;!=_2C2TmTzC2m;RVOyK^(DjI+;!l1;dq7?RMGdCEweuS{e&`pQs-jH zs~K`p$_G9yJXODs_&YSg z%u>tNgpV5Vk2l)rO=Zk#vY@pNyA%7>q{(z^=YOmXRqR5Uu|1ycbY!

g!lAmaX7NfS-Z=eEp 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 literal 0 HcmV?d00001 diff --git a/app/helpers/open_graph_helper.rb b/app/helpers/open_graph_helper.rb index aa981b359..cd764de33 100644 --- a/app/helpers/open_graph_helper.rb +++ b/app/helpers/open_graph_helper.rb @@ -1,7 +1,7 @@ module OpenGraphHelper def open_graph_tags raw [ - tag("meta", property: "og:image", content: image_url("ralph-gradient.png")), + tag("meta", property: "og:image", content: image_url("thoughtbot_horizontal_default_red_on_light.png")), tag("meta", property: "og:url", content: url_for(only_path: false)), tag("meta", property: "og:title", content: page_title) ].join("\n") From 98938921a804113e50b97e11dbfe6c1eaaba2b29 Mon Sep 17 00:00:00 2001 From: Alex Chen Date: Wed, 26 Nov 2025 12:50:53 -0500 Subject: [PATCH 4/5] Update footer responsiveness --- .../marketing_redesign/components/_footer.css | 19 ++++++++++++++--- .../marketing_redesign/_footer.html.erb | 21 +++++++++---------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/app/assets/stylesheets/marketing_redesign/components/_footer.css b/app/assets/stylesheets/marketing_redesign/components/_footer.css index f0b733836..d7d730c6b 100644 --- a/app/assets/stylesheets/marketing_redesign/components/_footer.css +++ b/app/assets/stylesheets/marketing_redesign/components/_footer.css @@ -2,8 +2,10 @@ footer { border-top: var(--border--footer); display: flex; font-size: var(--font-size--small); - gap: var(--space--x-large); - padding: var(--space--large) Max(var(--space--base), (100% - var(--container--large)) / 2); + gap: var(--space--medium) var(--space--x-large); + padding: var(--space--large) + Max(var(--space--base), (100% - var(--container--large)) / 2); + flex-direction: column; .logo { font-family: var(--font-family--body); @@ -22,8 +24,9 @@ footer { nav { display: flex; + justify-content: space-between; gap: var(--space--large); - margin-left: auto; + flex: 1; ul { --color--link: var(--color--footer-link); @@ -43,3 +46,13 @@ footer { } } } + +@media screen and (min-width: 600px) { + footer { + flex-direction: row-reverse; + + nav { + justify-content: flex-end; + } + } +} diff --git a/app/views/layouts/marketing_redesign/_footer.html.erb b/app/views/layouts/marketing_redesign/_footer.html.erb index 6522af471..e45d1426d 100644 --- a/app/views/layouts/marketing_redesign/_footer.html.erb +++ b/app/views/layouts/marketing_redesign/_footer.html.erb @@ -1,16 +1,7 @@

-
- - - -
- +
+ + + +
From e5dc65dbc3071d3f19c9d8e7901f7f943315f527 Mon Sep 17 00:00:00 2001 From: Alex Chen Date: Wed, 26 Nov 2025 14:35:56 -0500 Subject: [PATCH 5/5] Responsive header and navigation menu --- app/assets/images/marketing_redesign/menu.svg | 3 + .../marketing_redesign/base/_layout.css | 10 ++ .../marketing_redesign/components/_footer.css | 5 +- .../marketing_redesign/components/_header.css | 128 +++++++++++++++++- .../marketing_redesign/_header.html.erb | 84 +++++++----- 5 files changed, 186 insertions(+), 44 deletions(-) create mode 100644 app/assets/images/marketing_redesign/menu.svg diff --git a/app/assets/images/marketing_redesign/menu.svg b/app/assets/images/marketing_redesign/menu.svg new file mode 100644 index 000000000..610aad5fc --- /dev/null +++ b/app/assets/images/marketing_redesign/menu.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/stylesheets/marketing_redesign/base/_layout.css b/app/assets/stylesheets/marketing_redesign/base/_layout.css index 46a01aa75..781a67bc1 100644 --- a/app/assets/stylesheets/marketing_redesign/base/_layout.css +++ b/app/assets/stylesheets/marketing_redesign/base/_layout.css @@ -11,3 +11,13 @@ main { .grid-full { grid-column: 1 / -1; } + +@media screen and (max-width: 988px) { + main { + transition: transform var(--transition-timing--base) + var(--transition-duration--base); + } + header:has(input.menu-toggle:checked) + main { + transform: translateX(22rem); + } +} diff --git a/app/assets/stylesheets/marketing_redesign/components/_footer.css b/app/assets/stylesheets/marketing_redesign/components/_footer.css index d7d730c6b..09d9bcdce 100644 --- a/app/assets/stylesheets/marketing_redesign/components/_footer.css +++ b/app/assets/stylesheets/marketing_redesign/components/_footer.css @@ -3,8 +3,7 @@ footer { display: flex; font-size: var(--font-size--small); gap: var(--space--medium) var(--space--x-large); - padding: var(--space--large) - Max(var(--space--base), (100% - var(--container--large)) / 2); + padding: var(--space--large) 0; flex-direction: column; .logo { @@ -50,6 +49,8 @@ footer { @media screen and (min-width: 600px) { footer { flex-direction: row-reverse; + padding: var(--space--large) + Max(var(--space--base), (100% - var(--container--large)) / 2); nav { justify-content: flex-end; diff --git a/app/assets/stylesheets/marketing_redesign/components/_header.css b/app/assets/stylesheets/marketing_redesign/components/_header.css index e9833ff38..625d3d90a 100644 --- a/app/assets/stylesheets/marketing_redesign/components/_header.css +++ b/app/assets/stylesheets/marketing_redesign/components/_header.css @@ -1,14 +1,49 @@ header { + height: 6rem; +} + +.header-container { align-items: baseline; + background-color: var(--color--background-base); display: flex; font-family: var(--font-family--heading); font-size: var(--font-size--ui); - gap: var(--space--x-large); - padding: var(--space--base) Max(var(--space--base), (100% - var(--container--large)) / 2); + justify-content: space-between; + left: 0; + padding: 0 var(--space--base) var(--space--base) var(--space--base); + position: fixed; + top: 0; + width: 100%; + z-index: var(--z-index--ceiling); + + label.menu-toggle, + .spacer { + display: inline-block; + height: var(--space--x-large); + padding: var(--space--small); + width: var(--space--x-large); + } + + .spacer { + caret-color: transparent; + pointer-events: none; + } + + input.menu-toggle { + display: none; + } .logo { + color: var(--color--text-base); + display: inline-block; font-family: var(--font-family--body); font-size: var(--font-size--body); + text-decoration: none; + width: auto; + + .subtitle { + display: none; + } svg { height: var(--font-size--300); @@ -18,16 +53,25 @@ header { } nav { + background-color: var(--color--background-dark); + bottom: 0; + box-shadow: -8px 8px 37.6px -12px var(--color--gray-400) inset; flex-grow: 1; font-weight: var(--font-weight--extrabold); + height: calc(100vh - 60px); + left: -100%; + padding: var(--space--base); + position: fixed; + transition: left var(--transition-timing--base) + var(--transition-duration--base); ul { --color--link: var(--color--header-link); --color--link-hover: var(--color--header-link-hover); - - align-items: center; + align-items: flex-start; display: flex; - gap: var(--space--medium); + flex-direction: column; + gap: var(--space--small); margin: 0; padding: 0; @@ -40,6 +84,15 @@ header { gap: var(--space--x-small); text-decoration: none; + &:not(.button) { + padding: var(--space--small); + } + + &.button--secondary { + background-color: transparent; + margin-block-start: var(--space--medium); + } + .icon--new-window { height: calc(var(--font-size--ui) * (17 / 16)); position: relative; @@ -51,3 +104,68 @@ header { } } } + +@media screen and (min-width: 988px) { + .header-container { + gap: var(--space--x-large); + padding: var(--space--base) + Max(var(--space--base), (100% - var(--container--large)) / 2); + input[type="checkbox"], + label.menu-toggle, + .spacer { + display: none; + } + + .logo .subtitle { + display: inline; + } + + nav { + background-color: transparent; + box-shadow: none; + flex-grow: 1; + font-weight: var(--font-weight--extrabold); + height: auto; + padding: 0; + position: static; + + ul { + align-items: center; + flex-direction: row; + gap: var(--space--medium); + margin: 0; + padding: 0; + + li { + list-style-type: none; + + a { + align-items: center; + display: flex; + gap: var(--space--x-small); + text-decoration: none; + + &.button--secondary { + margin-block-start: 0; + + .icon--new-window { + height: calc(var(--font-size--ui) * (17 / 16)); + position: relative; + top: calc((var(--font-size--ui) * (-1 / 16)) / 2); + width: auto; + } + } + } + } + } + } + } +} + +@media screen and (max-width: 988px) { + .header-container { + input[type="checkbox"]:checked ~ nav { + left: 0; + } + } +} diff --git a/app/views/layouts/marketing_redesign/_header.html.erb b/app/views/layouts/marketing_redesign/_header.html.erb index a255d9f89..74ea1564f 100644 --- a/app/views/layouts/marketing_redesign/_header.html.erb +++ b/app/views/layouts/marketing_redesign/_header.html.erb @@ -1,40 +1,50 @@
- +
+ + + <%= link_to( + {controller: "/marketing_redesign/home", action: :show}, + class: "logo" + ) do %> + <%= inline_svg_tag("marketing/upcase-logo--small.svg") %> + <%= t("layouts.app_name_subtitle") %> + <% end %> + - + +