terms.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <title>Terms of Use — Tasmanian Planning Scheme Assistant</title>
  7. <meta name="description" content="Terms of Use for the Tasmanian Planning Scheme Assistant website and services. Please read these terms carefully before using the site.">
  8. <link rel="canonical" href="https://tasplanning.report/terms">
  9. <meta name="robots" content="index,follow,max-snippet:-1,max-image-preview:large,max-video-preview:-1">
  10. <meta name="keywords" content="Terms of Use, TPS Assistant, Tasmanian Planning Scheme, SPP, LPS, planning information, Tasmania">
  11. <link rel="preconnect" href="https://fonts.googleapis.com">
  12. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  13. <link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;1,9..40,300&display=swap" rel="stylesheet">
  14. <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css" rel="stylesheet">
  15. <link rel="icon" href="/favicon.ico">
  16. <link rel="apple-touch-icon" href="/image/apple-touch-icon.png">
  17. <style>
  18. :root {
  19. --bg: #0b0f0e;
  20. --bg-1: #111614;
  21. --bg-2: #181e1b;
  22. --bg-card: #141a17;
  23. --border: rgba(255,255,255,0.07);
  24. --border-hover: rgba(255,255,255,0.14);
  25. --accent: #2ddc8a;
  26. --accent-dim: rgba(45,220,138,0.10);
  27. --warn-dim: rgba(240,192,96,0.08);
  28. --warn: #f0c060;
  29. --text-primary: #eaf0ec;
  30. --text-secondary:#8fa899;
  31. --text-muted: #4f6459;
  32. --serif: 'DM Serif Display', Georgia, serif;
  33. --sans: 'DM Sans', system-ui, sans-serif;
  34. --radius: 10px;
  35. --radius-lg: 16px;
  36. --transition: 0.16s cubic-bezier(0.4,0,0.2,1);
  37. }
  38. *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
  39. html { scroll-behavior: smooth; }
  40. body {
  41. font-family: var(--sans);
  42. background: var(--bg);
  43. color: var(--text-primary);
  44. font-size: 16px;
  45. line-height: 1.7;
  46. -webkit-font-smoothing: antialiased;
  47. min-height: 100vh;
  48. }
  49. ::selection { background: var(--accent); color: #0b0f0e; }
  50. a { color: var(--accent); text-decoration: none; transition: opacity var(--transition); }
  51. a:hover { opacity: 0.8; }
  52. /* ── Nav ─────────────────────────────────────────────────────────── */
  53. .site-nav {
  54. position: sticky; top: 0; z-index: 100;
  55. background: rgba(11,15,14,0.92);
  56. backdrop-filter: blur(12px);
  57. border-bottom: 1px solid var(--border);
  58. }
  59. .nav-inner {
  60. max-width: 900px; margin: 0 auto; padding: 0 24px;
  61. display: flex; align-items: center; justify-content: space-between;
  62. height: 56px;
  63. }
  64. .nav-brand {
  65. display: flex; align-items: center; gap: 9px;
  66. font-size: 0.88rem; font-weight: 500;
  67. color: var(--text-primary); text-decoration: none;
  68. }
  69. .nav-links { display: flex; align-items: center; gap: 4px; }
  70. .nav-links a {
  71. font-size: 0.82rem; color: var(--text-secondary);
  72. padding: 5px 11px; border-radius: 5px; text-decoration: none;
  73. transition: all var(--transition);
  74. }
  75. .nav-links a:hover { color: var(--text-primary); background: rgba(255,255,255,0.05); opacity: 1; }
  76. .nav-links a.active { color: var(--accent); }
  77. /* ── Page layout ─────────────────────────────────────────────────── */
  78. .page-wrap {
  79. max-width: 760px; margin: 0 auto;
  80. padding: 56px 24px 96px;
  81. }
  82. /* ── Page header ─────────────────────────────────────────────────── */
  83. .page-header { margin-bottom: 48px; }
  84. .page-eyebrow {
  85. display: inline-flex; align-items: center; gap: 7px;
  86. font-size: 0.72rem; font-weight: 500; letter-spacing: 0.12em;
  87. text-transform: uppercase; color: var(--accent); margin-bottom: 16px;
  88. }
  89. .page-eyebrow::before {
  90. content: ''; display: block; width: 18px; height: 1px; background: var(--accent);
  91. }
  92. .page-header h1 {
  93. font-family: var(--serif); font-size: clamp(2rem, 4vw, 2.8rem);
  94. font-weight: 400; line-height: 1.15; margin-bottom: 14px;
  95. }
  96. .page-header h1 em { font-style: italic; color: var(--accent); }
  97. .page-meta {
  98. display: flex; align-items: center; gap: 16px;
  99. flex-wrap: wrap; margin-top: 16px;
  100. }
  101. .meta-chip {
  102. display: inline-flex; align-items: center; gap: 6px;
  103. background: var(--bg-card); border: 1px solid var(--border);
  104. border-radius: 999px; padding: 4px 12px;
  105. font-size: 0.75rem; color: var(--text-muted);
  106. }
  107. .meta-chip i { font-size: 0.8rem; }
  108. /* ── Disclaimer banner ───────────────────────────────────────────── */
  109. .disclaimer-banner {
  110. background: var(--warn-dim); border: 1px solid rgba(240,192,96,0.2);
  111. border-radius: var(--radius); padding: 16px 20px;
  112. display: flex; gap: 12px; align-items: flex-start;
  113. margin-bottom: 40px;
  114. }
  115. .disclaimer-banner i { color: var(--warn); font-size: 1rem; flex-shrink: 0; margin-top: 2px; }
  116. .disclaimer-banner p {
  117. color: var(--text-secondary); font-size: 0.85rem; line-height: 1.65; margin: 0;
  118. }
  119. .disclaimer-banner strong { color: var(--warn); }
  120. /* ── Table of contents ───────────────────────────────────────────── */
  121. .toc {
  122. background: var(--bg-card); border: 1px solid var(--border);
  123. border-radius: var(--radius-lg); padding: 24px 28px;
  124. margin-bottom: 48px;
  125. }
  126. .toc-label {
  127. font-size: 0.7rem; font-weight: 500; letter-spacing: 0.1em;
  128. text-transform: uppercase; color: var(--text-muted); margin-bottom: 14px;
  129. display: block;
  130. }
  131. .toc ol {
  132. list-style: none; display: flex; flex-direction: column;
  133. gap: 8px; padding: 0; counter-reset: toc;
  134. }
  135. .toc ol li {
  136. display: flex; align-items: baseline; gap: 10px;
  137. counter-increment: toc;
  138. }
  139. .toc ol li::before {
  140. content: counter(toc) ".";
  141. font-size: 0.72rem; color: var(--text-muted);
  142. min-width: 18px; flex-shrink: 0;
  143. }
  144. .toc ol li a {
  145. font-size: 0.85rem; color: var(--text-secondary);
  146. text-decoration: none; transition: color var(--transition); line-height: 1.4;
  147. }
  148. .toc ol li a:hover { color: var(--accent); opacity: 1; }
  149. /* ── Policy sections ─────────────────────────────────────────────── */
  150. .policy-section {
  151. margin-bottom: 44px; padding-bottom: 44px;
  152. border-bottom: 1px solid var(--border);
  153. }
  154. .policy-section:last-of-type { border-bottom: none; }
  155. .section-anchor { scroll-margin-top: 80px; }
  156. .policy-section h2 {
  157. font-family: var(--serif); font-size: 1.4rem; font-weight: 400;
  158. color: var(--text-primary); margin-bottom: 14px; line-height: 1.2;
  159. display: flex; align-items: center; gap: 10px;
  160. }
  161. .section-num {
  162. font-family: var(--sans); font-size: 0.72rem; font-weight: 500;
  163. color: var(--accent); background: var(--accent-dim);
  164. border: 1px solid rgba(45,220,138,0.2);
  165. border-radius: 999px; padding: 2px 9px;
  166. flex-shrink: 0; letter-spacing: 0.05em;
  167. }
  168. .policy-section p {
  169. color: var(--text-secondary); margin-bottom: 14px; font-size: 0.95rem;
  170. }
  171. .policy-section p:last-child { margin-bottom: 0; }
  172. .policy-section ul {
  173. list-style: none; display: flex; flex-direction: column;
  174. gap: 10px; padding: 0; margin-bottom: 14px;
  175. }
  176. .policy-section ul li {
  177. display: flex; align-items: flex-start; gap: 10px;
  178. color: var(--text-secondary); font-size: 0.95rem;
  179. }
  180. .policy-section ul li::before {
  181. content: '';
  182. width: 5px; height: 5px; border-radius: 50%;
  183. background: var(--accent); flex-shrink: 0; margin-top: 9px;
  184. }
  185. .policy-section ul li strong { color: var(--text-primary); font-weight: 500; }
  186. /* ACL highlight box */
  187. .highlight-box {
  188. background: var(--bg-1); border: 1px solid var(--border);
  189. border-left: 3px solid var(--accent);
  190. border-radius: 0 var(--radius) var(--radius) 0;
  191. padding: 14px 18px; margin: 16px 0;
  192. }
  193. .highlight-box p {
  194. color: var(--text-secondary); font-size: 0.88rem;
  195. margin: 0; line-height: 1.65;
  196. }
  197. .highlight-box strong { color: var(--text-primary); }
  198. /* ── Contact card ────────────────────────────────────────────────── */
  199. .contact-card {
  200. background: var(--bg-1); border: 1px solid var(--border);
  201. border-radius: var(--radius-lg); padding: 28px 32px;
  202. display: flex; align-items: center; justify-content: space-between;
  203. gap: 20px; flex-wrap: wrap; margin-top: 48px;
  204. }
  205. .contact-card h3 {
  206. font-family: var(--serif); font-size: 1.1rem; font-weight: 400;
  207. margin-bottom: 6px;
  208. }
  209. .contact-card p { color: var(--text-secondary); font-size: 0.85rem; margin: 0; }
  210. .btn {
  211. display: inline-flex; align-items: center; gap: 7px;
  212. padding: 10px 20px; border-radius: var(--radius);
  213. font-family: var(--sans); font-size: 0.85rem; font-weight: 500;
  214. cursor: pointer; transition: all var(--transition); text-decoration: none;
  215. }
  216. .btn-outline {
  217. background: transparent; color: var(--text-secondary);
  218. border: 1px solid var(--border-hover);
  219. }
  220. .btn-outline:hover { border-color: var(--accent); color: var(--accent); opacity: 1; }
  221. /* ── Footer ──────────────────────────────────────────────────────── */
  222. .site-footer { border-top: 1px solid var(--border); padding: 28px 0; }
  223. .footer-inner {
  224. max-width: 900px; margin: 0 auto; padding: 0 24px;
  225. display: flex; flex-wrap: wrap; align-items: center;
  226. justify-content: space-between; gap: 16px;
  227. }
  228. .footer-copy { font-size: 0.8rem; color: var(--text-muted); }
  229. .footer-links { display: flex; align-items: center; gap: 20px; }
  230. .footer-links a {
  231. font-size: 0.8rem; color: var(--text-muted); text-decoration: none;
  232. transition: color var(--transition);
  233. }
  234. .footer-links a:hover { color: var(--text-secondary); opacity: 1; }
  235. ::-webkit-scrollbar { width: 5px; }
  236. ::-webkit-scrollbar-track { background: transparent; }
  237. ::-webkit-scrollbar-thumb { background: var(--border-hover); border-radius: 3px; }
  238. </style>
  239. <!-- Google tag (gtag.js) -->
  240. <script async src="https://www.googletagmanager.com/gtag/js?id=G-LWEHQVCWEZ"></script>
  241. <script>
  242. window.dataLayer = window.dataLayer || [];
  243. function gtag(){dataLayer.push(arguments);}
  244. gtag('js', new Date());
  245. gtag('config', 'G-LWEHQVCWEZ');
  246. </script>
  247. <!-- Google Tag Manager -->
  248. <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
  249. new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  250. j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
  251. 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
  252. })(window,document,'script','dataLayer','GTM-M5PFLGZT');</script>
  253. <!-- End Google Tag Manager -->
  254. </head>
  255. <body>
  256. <!-- Google Tag Manager (noscript) -->
  257. <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M5PFLGZT"
  258. height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
  259. <!-- End Google Tag Manager (noscript) -->
  260. <!-- ── Nav ──────────────────────────────────────────────────────────── -->
  261. <nav class="site-nav">
  262. <div class="nav-inner">
  263. <a class="nav-brand" href="/">
  264. <svg width="22" height="22" viewBox="0 0 28 28" fill="none">
  265. <rect width="28" height="28" rx="6" fill="var(--accent-dim)" stroke="rgba(45,220,138,0.25)" stroke-width="1"/>
  266. <path d="M8 20 L14 8 L20 20" stroke="var(--accent)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
  267. <path d="M10.5 16 L17.5 16" stroke="var(--accent)" stroke-width="1.5" stroke-linecap="round"/>
  268. </svg>
  269. Tasmanian Planning Scheme
  270. </a>
  271. <div class="nav-links">
  272. <a href="/">Home</a>
  273. <a href="/terms" class="active">Terms</a>
  274. <a href="/privacy">Privacy</a>
  275. </div>
  276. </div>
  277. </nav>
  278. <!-- ── Content ───────────────────────────────────────────────────────── -->
  279. <div class="page-wrap">
  280. <!-- Header -->
  281. <div class="page-header">
  282. <div class="page-eyebrow">Legal</div>
  283. <h1>Terms <em>of Use</em></h1>
  284. <div class="page-meta">
  285. <span class="meta-chip"><i class="bi bi-calendar3"></i> Last updated: 19 September 2025</span>
  286. <span class="meta-chip"><i class="bi bi-geo-alt"></i> Governed by Tasmanian law</span>
  287. </div>
  288. </div>
  289. <!-- Disclaimer banner -->
  290. <div class="disclaimer-banner">
  291. <i class="bi bi-exclamation-triangle"></i>
  292. <p>
  293. <strong>Not professional advice.</strong> The Tasmanian Planning Scheme Assistant
  294. is an information aid only. It does not constitute legal, planning, surveying, or
  295. professional advice and must not be relied upon as a substitute for reading the
  296. applicable instruments or obtaining advice from qualified professionals.
  297. </p>
  298. </div>
  299. <!-- Table of contents -->
  300. <div class="toc">
  301. <span class="toc-label">Contents</span>
  302. <ol>
  303. <li><a href="#who">Who we are</a></li>
  304. <li><a href="#service">What the Service does (and doesn't)</a></li>
  305. <li><a href="#byok">Bring your own API key (BYOK)</a></li>
  306. <li><a href="#responsibilities">Your responsibilities</a></li>
  307. <li><a href="#ip">Intellectual property</a></li>
  308. <li><a href="#third-party">Third-party sources &amp; links</a></li>
  309. <li><a href="#changes">Changes, availability, and updates</a></li>
  310. <li><a href="#disclaimer">Disclaimer &amp; limitation of liability</a></li>
  311. <li><a href="#acl">Australian Consumer Law</a></li>
  312. <li><a href="#indemnity">Indemnity</a></li>
  313. <li><a href="#privacy">Privacy</a></li>
  314. <li><a href="#governing">Governing law</a></li>
  315. <li><a href="#contact">Contact</a></li>
  316. </ol>
  317. </div>
  318. <!-- Sections -->
  319. <div class="policy-section">
  320. <h2 id="who" class="section-anchor"><span class="section-num">1</span> Who we are</h2>
  321. <p>
  322. These Terms of Use ("Terms") govern your access to and use of the Tasmanian Planning
  323. Scheme Assistant (the "Service"). By accessing or using the Service, you agree to be
  324. bound by these Terms. If you do not agree, do not use the Service.
  325. </p>
  326. </div>
  327. <div class="policy-section">
  328. <h2 id="service" class="section-anchor"><span class="section-num">2</span> What the Service does (and doesn't)</h2>
  329. <p>
  330. The Service helps you find and summarise publicly available planning information,
  331. including State Planning Provisions (SPPs) and Local Provisions Schedules (LPS).
  332. It uses retrieval-augmented generation (RAG) to match your questions against
  333. Tasmanian Planning Scheme documents and generate cited responses.
  334. </p>
  335. <p>
  336. The Service is an information aid only. It does not constitute legal, planning,
  337. surveying, or professional advice, and must not be relied upon as a substitute for
  338. reading the applicable instruments or obtaining advice from qualified professionals.
  339. Always verify outputs against the official TPSO viewer and your council's LPS.
  340. </p>
  341. </div>
  342. <div class="policy-section">
  343. <h2 id="byok" class="section-anchor"><span class="section-num">3</span> Bring your own API key (BYOK)</h2>
  344. <p>
  345. The Service optionally allows you to use your own API key from a third-party LLM
  346. provider (such as Anthropic, OpenAI, or xAI). When you use this feature:
  347. </p>
  348. <ul>
  349. <li>Your API key is stored only in your browser's local storage and is never transmitted to our servers.</li>
  350. <li>Your query and the retrieved planning context are sent directly from your browser to your chosen provider.</li>
  351. <li>You are solely responsible for any costs, usage limits, and terms of service imposed by your chosen provider.</li>
  352. <li>We are not responsible for the outputs generated by third-party LLM providers when accessed via BYOK.</li>
  353. </ul>
  354. </div>
  355. <div class="policy-section">
  356. <h2 id="responsibilities" class="section-anchor"><span class="section-num">4</span> Your responsibilities</h2>
  357. <ul>
  358. <li>You are responsible for verifying all results against official sources before relying on them.</li>
  359. <li>You must use the Service lawfully and not attempt to disrupt, reverse-engineer, or abuse it.</li>
  360. <li>You must not use the Service to generate or transmit unlawful, infringing, or harmful content.</li>
  361. <li>You must not attempt to extract, scrape, or systematically copy the planning data retrieved by the Service.</li>
  362. <li>You must not use automated tools to send queries at volumes that would harm the Service for other users.</li>
  363. </ul>
  364. </div>
  365. <div class="policy-section">
  366. <h2 id="ip" class="section-anchor"><span class="section-num">5</span> Intellectual property</h2>
  367. <p>
  368. We (and our licensors) own the Service, including all software, models, design elements,
  369. and original text, except where third-party materials are used under licence. Planning
  370. scheme documents (SPPs, LPS) are published by the Tasmanian Government and remain subject
  371. to their respective licences.
  372. </p>
  373. <p>
  374. You may not copy, modify, or create derivative works of the Service except as permitted
  375. by law or with our written permission. Nothing in these Terms transfers any intellectual
  376. property rights to you.
  377. </p>
  378. </div>
  379. <div class="policy-section">
  380. <h2 id="third-party" class="section-anchor"><span class="section-num">6</span> Third-party sources &amp; links</h2>
  381. <p>
  382. The Service may link to or quote third-party materials including Tasmanian Planning Scheme
  383. Online (TPSO), council websites, and Australian Standards references. Those materials are
  384. the responsibility of their respective owners and may change without notice. We are not
  385. responsible for their accuracy, currency, or availability.
  386. </p>
  387. </div>
  388. <div class="policy-section">
  389. <h2 id="changes" class="section-anchor"><span class="section-num">7</span> Changes, availability, and updates</h2>
  390. <p>
  391. We may change or discontinue any part of the Service at any time without notice. We may
  392. update these Terms by posting a revised version with a new "Last updated" date. Your
  393. continued use after changes are posted means you accept the updated Terms.
  394. </p>
  395. <p>
  396. We do not guarantee that the Service will be available at all times, error-free, or that
  397. planning scheme content will be current. Planning schemes are amended regularly — always
  398. check the official TPSO viewer for the most recent version of any provision.
  399. </p>
  400. </div>
  401. <div class="policy-section">
  402. <h2 id="disclaimer" class="section-anchor"><span class="section-num">8</span> Disclaimer &amp; limitation of liability</h2>
  403. <p>
  404. To the maximum extent permitted by law, the Service is provided "as is" and "as available".
  405. We exclude all warranties, representations, and guarantees (whether express, implied, or
  406. statutory) except those that cannot be excluded under the Australian Consumer Law ("ACL").
  407. </p>
  408. <p>
  409. To the extent permitted by law, we are not liable for any loss of profits, loss of data,
  410. indirect, incidental, special, or consequential loss arising from your use of or reliance
  411. on the Service, including any planning decisions made based on outputs from the Service.
  412. </p>
  413. </div>
  414. <div class="policy-section">
  415. <h2 id="acl" class="section-anchor"><span class="section-num">9</span> Australian Consumer Law</h2>
  416. <div class="highlight-box">
  417. <p>
  418. Nothing in these Terms excludes, restricts, or modifies any consumer guarantee, right,
  419. or remedy under the <strong>Australian Consumer Law</strong> that cannot lawfully be excluded.
  420. Where our liability cannot be excluded but can be limited, it is limited (at our option)
  421. to resupplying the services or paying the cost of having the services resupplied.
  422. </p>
  423. </div>
  424. </div>
  425. <div class="policy-section">
  426. <h2 id="indemnity" class="section-anchor"><span class="section-num">10</span> Indemnity</h2>
  427. <p>
  428. You indemnify us against all claims, losses, costs, and expenses (including reasonable
  429. legal costs) arising from your misuse of the Service, your breach of these Terms, or
  430. your infringement of any third-party rights.
  431. </p>
  432. </div>
  433. <div class="policy-section">
  434. <h2 id="privacy" class="section-anchor"><span class="section-num">11</span> Privacy</h2>
  435. <p>
  436. Our <a href="/privacy">Privacy Policy</a> explains how we collect, use, and disclose
  437. personal information, including how query data, API keys, and analytics are handled.
  438. By using the Service you also agree to the Privacy Policy.
  439. </p>
  440. </div>
  441. <div class="policy-section">
  442. <h2 id="governing" class="section-anchor"><span class="section-num">12</span> Governing law</h2>
  443. <p>
  444. These Terms are governed by the laws of Tasmania, Australia. You submit to the exclusive
  445. jurisdiction of the courts of Tasmania and the Commonwealth of Australia for any dispute
  446. arising out of or in connection with these Terms or the Service.
  447. </p>
  448. </div>
  449. <div class="policy-section">
  450. <h2 id="contact" class="section-anchor"><span class="section-num">13</span> Contact</h2>
  451. <p>
  452. If you have questions about these Terms, or wish to report a concern, please contact us
  453. using the details below.
  454. </p>
  455. </div>
  456. <!-- Contact card -->
  457. <div class="contact-card">
  458. <div>
  459. <h3>Questions about these Terms?</h3>
  460. <p>We're happy to clarify anything. Get in touch directly.</p>
  461. </div>
  462. <a href="mailto:legal@tasplanning.report" class="btn btn-outline">
  463. <i class="bi bi-envelope"></i> legal@tasplanning.report
  464. </a>
  465. </div>
  466. </div>
  467. <!-- ── Footer ────────────────────────────────────────────────────────── -->
  468. <footer class="site-footer">
  469. <div class="footer-inner">
  470. <div class="footer-copy">© <span id="y"></span> Tasmanian Planning Scheme Assistant</div>
  471. <div class="footer-links">
  472. <a href="/">Home</a>
  473. <a href="/terms">Terms</a>
  474. <a href="/privacy">Privacy</a>
  475. <a href="/faq">FAQ</a>
  476. </div>
  477. </div>
  478. </footer>
  479. <script>
  480. document.getElementById('y').textContent = new Date().getFullYear();
  481. </script>
  482. </body>
  483. </html>