/* vars */

:root {
	--max-site-width:3840px;
	--min-font-size:14px;
	--space-after-para:1em;

	--fontsize-s-size:             max(var(--min-font-size), calc(1.1 * var(--vw)));
	--fontsize-m-size:             max(var(--min-font-size), calc(1.8 * var(--vw)));
	--fontsize-l-size:             max(var(--min-font-size), calc(4.1 * var(--vw)));
	--fontsize-headerfooter-size:  max(var(--min-font-size), calc(1.1 * var(--vw)));

	--fontsize-s-letterspacing:             -0.01em;
	--fontsize-m-letterspacing:             -0.00em;
	--fontsize-l-letterspacing:             -0.03em;
	--fontsize-headerfooter-letterspacing:  -0.00em;

	--fontsize-s-lineheight:             1.2;
	--fontsize-m-lineheight:             1.2;
	--fontsize-l-lineheight:             1.2;
	--fontsize-headerfooter-lineheight:  1.2;

	--wp--preset--spacing--textboxvertical:    calc(10.8 * var(--vw)) !important;
	--wp--preset--spacing--textboxhorizontal:  calc(9.0 * var(--vw)) !important;
	--wp--preset--spacing--textboxhorizontal2: calc(18.0 * var(--vw)) !important;

	--green:#019b4e;
	--site-width:min(calc(100vw - var(--scrollbar-width, 0px)), var(--max-site-width));
	--vw:calc(var(--site-width) / 100);
	--px:calc(var(--vw) / 19.20);
	--site-margin:calc(1.2 * var(--vw));
	--site-width-with-margin:calc(var(--site-width) - var(--site-margin) * 2);
}
@media (max-width: 781px) {
	:root {
		--min-font-size:14px;
		
		--fontsize-s-size:            max(var(--min-font-size), calc(3.0 * var(--vw)));
		--fontsize-m-size:            max(var(--min-font-size), calc(3.5 * var(--vw)));
		--fontsize-l-size:            max(var(--min-font-size), calc(7.5 * var(--vw)));
		--fontsize-headerfooter-size: max(var(--min-font-size), calc(4.0 * var(--vw)));

		--fontsize-s-lineheight:            1.05;
		--fontsize-m-lineheight:            1.2;
		--fontsize-l-lineheight:            1.0;
		--fontsize-headerfooter-lineheight: 1.2;

		--wp--preset--spacing--textboxvertical:    calc(8.0 * var(--vw)) !important;
		--wp--preset--spacing--textboxhorizontal:  calc(5.0 * var(--vw)) !important;
		--wp--preset--spacing--textboxhorizontal2: calc(10.0 * var(--vw)) !important;

		--site-margin:calc(2.4 * var(--vw));
	}
}





/* html basics */

body                                          { font-family:site-sans, Helvetica, Arial, sans-serif; margin:0; padding:0; overflow:hidden scroll; }
body a                                        { color:inherit; text-decoration:none; }
body a:where(:not(.wp-element-button)):hover  { text-decoration:none; }
body p, body h1, body h2, body h3, body h4    { margin-block-start:0; margin-block-end:var(--space-after-para); }
body main                                     { width:var(--site-width-with-margin); margin:0 auto calc(10 * var(--vw)) auto; }
@media (max-width: 781px) {
	body main                                 { margin-bottom:calc(21.5 * var(--vw)); }
}

@media     (max-width: 781px) { .desktop { display:none !important; } }
@media not (max-width: 781px) { .mobile  { display:none !important; } }





/* fonts */

body .has-fontsize-l-font-size,  body h1         { font-size:var(--fontsize-l-size) !important; letter-spacing:var(--fontsize-l-letterspacing) !important; line-height:var(--fontsize-l-lineheight); margin-block-end:0.6em; }
body .has-fontsize-m-font-size,  body h2,  body  { font-size:var(--fontsize-m-size) !important; letter-spacing:var(--fontsize-m-letterspacing) !important; line-height:var(--fontsize-m-lineheight); }
body .has-fontsize-s-font-size,  body h3         { font-size:var(--fontsize-s-size) !important; letter-spacing:var(--fontsize-s-letterspacing) !important; line-height:var(--fontsize-s-lineheight); }





/* wordpress blocks */

.wp-block-button a { font-size:var(--fontsize-s-size); letter-spacing:var(--fontsize-s-letterspacing); line-height:var(--fontsize-s-lineheight); padding:calc(0.5 * var(--vw)) calc(2.4 * var(--vw)); }
figure.wp-block-image .wp-element-caption { font-size:var(--fontsize-s-size) !important; letter-spacing:var(--fontsize-s-letterspacing) !important; line-height:var(--fontsize-headerfooter-lineheight); text-align:center; }
.leo-tile-label { margin-top:calc(0.9 * var(--vw)); }
.wp-block-button .wp-element-button { background-color:#000000; }
@media (max-width: 781px) {
	.wp-block-button a { padding:calc(2.5 * var(--vw)) calc(10.0 * var(--vw)); }
}





/* pages should be at least as tall as the screen */

body main { min-height:calc(100dvh - var(--footer-height) - var(--header-height) - var(--site-margin) * 2); }





/* set all images to 100% width */

figure.wp-block-image     { width:100%; }
figure.wp-block-image img { width:100%; }
figure.wp-block-image a   { width:100%; }





/* round corners on all images */

figure.wp-block-image  img     { border-radius:calc(0.6 * var(--vw)); overflow:hidden; }
figure.wp-block-embed  iframe  { border-radius:calc(0.6 * var(--vw)); overflow:hidden; }
.leo-tile-thumb                { border-radius:calc(0.6 * var(--vw)); overflow:hidden; }
.leo-tile-thumb  img           { border-radius:calc(0.6 * var(--vw)); overflow:hidden; }





/* set vertical space between images and space between columns */

figure.wp-block-image     { margin:0 0 var(--site-margin) 0; }
figure.wp-block-image img { margin:0; }
div.wp-block-columns      { margin:0; gap:var(--site-margin); }
.leo-tile                 { margin:0 0 var(--site-margin) 0; }

@media (max-width: 781px) {
	div.wp-block-columns + div.wp-block-columns { margin-top:var(--site-margin); }
}





/* home page buttons */

body.home main div.wp-block-buttons { margin-top:calc(1.9 * var(--vw)); margin-bottom:calc(14.5 * var(--vw)); }

@media (max-width: 781px) {
	body.home main div.wp-block-buttons { margin-top:calc(12.2 * var(--vw)); margin-bottom:calc(25.0 * var(--vw)); }
}


body.home main div.wp-block-buttons + .wp-block-columns p { padding:0% 23%; }
body.home main div.wp-block-buttons + .wp-block-columns p.has-fontsize-l-font-size { font-size:max(var(--min-font-size), calc(9.3 * var(--vw))) !important; line-height: 1.23; border:max(1px, calc(0.8 * var(--vw))) solid black; border-radius:calc(7 * var(--vw)); margin:0 auto 0.26em auto; padding:0 0.4em !important; width:max-content; }

@media (max-width: 781px) {
	body.home main div.wp-block-buttons + .wp-block-columns { gap:calc(10.0 * var(--vw)); }
	body.home main div.wp-block-buttons + .wp-block-columns p { padding:0% 33%; }
	body.home main div.wp-block-buttons + .wp-block-columns p.has-fontsize-l-font-size { font-size:max(var(--min-font-size), calc(22.5 * var(--vw))) !important; line-height:1.12; border-width:max(1px, calc(2.0 * var(--vw))); border-radius:calc(16 * var(--vw)); }
}




/* project list page */

div.project-list-categories { padding:calc(7.5 * var(--vw)) calc(12.5 * var(--vw)) calc(5.5 * var(--vw)) calc(12.5 * var(--vw)); text-align:center; color:var(--wp--preset--color--gray); line-height:1.4; margin-bottom:var(--site-margin); }
div.project-list-categories a, strong { margin:0em 0.45em; white-space:nowrap; }
div.project-list-categories strong { color:#000; font-weight:inherit; }





/* project pages */

.leo-projectfooter { display:flex; align-items:flex-start; flex-direction:row; gap:var(--site-margin); margin-top:calc(9.2 * var(--vw)); }
.leo-projectfooter > div { flex-basis:50%; }
.leo-projectfooter .leo-projectfootercredits { font-size:var(--fontsize-s-size) !important; letter-spacing:var(--fontsize-s-letterspacing) !important; line-height:var(--fontsize-s-lineheight); }
.leo-projectfooter p + ul { margin-top:calc(-1 * var(--space-after-para)); }
.leo-projectfooter ul { margin:0; padding:0; list-style-type:none; margin-bottom:2rem; color:#757575; }
.leo-projectfooter ul li { margin:0; padding:0; }
.project-next { margin-left:calc(50% + var(--site-margin) / 2); padding-top:calc(9.4   * var(--vw)); }
.project-next a::before { content:"Next project "; padding-bottom:calc(1.6   * var(--vw)); display:block; }
@media (max-width: 781px) {
	.project-next { margin-left:0; }
	.leo-projectfooter { display:flex; align-items:stretch; flex-direction:column-reverse; gap:2em; }
	.leo-projectfooter > div { flex-basis:unset; }
	.leo-projectfooter .leo-projectfootercredits-wrap { display:flex; align-items:stretch; flex-direction:row; gap:var(--site-margin); }
	.leo-projectfooter .leo-projectfootercredits-wrap > * { flex-basis:50%; }
}





/* updates page */

.leo-tile.leo-tile-update .leo-tile-update-1 { margin-top:calc(0.9 * var(--vw)); }
.leo-tile.leo-tile-update .leo-tile-update-2 { margin-top:calc(0.8 * var(--vw)); }
.leo-tile.leo-tile-update .leo-tile-update-3 { margin-top:calc(1.25 * var(--vw)); margin-bottom:calc(5.1 * var(--vw)); }





/* header */

body                    header                                                                   { position:fixed; top:0; width:100%; z-index:1; box-sizing:border-box; --header-blur:calc(1.00 * var(--vw)); --header-bgcolor:rgba(255, 255, 255, 0.47); }
body                    header  .desktop                                                         { width:var(--site-width-with-margin); margin:0 auto; padding:calc(1.7 * var(--vw)) var(--site-margin) calc(0.7 * var(--vw)) var(--site-margin); font-size:var(--fontsize-headerfooter-size) !important; letter-spacing:var(--fontsize-headerfooter-letterspacing) !important; line-height:var(--fontsize-headerfooter-lineheight); }
body                    header  .desktop  .wp-block-group                                        { gap:0.5em; -webkit-backdrop-filter:blur(var(--header-blur)); backdrop-filter:blur(var(--header-blur)); background:var(--header-bgcolor); border-radius:calc(3.00 * var(--vw)); width:min-content; min-width:calc(26 * var(--vw)); margin:0 auto; padding:calc(0.7 * var(--vw)) calc(2.2 * var(--vw)); margin-top:calc(-0.7 * var(--vw)); justify-content:space-between; white-space:nowrap; margin-right:auto; margin-left:auto; }
body                    header  .desktop  .wp-block-columns                                      { width:100%; margin:0 auto; position:relative; }
body                    header  .header-mobile-sitemenu-toggle                                   { -webkit-backdrop-filter:blur(var(--header-blur)); backdrop-filter:blur(var(--header-blur)); background:var(--header-bgcolor); position:fixed; left:30%; top:calc(var(--site-margin) * 2); text-align:center; width:40%; padding:0.25em; border-radius:2em; }
body                    header  .header-mobile-sitemenu > .wp-block-group                        { position: fixed; top:0; left:0; width:100%; height:100%; justify-content:space-between; padding:calc(2 * var(--site-margin) + 0.25em); var(--site-margin); filter:blur(calc(1.00 * var(--vw))); backdrop-filter:none; -webkit-backdrop-filter:none; background-color:rgba(255,255,255,0); transition:filter 0.3s linear, backdrop-filter 0.3s linear, -webkit-backdrop-filter 0.3s linear, background-color 0.3s, opacity 0.3s, text-shadow 0.3s; opacity:0; pointer-events:none; user-select:none; }
body.menuopen           header  .header-mobile-sitemenu > .wp-block-group                        { filter:blur(0px); backdrop-filter:blur(var(--header-blur)); -webkit-backdrop-filter:blur(var(--header-blur)); background-color:var(--header-bgcolor); opacity:1; pointer-events:initial; }
body                    header  .header-mobile-sitemenu > .wp-block-group  a                     { padding:0 2em; }
body                    header  .header-mobile-sitemenu > .wp-block-group  .wp-block-group       { gap:0; }
body                    header  .header-mobile-sitemenu > .wp-block-group  .wp-block-group  > *  { flex-basis:33.33%; }
body                    header  .header-mobile-sitemenu > .wp-block-group  .wp-block-group    a  { padding:0 0.5em; }
body:not(.menuvisible)  header  .header-mobile-sitemenu > .wp-block-group                        { display:none; }
@media not (max-width: 781px) { body  main                                                       { margin-top:calc(var(--site-margin) + var(--header-height)); }}
@media     (max-width: 781px) { body  main                                                       { margin-top:var(--site-margin); }}




/* footer */

body footer { width:var(--site-width); margin:0 auto; }
body footer > .wp-block-template-part > .wp-block-group { padding:var(--site-margin); }
body footer > .wp-block-template-part > .wp-block-group > .wp-block-group:first-child { min-height:calc(62.3 * var(--vw)); display:flex; align-items:center; justify-content:center; }
body footer > .wp-block-template-part > .wp-block-group > .wp-block-group:last-child { font-size:var(--fontsize-headerfooter-size); letter-spacing:var(--fontsize-headerfooter-letterspacing); line-height:var(--fontsize-headerfooter-lineheight); }
body footer > .wp-block-template-part > .wp-block-group > .wp-block-group div:first-child { gap:2.8em; }
body footer > .wp-block-template-part > .wp-block-group > .wp-block-group div:last-child { gap:1.3em; }
@media (max-width: 781px) {
	body footer > .wp-block-template-part > .wp-block-group { padding-bottom:calc(4.0 * var(--vw)); }
	body footer > .wp-block-template-part > .wp-block-group > .wp-block-group:first-child { min-height:calc(151.0 * var(--vw)); }
	body footer > .wp-block-template-part > .wp-block-group > .wp-block-group:first-child p:first-child { padding-bottom:calc(7.0 * var(--vw)); }
	body footer > .wp-block-template-part > .wp-block-group > .wp-block-group:last-child { justify-content: center; }
	body footer > .wp-block-template-part > .wp-block-group > .wp-block-group:last-child > :first-child { display:none; }
	body footer > .wp-block-template-part > .wp-block-group > .wp-block-group:last-child > :last-child { text-align:center; }
}
body footer .wp-block-buttons a                               { width:11em !important; padding:0.5em 1.5em; margin-top:1em; transition:width 0.35s cubic-bezier(.4, 0, .2, 1), opacity 0.1s !important; }
body footer .wp-block-buttons a:hover                         { width:20em !important; }
body footer .wp-block-buttons a         span                  { display:block; height:1em; line-height:1; overflow:hidden; position:relative; transition:margin-top 0.35s cubic-bezier(.4, 0, .2, 1) !important; white-space:nowrap; }
body footer .wp-block-buttons a         span span             { pointer-events:none; }
body footer .wp-block-buttons a         span span svg { width:0.8em; height:0.8em; display:inline-block; vertical-align:bottom; margin-left:0.2em; }
body footer .wp-block-buttons a         span span svg path { fill:#000; }
body footer .wp-block-buttons a:hover   span span:first-child { margin-top:-1em; }
body footer .wp-block-buttons a.copied1 span span:first-child { margin-top:-2em; }
body footer .wp-block-buttons a.copied2 span span:first-child { margin-top:-2em; }
body footer .wp-block-buttons a.copied1                       { width:12em !important; background-color:#9BFF00 !important; color:#000 !important; }
body footer .wp-block-buttons a.copied2                       { width:12em !important; background-color:#9BFF00 !important; color:#000 !important; }
body footer .wp-block-buttons a.copied1:hover                 { width:12em !important; }
body footer .wp-block-buttons a.copied2:hover                 { width:12em !important; }



.countto, .toronto-time-digit { font-family:site-mono, monospace; }
.toronto-time { margin-left:0.1em; }


/* ###### CONTACT OVERLAY ####### */

/* Hide overlay by default */
div.contact-overlay {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) scale(0);
  width: 100%;
  height: 100%;
  background: #000;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
  opacity: 0;
  transition: opacity 0.6s ease, transform 0.6s ease;
  border-radius: 50%;
}

/* When active, expand to fill screen */
div.contact-overlay.active {
  transform: translate(-50%, -50%) scale(1);
  opacity: 1;
  border-radius: 0;
}

/* Content container */
div.contact-overlay-content {
  text-align: center;
}

/* Headline styling */
h1.contact-overlay-headline {
  color: #fff;
  font-size: 60px;
  letter-spacing: -0.03em;
  line-height: 1.1;
  margin-bottom: 30px;
  font-weight: 400;
}

/* Button styling */
/* Button base */
.contact-button {
  background: #fff;
  color: #000;
  border: none;
  border-radius: 999px;
  padding: 14px 40px;
  font-size: 16px;
  letter-spacing: -0.01em;
  font-weight: 400;
  cursor: pointer;
  overflow: hidden;
  white-space: nowrap;

  display: inline-flex;
  align-items: center;
  justify-content: center;

  transition: width 0.35s cubic-bezier(.4,0,.2,1);
}

/* Viewport window – shows one line at a time */
.button-viewport {
  display: block;
  height: 1.4em;         /* visible height = one line */
  overflow: hidden;
}

/* Vertical stack that slides */
.button-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  transform: translateY(0);
  transition: transform 0.35s cubic-bezier(.4,0,.2,1);
}

/* Lines */
.button-text {
  line-height: 1.4em;
  white-space: nowrap;
}

/* Slide up one line on hover */
.contact-button:hover .button-inner {
  transform: translateY(-50%);
}





/* Make logo white when overlay is active */
body.contact-overlay-active header .desktop .wp-block-column:first-child a,
body.contact-overlay-active header .mobile .header-mobile-sitemenu-toggle {
  color: #fff !important;
  transition: color 0.6s ease;
}

/* Keep header above overlay */
body header {
  z-index: 10000;
}

/* Mobile adjustments */
@media (max-width: 781px) {
  h1.contact-overlay-headline {
    font-size: 40px;
    margin-bottom: 25px;
  }
  
  .contact-button {
    padding: 12px 24px;
    font-size: 15px;
  }
  div.contact-overlay {
  	z-index: 20000;
  }
}

.wp-embed-aspect-3-2 .wp-block-embed__wrapper { aspect-ratio:3 / 2; height:unset; }
.wp-embed-aspect-3-2 .wp-block-embed__wrapper iframe { width:100%; height:100%; }