From 9b32dff138a0205121bb1b7085ccb773d93533ea Mon Sep 17 00:00:00 2001 From: Emi Griffith Date: Fri, 17 Jul 2026 21:26:42 -0700 Subject: [PATCH] New brand mark: C1 step-curve logo wired through favicons, PWA icons, and header (#169) The mark is a quantized climb through the temperature-band tokens (cold -> cool -> normal -> warm -> hot -> very-hot) to a rec-hot terminal at a dashed record line, on the dark rounded tile. - favicon.svg (canonical) + favicon-16/32/48.png fallbacks; the 16px raster drops the whisper strata and record dash so the climb survives - apple-touch-icon.png 180 rendered edge-to-edge (iOS supplies rounding) - maskable 192/512 scale the artwork 0.78 about center so every element clears the 40%-radius circular safe zone; any-purpose 192/512 and the 512 OG logo.png regenerated; reused filenames cache-busted with ?v=2 - header lockup: inline glyph referencing var(--cold) etc so a palette change propagates, beside a lowercase 650-weight wordmark - PNGs are palette-quantized with the band/chrome hexes pinned exact; full asset set is ~20 KB Claude-Session: https://claude.ai/code/session_01KdTZCjpLeD26ZbXe6ApjpR --- static/apple-touch-icon.png | Bin 0 -> 2101 bytes static/calendar.html | 11 +++++++---- static/compare.html | 11 +++++++---- static/day.html | 11 +++++++---- static/favicon-16.png | Bin 0 -> 397 bytes static/favicon-32.png | Bin 0 -> 949 bytes static/favicon-48.png | Bin 0 -> 1366 bytes static/favicon.svg | 20 ++++++++++++++++++++ static/index.html | 11 +++++++---- static/legend.html | 11 +++++++---- static/logo-192.png | Bin 4420 -> 2299 bytes static/logo-maskable-192.png | Bin 0 -> 2579 bytes static/logo-maskable-512.png | Bin 2554 -> 3374 bytes static/logo.png | Bin 2652 -> 4650 bytes static/logo.svg | 7 ------- static/manifest.webmanifest | 9 +++++---- static/style.css | 4 +++- static/subscriptions.html | 11 +++++++---- 18 files changed, 70 insertions(+), 36 deletions(-) create mode 100644 static/apple-touch-icon.png create mode 100644 static/favicon-16.png create mode 100644 static/favicon-32.png create mode 100644 static/favicon-48.png create mode 100644 static/favicon.svg create mode 100644 static/logo-maskable-192.png delete mode 100644 static/logo.svg diff --git a/static/apple-touch-icon.png b/static/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7d293dd3bbe5797a40c265f2b1574a2df4f590ed GIT binary patch literal 2101 zcmeAS@N?(olHy`uVBq!ia0vp^TR@nD8Ax&oe*==t3;{kNt^y*`Qo8CEMtbVPGLw$p zbDn(o+rchPbgY ztx;-gbaih@qTkVKcRvA{HK8uWbGJOM3`|*mHZZrYc|}&~*41VKDOzEcwhcica|@>= z+xJzaNEtX!pO#(BCzsK;`17hfH8;~}U;7|$*Ia9p)OpjECPz!@JIPz>sLLv-`)9gp zX~c&*x%VbSb}g$9w@zuFm9{v!e8ILk;XaevGxn6ZELdN3c~UIUQ=?!s1V{=2mRov8 z3=E76B|(0{|ET~-vV4#!?q-}R1uPeyc)B=-RNQ)dH$D2cfdG2}_hqd{Wlq&KEW6Yf zJA9va|G%|qSklc;0V?Nr7yS=^aNMiTR&2~` zDlT)p|9kDC#>M9CZ48Tq*!QacN^UleR1)|d*&@QYXh(tAS{BAtYxK^{Ty;Gf1d)`w1(nN2phE`Q=e`t6@{65ai|E=;!B760UGjJwsM=6e@^Gt0UuyKukC zka+!qwaHE?+VW*O>lTBH)>a?6`@c*Kv{AA2ykh_ItgdT+$)m%`wJ9+lRWxipb?W9_ zcN6}pU^MGuPuiBoe=l}$IJEBTtD7&nAid+_@6)c2bY}lKB_>$);ojFGUbQcCl&Y>O z9J#BR;it2b7XC6PHV1hlPEN|ySxTP^QNGg&NoHp9&rXj)veoo(3Z!>L*eo6lW5 z{BYyx4%5@RJsBd|F3f*#S67J1)|aokJ7a2@1cTX@J1j zIfD&>ns@u6xVU)z^2;xar>-x(xJmkpl6zfqZg<0r*-vv*uRFZ2>TTU8wk@3PS7~qf zsfD+z?|3Y`6qmgAh1vXxLF~DkU`|RaVSk|>?I{QH?7#kt4Whi?Oq1MS_+Jf=&ehM+ z_rB<>m*cuQ-0qv##klLXM*Z0tKa+f&U*x^NVb-=SMy%OXdGdS5T}vHJLfq_cd^v5= z`|scL&?)iyA?q?0Y~S`R%R~z3`xmQT$eXiVoZT-042b)DCI9v>d)!>IPh!#M!!_@= zw{BZ|toViX%Na}NHeI*Np%FuPxrQlmgaNuqSdcE^K_rt=t{3G z$u?Yf?t=U5%|&)S>sr~eGIp@OV7?gbQ}V0xgUN*;iT=H+O>B=D535{Qb!ufbGmx4e z{MV6bt(EfEiXyHTp}mupMJ}wCpB(hq)j25Rg7AH=+Vk`HFZf^jJon72kLs>dQ|7In zH;L)!+Q1Vwhwka<^|GDR=*(HevQ*xi$=Lm+J@fpX1>MF^czp|ucYezK{UX=Yqd3@o zi}C$gNkMm3h+IFnJL<_5`;Hsue!t=}$@y?&vDkz+>8~UAcHDjMc7q}G--Fsb%ed!z j!*5?K-}5PMzwBRo(OCXdKUT_if{GwdS3j3^P6 - + - - + + + + + @@ -29,7 +32,7 @@
- +

Thermograph · Calendar

diff --git a/static/compare.html b/static/compare.html index b093be9..ceb8a42 100644 --- a/static/compare.html +++ b/static/compare.html @@ -14,14 +14,17 @@ - + - - + + + + + @@ -29,7 +32,7 @@
- +

Thermograph · Compare

Which place best hits your comfort temperature over a date range

diff --git a/static/day.html b/static/day.html index 7e50f9c..f13305e 100644 --- a/static/day.html +++ b/static/day.html @@ -14,14 +14,17 @@ - + - - + + + + + @@ -29,7 +32,7 @@
- +

Thermograph · Day

Every percentile boundary for one day vs its typical climate

diff --git a/static/favicon-16.png b/static/favicon-16.png new file mode 100644 index 0000000000000000000000000000000000000000..f9764ae2734cb4a3c42e60212c7e580cabc703d7 GIT binary patch literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfgaDrq*Z=?jckj6xKCkr1>_Xr6 zm9}jgYg?nuif3NW@NZ6V-4*ZN8f>0sqAzRWs;VF_B_S&)DlGs+BGTDB(uq9M+}xrk zmz5RI-tc-tK;nc|&%6BuMPzKMe5O~%1m@PP4RQ)}wNi04GII7)b~cc=@-fiS5>wJs zmQfHDmjS925SHQ>mI@J)Q52MN=aT|DN=Vk>A&@dC3GxeO1Ue2GEPnyyNq|K@AdCNB z^a;deDBnBvIZ$tnr;B4q#jWHE>`ZJL44c2YnzFVoa0mz%(NIueVZU{Y$$>FbV)}e{ zcYp2`vU=&QdEBgu+FeF4PX&DD$??R$*ZWS$S7x3 z0i&pAp{1Kzs$xgOJ`-#0ZlN;@nG-HoR$hG&#+~q4X4ZE`jddb>-})tN1-gU5)78&q Iol`;+0OU58+yDRo literal 0 HcmV?d00001 diff --git a/static/favicon-32.png b/static/favicon-32.png new file mode 100644 index 0000000000000000000000000000000000000000..1eb8872e135647152bc6c598dc4f7fdaf6c96c98 GIT binary patch literal 949 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0V5|!8332`Z|NrWZrPa&!dd-b~ zKRM8O^5J(A17A)IbnM;xsM~j1L;UpG#HqEh9@Xh~)q&<^^GyqKfZR@M9F0O7a zqoymarYxnRFQcq0p{y&WY$&OuDW#w(Bd;nUt1K)oFC-=_Bq}Q?Dk~r&ttc!lDl9D^ zEUhXetso>VFC@(=B<&?AD+m*csE(lKp zCdkB4QfKlBm>zOGT^vIyZuMTi9(KqVBJs zes;#2`xe|>)xgAbk2Q1Fv&or1Dg+H&R$1T5%(QyS#>_OSHpP0&!DbGoK*@;v`yaJw zFm>*HRiY?suOcvG$`anpR?fzVtGnW_Dl|zjJ-a!-O(Em4yD?MMjf@HFW3Mh04`#{s zI^fc?(!BYgbW=u4!gK*6&I62W>{S*8veV6&wb+^c{dlwAO3$0rXi;CZMzrM6u4ma* z3}OG?9R7Ol-yHkuZ>cVo^*g@YU;q94^S^8Jx$Dg}d3~SG0;T{4Pgg&ebxsLQ0NEIg Av;Y7A literal 0 HcmV?d00001 diff --git a/static/favicon-48.png b/static/favicon-48.png new file mode 100644 index 0000000000000000000000000000000000000000..4d867e7e528cf3643a7d4a19a498d24beff17cbb GIT binary patch literal 1366 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBgK_U=j=P332`Z|G$`&V%z?cHJi>i zZ#-VK;qsLg)t8r7RxjV1u{b$t!QuDw6HDf8^_m+kA)`EV=FAV%L-VGso<24E{p3LB z$%h~H`lofyebpX#r``Kbn|EnzWJ2rg_{OPWb&Y;`&6UZ%CdrK%VXmQ}p_(Cu3j!RI zd;;U$OqHCYjT{1FtaX(vjkQdjBaJoHjP2Ep?6nNdeGT-@40J>F)lKzvb#;xUbk+T| zHN`b7Wz=+KRrE!bv}F}F#TC@$ zQc+k^QAk`~SWH$(OjZzxM5P6QNJN?+h=ipzg`|~)q!opvyLsg&9liJMU>Coz)Rk3L zt*f$t3UcP|5Ehra)f+OQG0nPhO-xPSp(+oH%0;#Lad)$Wj8YxWB>4c1O-t}dNJwx< zNOFzK6A+a(j3`PCcggXwaC380c8;lYG7%P&6B3v6v@=t%)3dhrQ!{grHPx~((o;3E zQ`EKa($SLCR+G?HbJ5aJ)iRLKw2}vgf~uN=s+O3liK3#GjDni9f||I3hNQd#(0L+q zS`xBKk}^sXGAd$HN+ME9l9DPSl5)xta>5dFLJ|tX;tD|Pq{L)^_6my0Nr}p6i^vIx zNU00U$O5$sO9=@}2?|RI2ulG?(-e{k6p(Qfkjdwli|3c?=TiVC1|R^YkXdKq?gFVz zB|(0{j5{I15ONYLG7rM$L>AHlaWo(zcK?k`s=J%J{{O%D|NqJV|8GKse?q9g|NsB^ z{{q4Wk$?VkKsen0|9`mq|35EW$^ghR_-|WL2@+YgxMSUaqyPWU{{Mge{}Z?xpms1| zW?~Tb$vzHD-?pAEjv*Dd_FnrQemOvd{lkN}!lmz6&n=G-*{J2WCOUYB)~p8yVvp?7 z-oeGByJ$hDlM7>Dw0q&!hxR6CYjh*$$^HFzVc+j_f9Fh}f3Nn)hxoP=%mPWbl#~pG z1TL>(lnS$%~EZZbs@jYDdn8PA1p`B6Atf||i&BVcnHT+}tgUViKb@Be= zmV8;;Rz8>-Y(M?y-)Sw^xfH(LES1m5uKuk&)oZTJ!Gn%YY)Q-w3M>oaUoPU6j%Y#k193(he4*p+84jhdR;cyGGe z&a;~y_pTCW57o7s9Fu%A*zIai>--1BY<3&i`(M9$cDv!4-~&d_dFPncMkf58c4y7R zgBHn;S^1cJ<1EefUhVXoB%D5P|D&syOC;q54eX2GIBwojxO&3} zox?sSYR*dtUzo%C?SoDI&Bv0b4Y-$z+B-8wSL*yORk(KOZ0N&+A5A=BM|3v*WWJ&$ zE*Z%1AkZlD%ao&G3Ty!jVx}GzwTcki%<0ftRlVN&F`G?uvh-HYEw}GF++5nfX6gGo zU-*5D+a8^(dj9X1`HvgCrPjT%^%~DrFI>ztzp;B!rM>LGyV=k9tA2mV?Adl@5ilDt Nc)I$ztaD0e0s!x5QAz*+ literal 0 HcmV?d00001 diff --git a/static/favicon.svg b/static/favicon.svg new file mode 100644 index 0000000..e21e70f --- /dev/null +++ b/static/favicon.svg @@ -0,0 +1,20 @@ + + Thermograph + An uneven quantized climb through grade zones, from Low blue through green Normal to Near Record + + + + + + + + + + + + + + + + diff --git a/static/index.html b/static/index.html index 392eeaf..06a2987 100644 --- a/static/index.html +++ b/static/index.html @@ -14,7 +14,7 @@ - + @@ -23,8 +23,11 @@ - - + + + + + @@ -32,7 +35,7 @@
- +

Thermograph

Grading today's weather against ~45 years of local climate history

diff --git a/static/legend.html b/static/legend.html index 3160cd6..613a14c 100644 --- a/static/legend.html +++ b/static/legend.html @@ -14,21 +14,24 @@ - + - - + + + + +
- +

Thermograph · Guide

What the metrics and percentile grades mean

diff --git a/static/logo-192.png b/static/logo-192.png index d3041b37f609e4867b33f63f68e545dd71c5e0ea..51fbef4ae96f2057845f4d45a96e165831b37271 100644 GIT binary patch literal 2299 zcmeHH`B#(Y5`Oa~X<`x}XxJAKOF~Q3$R;3QSfUV3j2I{pqme+QATB^DL82dESxP7r zNKilvB;mFcE(#)|f&{8?T`FAbQV^w-9mU zJ+s=chZDkzj2&K=?qHveqJ6rCV(qv&^5AMJ-OioG3gsroas<-Cb#7japl!}B>luPn zy4@4`%F4EjC`0>DrmK!e% zdG+BzS5jCL6BAA$?qW&edT}T>H%TG(FIFfv#mI!wl5f&ucsqBMD-!HiJ7*Z%+q(OD zc=`J=xBQS8*w@$h;K2hHjk;@3wA^TASy@?6ZUlXu#~OyGzpR!S7{cLj!o!7;ks?lF z=H~3ZpXI8L_&HpJNNWv0$pUH@;A=)CI2n!iPkPIws6 zM1*W&F7>W@5B@tSje7gNCjglG(BJ@m+ThD!>E62xOWYJ)?hq2>tnAaQI7Lf#{&`uJ z?bmN)Z}m^|Vh^Z#E2zRE+VrA+a=*)b303IR7Zk6|bpR+l6F_7bxPXRVMoCk59;Vuy zp>)?^drbq=joKOu9CkInPR~l_vI~%&6A$jW7SD`dRh<9n0*=DJ^bAvSe^D0jsr=#g z)#NX9LT#w#H%E;HAIx?>AAf^yzS)f0We*$B9v3v6xD}!%Ri1((qsUCtM9D{@wNBN6 zLJ1@~S_O!Q7&4HoZGB=Pe}#6PUicE<cu2?nf?I!?HKjMyl^{4EzuF&A32LUXOo2KPr^^-DG8tx{ZvRsg+TscSg-0S z6dwirb7z}srj~n?rt+|VQh?=#%=C|MM4^^7qM5q`F1vku<)V3K&R{+um&VDcO5wF& zc9&6R!jUd{G#LQ;@Jh*UrbpX3&9i+oz}3`Y666KL;*Ibi>hO7xoK2rKp&J*?n7HTS z7GA4*&>U6iNyr&$0KgvofoL8@6uRFJSRGckIA)XPYFnr|q?4YVW@qP2P6ZHT=)0V+a4ZdMC44z1sx3?{;Ri77%_-i&=$_WTdIQ;ckex zG+hsE^R*nWRKPDUCnA)vuu5Mwo$2r{jJ50BX+icxYWeJ|) zg=?JFM%cquS0#Q(QTNR5+t^}V%fMLZyGKUQvBmWC3R=gN7BXYw<&%H<1OsRidrQ`A z!|;|8KZy1^QqkJJyl+DEwsUX(*uhsow_WAy7{|pXZG6}{Hdl1hj=a#bW7x^bgB=lEpxIo+vk_9|3$Ece;IT>#8$+k9wS8jLGxu6#a9F|jVfZA?qYe%zyRH*e_)Ui zzAUmvL)*8U{kYkDEweQ?QFK>y7VevUkw4^_jqOKw6t-xgGMoK4YS{PSulr-I=2(KI zKKfo|FYXdBhiRmJEYw%h@cN-zp*jLS+i?OrWw)r=Y*r@jikiFodkTz5yI%$R==p@d z9G|9Z_A84yb{9wQAl2lMY@R6{v+Cucedisk$ zh{p&FbS6>PUC}u*Wp?u4b-DDYBLa(`i~=rN72G_dc!TX-~ZQ87B~2xfugLx0lu)yjsO4v literal 4420 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 LEf6GqmwW#OfPPkU diff --git a/static/logo-maskable-192.png b/static/logo-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..03b8638654fede06df2362e703cc93d2589df148 GIT binary patch literal 2579 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 KF)KHrC;b7XqziNa literal 2554 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4YzZe)e4|=*dhE&XXd-t@ja-e|2 z#WWW_ojpmeDK4%lEDkbfxH=jCOD)da{mxR*X63w)?^|_#zDxZ6V;=*9X8krh28Iv+ zIT;u@gcukER2Uc(JQx@pCNMBGC@?ZGI0EfzVqsul8C5U@!=YsVSH>NB>(B3A+kb%3 zUq3%uo>AfnIOe}9-k7$uzWNA5fhMCs+Q<8LiVT0IFmP=8@m!GUKvW%zMDow`DeDeI zF)19GG~;YdqbZ9+%hL-9=ML;-acEe2A?e-$OO^u#(;O%7WM0nEa8Rew>@$0xAUFZF zefpIgd58Id0XX?2D6F@$E0%AlMI@rbKkl5id&l}=>S!7p3VE%qva0g-FOC?+?@T|u z;6;PMg!6lAp4l<{<^Y!*&Xr#`>bzqtm;sJcgBjQ3Xa8hA&e8Btr%|n#-A|B#ahhXy zCG&Fu2El1g&6dp1g%}j49nN{iy+)BCNvCt>8PSN>u!MQ+_2<0T$_0wu@;@{g8w7SZ zirE8G=>hvA2fl9l(s&7>%Bf4tY>7{f9TSF+oT1) z3=HBMf8@^>$Pi*U&>!*VGe@JCJrhgV=0E91*Tona)+BkJN!usO#9%QSl<;|hjBZfE z|IEqoK;`s;lXudE84d(abC~_}yeg#7WUu@S41=|Gv%MJ-M|k>n2nib|aj7Hr;2o^BEYYXC~jt82-_%=W_+Iyn8eaN&!nu= zE$82T{QFvd#yjh-Kfim;{ehEM{bUA)x>kW5wqo_OfvmX_JL0C<$%9JJpMnabb@A|P cllFVdQ&MBb@0Mod~CIA2c diff --git a/static/logo.png b/static/logo.png index 55b3d413dd8c63325a9900e5a1f0861f7ac4ec8f..01b42730f5948915fb48a452de2bb0e8c2dfe26d 100644 GIT binary patch literal 4650 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 literal 2652 zcmbVOYj6`)6#njJ6Jna0z=&Nz*ey7YBMQaQilWI8o22f@}#9jS~!b%YA^u^25XR!{_yN|V|diy{zctx3tl6QWfrO7+)$oO8bOo$sE# zcb}U*YjUb-hzUUI)F~5h0R)-~FdAs+a(&$cm_|;WIN>(e!J~&J%xeGc!e{23dj7gM z+veVR(H+?@ulRE9%Z4grc~+LO`to~rcC^;-7xM>BKKQ!jaJ2Iy-^H)AH?Kpm{+lDa ze!kUZmftTKU^NPuZ&6Gl46EvQpO zk+%&{jYjw^+-k+MGSU~WyD!2N=c4;83@10TyqGW5j;w&~P}HP_bdEJ23W=d=|JYNr znIrGU$h69co^}F5tQVq5#=x58-!3(vWqoK=$s=iKx9|n(?T|c}*pERgzU#nO#SU26 zc#)qNz@xSAE|2L1Zagp+UOT@2_Or}`77-&VsU8oiYs)wMDua;UKt>F+7f)YPnue1F zgU}jdmECV`$&bAOMR?wjfU=Fy{D4}yPtaQI=vt(|e_w0@wC*)6>mxUT?=0NZ$iUUb zdS2_n;Z9S4PHc1nNNF?e86LG8@w3c|^*~8%JnEu4HJ*bsU?B^3TX5cgm;>MIw6Khx zuG-Ya3**Dd_M(+S{?5 z;&~UjDFFXcryZxj0=c%8d|n(wTNEq;8Mz4QRD2R_2#*HJmQWtrr4Z1}NSe@W*s7?9 z0+LXF*(VXKy+CJ%oMHMM=8QdZ=hG_OqPxqT?>0^s>-6LtjSys_jpRe!2f8$)Ae;_r(1YTA`ZyCOO+)ze-REtp7Y$z4hax zTYId*`lQ;#BjeJJe7BtB<17jdPjr(NbUd8{L}X+4Fe@b84Net~3xcmP#vj%?^<)rs z55BCxcE!#$rRjS+A3u>U6{}Fhj0lHnc62c+&+C(!aE=m&|M=--ywmKtb?xZ*%=22q zPKNAxW(6=eTB$IpI9)4?3{)JE6S;cu6+!nvplQdVY#^KM9?BBT7K?C*!3Y^BS6#I2 ziDb&a28*8x0AW#W1)pzC^QZLHJn8wn%O77+UoBMv=)0Fx3;%BF7y4O|{uj>#(*NR_ zi0T#UpHw(2&tw#-Fk|nd+j5JHq5R$}M0$xnW6Nniyw>KnB)J}odXM{D+P4Ur zpFvw?bJo#~{N_CB&pik(pr+oH({hX|p?h2{K7d>Auc?H zk0Nud`*_lyBjnq}P&p?4-XRJP2m$&#scMY&x?WP(uetv*W@XsZ5%Lcv5{<`9$N>%? zKkBDPCl|R4O50J-<`ixOFK+T|rl%Zxc84|*G1WddHQ`(x?{555uZmEkg@yHzo0t|# zvjCM_ngxw8e|qSFBfrS!qp9(JEF`u$evMm|}ppf$lp$SLOYNGQQ#%V aKOTBOS~^s0f4z(v22&@^nz%8`@#Jsv^K2^s diff --git a/static/logo.svg b/static/logo.svg deleted file mode 100644 index 1d98172..0000000 --- a/static/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - diff --git a/static/manifest.webmanifest b/static/manifest.webmanifest index 7d2827d..5640fe6 100644 --- a/static/manifest.webmanifest +++ b/static/manifest.webmanifest @@ -8,9 +8,10 @@ "background_color": "#171b21", "theme_color": "#f0803c", "icons": [ - { "src": "logo.svg", "sizes": "any", "type": "image/svg+xml" }, - { "src": "logo-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any" }, - { "src": "logo.png", "sizes": "512x512", "type": "image/png", "purpose": "any" }, - { "src": "logo-maskable-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" } + { "src": "favicon.svg", "sizes": "any", "type": "image/svg+xml" }, + { "src": "logo-192.png?v=2", "sizes": "192x192", "type": "image/png", "purpose": "any" }, + { "src": "logo.png?v=2", "sizes": "512x512", "type": "image/png", "purpose": "any" }, + { "src": "logo-maskable-192.png", "sizes": "192x192", "type": "image/png", "purpose": "maskable" }, + { "src": "logo-maskable-512.png?v=2", "sizes": "512x512", "type": "image/png", "purpose": "maskable" } ] } diff --git a/static/style.css b/static/style.css index 1896c2a..cf663d1 100644 --- a/static/style.css +++ b/static/style.css @@ -67,13 +67,15 @@ header { instead of bumping the toggle onto its own line. */ .brand > div:not(.unit-toggle):not(.acct) { flex: 1 1 0; min-width: 0; } .logo { - color: var(--accent); display: inline-flex; align-items: center; flex-shrink: 0; } .logo svg { width: 28px; height: 28px; display: block; } h1 { margin: 0; font-size: 22px; letter-spacing: -0.02em; } +/* Brand wordmark: lowercase beside the mark; 650 resolves to the nearest + installed weight of the system stack (no webfonts). */ +.brand h1 { text-transform: lowercase; font-weight: 650; } .tag { margin: 2px 0 0; color: var(--muted); font-size: 13px; } /* Compact header (e.g. Calendar): no tagline, roughly half the height. Only the vertical padding is trimmed so the responsive side padding stands. */ diff --git a/static/subscriptions.html b/static/subscriptions.html index 45f791b..580be12 100644 --- a/static/subscriptions.html +++ b/static/subscriptions.html @@ -11,14 +11,17 @@ - + - - + + + + + @@ -26,7 +29,7 @@
- +

Thermograph · Alerts

Get notified when a city's weather passes the percentile you set