+ Curious how Chicago's offices, schools, or hospitals stack up? Pick + a property type below to see its buildings, energy use, and + emissions. +
+
+ {{ formatCount(propertyTypes.length) }} property types covering
+ {{ formatCount(totalBuildingCount) }} benchmarked buildings. Emissions
+ shares are of all benchmarked emissions citywide. See our
+
-
-
- {{ formatCount(type.buildingCount) }}
- building{{ type.buildingCount === 1 ? '' : 's' }}
+
+
+
+
+
+ {{ type.propertyTypePlural }}
+
+
+
+ {{ formatCount(type.buildingCount) }}
+ building{{ type.buildingCount === 1 ? '' : 's' }}
+
+
+
+
+ Total Emissions
+
{{ formatEmissions(type.totalGHGEmissions) }}
metric tons CO2e
+
- ({{ formatPercent(type.percentOfTotalEmissions) }} of
- citywide)
+ {{ formatPercent(type.percentOfTotalEmissions) }} of total
+ benchmarked
+
+ Average Emissions Intensity
+
+
{{ formatIntensity(type.avgGHGIntensity) }}
- avg. kg CO2e/sqft
+ kg CO2e/sqft
@@ -203,10 +298,9 @@ export default class PropertyTypes extends Vue {
.property-type-tile {
display: flex;
flex-direction: column;
- gap: 0.5rem;
height: 100%;
box-sizing: border-box;
- padding: 1rem;
+ overflow: hidden;
background-color: $white;
border: solid $border-thin $grey;
border-bottom: solid $border-thick $chicago-blue;
@@ -217,27 +311,92 @@ export default class PropertyTypes extends Vue {
&:hover,
&:focus {
background-color: $grey-light;
+
+ .type-image-cont img {
+ transform: scale(1.05);
+ }
+ }
+
+ // The building photo, with the property type name overlaid on top of it
+ .type-image-cont {
+ display: block;
+ position: relative;
+ overflow: hidden;
+ height: 13rem;
+ background-color: $off-black;
+
+ img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ // Darkened so the white title stays readable over any photo
+ filter: brightness(65%);
+ transition: transform 0.2s ease;
+ }
}
.type-name {
- font-size: 1.125rem;
- font-weight: 600;
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ gap: 0.5rem;
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ padding: 2rem 0.75rem 0.5rem;
+ background: linear-gradient(
+ to top,
+ rgba(0, 0, 0, 0.8) 0%,
+ transparent 100%
+ );
+ color: $white;
+ text-shadow: 0 0.125rem 0.25rem $box-shadow-main;
.type-emoji {
- display: inline-block;
- margin-right: 0.25rem;
+ flex-shrink: 0;
+ font-size: 1.75rem;
+ line-height: 1;
+ }
+
+ .type-name-text {
+ display: flex;
+ flex-direction: column;
+ gap: 0.125rem;
+ }
+
+ .type-title {
+ font-size: 1.125rem;
+ font-weight: 600;
+ }
+
+ .type-building-count {
+ font-size: 0.875rem;
}
}
.type-stats {
display: flex;
flex-direction: column;
- gap: 0.25rem;
+ flex: 1;
+ gap: 0.75rem;
+ padding: 0.75rem;
font-size: 0.875rem;
color: $text-mid-light;
+ .type-stat-title {
+ display: block;
+ font-size: 0.75rem;
+ font-weight: 700;
+ text-transform: uppercase;
+ letter-spacing: 0.03em;
+ color: $off-black;
+ }
+
.type-percent {
- font-size: 0.8rem;
+ display: block;
+ font-size: 0.875rem;
+ font-weight: 600;
}
}
}
From 6308081d86fb650fdf9db79239f8987269e7ff2e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Viktor=20K=C3=B6ves?=
<3187531+vkoves@users.noreply.github.com>
Date: Wed, 23 Sep 2026 21:07:37 -0500
Subject: [PATCH 3/8] Regenerate snapshots
---
...no-image-building-Desktop-Chrome-linux.png | Bin 246905 -> 247327 bytes
.../search-Desktop-Chrome-linux.png | Bin 179732 -> 180290 bytes
.../home-Desktop-Chrome-linux.png | Bin 1928456 -> 1930345 bytes
.../ward-47-Desktop-Chrome-linux.png | Bin 586044 -> 589715 bytes
4 files changed, 0 insertions(+), 0 deletions(-)
diff --git a/e2e/building-snapshots.spec.ts-snapshots/no-image-building-Desktop-Chrome-linux.png b/e2e/building-snapshots.spec.ts-snapshots/no-image-building-Desktop-Chrome-linux.png
index 547742f51052922ca10d5def6102865ee7ebb178..a386f7acef03d53d2b9989b200d159456229cf5e 100644
GIT binary patch
literal 247327
zcmd42Ra9Hi_by6lp%f{!6sJfjP~6?!p}3Rc1b2r}pirQAf#MpZNN|VHQYh|P+zBqh
zNjT}RzyCP*;Xa&k$9cGU$r?Kud(FMpTyuWk+~16PudaZHO^%I*hK8r4D655rhJhMl
z8DpWNz7j}Jb_3m*<(jQYxC@*t zo_A~%3%G>m21k*OJ&9oWAl{VU+Fq;vWAB38x}vnN)WC~9pUZxuZ8*DNgZfx(v+lHC zPTyz|S5}eAh4;k180sqE`(-Mmg=;m%NGtMjj^yK5?~Ec=1r<~p9_SML6!g42d8P`- zFIyg5;H4-1O3uNDDowB8W}}1pX|^ztW)1J7WzB^9HzO40tFN^*X1u zHN6Z}&y1;3`dA+rmcI?w8w-ZcAq`0eq0)k{;>P62<@*gQgm#!cY&phF{d(?KTyCAt zYYHbjJ%`Je1vpxF3!cGX|Blw`5H1gzt(DcH&q@$=@b%i>bU6`rPnQcp(Ot+z*3@I7 za*a4c`{h!Oyq-xu%5uK3kU@LF?5VaIEhatbeM+0c>7ezOdTKoR3l`kuo~>RD7UyPb zLl&Hc Zy!r)|VthVJ&b+6@4mtLB)V56Nm$a24X^vCZR++pCAv~zr_Kz{ll1eu# z7s$Xh%5G-30TUBSG~ZJ=VXz@-F87GqYzUrX%DjzF$#lklv6M(IogW4GrmbuG`bEZq z24CXH$WWF^YaLiau#koC->I_lePmER-T8pLgCZ{=Kn!0j7faHVsetOx!W)4W$ IJ$#|Wax+QSSGPp!Lob=P=lxle_ zT{o00_Q#qLKugh{Wst?;Cx*(5a5e)wQyZ6k&g{EQ=PXNdd**?Ga(jxiXk~#z_k{+n zNo#srx0V?WmZ3^W87t(3=|V5S)2JSk)w;(HNyKPh-Ns+ZIzn= lpfIB7@?{-n&JP5=Uh4| zl~~BTNKN|RijAlmJ#+|!T~9Hz#qmTAJ2$0M$eW&5U<-L2oH5rr#*Big)q6!VpXA2w z%sjbPGfUGP`6E4+zoU2UxzI80fd07c?x@Z33atbTUaI#!9my8a2+Cg#Er-r52i_*9 z<+kl?gO5AUM;LPh-Ft}i7eNn*7!nSKf0K8Irh*?ASX-2T!ZT9S8>R7&RK_#U?Jk|J zEQ{TAuZftK?gBP8r)y>UVO^}m#l_9hlite2{`NQ@763UMRYXB_O`Cm4)Sy4&C6Mq* zjjjA qb^foDC)y2aNQeACGthcP{ |6LC`eNOb@-|+tnKl{IK^Z#FO z$oUZsO;VZg=MPEFw+T8l;piVfeEWjaZJ4HWTk(jd2aEO=gM{i2$)fLVAzD}j8ZOh@ z1Fr9r6BDE(+c6-qh%A4iAk8wbC;c}pt@dA)cW@b=zi7A7qxyMr*<~Pdj2EDqQ564n zcZvyyL!PXF^mye?F=g9)fI3Gh#X$I%-rVLne LQ z@a_ViWMdA~pR ^v|aO& zlSZms^9dv 1v2)q&Li|j8`HsFIMKh_3pz?dXWnUU-@+A>*XJy z$uF(DxoKu)cva_iYPSsGqTb1IlkX-;!5Nd}L+UQ@yl4Fm5dP-h{xdPTqq5Lfy5wem zrZI)5cGbV9bgtsU@$(3(l>%5%Y+THSCfE1#N|@zI{LeAjQS-L!H7s$K-=B9#^{Cl> zE}uUl{SXK|5$^bL4KdFhJY=*a7W*`{`Qqg>|E+z !>9~v zU0flK@ky)3W!?1V(64AIDd-ck6~JNm)cSN(0ULj_l+uQ`l}44qxGF +k{qtHHPqrb!YGq;F_f z$2`uR4fQn-@ym5os~c+_r{CbYc*n==@+waFsF_QNmtE=WI~)AiuUH<(e!c{)!2CHz zLl2T6-rgDD*dpp%$?D144nz