From 8ec3f51792923fd4db5f8e934ad08d25f61bfc99 Mon Sep 17 00:00:00 2001 From: Devin Willis Date: Wed, 26 Aug 2026 14:49:55 -0400 Subject: [PATCH] Add a scannable RSVP QR code, print version included --- public/assets/rsvp-qr.svg | 1 + public/css/style.css | 15 +++++++++++++++ public/images/rsvp-qr.png | Bin 0 -> 7747 bytes site.config.js | 1 + views/index.ejs | 13 +++++++++++++ 5 files changed, 30 insertions(+) create mode 100644 public/assets/rsvp-qr.svg create mode 100644 public/images/rsvp-qr.png diff --git a/public/assets/rsvp-qr.svg b/public/assets/rsvp-qr.svg new file mode 100644 index 0000000..a2a4e53 --- /dev/null +++ b/public/assets/rsvp-qr.svg @@ -0,0 +1 @@ + diff --git a/public/css/style.css b/public/css/style.css index 1de21d2..460894e 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -361,6 +361,20 @@ form { margin-top: 2rem; } .form-status { margin-top: 0.9rem; font-size: 0.88rem; color: #fca5a5; min-height: 1.2em; } .fine { margin-top: 0.9rem; font-size: 0.78rem; color: var(--fine); text-align: center; } +.qr { + display: flex; align-items: center; gap: 1.4rem; + margin-top: 2.2rem; padding-top: 1.8rem; + border-top: 1px solid var(--hairline); +} +.qr-card { + flex: none; width: 108px; height: 108px; padding: 8px; + background: #fff; border-radius: var(--r-control); display: block; +} +.qr-card img { width: 100%; height: 100%; } +.qr-title { font-family: "Space Grotesk", sans-serif; font-weight: 600; color: var(--text); margin-bottom: 0.3rem; } +.qr-copy p { font-size: 0.88rem; color: var(--muted); } +.qr-copy a { color: var(--accent2); text-decoration: none; border-bottom: 1px solid var(--border-hover); } + .rsvp-done h3 { font-size: 1.4rem; font-weight: 700; } .rsvp-done p { margin: 0.8rem 0 1.2rem; color: var(--muted); } @@ -421,6 +435,7 @@ form { margin-top: 2rem; } .pitch { padding: 5rem var(--gut); } .expect { padding: 5rem var(--gut); } .rsvp-panel { padding: 1.9rem 1.4rem; } + .qr { flex-direction: column; align-items: flex-start; gap: 1rem; } .foot { flex-direction: column; align-items: flex-start; } } diff --git a/public/images/rsvp-qr.png b/public/images/rsvp-qr.png new file mode 100644 index 0000000000000000000000000000000000000000..8659d6fa03f1f8c30a66ca7f39c0ab87f58b7688 GIT binary patch literal 7747 zcmeHMZERCj816>1Sd!_FY77uUqKW-66C`}pIYyPBQ0G=8I07bi1_Uc)i$V86w{??+ z1Ovg?;K<505*ZK>=h#4@bgf%NS?s2RF*mqv7ugzM>n*Ez?`+rWbI!Tl#+Uj>xF-HN zr#<&}Iq!Mj=Xsy!Z0E|H<*CzWPFJZ^sm2w{R;g5Kd{nC*Nx@{Bowi-2dNO8Q_R{L& zq~ULycISQnsoJyQ?aEdCwyZZTJC{FJ+!m;`8=i{)5uKBSUmVTGP_a#m@qmx~r6YQ> zeEt9Be{d#(Zm`f4uyI!X@j{bW>vIll8m=oHbUEgZ)U|Bmhq9bHGo~~;9qI{bVvSb* zP>+I-+19pa8=n&QhBQBI7OMQ$T#m-!y6}9TbF4dbzS`%s-14Qy9GtfNoFao5*SIf* zG=^VYv&zrW{gQ33k@IqmtXlQv{>-rsHnE3e-Bx`p$El0$67t2eXHfkwx-=M979?Z5 z=)j=5rG(|ERu#7wnrd7{k-b8GYm0TXLC9Y>QWwr}62 z#?DVzySE5c^-b39>n=yGQ|B!-wT}9{sIMe(w-QeJuAK8G@ubgLDShbF9Vc@QXWs}^ zmr#rY{K!drS22)NtzhC5bg?6xHju${r552}4+BWYRGi2tAG>o=V^}Y!#ZESw|T}lBI)y=$Lh8p~9=bI0S$ z#d(w5h9sP#Ui)lnMi)I1L zsYt^Vy}{e6<}@c{EHO$%FF{ZY6fs#vfkrSzt8~iE19_>^Hvd1-w@_$P{Ra`ad<0Gq z%?V-G!W8&a*bPL&#>eX?sGW3UX0=EILp2(kCxkvoGM00j;!t!Skey_*WFnVA6M_nw z35-$&b(>8x%6fzxb`7;@44Sg6C(=vl9f4fqc}yh<@<7QMAs~@1a$SjQB$+|UAz(3F zpiptxF;eG|&P<{V%9m%iVse(mS`bMYRmixuBsxUNqyar8cQE2gh)72_rni%<7;(p^ zj(dp+hCc>v%x5f#WRa`CmYRg04BM7ov8`6AQj*F40Y>m&0M8Fe>aT7FDzY!y8eUy= zf~&M|4>)uh&)F3GW?wJ)VPqzTytk%d{Bbjeijq`}&oz=ZGPDrGzy7kIjeoHfR|283 zX{9&z>tdNg>p;=|NR|J6-Z8f}ay2WsxKbMQ>CG<$H8#^j+~|GI%aA0tcb2sA-w597 z&XUo+R)6WW{W|j*!FzNo=pP$D&7L&i$sl_ozxZrM@cf!kS@SSnN)Kw>pFg-$zfUmt zPQIY6Fkp|z5MF~EQ+n|H34A1ZnT#}+Ewqkxq?~4*$=nBL!62 zT`@;Bwo9&pfaG-*h_kWv?sQY@2c358c?eZE){SLrs4ODKOe%A2VW(EqJshCiwf!mE z;B_%no5#>cBH$fwu-)g@MmAt2my2%fVGjVP4frTJLS^mz^R)Wf`FD|>2ao%|3Ww3p t_zl1G1ooDOne email a week at most. Unsubscribe any time.

+ +
+ +
+

Point a phone at this.

+

It opens this page straight at the RSVP. Screenshot it for a story, or grab the print version for flyers.

+
+
+