PageSourceSearch

https://nasebyapartments.co.nz/

html nasebyapartments.co.nz collected 2026-10-06 19:59:18 UTC 72,195 bytes, 1,153 lines download raw bytes

1
2<!DOCTYPE html>
3<html lang="en" class="no-js">
4<head>
5    <meta charset="UTF-8">
6    <meta name="viewport" content="width=device-width, initial-scale=1.0">
7    
8    <!-- Google Fonts: Montserrat & Inter -->
9    <link rel="preconnect" href="https://fonts.googleapis.com">
10    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Oswald:wght@500;600;700&display=swap" rel="stylesheet">
12	
13	
13<script>
14    document.documentElement.classList.remove('no-js');
15    document.documentElement.classList.add('scroll-animate');
16	</script>
16
17	
18			
18<script type="application/ld+json" id="naseby-business-schema">
19			{"@context":"https://schema.org","@type":"LodgingBusiness","@id":"https://nasebyapartments.co.nz/#business","name":"Naseby Apartments","url":"https://nasebyapartments.co.nz/","telephone":"+64 3 444 8222","address":{"@type":"PostalAddress","streetAddress":"26 Derwent Street","addressLocality":"Naseby","postalCode":"9354","addressRegion":"Central Otago","addressCountry":"NZ"},"image":"https://nasebyapartments.co.nz/wp-content/uploads/2025/11/legacy_img-66.webp","priceRange":"$$","aggregateRating":{"@type":"AggregateRating","ratingValue":4.4,"bestRating":5,"worstRating":1,"reviewCount":222}}		</script>
19
20			
21<title>Comfortable accommodation in Naseby | Naseby Apartments</title>
22
23<!-- The SEO Framework by Sybre Waaijer -->
24<meta name="robots" content="max-snippet:-1,max-image-preview:large,max-video-preview:-1" />
25<link rel="canonical" href="https://nasebyapartments.co.nz/" />
26<meta name="description" content="Stay in modern self-contained apartments in the alpine town of Naseby, Central Otago. Enjoy quiet accommodation with full kitchens, fast WiFi and easy access to forest trails and breathtaking dark night skies." />
27<meta property="og:type" content="website" />
28<meta property="og:locale" content="en_GB" />
29<meta property="og:site_name" content="Naseby Apartments" />
30<meta property="og:title" content="Comfortable accommodation in Naseby | Naseby Apartments" />
31<meta property="og:description" content="Stay in modern self-contained apartments in the alpine town of Naseby, Central Otago. Enjoy quiet accommodation with full kitchens, fast WiFi and easy access to forest trails and breathtaking dark night skies." />
32<meta property="og:url" content="https://nasebyapartments.co.nz/" />
33<meta property="og:image" content="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/Naseby-Favicon.png" />
34<meta property="og:image:width" content="512" />
35<meta property="og:image:height" content="512" />
36<meta property="og:image:alt" content="Naseby Apartments - Favicon" />
37<meta name="twitter:card" content="summary_large_image" />
38<meta name="twitter:title" content="Comfortable accommodation in Naseby | Naseby Apartments" />
39<meta name="twitter:description" content="Stay in modern self-contained apartments in the alpine town of Naseby, Central Otago. Enjoy quiet accommodation with full kitchens, fast WiFi and easy access to forest trails and breathtaking dark night skies." />
40<meta name="twitter:image" content="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/Naseby-Favicon.png" />
41<meta name="twitter:image:alt" content="Naseby Apartments - Favicon" />
42<!-- / The SEO Framework by Sybre Waaijer | 3.20ms meta | 0.58ms boot -->
43
44<link rel='dns-prefetch' href='//cdn-reach.hostinger.com' />
45<link rel='dns-prefetch' href='//cdn.jsdelivr.net' />
46<link rel='dns-prefetch' href='//apps.elfsight.com' />
47<link rel='dns-prefetch' href='//www.googletagmanager.com' />
48<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' />
49<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://nasebyapartments.co.nz/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fnasebyapartments.co.nz%2F" />
50<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://nasebyapartments.co.nz/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fnasebyapartments.co.nz%2F&#038;format=xml" />
51<style id='wp-img-auto-sizes-contain-inline-css' type='text/css'>
52img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
53/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
54</style>
55
56<style id='wp-emoji-styles-inline-css' type='text/css'>
57
58	img.wp-smiley, img.emoji {
59		display: inline !important;
60		border: none !important;
61		box-shadow: none !important;
62		height: 1em !important;
63		width: 1em !important;
64		margin: 0 0.07em !important;
65		vertical-align: -0.1em !important;
66		background: none !important;
67		padding: 0 !important;
68	}
69/*# sourceURL=wp-emoji-styles-inline-css */
70</style>
71<link rel='stylesheet' id='wp-block-library-css' href='https://nasebyapartments.co.nz/wp-includes/css/dist/block-library/style.min.css?ver=6.9.9' type='text/css' media='all' />
72
73<style id='classic-theme-styles-inline-css' type='text/css'>
74/*! This file is auto-generated */
75.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
76/*# sourceURL=/wp-includes/css/classic-themes.min.css */
77</style>
78<style id='global-styles-inline-css' type='text/css'>
79:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
790) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
79.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
80/*# sourceURL=global-styles-inline-css */
81</style>
82
83<link rel='stylesheet' id='contact-form-7-css' href='https://nasebyapartments.co.nz/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.1.4' type='text/css' media='all' />
84<link rel='stylesheet' id='wpcf7-redirect-script-frontend-css' href='https://nasebyapartments.co.nz/wp-content/plugins/wpcf7-redirect/build/assets/frontend-script.css?ver=2c532d7e2be36f6af233' type='text/css' media='all' />
85<link rel='stylesheet' id='naseby-style-css' href='https://nasebyapartments.co.nz/wp-content/themes/naseby-theme/style.css?ver=1773367812' type='text/css' media='all' />
86<link rel='stylesheet' id='glightbox-css-css' href='https://nasebyapartments.co.nz/wp-content/themes/naseby-theme/css/glightbox.min.css?ver=6.9.9' type='text/css' media='all' />
87<link rel='stylesheet' id='swiper-css-css' href='https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css?ver=11.0.0' type='text/css' media='all' />
88<link rel='stylesheet' id='font-awesome-6-css' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css?ver=6.5.1' type='text/css' media='all' />
89<style id='wp-block-heading-inline-css' type='text/css'>
90h1:where(.wp-block-heading).has-background,h2:where(.wp-block-heading).has-background,h3:where(.wp-block-heading).has-background,h4:where(.wp-block-heading).has-background,h5:where(.wp-block-heading).has-background,h6:where(.wp-block-heading).has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg}
91/*# sourceURL=https://nasebyapartments.co.nz/wp-includes/blocks/heading/style.min.css */
92</style>
93<link rel='stylesheet' id='popup-maker-site-css' href='//nasebyapartments.co.nz/wp-content/uploads/pum/pum-site-styles.css?generated=1765879952&#038;ver=1.25.0' type='text/css' media='all' />
94<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
vendor: 1 bytes, line 94
94
95<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
vendor: 1 bytes, line 95
95
96<script type="text/javascript" src="https://apps.elfsight.com/p/platform.js" id="elfsight-platform-js" defer="defer" data-wp-strategy="defer"></script>
96
97
98<!-- Google tag (gtag.js) snippet added by Site Kit -->
99<!-- Google Analytics snippet added by Site Kit -->
vendor: 81 bytes, lines 99-100
99
100<script type="text/javascript" src="https://www.googletagmanager.com/gtag/js?id=
100GT-B7DVP7J9
vendor: 40 bytes, line 100
100" id="google_gtagjs-js" async></script>
101<script type="text/javascript" id="google_gtagjs-js-after">
102/* <![CDATA[ */
103window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}
104gtag("set","linker",{"domains":["nasebyapartments.co.nz"]});
105gtag("js", new Date());
106gtag("set", "developer_id.dZTNiMT", true);
107gtag("config", "GT-B7DVP7J9");
108 window._googlesitekit = window._googlesitekit || {}; window._googlesitekit.throttledEvents = []; window._googlesitekit.gtagEvent = (name, data) => { var key = JSON.stringify( { name, data } ); if ( !! window._googlesitekit.throttledEvents[ key ] ) { return; } window._googlesitekit.throttledEvents[ key ] = true; setTimeout( () => { delete window._googlesitekit.throttledEvents[ key ]; }, 5 ); gtag( "event", name, { ...data, event_source: "site-kit" } ); }; 
109//# sourceURL=google_gtagjs-js-after
110/* ]]> */
111</script>
111
112<link rel="https://api.w.org/" href="https://nasebyapartments.co.nz/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://nasebyapartments.co.nz/wp-json/wp/v2/pages/38" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://nasebyapartments.co.nz/xmlrpc.php?rsd" />
113<meta name="generator" content="Site Kit by Google 1.187.0" /><meta name="google-site-verification" content="zqLkEH62OnWfYXKiHQW-PFnq0M8EaaqgzeaLu1IUxds">
114<!-- Google Tag Manager snippet added by Site Kit -->
115<script type="text/javascript">
116/* <![CDATA[ */
vendor: 421 bytes, lines 116-126
116
117
118			( function( w, d, s, l, i ) {
119				w[l] = w[l] || [];
120				w[l].push( {'gtm.start': new Date().getTime(), event: 'gtm.js'} );
121				var f = d.getElementsByTagName( s )[0],
122					j = d.createElement( s ), dl = l != 'dataLayer' ? '&l=' + l : '';
123				j.async = true;
124				j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
125				f.parentNode.insertBefore( j, f );
126			} )( window, document, 'script', 'dataLayer', '
126GTM-NJRMGKGJ
vendor: 9 bytes, lines 126-127
126' );
127			
128/* ]]> */
129</script>
129
130
131<!-- End Google Tag Manager snippet added by Site Kit -->
132<link rel="icon" href="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/Naseby-Favicon-150x150.png" sizes="32x32" />
133<link rel="icon" href="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/Naseby-Favicon-300x300.png" sizes="192x192" />
134<link rel="apple-touch-icon" href="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/Naseby-Favicon-300x300.png" />
135<meta name="msapplication-TileImage" content="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/Naseby-Favicon-300x300.png" />
136
137</head>
138<body class="home wp-singular page-template-default page page-id-38 wp-theme-naseby-theme">
139		<!-- Google Tag Manager (noscript) snippet added by Site Kit -->
vendor: 74 bytes, lines 139-141
139
140		<noscript>
141			<iframe src="https://www.googletagmanager.com/ns.html?id=
141GTM-NJRMGKGJ
vendor: 88 bytes, lines 141-143
141" height="0" width="0" style="display:none;visibility:hidden"></iframe>
142		</noscript>
143		
143<!-- End Google Tag Manager (noscript) snippet added by Site Kit -->
144		
145
146<header>
147    <div class="header-inner">
148        <a href="https://nasebyapartments.co.nz" class="logo-block">
149		<img
150		  src="https://nasebyapartments.co.nz/wp-content/uploads/2026/01/NasebyApartments-Logo_white.webp"
151		  alt="Naseby Apartments"
152		  class="logo-img"
153		  decoding="async"
154		  fetchpriority="high">
155        </a>
156        <input type="checkbox" id="nav-toggle" class="nav-toggle">
157        <label for="nav-toggle" class="nav-toggle-label">
158            <span></span>
159        </label>
160        <div class="header-right">
161            <nav>
162                <a href="https://nasebyapartments.co.nz">Home</a>
163                <a href="https://nasebyapartments.co.nz/apartments">Apartments</a>
164
165                <div class="nav-dropdown">
166				<a href="https://nasebyapartments.co.nz/things-to-do" class="nav-parent nav-parent-desktop">
167					Things to do
168					<span class="nav-arrow" aria-hidden="true"></span>
169				</a>
170
171				<input type="checkbox" id="nav-ttd-toggle" class="nav-sub-toggle">
172				<label for="nav-ttd-toggle" class="nav-parent nav-parent-mobile">
173					Things to do
174					<span class="nav-arrow" aria-hidden="true"></span>
175				</label>
176
177				<div class="nav-dropdown-menu">
178					<a href="https://nasebyapartments.co.nz/things-to-do">All things to do</a>
179					<a href="https://nasebyapartments.co.nz/things-to-do-outdoor-and-offroad-adventures">Outdoor & off-road adventures</a>
180					<a href="https://nasebyapartments.co.nz/things-to-do-mountain-biking-rail-trail">Mountain biking & Rail Trail</a>
181					<a href="https://nasebyapartments.co.nz/things-to-do-winter-in-naseby">Winter in Naseby</a>
182					<a href="https://nasebyapartments.co.nz/things-to-do-family-holidays">Family holidays</a>
183					<a href="https://nasebyapartments.co.nz/things-to-do-couples-and-quiet-stays">Couples and quiet stays</a>
184					<a href="https://nasebyapartments.co.nz/things-to-do-stargazing-dark-sky">Stargazing &amp; Dark Sky</a>
185				</div>
186			</div>
187
188                <a href="https://nasebyapartments.co.nz/groups-and-events">Groups and events</a>
189                <a href="https://nasebyapartments.co.nz/guest-information">Guest information</a>
190                <a href="https://nasebyapartments.co.nz/gallery">Gallery</a>
191                <a href="https://nasebyapartments.co.nz/contact">Contact</a>
192            </nav>
193			<a href="https://bookdirect.prenohq.com/inst/#home?propertyId=322IjZU1dvfHx0zvHyAnjU2MDc5MyI=&#038;JDRN=Y" class="btn-primary">Book now</a>
194		</div>
195    </div>
196</header>
197
198
199<section class="hero">
200    <div class="hero-inner">
201                <div class="smart-placeholder hero-type">
202                                                <img width="1024" height="765" src="https://nasebyapartments.co.nz/wp-content/uploads/2026/01/Naseby-apartments-mountains.webp" class="hero-image" alt="Naseby Apartments with surrounding forest" loading="eager" fetchpriority="high" decoding="async" sizes="(max-width: 900px) calc(100vw - 48px), 470px" srcset="https://nasebyapartments.co.nz/wp-content/uploads/2026/01/Naseby-apartments-mountains.webp 1024w, https://nasebyapartments.co.nz/wp-content/uploads/2026/01/Naseby-apartments-mountains-300x224.webp 300w, https://nasebyapartments.co.nz/wp-content/uploads/2026/01/Naseby-apartments-mountains-768x574.webp 768w" />                                    </div>
203        <div class="hero-text">
204            <h1>Naseby Apartments - self-contained accommodation in Naseby, Central Otago</h1>
205            <div class="intro-text"><p><strong>Naseby Apartments (formerly Naseby Lodge)</strong> offer self-contained accommodation with a natural sense of space, comfort and serenity on the grounds of the old Naseby School, right in the heart of the historic alpine town of Naseby. Set 2,000 ft above worry level in the Maniototo region, you can settle into your own apartment with quiet forest and the wider Central Otago landscapes all within easy reach.</p></div>
206            <div class="hero-support"><p>Perfect for couples, families and groups looking for a space to unwind, clear night skies and a genuinely relaxed stay.</p></div>
207
208            <div class="hero-cta">
209                <a href="https://nasebyapartments.co.nz/apartments" class="btn-primary">View apartments</a>
210                <a href="https://nasebyapartments.co.nz/things-to-do" class="btn-secondary">See things to do in Naseby</a>
211            </div>
212        </div>
213    </div>
214</section>
215
216
217<div class="booking-widget-wrapper">
218  <h2 class="booking-widget-header">Book direct</h2>
219
220  <div id="quickbook-widget-962NTh07AkpzrbiuLqDXOtFU11rTrdqqwDv1O3QOBWkeJH2peiVP7YwNzkz-962NTh07AkpzrbiuLqDXOtFU11rTrdqqwDv1O3QOBWkeJH2peiVP7YwNzkz" 
220class="Configure-quickBook-Widget"></div>
221
222  <div class="booking-widget-loading">Loading reservation widget…</div>
223
224  <div class="booking-widget-timeout-message">
225    This is taking longer than usual. Use the booking page:
226  </div>
227
228  <a class="booking-widget-fallback-link" href="https://bookdirect.prenohq.com/inst/#home?propertyId=322IjZU1dvfHx0zvHyAnjU2MDc5MyI=&#038;JDRN=Y">
229      Open booking page
230  </a>
231
232      <a class="booking-agent-login-link" href="#popmake-1272">
233      Agent login
234    </a>
235  </div>
236
237
238<script src="https://bookdirect.prenohq.com/cwplugin/displaywidget/preview/booking-service.min.js?propertyId=962NTh07AkpzrbiuLqDXOtFU11rTrdqqwDv1O3QOBWkeJH2peiVP7YwNzkz&scriptId=962NTh07AkpzrbiuLqDXOtFU11rTrdqqwDv1O3QOBWkeJH2peiVP7YwNzkz" id="propInfo" defer></script>
238
239
240<script>
241(function () {
242  function getTimeoutMs() {
243    var base = 30000;
244    try {
245      var c = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
246      if (!c || !c.effectiveType) return base;
247      var t = String(c.effectiveType).toLowerCase();
248      if (t === "slow-2g") return 75000;
249      if (t === "2g") return 60000;
250      if (t === "3g") return 45000;
251      if (t === "4g") return 30000;
252      return base;
253    } catch (e) {
254      return base;
255    }
256  }
257
258  function initOne(wrapper) {
259    if (!wrapper || wrapper.dataset.widgetInit === "1") return;
260
261    var widget = wrapper.querySelector(".Configure-quickBook-Widget");
262    if (!widget) return;
263
264    wrapper.dataset.widgetInit = "1";
265
266    var FAIL_AFTER_MS = getTimeoutMs();
267    var HARD_STOP_MS = 180000;
268
269    function isWidgetReady() {
270      if (widget.querySelector(".MbsSearchWidget")) return true;
271      if (widget.querySelector(".App")) return true;
272      if (widget.children && widget.children.length > 0) return true;
273      return false;
274    }
275
276    function insertCustomLink() {
277      if (window.innerWidth <= 768) return;
278
279      var inputRoomDiv = widget.querySelector(".input.inputRoom");
280      if (!inputRoomDiv) return;
281
282      if (inputRoomDiv.querySelector(".custom-add-apartment-link")) return;
283
284      var link = document.createElement("div");
285      link.className = "custom-add-apartment-link";
286      link.innerText = "+ Add apartments";
287
288      link.addEventListener("click", function () {
289        var originalBtn = widget.querySelector(".input.inputRoom .d-flex.checkinDate > span");
290        if (originalBtn) originalBtn.click();
291      });
292
293      inputRoomDiv.appendChild(link);
294    }
295
296    function updateCustomLinkState() {
297      if (window.innerWidth <= 768) return;
298
299      var originalBtn = widget.querySelector(".input.inputRoom .d-flex.checkinDate > span");
300      var customLink = widget.querySelector(".custom-add-apartment-link");
301
302      if (originalBtn && customLink) {
303        var currentText = (originalBtn.innerText || "").trim();
304        customLink.style.display = (currentText === "+") ? "block" : "none";
305      }
306    }
307
308    function markAsLoaded() {
309      wrapper.classList.add("booking-widget-loaded");
310      wrapper.classList.remove("booking-widget-timeout");
311      insertCustomLink();
312      updateCustomLinkState();
313    }
314
315    function markAsTimeout() {
316      wrapper.classList.add("booking-widget-timeout");
317    }
318
319    if (isWidgetReady()) {
320      markAsLoaded();
321      return;
322    }
323
324    var startedAt = Date.now();
325    var timeoutShown = false;
326
327    function scan() {
328      if (isWidgetReady()) {
329        markAsLoaded();
330        return true;
331      }
332
333      var elapsed = Date.now() - startedAt;
334      if (!timeoutShown && elapsed >= FAIL_AFTER_MS) {
335        timeoutShown = true;
336        markAsTimeout();
337      }
338
339      return false;
340    }
341
342    var observer = new MutationObserver(function () {
343      if (scan()) {
344        observer.disconnect();
345      } else {
346        insertCustomLink();
347        updateCustomLinkState();
348      }
349    });
350
351    observer.observe(widget, { childList: true, subtree: true });
352
353    var poll = setInterval(function () {
354      if (scan()) {
355        clearInterval(poll);
356        observer.disconnect();
357        return;
358      }
359
360      if ((Date.now() - startedAt) >= HARD_STOP_MS) {
361        clearInterval(poll);
362        observer.disconnect();
363      }
364    }, 700);
365
366    window.addEventListener("resize", function () {
367      insertCustomLink();
368      updateCustomLinkState();
369    });
370  }
371
372  function initAll() {
373    var list = document.querySelectorAll(".booking-widget-wrapper");
374    for (var i = 0; i < list.length; i++) initOne(list[i]);
375  }
376
377  if (document.readyState === "loading") {
378    document.addEventListener("DOMContentLoaded", initAll);
379  } else {
380    initAll();
381  }
382
383  setTimeout(initAll, 0);
384})();
385</script>
385
386
387
388
389
390    <main>
391        <section id="why-stay">
392            <h2>Why stay at Naseby Apartments</h2>
393            <p>Naseby is known for its calm atmosphere, star-filled skies and easy access to forest walks, mountain biking and iconic Central Otago scenery. From our apartments you can reach the town, the forest and local attractions within minutes, with biking trails and offroad routes close by for anyone wanting more adventure.</p>
394<p>Our self-contained apartments are designed for longer stays as well as short breaks. You can settle in, cook your own meals, catch up on a series, or simply sit with a book and enjoy the quiet.</p>
395            <h3>Key benefits</h3>
396            <ul>
397<li>Self-contained 1 and 2 bedroom apartments with separate living areas</li>
398<li>Fully equipped kitchens for easy self-catering</li>
399<li>Fast Wi-Fi and smart TVs for evenings in</li>
400<li>Warm, insulated apartments for winter stays and cool summer nights</li>
401<li>Located in New Zealand’s first International Dark Sky Community, perfect for stargazing right from your apartment deck</li>
402<li>On-site parking and level access to most apartments</li>
403<li>Peaceful setting close to forest tracks and town amenities</li>
404<li>Proudly 100% NZ owned and operated</li>
405</ul>
406            <p class="inline-cta">Learn more about our apartment types on the <a href="https://nasebyapartments.co.nz/apartments">Apartments page</a>. You can also browse more photos of the apartments and surroundings in our <a href="https://nasebyapartments.co.nz/gallery">gallery</a>.</p>
407        </section>
408
409        <section id="stay-longer">
410            <h2>Make the most of your stay</h2>
411            <p>We recommend staying 2-3 nights to truly unwind without rushing. It gives you time to settle in, walk in the forest, try an activity or two, and explore nearby towns like Ranfurly, Alexandra and Clyde. Historic villages such as Ophir are just a short drive away, adding even more to discover.</p>
412
413<p>Staying longer also increases your chances of a clear night for stargazing. Naseby sits within New Zealand’s first International Dark Sky Community, so on a good night you can step outside and see a bright, detailed night sky right from your deck.</p>
414            <p class="inline-cta">Plan a stay that gives you time to unwind, and check availability for your preferred dates on the <a href="https://nasebyapartments.co.nz/apartments">Apartments page</a>. For practical details before you arrive, see our <a href="https://nasebyapartments.co.nz/guest-information">Guest information</a> page.</p>
415        </section>
416
417        <section id="apartments">
418            <h2>Spacious, easy-going apartments</h2>
419            <div class="activity-block">
420                <div class="two-column two-column-right">
421                    <div>
422                        <p>Whether you are here to ride the trails, curl on ice, explore Central Otago or simply rest, our apartments are set up to make things easy. Arrive, unpack, stock the fridge and treat Naseby as your own quiet base in the hills.</p>                        <ul>
423<li>Six spacious one-bedroom apartments - ideal for singles and couples</li>
424<li>Two generous two-bedroom apartments - perfect for families and small groups</li>
425<li>All apartments include kitchens, dining space and comfortable lounges</li>
426</ul>                        
427                        <div class="inline-cta">
428                            <a href="https://nasebyapartments.co.nz/apartments" class="btn-primary">View apartment options</a>
429                        </div>
430                    </div>
431                    <div class="image-col image-col-right">
432					<div class="smart-placeholder side-type">
433					                            <img src="https://nasebyapartments.co.nz/wp-content/uploads/2026/01/Exterior7.webp" alt="Patio - One-Bedroom Garden Apartment" >
434                        					</div>
435					</div>
436                </div>
437            </div>
438        </section>
439		
440		<section id="guest-reviews" class="reviews-block">
441		<div class="elfsight-app-0b6d73e2-3aaa-4f7b-86d8-31378d54634a"></div>
442		</section>
443
444 <section id="things-to-do">
445    <h2>Explore Naseby and Central Otago</h2>
446    <p>Naseby makes it easy to explore the outdoors, enjoy forest trails and discover the area’s gold-mining heritage at your own pace. From quiet paths and high-country scenery to crystal-clear night skies, everything sits within a short walk or drive from your apartment.</p>
447    <div class="tiles-row">
448        <!-- Tile 1 -->
449        <a class="tile" href="https://nasebyapartments.co.nz/things-to-do-outdoor-and-offroad-adventures">
450            <div class="smart-placeholder tile-type">
451                                    <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/11/OutdoorAdventures.webp" alt="4WD tracks in the Maniototo scenery" class="tile-image">
452                            </div>
453            <div class="tile-content">
454                <div class="tile-title">Outdoor and off-road adventures</div>
455                <p>Forest paths, backcountry roads and easy 4WD routes open the landscape for slow exploring, scenic loops and simple outdoor time.</p>                <p class="inline-cta"><span class="fake-link">Learn more about outdoor and off-road adventures</span></p>
456            </div>
457        </a>
458        
459        <!-- Tile 2 -->
460        <a class="tile" href="https://nasebyapartments.co.nz/things-to-do-mountain-biking-rail-trail">
461            <div class="smart-placeholder tile-type">
462                                    <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/11/RailTrail.webp" alt="Bikers riding the Central Otago Rail Trail" class="tile-image">
463                            </div>
464            <div class="tile-content">
465                <div class="tile-title">Mountain biking &amp; Rail Trail</div>
466                <p>A blend of shaded forest riding, wide Rail Trail views and peaceful backroads gives you multiple ways to explore on two wheels.</p>                <p class="inline-cta"><span class="fake-link">Learn more about mountain biking and rail trail</span></p>
467            </div>
468        </a>
469
470        <!-- Tile 3 -->
471        <a class="tile" href="https://nasebyapartments.co.nz/things-to-do-winter-in-naseby">
472            <div class="smart-placeholder tile-type">
473                                    <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/11/WinterInNaseby.webp" alt="Family ice skating at Maniototo Adventure Park" class="tile-image">
474                            </div>
475            <div class="tile-content">
476                <div class="tile-title">Winter in Naseby</div>
477                <p>Winter in this small alpine town will surprise you with ice skating, the only dedicated curling stadium in the Southern Hemisphere, the famous ice luge and crisp forest walks, followed by quiet, cosy evenings in a warm apartment.</p>                <p class="inline-cta"><span class="fake-link">Learn more about winter in Naseby</span></p>
478            </div>
479        </a>
480        
481        <!-- Tile 4 -->
482        <a class="tile" href="https://nasebyapartments.co.nz/things-to-do-family-holidays">
483            <div class="smart-placeholder tile-type">
484                                    <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/11/FamilyHolidays.webp" alt="Family enjoying the afternoon at the Naseby swimming dem" class="tile-image">
485                            </div>
486            <div class="tile-content">
487                <div class="tile-title">Family holidays</div>
488                <p>Gentle biking, forest walks, summer swimming and the local Maniototo Adventure Park make Naseby ideal for family-friendly adventures with lots to discover.</p>                <p class="inline-cta"><span class="fake-link">Learn more about family holidays</span></p>
489            </div>
490        </a>
491        
492        <!-- Tile 5 -->
493        <a class="tile" href="https://nasebyapartments.co.nz/things-to-do-couples-and-quiet-stays">
494            <div class="smart-placeholder tile-type">
495                                    <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/11/Couples.webp" alt="Couple walking in Naseby forest" class="tile-image">
496                            </div>
497            <div class="tile-content">
498                <div class="tile-title">Couples and quiet stays</div>
499                <p>Slow mornings, forest walks, gentle evenings and clear night skies make Naseby a perfect place to unwind in your own way.</p>                <p class="inline-cta"><span class="fake-link">Learn more about couples and quiet stays</span></p>
500            </div>
501        </a>
502
503        <!-- Tile 6 -->
504        <a class="tile" href="https://nasebyapartments.co.nz/things-to-do-stargazing-dark-sky">
505            <div class="smart-placeholder tile-type">
506                                    <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/11/NightSky.webp" alt="Stargazing at Naseby during a clear night" class="tile-image">
507                            </div>
508            <div class="tile-content">
509                <div class="tile-title">Stargazing and Dark Sky</div>
510                <p>Naseby forms part of New Zealand’s first International Dark Sky Community, offering some of the clearest night skies in the country. On a still night you can see the Milky Way in striking detail right from your apartment deck.</p>                <p class="inline-cta"><span class="fake-link">Learn more about stargazing and dark sky</span></p>
511            </div>
512        </a>
513    </div>
514
515            <div class="tile tile-spacer"></div>
516            <p class="inline-cta" style="margin-top:16px;">See an overview of all activities on the <a href="https://nasebyapartments.co.nz/things-to-do">Things to do page</a>.</p>
517        </section>
518
519        <section id="groups-events">
520            <h2>Groups and events</h2>
521             <p>Naseby Apartments can host small groups looking for a quiet place to stay together with plenty of space. We often host team retreats, sports groups, cycling crews, motorbike groups exploring Central Otago and extended family gatherings - giving everyone their own space with the convenience of staying on one site.</p>
522            <p>Our property includes a licensed restaurant for event use, suitable for tailor-made dinners, private functions or group catering. We also have our own conference centre, accommodating up to 50 delegates, making Naseby Apartments a practical option for small meetings, training sessions and focused work retreats.</p>
523            <p>The combination of multiple apartments, shared outdoor areas and dedicated event spaces makes it easy to balance time together with plenty of personal space.</p>            <p class="inline-cta"><a href="https://nasebyapartments.co.nz/groups-and-events">Learn more about groups and events</a>.</p>
524        </section>
525
526        <section id="final-cta" class="final-cta">
527            <h2>Ready to plan your stay in Naseby?</h2>
528            <p>Make Naseby Apartments your quiet base in Central Otago. Whether you are planning an adventure, a quiet break or time with family, our spacious apartments have everything ready for you. Arrive, unpack, and let the relaxation begin. Book direct for our best rates and the most accurate availability.</p>			<h2></h2>
529					
530					<div class="final-cta-buttons">
531													<a href="https://bookdirect.prenohq.com/inst/#home?propertyId=322IjZU1dvfHx0zvHyAnjU2MDc5MyI=&#038;JDRN=Y" class="btn-primary">
532								Check availability and rates							</a>
533						
534													<a href="/contact" class="btn-secondary">
535								Contact us							</a>
536											</div>
537        </section>
538    </main>
539
540
541<script>
542    (function() {
543        document.body.classList.add('loaded');
544
545        const observerOptions = {
546            root: null,
547            rootMargin: '0px',
548            threshold: 0.1
549        };
550
551        const observer = new IntersectionObserver((entries, observerInstance) => {
552            entries.forEach(entry => {
553                if (entry.isIntersecting) {
554                    entry.target.classList.add('is-visible');
555                    observerInstance.unobserve(entry.target);
556                }
557            });
558        }, observerOptions);
559
560        const contentElements = document.querySelectorAll('section:not(.hero), .tile, .highlight-box, .gallery-item');
561
562        contentElements.forEach(el => {
563            observer.observe(el);
564
565            const rect = el.getBoundingClientRect();
566            if (rect.top < window.innerHeight * 0.9) {
567                el.classList.add('is-visible');
568            }
569        });
570
571        const placeholders = document.querySelectorAll('.smart-placeholder');
572        placeholders.forEach(el => {
573            const img = el.querySelector('img');
574            if (!img) {
575                el.classList.add('is-empty');
576            } else {
577                if (img.complete && img.naturalHeight !== 0) {
578                    el.classList.add('img-loaded');
579                } else {
580                    img.addEventListener('load', () => el.classList.add('img-loaded'));
581                    img.addEventListener('error', () => el.classList.add('is-empty'));
582                }
583            }
584        });
585
586        const navToggle = document.getElementById('nav-toggle');
587        if (navToggle) {
588            navToggle.addEventListener('change', function() {
589                if (this.checked) {
590                    document.body.classList.add('no-scroll');
591                } else {
592                    document.body.classList.remove('no-scroll');
593                }
594            });
595        }
596        
597        window.pageObserver = observer;
598    })();
599</script>
599
600
601
602    <footer class="site-footer">
603        <div class="footer-mountains" aria-hidden="true"></div>
604        
605        <div class="footer-content">
606            <div class="footer-inner">
607                
608                                <div class="footer-partners">
609                    <h4>Our Partners</h4>
610                    <div class="partners-grid">
611                                                    
612                                                            <a href="https://offroad.co.nz" target="_blank" rel="noopener" class="partner-item link-active">
613                                    <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/offroad-logo-high.webp" alt="offroad-logo-high" class="partner-logo-img">
614                                </a>
615                            
616                                                    
617                                                            <a href="https://maniototoadventurepark.co.nz" target="_blank" rel="noopener" class="partner-item link-active">
618                                    <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/Maniototo-Adventure-Park-Logo-Ice.webp" alt="Maniototo Adventure Park" class="partner-logo-img">
619                                </a>
620                            
621                                                    
622                                                            <a href="https://nzcycletrail.com" target="_blank" rel="noopener" class="partner-item link-active">
623                                    <img src="https://nasebyapartments.co.nz/wp-content/uploads/2026/03/Great-Rides_Official-Partner_Logo_White-Transparent_web.png" alt="Great-Rides_Official-Partner_Logo_White-Transparent_web" class="partner-logo-img">
624                                </a>
625                            
626                                                    
627                                                            <a href="https://www.centralotagonz.com/" target="_blank" rel="noopener" class="partner-item link-active">
628                                    <img src="https://nasebyapartments.co.nz/wp-content/uploads/2025/12/centralotago_logo.webp" alt="centralotago_logo" class="partner-logo-img">
629                                </a>
630                            
631                                            </div>
632                </div>
633                
634                <hr class="footer-divider">
635
636				<div class="footer-bottom">
637					<div class="copyright">
638						&copy; 2026 Naseby Apartments. All rights reserved.
639					</div>
640
641					<div class="footer-links">
642						<a href="https://nasebyapartments.co.nz/privacy-policy">Privacy Policy</a>
643													<span aria-hidden="true"> | </span>
644							<a href="#popmake-1272">Agent login</a>
645											</div>
646					
647					<div class="footer-socials">
648													<a href="https://www.facebook.com/people/Naseby-Lodge-2000ft-Restaurant/100054280400261" target="_blank" rel="noopener" class="social-icon facebook" aria-label="Follow us on Facebook">
649								<i class="fa-brands fa-facebook-f" aria-hidden="true"></i>
650							</a>
651						
652						
653											</div>
654				</div>
655                
656            </div>
657        </div>
658    </footer>
659
660    
660<script>
661    (function() {
662        const footer = document.querySelector('.site-footer');
663        if (footer && window.pageObserver) {
664            window.pageObserver.observe(footer);
665        }
666        
667        const footerPlaceholders = document.querySelectorAll('.site-footer .smart-placeholder');
668        footerPlaceholders.forEach(el => {
669             const img = el.querySelector('img');
670             if(img && img.complete) el.classList.add('img-loaded');
671        });
672    })();
673    </script>
673
674
675    
675<script type="speculationrules">
676{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/naseby-theme/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
677</script>
677
678<div 
679	id="pum-1272" 
680	role="dialog" 
681	aria-modal="false"
682	class="pum pum-overlay pum-theme-1250 pum-theme-lightbox popmake-overlay click_open" 
683	data-popmake="{&quot;id&quot;:1272,&quot;slug&quot;:&quot;agent-login&quot;,&quot;theme_id&quot;:1250,&quot;cookies&quot;:[],&quot;triggers&quot;:[{&quot;type&quot;:&quot;click_open&quot;,&quot;settings&quot;:{&quot;cookie_name&quot;:&quot;&quot;,&quot;extra_selectors&quot;:&quot;&quot;}}],&quot;mobile_disabled&quot;:null,&quot;tablet_disabled&quot;:null,&quot;meta&quot;:{&quot;display&quot;:{&quot;stackable&quot;:false,&quot;overlay_disabled&quot;:false,&quot;scrollable_content&quot;:false,&quot;disable_reposition&quot;:false,&quot;size&quot;:&quot;small&quot;,&quot;responsive_min_width&quot;:&quot;0%&quot;,&quot;responsive_min_width_unit&quot;:false,&quot;responsive_max_width&quot;:&quot;80%&quot;,&quot;responsive_max_width_unit&quot;:false,&quot;custom_width&quot;:&quot;640px&quot;,&quot;custom_width_unit&quot;:false,&quot;custom_height&quot;:&quot;380px&quot;,&quot;custom_height_unit&quot;:false,&quot;custom_height_auto&quot;:false,&quot;location&quot;:&quot;center&quot;,&quot;position_from_trigger&quot;:false,&quot;position_top&quot;:&quot;100&quot;,&quot;position_left&quot;:&quot;0&quot;,&quot;position_bottom&quot;:&quot;0&quot;,&quot;position_right&quot;:&quot;0&quot;,&quot;position_fixed&quot;:false,&quot;animation_type&quot;:&quot;fade&quot;,&quot;animation_speed&quot;:&quot;350&quot;,&quot;animation_origin&quot;:&quot;center top&quot;,&quot;overlay_zindex&quot;:false,&quot;zindex&quot;:&quot;1999999999&quot;},&quot;close&quot;:{&quot;text&quot;:&quot;&quot;,&quot;button_delay&quot;:&quot;0&quot;,&quot;overlay_click&quot;:false,&quot;esc_press&quot;:false,&quot;f4_press&quot;:false},&quot;click_open&quot;:[]}}">
684
685	<div id="popmake-1272" class="pum-container popmake theme-1250 pum-responsive pum-responsive-small responsive size-small">
686
687				
688				
689		
690				<div class="pum-content popmake-content" tabindex="0">
691			
692<h3 class="wp-block-heading"></h3>
693
694
695
696<div class="wpcf7 no-js" id="wpcf7-f1260-o1" lang="en-GB" dir="ltr" data-wpcf7-id="1260">
697<div class="screen-reader-response"><p role="status" aria-live="polite" aria-atomic="true"></p> <ul></ul></div>
698<form action="/#wpcf7-f1260-o1" method="post" class="wpcf7-form init" aria-label="Contact form" novalidate="novalidate" data-status="init">
699<fieldset class="hidden-fields-container"><input type="hidden" name="_wpcf7" value="1260" /><input type="hidden" name="_wpcf7_version" value="6.1.4" /><input type="hidden" name="_wpcf7_locale" value="en_GB" /><input type="hidden" name="_wpcf7_unit_tag" value="wpcf7-f1260-o1" /><input type="hidden" name="_wpcf7_container_post" value="0" /><input type="hidden" name="_wpcf7_posted_data_hash" value="" />
700</fieldset>
701<div class="agent-login-form contact-form-wrapper">
702  <h3>Agent login</h3>
703
704  <div class="contact-form">
705    <div class="contact-form-grid">
706
707      <div class="contact-form-group full-width">
708        <span class="wpcf7-form-control-wrap" data-name="agent_code"><input size="40" maxlength="400" class="wpcf7-form-control wpcf7-text wpcf7-validates-as-required" id="agent_code" autocomplete="off" aria-required="true" aria-invalid="false" placeholder="Enter agent code" value="" type="text" name="agent_code" /></span>
709      </div>
710
711      <div class="contact-form-actions">
712        <input class="wpcf7-form-control wpcf7-submit has-spinner btn-primary" type="submit" value="Continue" />
713      </div>
714
715    </div>
716  </div>
717</div><input type='hidden' class='wpcf7-pum' value='{"closepopup":false,"closedelay":0,"openpopup":false,"openpopup_id":0}' /><div class="wpcf7-response-output" aria-hidden="true"></div>
718</form>
719</div>
720
721		</div>
722
723				
724							<button type="button" class="pum-close popmake-close" aria-label="Close">
725			x			</button>
726		
727	</div>
728
729</div>
730<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-includes/js/dist/hooks.min.js?ver=dd5603f07f9220ed27f1" id="wp-hooks-js"></script>
vendor: 1 bytes, line 730
730
731<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-includes/js/dist/i18n.min.js?ver=c26c3dc7bed366793375" id="wp-i18n-js"></script>
vendor: 1 bytes, line 731
731
732<script type="text/javascript" id="wp-i18n-js-after">
733/* <![CDATA[ */
734wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
735//# sourceURL=wp-i18n-js-after
736/* ]]> */
737</script>
vendor: 1 bytes, line 737
737
738<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.4" id="swv-js"></script>
vendor: 1 bytes, line 738
738
739<script type="text/javascript" id="contact-form-7-js-translations">
740/* <![CDATA[ */
741( function( domain, translations ) {
742	var localeData = translations.locale_data[ domain ] || translations.locale_data.messages;
743	localeData[""].domain = domain;
744	wp.i18n.setLocaleData( localeData, domain );
745} )( "contact-form-7", {"translation-revision-date":"2024-05-21 11:58:24+0000","generator":"GlotPress\/4.0.3","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural-forms":"nplurals=2; plural=n != 1;","lang":"en_GB"},"Error:":["Error:"]}},"comment":{"reference":"includes\/js\/index.js"}} );
746//# sourceURL=contact-form-7-js-translations
747/* ]]> */
748</script>
vendor: 1 bytes, line 748
748
749<script type="text/javascript" id="contact-form-7-js-before">
750/* <![CDATA[ */
751var wpcf7 = {
752    "api": {
753        "root": "https:\/\/nasebyapartments.co.nz\/wp-json\/",
754        "namespace": "contact-form-7\/v1"
755    },
756    "cached": 1
757};
758var wpcf7 = {
759    "api": {
760        "root": "https:\/\/nasebyapartments.co.nz\/wp-json\/",
761        "namespace": "contact-form-7\/v1"
762    },
763    "cached": 1
764};
765//# sourceURL=contact-form-7-js-before
766/* ]]> */
767</script>
vendor: 1 bytes, line 767
767
768<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.4" id="contact-form-7-js"></script>
vendor: 1 bytes, line 768
768
769<script type="text/javascript" id="wpcf7-redirect-script-js-extra">
770/* <![CDATA[ */
771var wpcf7r = {"ajax_url":"https://nasebyapartments.co.nz/wp-admin/admin-ajax.php"};
772//# sourceURL=wpcf7-redirect-script-js-extra
773/* ]]> */
774</script>
vendor: 1 bytes, line 774
774
775<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-content/plugins/wpcf7-redirect/build/assets/frontend-script.js?ver=2c532d7e2be36f6af233" id="wpcf7-redirect-script-js"></script>
vendor: 1 bytes, line 775
775
776<script type="text/javascript" src="https://cdn-reach.hostinger.com/js/embed.js" id="hostinger-reach-embed-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 776
776
777<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-content/themes/naseby-theme/js/glightbox.min.js?ver=1.0" id="glightbox-js-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 777
777
778<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js?ver=11.0.0" id="swiper-js-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 778
778
779<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3" id="jquery-ui-core-js"></script>
vendor: 1 bytes, line 779
779
780<script type="text/javascript" id="popup-maker-site-js-extra">
781/* <![CDATA[ */
782var pum_vars = {"version":"1.25.0","pm_dir_url":"https://nasebyapartments.co.nz/wp-content/plugins/popup-maker/","ajaxurl":"https://nasebyapartments.co.nz/wp-admin/admin-ajax.php","restapi":"https://nasebyapartments.co.nz/wp-json/pum/v1","rest_nonce":null,"default_theme":"1249","debug_mode":"","disable_tracking":"1","disable_url_params":"","home_url":"/","message_position":"top","core_sub_forms_enabled":"1","popups":[],"cookie_domain":"","paramNames":{"popup_id":"pid","cta":"cta","notrack":"notrack"}};
783var pum_sub_vars = {"ajaxurl":"https://nasebyapartments.co.nz/wp-admin/admin-ajax.php","message_position":"top"};
784var pum_popups = {"pum-1272":{"triggers":[{"type":"click_open","settings":{"cookie_name":"","extra_selectors":""}}],"cookies":[],"disable_on_mobile":false,"disable_on_tablet":false,"explain":null,"type_section":null,"theme_id":"1250","size":"small","responsive_min_width":"0%","responsive_max_width":"80%","custom_width":"640px","custom_height_auto":false,"custom_height":"380px","scrollable_content":false,"animation_type":"fade","animation_speed":"350","animation_origin":"center top","open_sound":"none","custom_sound":"","location":"center","position_top":"100","position_bottom":"0","position_left":"0","position_right":"0","position_from_trigger":false,"position_fixed":false,"overlay_disabled":false,"stackable":false,"disable_reposition":false,"zindex":"1999999999","close_button_delay":"0","close_on_form_submission":false,"close_on_form_submission_delay":"0","close_on_overlay_click":false,"close_on_esc_press":false,"close_on_f4_press":false,"disable_form_reopen":false,"disable_accessibility":false,"theme_slug":"lightbox","id":1272,"slug":"agent-login"}};
785//# sourceURL=popup-maker-site-js-extra
786/* ]]> */
787</script>
vendor: 1 bytes, line 787
787
788<script type="text/javascript" src="//nasebyapartments.co.nz/wp-content/uploads/pum/pum-site-scripts.js?defer&amp;generated=1765880027&amp;ver=1.25.0" id="popup-maker-site-js"></script>
vendor: 1 bytes, line 788
788
789<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-events-provider-contact-form-7-fac2a8013ba5ba355cd0.js" id="googlesitekit-events-provider-contact-form-7-js" defer></script>
vendor: 1 bytes, line 789
789
790<script type="text/javascript" id="googlesitekit-events-provider-content-events-js-before">
791/* <![CDATA[ */
792window._googlesitekit = window._googlesitekit || {};
793window._googlesitekit.contentEvents = {"postID":38,"isSinglePost":false,"hasVimeoEmbed":false};
794//# sourceURL=googlesitekit-events-provider-content-events-js-before
795/* ]]> */
796</script>
vendor: 1 bytes, line 796
796
797<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-events-provider-content-events-bb83c1a0aedefa5d25d1.js" id="googlesitekit-events-provider-content-events-js" defer></script>
vendor: 1 bytes, line 797
797
798<script type="text/javascript" src="https://nasebyapartments.co.nz/wp-content/plugins/google-site-kit/dist/assets/js/googlesitekit-events-provider-popup-maker-b946f1908d7c0c105eca.js" id="googlesitekit-events-provider-popup-maker-js" defer></script>
vendor: 1 bytes, line 798
798
799<script id="wp-emoji-settings" type="application/json">
800{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://nasebyapartments.co.nz/wp-includes/js/wp-emoji-release.min.js?ver=6.9.9"}}
801</script>
vendor: 1 bytes, line 801
801
802<script type="module">
803/* <![CDATA[ */
804/*! This file is auto-generated */
805var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
806//# sourceURL=https://nasebyapartments.co.nz/wp-includes/js/wp-emoji-loader.min.js
807/* ]]> */
808</script>
vendor: 1 bytes, line 808
808
809<script>window.NasebyElfsight={"ajaxUrl":"https://nasebyapartments.co.nz/wp-admin/admin-ajax.php","nonce":"c4e473975b","cached":{"ratingValue":4.4,"reviewCount":222,"updatedAt":1791267816}};</script>
809<script>(function() {
810  var debug = /[?&]schema_debug=1\b/.test(location.search);
811
812  function log() {
813    if (!debug) return;
814    try { console.log.apply(console, arguments); } catch (e) {}
815  }
816
817  function parseFloatSafe(v) {
818    if (v == null) return null;
819    var s = String(v).trim().replace(',', '.');
820    var n = parseFloat(s);
821    if (Number.isNaN(n)) return null;
822    return n;
823  }
824
825  function parseIntSafe(v) {
826    if (v == null) return null;
827    var s = String(v).replace(/,/g, '').trim();
828    var n = parseInt(s, 10);
829    if (Number.isNaN(n)) return null;
830    return n;
831  }
832
833  function clampRating5(n) {
834    if (n == null) return null;
835    if (n <= 0 || n > 5) return null;
836    return Math.round(n * 10) / 10;
837  }
838
839  function extractAllReviewsRating(widgetRoot) {
840    var els = widgetRoot.querySelectorAll('a, button, div, span, p, h1, h2, h3, h4, h5, h6');
841    for (var i = 0; i < els.length; i++) {
842      var t = (els[i].textContent || '').replace(/\s+/g, ' ').trim();
843      if (!t) continue;
844      if (/^All Reviews\b/i.test(t) || /\bAll Reviews\b/i.test(t)) {
845        var m = t.match(/(\d(?:[.,]\d)?)/);
846        if (m) {
847          var r = clampRating5(parseFloatSafe(m[1]));
848          if (r != null) return r;
849        }
850      }
851    }
852
853    var txt = (widgetRoot.textContent || '').replace(/\s+/g, ' ');
854    var m2 = txt.match(/All Reviews\s*(\d(?:[.,]\d)?)/i);
855    if (m2) {
856      var r2 = clampRating5(parseFloatSafe(m2[1]));
857      if (r2 != null) return r2;
858    }
859
860    return null;
861  }
862
863  function extractParenNumbers(widgetRoot) {
864    var txt = widgetRoot.textContent || '';
865    var re = /\((\d{1,7})\)/g;
866    var out = [];
867    var m;
868    while ((m = re.exec(txt)) !== null) {
869      var n = parseIntSafe(m[1]);
870      if (n != null) out.push(n);
871    }
872    return out;
873  }
874
875  function extractCountNearRatingParen(widgetRoot, ratingValue) {
876    if (ratingValue == null) return null;
877    var txt = (widgetRoot.textContent || '').replace(/\s+/g, ' ');
878    var rStr = String(ratingValue);
879    var re = new RegExp(rStr.replace('.', '[\\.,]') + '\\s*\\((\\d{1,7})\\)', 'g');
880
881    var max = null;
882    var m;
883    while ((m = re.exec(txt)) !== null) {
884      var n = parseIntSafe(m[1]);
885      if (n == null) continue;
886      if (max == null || n > max) max = n;
887    }
888    return max;
889  }
890
891  function extractMaxParenCount(widgetRoot) {
892    var nums = extractParenNumbers(widgetRoot);
893    if (!nums.length) return null;
894    var max = nums[0];
895    for (var i = 1; i < nums.length; i++) if (nums[i] > max) max = nums[i];
896    return max;
897  }
898
899  function collectAggregateRatings(obj, out) {
900    if (!obj) return;
901    if (Array.isArray(obj)) {
902      for (var i = 0; i < obj.length; i++) collectAggregateRatings(obj[i], out);
903      return;
904    }
905    if (typeof obj !== 'object') return;
906
907    if (obj.aggregateRating && typeof obj.aggregateRating === 'object') {
908      var ar = obj.aggregateRating;
909      var rv = clampRating5(parseFloatSafe(ar.ratingValue));
910      var rc = parseIntSafe(ar.reviewCount);
911      var rcc = parseIntSafe(ar.ratingCount);
912      var count = rc != null ? rc : (rcc != null ? rcc : null);
913      if (rv != null) out.push({ ratingValue: rv, reviewCount: count });
914    }
915
916    if (obj['@graph']) collectAggregateRatings(obj['@graph'], out);
917
918    for (var k in obj) {
919      if (!Object.prototype.hasOwnProperty.call(obj, k)) continue;
920      var v = obj[k];
921      if (v && typeof v === 'object') collectAggregateRatings(v, out);
922    }
923  }
924
925  function bestAggregateRatingFromJsonLd(json) {
926    var list = [];
927    collectAggregateRatings(json, list);
928    if (!list.length) return null;
929
930    var best = null;
931    for (var i = 0; i < list.length; i++) {
932      var item = list[i];
933      var score = item.reviewCount != null ? item.reviewCount : 0;
934      if (!best || score > (best.reviewCount != null ? best.reviewCount : 0)) best = item;
935    }
936    return best;
937  }
938
939  function updateBusinessSchema(ratingValue, reviewCount) {
940    var schemaScript = document.getElementById('naseby-business-schema');
941    if (!schemaScript) return false;
942
943    var schema;
944    try {
945      schema = JSON.parse(schemaScript.textContent || '{}');
946    } catch (e) {
947      return false;
948    }
949
950    var rv = clampRating5(parseFloatSafe(ratingValue));
951    if (rv == null) return false;
952
953    var rc = reviewCount != null ? parseIntSafe(reviewCount) : null;
954    if (rc != null && rc < 0) rc = null;
955
956    schema.aggregateRating = {
957      '@type': 'AggregateRating',
958      'ratingValue': rv,
959      'bestRating': 5,
960      'worstRating': 1
961    };
962
963    if (rc != null) schema.aggregateRating.reviewCount = rc;
964
965    schemaScript.textContent = JSON.stringify(schema);
966    return true;
967  }
968
969  function saveToServer(ratingValue, reviewCount) {
970    if (!window.NasebyElfsight || !window.NasebyElfsight.ajaxUrl) return;
971
972    var rv = clampRating5(parseFloatSafe(ratingValue));
973    if (rv == null) return;
974
975    var rc = reviewCount != null ? parseIntSafe(reviewCount) : null;
976
977    try {
978      var cached = window.NasebyElfsight.cached || {};
979      var crv = cached.ratingValue != null ? clampRating5(parseFloatSafe(cached.ratingValue)) : null;
980      var crc = cached.reviewCount != null ? parseIntSafe(cached.reviewCount) : null;
981
982      if (crv === rv && ((crc == null && rc == null) || crc === rc)) {
983        return;
984      }
985    } catch (e) {}
986
987    try {
988      window.NasebyElfsight.cached = window.NasebyElfsight.cached || {};
989      window.NasebyElfsight.cached.ratingValue = rv;
990      if (rc != null) window.NasebyElfsight.cached.reviewCount = rc;
991    } catch (e) {}
992
993    var body = new URLSearchParams();
994    body.set('action', 'naseby_save_aggregate_rating');
995    body.set('nonce', window.NasebyElfsight.nonce || '');
996    body.set('ratingValue', String(rv));
997    if (rc != null) body.set('reviewCount', String(rc));
998
999    fetch(window.NasebyElfsight.ajaxUrl, {
1000      method: 'POST',
1001      headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },
1002      body: body.toString(),
1003      credentials: 'same-origin'
1004    }).catch(function() {});
1005  }
1006
1007  function removeJsonLdScripts(widgetRoot) {
1008    var scripts = widgetRoot.querySelectorAll('script[type="application/ld+json"]');
1009    for (var i = 0; i < scripts.length; i++) {
1010      try { scripts[i].remove(); } catch (e) {}
1011    }
1012  }
1013
1014  function tryExtract(widgetRoot) {
1015    var uiRating = extractAllReviewsRating(widgetRoot);
1016    var parenNums = debug ? extractParenNumbers(widgetRoot) : null;
1017
1018    if (uiRating != null) {
1019      var c1 = extractCountNearRatingParen(widgetRoot, uiRating);
1020      var c2 = c1 != null ? c1 : extractMaxParenCount(widgetRoot);
1021      var method = c1 != null ? 'ui-rating-paren' : 'ui-max-paren';
1022
1023      return {
1024        ratingValue: uiRating,
1025        reviewCount: c2,
1026        source: method,
1027        parenNumbers: parenNums
1028      };
1029    }
1030
1031    var scripts = widgetRoot.querySelectorAll('script[type="application/ld+json"]');
1032    for (var i = 0; i < scripts.length; i++) {
1033      var txt = scripts[i].textContent || '';
1034      if (!txt) continue;
1035
1036      var json;
1037      try { json = JSON.parse(txt); } catch (e) { continue; }
1038
1039      var ar = bestAggregateRatingFromJsonLd(json);
1040      if (ar && ar.ratingValue != null) {
1041        return {
1042          ratingValue: ar.ratingValue,
1043          reviewCount: ar.reviewCount,
1044          source: 'jsonld',
1045          parenNumbers: parenNums
1046        };
1047      }
1048    }
1049
1050    return null;
1051  }
1052
1053  function init() {
1054    var widgetHosts = document.querySelectorAll('[class*="elfsight-app-"]');
1055    if (!widgetHosts || !widgetHosts.length) return;
1056
1057    var best = { ratingValue: null, reviewCount: null, source: null };
1058    var startedAt = Date.now();
1059    var maxMs = 15000;
1060
1061    function shouldUpdate(next) {
1062      if (!next || next.ratingValue == null) return false;
1063
1064      var nextCount = next.reviewCount != null ? parseIntSafe(next.reviewCount) : null;
1065      var bestCount = best.reviewCount != null ? parseIntSafe(best.reviewCount) : null;
1066
1067      if (best.ratingValue == null) return true;
1068
1069      if (next.ratingValue !== best.ratingValue) return true;
1070
1071      if (nextCount != null && (bestCount == null || nextCount > bestCount)) return true;
1072
1073      return false;
1074    }
1075
1076    function apply(next) {
1077      var nextCount = next.reviewCount != null ? parseIntSafe(next.reviewCount) : null;
1078
1079      var ok = updateBusinessSchema(next.ratingValue, nextCount);
1080      if (!ok) return false;
1081
1082      saveToServer(next.ratingValue, nextCount);
1083      for (var j = 0; j < widgetHosts.length; j++) {
1084        removeJsonLdScripts(widgetHosts[j]);
1085      }
1086
1087      best = {
1088        ratingValue: next.ratingValue,
1089        reviewCount: nextCount,
1090        source: next.source
1091      };
1092
1093      window.NasebySchemaDebug = {
1094        ts: new Date().toISOString(),
1095        ratingValue: next.ratingValue,
1096        reviewCount: nextCount,
1097        source: next.source,
1098        parenNumbers: next.parenNumbers || null
1099      };
1100
1101      log('[NasebySchema] update', window.NasebySchemaDebug);
1102      return true;
1103    }
1104
1105    function scanAll() {
1106      for (var i = 0; i < widgetHosts.length; i++) {
1107        var next = tryExtract(widgetHosts[i]);
1108        if (shouldUpdate(next)) {
1109          apply(next);
1110        } else if (debug && next) {
1111          log('[NasebySchema] seen', next);
1112        }
1113      }
1114    }
1115
1116    scanAll();
1117
1118    var observer = new MutationObserver(function() {
1119      scanAll();
1120      if ((Date.now() - startedAt) > maxMs) observer.disconnect();
1121    });
1122
1123    observer.observe(document.documentElement, { childList: true, subtree: true });
1124
1125    setTimeout(function() {
1126      scanAll();
1127      observer.disconnect();
1128    }, maxMs);
1129  }
1130
1131  if (document.readyState === 'loading') {
1132    document.addEventListener('DOMContentLoaded', init);
1133  } else {
1134    init();
1135  }
1136})();</script>
1136
1137	
1137<script>
1138	function initGLightbox() {
1139		if (typeof GLightbox !== 'undefined') {
1140			GLightbox({ selector: '.glightbox' });
1141		}
1142	}
1143	if (document.readyState === 'loading') {
1144		document.addEventListener('DOMContentLoaded', initGLightbox);
1145	} else {
1146		initGLightbox();
1147	}
1148	</script>
1148
1149</body>
1150</html>
1151
1152
1153<!-- Page uncached by LiteSpeed Cache 7.9.1 on 2026-10-07 08:59:18 -->

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.