PageSourceSearch

https://www.thegalleryrealestate.com.au/

html thegalleryrealestate.com.au collected 2026-10-09 00:57:15 UTC 149,219 bytes, 2,323 lines download raw bytes

1<!DOCTYPE HTML>
2
3<html lang="en" prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# place: http://ogp.me/ns/place# business: http://ogp.me/ns/business#" class="ua-chrome">
4
5<head>
6    <title>The Gallery Real Estate</title>
7    
7<script>
8        window.cowtools_basepath = "/js/cowtools";
9        window.LeafletMapDefaultOptions = { tileLayers: 'bwmaps', "fitBoundsPadding": 72,}
10    </script>
10
11
12    <!--
13____ _   _ ___ _  _
14| _ \ | | / __| || |
15|  _/ |_| \__ \ __ |
16|_|  \___/|___/_||_|
17
18Real Estate Web Solutions - https://pushcreative.property/
19
20Copyright © Push Creative. All Rights Reserved.
21
22-->
23
24<script>const __loadcss = (el) => { el.rel='stylesheet';el.onload=null; }</script>
24<link rel="dns-prefetch" href="https://thegalleryre.edge.pushcreative.com.au"><link rel="preconnect" href="https://thegalleryre.edge.pushcreative.com.au"><link rel="stylesheet" href="/css/beforeload.css?asset_version=sdfv3">
25<link rel="stylesheet" href="/css/site.css?asset_version=sdfv3">
26<link rel="stylesheet" href="/css/fonts_local.css?asset_version=sdfv3">
27<link rel="stylesheet" href="/css/fonts_remote.css?asset_version=sdfv3">
28<meta name="description" content="The Gallery Real Estate is a boutique real estate and rental agency in Sydney specialising in property management and leasing across the inner city. Based at 780 Bourke Street, Redfern." />
29<meta property="og:locale" content="en_AU" />
30<meta property="og:site_name" content="The Gallery Real Estate" />
31<meta property="og:type" content="website" />
32<meta property="og:url" content="https://www.thegalleryrealestate.com.au/" />
33<meta name="robots" content="INDEX" />
34<meta property="twitter:card" content="summary" />
35<meta property="twitter:description" content="The Gallery Real Estate is a boutique real estate and rental agency in Sydney specialising in property management and leasing across the inner city. Based at 780 Bourke Street, Redfern." />
36<meta property="twitter:title" content="The Gallery Real Estate" />
37<meta property="twitter:url" content="https://www.thegalleryrealestate.com.au/" />
38<meta name="viewport" content="initial-scale=1.0,width=device-width,user-scalable=no,viewport-fit=cover" />
39<script src="/js/cowtools/customelements.js?asset_version=sdfv3" defer></script>
vendor: 1 bytes, line 39
39
40<script src="/js/cowtools/cowtools.js?asset_version=sdfv3" defer></script>
vendor: 1 bytes, line 40
40
41<script src="/js/cowtools/leaflet-map.js?asset_version=sdfv3" defer></script>
vendor: 1 bytes, line 41
41
42<script src="/js/poi-item.js?asset_version=sdfv3" defer></script>
vendor: 1 bytes, line 42
42
43<script src="/js/flourishes.js?asset_version=sdfv3" defer></script>
vendor: 1 bytes, line 43
43
44<script src="/js/cssvars.js?asset_version=sdfv3" defer></script>
44<link rel="preload" href="/css/beforeload.css" as="style">
45    <link rel="canonical" href="https://www.thegalleryrealestate.com.au/">
46    <link rel="icon" sizes="16x16" href="/imagecache/bestfit/16x16/_files/_assets/touch-icon.png" type="image/png"> <link rel="apple-touch-icon-precomposed" sizes="16x16" href="/imagecache/bestfit/16x16/_files/_assets/touch-icon.png" type="image/png"> <link rel="icon" sizes="32x32" href="/imagecache/bestfit/32x32/_files/_assets/touch-icon.png" type="image/png"> <link rel="apple-touch-icon-precomposed" sizes="32x32" href="/imagecache/bestfit/32x32/_files/_assets/touch-icon.png" type="image/png"> <link rel="icon" sizes="72x72" href="/imagecache/bestfit/72x72/_files/_assets/touch-icon.png" type="image/png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/imagecache/bestfit/72x72/_files/_assets/touch-icon.png" type="image/png"> <link rel="icon" sizes="120x120" href="/imagecache/bestfit/120x120/_files/_assets/touch-icon.png" type="image/png"> <link rel="apple-touch-icon-precomposed" sizes="120x120" href="/imagecache/bestfit/120x120/_files/_assets/touch-icon.png" type="image/png"> <link rel="icon" sizes="180x180" href="/imagecache/bestfit/180x180/_files/_assets/touch-icon.png" type="image/png"> <link rel="apple-touch-icon-precomposed" sizes="180x180" href="/imagecache/bestfit/180x180/_files/_assets/touch-icon.png" type="image/png"><meta name="format-detection" content="address=no" /><meta name="format-detection" content="telephone=no" />
47    
48    <!-- Start HEAD Includes -->
49<!-- Meta Pixel -->
50<script>
vendor: 398 bytes, lines 50-59
50
51!function(f,b,e,v,n,t,s)
52{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
53n.callMethod.apply(n,arguments):n.queue.push(arguments)};
54if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
55n.queue=[];t=b.createElement(e);t.async=!0;
56t.src=v;s=b.getElementsByTagName(e)[0];
57s.parentNode.insertBefore(t,s)}(window,document,'script',
58'https://connect.facebook.net/en_US/fbevents.js');
59fbq('init', '
59455395055121972
vendor: 30 bytes, lines 59-60
59');
60fbq('track', 'PageView');
61</script>
61
62<!-- End Meta Pixel -->
63<!-- Google Tag Manager -->
64<script>
vendor: 327 bytes, lines 64-68
64(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
65new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
66j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
67'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
68})(window,document,'script','dataLayer','
68GTM-WPQHJCP9
vendor: 3 bytes, line 68
68');
68</script>
68
69<!-- End Google Tag Manager -->
70
71<!-- TGRE AI Search Visibility: schema + meta supplement (deployed 2026-05-25) -->
72<script type="application/ld+json">
73{
74  "@context": "https://schema.org",
75  "@graph": [
76    {
77      "@type": ["RealEstateAgent", "LocalBusiness", "Organization"],
78      "@id": "https://www.thegalleryrealestate.com.au/#org",
79      "name": "The Gallery Real Estate",
80      "alternateName": "The Gallery Real Estate Agency Pty Limited",
81      "legalName": "The Gallery Real Estate Agency Pty Limited",
82      "logo": {
83        "@type": "ImageObject",
84        "url": "https://www.thegalleryrealestate.com.au/imagecache/bestfit/512x512/_files/_assets/touch-icon.png",
85        "width": 512,
86        "height": 512
87      },
88      "image": [
89        "https://www.thegalleryrealestate.com.au/imagecache/fitwithin/1280x1280/_files/tgre-shoot-day/984e9f9c-4c74-4c0f-b23d-8dca824e50ab.jpg",
90        "https://www.thegalleryrealestate.com.au/imagecache/fitwithin/1280x1280/_files/tgre-shoot-day/76e113cd-bdcc-4ba3-b5b9-ef309ea8b87a-1-201-a.jpg",
91        "https://www.thegalleryrealestate.com.au/imagecache/fitwithin/1280x1280/_files/tgre-shoot-day/tgre-studio-julianrinaldi-171.jpg"
92      ],
93      "description": "The Gallery Real Estate is a boutique real estate agency in Redfern specialising in property management and leasing across Inner Sydney. Our office is at 780 Bourke Street, Redfern.",
94      "slogan": "The art of property management",
95      "foundingDate": "2020",
96      "founder": {
97        "@id": "https://www.thegalleryrealestate.com.au/team/thomas-tamine#person"
98      },
99      "telephone": "+61289993341",
100      "email": "[email protected]",
101      "address": {
102        "@type": "PostalAddress",
103        "streetAddress": "780 Bourke Street",
104        "addressLocality": "Redfern",
105        "addressRegion": "NSW",
106        "postalCode": "2016",
107        "addressCountry": "AU"
108      },
109      "geo": {
110        "@type": "GeoCoordinates",
111        "latitude": -33.8969879,
112        "longitude": 151.2154480
113      },
114      "areaServed": [
115        { "@type": "City", "name": "Redfern" },
116        { "@type": "City", "name": "Surry Hills" },
117        { "@type": "City", "name": "Waterloo" },
118        { "@type": "City", "name": "Zetland" },
119        { "@type": "City", "name": "Moore Park" },
120        { "@type": "Place", "name": "Moore Park Gardens" },
121        { "@type": "City", "name": "Darlinghurst" },
122        { "@type": "City", "name": "Paddington" },
123        { "@type": "City", "name": "Newtown" },
124        { "@type": "City", "name": "Erskineville" },
125        { "@type": "City", "name": "Alexandria" },
126        { "@type": "City", "name": "Chippendale" },
127        { "@type": "City", "name": "Glebe" },
128        { "@type": "City", "name": "Pyrmont" },
129        { "@type": "City", "name": "Ultimo" },
130        { "@type": "City", "name": "Potts Point" },
131        { "@type": "City", "name": "Croydon Park" },
132        { "@type": "City", "name": "Ashfield" },
133        { "@type": "City", "name": "Dulwich Hill" },
134        { "@type": "City", "name": "Leichhardt" },
135        { "@type": "City", "name": "Strathfield" },
136        { "@type": "City", "name": "Homebush" },
137        { "@type": "City", "name": "Burwood" },
138        { "@type": "City", "name": "Rosebery" },
139        { "@type": "City", "name": "Sydney" }
140      ],
141      "knowsAbout": [
142        "Residential property management",
143        "Investment property leasing",
144        "Tenant placement and screening",
145        "Routine inspections",
146        "NSW Residential Tenancies Act 2010",
147        "Inner Sydney residential rental market",
148        "Strata investment management"
149      ],
150      "openingHoursSpecification": [
151        {
152          "@type": "OpeningHoursSpecification",
153          "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
154          "opens": "09:00",
155          "closes": "17:00"
156        }
157      ],
158      "priceRange": "$",
159      "currenciesAccepted": "AUD",
160      "paymentAccepted": "Direct debit, EFT, BPAY",
161      "identifier": [
162        {
163          "@type": "PropertyValue",
164          "name": "ABN",
165          "value": "99 643 017 074"
166        },
167        {
168          "@type": "PropertyValue",
169          "name": "NSW Corporation Licence",
170          "value": "10103433"
171        }
172      ],
173      "aggregateRating": {
174        "@type": "AggregateRating",
175        "ratingValue": "4.9",
176        "bestRating": "5",
177        "worstRating": "1",
178        "ratingCount": "157",
179        "reviewCount": "157"
180      },
181      "sameAs": [
182        "https://www.facebook.com/thegalleryrealestate",
183        "https://www.instagram.com/thegalleryrealestate",
184        "https://au.linkedin.com/company/the-gallery-real-estate",
185        "https://www.ratemyagent.com.au/real-estate-agency/the-gallery-real-estate-az020",
186        "https://www.commercialrealestate.com.au/real-estate-agents/the-gallery-real-estate-33488",
187        "https://www.youtube.com/@thegalleryrealestate6269"
188      ],
189      "employee": [
190        { "@id": "https://www.thegalleryrealestate.com.au/team/thomas-tamine#person" },
191        { "@id": "https://www.thegalleryrealestate.com.au/team/christine-lucasan#person" },
192        { "@id": "https://www.thegalleryrealestate.com.au/team/daphne-huang#person" },
193        { "@id": "https://www.thegalleryrealestate.com.au/team/brooke-constantinidis#person" }
194      ]
195    },
196    {
197      "@type": "Person",
198      "@id": "https://www.thegalleryrealestate.com.au/team/thomas-tamine#person",
199      "name": "Thomas Tamine",
200      "givenName": "Thomas",
201      "familyName": "Tamine",
202      "jobTitle": "Principal & Licensee",
203      "worksFor": { "@id": "https://www.thegalleryrealestate.com.au/#org" },
204      "url": "https://www.thegalleryrealestate.com.au/team/thomas-tamine",
205      "telephone": "+61289993341",
206      "email": "[email protected]",
207      "knowsAbout": [
208        "Property management",
209        "NSW residential tenancy law",
210        "Investment property strategy",
211        "Sydney inner-city rental market"
212      ],
213      "hasCredential": {
214        "@type": "EducationalOccupationalCredential",
215        "credentialCategory": "license",
216        "name": "NSW Class 1 Real Estate Licence",
217        "identifier": "10103433"
218      }
219    },
220    {
221      "@type": "Person",
222      "@id": "https://www.thegalleryrealestate.com.au/team/christine-lucasan#person",
223      "name": "Christine Lucasan",
224      "givenName": "Christine",
225      "familyName": "Lucasan",
226      "jobTitle": "Business Operations Manager",
227      "worksFor": { "@id": "https://www.thegalleryrealestate.com.au/#org" }
228    },
229    {
230      "@type": "Person",
231      "@id": "https://www.thegalleryrealestate.com.au/team/daphne-huang#person",
232      "name": "Daphne Huang",
233      "givenName": "Daphne",
234      "familyName": "Huang",
235      "jobTitle": "Portfolio & Inspections Manager",
236      "worksFor": { "@id": "https://www.thegalleryrealestate.com.au/#org" }
237    },
238    {
239      "@type": "Person",
240      "@id": "https://www.thegalleryrealestate.com.au/team/brooke-constantinidis#person",
241      "name": "Brooke Constantinidis",
242      "givenName": "Brooke",
243      "familyName": "Constantinidis",
244      "jobTitle": "Portfolio Manager",
245      "worksFor": { "@id": "https://www.thegalleryrealestate.com.au/#org" }
246    }
247  ]
248}
249</script>
249
250
251<meta name="geo.region" content="AU-NSW">
252<meta name="geo.placename" content="Redfern">
253<meta name="geo.position" content="-33.8969879;151.2154480">
254<meta name="ICBM" content="-33.8969879, 151.2154480">
255
256<meta name="author" content="The Gallery Real Estate">
257<meta name="robots" content="index, follow, max-image-preview:large">
258
259<meta name="theme-color" content="#D46144">
260
261<!-- TGRE blog post reading rhythm (added 2026-07-12) -->
262<style>
263body.pageclass-post section:not(.hero) .user-content p,
264body.pageclass-post section:not(.hero) .user-content li { font-size: 1.05rem; line-height: 1.8; }
265body.pageclass-post section:not(.hero) .user-content p { margin-bottom: 1.4em; }
266body.pageclass-post section:not(.hero) .user-content h2 { margin-top: 2.8rem; margin-bottom: 1rem; line-height: 1.25; }
267body.pageclass-post section:not(.hero) .user-content h3 { margin-top: 2.4rem; margin-bottom: 1rem; }
268body.pageclass-post section:not(.hero) .user-content ul:not([class]) { margin-top: 1rem; margin-bottom: 2rem; }
269body.pageclass-post section:not(.hero) .user-content ul:not([class]) > li { margin-bottom: 0.9rem; }
270body.pageclass-post section:not(.hero) .user-content img { margin: 3.25rem 0; border-radius: 16px; }
271body.pageclass-post section:not(.hero) .user-content p:has(> img) { margin: 0; }
272</style>
273
274
275
276<!-- Unified TGRE tab icon (SVG, matches dashboard / proposals / tours) -->
277<link rel="icon" type="image/svg+xml" href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5NiA5NiI+CiAgPGNpcmNsZSBjeD0iNDgiIGN5PSI0OCIgcj0iNDgiIGZpbGw9IiNkMjVhM2MiLz4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNCAyNC40KSBzY2FsZSgwLjYxNCkiIGZpbGw9IiNmZmZmZmYiPgogICAgPHBhdGggZD0iTTQwLDE3LjFjNC40LDAsOC4zLDEuMiwxMS43LDMuNXM2LDUuNSw3LjcsOS41bDkuMS0yLjNjLTIuNS01LjktNi4yLTEwLjctMTEuMi0xNC4yLTUuMS0zLjYtMTAuOC01LjMtMTcuMy01LjNzLTE2LjMsMy4xLTIyLjUsOS40Yy02LjIsNi4zLTkuMywxMy44LTkuMywyMi43cy4yLDMuNy40LDUuNWg5LjRjLS40LTEuNy0uNi0zLjYtLjYtNS41LDAtNi41LDIuMS0xMiw2LjQtMTYuNSw0LjMtNC41LDkuNi02LjcsMTYuMS02LjdaIi8+CiAgICA8cG9seWdvbiBwb2ludHM9IjM5LjkgMzggMzkuOSA0NS44IDYyLjIgNDUuOCA2Mi4yIDY4LjIgNzAgNjguMiA3MCA0NS44IDcwIDM4LjEgNzAgMzggMzkuOSAzOCIvPgogIDwvZz4KPC9zdmc+Cg==">
278
279
280<!-- Google Search Console verification -->
281<meta name="google-site-verification" content="YxgRoxqrI9LlwdVkQN3NKE9XUEnGEkLwyO2iAFHqmho" />
282
283
284
285<!-- Google tag (gtag.js) - Google Ads conversion tracking (added 2026-07-13) -->
vendor: 64 bytes, lines 285-286
285
286<script async src="https://www.googletagmanager.com/gtag/js?id=
286AW-10897444681
vendor: 12 bytes, line 286
286"></script>
287<script>
288  
vendor: 134 bytes, lines 288-292
288window.dataLayer = window.dataLayer || [];
289  function gtag(){dataLayer.push(arguments);}
290  gtag('js', new Date());
291
292  gtag('config', '
292AW-10897444681
vendor: 4 bytes, line 292
292');
293</script>
293
294
295
296
297<!-- Google Ads conversion events: fire on lead-form submit + thank-you pages (added 2026-07-13; enhanced conversions user_data added 2026-08-04 to resolve Ads diagnostics "needs attention") -->
298<script>
299(function() {
300  function normalisePhone(raw) {
301    var digits = raw.replace(/[^\d+]/g, '');
302    if (!digits) return '';
303    if (digits.charAt(0) === '+') return digits;
304    if (digits.charAt(0) === '0') return '+61' + digits.substring(1);
305    if (digits.indexOf('61') === 0) return '+' + digits;
306    return '+61' + digits;
307  }
308  // Contact conversion on any thank-you / confirmation page
309  document.addEventListener('DOMContentLoaded', function() {
310    if (/thank|confirmation/i.test(window.location.pathname)) {
311      if (typeof gtag === 'function') {
312        gtag('event', 'conversion', {'send_to': 'AW-10897444681/8_yDCL-j0NEZEMmep8wo'});
313      }
314    }
315  });
316  // Submit-lead-form conversion: landlord leads only, and only once the form has actually gone through.
317  // PUSH fires htmlformSuccess after the server accepts a submission. Counted forms: 13 Request Property
318  // Management Advice, 1 Contact Form. Repair, pet and tenant forms are deliberately not counted. (24 Sep 2026)
319  var TGRE_LEAD_FORMS = { '13': true, '1': true };
320  function tgreFormId(el) {
321    if (!el) return '';
322    var f = el.tagName === 'FORM' ? el : (el.querySelector && el.querySelector('form'));
323    var m = f && f.id ? /^htmlform(\d+)_/.exec(f.id) : null;
324    if (m) return m[1];
325    var wrap = el.closest ? el.closest('[data-pushform-id]') : null;
326    return wrap ? String(wrap.getAttribute('data-pushform-id')) : '';
327  }
328  function tgreLeadConversion(form) {
329    if (typeof gtag !== 'function') return;
330    if (form && form.querySelector) {
331      var emailEl = form.querySelector('input[type="email"], input[name*="email" i]');
332      var phoneEl = form.querySelector('input[type="tel"], input[name*="phone" i], input[name*="mobile" i]');
333      var email = emailEl && emailEl.value ? emailEl.value.trim().toLowerCase() : '';
334      var phone = phoneEl && phoneEl.value ? normalisePhone(phoneEl.value.trim()) : '';
335      if (email || phone) {
336        var userData = {};
337        if (email) userData.email = email;
338        if (phone) userData.phone_number = phone;
339        gtag('set', 'user_data', userData);
340      }
341    }
342    gtag('event', 'conversion', {'send_to': 'AW-10897444681/WH-yCPXd_dAZEMmep8wo'});
343  }
344  window.addEventListener('htmlformSuccess', function(e) {
345    var d = (e && e.detail) || {};
346    var form = (d.instance && d.instance.formElement) || d.form;
347    if (TGRE_LEAD_FORMS[tgreFormId(form)]) tgreLeadConversion(form);
348  });
349  // The rental appraisal form (TG-OS) lands on /thank-you after a real submission; tenants land on /thank-you-rental
350  document.addEventListener('DOMContentLoaded', function() {
351    if (/^\/thank-you\/?$/i.test(window.location.pathname)) tgreLeadConversion(null);
352  });
353})();
354</script>
354
355
356
357
358<!-- TGRE stat counter sizing: keep 4-up counter strips from colliding (added 2026-07-14) -->
359<style>
360.tgre-counter{font-size:clamp(2.2rem,4vw,3.4rem)!important;line-height:1.1;display:inline-block;font-variant-numeric:tabular-nums;}
361</style>
362
363<!-- TGRE story rings + viewer styles v2 (footer + homepage hero; CSS lives here because PUSH strips style tags from the rendered footer - updated 2026-07-14) -->
364<style>
365/* ===== TGRE footer CTA row ===== */
366.tgre-foot-cta{display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:nowrap;}
367.tgre-foot-cta-main{flex:1 1 auto;min-width:0;}
368.tgre-foot-cta-main h2{margin-bottom:.4em;}
369
370/* ===== Story ring strip (footer + hero) ===== */
371.tgre-ps-strip{display:flex;gap:44px;align-items:flex-start;flex:0 0 auto;}
372.tgre-ps-trigger{display:flex;flex-direction:column;align-items:center;gap:10px;text-decoration:none;color:inherit;cursor:pointer;flex:0 0 auto;}
373.tgre-ps-ring{position:relative;width:92px;height:92px;border-radius:50%;padding:4px;transition:transform .25s ease;}
374.tgre-ps-ring::before{content:'';position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 210deg,#d46144,#e8926a,#b8492e,#d46144);animation:tgre-ps-spin 7s linear infinite;}
375.tgre-ps-trigger:hover .tgre-ps-ring{transform:scale(1.05);}
376.tgre-ps-trigger:hover .tgre-ps-ring::before{animation-play-state:paused;}
377.tgre-ps-ring-inner{position:relative;width:100%;height:100%;border-radius:50%;background:#fff;border:3px solid #F9F2ED;display:flex;align-items:center;justify-content:center;overflow:hidden;box-sizing:border-box;}
378.tgre-ps-ring-inner img{width:58%;height:58%;object-fit:contain;display:block;}
379.tgre-ps-trigger-label{font-size:.85rem;font-weight:600;letter-spacing:.02em;text-align:center;line-height:1.3;white-space:nowrap;}
380.tgre-ps-trigger-hint{display:block;font-size:.72rem;font-weight:400;opacity:.55;margin-top:2px;}
381@keyframes tgre-ps-spin{to{transform:rotate(1turn);}}
382
383/* Hero variant: sits at the bottom of the homepage hero */
384.tgre-ps-strip-hero{margin-top:10px;}
385.tgre-ps-strip-hero .tgre-ps-trigger-hint{opacity:.75;}
386
387@media (max-width:899px){
388  .tgre-foot-cta{display:block;}
389  .tgre-foot-cta .tgre-ps-strip{margin-top:28px;gap:32px;}
390  .tgre-ps-ring{width:72px;height:72px;padding:3px;}
391  .tgre-ps-trigger-label{font-size:.8rem;}
392}
393
394/* ===== Story viewer overlay ===== */
395.tgre-ps-overlay{position:fixed;inset:0;z-index:999999;background:rgba(12,12,13,.94);display:none;align-items:center;justify-content:center;}
396.tgre-ps-overlay.is-open{display:flex;}
397.tgre-ps-card{position:relative;width:min(430px,100vw);height:min(94vh,764px);background:linear-gradient(175deg,#1b1a19 0%,#181819 55%,#251b15 100%);border-radius:18px;overflow:hidden;font-family:inherit;cursor:pointer;touch-action:none;}
398.tgre-ps-card a,.tgre-ps-card button{cursor:pointer;}
399@media (max-width:520px){.tgre-ps-card{width:100vw;height:100vh;height:100dvh;border-radius:0;}}
400
401.tgre-ps-bars{position:absolute;top:10px;left:10px;right:10px;display:flex;gap:5px;z-index:6;}
402.tgre-ps-bar{flex:1;height:3px;border-radius:3px;background:rgba(255,255,255,.28);overflow:hidden;}
403.tgre-ps-bar span{display:block;height:100%;width:0;background:#d46144;}
404
405.tgre-ps-head{position:absolute;top:24px;left:14px;right:10px;display:flex;align-items:center;gap:10px;z-index:6;}
406.tgre-ps-head-avatar{width:36px;height:36px;border-radius:50%;padding:2px;background:conic-gradient(from 210deg,#d46144,#e8a87c,#f3d5b5,#d46144);flex:0 0 auto;}
407.tgre-ps-head-avatar span{width:100%;height:100%;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;}
408.tgre-ps-head-avatar img{width:60%;height:60%;object-fit:contain;}
409.tgre-ps-head-name{color:#F9F2ED;font-size:.82rem;font-weight:600;line-height:1.2;}
410.tgre-ps-head-name small{display:block;font-weight:400;opacity:.6;font-size:.72rem;}
411.tgre-ps-close{margin-left:auto;background:none;border:0;color:#F9F2ED;font-size:1.9rem;line-height:1;cursor:pointer;padding:6px 10px;opacity:.85;}
412.tgre-ps-close:hover{opacity:1;}
413
414.tgre-ps-slide{position:absolute;inset:0;padding:96px 34px 44px;display:flex;flex-direction:column;justify-content:center;opacity:0;visibility:hidden;transition:opacity .3s ease;z-index:1;}
415.tgre-ps-slide::before{content:'';position:absolute;inset:0;background:radial-gradient(120% 65% at 50% 52%,rgba(212,97,68,.13),rgba(212,97,68,0) 62%);pointer-events:none;}
416.tgre-ps-slide.is-active{opacity:1;visibility:visible;z-index:2;}
417.tgre-ps-slide > *{position:relative;}
418.tgre-ps-kicker{color:#d46144;font-size:.72rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;margin:0 0 14px;}
419.tgre-ps-slide h3{color:#F9F2ED;font-size:1.9rem;line-height:1.15;margin:0 0 16px;font-weight:600;}
420.tgre-ps-slide h3 em{color:#d46144;font-style:italic;}
421.tgre-ps-slide p{color:rgba(249,242,237,.78);font-size:.98rem;line-height:1.55;margin:0 0 6px;}
422.tgre-ps-stat{color:#F9F2ED;font-size:.85rem;margin-top:14px;padding-top:14px;border-top:1px solid rgba(212,97,68,.4);}
423.tgre-ps-stat strong{color:#d46144;font-size:1.05rem;}
424
425/* Cream brand panel on each story's final CTA slide */
426.tgre-ps-panel{background:#F9F2ED;border-radius:16px;padding:26px 24px;}
427.tgre-ps-panel h3{color:#3c3835;}
428.tgre-ps-panel h3 em{color:#d46144;}
429.tgre-ps-panel p{color:rgba(60,56,53,.8);}
430.tgre-ps-panel .tgre-ps-cta{margin-top:18px;}
431.tgre-ps-panel .tgre-ps-cta a.tgre-ps-link{color:#3c3835;opacity:.75;}
432.tgre-ps-panel .tgre-ps-cta a.tgre-ps-link:hover{opacity:1;}
433
434.tgre-ps-cta{display:flex;flex-direction:column;align-items:flex-start;gap:12px;margin-top:22px;position:relative;z-index:5;}
435.tgre-ps-cta a.tgre-ps-btn{display:inline-block;background:#d46144;color:#fff;text-decoration:none;font-weight:600;font-size:.95rem;padding:13px 26px;border-radius:999px;}
436.tgre-ps-cta a.tgre-ps-btn:hover{background:#c05539;color:#fff;}
437.tgre-ps-cta a.tgre-ps-link{color:#F9F2ED;font-size:.88rem;text-decoration:underline;text-underline-offset:3px;opacity:.8;}
438.tgre-ps-cta a.tgre-ps-link:hover{opacity:1;}
439</style>
440
441
442
443<!-- TGRE editorial homepage draft styles (added 2026-07-15; used by /home-preview-jul26 only, inert elsewhere) -->
444<style>
445.tgre-ed-marker{display:block;font-family:geist-wf,sans-serif;font-weight:700;font-size:12px;letter-spacing:.28em;text-transform:uppercase;color:#d46144;margin-bottom:18px;}
446.tgre-ed-statement{text-align:center;max-width:1000px;margin:0 auto;}
447.tgre-ed-statement h2{max-width:none;font-size:clamp(34px,4.6vw,58px);line-height:1.08;margin:0 auto 20px;}
448.tgre-ed-statement p{max-width:56ch;margin:0 auto;}
449.tgre-ed-ctas{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:28px;}
450.tgre-ed-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(24px,3vw,48px);align-items:end;margin-top:40px;}
451.tgre-ed-stat .fig{position:relative;font-family:aventa-wf,sans-serif;font-weight:400;line-height:.9;font-size:clamp(56px,8vw,118px);letter-spacing:-.03em;color:#f8f8f8;}
452.tgre-ed-stat.key .fig{color:#d46144;}
453.tgre-ed-stat .fig .ghost{position:absolute;left:0;top:0;font-size:.6em;color:rgba(255,255,255,.16);text-decoration:line-through;text-decoration-thickness:3px;transform:translate(1.15em,-.2em);}
454.tgre-ed-stat .cap{margin-top:12px;font-size:14px;line-height:1.45;color:rgba(255,255,255,.72);max-width:24ch;}
455.tgre-ed-stat .cap b{color:#fff;}
456.tgre-ed-statfoot{margin-top:40px;font-size:12px;letter-spacing:.06em;color:rgba(255,255,255,.4);max-width:none;}
457.tgre-ed-report{background:#fff;border-radius:18px;padding:clamp(30px,5vw,56px);display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap;box-shadow:0 24px 60px -42px rgba(24,24,25,.35);}
458.tgre-ed-report .lead{flex:1 1 420px;min-width:260px;}
459.tgre-ed-report h2{max-width:none;font-size:clamp(28px,3.6vw,44px);margin:0 0 12px;}
460.tgre-ed-report p{max-width:52ch;margin:0;}
461.tgre-ed-report .tgre-ed-marker{margin-bottom:12px;}
462.tgre-ed-panels{display:grid;grid-template-columns:1fr 1fr;gap:clamp(16px,2vw,24px);margin-top:36px;}
463.tgre-ed-panel{position:relative;display:flex;align-items:flex-end;min-height:clamp(300px,30vw,430px);border-radius:16px;overflow:hidden;text-decoration:none!important;color:#fff;}
464.tgre-ed-panel img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;transition:transform .8s ease;}
465.tgre-ed-panel::after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(180deg,rgba(24,24,25,.05),rgba(24,24,25,.85));}
466.tgre-ed-panel:hover img{transform:scale(1.05);}
467.tgre-ed-panel>div{position:relative;z-index:2;padding:clamp(22px,3vw,34px);}
468.tgre-ed-panel h3{color:#fff;font-family:aventa-wf,sans-serif;font-weight:400;font-size:clamp(24px,2.6vw,32px);margin:0 0 10px;max-width:none;}
469.tgre-ed-panel p{color:rgba(255,255,255,.85);margin:0 0 18px;max-width:40ch;font-size:15px;line-height:1.55;}
470.tgre-ed-panel .pill{display:inline-flex;align-items:center;height:36px;padding:0 18px;border-radius:18px;border:1.5px solid rgba(255,255,255,.85);font-size:13px;font-weight:700;color:#fff;transition:background .3s,color .3s;}
471.tgre-ed-panel:hover .pill{background:#fff;color:#181819;border-color:#fff;}
472.tgre-ed-close{text-align:center;}
473.tgre-ed-close h2{max-width:none;font-size:clamp(36px,5.4vw,64px);margin:0 auto 16px;}
474.tgre-ed-close p{margin-left:auto;margin-right:auto;}
475.tgre-ed-close .foot{margin-top:44px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.55);max-width:none;}
476@media(max-width:820px){
477.tgre-ed-stats{grid-template-columns:repeat(2,1fr);gap:36px 20px;}
478.tgre-ed-panels{grid-template-columns:1fr;}
479}
480</style>
481
482
483
484<!-- TGRE editorial panels: CKEditor-safe overlay link (added 2026-07-16) -->
485<style>
486.tgre-ed-panel{cursor:pointer;}
487.tgre-ed-panel-link{position:absolute;inset:0;z-index:5;font-size:0;line-height:0;text-decoration:none;}
488</style>
489
490
491
492<!-- TGRE footer v2: areas strip, trust row, CTA sublink (added 2026-07-16) -->
493<style>
494.tgre-foot-areas{margin-top:30px;font-size:13px;opacity:.68;}
495.tgre-foot-areas a{text-decoration:underline;text-underline-offset:3px;}
496.tgre-foot-trust{margin-top:10px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.45;}
497.tgre-foot-sub{display:inline-block;margin-top:10px;font-size:13.5px;text-decoration:underline;text-underline-offset:3px;opacity:.75;}
498</style>
499
500
501<style>
502/* TGRE: hide the template-injected Office Details block on the Contact page (16 Jul 2026) */
503html:has(link[rel="canonical"][href*="/contact-us"]) section.content-container:has(.office){display:none!important}
504</style>
505
506
507<style>
508/* ===== TGRE Motion v3 (19 Jul 2026) — scroll reveal + micro-interactions.
509   v3 over v2: one site-wide settle curve cubic-bezier(.22,1,.36,1), softer 4px
510   blur-in, pre-reveal will-change promotion, hover timing unified. CSS-only.
511   Gated on html.tgre-motion (added by the Motion script in Body End Includes;
512   never added when prefers-reduced-motion). v2 over v1: soft blur-in, a touch
513   more travel, image zoom-settle reveal (offset-pair + editorial panels), a
514   growing accent line under stat figures, longer marker underline.
515   Delete this block to disable. ===== */
516html.tgre-motion .tgre-mo{opacity:0;transform:translateY(34px);filter:blur(4px);transition:opacity .6s cubic-bezier(.22,1,.36,1),transform .6s cubic-bezier(.22,1,.36,1),filter .6s cubic-bezier(.22,1,.36,1)}
517html.tgre-motion .tgre-mo.tgre-in{opacity:1;transform:none;filter:none}
518html.tgre-motion .tgre-mo .grid>div,html.tgre-motion .tgre-mo .tgre-ed-stat,html.tgre-motion .tgre-mo .tgre-ed-panel{opacity:0;transform:translateY(24px);transition:opacity .5s cubic-bezier(.22,1,.36,1),transform .5s cubic-bezier(.22,1,.36,1)}
519html.tgre-motion .tgre-mo.tgre-in .grid>div,html.tgre-motion .tgre-mo.tgre-in .tgre-ed-stat,html.tgre-motion .tgre-mo.tgre-in .tgre-ed-panel{opacity:1;transform:none}
520html.tgre-motion .tgre-mo.tgre-in .grid>div:nth-child(2),html.tgre-motion .tgre-mo.tgre-in .tgre-ed-stat:nth-child(2),html.tgre-motion .tgre-mo.tgre-in .tgre-ed-panel:nth-child(2){transition-delay:.
52008s}
521html.tgre-motion .tgre-mo.tgre-in .grid>div:nth-child(3),html.tgre-motion .tgre-mo.tgre-in .tgre-ed-stat:nth-child(3){transition-delay:.16s}
522html.tgre-motion .tgre-mo.tgre-in .grid>div:nth-child(4),html.tgre-motion .tgre-mo.tgre-in .tgre-ed-stat:nth-child(4){transition-delay:.24s}
523html.tgre-motion .tgre-mo.tgre-in .grid>div:nth-child(5){transition-delay:.32s}
524html.tgre-motion .tgre-mo.tgre-in .grid>div:nth-child(6){transition-delay:.4s}
525html.tgre-motion .tgre-mo.tgre-in .grid>div:nth-child(n+7){transition-delay:.48s}
526html.tgre-motion .tgre-ed-marker{opacity:0;transform:translateX(-18px);transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1)}
527html.tgre-motion .tgre-ed-marker.tgre-in{opacity:1;transform:none}
528html.tgre-motion .tgre-ed-marker::after{content:"";display:inline-block;vertical-align:middle;width:0;height:2px;background:#d46144;margin-left:12px;transition:width 1s .35s cubic-bezier(.22,1,.36,1)}
529html.tgre-motion .tgre-ed-marker.tgre-in::after{width:44px}
530/* v2 image reveal — safe zoom-settle: never uses opacity/clip, so a dropped value cannot hide a photo */
531html.tgre-motion .tgre-mo .offset-pair .image img,html.tgre-motion .tgre-mo .tgre-ed-panel img{transform:scale(1.07);transition:transform 1s cubic-bezier(.22,1,.36,1)}
532html.tgre-motion .tgre-mo.tgre-in .offset-pair .image img,html.tgre-motion .tgre-mo.tgre-in .tgre-ed-panel img{transform:none}
533/* v2 growing accent line under stat figures (additive; absent if unsupported, never breaks layout) */
534html.tgre-motion .tgre-mo .tgre-ed-stat .fig::after{content:"";display:block;width:0;height:2px;background:#d46144;margin-top:14px;transition:width .85s .2s cubic-bezier(.22,1,.36,1)}
535html.tgre-motion .tgre-mo.tgre-in .tgre-ed-stat .fig::after{width:44px}
536html.tgre-motion .tgre-mo.tgre-in .tgre-ed-stat:nth-child(2) .fig::after{transition-delay:.3s}
537html.tgre-motion .tgre-mo.tgre-in .tgre-ed-stat:nth-child(3) .fig::after{transition-delay:.4s}
538html.tgre-motion .tgre-mo.tgre-in .tgre-ed-stat:nth-child(4) .fig::after{transition-delay:.5s}
539/* v3 pre-reveal compositor promotion: prevents first-frame jank; selector stops matching once revealed */
540html.tgre-motion .tgre-mo:not(.tgre-in),html.tgre-motion .tgre-mo:not(.tgre-in) .grid>div,html.tgre-motion .tgre-mo:not(.tgre-in) .tgre-ed-stat,html.tgre-motion .tgre-mo:not(.tgre-in) .tgre-ed-panel{will-change:opacity,transform}
541@media (hover:hover){
542html.tgre-motion .pushbutton{transition:transform .25s cubic-bezier(.22,1,.36,1),box-shadow .25s ease}
543html.tgre-motion .pushbutton:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(24,24,25,.14)}
544html.tgre-motion .tgre-ed-panel{transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s ease,opacity .6s cubic-bezier(.22,1,.36,1)}
545html.tgre-motion .tgre-mo.tgre-in .tgre-ed-panel:hover{transform:translateY(-4px);box-shadow:0 24px 60px rgba(24,24,25,.16)}
546html.tgre-motion .offset-pair .image{overflow:hidden}
547html.tgre-motion .tgre-mo.tgre-in .offset-pair:hover .image img{transform:scale(1.05)}
548html.tgre-motion .tgre-mo.tgre-in .tgre-ed-panel:hover img{transform:scale(1.06)}
549}
550@media (prefers-reduced-motion:reduce){
551html.tgre-motion .tgre-mo,html.tgre-motion .tgre-mo .grid>div,html.tgre-motion .tgre-mo .tgre-ed-stat,html.tgre-motion .tgre-mo .tgre-ed-panel,html.tgre-motion .tgre-ed-marker{opacity:1;transform:none;filter:none;transition:none}
552html.tgre-motion .tgre-mo .offset-pair .image img,html.tgre-motion .tgre-mo .tgre-ed-panel img{transform:none}
553html.tgre-motion .tgre-ed-stat .fig::after{width:44px;transition:none}
554}
555</style>
556
557<!-- TGRE rounded imagery: consistent 16px radius on offset-pair and pushimage blocks site-wide (17 Jul 2026) -->
558<style>
559.offset-pair .image,.pushimage{border-radius:16px;overflow:hidden}
560.offset-pair .image img,.pushimage img{border-radius:16px}
561</style>
562
563<!-- TGRE footer brand bar + button width cap + Motion v2 parallax (17 Jul 2026) -->
564<style>
565.tgre-foot-brandbar{margin-top:36px;padding-top:26px;border-top:1px solid rgba(24,24,25,.12)}
566.tgre-foot-tag{font-size:14.5px;line-height:1.6;opacity:.85;max-width:64ch;margin:0}
567.tgre-foot-meta{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;opacity:.55;margin:10px 0 0}
568.tgre-foot-legal{font-size:12px;opacity:.5;margin:8px 0 0}
569.tgre-foot-legal a{text-decoration:underline;text-underline-offset:3px}
570@media(min-width:640px){.pushblock a.pushbutton[data-halign="stretch"]{max-width:420px}}
571</style>
572
573<!-- Immersive .rj engine (v2 animation: slow reveals, write-on words, consistent underline, ken-bur
573ns) 19 Jul 2026 -->
574<style>
575html:has(.rj) main.siteMain>section.hero.content-container{display:none!important}
576html:has(.rj) main.siteMain>.user-content{padding:0!important;margin:0!important;max-width:none!important}
577.rj{--e:cubic-bezier(.22,1,.36,1);position:relative;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);background:#141312;color:#F9F2ED;overflow:hidden;font-family:geist-wf,sans-serif;line-height:1.5}
578.rj *{box-sizing:border-box}
579.rj em{font-style:italic;color:#d46144}
580.rj h2{font-family:aventa-wf,sans-serif;font-weight:600;letter-spacing:-.02em;line-height:1.05;color:#F9F2ED;max-width:none}
581.rj p{margin:0}
582.rj-hero{min-height:92vh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:12vh 24px;background:radial-gradient(120% 90% at 50% 0%,#241a15,#141312 62%)}
583.rj-eyebrow{font-size:12px;font-weight:700;letter-spacing:.28em;text-transform:uppercase;color:#d46144;margin-bottom:22px}
584.rj-h1{font-family:aventa-wf,sans-serif;font-weight:700;font-size:clamp(44px,8vw,110px);line-height:1.02;letter-spacing:-.03em;margin:0}
585.rj-sub{margin-top:22px!important;max-width:52ch;font-size:clamp(16px,2vw,21px);color:rgba(249,242,237,.72)}
586.rj-teaser{margin-top:32px;display:flex;gap:26px;flex-wrap:wrap;justify-content:center;font-size:13px;color:rgba(249,242,237,.6)}
587.rj-teaser b{color:#d46144;font-family:aventa-wf,sans-serif;font-weight:600}
588.rj-hero>*{opacity:0;transform:translateY(24px);animation:rjUp 1.2s var(--e) forwards}
589.rj-hero>*:nth-child(2){animation-delay:.18s}.rj-hero>*:nth-child(3){animation-delay:.36s}.rj-hero>*:nth-child(4){animation-delay:.54s}
590@keyframes rjUp{to{opacity:1;transform:none}}
591.rj-act{min-height:60vh;display:flex;flex-direction:column;justify-content:center;padding:12vh clamp(24px,7vw,110px)}
592.rj-num{font-family:aventa-wf,sans-serif;font-weight:700;font-size:clamp(60px,12vw,180px);color:rgba(249,242,237,.08);line-height:.8;letter-spacing:-.04em}
593.rj-lbl{font-size:12px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:#d46144;margin:18px 0 10px}
594.rj-ah{font-size:clamp(30px,5vw,64px);max-width:18ch}
595.rj-ap{margin-top:16px!important;max-width:44ch;color:rgba(249,242,237,.72);font-size:clamp(15px,1.6vw,19px)}
596.rj-scene{min-height:100vh;display:flex;align-items:center;gap:clamp(24px,5vw,84px);padding:9vh clamp(24px,7vw,110px);position:relative}
597.rj-scene.rev{flex-direction:row-reverse}
598.rj-media{flex:0 0 auto;width:min(58vw,860px);aspect-ratio:3/2;border-radius:20px;overflow:hidden;position:relative;box-shadow:0 50px 110px -50px rgba(0,0,0,.85)}
599.rj-media img{width:100%;height:100%;object-fit:cover;display:block}
600.rj-txt{flex:1 1 auto;min-width:260px;max-width:520px}
601.rj-day{font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#d46144;margin-bottom:14px}
602.rj-sh{font-size:clamp(30px,4.6vw,56px)}
603.rj-body{margin-top:18px!important;font-size:clamp(15px,1.5vw,18px);color:rgba(249,242,237,.76)}
604.rj-link{display:inline-block;margin-top:18px;color:#d46144!important;font-weight:600;font-size:15px;text-decoration:none;border-bottom:1px solid rgba(212,97,68,.5);padding-bottom:2px}
605.rj-stat{margin-top:24px;display:inline-flex;align-items:baseline;gap:10px;padding:12px 20px;border:1px solid rgba(212,97,68,.4);border-radius:999px;background:rgba(212,97,68,.08)}
606.rj-stat b{font-family:aventa-wf,sans-serif;font-size:28px;color:#d46144;font-weight:600;line-height:1}
607.rj-stat span{font-size:13px;color:rgba(249,242,237,.82)}
608.rj-scene.bleed{padding:0;display:block}
609.rj-scene.bleed .rj-media{width:100%;height:100vh;aspect-ratio:auto;border-radius:0;box-shadow:none;opacity:1!important;transform:none!important}
610.rj-scene.bleed .rj-txt{position:absolute;left:clamp(24px,7vw,110px);right:24px;bottom:15vh;max-width:640px;z-index:3}
611.rj-scene.bleed::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,19,18,.1) 40%,rgba(20,19,18,.92));z-index:2}
612.rj-emph{position:relative;display:inline-block}
613.rj-emph svg{position:absolute;left:-1%;bottom:-.16em;width:102%;height:.34em;overflow:visible}
614.rj-emph svg path{fill:none;stroke:#d46144;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:.92;transition:stroke-dashoffset 1.5s 1.6s cubic-bezier(.22,.7,.2,1)}
615@supports ((background-clip:text) or (-webkit-background-clip:text)){
616html.rj-anim .rj-emph em{color:transparent;background:linear-gradient(90deg,#d46144,#d46144) left center/0% 100% no-repeat;-webkit-background-clip:text;background-clip:text;transition:background-size 1.5s cubic-bezier(.3,.5,.2,1)}
617html.rj-anim .rj-emph.rj-lit em{background-size:100% 100%}
618}
619.rj-scene .rj-txt>*,.rj-act>*,.rj-cta>*{opacity:0;transform:translateY(26px);filter:blur(4px);transition:opacity 1.3s var(--e),transform 1.3s var(--e),filter 1.3s var(--e)}
620.rj-scene .rj-media{opacity:0;transform:scale(.955);transition:opacity 1.4s var(--e),transform 1.9s var(--e)}
621.rj-scene.rj-in .rj-txt>*,.rj-act.rj-in>*,.rj-cta.rj-in>*{opacity:1;transform:none;filter:none}
622.rj-scene.rj-in .rj-media{opacity:1;transform:none}
623.rj-scene.rj-in .rj-txt>*:nth-child(2){transition-delay:.14s}.rj-scene.rj-in .rj-txt>*:nth-child(3){transition-delay:.28s}.rj-scene.rj-in .rj-txt>*:nth-child(4){transition-delay:.42s}.rj-scene.rj-in .rj-txt>*:nth-child(5){transition-delay:.56s}
624.rj-act.rj-in>*:nth-child(2){transition-delay:.14s}.rj-act.rj-in>*:nth-child(3){transition-delay:.28s}.rj-act.rj-in>*:nth-child(4){transition-delay:.42s}
625.rj-scene:not(.rj-in) .rj-txt>*,.rj-act:not(.rj-in)>*,.rj-cta:not(.rj-in)>*,.rj-scene:not(.rj-in) .rj-media{will-change:opacity,transform}
626html.rj-anim .rj-scene.rj-in .rj-media img{animation:rjKen 20s ease-in-out infinite alternate}
627@keyframes rjKen{from{transform:scale(1.01)}to{transform:scale(1.07)}}
628.rj-cta{min-height:auto;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:14vh 24px;background:linear-gradient(rgba(20,19,18,.82),rgba(20,19,18,.9)),url('https://www.thegalleryrealestate.com.au/imagecache/fitwithin/1600x1600/_files/tgre-shoot-day/984e9f9c-4c74-4c0f-b23d-8dca824e50ab.jpg') center/cover;background-blend-mode:normal}
629.rj-cta .rj-lbl{color:#d46144}
630.rj-cta-h{font-size:clamp(32px,5.4vw,64px);color:#F9F2ED;max-width:16ch}
631.rj-cta-h em{color:#d46144}
632.rj-cta-p{margin-top:18px!important;max-width:46ch;color:rgba(249,242,237,.72);font-size:clamp(16px,1.7vw,19px)}
633.rj-btns{margin-top:30px;display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
634.rj-b1{background:transparent;border:1.5px solid rgba(249,242,237,.5);color:#F9F2ED!important;text-decoration:none;font-weight:600;padding:14px 28px;border-radius:999px;font-size:15px;transition:border-color .2s}
635.rj-b1:hover{border-color:#F9F2ED}
636.rj-b2{background:#d46144;border:1.5px solid #d46144;color:#fff!important;text-decoration:none;font-weight:600;padding:14px 28px;border-radius:999px;font-size:15px}
637@media(max-width:860px){
638 .rj-scene,.rj-scene.rev{flex-direction:column;padding:7vh 22px;gap:24px;min-height:auto}
639 .rj-media{width:100%}.rj-txt{max-width:none}
640 .rj-scene.bleed .rj-txt{bottom:10vh;left:22px;right:22px}
641 .rj-act{padding:9vh 22px;min-height:auto}
642}
643@media(prefers-reduced-motion:reduce){
644 .rj-hero>*{animation:none;opacity:1;transform:none}
645 .rj-scene .rj-txt>*,.rj-act>*,.rj-cta>*,.rj-scene .rj-media{opacity:1!important;transform:none!important;filter:none!important}
646 .rj-emph svg path{stroke-dashoffset:0!important}
647 html.rj-anim .rj-emph em{color:#d46144;background:none}
648 html.rj-anim .rj-scene.rj-in .rj-media img{animation:none}
649}
650</style>
651
652<!-- TGRE word annotations v3: write-on + underline + double underline + circle + red tick + drawn arrow (.tg-*) 19 Jul 2026 -->
653<style>
654.tg-wo{position:relative;display:inline-block}
655.tg-annot{position:absolute;overflow:visible;pointer-events:none}
656.tg-ul .tg-annot{left:-1%;bottom:-.14em;width:102%;height:.3em}
657.tg-circ .tg-annot{left:-50%;top:-31%;width:166%;height:170%}
658.tg-arr{left:0;top:0;bottom:auto}
659.tgre-subs summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:12px;font-weight:600;font-size:15px;padding:14px 24px;border:1.5px solid rgba(24,24,25,.28);border-radius:999px;user-select:none;transition:border-color .25s,color .25s}
660.tgre-subs summary::-webkit-details-marker{display:none}
661.tgre-subs summary::after{content:"+";font-weight:600;font-size:17px;line-height:1;transition:transform .35s cubic-bezier(.22,1,.36,1)}
662.tgre-subs summary:hover{border-color:#d46144;color:#d46144}
663.tgre-subs[open] summary::after{transform:rotate(45deg)}
664.tgre-subs[open] summary{margin-bottom:20px}
665.tgre-subs[open] .grid{animation:tgreSubsIn .55s cubic-bezier(.22,1,.36,1)}
666@keyframes tgreSubsIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
667.tg-arr path{transition:stroke-dashoffset 1.4s 1.55s cubic-bezier(.22,.7,.2,1)}
668.tg-ul2 .tg-annot{left:-1%;bottom:-.36em;width:102%;height:.55em}
669.tg-ul2 .tg-annot path:nth-of-type(2){transition-delay:2.45s;transition-duration:.9s}
670.tg-annot path{fill:none;stroke:#d46144;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:.92;transition:stroke-dashoffset 1.5s 1.6s cubic-bezier(.22,.7,.2,1)}
671.tg-circ .tg-annot path{transition:stroke-dashoffset 1s 1.4s cubic-bezier(.22,.7,.2,1)}
672.tg-tk{display:inline-block;width:.58em;height:.58em;margin-left:.16em;overflow:visible;vertical-align:-.02em}
673.tg-tk path{fill:none;stroke:#d46144;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:.95;transition:stroke-dashoffset .5s 1.6s cubic-bezier(.3,.6,.3,1)}
674.tg-tk .tk-b{transition-delay:1.95s}
675@supports ((background-clip:text) or (-webkit-background-clip:text)){
676html.tg-anim .tg-wo{color:transparent;background:linear-gradient(90deg,#d46144,#d46144) left center/0% 100% no-repeat;-webkit-background-clip:text;background-clip:text;transition:background-size 1.5s cubic-bezier(.3,.5,.2,1)}
677html.tg-anim .tg-wo.tg-lit{background-size:100% 100%}
678}
679@media(prefers-reduced-motion:reduce){html.tg-anim .tg-wo{color:#d46144;background:none}.tg-annot path,.tg-tk path{stroke-dashoffset:0!important}}
680</style>
681<style>
682/* TGRE mobile speed: all reveal/draw animations 25% faster under 860px (19 Jul 2026) */
683@media(max-width:860px){
684html.tgre-motion .tgre-mo{transition:opacity .45s cubic-bezier(.22,1,.36,1),transform .45s cubic-bezier(.22,1,.36,1),filter .45s cubic-bezier(.22,1,.36,1)}
685html.tgre-motion .tgre-mo .grid>div,html.tgre-motion .tgre-mo .tgre-ed-stat,html.tgre-motion .tgre-mo .tgre-ed-panel{transition:opacity .38s cubic-bezier(.22,1,.36,1),transform .38s cubic-bezier(.22,1,.36,1)}
686html.tgre-motion .tgre-mo.tgre-in .grid>div:nth-child(2),html.tgre-motion .tgre-mo.tgre-in .tgre-ed-stat:nth-child(2),html.tgre-motion .tgre-mo.tgre-in .tgre-ed-panel:nth-child(2){transition-delay:.
68605s}
687html.tgre-motion .tgre-mo.tgre-in .grid>div:nth-child(3),html.tgre-motion .tgre-mo.tgre-in .tgre-ed-stat:nth-child(3){transition-delay:.11s}
688html.tgre-motion .tgre-mo.tgre-in .grid>div:nth-child(4),html.tgre-motion .tgre-mo.tgre-in .tgre-ed-stat:nth-child(4){transition-delay:.17s}
689html.tgre-motion .tgre-mo.tgre-in .grid>div:nth-child(5){transition-delay:.22s}
690html.tgre-motion .tgre-mo.tgre-in .grid>div:nth-child(6){transition-delay:.27s}
691html.tgre-motion .tgre-mo.tgre-in .grid>div:nth-child(n+7){transition-delay:.32s}
692html.tgre-motion .tgre-ed-marker{transition:opacity .54s cubic-bezier(.22,1,.36,1),transform .54s cubic-bezier(.22,1,.36,1)}
693html.tgre-motion .tgre-ed-marker::after{transition:width .68s .24s cubic-bezier(.22,1,.36,1)}
694html.tgre-motion .tgre-mo .offset-pair .image img,html.tgre-motion .tgre-mo .tgre-ed-panel img{transition:transform .68s cubic-bezier(.22,1,.36,1)}
695html.tgre-motion .tgre-mo .tgre-ed-stat .fig::after{transition:width .58s .14s cubic-bezier(.22,1,.36,1)}
696html.tgre-motion .tgre-mo.tgre-in .tgre-ed-stat:nth-child(2) .fig::after{transition-delay:.2s}
697html.tgre-motion .tgre-mo.tgre-in .tgre-ed-stat:nth-child(3) .fig::after{transition-delay:.27s}
698html.tgre-motion .tgre-mo.tgre-in .tgre-ed-stat:nth-child(4) .fig::after{transition-delay:.34s}
699html.tg-anim .tg-wo{transition:background-size .77s cubic-bezier(.3,.5,.2,1)}
700.tg-annot path{transition:stroke-dashoffset .77s .81s cubic-bezier(.22,.7,.2,1)}
701.tg-circ .tg-annot path{transition:stroke-dashoffset .51s .71s cubic-bezier(.22,.7,.2,1)}
702.tg-tk path{transition:stroke-dashoffset .26s .81s cubic-bezier(.3,.6,.3,1)}
703.tg-tk .tk-b{transition-delay:.98s}
704.tg-arr path{transition:stroke-dashoffset .71s .78s cubic-bezier(.22,.7,.2,1)}
705.tg-ul2 .tg-annot path:nth-of-type(2){transition-delay:1.25s;transition-duration:.46s}
706html.rj-anim .rj-emph em{transition:background-size .77s cubic-bezier(.3,.5,.2,1)}
707.rj-emph svg path{transition:stroke-dashoffset .77s .81s cubic-bezier(.22,.7,.2,1)}
708.rj-scene .rj-txt>*,.rj-act>*,.rj-cta>*{transition:opacity .88s var(--e),transform .88s var(--e),filter .88s var(--e)}
709.rj-scene .rj-media{transition:opacity .95s var(--e),transform 1.28s var(--e)}
710.rj-scene.rj-in .rj-txt>*:nth-child(2){transition-delay:.1s}.rj-scene.rj-in .rj-txt>*:nth-child(3){transition-delay:.19s}.rj-scene.rj-in .rj-txt>*:nth-child(4){transition-delay:.29s}.rj-scene.rj-in .rj-txt>*:nth-child(5){transition-delay:.38s}
711.rj-act.rj-in>*:nth-child(2){transition-delay:.1s}.rj-act.rj-in>*:nth-child(3){transition-delay:.19s}.rj-act.rj-in>*:nth-child(4){transition-delay:.29s}
712.rj-hero>*{animation-duration:.81s}
713.rj-hero>*:nth-child(2){animation-delay:.12s}.rj-hero>*:nth-child(3){animation-delay:.24s}.rj-hero>*:nth-child(4){animation-delay:.37s}
714}
715</style>
716
717<style>
718/* TGRE hand-written hero word (.tg-hw) 19 Jul 2026 — marker-writes "specialists." in the hero.
719   Rollback: remove this block + restore the hero em on page 25 (backup page-25-backup-2026-07-19-pre-tghw.html). */
720.tg-hw{display:block;width:5.34em;max-width:94%;height:auto;overflow:visible;margin-top:.06em}
721html.tg-anim .tg-hw .pen{animation-name:tgHw;animation-timing-function:linear;animation-fill-mode:forwards}
722@keyframes tgHw{to{stroke-dashoffset:0}}
723html:not(.tg-anim) .tg-hw .pen,html:not(.tg-anim) .tg-hw .ul-path{stroke-dashoffset:0!important;animation:none!important}
724@media(prefers-reduced-motion:reduce){.tg-hw .pen,.tg-hw .ul-path{animation:none!important;stroke-dashoffset:0!important}}
725</style>
726
727
728
729<!-- TGRE homepage stat tidy + hand-written margin note (20 Jul 2026) -->
730<link rel="preconnect" href="https://fonts.googleapis.com">
731<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
732<link href="https://fonts.googleapis.com/css2?family=Kalam:wght@400;700&display=swap" rel="stylesheet">
733<style>
734/* Drop the animated accent line under the stat figures and lift the grey captions */
735.tgre-ed-stats .tgre-ed-stat .fig::after{display:none!important}
736.tgre-ed-stats .tgre-ed-stat .cap{margin-top:5px!important}
737/* Hand-written marker note, angled above a heading word (e.g. "We heart MPG") */
738.tg-hn-wrap{position:relative;display:inline-block}
739.tg-hn{position:absolute;
739left:46%;top:-1.15em;width:3.15em;height:auto;pointer-events:none;transform:rotate(-10deg)}
740.tg-hn svg{display:block;width:100%;height:auto;overflow:visible}
741.tg-hn path{fill:none;stroke:#d46144;stroke-width:9;stroke-linecap:round;stroke-linejoin:round}
742.tg-hn .tg-heart-fill{fill:#d46144;stroke:none;opacity:0;transition:opacity .5s ease 1.5s}
743.tg-hn.tg-lit .tg-heart-fill{opacity:1}
744@media(max-width:860px){.tg-hn{left:26%;top:-1.2em}}
745</style>
746
747
748<style>
749/* Handwritten section marker (S8 close): "The Invitation" in the Kalam marker hand (20 Jul 2026) */
750.tg-hw-marker{display:block;width:min(210px,45vw);margin:0 auto 18px;transform:rotate(-3deg)}
751.tg-hw-marker svg{display:block;width:100%;height:auto;overflow:visible}
752.tg-hw-marker path{fill:none;stroke:#d46144;stroke-width:6.5;stroke-linecap:round;stroke-linejoin:round}
753html:not(.tg-anim) .tg-hn path,html:not(.tg-anim) .tg-hw-marker path{stroke-dashoffset:0!important}
754html:not(.tg-anim) .tg-hn .tg-heart-fill{opacity:1}
755@media(prefers-reduced-motion:reduce){.tg-hn path,.tg-hw-marker path{stroke-dashoffset:0!important;transition:none!important}.tg-hn .tg-heart-fill{opacity:1!important;transition:none!important}}
756</style>
757
758
759<style>
760/* "The Invitation" writes on slower, at pen speed (20 Jul 2026) */
761/* (superseded by stroke-drawn SVG) */
762</style>
763<style>
764/* Homepage review band v3 (hand-drawn stars + quote mark), invitation sizing, mobile footer trim, proof-gap fix (20 Jul 2026) */
765.tgre-rev{position:relative;text-align:center;max-width:900px;margin:0 auto}
766.tgre-rev p{max-width:none;margin-left:auto;margin-right:auto}
767.tgre-rev-qmark{position:absolute;left:50%;top:-58px;transform:translateX(-50%) rotate(-6deg);width:230px;pointer-events:none;opacity:.16}
768.tgre-rev-qmark svg{display:block;width:100%;height:auto;overflow:visible}
769.tgre-rev-qmark path{fill:none;stroke:#d46144;stroke-width:24;stroke-linecap:round}
770.tgre-rev-stars{display:flex;gap:12px;justify-content:center;align-items:center;margin:0 0 20px;position:relative}
771.tgre-rev-stars .tg-star{width:22px;height:22px;overflow:visible;transform:rotate(-8deg)}
772.tgre-rev-stars .tg-star:nth-child(2n){transform:rotate(6deg)}
773.tgre-rev-stars .st{fill:none;stroke:#d46144;stroke-width:7;stroke-linecap:round;stroke-linejoin:round}
774.tgre-rev-stars .tg-star-fill{fill:#d46144;opacity:0;transition:opacity .35s ease}
775.tgre-rev-stars.tg-lit .tg-star-fill{opacity:1}
776.tgre-rev-rot{display:grid}
777.tgre-rev-slide{grid-area:1/1;opacity:0;animation:tgreRevCycle 15s infinite}
778.tgre-rev-slide:nth-child(2){animation-delay:5s}
779.tgre-rev-slide:nth-child(3){animation-delay:10s}
780@keyframes tgreRevCycle{0%{opacity:0;transform:translateY(10px)}2.5%,31.5%{opacity:1;transform:none}34%,100%{opacity:0;transform:none}}
781.tgre-rev h2{max-width:none;font-size:clamp(30px,4.2vw,52px);line-height:1.12;margin:0 0 16px;position:relative}
782.tgre-rev-name{font-weight:600;margin:0}
783.tgre-rev .pushbutton-wrap{display:flex;justify-content:center}
784.tgre-rev-link{display:block;width:min(240px,58vw);margin:0 auto;transition:transform .25s ease}
785.tgre-rev-link:hover{transform:scale(1.05) rotate(-1.5deg)}
786.tgre-rev-link svg{display:block;width:100%;height:auto;overflow:visible}
787.tgre-rev-link path{fill:none;stroke:#d46144;stroke-width:6.5;stroke-linecap:round;stroke-linejoin:round}
788html:not(.tg-anim) .tgre-rev-stars path,html:not(.tg-anim) .tgre-rev-qmark path,html:not(.tg-anim) .tgre-rev-link path{stroke-dashoffset:0!important}
789html:not(.tg-anim) .tgre-rev-stars .tg-star-fill{opacity:1}
790@media(prefers-reduced-motion:reduce){.tgre-rev-slide{animation:none}.tgre-rev-rot .tgre-rev-slide:first-child{opacity:1}.tgre-rev-stars path,.tgre-rev-qmark path,.tgre-rev-link path{stroke-dashoffset:0!important;transition:none!important}.tgre-rev-stars .tg-star-fill{opacity:1!important}}
791@media(max-width:860px){.tg-hw-marker{width:100px;margin-bottom:12px}.tgre-rev-qmark{width:160px;top:-40px}.tgre-rev-stars .tg-star{width:18px;height:18px}}
792@media(max-width:899px){.tgre-foot-cta-main{display:none!important}}
793/* Proof band: close the dead air between the stats and the awards */
794section:has(.tgre-ed-stats){padding-bottom:26px!important}
795section:has(.tgre-ed-stats)+section{padding-top:20px!important}
796/* Tighter reviews + rental report bands */
797section:has(.tgre-rev){padding-top:48px!important;padding-bottom:48px!important}
798section:has(.tgre-ed-report){padding-top:14px!important;padding-bottom:14px!important}
799</style>
800
801
802<style>/* [rental-appraisal embed preview 267 - remove when preview retired] hide theme title band so the embedded form's own hero leads */
803html:has(link[rel="canonical"][href*="/rental-appraisal-preview"]) main.siteMain>section.hero.content-container{display:none!important}</style>
804
805
806<style>/* [rental-appraisal embed page 155] hide theme hero band so the embedded form leads, like the preview */
807html:has(link[rel="canonical"][href*="/request-a-rental-appraisal"]) main.siteMain>section.hero{display:none!important}</style>
808
809
810<style>/* [form embed pages 182/229/198/268/272] hide theme hero band so the embedded form leads, like page 155 */
811html:has(link[rel="canonical"][href*="/mpg-parcel-drop-off"]) main.siteMain>section.hero,
812html:has(link[rel="canonical"][href*="/landlordonboarding"]) main.siteMain>section.hero,
813html:has(link[rel="canonical"][href*="/rental-report"]) main.siteMain>section.hero,
814html:has(link[rel="canonical"][href*="/moore-park-gardens-rental-enquiry"]) main.siteMain>section.hero,
815html:has(link[rel="canonical"][href*="/tenant-enquiry"]) main.siteMain>section.hero{display:none!important}</style>
816
817
818
819<style>
820/* Footer arrow: triangle head drawn then coloured in (21 Jul 2026) */
821.tg-arr .tg-arr-head{fill:#d46144;stroke:none;fill-opacity:0;transition:fill-opacity .5s ease 2.9s}
822.tg-wo.tg-lit .tg-arr-head{fill-opacity:.92}
823html:not(.tg-anim) .tg-arr .tg-arr-head{fill-opacity:.92}
824@media(max-width:860px){.tg-arr .tg-arr-head{transition:fill-opacity .4s ease 1.5s}}
825@media(prefers-reduced-motion:reduce){.tg-arr .tg-arr-head{fill-opacity:.92!important;transition:none!important}}
826</style>
827
828
829
830<style>
831/* Hero "specialists" — underline draws AFTER the word fully reveals (22 Jul 2026) */
832.pushblock.bg-cover .tg-wo.tg-ul .tg-annot path{transition:stroke-dashoffset 1.2s 2s cubic-bezier(.22,.7,.2,1)}
833@media(max-width:860px){.pushblock.bg-cover .tg-wo.tg-ul .tg-annot path{transition:stroke-dashoffset .85s 1.15s cubic-bezier(.22,.7,.2,1)}}
834</style>
835
836
837
838<style>
839/* Hero "specialists" underline — self-contained draw on load, after the word reveals (22 Jul 2026).
840   Decoupled from the scroll-reveal engine so it animates above the fold. */
841.tg-hero-ul{position:relative;display:inline-block}
842.tg-hero-annot{position:absolute;left:-1%;bottom:-.14em;width:102%;height:.3em;overflow:visible;pointer-events:none}
843.tg-hero-annot path{fill:none;stroke:#d46144;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:.92;stroke-dasharray:135;stroke-dashoffset:135;animation:tgHeroUL 1.2s cubic-bezier(.22,.7,.2,1) 1.7s both}
844@keyframes tgHeroUL{from{stroke-dashoffset:135}to{stroke-dashoffset:0}}
845@media(max-width:860px){.tg-hero-annot path{animation-duration:.85s;animation-delay:.95s}}
846@media(prefers-reduced-motion:reduce){.tg-hero-annot path{animation:none;stroke-dashoffset:0}}
847</style>
848
849<style>
850/* Landlords — collapsible "suburbs we cover" toggle */
851.tgre-suburb-toggle{margin-top:4px;}
852.tgre-suburb-toggle .tgre-suburb-toggle-summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;font-family:aventa-wf,sans-serif;font-weight:600;font-size:17px;line-height:1.2;padding:16px 20px;border:1px solid rgba(24,24,25,.15);border-radius:12px;transition:border-color .2s ease,background-color .2s ease;}
853.tgre-suburb-toggle .tgre-suburb-toggle-summary::-webkit-details-marker{display:none;}
854.tgre-suburb-toggle .tgre-suburb-toggle-summary:hover{border-color:#d46144;background-color:rgba(212,97,68,.04);}
855.tgre-suburb-toggle .tgre-suburb-toggle-icon{flex:none;font-size:26px;line-height:1;color:#d46144;font-family:aventa-wf,sans-serif;transition:transform .25s ease;}
856.tgre-suburb-toggle[open] .tgre-suburb-toggle-summary{border-color:#d46144;}
857.tgre-suburb-toggle[open] .tgre-suburb-toggle-icon{transform:rotate(45deg);}
858</style>
859
860
861<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 861-862
861
862<script async src="https://www.googletagmanager.com/gtag/js?id=
862G-CTLK2T653P
vendor: 13 bytes, lines 862-863
862">
863</script>
864<script>
865  
vendor: 134 bytes, lines 865-869
865window.dataLayer = window.dataLayer || [];
866  function gtag(){dataLayer.push(arguments);}
867  gtag('js', new Date());
868
869  gtag('config', '
869G-CTLK2T653P
vendor: 4 bytes, line 869
869');
870</script>
870
871
872
873
874<style>
875/* ===== TGRE Interaction v1 (11 Aug 2026) — motion audit fixes approved by Tom.
876   Press feedback, sticky header, symmetric menu exits, story overlay
877   materialise, burger hit area, suburbs toggle ease, scrim fades,
878   reduced-motion coverage. Cream and terracotta only, no blur. ===== */
879
880/* 1 · Instant press feedback: the press lands immediately, release stays smooth */
881.btn, .button {
882  transition: color .3s, padding .3s, box-shadow .25s cubic-bezier(.22,1,.36,1), background-color .3s, transform .25s cubic-bezier(.22,1,.36,1);
883}
884.btn:active, .button:active,
885.siteHeader ul.superMenu > li:last-child > a:active {
886  transition: none;
887  transform: scale(.97);
888}
889html.tgre-motion .pushbutton:active {
890  transition: none;
891  transform: translateY(0) scale(.97);
892}
893
894/* 2 · Sticky header: cream, ink text, hides scrolling down, returns on scroll-up.
895   Animates top (not transform) so the mega-menu's fixed dim keeps its
896   viewport anchor. Classes driven by the Interaction v1 JS in Body End. */
897html.tgre-hd-fixed .siteHeader {
898  position: fixed;
899  top: 0; left: 0; right: 0;
900  z-index: 1000;
901  background: #F6F1EA;
902  box-shadow: 0 1px 0 rgba(24,24,25,.07), 0 10px 30px rgba(24,24,25,.08);
903  transition: top .38s cubic-bezier(.22,1,.36,1);
904}
905html.tgre-hd-hide .siteHeader { top: -110px; }
906html.tgre-hd-prep .siteHeader { transition: none; }
907html.tgre-hd-fixed .siteHeader-logo { color: #181819; }
908html.tgre-hd-fixed .siteHeader ul.superMenu > li:not(:last-child) > a { color: #181819; }
909html.tgre-hd-fixed .siteHeader ul.superMenu > li:not(:last-child) > a:hover { background-color: rgba(212,97,68,.16); }
910html.tgre-hd-fixed .siteHeader-burgerMenu { color: #181819; }
911
912/* 3 · Menus leave the way they arrived */
913html #sidenav-main {
914  transition: transform .5s cubic-bezier(.3,1,0,1), opacity .5s cubic-bezier(.3,1,0,1),
915              visibility 0s linear .5s, clip-path 0s linear .5s;
916}
917html #sidenav-main + .sidenav-overlay {
918  display: block;
919  opacity: 0;
920  pointer-events: none;
921  transition: opacity .4s cubic-bezier(.22,1,.36,1);
922}
923html #sidenav-main.active + .sidenav-overlay { display: block; opacity: 1; pointer-events: auto; }
924html .superMenuPanel::after { transition: opacity .3s; }
925
926/* 4 · Story overlay materialises in and out (was an instant display pop) */
927html .tgre-ps-overlay {
928  display: flex;
929  opacity: 0;
930  visibility: hidden;
931  pointer-events: none;
932  transition: opacity .3s cubic-bezier(.22,1,.36,1), visibility 0s linear .3s;
933}
934html .tgre-ps-overlay .tgre-ps-card {
935  transform: scale(.95) translateY(14px);
936  transition: transform .3s cubic-bezier(.22,1,.36,1);
937}
938html .tgre-ps-overlay.is-open {
939  opacity: 1; visibility: visible; pointer-events: auto;
940  transition: opacity .3s cubic-bezier(.22,1,.36,1), visibility 0s;
941}
942html .tgre-ps-overlay.is-open .tgre-ps-card { transform: none; }
943
944/* 5 · Burger hit area: 52×20 visual, ~68×48 touch target, zero visual change */
945.siteHeader-burgerMenu { position: relative; }
946.siteHeader-burgerMenu::after { content: ""; position: absolute; inset: -14px -8px; }
947
948/* 6 · Suburbs toggle unfolds (progressive enhancement, newer browsers only) */
949details.tgre-suburb-toggle { interpolate-size: allow-keywords; }
950@supports (interpolate-size: allow-keywords) {
951  details.tgre-suburb-toggle::details-content {
952    block-size: 0; overflow: clip;
953    transition: block-size .35s cubic-bezier(.22,1,.36,1), content-visibility .35s allow-discrete;
954  }
955  details.tgre-suburb-toggle[open]::details-content { block-size: auto; }
956}
957
958/* 8 · Mega menu settles: fade + content settle instead of max-height unroll.
959   Transform lives on the CHILDREN — a transform on .superMenuPanel itself would
960   re-anchor its position:fixed ::after dim to the panel box and break it. */
961html .superMenuPanel {
962  max-height: 30rem;
963  opacity: 0;
964  visibility: hidden;
965  transition: opacity .28s cubic-bezier(.22,1,.36,1), visibility 0s linear .28s;
966}
967html .superMenuPanel > * {
968  transform: translateY(-8px);
969  transition: transform .28s cubic-bezier(.22,1,.36,1);
970}
971html .superMenuPanel.mutex-on {
972  opacity: 1;
973  visibility: visible;
974  transition: opacity .28s cubic-bezier(.22,1,.36,1), visibility 0s;
975}
976html .superMenuPanel.mutex-on > * { transform: none; }
977
978/* 9 · Display headings tracked slightly tighter */
979h1, h2 { letter-spacing: -0.015em; }
980
981</style>
982
983<style>
984/* TGRE suburb market table v1 (11 Aug 2026) — pairs with update-suburb-market-bands.py */
985.tgre-mkt-table{background:#fff;border:1px solid rgba(24,24,25,.12);border-radius:16px;padding:22px 24px;margin:26px 0;overflow-x:auto}
986.tgre-mkt-table table{width:100%;border-collapse:collapse;font-size:.92rem;min-width:520px}
987.tgre-mkt-table th{text-align:left;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:rgba(24,24,25,.5);padding:6px 8px;border-bottom:1px solid rgba(24,24,25,.12)}
988.tgre-mkt-table td{padding:9px 8px;border-bottom:1px solid rgba(24,24,25,.06)}
989.tgre-mkt-table td:first-child{color:rgba(24,24,25,.62)}
990.tgre-mkt-table td.fig{font-weight:600}
991.tgre-mkt-table tr:last-child td{border-bottom:0}
992</style>
993
994
995<style>
996/* TGRE contact office photo v1 (13 Aug 2026) — photo-as-directions-control + tappable contact rows on /contact-us */
997.tgre-oshot{display:block;margin:2rem 0 0;text-decoration:none;border-radius:6px;overflow:hidden;position:relative;transition:transform .32s cubic-bezier(.22,1,.36,1);-webkit-tap-highlight-color:transparent}
998.tgre-oshot:active{transform:scale(.984);transition-duration:.1s}
999.tgre-oshot img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .6s cubic-bezier(.22,1,.36,1)}
1000@media(hover:hover){.tgre-oshot:hover img{transform:scale(1.03)}}
1001.tgre-oshot-chip{position:absolute;
1001left:14px;bottom:14px;display:inline-flex;align-items:center;gap:.45rem;padding:.55rem .95rem;border-radius:999px;font-size:.82rem;font-weight:500;color:#fff;background:rgba(24,24,25,.42);backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);border-top:1px solid rgba(255,255,255,.28);pointer-events:none}
1002.tgre-oshot-chip svg{width:13px;height:13px;flex:none}
1003@media(prefers-reduced-transparency:reduce){.tgre-oshot-chip{background:rgba(24,24,25,.92);backdrop-filter:none;-webkit-backdrop-filter:none}}
1004.tgre-oshot-cap{font-size:.78rem;opacity:.72;margin-top:.7rem;max-width:480px;letter-spacing:.02em}
1005.tgre-crows{margin-top:1.75rem;border-top:1px solid rgba(24,24,25,.14)}
1006.tgre-crow{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:1.05rem .25rem;border-bottom:1px solid rgba(24,24,25,.14);text-decoration:none;transition:background .25s ease,transform .25s ease;border-radius:2px;-webkit-tap-highlight-color:transparent}
1007a.tgre-crow:active{background:rgba(212,97,68,.08);transform:scale(.99);transition-duration:.08s}
1008.tgre-crow-k{font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;opacity:.66;font-weight:600;flex:none}
1009.tgre-crow-v{font-weight:500;text-align:right}
1010.tgre-crow-v small{display:block;font-weight:400;opacity:.66;font-size:.82rem}
1011@media(prefers-reduced-motion:reduce){.tgre-oshot,.tgre-oshot img,.tgre-crow{transition:none}}
1012</style>
1013
1014
1015<!-- TGRE visit beacon — added 14 Aug 2026. Feeds the Marketing Hub's Website
1016     lane (TG-OS /marketing.html). Our own first-party counter: cookieless, no
1017     personal data, one localStorage flag per bucket to tell a repeat visit from
1018     a new one. It exists because we deliberately do not read GA4, and the GTM
1019     container on this site is not owned by TGRE.
1020     ⚠ IDS ARE BUCKETED ON PURPOSE. The counter's ?all=1 read does two blob
1021     reads PER REGISTERED ID, so an id per URL would make the hub slower with
1022     every blog post published. Eight buckets, fixed. To add one, edit MAP. -->
1023<script>
1024(function () {
1025  try {
1026    var MAP = {
1027      '': 'home',
1028      'landlords': 'landlords',
1029      'switch-to-the-gallery': 'switch',
1030      'owner-guide': 'owner-guide',
1031      'contact-us': 'contact',
1032      'properties-for-lease': 'for-lease',
1033      'about-us': 'about'
1034    };
1035    var path = location.pathname.replace(/^\/+|\/+$/g, '').toLowerCase();
1036    var bucket = path.indexOf('post/') === 0 ? 'blog' : (MAP[path] || 'other');
1037    var id = 'web-' + bucket;
1038    var first = true;
1039    try {
1040      var k = 'tgre_v_' + id;
1041      first = !localStorage.getItem(k);
1042      if (first) localStorage.setItem(k, '1');
1043    } catch (e) { first = false; }
1044    fetch(
1045      'https://moorepark.thegalleryrealestate.com.au/count?id=' + id + (first ? '&new=1' : ''),
1046      { method: 'POST', keepalive: true, mode: 'no-cors', credentials: 'omit' }
1047    ).catch(function () {});
1048  } catch (e) {}
1049})();
1050</script>
1050
1051
1052
1053<!-- TGRE Switch scroll page. Runs only on /switch. Engine, styles, fonts and stills are hosted at team.thegalleryrealestate.com.au/switch/ (TG-OS repo, public/switch). -->
1054<script>(function(){if(location.pathname.replace(/\/$/,'')!=='/switch')return;document.documentElement.classList.add('tg-switch');var B='https://team.thegalleryrealestate.com.au/switch/';['https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap',B+'scrollcraft.css',B+'switch.css'].forEach(function(h){var l=document.createElement('link');l.rel='stylesheet';l.href=h;document.head.appendChild(l);});[B+'scrollcraft.js',B+'switch.js'].forEach(function(u){var s=document.createElement('script');s.src=u;s.async=false;document.head.appendChild(s);});})();</script>
1054
1055
1056
1057
1058<!-- TGRE footer award marks (22 Sep 2026): the three 2026 award marks plus the three PMX 2026 finalist seals, bottom left of the theme footer under the address, same height. Order: Local Business Awards, Champion Awards, Sydney Design Awards Gold, PMX Innovation, PMX Office of the Year, PMX Team of the Year. The PMX seals carry a short caption (Innovation / Small office / Team) that fades in when the footer is on screen, out after 5s, back after 2s. Pairs with the "TGRE footer award marks" script in Body End Includes. Supersedes the 18 Sep 2026 block; phone pass of 11 Sep kept (marks 60px, social icons one row, G logo on its own centred row). Phones: PMX seals on their own row. Desktop copyright text is right-aligned so it clears the marks. -->
1059<style>
1060.tgre-foot-awards{grid-area:copyright;justify-self:start;align-self:start;display:flex;flex-wrap:wrap;align-items:flex-start;gap:18px;margin-top:-1.5rem;line-height:0}
1061.tgre-foot-award{display:flex;flex-direction:column;align-items:center;line-height:0;text-decoration:none;color:inherit}
1062.tgre-foot-award img{height:82px;width:auto;display:block;border-radius:3px;box-shadow:0 6px 18px rgba(24,24,25,.14);transition:transform .25s ease,box-shadow .25s ease}
1063.tgre-foot-award.is-clear img{border-radius:0;box-shadow:none}
1064.tgre-foot-award:hover img{transform:translateY(-2px);box-shadow:0 10px 24px rgba(24,24,25,.18)}
1065.tgre-foot-award.is-clear:hover img{box-shadow:none}
1066.tgre-foot-cap{display:block;line-height:1.25;margin-top:7px;font-size:10px;letter-spacing:.06em;white-space:nowrap;color:inherit;opacity:0;transition:opacity .7s ease}
1067.tgre-foot-awards.is-on .tgre-foot-cap,.tgre-foot-award:hover .tgre-foot-cap,.tgre-foot-award:focus-visible .tgre-foot-cap{opacity:.7}
1068.tgre-foot-break{display:none}
1069@media (prefers-reduced-motion:reduce){.tgre-foot-cap{transition:none;opacity:.7}}
1070@media (min-width:1025px){footer .siteFooter-copyright{text-align:right}}
1071@media (max-width:1024px){.tgre-foot-awards{grid-area:auto;grid-column:1/-1;justify-self:center;justify-content:center;margin-top:-1.25rem}}
1072@media (max-width:640px){
1073  .siteFooter{grid-template-columns:1fr 1fr;grid-template-areas:"nav nav" "address social" "mark mark" "copyright copyright"}
1074  .siteFooter-logo{justify-self:center;width:52px;height:56px}
1075  .siteFooter-social{display:flex;justify-content:flex-end;gap:8px;margin:0;padding:0}
1076  .siteFooter-social li{margin:0}
1077  .siteFooter-copyright{margin-top:.5rem}
1078  .tgre-foot-awards{margin-top:-.5rem;margin-bottom:.75rem;gap:14px;row-gap:16px}
1079  .tgre-foot-award img{height:60px}
1080  .tgre-foot-cap{margin-top:5px;font-size:9px}
1081  .tgre-foot-break{display:block;flex-basis:100%;height:0}
1082}
1083</style>
1084
1085
1086
1087<!-- TGRE blog 82 hero (9 Sep 2026): the Gold hero is composed for desktop crops; on phones the theme lays the h1 over the whole image, so hide it there and let the dark hero carry the title. Scoped by filename, touches nothing else. -->
1088<style>
1089@media (max-width:768px){body.pageclass-post section.hero img[src*="design-awards-gold-hero"]{display:none}}
1090</style>
1091
1092<!-- TGRE blog 93 hero (18 Sep 2026): the PMX finalists hero is composed for desktop crops (seals in the right column); on phones the h1 sits over them, so hide it there like blog 82. Scoped by filename. -->
1093<style>
1094@media (max-width:768px){body.pageclass-post section.hero img[src*="pmx-finalists-hero"]{display:none}}
1095</style>
1096
1097
1098
1099<!-- TGRE blog 82 Insights tile (9 Sep 2026): the Gold hero's composition sits in the right column for the post hero, so the feed tile crops to that side instead of the empty centre. Scoped by filename. -->
1100<style>
1101.blogTile-image img[src*="design-awards-gold-hero"]{object-position:91% 50%}
1102</style>
1103
1104
1105<style>
1106/* TGRE Interaction v1.1 (11 Sep 2026) — iOS Safari drew a second, ghost copy of the site header at the top of the page when the sticky 
1106script flipped .siteHeader from absolute to fixed on scroll-up (Tom saw it on /thank-you). Keep the header on its own compositing layer on small screens so the flip repaints in one go. Mobile only: a transform on the header would become the containing block for the mega-menu's fixed dim on desktop. */
1107@media (max-width: 900px) {
1108  .siteHeader { -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform: translateZ(0); transform: translateZ(0); }
1109  html.tgre-hd-prep .siteHeader { transition: none !important; }
1110}
1111</style>
1112
1113
1114
1115<!-- TGRE Should we rent it out? guide (21 Sep 2026). Runs only on /should-we-rent-it-out. Styles, engine and data are hosted at team.thegalleryrealestate.com.au/rent-it-out/ (TG-OS repo, public/rent-it-out). -->
1116<script>(function(){if(location.pathname.replace(/\/$/,'')!=='/should-we-rent-it-out')return;document.documentElement.classList.add('tg-rio');var B='https://team.thegalleryrealestate.com.au/rent-it-out/';['https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Kalam:wght@700&display=swap',B+'guide.css'].forEach(function(h){var l=document.createElement('link');l.rel='stylesheet';l.href=h;document.head.appendChild(l);});var s=document.createElement('script');s.src=B+'guide.js';s.async=false;document.head.appendChild(s);})();</script>
1116
1117<!-- End HEAD Includes -->
1118
1119</head>
1120
1121<body data-template-id="1" data-depth="1" data-page-id="25" data-lineage="/0001/000p" data-path="home" class="overlay-header pageclass-home">
1122
1123    
1124    <div id="site">
1125        <header class="siteHeader">
1126            <a href="/" class="siteHeader-logo">
1127                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 362.4606 64.4578">
1128  <path d="M225.8945,0h6.351v52.31h-6.351V0ZM211.3225,12.071h6.352v40.239h-6.352v-5.0457c-3.6632,3.4887-8.6087,5.6436-14.0662,5.6436-11.277,0-20.418-9.143-20.418-20.419s9.141-20.418,20.418-20.418c5.4575,0,10.403,2.1545,14.0662,5.6431v-5.6429ZM211.3225,36.466v-7.9542c-1.7342-6.1435-7.3677-10.6509-14.0662-10.6509-8.079,0-14.629,6.549-14.629,14.628s6.55,14.629,14.629,14.629c6.6985,0,12.332-4.5082,14.0662-10.6519ZM241.2125,52.31h6.352V0h-6.352v52.31ZM293.1732,29.5937c.348,1.942.374,3.661.074,5.155h-33.926c.348,3.687,1.843,6.677,4.4839,8.968,2.64,2.292,5.803,3.436,9.491,3.436,2.541,0,4.931-.57,7.174-1.718,2.241-1.145,4.059-2.69,5.454-4.633l5.754,1.345c-1.594,3.24-4.098,5.842-7.51,7.809-3.413,1.969-7.037,2.952-10.872,2.952-5.68,0-10.488-2.005-14.423-6.016-3.936-4.009-5.9041-8.829-5.9041-14.46,0-5.678,1.98-10.499,5.941-14.459s8.756-5.941,14.386-5.941c5.031,0,9.427,1.6819,13.189,5.0439,3.761,3.3621,5.989,7.536,6.688,12.518ZM286.9702,29.7427c-.448-3.388-1.955-6.2401-4.52-8.557-2.567-2.317-5.643-3.475-9.229-3.475-3.637,0-6.763,1.158-9.379,3.475-2.6151,2.317-4.122,5.169-4.521,8.557h27.649ZM355.9586,12.7046l-12.479,32.8051-13.227-32.8051h-6.501l16.6639,39.4561-1.909,4.6c-.48,1.157-1.61,1.911-2.863,1.911h-10.016l.086,5.786h11.085c2.954,0,5.612-1.797,6.713-4.539l18.949-47.2141h-6.502ZM157.3014,12.9878h14.039v5.786h-5.285c3.507,3.861,5.284,8.408,5.284,13.658,0,5.631-1.981,10.451-5.941,14.46-3.917,3.967-8.654,5.963-14.203,6.007v.005h-.096c-.029,0-.056.004-.086.004-.029,0-.0569-.004-.086-.004h-11.394c-1.637,0-2.969,1.293-2.969,2.884,0,1.59,1.332,2.884,2.969,2.884h27.524v5.786h-27.524c-4.828,0-8.756-3.889-8.756-8.67,0-4,2.763-7.342,6.487-8.3391-.198-.189-.404-.3589-.599-.5569-3.935-4.009-5.903-8.829-5.903-14.46s1.968-10.435,5.903-14.422c3.935-3.985,8.717-5.978,14.348-5.978,2.229,0,4.321.327,6.288.956ZM161.1764,22.1198c-2.791-2.839-6.178-4.259-10.163-4.259s-7.36,1.42-10.125,4.259c-2.765,2.84-4.1479,6.277-4.1479,10.312,0,4.086,1.383,7.536,4.1479,10.351,2.765,2.814,6.139,4.221,10.125,4.221,4.036,0,7.435-1.419,10.201-4.259,2.765-2.839,4.147-6.278,4.147-10.313s-1.395-7.472-4.185-10.312ZM298.3453,19.9376v32.372h6.351v-30.865c0-1.712,1.388-3.1,3.1-3.1h13.116v-5.64h-15.334c-3.995,0-7.233,3.238-7.233,7.233ZM14.423,43.7739l.075-25.5389h10.786v-5.53h-10.786V.001h-6.277v12.704H0v5.53h8.221l-.075,26.611c0,4.296,2.227,7.464,7.253,7.464h9.96v-6.128h-8.542c-1.211,0-2.394-.691-2.394-2.408ZM51.906,12.0317c-3.09,0-5.805.6981-8.146,2.093-2.342,1.395-4.16,3.188-5.455,5.381V.0007h-6.352v52.309h6.352v-20.252c0-4.084,1.17-7.459,3.513-10.125,2.341-2.6639,5.33-3.9969,8.967-3.9969,3.237,0,5.965,1.082,8.182,3.25,2.216,2.167,3.326,5.194,3.326,9.079v22.045h6.3521v-23.987c0-4.933-1.644-8.881-4.932-11.845-3.289-2.964-7.225-4.446-11.807-4.446ZM113.3576,29.5937c.348,1.942.374,3.661.074,5.155h-33.926c.348,3.687,1.843,6.677,4.4839,8.968,2.64,2.292,5.803,3.436,9.491,3.436,2.541,0,4.931-.57,7.174-1.718,2.241-1.145,4.059-2.69,5.454-4.633l5.754,1.345c-1.594,3.24-4.098,5.842-7.51,7.809-3.413,1.969-7.037,2.952-10.872,2.952-5.68,0-10.488-2.005-14.423-6.016-3.936-4.009-5.9041-8.829-5.9041-14.46,0-5.678,1.981-10.499,5.941-14.459,3.961-3.96,8.756-5.941,14.386-5.941,5.031,0,9.427,1.6819,13.189,5.0439,3.761,3.3621,5.989,7.536,6.688,12.518ZM107.1546,29.7427c-.448-3.388-1.955-6.2401-4.52-8.557-2.567-2.317-5.643-3.475-9.229-3.475-3.637,0-6.763,1.158-9.379,3.475-2.6151,2.317-4.122,5.169-4.521,8.557h27.649Z" fill="currentColor"/>
1129</svg>            </a>
1130            <nav class="siteHeader-nav">
1131                                    <ul class="superMenu">                            <li><a class="" href="/properties-for-lease">Properties</a></li>
1132                                                <li><a class="hasChildren" href="/landlords">Landlords</a></li>
1133                                                <li><a class="hasChildren" href="/tenant-information">Tenants</a></li>
1134                                                <li><a class="" href="/moore-park-gardens">Moore Park Gardens</a></li>
1135                                                <li><a class="" href="/insights">Insights</a></li>
1136                                                <li><a class="hasChildren" data-mutex-trigger="#menu-about-us" href="/about-us">About</a></li>
1137                                                <li><a class="" href="/contact-us">Contact Us</a></li>
1138                        </ul>                
1139                <button class="siteHeader-burgerMenu" data-class-toggle="active" data-class-toggle-target="#sidenav-main">
1140                    <small>Menu </small><span title="menu" class="siteHeader-burgerMenu-icon"><i class="sd">&equiv;</i></span>
1141                </button>
1142            </nav>
1143                            <div class="superMenuPanelContent"> <div class="superMenuPanel" id="menu-about-us"> <div data-mutex-content="" class="bg-none"> <div class="superMenuPanel-subnav"> <h2>About</h2> <auto-grid gap="var(--cwh)" colwidth="240px" maxcols="3"><div class="superMenu-desclink"> <a target="" href="/our-difference">Our Difference</a> <div class="muted">The difference is focus. A boutique Sydney real estate agency specialising in property management and leasing, with a median 7 days to lease and a 4.9 rating.</div> <p><span class="btn btn-sml">Learn More</span></p> </div> <div class="superMenu-desclink"> <a target="" href="/team-profiles">Our Team</a> <div class="muted">Meet the people behind The Gallery. An onsite specialist team combining experience, care and deep knowledge of Sydney from our base at Moore Park Gardens.</div> <p><span class="btn btn-sml">Learn More</span></p> </div> <div class="superMenu-desclink"> <a target="" href="/testimonials">Testimonials</a> <div class="muted">Hear from landlords and tenants. See why so many trust The Gallery for reliable, personal and professional management.</div> <p><span class="btn btn-sml">Learn More</span></p> </div> </auto-grid> </div> </div> </div> <div class="superMenuPanel" id="menu-MPG"> <div data-mutex-content="" class="bg-none"> <div class="superMenuPanel-subnav"> <h2>MPG</h2> <auto-grid gap="var(--cwh)" colwidth="240px" maxcols="3"></auto-grid> </div> </div> </div> </div>                    </header>
1144
1145        <main class="siteMain">
1146
1147    <div class="user-content">
1148        <div class="pushblock bg-cover" data-bg="image-dark" data-bgwidth="full" data-halign="left" data-minheight="full" data-vpadding="generous" data-width="extranarrow" style=""><video loop="" muted="" preload="metadata" autoplay="" playsinline="" class="data-bg-src-mp4"><source type="video/mp4" src="/_files/video/tgre-video-homepage-2.mp4"></video>
1149<div class="pushblock-flex">
1150<div class="pushblock-inner">
1151<div class="pushspacer" data-size="standard" role="presentation"> </div>
1152<div class="pushspacer" data-size="standard" role="presentation"> </div>
1153<h1 class="super"><big>Property management <span class="tg-hero-ul tg-wo">specialists.</span></big></h1>
1154<p>Sydney's boutique real estate agency for property management and leasing. Exceptional care for your property and your tenants.</p>
1155<div class="pushspacer" data-size="xtight" role="presentation"> </div>
1156<div class="tgre-ps-strip tgre-ps-strip-hero">
1156<a aria-label="Watch how renting your property works" class="tgre-ps-trigger" data-tgre-story="lease" href="/owner-guide"><span class="tgre-ps-ring"><span class="tgre-ps-ring-inner"><img alt="The Gallery" src="/_files/logos/tgre-icon-rgb-red.svg" decoding="async" loading="lazy"></span></span> <span class="tgre-ps-trigger-label">Rent your property<span class="tgre-ps-trigger-hint">Tap to watch</span></span> </a> <a aria-label="Watch how switching agents works" class="tgre-ps-trigger" data-tgre-story="switch" href="/switch-to-the-gallery"> <span class="tgre-ps-ring"><span class="tgre-ps-ring-inner"><img alt="The Gallery" src="/_files/logos/tgre-icon-rgb-red.svg" decoding="async" loading="lazy"></span></span> <span class="tgre-ps-trigger-label">Switching agents<span class="tgre-ps-trigger-hint">Tap to watch</span></span> </a></div>
1157</div>
1158</div>
1159</div>
1160<!-- ============ SECTION: HERO &mdash; END ============ --><!-- ============ SECTION: 01 FOCUS (split statement) &mdash; START ============ -->
1161<div class="pushblock" data-bg="bg-none" data-bg-src="" data-bgwidth="full" data-halign="center" data-minheight="none" data-vpadding="generous" data-width="default" style="">
1162<div class="pushblock-flex">
1163<div class="pushblock-inner">
1164<p><span class="tgre-ed-marker">Focus</span></p>
1165<div class="pushsplit-wrap" data-split-ratio="1_1" data-valign="start">
1166<div class="pushsplit ">
1167<div class="pushsplit-first">
1168<h2>Property management is all we do. <em>So we do it <span class="tg-circ tg-wo">better</span>.</em></h2>
1169</div>
1170<div class="pushsplit-last">
1171<p>At The Gallery, property management is never the side business. No sales campaigns pulling focus, no juggled priorities.</p>
1172<p>We're a boutique real estate agency managing residential investment properties across the inner city with precision, pride and personal attention.</p>
1173<div class="pushspacer" data-size="tight" role="presentation"> </div>
1174<div class="pushgrid " data-bgcolor="bg-auto" data-cellcount="2" data-columns="2" data-valign="top">
1175<div class="grid grid-1 grid-sml-2">
1176<div>
1177<div class="pushbutton-wrap"><a class="pushbutton " data-halign="stretch" href="/landlords">Landlord services</a></div>
1178</div>
1179<div>
1180<div class="pushbutton-wrap"><a class="pushbutton " data-halign="stretch" href="/landlordonenquiry">Landlord enquiry</a></div>
1181</div>
1182</div>
1183</div>
1184</div>
1185</div>
1186</div>
1187</div>
1188</div>
1189</div>
1190<!-- ============ SECTION: 01 FOCUS &mdash; END ============ --><!-- ============ SECTION: AWARD-WINNING (part of the dark band) &mdash; START ============ -->
1191<div class="pushblock" data-bg="bg-dark" data-bg-src="" data-bgwidth="full" data-halign="left" data-minheight="none" data-vpadding="generous" data-width="default" style="">
1192<div class="pushblock-flex">
1193<div class="pushblock-inner">
1194<h2><em class="tg-ul tg-wo">Award-winning</em> property management.</h2>
1195<p>Recognised in 2026 for the agency we've built and the way we work.</p>
1196<div class="pushspacer" data-size="xtight" role="presentation"> </div>
1197<div class="pushgrid " data-bgcolor="bg-auto" data-cellcount="3" data-columns="3" data-valign="top">
1198<div class="grid grid-1 grid-sml-2 grid-med-3">
1199<div>
1200<div class="image" style="border-radius:16px;overflow:hidden;"><a href="/post/the-gallery-real-estate-named-2026-outstanding-real-estate-agency" style="display:block;text-decoration:none;"><img alt="The Gallery Real Estate, 2026 Outstanding Real Estate Agency" class="fixed-aspect img-cover widescreen" data-src="/imagecache/fitwithin/[[longside]]x[[longside]]/_files/monthly-update/2c1888f0-414f-4b7e-9739-81dc1d52e68f.jpg" loading="lazy" src="/imagecache/fitwithin/1280x1280/_files/monthly-update/2c1888f0-414f-4b7e-9739-81dc1d52e68f.jpg" decoding="async"></a></div>
1201<div class="pushspacer" data-size="xtight" role="presentation"> </div>
1202<p><a href="/post/the-gallery-real-estate-named-2026-outstanding-real-estate-agency" style="display:block;text-decoration:none;"><strong>2026 Outstanding Real Estate Agency</strong><br>
1203The Gallery Real Estate</a></p>
1204</div>
1205<div>
1206<div class="image" style="border-radius:16px;overflow:hidden;"><a href="/post/thomas-tamine-named-2026-young-small-business-champion-entrepreneur" style="display:block;text-decoration:none;"><img alt="Thomas Tamine, 2026 Young Business Champion Entrepreneur of the Year" class="fixed-aspect img-cover widescreen" data-src="/imagecache/fitwithin/[[longside]]x[[longside]]/_files/monthly-update/1a09d653-211c-49ff-80dd-e555204c6370-1-201-a.jpg" loading="lazy" src="/imagecache/fitwithin/1280x1280/_files/monthly-update/1a09d653-211c-49ff-80dd-e555204c6370-1-201-a.jpg" decoding="async"></a></div>
1207<div class="pushspacer" data-size="xtight" role="presentation"> </div>
1208<p><a href="/post/thomas-tamine-named-2026-young-small-business-champion-entrepreneur" style="display:block;text-decoration:none;"><strong>2026 Young Business Champion</strong><br></a><a href="https://www.thegalleryrealestate.com.au/team/thomas-tamine">Thomas Tamine</a>, Entrepreneur of the Year</p>
1209</div>
1210<div>
1211<div class="image" style="border-radius:16px;overflow:hidden;"><a href="/post/the-gallery-real-estate-wins-gold-2026-sydney-design-awards" style="display:block;text-decoration:none;"><img alt="The Gallery Real Estate, Gold at the 2026 Sydney Design Awards for identity and branding" class="fixed-aspect img-cover widescreen" loading="lazy" src="https://tgre-social-assets.netlify.app/blog/2026-09-09-sydney-design-awards-gold/gold-mark.png" decoding="async"></a></div>
1212<div class="pushspacer" data-size="xtight" role="presentation"> </div>
1213<p><a href="/post/the-gallery-real-estate-wins-gold-2026-sydney-design-awards" style="display:block;text-decoration:none;"><strong>2026 Sydney Design Awards, Gold</strong><br>
1214The Gallery Real Estate, identity and branding</a></p>
1215</div>
1216</div>
1217</div>
1218</div>
1219</div>
1220</div>
1221<!-- ============ SECTION: AWARD-WINNING &mdash; END ============ --><!-- ============ SECTION: 02 PROOF / THE NUMBERS &mdash; START ============ -->
1222<div class="pushblock" data-bg="bg-dark" data-bg-src="" data-bgwidth="full" data-halign="left" data-minheight="none" data-vpadding="generous" data-width="default" style="">
1223<div class="pushblock-flex">
1224<div class="pushblock-inner">
1225<p><span class="tgre-ed-marker">Proof</span></p>
1226<h2>Our <em>numbers</em>, <span class="tg-tick tg-wo" style="background-image:linear-gradient(90deg,#fff,#fff); color:#ffffff">simply</span></h2>
1227<div class="tgre-ed-stats">
1228<div class="tgre-ed-stat key">
1229<div class="fig" style="font-size:clamp(40px,5.5vw,78px);line-height:1.1;">7</div>
1230<div class="cap"><strong>Days median to lease.</strong> The market median is 20.</div>
1231</div>
1232<div class="tgre-ed-stat">
1233<div class="fig" style="font-size:clamp(40px,5.5vw,78px);line-height:1.1;">3×</div>
1234<div class="cap"><strong>The enquiries</strong> versus the market average.</div>
1235</div>
1236<div class="tgre-ed-stat">
1237<div class="fig" style="font-size:clamp(40px,5.5vw,78px);line-height:1.1;">6×</div>
1238<div class="cap"><strong>The applications</strong> versus the market average.</div>
1239</div>
1240<div class="tgre-ed-stat">
1241<div class="fig" style="font-size:clamp(40px,5.5vw,78px);line-height:1.1;">$500M+</div>
1242<div class="cap"><strong>Assets under management.</strong></div>
1243</div>
1244</div>
1245</div>
1246</div>
1247</div>
1248<!-- ============ SECTION: 02 PROOF / THE NUMBERS &mdash; END ============ --><!-- ============ SECTION: THE CRAFT TRIO (03 craft / 04 tenants / 05 onsite) &mdash; START Three photo sections inside ONE wrapper. To delete one: remove its inner sub-banner chunk plus the spacer line above it. Keep the outer wrapper (first 3 opening divs / last 3 closing divs). ============ -->
1249<div class="pushblock" data-bg="bg-none" data-bg-src="" data-bgwidth="full" data-halign="center" data-minheight="none" data-vpadding="generous" data-width="default" style="">
1250<div class="pushblock-flex">
1251<div class="pushblock-inner"><!-- ---- 03 THE CRAFT (image left) &mdash; start ---- -->
1252<div class="offset-pair-wrap ">
1253<div class="offset-pair left">
1254<div class="image" style="border-radius:16px;overflow:hidden;"><img class="fixed-aspect fourfifths img-cover" data-src="/imagecache/fitwithin/[[longside]]x[[longside]]/_files/tgre-shoot-day/76e113cd-bdcc-4ba3-b5b9-ef309ea8b87a-1-201-a.jpg" loading="lazy" src="/imagecache/fitwithin/1280x1280/_files/tgre-shoot-day/76e113cd-bdcc-4ba3-b5b9-ef309ea8b87a-1-201-a.jpg" style="" decoding="async" alt="" role="presentation"></div>
1255<div class="content-container bg-auto">
1256<div class="user-content">
1257<p><span class="tgre-ed-marker">The craft</span></p>
1258<h2><span class="tg-ul tg-wo">Built for</span> property management. <br>
1259Refined to <span class="tg-tick tg-wo">perfection.</span></h2>
1260<p>Property management is our entire focus. We've built a specialist service designed to make owning property easier, more rewarding and more human. From finding the right tenant to delivering a seamless, tech-enabled experience, we manage with precision, pride and personal care.</p>
1261<div class="pushgrid " data-bgcolor="bg-auto" data-cellcount="2" data-columns="2" data-valign="top">
1262<div class="grid grid-1 grid-sml-2">
1263<div>
1264<div class="pushbutton-wrap"><a class="pushbutton " data-halign="stretch" href="/landlords">Learn more</a></div>
1265</div>
1266<div>
1267<div class="pushbutton-wrap"><a class="pushbutton " data-halign="stretch" href="/landlordonenquiry">Landlord enquiry</a></div>
1268</div>
1269</div>
1270</div>
1271</div>
1272</div>
1273</div>
1274</div>
1275<!-- ---- 03 THE CRAFT &mdash; end ---- -->
1276<div class="pushspacer" data-size="standard" role="presentation"> </div>
1277<!-- ---- 04 FOR TENANTS (image right) &mdash; start ---- -->
1278<div class="offset-pair-wrap ">
1279<div class="offset-pair right">
1280<div class="image" style="border-radius:16px;overflow:hidden;"><img class="fixed-aspect fourfifths img-cover" data-src="/imagecache/fitwithin/[[longside]]x[[longside]]/_files/tgre-shoot-day/984e9f9c-4c74-4c0f-b23d-8dca824e50ab.jpg" loading="lazy" src="/imagecache/fitwithin/1280x1280/_files/tgre-shoot-day/984e9f9c-4c74-4c0f-b23d-8dca824e50ab.jpg" style="" decoding="async" alt="" role="presentation"></div>
1281<div class="content-container bg-auto">
1282<div class="user-content">
1283<p><span class="tgre-ed-marker">For tenants</span></p>
1284<h2><span class="tg-ul2 tg-wo">Trusted</span> by owners. <br>
1285Respected by tenants.</h2>
1286<p>At The Gallery, tenants aren't an afterthought. They're part of our promise. We treat tenants like people, not problems, with warm communication, quick responses and a process that just works. Because we're not just managing property. We're looking after someone's home.</p>
1287<div class="pushgrid " data-bgcolor="bg-auto" data-cellcount="2" data-columns="2" data-valign="top">
1288<div class="grid grid-1 grid-sml-2">
1289<div>
1290<div class="pushbutton-wrap"><a class="pushbutton " data-halign="stretch" href="/tenant-information">Learn more</a></div>
1291</div>
1292<div>
1293<div class="pushbutton-wrap"><a class="pushbutton " data-halign="stretch" href="/properties-for-lease">Properties for lease</a></div>
1294</div>
1295</div>
1296</div>
1297</div>
1298</div>
1299</div>
1300</div>
1301<!-- ---- 04 FOR TENANTS &mdash; end ---- -->
1302<div class="pushspacer" data-size="standard" role="presentation"> </div>
1303<!-- ---- 05 ONSITE ADVANTAGE / MPG (image left) &mdash; start ---- -->
1304<div class="offset-pair-wrap ">
1305<div class="offset-pair left">
1306<div class="image" style="border-radius:16px;overflow:hidden;"><img alt="Moore Park Gardens onsite specialists" class="fixed-aspect fourfifths img-cover" data-src="/imagecache/fitwithin/[[longside]]x[[longside]]/_files/tgre-shoot-day/tgre-studio-julianrinaldi-171.jpg" loading="lazy" src="/imagecache/fitwithin/1280x1280/_files/tgre-shoot-day/tgre-studio-julianrinaldi-171.jpg" style="" decoding="async"></div>
1307<div class="content-container bg-auto">
1308<div class="user-content">
1309<p><span class="tgre-ed-marker">Advantage</span></p>
1310<h2>Moore Park <span class="tg-hn-wrap"><span class="tg-hn tg-wo" style="left:52%; top:-1.5em; width:4.77em"></span>Gardens</span></h2>
1311<p>We live and work inside the Moore Park Gardens community at <strong>780 Bourke Street</strong>. Faster support, building-specific know-how and calm, clear communication for owners and residents.</p>
1312<div class="pushgrid " data-bgcolor="bg-auto" data-cellcount="2" data-columns="2" data-valign="top">
1313<div class="grid grid-1 grid-sml-2">
1314<div>
1315<div class="pushbutton-wrap"><a class="pushbutton " data-halign="stretch" href="/moore-park-gardens">Explore Moore Park Gardens</a></div>
1316</div>
1317<div>
1318<div class="pushbutton-wrap"><a class="pushbutton " data-halign="stretch" href="/landlordonenquiry">Landlord enquiry</a></div>
1319</div>
1320</div>
1321</div>
1322</div>
1323</div>
1324</div>
1325</div>
1326<!-- ---- 05 ONSITE ADVANTAGE &mdash; end ---- --></div>
1327</div>
1328</div>
1329<!-- ============ SECTION: THE CRAFT TRIO &mdash; END ============ --><!-- ============ SECTION: 06 LATRELL &mdash; START ============ -->
1330<div class="pushblock" data-bg="bg-dark" data-bg-src="" data-bgwidth="full" data-halign="center" data-minheight="none" data-vpadding="generous" data-width="default" style="">
1331<div class="pushblock-flex">
1332<div class="pushblock-inner">
1333<div class="pushsplit-wrap" data-split-ratio="1_1" data-valign="center">
1334<div class="pushsplit ">
1335<div class="pushsplit-first">
1336<p><span class="tgre-ed-marker">In his words</span></p>
1337<h2>A word from <em>Latrell.</em></h2>
1338<p>A professional rugby league player for the South Sydney Rabbitohs and a proud Gallery landlord. Here's what working with us looks like, in his words.<
1338/p>
1339</div>
1340<div class="pushsplit-last">
1341<div class="push-video">
1342<div class="video" style="border-radius:16px;overflow:hidden;">
1343<div class="fixed-aspect widescreen"><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="315" loading="lazy" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/D_ZMkD6t_DM?si=rnJ4xyPKaijA9_y2&amp;modestbranding=1&amp;rel=0" title="Latrell Mitchell, A word from Latrell" width="560"></iframe></div>
1344</div>
1345</div>
1346</div>
1347</div>
1348</div>
1349</div>
1350</div>
1351</div>
1352<!-- ============ SECTION: 06 LATRELL &mdash; END ============ --><!-- ============ SECTION: RENTAL REPORT BAND &mdash; START ============ -->
1353<div class="pushblock" data-bg="bg-none" data-bg-src="" data-bgwidth="full" data-halign="center" data-minheight="none" data-vpadding="tight" data-width="default" style="">
1354<div class="pushblock-flex">
1355<div class="pushblock-inner">
1356<div class="tgre-ed-report">
1357<div class="lead">
1358<h2>What could your property <em>rent for?</em></h2>
1359<p>An instant, data-backed estimate of your rental value with a snapshot of running costs and returns. Ready in minutes.</p>
1360</div>
1361<div class="pushbutton-wrap"><a class="pushbutton " data-halign="left" href="/rental-report" target="_blank">Get my instant rental report</a></div>
1362</div>
1363</div>
1364</div>
1365</div>
1366<!-- ============ SECTION: RENTAL REPORT BAND &mdash; END ============ --><!-- ============ SECTION: REVIEWS (static band) &mdash; START ============ -->
1367<div class="pushblock" data-bg="bg-light" data-bg-src="" data-bgwidth="full" data-halign="center" data-minheight="none" data-vpadding="generous" data-width="default" style="">
1368<div class="pushblock-flex">
1369<div class="pushblock-inner">
1370<div class="tgre-rev"><span aria-hidden="true" class="tg-wo tgre-rev-qmark"></span>
1371<p aria-label="Rated 4.9 out of 5" class="tgre-rev-stars tg-wo"> </p>
1372<div class="tgre-rev-rot">
1373<div class="tgre-rev-slide">
1374<h2>"Excellent <em>personalised service.</em>"</h2>
1375<p class="tgre-rev-name">Garry Deverell, Gallery owner</p>
1376</div>
1377<div class="tgre-rev-slide">
1378<h2>"Amazing experience with Thomas at <em>Gallery Real Estate!</em>"</h2>
1379<p class="tgre-rev-name">Adarsha Sigdel</p>
1380</div>
1381<div class="tgre-rev-slide">
1382<h2>"My experience with The Gallery, as an owner, has been <em>very positive.</em>"</h2>
1383<p class="tgre-rev-name">Juliet Roberts, Gallery owner</p>
1384</div>
1385</div>
1386</div>
1387</div>
1388</div>
1389</div>
1390<!-- ============ SECTION: REVIEWS &mdash; END ============ --><!-- ============ SECTION: FIND YOUR NEXT HOME (image band) &mdash; START ============ -->
1391<div class="pushblock bg-cover" data-bg="image-dark" data-bg-src="/imagecache/fitwithin/[[vmax]]x[[vmax]]/_files/tgre-shoot-day/76e113cd-bdcc-4ba3-b5b9-ef309ea8b87a-1-201-a.jpg" data-bgwidth="full" data-halign="left" data-minheight="half" data-vpadding="generous" data-width="default" style="">
1392<div class="pushblock-flex">
1393<div class="pushblock-inner">
1394<h2>Find your <em class="tg-ul tg-wo">next home.</em></h2>
1395<p>Considered homes across inner Sydney, managed with care. See what's available now.</p>
1396<div class="pushspacer" data-size="xtight" role="presentation"> </div>
1397<div class="pushbutton-wrap"><a class="pushbutton " data-halign="left" href="/properties-for-lease">Properties for lease</a></div>
1398</div>
1399</div>
1400</div>
1401<!-- ============ SECTION: FIND YOUR NEXT HOME &mdash; END ============ --><!-- ============ SECTION: 08 THE INVITATION (close) &mdash; START ============ -->
1402<div class="pushblock" data-bg="bg-dark" data-bg-src="" data-bgwidth="full" data-halign="center" data-minheight="half" data-vpadding="generous" data-width="default" style="">
1403<div class="pushblock-flex">
1404<div class="pushblock-inner">
1405<div class="tgre-ed-close"><span class="tg-hw-marker tg-wo"></span>
1406<h2 class="text-center">Let's talk about <em class="tg-ul tg-wo">your property.</em></h2>
1407<p class="text-center">Twenty minutes with our team. No pitch, no pressure. A clear view of where your property sits and what makes sense from here.</p>
1408<div class="tgre-ed-ctas">
1409<div class="pushbutton-wrap"><a class="pushbutton " data-halign="left" href="/Bookacall">Book a call with our team</a></div>
1410<div class="pushbutton-wrap"><a class="pushbutton " data-halign="left" href="/landlordonenquiry" style="background:#d46144;border-color:#d46144;color:#fff;">Landlord enquiry</a></div>
1411</div>
1412</div>
1413</div>
1414</div>
1415</div>
1416<!-- ============ SECTION: 08 THE INVITATION &mdash; END ============ -->    </div>
1417<!--
1418<div class="splash">
1419
1420    
1421
1422</div> -->
1423
1424
1425</main>
1426
1427<footer class="siteFooter bg-none">
1428
1429    <div class="siteFooter-nav">
1430        <div class="tgre-foot-cta">
1431<div class="tgre-foot-cta-main">
1432<div class="pushspacer" data-size="xtight" role="presentation"> </div>
1433<h2>What could your property <em><span class="tg-arrow tg-wo">rent for?</span></em></h2>
1434<div class="pushbutton-wrap"><a class="pushbutton " data-halign="left" href="/rental-report" style="background:#d46144;border-color:#d46144;color:#fff;">Get my instant report</a></div>
1435</div>
1436</div>
1437<div class="pushspacer" data-size="xtight" role="presentation"> </div>
1438<div class="pushgrid " data-bgcolor="bg-auto" data-cellcount="5" data-columns="5" data-valign="top" data-widget="pushgrid2">
1439<div class="grid grid-1 grid-sml-2 grid-med-5">
1440<div>
1441<h3><a href="/properties-for-lease">Properties</a></h3>
1442<ul><li><a href="/properties-for-lease">For Lease</a></li>	<li><a href="/leased-properties">Leased</a></li>	<li><a href="/moore-park-gardens">Moore Park Gardens</a></li>	<li><a href="/mpg-parcel-drop-off">MPG Parcel Locator</a></li>	<li><a href="/suburb-profiles">Suburb Profiles</a></li>
1443</ul></div>
1444<div>
1445<h3><a href="/landlords">Landlords</a></h3>
1446<ul><li class="tgre-foot-hot"><a href="/rental-report">Free Rental Report</a></li>	<li><a href="/owner-guide">Owner Guide</a></li>	<li><a href="/how-we-rent-your-home">How We Rent Your Home</a></li>	<li><a href="https://app.propertyme.com/" target="_blank">Owner Portal</a></li>	<li><a href="/request-a-rental-appraisal">Request an Appraisal</a></li>	<li><a href="/switch-to-the-gallery">Switch to The Gallery</a></li>	<li><a href="/landlordonenquiry">Landlord Enquiry</a></li>
1447</ul></div>
1448<div>
1449<h3><a href="/tenant-information">Tenants</a></h3>
1450<ul><li><a href="/tenant-information">Tenant Services</a></li>	<li><a href="/moore-park-gardens-rental-enquiry">Rent in MPG</a></li>	<li><a href="/tenant-enquiry">Tenant Enquiry</a></li>	<li><a href="/tenant-portal">Tenant Portal</a></li>	<li><a href="/emergency-contacts">Emergency Contacts</a></li>
1451</ul></div>
1452<div>
1453<h3><a href="/about-us">About</a></h3>
1454<ul><li><a href="/about-us">About Us</a></li>	<li><a href="/our-story">Our Story</a></li>	<li><a href="/team-profiles">Team</a></li>	<li><a href="/our-difference">Our Difference</a></li>	<li><a href="/developers">Developers</a></li>	<li><a href="/testimonials">Testimonials</a></li>	<li><a href="/insights">Insights</a></li>
1455</ul></div>
1456<div>
1457<h3><a href="/contact-us">Contact</a></h3>
1458<ul><li><a href="/contact-us">Contact Us</a></li>	<li><a href="/Bookacall">Book a Call</a></li>	<li><a href="/Privacypolicy">Privacy Policy</a></li>
1459</ul></div>
1460</div>
1461</div>
1462<div aria-label="Renting your property with The Gallery" aria-modal="true" class="tgre-ps-overlay" id="tgre-ps-lease" role="dialog">
1463<div class="tgre-ps-card">
1464<div class="tgre-ps-bars"> </div>
1465<div class="tgre-ps-head"><span class="tgre-ps-head-avatar"><span><img alt="" src="/_files/logos/tgre-icon-rgb-red.svg" decoding="async" loading="lazy"></span></span> <span class="tgre-ps-head-name">thegalleryrealestate<small>Rent your property</small></span>×</div>
1466<div class="tgre-ps-slide">
1467<p class="tgre-ps-kicker">Day 1</p>
1468<h3>A plan for <em>your property.</em></h3>
1469<p>We chat about your situation and what you want from the property. Pricing, presentation and strategy agreed before anything is signed.</p>
1470</div>
1471<div class="tgre-ps-slide">
1472<p class="tgre-ps-kicker">Days 2 to 5</p>
1473<h3>Photographed, listed, <em>live.</em></h3>
1474<p>Professional photography and considered copy, live on realestate.com.au and Domain within days.</p>
1475<p class="tgre-ps-stat"><strong>3x</strong> the enquiry of the market average</p>
1476</div>
1477<div class="tgre-ps-slide">
1478<p class="tgre-ps-kicker">The first weekend</p>
1479<h3>Open homes, <em>hosted properly.</em></h3>
1480<p>Open homes start the first weekend. Every enquiry is followed up and you get a report after each one.</p>
1481</div>
1482<div class="tgre-ps-slide">
1483<p class="tgre-ps-kicker">Week 1 to 2</p>
1484<h3>The right tenant, <em>not the first tenant.</em></h3>
1485<p>Every application screened. Income, rental history and references verified, then you get a clear recommendation. The decision is always yours.</p>
1486<p class="tgre-ps-stat"><strong>6x</strong> the market average in applications</p>
1487</div>
1488<div class="tgre-ps-slide">
1489<p class="tgre-ps-kicker">Day 7, our median</p>
1490<h3><em>Leased.</em></h3>
1491<p>You approve the application, the lease is signed digitally and the deposit is paid.</p>
1492<p class="tgre-ps-stat"><strong>7 days</strong> median time on market</p>
1493</div>
1494<div class="tgre-ps-slide">
1495<p class="tgre-ps-kicker">About 2 weeks to move-in</p>
1496<h3>Move-in, <em>locked in.</em></h3>
1497<p>Most tenants move in around two weeks after approval. Bond lodged with Rental Bonds Online and every date confirmed in writing.</p>
1498</div>
1499<div class="tgre-ps-slide">
1500<p class="tgre-ps-kicker">Move-in day</p>
1501<h3>Everything ready for <em>your tenant.</em></h3>
1502<p>A detailed condition report completed and keys handed over. The tenancy 
1502starts exactly as it should.</p>
1503</div>
1504<div class="tgre-ps-slide">
1505<p class="tgre-ps-kicker">End of month 1</p>
1506<h3>Your first <em>statement.</em></h3>
1507<p>Rent flows from day one. Your monthly statement itemises every dollar in and out, straight to your inbox.</p>
1508</div>
1509<div class="tgre-ps-slide">
1510<p class="tgre-ps-kicker">Within 3 months</p>
1511<h3>Your first <em>routine inspection.</em></h3>
1512<p>We walk through the property and send you a full report with a 3D virtual tour. You see exactly how your property is being kept, from anywhere.</p>
1513</div>
1514<div class="tgre-ps-slide">
1515<p class="tgre-ps-kicker">Every week after</p>
1516<h3>Managed like it's <em>our own.</em></h3>
1517<p>Rent monitored daily, routine inspections on schedule, maintenance handled fast and a clear statement every month. You always know where your property stands.</p>
1518</div>
1519<div class="tgre-ps-slide">
1520<div class="tgre-ps-panel">
1521<p class="tgre-ps-kicker">Ready when you are</p>
1522<h3>Start with a <em>conversation.</em></h3>
1523<p>A quick call with our team about your property, your timing and your number. No obligation.</p>
1524<div class="tgre-ps-cta"><a class="tgre-ps-btn" href="/Bookacall">Book a call with our team</a> <a class="tgre-ps-link" href="/rental-report">Or get my instant rental report</a></div>
1525</div>
1526</div>
1527</div>
1528</div>
1529<div aria-label="Switching agents to The Gallery" aria-modal="true" class="tgre-ps-overlay" id="tgre-ps-switch" role="dialog">
1530<div class="tgre-ps-card">
1531<div class="tgre-ps-bars"> </div>
1532<div class="tgre-ps-head"><span class="tgre-ps-head-avatar"><span><img alt="" src="/_files/logos/tgre-icon-rgb-red.svg" decoding="async" loading="lazy"></span></span> <span class="tgre-ps-head-name">thegalleryrealestate<small>Switching agents</small></span>×</div>
1533<div class="tgre-ps-slide">
1534<p class="tgre-ps-kicker">Step 1 · Five minutes</p>
1535<h3>Tell us what's <em>not working.</em></h3>
1536<p>A quick call or the form. We review your current agreement, check the notice period and map the handover before you commit to anything.</p>
1537</div>
1538<div class="tgre-ps-slide">
1539<p class="tgre-ps-kicker">Step 2 · We take it from here</p>
1540<h3>You never chase <em>anyone.</em></h3>
1541<p>We give notice to your current agent and coordinate the whole changeover. Your tenant keeps their home and the rent never skips a beat.</p>
1542</div>
1543<div class="tgre-ps-slide">
1544<p class="tgre-ps-kicker">Step 3 · The handover</p>
1545<h3>Everything transfers <em>to us.</em></h3>
1546<p>Keys, files, tenancy records and bond all move across to The Gallery. Nothing gets lost and you are never the go-between.</p>
1547<p class="tgre-ps-stat"><strong>30 days</strong> or less for most handovers, set by your agreement's notice period</p>
1548</div>
1549<div class="tgre-ps-slide">
1550<p class="tgre-ps-kicker">Step 4 · No missed rent</p>
1551<h3>Payments continue <em>seamlessly.</em></h3>
1552<p>Rent redirects to us from handover day and your payment schedule stays exactly the same. Not a dollar out of place.</p>
1553</div>
1554<div class="tgre-ps-slide">
1555<p class="tgre-ps-kicker">Step 5 · Your first month</p>
1556<h3>We check everything and <em>meet your tenant.</em></h3>
1557<p>Rent, compliance, maintenance history and lease dates reviewed line by line. We inspect the property and introduce ourselves to your tenant within the first month.</p>
1558</div>
1559<div class="tgre-ps-slide">
1560<p class="tgre-ps-kicker">Step 6 · From then on</p>
1561<h3>Managed <em>properly.</em></h3>
1562<p>Rent monitored daily, routine inspections on schedule, maintenance handled fast and a clear statement every month. You feel the difference quickly.</p>
1563</div>
1564<div class="tgre-ps-slide">
1565<div class="tgre-ps-panel">
1566<p class="tgre-ps-kicker">Ready when you are</p>
1567<h3>Switching is easier <em>than you think.</em></h3>
1568<p>One call with our team and we handle the rest.</p>
1569<div class="tgre-ps-cta"><a class="tgre-ps-btn" href="/Bookacall">Book a call with our team</a> <a class="tgre-ps-link" href="/rental-report">Or get my instant rental report</a></div>
1570</div>
1571</div>
1572</div>
1573</div>    </div>
1574
1575    <div class="siteFooter-address">
1576        780 Bourke Street<br> Redfern 2016<br>
1577        02 8999 3341    </div>
1578
1579    <div class="siteFooter-footertext">
1580        <p>    </div>
1581
1582    <div class="siteFooter-logo">
1583        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 115.83 112.281">
1584  <path d="M115.83,55.646v56.635h-14.624v-42.011h-41.861v-14.624h56.485ZM81.5359,23.199c6.387,4.371,11.207,10.314,14.457,17.821l16.981-4.371c-4.597-11.097-11.628-19.977-21.098-26.647C82.4039,3.337,71.6169,0,59.515,0c-16.476,0-30.515,5.883-42.112,17.651C5.802,29.419,0,43.599,0,60.184c0,3.536.319,6.939.843,10.257h17.573c-.704-3.264-1.1-6.668-1.1-10.257,0-12.214,4.008-22.5259,12.022-30.934,8.01-8.402,18.071-12.606,30.177-12.606,8.292,0,15.634,2.185,22.021,6.555Z" fill="currentColor"/>
1585</svg>    </div>
1586
1587    <ul class="siteFooter-social">
1588        <li><a target="_blank" href="https://www.facebook.com/thegalleryrealestate"><i class="soc">f</i></a></li>        <li><a target="_blank" href="https://www.youtube.com/@thegalleryrealestate6269"><i class="soc">y</i></a></li>        <li><a target="_blank" href="https://www.linkedin.com/company/the-gallery-real-estate"><i class="soc">l</i></a></li>                <li><a target="_blank" href="https://www.instagram.com/thegalleryrealestate/"><i class="soc">i</i></a></li>    </ul>
1589
1590    <div class="siteFooter-copyright">
1591        Copyright &copy; 2026 The Gallery Real Estate Agency Pty Limited (ABN 99 643 017 074)<br>
1592        <a href="https://pushcreative.com.au/?utm_campaign=www.thegalleryrealestate.com.au&utm_source=website&utm_medium=referrer" target="_blank" rel="noreferrer noopener">Website by Push</a>
1593    </div>
1594
1595</footer>
1596
1597
1598
1599<aside class="sidenav-right" id="sidenav-main">
1600    <i class="sd" title="Close Menu" data-class-cancel="active" data-class-cancel-target="#sidenav-main">&times;</i>
1601    <main>
1602        <ul class="collapse-menu"> <li depth="1" class=""> <a target="" href="/properties-for-lease">Properties</a> </li> <li depth="1" class="hasChildren "> <button class="collapse-toggle" aria-label="toggle"></button><a target="" href="/landlords">Landlords</a> <ul depth="2"> <li depth="2" class=""> <a target="" href="/owner-guide">Owner Guide</a> </li> <li depth="2" class=""> <a target="" href="/landlordonenquiry">New Landlord Enquiry</a> </li> <li depth="2" class=""> <a target="" href="/switch-to-the-gallery">Switch to The Gallery</a> </li> <li depth="2" class=""> <a target="" href="/request-a-rental-appraisal">Rental Appraisal</a> </li> <li depth="2" class=""> <a target="" href="/landlord-portal">Landlord Portal</a> </li> <li depth="2" class=""> <a target="" href="/what-makes-a-good-property-manager">What Makes a Good Property Manager?</a> </li> <li depth="2" class=""> <a target="" href="/Bookacall">Book a Call</a> </li> <li depth="2" class=""> <a target="" href="/property-management-fees">Property Management Fees</a> </li> </ul> </li> <li depth="1" class="hasChildren "> <button class="collapse-toggle" aria-label="toggle"></button><a target="" href="/tenant-information">Tenants</a> <ul depth="2"> <li depth="2" class=""> <a target="" href="/emergency-contacts">Emergency Contacts</a> </li> <li depth="2" class=""> <a target="" href="/tenant-portal">Tenant Portal</a> </li> <li depth="2" class=""> <a target="" href="/moore-park-gardens-rental-enquiry">Moore Park Gardens Rental Enquiry</a> </li> </ul> </li> <li depth="1" class=""> <a target="" href="/moore-park-gardens">Moore Park Gardens</a> </li> <li depth="1" class=""> <a target="" href="/insights">Insights</a> </li> <li depth="1" class="hasChildren "> <button class="collapse-toggle" aria-label="toggle"></button><a target="" href="/about-us">About</a> <ul depth="2"> <li depth="2" class=""> <a target="" href="/our-difference">Our Difference</a> </li> <li depth="2" class=""> <a target="" href="/team-profiles">Our Team</a> </li> <li depth="2" class=""> <a target="" href="/testimonials">Testimonials</a> </li> </ul> </li> <li depth="1" class=""> <a target="" href="/contact-us">Contact Us</a> </li> </ul>    </main>
1603    <footer>
1604        <ul class="social text-center">
1605            <li><a target="_blank" href="https://www.facebook.com/thegalleryrealestate"><i class="soc">f</i></a></li>            <li><a target="_blank" href="https://www.youtube.com/@thegalleryrealestate6269"><i class="soc">y</i></a></li>            <li><a target="_blank" href="https://www.linkedin.com/company/the-gallery-real-estate"><i class="soc">l</i></a></li>                        <li><a target="_blank" href="https://www.instagram.com/thegalleryrealestate/"><i class="soc">i</i></a></li>        </ul>
1606    </footer>
1607</aside>
1608<div class="sidenav-overlay" data-class-cancel="active" data-class-cancel-target="[class*='sidenav-']"></div>
1609
1610
1611</div>
1612
1613<script type="application/ld+json">{"@context":"https:\/\/schema.org","@graph":[{"@context":"https:\/\/schema.org","@type":"WebSite","@id":"https:\/\/www.thegalleryrealestate.com.au\/#website","url":"https:\/\/www.thegalleryrealestate.com.au\/","name":"The Gallery Real Estate","description":"The Gallery Real Estate is a boutique real estate agency in Redfern specialising in property management and leasing across Inner Sydney. Our office is at 780 Bourke Street, Redfern.","inLanguage":"en-AU","publisher":{"@id":"https:\/\/www.thegalleryrealestate.com.au\/#org"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.thegalleryrealestate.com.au\/?qs={search_term_string}"},"query-input":"required name=search_term_string"}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.thegalleryrealestate.com.au\/#breadcrumbs","itemListElement":[{"@type":"ListItem","position":1,"item":"https:\/\/www.thegalleryrealestate.com.au\/","name":"The Gallery Real Estate"}]},{"@context":"https:\/\/schema.org","@type":"Organization","@id":"https:\/\/www.thegalleryrealestate.com.au\/#org","name":"The Gallery Real Estate","url":"https:\/\/www.thegalleryrealestate.com.au\/","sameAs":["https:\/\/www.facebook.com\/thegalleryrealestate","https:\/\/www.youtube.com\/@thegalleryrealestate6269","https:\/\/www.linkedin.com\/company\/the-gallery-real-estate","https:\/\/www.instagram.com\/thegalleryrealestate\/"],"logo":"https:\/\/www.thegalleryrealestate.com.au\/_files\/logos\/tgre-icon-rgb-red.svg"}]}</script>
1613
1614<aside id="asyncPanel" class="asyncPanel">
1615    <div class="asyncPanel-content">
1616        <async-include src=""></async-include>
1617    </div>
1618</aside>
1619
1620<!-- Start BODY End Includes -->
1621<!-- Google Tag Manager (noscript) -->
1622
1623<!-- TGRE Animated Counters -->
1624<script>
1625(function() {
1626  function animateCounters() {
1627    document.querySelectorAll('.tgre-counter').forEach(function(el) {
1628      if (el.dataset.animated) return;
1629      var rect = el.getBoundingClientRect();
1630      if (rect.top > window.innerHeight || rect.bottom < 0) return;
1631      el.dataset.animated = 'true';
1632      var target = parseFloat(el.dataset.target);
1633      var decimals = parseInt(el.dataset.decimals) || 0;
1634      var suffix = el.dataset.suffix || '';
1635      var prefix = el.dataset.prefix || '';
1636      var duration = 2000;
1637      var start = performance.now();
1638      function step(now) {
1639        var elapsed = now - start;
1640        var progress = Math.min(elapsed / duration, 1);
1641        var eased = 1 - Math.pow(1 - progress, 3);
1642        var current = (target * eased).toFixed(decimals);
1643        el.textContent = prefix + current + suffix;
1644        if (progress < 1) requestAnimationFrame(step);
1645      }
1646      requestAnimationFrame(step);
1647    });
1648  }
1649  window.addEventListener('scroll', animateCounters, { passive: true });
1650  window.addEventListener('load', animateCounters);
1651})();
1652</script>
vendor: 69 bytes, lines 1652-1653
1652
1653<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1653GTM-WPQHJCP9
vendor: 85 bytes, lines 1653-1654
1653"
1654height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1655<!-- End Google Tag Manager (noscript) -->
1656
1657<!-- TGRE YouTube Video Embeds -->
1658<script>
1659(function() {
1660  function embedVideo(el, id) {
1661    el.innerHTML = '<div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;border-radius:12px;">' +
1662      '<iframe src="https://www.youtube.com/embed/' + id + '?modestbranding=1&rel=0" ' +
1663      'style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;border-radius:12px;" ' +
1664      'allow="accelerometer;autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture;web-share" ' +
1665      'loading="lazy" allowfullscreen title="The Gallery Real Estate"></iframe>' +
1666      '<div style="position:absolute;top:0;right:0;width:180px;height:50px;background:transparent;z-index:10;pointer-events:auto;cursor:default;"></div>' +
1667      '</div>';
1668  }
1669  // Single video embed (switch + landlord enquiry pages)
1670  var legacy = document.getElementById('tgre-video-embed');
1671  if (legacy) embedVideo(legacy, 'uZLKavldzP8');
1672  // Multi-video embeds (owner guide + any future pages)
1673  document.querySelectorAll('[data-tgre-yt]').forEach(function(el) {
1674    var id = el.getAttribute('data-tgre-yt');
1675    if (id) embedVideo(el, id);
1676  });
1677})();
1678</script>
1678
1679<style>
1680@media (max-width: 899px) {
1681  .tgre-desktop-only { display: none !important; }
1682}
1683@media (min-width: 900px) {
1684  .tgre-mobile-only { display: none !important; }
1685}
1686</style>
1687<!-- TGRE Lead Relay: mirrors the landlord enquiry form to Grow CRM (added 2026-07-07) -->
1688<script>
1689(function() {
1690  var RELAY = 'https://tgre-team.netlify.app/api/lead';
1691  function fv(form, suffix) {
1692    var el = form.querySelector('[name$="_field_' + suffix + '"]');
1693    return el ? el.value.trim() : '';
1694  }
1695  document.addEventListener('submit', function(e) {
1696    var form = e.target;
1697    if (!form || !form.getAttribute) return;
1698    if (form.getAttribute('data-form-name') !== 'Request Property Management Advice') return;
1699    var payload = {
1700      name: fv(form, '164'),
1701      email: fv(form, '165'),
1702      phone: fv(form, '166'),
1703      property_address: fv(form, '167'),
1704      message: fv(form, '172'),
1705      source_page: window.location.href
1706    };
1707    if (!payload.email && !payload.phone) return;
1708    var key = JSON.stringify(payload);
1709    if (form.__tgreLeadSent === key) return;
1710    form.__tgreLeadSent = key;
1711    try {
1712      fetch(RELAY, { method: 'POST', headers: {'Content-Type': 'application/json'}, body: key, keepalive: true }).catch(function(){});
1713    } catch (err) {}
1714  }, true);
1715})();
1716</script>
1716
1717
1718
1719
1720<!-- TGRE Tenant Lead Relay: mirrors the Moore Park Gardens rental enquiry form to Grow CRM (added 2026-07-13) -->
1721<script>
1722(function() {
1723  var RELAY = 'https://tgre-team.netlify.app/api/tenant-lead';
1724  function fv(form, suffix) {
1725    var el = form.querySelector('[name$="_field_' + suffix + '"]');
1726    return el ? el.value.trim() : '';
1727  }
1728  function fvList(form, suffix) {
1729    var els = form.querySelectorAll('[name$="_field_' + suffix + '[]"]:checked');
1730    var vals = [];
1731    els.forEach(function(el) { vals.push(el.value); });
1732    return vals;
1733  }
1734  document.addEventListener('submit', function(e) {
1735    var form = e.target;
1736    if (!form || !form.getAttribute) return;
1737    if (form.getAttribute('data-form-name') !== 'Moore Park Gardens Rental Enquiry') return;
1738    var payload = {
1739      name: fv(form, '200'),
1740      email: fv(form, '201'),
1741      phone: fv(form, '211'),
1742      bedrooms: fvList(form, '220'),
1743      bathrooms: fvList(form, '223'),
1744      car_space: fvList(form, '224'),
1745      move_timing: fvList(form, '225'),
1746      weekly_rent: fv(form, '216'),
1747      situation: fvList(form, '219'),
1748      notes: fv(form, '218'),
1749      source_page: window.location.href
1750    };
1751    if (!payload.email && !payload.phone) return;
1752    var key = JSON.stringify(payload);
1753    if (form.__tgreTenantLeadSent === key) return;
1754    form.__tgreTenantLeadSent = key;
1755    try {
1756      fetch(RELAY, { method: 'POST', headers: {'Content-Type': 'application/json'}, body: key, keepalive: true }).catch(function(){});
1757    } catch (err) {}
1758  }, true);
1759})();
1760</script>
1760
1761
1762
1763<script>
1764/* ===== TGRE Motion v1 — reveal-on-scroll + stat count-up. Progressive enhancement:
1765   exits (leaving everything visible and static) without IO support or with
1766   prefers-reduced-motion. Above-fold sections are marked .tgre-in in the same
1767   frame as .tgre-mo, so nothing visible ever hides. Safety: 4s force-reveal. ===== */
1768(function(){
1769  if(!('IntersectionObserver' in window))return;
1770  if(window.matchMedia('(prefers-reduced-motion: reduce)').matches)return;
1771  function init(){
1772    document.documentElement.classList.add('tgre-motion');
1773    var vh=window.innerHeight;
1774    var io=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){e.target.classList.add('tgre-in');io.unobserve(e.target);}});},{rootMargin:'0px 0px 22% 0px',threshold:0.01});
1775    [].slice.call(document.querySelectorAll('.pushblock-inner')).forEach(function(el){
1776      var r=el.getBoundingClientRect();
1777      el.classList.add('tgre-mo');
1778      if(r.top<vh*0.98){el.classList.add('tgre-in');}else{io.observe(el);}
1779    });
1780    var mio=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){e.target.classList.add('tgre-in');mio.unobserve(e.target);}});},{threshold:0.25});
1781    [].slice.call(document.querySelectorAll('.tgre-ed-marker')).forEach(function(m){mio.observe(m);});
1782    function fig(el){
1783      var t=el.textContent.trim();
1784      var m=t.match(/^([^0-9]*)([0-9][0-9.,]*)([^0-9]*)$/);
1785      if(!m)return;
1786      var num=parseFloat(m[2].replace(/,/g,''));
1787      if(!isFinite(num))return;
1788      var dec=(m[2].split('.')[1]||'').length,start=null,dur=1400;
1789      function step(ts){
1790        if(!start)start=ts;
1791        var p=Math.min(1,(ts-start)/dur),e=1-Math.pow(1-p,3);
1792        el.textContent=m[1]+(num*e).toFixed(dec)+m[3];
1793        if(p<1)requestAnimationFrame(step);else el.textContent=t;
1794      }
1795      requestAnimationFrame(step);
1796    }
1797    var fio=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){fio.unobserve(e.target);fig(e.target);}});},{threshold:0.25});
1798    [].slice.call(document.querySelectorAll('.tgre-ed-stats .fig')).forEach(function(f){fio.observe(f);});
1799    var moTick=false;
1800    function moSweep(){moTick=false;var els=document.querySelectorAll('.tgre-mo:not(.tgre-in)');if(!els.length){document.removeEventListener('scroll',moQ,{capture:true});window.removeEventListener('resize',moQ);return;}[].slice.call(els).forEach(function(el){var r=el.getBoundingClientRect();if(r.top<window.innerHeight*0.96){el.classList.add('tgre-in');}});}
1801    function moQ(){if(!moTick){moTick=true;requestAnimationFrame(moSweep);}}
1802    document.addEventListener('scroll',moQ,{passive:true,capture:true});
1803    window.addEventListener('resize',moQ,{passive:true});
1804    setTimeout(moSweep,3000);
1805  }
1806  if(document.readyState==='complete'){init();}else{window.addEventListener('load',init);}
1807})();
1808</script>
1808
1809
1810<!-- TGRE Story Viewer: binds [data-tgre-story] rings to the overlay decks in the footer snippet.
1811     Restored 2026-07-18 after a Footer Content UI edit stripped it. Lives here so footer edits can't strip it again. -->
1812<script>
1813(function(){
1814function lock(on){document.documentElement.style.overflow=on?'hidden':'';}
1815function init(key){
1816  var overlay=document.getElementById('tgre-ps-'+key);
1817  var triggers=document.querySelectorAll('[data-tgre-story="'+key+'"]');
1818  if(!overlay||!triggers.length)return;
1819  var card=overlay.querySelector('.tgre-ps-card'),
1820      slides=overlay.querySelectorAll('.tgre-ps-slide'),
1821      bars=overlay.querySelector('.tgre-ps-bars'),
1822      closeBtn=overlay.querySelector('.tgre-ps-close'),
1823      DUR=6000,cur=0,timer=null,fills=[];
1824  for(var i=0;i<slides.length;i++){
1825    var b=document.createElement('div');b.className='tgre-ps-bar';
1826    var f=document.createElement('span');b.appendChild(f);bars.appendChild(b);fills.push(f);
1827  }
1828  function show(n){
1829    if(n<0)n=0;
1830    if(n>=slides.length){close();return;}
1831    cur=n;
1832    for(var i=0;i<slides.length;i++){
1833      slides[i].classList.toggle('is-active',i===n);
1834      fills[i].style.transition='none';
1835      fills[i].style.width=i<n?'100%':'0';
1836    }
1837    void fills[n].offsetWidth;
1838    fills[n].style.transition='width '+DUR+'ms linear';
1839    fills[n].style.width='100%';
1840    clearTimeout(timer);
1841    if(n<slides.length-1){timer=setTimeout(function(){show(cur+1);},DUR);}
1842  }
1843  function open(e){
1844    if(e)e.preventDefault();
1845    overlay.classList.add('is-open');
1846    lock(true);
1847    card.style.transition='';card.style.transform='';
1848    show(0);
1849  }
1850  function close(){
1851    overlay.classList.remove('is-open');
1852    lock(false);
1853    clearTimeout(timer);
1854    card.style.transition='';card.style.transform='';
1855  }
1856  overlay._close=close;
1857  overlay._next=function(){show(cur+1);};
1858  overlay._prev=function(){show(cur-1);};
1859  for(var t=0;t<triggers.length;t++){triggers[t].addEventListener('click',open);}
1860  if(closeBtn)closeBtn.addEventListener('click',function(e){e.stopPropagation();close();});
1861  overlay.addEventListener('click',function(e){if(e.target===overlay)close();});
1862  var sy=null,sx=null,dy=0,dx=0,swiped=false;
1863  card.addEventListener('touchstart',function(e){
1864    sy=e.touches[0].clientY;sx=e.touches[0].clientX;dy=0;dx=0;
1865  },{passive:true});
1866  card.addEventListener('touchmove',function(e){
1867    if(sy===null)return;
1868    dy=e.touches[0].clientY-sy;dx=e.touches[0].clientX-sx;
1869    if(dy>0&&dy>Math.abs(dx)){
1870      card.style.transition='none';
1871      card.style.transform='translateY('+dy+'px)';
1872    }
1873  },{passive:true});
1874  card.addEventListener('touchend',function(){
1875    if(Math.abs(dy)>10||Math.abs(dx)>10)swiped=true;
1876    if(dy>110&&dy>Math.abs(dx)){sy=null;close();return;}
1877    card.style.transition='transform .25s ease';
1878    card.style.transform='';
1879    sy=null;
1880  });
1881  card.addEventListener('click',function(e){
1882    if(swiped){swiped=false;return;}
1883    if(e.target.closest('a,button'))return;
1884    var r=card.getBoundingClientRect();
1885    if((e.clientX-r.left)<r.width*0.3){show(cur-1);}else{show(cur+1);}
1886  });
1887}
1888init('lease');
1889init('switch');
1890document.addEventListener('keydown',function(e){
1891  var ov=document.querySelector('.tgre-ps-overlay.is-open');
1892  if(!ov)return;
1893  if(e.key==='Escape')ov._close();
1894  if(e.key==='ArrowRight')ov._next();
1895  if(e.key==='ArrowLeft')ov._prev();
1896});
1897})();
1898</script>
1898
1899
1900<!-- TGRE theme footer: trim the locked copyright bar to its first line (added 2026-07-18) -->
1901<script>
1902(function(){
1903  var bars = document.querySelectorAll('.siteFooter-copyright');
1904  for (var i = 0; i < bars.length; i++) {
1905    var br = bars[i].querySelector('br');
1906    if (!br) continue;
1907    while (br.nextSibling) { br.parentNode.removeChild(br.nextSibling); }
1908    br.parentNode.removeChild(br);
1909  }
1910})();
1911</script>
1911
1912
1913<!-- Immersive .rj engine JS (v2): write-on words + underline-after + consistent wave + ken-burns, gated to .rj (19 Jul 2026) -->
1914<script>
1915(function(){
1916  var rj=document.querySelector('.rj'); if(!rj) return;
1917  var RM=matchMedia('(prefers-reduced-motion: reduce)').matches;
1918  if(!RM) document.documentElement.classList.add('rj-anim');
1919  function wavePath(W){var y=8;return 'M 2 '+(y+0.6).toFixed(1)+' C '+(W*0.28).toFixed(1)+' '+(y-1.5).toFixed(1)+', '+(W*0.62).toFixed(1)+' '+(y+1.7).toFixed(1)+', '+(W-2).toFixed(1)+' '+(y-0.2).toFixed(1);}
1920  var emphs=[];
1921  rj.querySelectorAll('h2 em, .rj-h1 em').forEach(function(em){
1922    var w=document.createElement('span'); w.className='rj-emph';
1923    em.parentNode.insertBefore(w,em); w.appendChild(em);
1924    if(em.classList.contains('ul')){var svg=document.createElementNS('http://www.w3.org/2000/svg','svg'); svg.setAttribute('preserveAspectRatio','none');
1925    var p=document.createElementNS('http://www.w3.org/2000/svg','path'); svg.appendChild(p); w.appendChild(svg);
1926    emphs.push({w:w,svg:svg,p:p});}
1927  });
1928  function sizeUnderlines(){emphs.forEach(function(o){var W=Math.max(20,Math.round(o.w.getBoundingClientRect().width));o.svg.setAttribute('viewBox','0 0 '+W+' 14');o.p.setAttribute('d',wavePath(W));var L=o.p.getTotalLength();o.p.style.strokeDasharray=L;if(!o.p.dataset.drawn)o.p.style.strokeDashoffset=RM?0:L;});}
1929  sizeUnderlines();
1930  function drawUnderlines(el){el.querySelectorAll('.rj-emph').forEach(function(w){w.classList.add('rj-lit');var p=w.querySelector('path');if(p){p.dataset.drawn='1';p.style.strokeDashoffset=0;}});}
1931  function countUp(el){if(RM)return;var t=el.textContent.trim(),m=t.match(/^([^0-9]*)([0-9]+)(.*)$/);if(!m)return;var pre=m[1],num=+m[2],suf=m[3],s=null;function st(ts){if(!s)s=ts;var pr=Math.min(1,(ts-s)/1600),e=1-Math.pow(1-pr,3);el.textContent=pre+Math.round(num*e)+suf;if(pr<1)requestAnimationFrame(st);else el.textContent=t;}requestAnimationFrame(st);}
1932  function fire(t){t.classList.add('rj-in');drawUnderlines(t);t.querySelectorAll('[data-count]').forEach(countUp);}
1933  var hero=rj.querySelector('.rj-hero');
1934  function heroGo(){if(hero){hero.classList.add('rj-in');drawUnderlines(hero);}}
1935  if(RM){if(hero)hero.classList.add('rj-in');return;}
1936  requestAnimationFrame(function(){requestAnimationFrame(heroGo);});
1937  if(!('IntersectionObserver' in window)){rj.querySelectorAll('.rj-scene,.rj-act,.rj-cta').forEach(fire);return;}
1938  var io=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){fire(e.target);io.unobserve(e.target);}});},{threshold:.2,rootMargin:'0px 0px -8% 0px'});
1939  rj.querySelectorAll('.rj-scene,.rj-act,.rj-cta').forEach(function(s){io.observe(s);});
1940  var rt;addEventListener('resize',function(){clearTimeout(rt);rt=setTimeout(sizeUnderlines,200);});
1941  setTimeout(function(){var vh=innerHeight;rj.querySelectorAll('.rj-scene:not(.rj-in),.rj-act:not(.rj-in),.rj-cta:not(.rj-in)').forEach(function(s){var r=s.getBoundingClientRect();if(r.top<vh&&r.bottom>0)fire(s);});},3500);
1942})();
1943</script>
1943
1944
1945<!-- TGRE word annotations engine v4.1 (.tg-wo): underline, double underline, circle, tick, target-seeking arrow with drawn-then-filled triangle head. 21 Jul 2026 -->
1946<script>
1947(function(){
1948  var wos=[].slice.call(document.querySelectorAll('.tg-wo')); if(!wos.length) return;
1949  var RM=matchMedia('(prefers-reduced-motion: reduce)').matches;
1950  if(!RM) document.documentElement.classList.add('tg-anim');
1951  function pencil(W,y,f){y=y||8;f=f||1;return 'M 2 '+(y+0.6*f).toFixed(1)+' C '+(W*0.28).toFixed(1)+' '+(y-1.5*f).toFixed(1)+', '+(W*0.62).toFixed(1)+' '+(y+1.7*f).toFixed(1)+', '+(W-2).toFixed(1)+' '+(y-0.2*f).toFixed(1);}
1952  function circ(){var cx=50,cy=30,rx=47,ry=25,k=0.5523,d='M '+(cx+rx)+' '+cy;d+=' C '+(cx+rx)+' '+(cy+ry*k)+', '+(cx+rx*k)+' '+(cy+ry)+', '+cx+' '+(cy+ry);d+=' C '+(cx-rx*k)+' '+(cy+ry)+', '+(cx-rx)+' '+(cy+ry*k)+', '+(cx-rx)+' '+cy;d+=' C '+(cx-rx)+' '+(cy-ry*k)+', '+(cx-rx*k)+' '+(cy-ry)+', '+cx+' '+(cy-ry);d+=' C '+(cx+rx*k)+' '+(cy-ry)+', '+(cx+rx)+' '+(cy-ry*k)+', '+(cx+rx)+' '+cy;d+=' C '+(cx+rx)+' '+(cy+ry*0.42)+', '+(cx+rx*0.93)+' '+(cy+ry*0.74)+', '+(cx+rx*0.55)+' '+(cy+ry*0.98);return d;}
1953  function mk(cls,vb,d){var s=document.createElementNS('http://www.w3.org/2000/svg','svg');s.setAttribute('class',cls);s.setAttribute('preserveAspectRatio','none');s.setAttribute('viewBox',vb);var p=document.createElementNS('http://www.w3.org/2000/svg','path');if(d)p.setAttribute('d',d);s.appendChild(p);return[s,p];}
1954  var uls=[],arrows=[];
1955  wos.forEach(function(el){
1956    if(el.classList.contains('tg-tick')){var ts=document.createElementNS('http://www.w3.org/2000/svg','svg');ts.setAttribute('class','tg-tk');ts.setAttribute('preserveAspectRatio','none');ts.setAttribute('viewBox','0 0 100 100');var pa=document.createElementNS('http://www.w3.org/2000/svg','path');pa.setAttribute('class','tk-a');pa.setAttribute('d','M 7 46 C 15 57, 24 72, 41 91');pa.style.strokeWidth='16';var pb=document.createElementNS('http://www.w3.org/2000/svg','path');pb.setAttribute('class','tk-b');pb.setAttribute('d','M 41 91 C 53 68, 71 40, 86 20 C 91 13, 96 8, 100 1');pb.style.strokeWidth='8';ts.appendChild(pa);ts.appendChild(pb);el.appendChild(ts);}
1957    if(el.classList.contains('tg-circ')){var cc=mk('tg-annot','0 0 100 60',circ());el.appendChild(cc[0]);}
1958    if(el.classList.contains('tg-arrow')){var ar=mk('tg-annot tg-arr','0 0 100 90',null);var hd=document.createElementNS('http://www.w3.org/2000/svg','path');hd.setAttribute('class','tg-arr-head');ar[0].appendChild(hd);el.appendChild(ar[0]);arrows.push({el:el,svg:ar[0],p:ar[1],f:hd});}
1959    if(el.classList.contains('tg-ul')){var u=mk('tg-annot','0 0 100 14',null);el.appendChild(u[0]);uls.push({el:el,svg:u[0],ps:[u[1]],two:false});}
1960    if(el.classList.contains('tg-ul2')){var v=mk('tg-annot','0 0 100 17',null);var p2=document.createElementNS('http://www.w3.org/2000/svg','path');v[0].appendChild(p2);el.appendChild(v[0]);uls.push({el:el,svg:v[0],ps:[v[1],p2],two:true});}
1961  });
1962  function findTarget(el){
1963    var box=el.closest('.pushblock-inner')||el.closest('.tgre-foot-cta-main')||el.closest('.pushblock')||el.parentElement;
1964    if(!box) return null;
1965    var btns=box.querySelectorAll('a.pushbutton');
1966    for(var i=0;i<btns.length;i++){
1967      if(el.compareDocumentPosition(btns[i]) & 4) return btns[i];
1968    }
1969    return null;
1970  }
1971  function arrowPath(a){
1972    var tgt=findTarget(a.el);
1973    if(!tgt){a.svg.style.display='none';return;}
1974    a.svg.style.display='';
1975    var wr=a.el.getBoundingClientRect(),tr=tgt.getBoundingClientRect();
1976    var relL=tr.left-wr.left,relR=tr.right-wr.left,relTop=tr.top-wr.top;
1977    var btnMid=relTop+tr.height*0.5,btnBot=relTop+tr.height;
1978    var beside=tr.top<wr.bottom-4;
1979    var maxX=document.documentElement.clientWidth-wr.left-8;
1980    var sx,sy,segs=[];
1981    if(beside){
1982      var right=tr.left>wr.right;
1983      sx=wr.width*0.55;sy=wr.height+3;
1984      var exb=(right?tr.left-8:tr.right+8)-wr.left,eyb=btnMid;
1985      var lenb=Math.max(1,Math.hypot(exb-sx,eyb-sy));
1986      var db=Math.max(30,Math.min(70,lenb*0.18));
1987      var rb2=Math.min(120,Math.max(50,lenb*0.22));
1988      segs.push([sx+(exb-sx)*0.3,sy+db,exb+(right?-rb2:rb2),eyb+14,exb,eyb]);
1989    }else{
1990      sx=wr.width*0.7;sy=wr.height+4;
1991      if(maxX-wr.width<44){a.svg.style.display='none';return;}
1992      var ex0=Math.min(relR+8,maxX-18),ey0=btnMid;
1993      if(Math.abs(ex0-sx)>=140){
1994        var drop=Math.max(34,Math.min(90,(ey0-sy)*0.5+26));
1995        var reach=Math.min(140,Math.max(60,Math.abs(ex0-sx)*0.22));
1996        segs.push([sx+(ex0-sx)*0.28,sy+drop,ex0+reach,ey0+14,ex0,ey0]);
1997      }else{
1998        sx=wr.width+2;sy=wr.height*0.5;
1999        segs.push([Math.min(relR+46,maxX),sy+8,Math.min(ex0+48,maxX),ey0+16,ex0,ey0]);
2000      }
2001    }
2002    var last=segs[segs.length-1];
2003    var ex=last[4],ey=last[5];
2004    var tx=ex-last[2],ty=ey-last[3],tl=Math.sqrt(tx*tx+ty*ty)||1;tx/=tl;ty/=tl;
2005    function barb(ang){var r=ang*Math.PI/180,ct=Math.cos(r),st=Math.sin(r);var bx=tx*ct-ty*st,by=tx*st+ty*ct;return[(ex-bx*13),(ey-by*13)];}
2006    var b1=barb(26),b2=barb(-26);
2007    var xs=[sx,ex,b1[0],b2[0]],ys=[sy,ey,b1[1],b2[1]];
2008    segs.forEach(function(g){xs.push(g[0],g[2],g[4]);ys.push(g[1],g[3],g[5]);});
2009    var pad=26;
2010    var minX=Math.min.apply(null,xs.concat([0]))-pad,mX=Math.max.apply(null,xs)+pad;
2011    var minY=Math.min.apply(null,ys.concat([0]))-pad,mY=Math.max.apply(null,ys)+pad;
2012    a.svg.style.left=minX+'px';a.svg.style.top=minY+'px';
2013    a.svg.style.width=(mX-minX)+'px';a.svg.style.height=(mY-minY)+'px';
2014    a.svg.setAttribute('viewBox','0 0 '+Math.ceil(mX-minX)+' '+Math.ceil(mY-minY));
2015    function q(x,y){return (x-minX).toFixed(1)+' '+(y-minY).toFixed(1);}
2016    var d='M '+q(sx,sy);
2017    segs.forEach(function(g){d+=' C '+q(g[0],g[1])+', '+q(g[2],g[3])+', '+q(g[4],g[5]);});
2018    var hp='M '+q(b1[0],b1[1])+' L '+q(ex,ey)+' L '+q(b2[0],b2[1])+' Z';d+=' '+hp;a.f.setAttribute('d',hp);
2019    a.p.setAttribute('d',d);
2020  }
2021  function setDash(p){var L=p.getTotalLength();p.style.strokeDasharray=L;if(!p.dataset.drawn)p.style.strokeDashoffset=RM?0:L;}
2022  function size(){
2023    uls.forEach(function(a){var W=Math.max(20,Math.round(a.el.getBoundingClientRect().width));a.svg.setAttribute('viewBox','0 0 '+W+' '+(a.two?17:14));a.ps[0].setAttribute('d',pencil(W,a.two?5.5:8,1));if(a.two)a.ps[1].setAttribute('d',pencil(W,11.5,-1));});
2024    arrows.forEach(arrowPath);
2025    document.querySelectorAll('.tg-annot path,.tg-tk path').forEach(setDash);}
2026  size();
2027  if(document.documentElement.clientWidth<=860){
2028    document.querySelectorAll('.tg-hw .pen').forEach(function(pp){
2029      ['animationDuration','animationDelay'].forEach(function(k){
2030        var v=parseFloat(pp.style[k]);
2031        if(v)pp.style[k]=(v*0.75).toFixed(2)+'s';
2032      });
2033    });
2034  }
2035  function lit(el){el.classList.add('tg-lit');el.querySelectorAll('svg path').forEach(function(p){p.dataset.drawn='1';p.style.strokeDashoffset=0;});}
2036  if(RM) return;
2037  if(!('IntersectionObserver' in window)){wos.forEach(lit);return;}
2038  var io=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){lit(e.target);io.unobserve(e.target);}});},{threshold:.3});
2039  wos.forEach(function(el){io.observe(el);});
2040  var rt;addEventListener('resize',function(){clearTimeout(rt);rt=setTimeout(size,200);});
2041  addEventListener('load',size);
2042})();
2043</script>
2043
2044
2045
2046
2047<!-- TGRE Animated Counters v2 (29 Jul 2026) - supersedes the v1 block above.
2048     v1 bound to window 'scroll', but this theme scrolls an inner container, so
2049     window scroll never fired and counters stayed on their "0" placeholder on
2050     8 live pages. v2 uses IntersectionObserver, which is scroll-container
2051     agnostic, and can never leave a 0 on screen: reduced-motion and no-IO
2052     paths write the final value immediately, and a watchdog settles anything
2053     visible that did not animate. Takes ownership by setting data-animated so
2054     the v1 handler above no-ops. -->
2055<script>
2056(function(){
2057  var els = [].slice.call(document.querySelectorAll('.tgre-counter'));
2058  if (!els.length) return;
2059
2060  function decimalsFor(el){
2061    if (el.hasAttribute('data-decimals')) return parseInt(el.getAttribute('data-decimals'), 10) || 0;
2062    var raw = el.getAttribute('data-target') || '';
2063    return (raw.split('.')[1] || '').length;
2064  }
2065  function format(el, n){
2066    return (el.getAttribute('data-prefix') || '') + n.toFixed(decimalsFor(el)) + (el.getAttribute('data-suffix') || '');
2067  }
2068  function settle(el){
2069    var t = parseFloat(el.getAttribute('data-target'));
2070    if (isFinite(t)) el.textContent = format(el, t);
2071    el.dataset.done = '1';
2072  }
2073
2074  els.forEach(function(el){ el.dataset.animated = 'true'; });
2075
2076  var reduced = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
2077  if (reduced || !('IntersectionObserver' in window)) { els.forEach(settle); return; }
2078
2079  function run(el){
2080    if (el.dataset.done) return;
2081    var target = parseFloat(el.getAttribute('data-target'));
2082    if (!isFinite(target)) return;
2083    el.dataset.done = '1';
2084    var dur = 1600, start = null;
2085    function step(ts){
2086      if (!start) start = ts;
2087      var p = Math.min(1, (ts - start) / dur);
2088      var eased = 1 - Math.pow(1 - p, 3);
2089      el.textContent = format(el, target * eased);
2090      if (p < 1) requestAnimationFrame(step);
2091      else el.textContent = format(el, target);
2092    }
2093    requestAnimationFrame(step);
2094  }
2095
2096  var io = new IntersectionObserver(function(entries){
2097    entries.forEach(function(en){
2098      if (en.isIntersecting) { io.unobserve(en.target); run(en.target); }
2099    });
2100  }, { threshold: 0.25 });
2101  els.forEach(function(el){ io.observe(el); });
2102
2103  setTimeout(function(){
2104    els.forEach(function(el){
2105      if (el.dataset.done) return;
2106      var r = el.getBoundingClientRect();
2107      if (r.top < (window.innerHeight || 0) && r.bottom > 0) settle(el);
2108    });
2109  }, 4000);
2110})();
2111</script>
2111
2112
2113
2114
2115<!-- TGRE Animated Counters v3 (29 Jul 2026) - supersedes v1 and v2 above.
2116     Both earlier versions could leave a "0" on screen: v1 bound window
2117     'scroll', which never fires because this theme scrolls an inner container;
2118     v2 relied on IntersectionObserver + requestAnimationFrame, which are
2119     throttled or deferred in some contexts. v3 inverts the risk. The correct
2120     final value is written immediately and unconditionally, so a visitor can
2121     never see 0. The count-up is then a pure enhancement layered on top, driven
2122     by the same document-capture scroll sweep the TGRE Motion script uses on
2123     this theme. If any of that fails, the real number is already on screen.
2124     v1 and v2 are inert (v3 claims data-animated) and can be deleted. -->
2125<script>
2126(function(){
2127  var els = [].slice.call(document.querySelectorAll('.tgre-counter'));
2128  if (!els.length) return;
2129
2130  function decimalsFor(el){
2131    if (el.hasAttribute('data-decimals')) return parseInt(el.getAttribute('data-decimals'), 10) || 0;
2132    return ((el.getAttribute('data-target') || '').split('.')[1] || '').length;
2133  }
2134  function format(el, n){
2135    return (el.getAttribute('data-prefix') || '') + n.toFixed(decimalsFor(el)) + (el.getAttribute('data-suffix') || '');
2136  }
2137
2138  // 1. Correctness, unconditional. Neutralise v1/v2 and write the real value now.
2139  els.forEach(function(el){
2140    el.dataset.animated = 'true';
2141    el.dataset.done = '1';
2142    var t = parseFloat(el.getAttribute('data-target'));
2143    if (isFinite(t)) el.textContent = format(el, t);
2144  });
2145
2146  // 2. Animation, best effort only.
2147  if (!window.requestAnimationFrame) return;
2148  if (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;
2149
2150  var pending = els.filter(function(el){ return isFinite(parseFloat(el.getAttribute('data-target'))); });
2151
2152  function animate(el){
2153    var target = parseFloat(el.getAttribute('data-target'));
2154    var dur = 1600, start = null;
2155    function step(ts){
2156      if (!start) start = ts;
2157      var p = Math.min(1, (ts - start) / dur);
2158      el.textContent = format(el, target * (1 - Math.pow(1 - p, 3)));
2159      if (p < 1) requestAnimationFrame(step);
2160      else el.textContent = format(el, target);
2161    }
2162    requestAnimationFrame(step);
2163  }
2164
2165  var ticking = false;
2166  function sweep(){
2167    ticking = false;
2168    var vh = window.innerHeight || 0;
2169    pending = pending.filter(function(el){
2170      var r = el.getBoundingClientRect();
2171      if (r.top < vh * 0.9 && r.bottom > 0) { animate(el); return false; }
2172      return true;
2173    });
2174    if (!pending.length) {
2175      document.removeEventListener('scroll', queue, { capture: true });
2176      window.removeEventListener('resize', queue);
2177    }
2178  }
2179  function queue(){ if (!ticking) { ticking = true; requestAnimationFrame(sweep); } }
2180
2181  document.addEventListener('scroll', queue, { passive: true, capture: true });
2182  window.addEventListener('resize', queue, { passive: true });
2183  queue();
2184})();
2185</script>
2185
2186
2187
2188<!-- TGRE MPG Parcel Locator embed: grows the iframe with its content and
2189     darkens the page around it in dark mode. Inert on every other page. -->
2190<script>
2191(function(){
2192  var f = document.getElementById("tgreLocator");
2193  if (!f) return;
2194  window.addEventListener("message", function(e){
2195    if (e.data && e.data.tgreLocator) f.style.height = e.data.tgreLocator + "px";
2196  });
2197  var css = document.createElement("style");
2198  css.textContent = "@media (prefers-color-scheme: dark){" +
2199    "body, main.siteMain, .pushblock[data-bg='bg-none']{background:#211f1d !important;color:#f2ece5}" +
2200    "main.siteMain h1{color:#f2ece5}" +
2201    "main.siteMain h1 em{color:#D46144}" +
2202  "}";
2203  document.head.appendChild(css);
2204})();
2205</script>
2205
2206
2207
2208<!-- TGRE MPG Parcel Locator: the headline image exists only for the share
2209     card, so hide the hero rendering of it on this page. -->
2210<script>
2211(function(){
2212  if (!document.getElementById("tgreLocator")) return;
2213  var css = document.createElement("style");
2214  css.textContent = ".hero img[slot='image'],.hero .hero-image,.hero-image{display:none !important}";
2215  document.head.appendChild(css);
2216})();
2217</script>
2217
2218
2219
2220<script>
2221/* TGRE MPG Parcel Locator: compact the hero — the image is share-card only,
2222   so without it the block should hug its text. */
2223(function(){
2224  if (!document.getElementById("tgreLocator")) return;
2225  var css = document.createElement("style");
2226  css.textContent = ".hero{min-height:0 !important;padding-top:2.5rem;padding-bottom:2.5rem}";
2227  document.head.appendChild(css);
2228})();
2229</script>
2229
2230
2231
2232
2233<!-- TGRE Interaction v1 (11 Aug 2026): sticky header show-on-scroll-up. Pairs with the "TGRE Interaction v1" style block in Head Includes.
2234     Theme scrolls an inner container, so the scroll listener is document-level
2235     with capture, same pattern as TGRE Motion. Fail-safe: without JS the header
2236     simply keeps its native behaviour. -->
2237<script>
2238(function(){
2239  var de = document.documentElement;
2240  var hd = document.querySelector('.siteHeader');
2241  if (hd) {
2242    var lastY = 0, fixed = false, hidden = false, ticking = false;
2243    function getY(){ return window.scrollY || de.scrollTop || document.body.scrollTop || 0; }
2244    function prep(){
2245      de.classList.add('tgre-hd-prep');
2246      requestAnimationFrame(function(){ requestAnimationFrame(function(){ de.classList.remove('tgre-hd-prep'); }); });
2247    }
2248    function apply(){
2249      ticking = false;
2250      var y = getY(), dy = y - lastY; lastY = y;
2251      if (y <= 70) {
2252        if (fixed) { prep(); de.classList.remove('tgre-hd-fixed','tgre-hd-hide'); fixed = false; hidden = false; }
2253        return;
2254      }
2255      if (!fixed) {
2256        prep(); de.classList.add('tgre-hd-fixed'); de.classList.add('tgre-hd-hide');
2257        fixed = true; hidden = true; return;
2258      }
2259      if (dy > 2 && y > 160 && !hidden) { de.classList.add('tgre-hd-hide'); hidden = true; }
2260      else if (dy < -2 && hidden) { de.classList.remove('tgre-hd-hide'); hidden = false; }
2261    }
2262    function queue(){ if (!ticking) { ticking = true; requestAnimationFrame(apply); } }
2263    document.addEventListener('scroll', queue, { passive: true, capture: true });
2264    window.addEventListener('resize', queue, { passive: true });
2265    queue();
2266  }
2267})();
2268</script>
2268
2269
2270
2271
2272<!-- TGRE footer award marks (22 Sep 2026): appends the three 2026 award marks and the three PMX 2026 finalist seals (with captions that show 5s / hide 2s while the footer is on screen) to the locked theme footer, bottom left. Styled by the "TGRE footer award marks" block in Head Includes. -->
2273<script>
2274(function(){
2275  var bar = document.querySelector('footer .siteFooter-copyright');
2276  if (!bar || document.querySelector('.tgre-foot-awards')) return;
2277  var BASE = 'https://tgre-social-assets.netlify.app/awards/';
2278  var MARKS = [
2279    { file: 'local-business-awards-2026-winner.png', w: 56, href: '/our-story', label: '2026 Local Business Awards, Most Outstanding Real Estate Agency', alt: 'Local Business Awards 2026, Winner, City Suburbs', clear: false },
2280    { file: 'champion-awards-2026-winner.png', w: 40, href: '/our-story', label: '2026 Australian Small Business Champion Awards, Young Business Champion, Entrepreneur of the Year', alt: 'Australian Small Business Champion Awards 2026, Winner', clear: true },
2281    { file: 'sydney-design-awards-2026-gold.png', w: 64, href: '/post/the-gallery-real-estate-wins-gold-2026-sydney-design-awards', label: '2026 Sydney Design Awards, Gold for identity and branding', alt: 'Sydney Design Awards 2026, Better Future, Gold', clear: false },
2282    { file: 'pmx-2026-finalist-innovation.png', w: 86, href: '/post/the-gallery-real-estate-finalist-2026-property-management-excellence-awards', label: 'Finalist, Innovation in Property Management, Property Management Excellence Awards 2026', alt: 'PMX 2026 Finalist, Innovation in Property Management', clear: true, cap: 'Innovation', pmx: true },
2283    { file: 'pmx-2026-finalist-office-of-the-year-small.png', w: 87, href: '/post/the-gallery-real-estate-finalist-2026-property-management-excellence-awards', label: 'Finalist, Property Management Office of the Year, Small Office, Property Management Excellence Awards 2026', alt: 'PMX 2026 Finalist, Property Management Office of the Year, Small Office', clear: true, cap: 'Small office' },
2284    { file: 'pmx-2026-finalist-team-of-the-year.png', w: 87, href: '/post/the-gallery-real-estate-finalist-2026-property-management-excellence-awards', label: 'Finalist, Property Management Team of the Year, Property Management Excellence Awards 2026', alt: 'PMX 2026 Finalist, Property Management Team of the Year', clear: true, cap: 'Team' }
2285  ];
2286  var wrap = document.createElement('div');
2287  wrap.className = 'tgre-foot-awards';
2288  MARKS.forEach(function(m){
2289    if (m.pmx) { var br = document.createElement('span'); br.className = 'tgre-foot-break'; wrap.appendChild(br); }
2290    var a = document.createElement('a');
2291    a.className = 'tgre-foot-award' + (m.clear ? ' is-clear' : '');
2292    a.href = m.href;
2293    a.setAttribute('aria-label', m.label);
2294    var img = document.createElement('img');
2295    img.src = BASE + m.file;
2296    img.alt = m.alt;
2297    img.loading = 'lazy';
2298    img.width = m.w; img.height = 82;
2299    a.appendChild(img);
2300    if (m.cap) { var c = document.createElement('span'); c.className = 'tgre-foot-cap'; c.setAttribute('aria-hidden', 'true'); c.textContent = m.cap; a.appendChild(c); }
2301    wrap.appendChild(a);
2302  });
2303  bar.parentNode.appendChild(wrap);
2304
2305  /* captions: on 5s, off 2s, only while the footer is on screen */
2306  var still = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
2307  if (still || !('IntersectionObserver' in window)) { wrap.classList.add('is-on'); return; }
2308  var timer = null;
2309  function on(){ wrap.classList.add('is-on'); timer = setTimeout(off, 5000); }
2310  function off(){ wrap.classList.remove('is-on'); timer = setTimeout(on, 2000); }
2311  function stop(){ clearTimeout(timer); timer = null; wrap.classList.remove('is-on'); }
2312  new IntersectionObserver(function(entries){
2313    entries.forEach(function(e){ if (e.isIntersecting) { if (!timer) on(); } else { stop(); } });
2314  }, { threshold: 0.2 }).observe(wrap);
2315})();
2316</script>
2316
2317<!-- End BODY End Includes -->
2318
2319</body>
2320
2321</html>
2322
2323

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.