@iamproperty/components 3.4.6 → 3.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/assets/css/components/accordion.css.map +1 -1
  2. package/assets/css/components/applied-filters.css +1 -0
  3. package/assets/css/components/applied-filters.css.map +1 -0
  4. package/assets/css/components/card.css +1 -1
  5. package/assets/css/components/card.css.map +1 -1
  6. package/assets/css/components/charts.css +1 -1
  7. package/assets/css/components/charts.css.map +1 -1
  8. package/assets/css/components/container.css +1 -1
  9. package/assets/css/components/container.css.map +1 -1
  10. package/assets/css/components/dialog.css +1 -0
  11. package/assets/css/components/dialog.css.map +1 -0
  12. package/assets/css/components/forms.css +1 -1
  13. package/assets/css/components/forms.css.map +1 -1
  14. package/assets/css/components/lists.css +1 -1
  15. package/assets/css/components/lists.css.map +1 -1
  16. package/assets/css/components/nav.css +1 -1
  17. package/assets/css/components/nav.css.map +1 -1
  18. package/assets/css/components/pagination.css +1 -0
  19. package/assets/css/components/pagination.css.map +1 -0
  20. package/assets/css/components/table.css +1 -0
  21. package/assets/css/components/table.css.map +1 -0
  22. package/assets/css/core.min.css +1 -1
  23. package/assets/css/core.min.css.map +1 -1
  24. package/assets/css/style.min.css +1 -1
  25. package/assets/css/style.min.css.map +1 -1
  26. package/assets/js/bundle.js +18 -11
  27. package/assets/js/components/accordion/accordion.component.js +6 -0
  28. package/assets/js/components/accordion/accordion.component.min.js +3 -3
  29. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  30. package/assets/js/components/applied-filters/applied-filters.component.js +26 -0
  31. package/assets/js/components/card/card.component.js +91 -0
  32. package/assets/js/components/card/card.component.min.js +21 -0
  33. package/assets/js/components/card/card.component.min.js.map +1 -0
  34. package/assets/js/components/filterlist/filterlist.component.js +49 -0
  35. package/assets/js/components/filterlist/filterlist.component.min.js +23 -0
  36. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -0
  37. package/assets/js/components/header/header.component.js +6 -0
  38. package/assets/js/components/header/header.component.min.js +2 -2
  39. package/assets/js/components/header/header.component.min.js.map +1 -1
  40. package/assets/js/components/pagination/pagination.component.js +34 -0
  41. package/assets/js/components/table/table.component.js +104 -0
  42. package/assets/js/components/table/table.component.min.js +24 -0
  43. package/assets/js/components/table/table.component.min.js.map +1 -0
  44. package/assets/js/components/tabs/tabs.component.js +6 -0
  45. package/assets/js/components/tabs/tabs.component.min.js +17 -0
  46. package/assets/js/components/tabs/tabs.component.min.js.map +1 -0
  47. package/assets/js/dynamic.js +7 -18
  48. package/assets/js/dynamic.min.js +2 -53
  49. package/assets/js/dynamic.min.js.map +1 -1
  50. package/assets/js/flat-components.js +27 -9
  51. package/assets/js/modules/applied-filters.js +100 -0
  52. package/assets/js/modules/data-layer.js +45 -0
  53. package/assets/js/modules/filterlist.js +32 -0
  54. package/assets/js/modules/helpers.js +77 -49
  55. package/assets/js/modules/pagination.js +33 -0
  56. package/assets/js/modules/table.js +507 -420
  57. package/assets/js/modules/tabs.js +6 -0
  58. package/assets/js/modules/youtubevideo.js +53 -61
  59. package/assets/js/scripts.bundle.js +77 -62
  60. package/assets/js/scripts.bundle.js.map +1 -1
  61. package/assets/js/scripts.bundle.min.js +2 -2
  62. package/assets/js/scripts.bundle.min.js.map +1 -1
  63. package/assets/js/tests/filterlist.spec.js +22 -0
  64. package/assets/js/tests/pagination.spec.js +15 -0
  65. package/assets/js/tests/table.spec.js +147 -0
  66. package/assets/sass/_components.scss +1 -2
  67. package/assets/sass/_corefiles.scss +5 -4
  68. package/assets/sass/_functions/utilities.scss +16 -0
  69. package/assets/sass/_functions/variables.scss +32 -18
  70. package/assets/sass/_tests/colours.spec.scss +1 -1
  71. package/assets/sass/components/applied-filters.scss +65 -0
  72. package/assets/sass/components/card.scss +177 -233
  73. package/assets/sass/components/charts.scss +4 -0
  74. package/assets/sass/components/container.scss +7 -2
  75. package/assets/sass/components/dialog.scss +202 -0
  76. package/assets/sass/components/forms.scss +37 -5
  77. package/assets/sass/components/lists.scss +15 -0
  78. package/assets/sass/components/nav.scss +5 -1
  79. package/assets/sass/components/pagination.scss +140 -0
  80. package/assets/sass/components/table.scss +419 -0
  81. package/assets/sass/foundations/icons.scss +1 -1
  82. package/assets/sass/{components → foundations}/links.scss +26 -0
  83. package/assets/sass/foundations/reboot.scss +19 -13
  84. package/assets/svg/illustrations/table.svg +165 -0
  85. package/assets/ts/bundle.ts +23 -12
  86. package/assets/ts/components/accordion/accordion.component.ts +7 -0
  87. package/assets/ts/components/applied-filters/README.md +5 -0
  88. package/assets/ts/components/applied-filters/applied-filters.component.ts +33 -0
  89. package/assets/ts/components/card/README.md +22 -0
  90. package/assets/ts/components/card/card.component.ts +117 -0
  91. package/assets/ts/components/filterlist/README.md +17 -0
  92. package/assets/ts/components/filterlist/filterlist.component.ts +60 -0
  93. package/assets/ts/components/header/header.component.ts +8 -0
  94. package/assets/ts/components/pagination/README.md +11 -0
  95. package/assets/ts/components/pagination/pagination.component.ts +45 -0
  96. package/assets/ts/components/table/README.md +23 -0
  97. package/assets/ts/components/table/table.component.ts +128 -0
  98. package/assets/ts/components/tabs/tabs.component.ts +7 -0
  99. package/assets/ts/dynamic.ts +12 -19
  100. package/assets/ts/flat-components.ts +37 -9
  101. package/assets/ts/modules/applied-filters.ts +146 -0
  102. package/assets/ts/modules/data-layer.ts +58 -0
  103. package/assets/ts/modules/filterlist.ts +46 -0
  104. package/assets/ts/modules/helpers.ts +90 -60
  105. package/assets/ts/modules/pagination.ts +44 -0
  106. package/assets/ts/modules/table.ts +598 -433
  107. package/assets/ts/modules/tabs.ts +8 -1
  108. package/assets/ts/modules/youtubevideo.ts +58 -63
  109. package/assets/ts/tests/filterlist.spec.ts +29 -0
  110. package/assets/ts/tests/pagination.spec.ts +21 -0
  111. package/assets/ts/tests/table.spec.ts +191 -0
  112. package/dist/components.es.js +1264 -1296
  113. package/dist/components.umd.js +70 -65
  114. package/dist/style.css +1 -1
  115. package/package.json +7 -5
  116. package/src/components/AppliedFilters/AppliedFilters.vue +20 -0
  117. package/src/components/AppliedFilters/README.md +5 -0
  118. package/src/components/Card/Card.vue +11 -112
  119. package/src/components/Card/README.md +16 -18
  120. package/src/components/Carousel/Carousel.vue +49 -10
  121. package/src/components/Chart/Chart.vue +46 -4
  122. package/src/components/Filterlist/Filterlist.vue +20 -0
  123. package/src/components/Filterlist/README.md +17 -0
  124. package/src/components/Pagination/Pagination.vue +30 -0
  125. package/src/components/Pagination/README.md +11 -0
  126. package/src/components/Table/README.md +29 -44
  127. package/src/components/Table/Table.spec.js +5 -37
  128. package/src/components/Table/Table.vue +16 -91
  129. package/src/foundations/YoutubeVideo/YoutubeVideo.vue +1 -1
  130. package/src/index.js +3 -2
  131. package/assets/css/components/cardDeck.css +0 -1
  132. package/assets/css/components/cardDeck.css.map +0 -1
  133. package/assets/css/components/links.css +0 -1
  134. package/assets/css/components/links.css.map +0 -1
  135. package/assets/css/components/modal.css +0 -1
  136. package/assets/css/components/modal.css.map +0 -1
  137. package/assets/css/components/tables.css +0 -1
  138. package/assets/css/components/tables.css.map +0 -1
  139. package/assets/js/modules/modal.js +0 -69
  140. package/assets/sass/components/cardDeck.scss +0 -108
  141. package/assets/sass/components/modal.scss +0 -136
  142. package/assets/sass/components/tables.scss +0 -291
  143. package/assets/ts/modules/modal.ts +0 -91
  144. package/src/components/CardDeck/CardDeck.spec.js +0 -99
  145. package/src/components/CardDeck/CardDeck.vue +0 -77
  146. package/src/components/CardDeck/README.md +0 -25
  147. package/src/components/Modal/Modal.spec.js +0 -22
  148. package/src/components/Modal/Modal.vue +0 -43
  149. package/src/components/Modal/README.md +0 -20
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- @charset "UTF-8";.card{--card-spacer-y: 1.5rem;--card-spacer-x: 1.25rem;--card-title-spacer-y: .5rem;--card-border-width: 0;--card-border-color: var(--border-color-translucent);--card-border-radius: .625rem;--card-box-shadow: ;--card-inner-border-radius:calc(.375rem - 1px);--card-cap-padding-y: 1.5rem;--card-cap-padding-x: 1.25rem;--card-cap-bg: transparent;--card-cap-color: ;--card-height: ;--card-color: ;--card-bg: #fff;--card-img-overlay-padding: 1rem;--card-group-margin: .75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--card-height);word-wrap:break-word;background-color:var(--card-bg);background-clip:border-box;border:var(--card-border-width) solid var(--card-border-color);border-radius:var(--card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--card-inner-border-radius);border-top-right-radius:var(--card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--card-inner-border-radius);border-bottom-left-radius:var(--card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--card-spacer-y) var(--card-spacer-x);color:var(--card-color)}.card-title{margin-bottom:var(--card-title-spacer-y)}.card-subtitle{margin-top:calc(-.5 * var(--card-title-spacer-y));margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--card-spacer-x)}.card-header{padding:var(--card-cap-padding-y) var(--card-cap-padding-x);margin-bottom:0;color:var(--card-cap-color);background-color:var(--card-cap-bg);border-bottom:var(--card-border-width) solid var(--card-border-color)}.card-header:first-child{border-radius:var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0}.card-footer{padding:var(--card-cap-padding-y) var(--card-cap-padding-x);color:var(--card-cap-color);background-color:var(--card-cap-bg);border-top:var(--card-border-width) solid var(--card-border-color)}.card-footer:last-child{border-radius:0 0 var(--card-inner-border-radius) var(--card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--card-cap-padding-x));margin-bottom:calc(-1 * var(--card-cap-padding-y));margin-left:calc(-.5 * var(--card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--card-bg);border-bottom-color:var(--card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--card-cap-padding-x));margin-left:calc(-.5 * var(--card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--card-img-overlay-padding);border-radius:var(--card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--card-inner-border-radius);border-top-right-radius:var(--card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--card-inner-border-radius);border-bottom-left-radius:var(--card-inner-border-radius)}.card-group>.card{margin-bottom:var(--card-group-margin)}@media screen and (min-width: 36em){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}a.card{cursor:pointer}a.card:before{display:none}.card:not(.card--simple){--colour-body: var(--colour-body-theme);--colour-heading: var(--colour-primary);--colour-link: var(--colour-link-theme);--colour-hover: var(--colour-hover-theme);--colour-active: var(--colour-active-theme);--colour-border: var(--colour-border-theme);--colour-brand: var(--colour-primary);--btn-bg: var(--colour-warning);--btn-text: var(--colour-primary);--btn-hover-text: var(--colour-primary);--btn-tertiary-bg: var(--colour-primary);--btn-tertiary-hover-text: white}.card:not(.card--simple) .text-primary{color:var(--colour-primary)!important}.card{--spread: .75rem;box-shadow:0 2px var(--spread) 0 #9a9a9a40;min-height:100%;overflow:hidden;max-width:57.8125rem}.card .card-title{margin-bottom:0;padding-bottom:0}.card:hover,.card:focus{--spread: .375rem}.card:hover .card-body *:not(.badge),.card:focus .card-body *:not(.badge){color:var(--colour-hover)!important}.card:active{--spread: .1875rem}.card-header__wrapper{padding-bottom:0;padding-top:55%;position:relative;overflow:hidden;background:rgba(0,0,0,.1)}.card-header__wrapper>*{position:absolute;top:0;left:0;width:100%;height:100%}.card-header__wrapper .card-image{position:absolute;top:0;left:0;width:101%;height:101%;object-fit:cover}.card-header__wrapper .card-header{display:flex;flex-wrap:nowrap;flex-direction:column;align-items:flex-start;justify-content:space-between}.card-header__wrapper .card-logo{position:absolute;top:0;right:0;left:auto;height:3.5rem;width:8rem;object-fit:contain;object-position:right}.card-banner{padding:.5rem}.card-banner__tag{position:absolute;top:0;left:0;background-color:var(--colour-secondary);font-size:.875rem;font-weight:700;aspect-ratio:1;padding:.75rem;border-radius:50%;transform:translate(-.25rem,-1.25rem) rotate(-25deg);box-shadow:0 .5rem 1rem #00000026!important}.card-body{color:var(--colour-body)}.card-body *:last-child{padding-bottom:0;margin-bottom:0}.card-footer{padding-top:0}.row:not([class*=g-]) .card{margin-bottom:1rem}.card--simple{box-shadow:none;min-height:0;background:none}.card--simple .card-header__wrapper{border-radius:.625rem;margin-bottom:1rem}.card--simple .card-body{padding-top:0}.card--simple .card-body,.card--simple .card-footer{padding-left:0;padding-right:0}.card--quick .card-header,.card--quick .card-footer,.card--quick .card-body>*:not(.card-title){display:none}.card--quick .card-title{margin-bottom:0;padding-bottom:0;padding-left:2em;position:relative}.card--quick .card-title:before,.card--quick .card-title:after{content:"";position:absolute;left:0;top:0;width:1.2em;height:1.2em}.card--quick .card-title:before{left:.05em;background:currentColor;mask-image:var(--icon-arrow);mask-size:50%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:50%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%}.card--quick .card-title:after{border:2px solid currentColor;border-radius:50%}.card--small{display:flex;flex-direction:row;align-items:center;padding-inline:.5rem}.card--small .card-header__wrapper,.card--small .card-body>*:not(.card-title){display:none}.card--small .card-body,.card--small .card-footer{padding:.5rem}.card--small .card-title{margin:0}.card--small .btn{margin-right:0;white-space:nowrap}.card--small .btn:not(.btn--link){padding:.5em 1em}.card--small:not([target=_blank]) .btn-primary:not(.btn--link):after{content:"";height:1em;width:1em;margin-left:.5em;margin-right:-.5em;display:inline-block;vertical-align:baseline;margin-bottom:-.15em;mask-image:var(--icon-arrow);mask-size:100% 100%;mask-repeat:no-repeat;mask-position:0 0;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:0 0;background-color:currentColor}@media screen and (min-width: 62em){.card--small{flex-wrap:wrap}.card--small .card-footer{min-width:100%;text-align:right}}.card--danger,.card--warning,.card--success{position:relative;padding-left:1.5rem}.card--danger:after,.card--warning:after,.card--success:after{content:"";height:100%;width:1rem;background:var(--colour-danger);display:block;position:absolute;top:0;left:0}.card--warning:after{background:var(--colour-warning)}.card--success:after{background:var(--colour-success)}.card-deck.container:not([data-card-type=simple]){padding-bottom:3rem}.card-deck.container:not([data-card-type=simple])>.row:first-child{padding-top:.5rem}.card-deck.container:not([data-card-type=simple])[class*=bg-]{padding-bottom:5rem}@media screen and (min-width: 36em) and (max-width: 61.99em){.card-deck .row-cols-sm-1 .card-header__wrapper{position:absolute;top:0;left:0;width:45.8%;height:100%;padding:0}.card-deck .row-cols-sm-1 .card-header__wrapper~.card-body,.card-deck .row-cols-sm-1 .card-header__wrapper~.card-footer{padding-left:calc(45.8% + 2.5rem)}}@media screen and (min-width: 62em){.card-deck:not(.card-deck--featured) .row-cols-md-1 .card-header__wrapper{position:absolute;top:0;left:0;width:45.8%;height:100%;padding:0}.card-deck:not(.card-deck--featured) .row-cols-md-1 .card-header__wrapper~.card-body,.card-deck:not(.card-deck--featured) .row-cols-md-1 .card-header__wrapper~.card-footer{padding-left:calc(45.8% + 2.5rem)}}.card-deck--featured>.row>.col:nth-child(4)~.col{display:none}.card-deck--featured>.row>.col:not(:first-child) .card-header__wrapper{display:none}.card-deck--featured .row-cols-sm-1>.col:not(:first-child) .card-header__wrapper~.card-body{padding-left:1.5rem}.card-deck--featured .card-footer{display:none}@media screen and (min-width: 62em){.card-deck--featured>.row{display:grid;grid-template-columns:1fr 1fr 41.66666667%;grid-template-rows:auto auto auto;gap:var(--gutter-y) var(--gutter-x);grid-template-areas:"featured featured card2" "featured featured card3" "featured featured card4";margin-top:0}.card-deck--featured>.row>.col:first-child{grid-area:featured}.card-deck--featured>.row>.col:not(:first-child){min-height:0}.card-deck--featured>.row>.col:nth-child(2){grid-area:card2}.card-deck--featured>.row>.col:nth-child(3){grid-area:card3}.card-deck--featured>.row>.col:nth-child(4){grid-area:card4}.card-deck--featured>.row>.col{width:100%;margin-top:0}}.carousel{padding-bottom:3rem}.carousel .carousel__wrapper{position:relative}.carousel .carousel__inner{--gutter-x: 1rem;overflow:auto;scroll-snap-type:x mandatory;margin-right:calc(var(--gutter-x) * -.5);margin-left:calc(var(--gutter-x) * -.5)}.carousel .carousel__inner>.row{flex-wrap:nowrap;margin:0}.carousel .carousel__inner>.row>.col{padding-top:2.25rem;padding-bottom:1.5rem;scroll-snap-align:start;scroll-padding:calc(var(--gutter-x) * -1)}.carousel .carousel__item>*:last-child{margin-bottom:0;padding-bottom:0}body.js-enabled .carousel__inner{scrollbar-width:none;-ms-overflow-style:none}body.js-enabled .carousel__inner::-webkit-scrollbar{display:none}.carousel:not(.hide-controls){padding-bottom:4.5rem!important}.carousel.hide-controls .carousel__controls{display:none}.carousel .carousel__controls{position:absolute;text-align:center;width:auto;left:0;width:calc(100% + 2rem);margin-left:-1rem;margin-right:-1rem;bottom:-3rem}.carousel .carousel__controls a{width:1rem;height:1rem;min-height:1rem;border-radius:50%;text-indent:-50rem;overflow:hidden;background:currentColor;padding:0;margin:0 .5rem .5rem}.carousel .carousel__controls a:before{display:none}.carousel .carousel__controls a:first-child:last-child{display:none}.carousel .carousel__controls>a:nth-child(10)~a{display:none}.carousel.hide-btns .carousel__wrapper>.btn{display:none}.carousel:not(.hide-btns) .carousel__inner{margin-left:1.75rem;margin-right:1.75rem}.carousel .carousel__wrapper>.btn{position:absolute;top:50%;left:-1.25rem;transform:translateY(-50%)}.carousel .carousel__wrapper>.btn.btn-next{left:auto;right:-1.25rem}@media screen and (min-width: 62em){.carousel .carousel__wrapper>.btn{margin-left:-1rem;margin-right:-1rem}}.carousel .carousel__inner>.row>.col:first-child{margin-left:0!important}@media screen and (min-width: 36em){.carousel .carousel__controls>a:nth-child(10)~a{display:inline-block}.carousel .carousel__inner>.row[class*=row-cols-sm-]>.col{scroll-snap-align:unset}.carousel .carousel__inner>.row-cols-sm-2>.col:nth-child(odd),.carousel .carousel__inner>.row-cols-sm-3>.col:nth-child(3n+1),.carousel .carousel__inner>.row-cols-sm-4>.col:nth-child(4n+1),.carousel .carousel__inner>.row-cols-sm-5>.col:nth-child(5n+1),.carousel .carousel__inner>.row-cols-sm-6>.col:nth-child(6n+1){scroll-snap-align:start}body:not(.js-enabled) .carousel .carousel__inner>.row-cols-sm-2>.col:nth-child(odd),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-sm-3>.col:nth-child(3n+1),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-sm-4>.col:nth-child(4n+1),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-sm-5>.col:nth-child(5n+1),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-sm-6>.col:nth-child(6n+1){margin-left:4rem}.carousel .carousel__controls.cols-sm-2>a:not(:nth-child(odd)),.carousel .carousel__controls.cols-sm-3>a:not(:nth-child(3n+1)),.carousel .carousel__controls.cols-sm-4>a:not(:nth-child(4n+1)),.carousel .carousel__controls.cols-sm-5>a:not(:nth-child(5n+1)),.carousel .carousel__controls.cols-sm-6>a:not(:nth-child(6n+1)){display:none}.carousel .carousel__controls.cols-sm-2>a:first-child:nth-last-child(2),.carousel .carousel__controls.cols-sm-3>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3)),.carousel .carousel__controls.cols-sm-4>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4)),.carousel .carousel__controls.cols-sm-5>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5)),.carousel .carousel__controls.cols-sm-6>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5),a:first-child:nth-last-child(6)){display:none}.carousel.hide-sm-btns .carousel__wrapper>.btn{display:none}.carousel.hide-sm-btns .carousel__inner{margin-left:0;margin-right:0}}@media screen and (min-width: 62em){.carousel .carousel__inner>.row[class*=row-cols-md-]>.col{scroll-snap-align:unset;margin-left:0}.carousel .carousel__inner>.row-cols-md-2>.col:nth-child(odd),.carousel .carousel__inner>.row-cols-md-3>.col:nth-child(3n+1),.carousel .carousel__inner>.row-cols-md-4>.col:nth-child(4n+1),.carousel .carousel__inner>.row-cols-md-5>.col:nth-child(5n+1),.carousel .carousel__inner>.row-cols-md-6>.col:nth-child(6n+1){scroll-snap-align:start}body:not(.js-enabled) .carousel .carousel__inner>.row-cols-md-2>.col:nth-child(odd),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-md-3>.col:nth-child(3n+1),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-md-4>.col:nth-child(4n+1),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-md-5>.col:nth-child(5n+1),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-md-6>.col:nth-child(6n+1){margin-left:50vw}.carousel .carousel__controls.cols-md-2>a:not(:nth-child(odd)),.carousel .carousel__controls.cols-md-3>a:not(:nth-child(3n+1)),.carousel .carousel__controls.cols-md-4>a:not(:nth-child(4n+1)),.carousel .carousel__controls.cols-md-5>a:not(:nth-child(5n+1)),.carousel .carousel__controls.cols-md-6>a:not(:nth-child(6n+1)){display:none}.carousel .carousel__controls.cols-md-2>a:first-child:nth-last-child(2),.carousel .carousel__controls.cols-md-3>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3)),.carousel .carousel__controls.cols-md-4>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4)),.carousel .carousel__controls.cols-md-5>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5)),.carousel .carousel__controls.cols-md-6>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5),a:first-child:nth-last-child(6)){display:none}.carousel.hide-md-btns .carousel__wrapper>.btn{display:none}.carousel.hide-md-btns .carousel__inner{margin-left:0;margin-right:0}}.testimonial{--testimonial-padding: 1rem;--testimonial-spacing: 1rem}@media screen and (min-width: 62em){.testimonial{--testimonial-padding: 4rem;--testimonial-spacing: 2rem}}.testimonial>div:first-child{position:relative;overflow:hidden}.testimonial .circle{color:currentColor;position:absolute;top:-18rem;right:-8rem;font-size:28rem;border-width:4px}.testimonial__images{overflow:auto;scroll-snap-type:x mandatory;display:flex;user-select:none;touch-action:pan-x;height:14.375rem}@media screen and (min-width: 36em){.testimonial__images{height:21.25rem}}@media screen and (min-width: 62em){.testimonial__images{min-height:100%;scroll-snap-type:y mandatory;flex-direction:column;touch-action:pan-y}}.testimonial__images img{scroll-snap-align:start;user-select:none;pointer-events:none;flex-shrink:0}.testimonial .testimonial__controls{display:none}.testimonial.testimonial--multi .testimonial__controls{display:block;position:absolute;bottom:0;left:50%;transform:translate(-50%,50%)}@media screen and (min-width: 62em){.testimonial.testimonial--multi .testimonial__controls{left:auto;bottom:auto;right:0;top:50%;transform:rotate(90deg) translateY(-120%);transform-origin:center}}.testimonial h2{padding:2rem var(--testimonial-padding) 0 var(--testimonial-padding)}@media screen and (min-width: 36em){.testimonial h2{padding-top:3rem}}@media screen and (min-width: 62em){.testimonial h2{padding-top:9rem}}.testimonial__content{--display-none: none;margin:0 var(--testimonial-padding) var(--testimonial-spacing) var(--testimonial-padding);position:relative}@media screen and (min-width: 62em){.testimonial__content{--display-none: block}.testimonial__content blockquote:not(.largest){position:absolute;top:0}}.testimonial[data-show="1"] blockquote:not(:nth-child(1)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="2"] blockquote:not(:nth-child(2)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="3"] blockquote:not(:nth-child(3)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="4"] blockquote:not(:nth-child(4)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="5"] blockquote:not(:nth-child(5)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="6"] blockquote:not(:nth-child(6)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="7"] blockquote:not(:nth-child(7)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="8"] blockquote:not(:nth-child(8)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="9"] blockquote:not(:nth-child(9)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="10"] blockquote:not(:nth-child(10)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial__after{padding:1rem var(--testimonial-padding) var(--testimonial-spacing) var(--testimonial-padding)}.testimonial__images::-webkit-scrollbar{display:none}.testimonial__images{-ms-overflow-style:none;scrollbar-width:none}.property-searchbar fieldset{position:relative}@media screen and (min-width: 62em){.property-searchbar fieldset{position:relative;padding-right:1.5rem}.property-searchbar fieldset:after{content:"";position:absolute;top:0;right:.5rem;display:block;height:100%;width:1px;background-color:var(--colour-muted);opacity:.25}}.property-searchbar .form-control__wrapper{margin-bottom:1rem}@media screen and (min-width: 62em){.property-searchbar .form-control__wrapper{margin-bottom:0}}.property-searchbar .form-label,.property-searchbar label{font-size:.875rem;text-transform:uppercase}@media screen and (min-width: 62em){.property-searchbar .row .row .form-label{display:none}.property-searchbar .form-control,.property-searchbar .form-select{padding:.5rem 1.5rem .5rem .5rem}.property-searchbar .form-select{background-position:right .5rem center}}.property-searchbar .input--locations{padding-right:5.5rem}.property-searchbar .select--miles{position:absolute;bottom:0rem;right:.5rem;width:5rem}@media screen and (min-width: 62em){.property-searchbar .select--miles{right:1.5rem}}.property-searchbar .select--miles label{display:none}.property-searchbar .select--miles select{background-color:transparent;border-color:transparent}@media screen and (min-width: 62em){.property-searchbar .property-searchbar__btn{align-items:flex-end}}.property-searchbar button{margin-top:1rem;margin-bottom:1rem}@media screen and (min-width: 62em){.property-searchbar button{margin:0;padding-left:3.5rem;padding-right:3.5rem}}.property-searchbar--hero .property-searchbar{--colour-body: var(--colour-body-theme);--colour-heading: var(--colour-primary);--colour-link: var(--colour-link-theme);--colour-hover: var(--colour-hover-theme);--colour-active: var(--colour-active-theme);--colour-border: var(--colour-border-theme);--colour-brand: var(--colour-primary);--btn-bg: var(--colour-warning);--btn-text: var(--colour-primary);--btn-hover-text: var(--colour-primary);--btn-tertiary-bg: var(--colour-primary);--btn-tertiary-hover-text: white;padding:1rem;background-color:#fff;width:100%;border-radius:.625rem;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.24);box-shadow:0 2px 4px #0000003d;position:relative}.property-searchbar--hero .property-searchbar .text-primary{color:var(--colour-primary)!important}@media screen and (min-width: 62em){.property-searchbar--hero .property-searchbar{border-radius:3rem;padding:1.5rem 2.5rem}.property-searchbar--hero .property-searchbar .form-label,.property-searchbar--hero .property-searchbar label{margin-bottom:0}.property-searchbar--hero .property-searchbar .form-control,.property-searchbar--hero .property-searchbar .form-select{margin-left:-.5rem;border:none;padding-top:.25rem;padding-bottom:.25rem}.property-searchbar--hero .property-searchbar .form-select{background-position:right 0rem center;padding-right:1rem}.property-searchbar--hero .property-searchbar .property-searchbar__btn{align-items:center}}.nav .nav__mobile-bar{background:var(--colour-primary);color:#fff;--colour-body: #FCFCFC;--colour-heading: #FCFCFC;--colour-link: #FCFCFC;--colour-hover: #FCFCFC;--colour-border: #FCFCFC;--colour-brand: #FCFCFC;--btn-bg: #FCFCFC;--btn-text: var(--colour-primary);--btn-hover-text: var(--colour-heading);--btn-tertiary-bg: #FCFCFC;--btn-tertiary-hover-text: var(--colour-primary);display:flex;flex-direction:column;flex-wrap:nowrap;width:23.4375rem}@media screen and (min-width: 36em){.nav .nav__mobile-bar{width:100%}}.nav .nav__mobile-bar>.container{padding-top:1rem;padding-bottom:1rem;flex-shrink:0;overflow:visible}.nav{font-weight:700}.nav__inner,.nav__menu--account{display:flex;flex-direction:column;flex-wrap:nowrap}.nav__inner>.container,.nav__menu--account>.container{padding-top:1rem;padding-bottom:0;flex-shrink:0;overflow:visible;z-index:unset}.nav__menu{padding-top:2.25rem;padding-bottom:1rem}.nav .brand{font-size:2.25rem}@media screen and (min-width: 62em){.nav .brand{font-size:3.75rem}}.nav__logo img{height:2.25rem;width:auto}@media screen and (min-width: 36em){.nav__logo img{height:3.75rem;width:auto}}.nav__search-btn,.nav__menu-btn{display:flex}.nav__search-btn label,.nav__menu-btn label{height:1.125rem;width:1.5rem;text-indent:-300%;overflow:hidden;position:relative;cursor:pointer;color:var(--colour-link)}.nav__search-btn label:hover,.nav__search-btn label:focus,.nav__menu-btn label:hover,.nav__menu-btn label:focus{color:var(--colour-hover)}.nav__search-btn label:active,.nav__menu-btn label:active{color:var(--colour-active)}.nav__search-btn label:before,.nav__search-btn label:after,.nav__menu-btn label:before,.nav__menu-btn label:after{content:"";position:absolute;width:0%;height:2px;top:calc(50% - 1px);left:0;background:currentColor;transform-origin:50% 50%;transition:transform .5s,width .5s}.nav__search-btn label{text-indent:0;overflow:visible}.nav__search-btn .icon{height:2rem;width:2rem;margin-top:-.5rem;margin-left:-.0625rem;transition:opacity .5s;color:inherit}.nav__search-btn .icon__outline{stroke-width:2px;stroke:currentColor}.nav__menu-btn{display:flex}.nav__menu-btn label{border-top:2px solid currentColor;border-bottom:2px solid currentColor}.nav__menu-btn label:before,.nav__menu-btn label:after{width:100%}.nav__account-btn label{font-size:1.125rem;text-indent:0;overflow:visible;color:var(--colour-body);height:3rem;line-height:3rem;display:block;border-top:1px solid var(--colour-border);border-bottom:1px solid var(--colour-border)}.nav__account-btn .icon{height:1.75rem;width:1.75rem;margin-top:-.5rem;margin-right:.5rem;transition:opacity .5s;color:inherit}.nav__account-btn .icon__outline{stroke-width:2px;stroke:currentColor}.nav__menu>ul{margin-bottom:0}.nav__menu>ul>li>a{font-size:1.125rem;line-height:2rem;display:inline-block;position:relative;text-decoration:none}.nav__menu>ul>li>a.current{border-left:.375rem solid var(--colour-info);margin-left:-1.25rem;padding-left:.875rem}@media screen and (min-width: 62em){.nav__menu--search{display:none}#showSearch:checked~.nav__inner>.nav__menu--search{order:2;position:absolute;top:100%;left:0;width:100%;background:rgba(0,0,0,.6);height:calc(100vh - 5rem);display:block}}.services{line-height:2rem}.services li{display:flex;justify-content:space-between}.services .service--active:before{content:"";height:1em;width:1em;display:inline-block;background:var(--colour-secondary);margin-right:.5rem;margin-bottom:-.1em;border-radius:50%}.credits{border:2px solid var(--colour-primary);padding:1rem;margin-bottom:2rem;border-radius:.625rem}.credits .h5,.credits ul{padding-inline:1rem}.credits>*:last-child{margin-bottom:0!important}.nav[class*=bg-] .nav__inner{background-color:transparent}.nav__menu--secondary{flex-grow:1;font-weight:700}.nav__menu--secondary .nav__section-link{pointer-events:none;font-weight:700;color:var(--colour-link);font-size:1.125rem}.nav__menu--secondary>.container>ul>li{padding-block:.375rem}.nav__menu--secondary>.container>ul>li:not(:last-child){border-bottom:1px solid var(--colour-border)}.nav__menu--secondary>.container>ul>li a{display:inline-block;font-size:1.125rem;line-height:2.25rem;text-decoration:none;font-weight:700}.nav__menu--secondary>.container>ul>li ul{padding:0}.nav__menu--secondary>.container>ul>li ul a{font-weight:400}.nav__menu--secondary>.container>ul>li ul a .icon{display:none}.nav{position:sticky;top:0;left:0;width:100%;z-index:var(--index-menu)}.nav.is-stuck{-webkit-box-shadow:0 4px 20px -10px rgba(51,51,51,.25);box-shadow:0 4px 20px -10px #33333340}nav+main>*:first-child{padding-top:2rem}.nav__menu,.nav__btn,.nav__menu--secondary{display:none}.nav__inner,.nav__menu--account{position:absolute;top:0;left:100%;background:var(--body-bg);z-index:2;width:100%;overscroll-behavior:contain}@media screen and (min-width: 36em){.nav__inner,.nav__menu--account{width:23.4375rem}}.nav__menu--account{z-index:2;height:100vh}#showMenu:checked~.nav__inner,#showAccount:checked~.nav__menu--account{height:100vh;overflow:visible;overflow-x:auto;left:0}@media screen and (min-width: 36em){#showMenu:checked~.nav__inner,#showAccount:checked~.nav__menu--account{left:calc(100% - 23.4375rem)}}@media screen and (min-width: 62em){#showAccount~.nav__menu--account{display:none}#showAccount:checked~.nav__menu--account{left:0;width:100%;height:auto;display:block;top:6rem;border-top:.3125rem solid var(--colour-primary);border-bottom:1px solid var(--colour-border-light);-webkit-box-shadow:0px 3px 6px 0px rgba(0,0,0,.16);-moz-box-shadow:0px 3px 6px 0px rgba(0,0,0,.16);box-shadow:0 3px 6px #00000029}}#showMenu:checked~div .nav__menu,#showMenu:checked~div .nav__btn,#showMenu:checked~div .nav__menu--secondary,#showMenu:not(:checked)~#showSearch:checked~div .nav__menu--search{display:block}#showMenu:checked~div .nav__menu-btn label,#showSearch:checked~div .nav__search-btn label{border:0}#showMenu:checked~div .nav__menu-btn label .icon,#showSearch:checked~div .nav__search-btn label .icon{opacity:0}#showMenu:checked~div .nav__menu-btn label:before,#showSearch:checked~div .nav__search-btn label:before{width:100%;transform:rotate(45deg)}#showMenu:checked~div .nav__menu-btn label:after,#showSearch:checked~div .nav__search-btn label:after{width:100%;transform:rotate(-45deg)}@media screen and (min-width: 36em){#showMenu:checked~.nav__bg{content:" ";position:absolute;top:0;left:0;width:100vw;height:100vh;background:rgba(0,0,0,.5);z-index:1}}@media screen and (min-width: 62em){.nav__bg{display:none}}@media screen and (min-width: 62em){.nav .nav__mobile-bar{display:none}.nav__logo{height:4rem}#showMenu:checked~.nav__inner,.nav__inner{overflow:visible;position:static;width:100%}.nav .nav__menu{display:flex;padding-bottom:0}.nav__btn,.nav__menu--secondary{display:flex}.nav .nav__inner>.container{padding-bottom:1rem}.nav__search-btn,.nav__btn{order:2;margin-left:1rem}.nav__search-btn .btn,.nav__btn .btn{margin-bottom:0}.nav__menu{padding-top:0}.nav__menu>.list-unstyled{margin-left:-1.5rem!important;margin-right:-1.5rem!important;width:calc(100% + 3rem);margin-bottom:0;padding-top:0;padding-left:1.5rem;padding-right:1.5rem}.nav__menu>.list-unstyled>li{display:inline-block;padding-left:1rem;padding-right:1rem}.nav__menu>.list-unstyled>li:not(:last-child){border-right:1px solid var(--colour-border)}.nav__menu>.list-unstyled>li>a{line-height:1.75rem}.nav__menu>.list-unstyled>li>a.current{border-left:none;padding-left:0;border-bottom:.1875rem solid var(--colour-info)}.nav__account-btn{max-width:fit-content!important}.nav__account-btn label{border:none!important;padding-top:.5rem;position:relative;padding-right:2.5rem}.nav__account-btn label:after{content:"";position:absolute;top:calc(50% + .5rem);right:0;width:1.5em;height:1.5em;background:currentColor;mask-image:var(--icon-arrow);mask-size:50%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:50%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;transition:transform .2s ease-in-out;transform:rotate(90deg) translate(-50%)}.nav .nav__menu--secondary>.container>.list-unstyled{font-size:.9375rem;padding-top:0}}@media screen and (min-width: 62em){.nav__menu--secondary{background-color:var(--colour-primary);--colour-body: #FCFCFC;--colour-heading: #FCFCFC;--colour-link: #FCFCFC;--colour-hover: #FCFCFC;--colour-border: #FCFCFC;--colour-brand: #FCFCFC;--btn-bg: #FCFCFC;--btn-text: var(--colour-primary);--btn-hover-text: var(--colour-heading);--btn-tertiary-bg: #FCFCFC;--btn-tertiary-hover-text: var(--colour-primary)}.nav__menu--secondary .nav__section-link{pointer-events:all}.nav__menu--secondary>.container{padding-bottom:0}.nav__menu--secondary>.container>.list-unstyled{margin-left:-1rem!important;margin-right:-1rem!important;width:calc(100% + 2rem);margin-bottom:0}.nav__menu--secondary>.container>.list-unstyled>li{display:inline-block;padding-left:1rem;padding-right:1rem;border:none!important;padding-block:0;position:relative}.nav__menu--secondary>.container>.list-unstyled>li a,.nav__menu--secondary>.container>.list-unstyled>li .nav__section-link{display:block;line-height:2.25rem;padding-block:.5rem;cursor:pointer}.nav__menu--secondary>.container>.list-unstyled>li ul{display:none}.nav__menu--secondary>.container>.list-unstyled>li:hover>.nav__section-link,.nav__menu--secondary>.container>.list-unstyled>li:focus>.nav__section-link,.nav__menu--secondary>.container>.list-unstyled>li:focus-within>.nav__section-link{color:var(--colour-selected)}.nav__menu--secondary>.container>.list-unstyled>li:hover ul,.nav__menu--secondary>.container>.list-unstyled>li:focus ul,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul{display:block;background:white;position:absolute;top:100%;left:0;padding-top:1rem;-webkit-box-shadow:0 4px 20px -10px rgba(51,51,51,.25);box-shadow:0 4px 20px -10px #33333340;--colour-body: var(--colour-body-theme);--colour-heading: var(--colour-primary);--colour-link: var(--colour-link-theme);--colour-hover: var(--colour-hover-theme);--colour-active: var(--colour-active-theme);--colour-border: var(--colour-border-theme);--colour-brand: var(--colour-primary);--btn-bg: var(--colour-warning);--btn-text: var(--colour-primary);--btn-hover-text: var(--colour-primary);--btn-tertiary-bg: var(--colour-primary);--btn-tertiary-hover-text: white;--colour-admin: var(--colour-admin-theme)}.nav__menu--secondary>.container>.list-unstyled>li:hover ul .text-primary,.nav__menu--secondary>.container>.list-unstyled>li:focus ul .text-primary,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul .text-primary{color:var(--colour-primary)!important}.nav__menu--secondary>.container>.list-unstyled>li:hover ul li,.nav__menu--secondary>.container>.list-unstyled>li:focus ul li,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul li{padding-inline:1.5rem}.nav__menu--secondary>.container>.list-unstyled>li:hover ul li:last-child,.nav__menu--secondary>.container>.list-unstyled>li:focus ul li:last-child,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul li:last-child{padding-bottom:1rem}.nav__menu--secondary>.container>.list-unstyled>li:hover ul li.nav__download,.nav__menu--secondary>.container>.list-unstyled>li:focus ul li.nav__download,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul li.nav__download{background:var(--colour-admin);padding-top:1rem}.nav__menu--secondary>.container>.list-unstyled>li:hover ul li.nav__download+li.nav__download,.nav__menu--secondary>.container>.list-unstyled>li:focus ul li.nav__download+li.nav__download,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul li.nav__download+li.nav__download{padding-top:0}.nav__menu--secondary>.container>.list-unstyled>li:hover ul a,.nav__menu--secondary>.container>.list-unstyled>li:focus ul a,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul a{white-space:nowrap;padding:0;line-height:3rem}.nav__menu--secondary>.container>.list-unstyled>li:hover ul a .icon,.nav__menu--secondary>.container>.list-unstyled>li:focus ul a .icon,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul a .icon{display:inline-block;font-size:1.5em;padding:0;margin:-.15em .25em 0 0}.nav__menu--secondary>.container>.logout-button{display:none}}@media screen and (min-width: 62em){.nav__menu--account>.container:first-child{display:none}.nav__menu--account>.container:not(:first-child){display:flex;flex-wrap:wrap;gap:2rem;align-items:start}.nav__menu--account>.container:not(:first-child):before{display:none}.nav__menu--account>.container:not(:first-child)>.row,.nav__menu--account>.container:not(:first-child) .nav__featured-link,.nav__menu--account>.container:not(:first-child) .credits{flex-basis:22%;flex-grow:1;margin:0}.nav__menu--account>.container:not(:first-child)>.row>.col:first-child,.nav__menu--account>.container:not(:first-child) .nav__featured-link>.row>.col:first-child{max-width:100%!important;width:100%;flex-shrink:0;min-width:100%;margin-bottom:1rem}.nav__menu--account>.container:not(:first-child) .logout-button{min-width:100%}}@media screen and (min-width: 62em){.nav .list-unstyled>li details.nav__mega-menu{position:static;height:4.5rem;margin-bottom:-5rem}}.nav .list-unstyled>li details.nav__mega-menu .inner{z-index:5}.nav .list-unstyled>li details.nav__mega-menu .inner [class*=bg-]{--bs-bg-opacity: 0}@media screen and (min-width: 62em){.nav .list-unstyled>li details.nav__mega-menu .inner [class*=bg-]{--bs-bg-opacity: 1}}@media screen and (min-width: 62em){.nav .list-unstyled>li details.nav__mega-menu .inner{--bs-bg-opacity: 1;position:absolute;top:100%;left:50%;width:100vw!important;max-width:100vw!important;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translate(-50%);background:rgba(0,0,0,.6);height:calc(100vh - 8rem);pointer-events:none;padding-top:0}.nav .list-unstyled>li details.nav__mega-menu .inner .container{padding:0 1.5rem 1rem!important;max-width:90rem!important;text-align:left;pointer-events:all;display:flex}.nav .list-unstyled>li details.nav__mega-menu .inner .container>div{padding:2.25rem}}.nav--inline-search .nav__menu form{position:relative}.nav--inline-search .nav__menu form .form-control__wrapper .form-control{padding-right:3rem}.nav--inline-search .nav__menu form button{position:absolute;bottom:0;right:0;margin:0;z-index:var(--index-focus);border-color:transparent;background:transparent;padding:.85rem 0rem}.nav--inline-search .nav__menu form button .icon{stroke:currentColor}@media screen and (min-width: 62em){.nav--inline-search .nav__menu>.list-unstyled{text-align:left;margin-right:0!important}.nav--inline-search .nav__menu form{min-width:21.875rem;position:relative}.nav--inline-search .nav__menu form .form-control__wrapper{margin-bottom:0;display:flex;align-items:center}.nav--inline-search .nav__menu form .form-control__wrapper label{white-space:nowrap;padding-right:1rem}.nav--inline-search .nav__menu form .form-control__wrapper .form-control{padding:.4375rem 3rem .4375rem 1rem}.nav--inline-search .nav__menu form button{padding:.5rem 0rem}}@media screen and (min-width: 62em){.nav--admin .nav__logo{height:3rem}.nav--admin .nav__logo .brand{font-size:3rem}}.nav--just-account .nav__menu,.nav--just-account .nav__account-btn{display:none!important}@media screen and (min-width: 62em){.nav--just-account .nav__menu,.nav--just-account .nav__account-btn{display:block!important}}.nav--just-account #showMenu:checked~.nav__menu--account{height:100vh;overflow:visible;overflow-x:auto;left:0;pointer-events:none;background:transparent}@media screen and (min-width: 36em){.nav--just-account #showMenu:checked~.nav__menu--account{width:23.4375rem;left:calc(100% - 23.4375rem)}}.nav--just-account #showMenu:checked~.nav__menu--account>.container:first-child{opacity:0}.nav--just-account #showMenu:checked~.nav__menu--account>.container:not(:first-child){pointer-events:all}.modal{display:none}.modal:target{display:block;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.25);z-index:var(--index-overlay);border:none;overscroll-behavior:contain}.modal:target>a:first-child{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 512 512'%3e%3cg transform='rotate(45 256 256)'%3e%3crect id='r' x='16' y='216' width='480' height='80' rx='14'/%3e%3cuse href='%23r' transform='rotate(90 256 256)'/%3e%3c/g%3e%3c/svg%3e") 8 8,pointer}.modal:target>button{display:none}@media screen and (min-width: 62em){.modal:target>button{display:block;position:absolute;z-index:var(--index-focus);top:50%;transform:translateY(-50%);overflow:hidden;text-indent:300%;width:2rem;height:2rem}.modal:target>button.btn:not(:hover):not(:focus){background-color:#fff}.modal:target>button.modal__dock--left{right:calc(50% + 26.625rem)}.modal:target>button.modal__dock--left:after{transform:rotate(-180deg)}.modal:target>button.modal__dock--right{left:calc(50% + 26.625rem)}}.modal:target.modal--left button.modal__dock--left{display:none}.modal:target.modal--left button.modal__dock--right{left:42rem}.modal:target.modal--right button.modal__dock--right{display:none}.modal:target.modal--right button.modal__dock--left{right:42rem}.modal__outer{position:absolute;top:50%;left:50%;width:90%;max-width:51.25rem;height:fit-content;max-height:90%;overflow:visible;transform:translate(-50%,-50%)}.modal__outer>.btn:first-child{position:absolute;top:0;right:0;margin-top:-.75rem;margin-right:-.75rem;z-index:var(--index-focus)}.modal__outer>.btn:first-child:not(:hover):not(:focus):not(:active){background:white}@media screen and (min-width: 62em){.modal--left .modal__outer{left:1rem;transform:translateY(-50%);max-width:40rem}.modal--right .modal__outer{left:auto;right:1rem;transform:translateY(-50%);max-width:40rem}}.modal__inner{background:white;overscroll-behavior:contain;height:fit-content;max-height:90vh;overflow:auto}.modal__inner>*:first-child{padding:1rem}@media screen and (min-width: 36em){.modal__inner>*:first-child{padding:2rem}}.stepper{background:#f0f0f0;display:flex;flex-wrap:wrap;margin-bottom:2rem;border:1px solid var(--body-bg);overflow:hidden}@media screen and (min-width: 62em){.stepper{flex-wrap:nowrap;overflow-x:auto}}.stepper ol{margin:0;z-index:1;background:var(--body-bg);counter-reset:section;width:100%;overflow:auto}@media screen and (min-width: 36em){.stepper ol{display:flex;flex-grow:1;padding-right:calc(2rem + 1px);margin-top:-1px;margin-bottom:-1px;margin-right:calc(-2rem - 2px);clip-path:polygon(0 0,calc(100% - 2rem) 0,100% 50%,calc(100% - 2rem) 100%,0 100%)}}@media screen and (min-width: 62em){.stepper ol{overflow:initial}}.stepper ol li{width:100%;max-width:100%;background:var(--body-bg);padding:1px}@media screen and (min-width: 36em){.stepper ol li:first-child a{padding-left:1rem;clip-path:polygon(0 0,calc(100% - 2rem) 0,100% 50%,calc(100% - 2rem) 100%,0 100%)}}@media screen and (min-width: 62em){.stepper ol li:first-child a{padding-left:2rem}}.stepper ol li a{display:block;padding:1rem;text-decoration:none;background:var(--colour-muted);line-height:1;position:relative;color:var(--colour-primary)}@media screen and (min-width: 36em){.stepper ol li a{margin-right:-2rem;padding:2rem 3rem;clip-path:polygon(0 0,calc(100% - 2rem) 0,100% 50%,calc(100% - 2rem) 100%,0 100%,2rem 50%);display:flex;height:100%;vertical-align:baseline;justify-content:center;align-items:center}}.stepper ol li a span{position:relative;display:inline;padding-left:2.25rem}.stepper ol li a span:before{counter-increment:section;content:counter(section);display:block;position:absolute;top:50%;left:0;transform:translateY(-50%);margin-right:.5rem;font-size:.75em;border-radius:50%;border:2px solid currentColor;height:1.5rem;line-height:1.3rem;width:1.5rem;font-family:var(--font-heading);text-align:center}.stepper ol li a.bg-warning span:before,.stepper ol li a.bg-danger span:before{content:"!"}.stepper ol li a.bg-success span:before{content:"\2713";text-indent:-.1em}.stepper ol li a.current{background:var(--colour-primary);color:#fff;pointer-events:none}.stepper ol li a:not([href]){pointer-events:none}.stepper ol li a[href]:hover{opacity:.6}.stepper ol li a[href]:active{opacity:.8}.stepper>span{width:100%;display:flex;padding:1rem;flex-shrink:0;margin:0;position:relative;z-index:0;align-items:center}.stepper>span.stepper__end{display:none}@media screen and (min-width: 62em){.stepper>span{width:max-content;padding:2rem}.stepper>span.stepper__end{padding-left:3.5rem;display:flex}}.tabs{position:relative}.tabs>.tabs__links{margin-bottom:1.5rem;overflow:hidden}.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn){--is-current: 0;font-weight:700;font-family:var(--font-heading);font-size:1.125rem;cursor:pointer;margin:0 0 .5rem;float:left;clear:both;padding:0}@media screen and (min-width: 36em){.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn){clear:none;margin-bottom:0;margin-right:2rem}}.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn):before{width:0;width:calc(var(--is-current) * 100%)}.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn):hover:before,.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn):focus:before,.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn).focus:before{width:100%}.tabs .tabs__links .link:not(.text-decoration-none):not(.btn)[aria-pressed=true]{--is-current: 1;--panel-tab-colour: white;--panel-tab-border: var(--colour-secondary) }.admin-panel .tabs__links,:host(.admin-panel) .tabs__links{margin-top:-3px!important;margin-left:calc(var(--panel-gutter) * -1);margin-right:calc(var(--panel-gutter) * -1);display:flex;flex-direction:column;background-color:var(--body-bg);border-bottom:2px solid var(--colour-border-light);margin-bottom:var(--panel-gutter)}@media screen and (min-width: 36em){.admin-panel .tabs__links,:host(.admin-panel) .tabs__links{flex-direction:row;border-top:1px solid var(--colour-border-light)}}.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn),:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn){padding:var(--panel-gutter);margin:0;width:100%;background:var(--panel-tab-colour);border-top:1px solid var(--colour-border-light);border-left:3px solid var(--panel-tab-border, #fafafa);text-align:left}.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn):before,:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn):before{display:none}@media screen and (min-width: 36em){.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn),:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn){margin-right:0!important;border-top:3px solid var(--panel-tab-border, #fafafa)}.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn):first-child,:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn):first-child{border-left:none!important}.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn):not(:first-child),:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn):not(:first-child){border-left:1px solid var(--colour-border-light)!important}}:host(.admin-panel){display:block}.alert__inner{position:relative;padding:1.5rem;margin-bottom:2rem;border-radius:.375rem}.alert__inner:not(.bg-primary):not(.bg-dark):not(.bg-danger){--colour-body: black;color:#000}.alert__inner>*:last-child{margin-bottom:0}.alert__inner>*{max-width:100%}.alert--fixed{position:fixed;padding-top:2rem;z-index:var(--index-floating);left:50%;transform:translate(-50%);bottom:0}.alert--dismissible .alert__inner{padding-right:4rem;overflow:hidden}.alert--dismissible .alert__inner .btn-close{position:absolute;top:1.5rem;right:1.5rem;height:1rem;width:1rem;padding:0;border:none;z-index:var(--index-focus);background:currentColor;mask-image:var(--icon-close);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%}.alert__holder{position:fixed;z-index:var(--index-floating);bottom:0;left:0;width:100%;max-height:100vh;overflow:auto;background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.4))}.alert__holder>*:first-child{margin-top:2rem}.alert__holder .alert--fixed{position:static;transform:none;padding-top:0}[data-timeout] .alert__inner:after{content:"";position:absolute;bottom:0;left:0;width:0%;height:.25rem;background:black;animation:progress var(--animation-length) linear}@keyframes progress{0%{width:0%}to{width:100%}}
1
+ @charset "UTF-8";.carousel{padding-bottom:3rem}.carousel .carousel__wrapper{position:relative}.carousel .carousel__inner{--gutter-x: 1rem;overflow:auto;scroll-snap-type:x mandatory;margin-right:calc(var(--gutter-x) * -.5);margin-left:calc(var(--gutter-x) * -.5)}.carousel .carousel__inner>.row{flex-wrap:nowrap;margin:0}.carousel .carousel__inner>.row>.col{padding-top:2.25rem;padding-bottom:1.5rem;scroll-snap-align:start;scroll-padding:calc(var(--gutter-x) * -1)}.carousel .carousel__item>*:last-child{margin-bottom:0;padding-bottom:0}body.js-enabled .carousel__inner{scrollbar-width:none;-ms-overflow-style:none}body.js-enabled .carousel__inner::-webkit-scrollbar{display:none}.carousel:not(.hide-controls){padding-bottom:4.5rem!important}.carousel.hide-controls .carousel__controls{display:none}.carousel .carousel__controls{position:absolute;text-align:center;width:auto;left:0;width:calc(100% + 2rem);margin-left:-1rem;margin-right:-1rem;bottom:-3rem}.carousel .carousel__controls a{width:1rem;height:1rem;min-height:1rem;border-radius:50%;text-indent:-50rem;overflow:hidden;background:currentColor;padding:0;margin:0 .5rem .5rem}.carousel .carousel__controls a:before{display:none}.carousel .carousel__controls a:first-child:last-child{display:none}.carousel .carousel__controls>a:nth-child(10)~a{display:none}.carousel.hide-btns .carousel__wrapper>.btn{display:none}.carousel:not(.hide-btns) .carousel__inner{margin-left:1.75rem;margin-right:1.75rem}.carousel .carousel__wrapper>.btn{position:absolute;top:50%;left:-1.25rem;transform:translateY(-50%)}.carousel .carousel__wrapper>.btn.btn-next{left:auto;right:-1.25rem}@media screen and (min-width: 62em){.carousel .carousel__wrapper>.btn{margin-left:-1rem;margin-right:-1rem}}.carousel .carousel__inner>.row>.col:first-child{margin-left:0!important}@media screen and (min-width: 36em){.carousel .carousel__controls>a:nth-child(10)~a{display:inline-block}.carousel .carousel__inner>.row[class*=row-cols-sm-]>.col{scroll-snap-align:unset}.carousel .carousel__inner>.row-cols-sm-2>.col:nth-child(odd),.carousel .carousel__inner>.row-cols-sm-3>.col:nth-child(3n+1),.carousel .carousel__inner>.row-cols-sm-4>.col:nth-child(4n+1),.carousel .carousel__inner>.row-cols-sm-5>.col:nth-child(5n+1),.carousel .carousel__inner>.row-cols-sm-6>.col:nth-child(6n+1){scroll-snap-align:start}body:not(.js-enabled) .carousel .carousel__inner>.row-cols-sm-2>.col:nth-child(odd),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-sm-3>.col:nth-child(3n+1),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-sm-4>.col:nth-child(4n+1),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-sm-5>.col:nth-child(5n+1),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-sm-6>.col:nth-child(6n+1){margin-left:4rem}.carousel .carousel__controls.cols-sm-2>a:not(:nth-child(odd)),.carousel .carousel__controls.cols-sm-3>a:not(:nth-child(3n+1)),.carousel .carousel__controls.cols-sm-4>a:not(:nth-child(4n+1)),.carousel .carousel__controls.cols-sm-5>a:not(:nth-child(5n+1)),.carousel .carousel__controls.cols-sm-6>a:not(:nth-child(6n+1)){display:none}.carousel .carousel__controls.cols-sm-2>a:first-child:nth-last-child(2),.carousel .carousel__controls.cols-sm-3>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3)),.carousel .carousel__controls.cols-sm-4>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4)),.carousel .carousel__controls.cols-sm-5>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5)),.carousel .carousel__controls.cols-sm-6>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5),a:first-child:nth-last-child(6)){display:none}.carousel.hide-sm-btns .carousel__wrapper>.btn{display:none}.carousel.hide-sm-btns .carousel__inner{margin-left:0;margin-right:0}}@media screen and (min-width: 62em){.carousel .carousel__inner>.row[class*=row-cols-md-]>.col{scroll-snap-align:unset;margin-left:0}.carousel .carousel__inner>.row-cols-md-2>.col:nth-child(odd),.carousel .carousel__inner>.row-cols-md-3>.col:nth-child(3n+1),.carousel .carousel__inner>.row-cols-md-4>.col:nth-child(4n+1),.carousel .carousel__inner>.row-cols-md-5>.col:nth-child(5n+1),.carousel .carousel__inner>.row-cols-md-6>.col:nth-child(6n+1){scroll-snap-align:start}body:not(.js-enabled) .carousel .carousel__inner>.row-cols-md-2>.col:nth-child(odd),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-md-3>.col:nth-child(3n+1),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-md-4>.col:nth-child(4n+1),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-md-5>.col:nth-child(5n+1),body:not(.js-enabled) .carousel .carousel__inner>.row-cols-md-6>.col:nth-child(6n+1){margin-left:50vw}.carousel .carousel__controls.cols-md-2>a:not(:nth-child(odd)),.carousel .carousel__controls.cols-md-3>a:not(:nth-child(3n+1)),.carousel .carousel__controls.cols-md-4>a:not(:nth-child(4n+1)),.carousel .carousel__controls.cols-md-5>a:not(:nth-child(5n+1)),.carousel .carousel__controls.cols-md-6>a:not(:nth-child(6n+1)){display:none}.carousel .carousel__controls.cols-md-2>a:first-child:nth-last-child(2),.carousel .carousel__controls.cols-md-3>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3)),.carousel .carousel__controls.cols-md-4>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4)),.carousel .carousel__controls.cols-md-5>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5)),.carousel .carousel__controls.cols-md-6>:is(a:first-child:nth-last-child(2),a:first-child:nth-last-child(3),a:first-child:nth-last-child(4),a:first-child:nth-last-child(5),a:first-child:nth-last-child(6)){display:none}.carousel.hide-md-btns .carousel__wrapper>.btn{display:none}.carousel.hide-md-btns .carousel__inner{margin-left:0;margin-right:0}}.testimonial{--testimonial-padding: 1rem;--testimonial-spacing: 1rem}@media screen and (min-width: 62em){.testimonial{--testimonial-padding: 4rem;--testimonial-spacing: 2rem}}.testimonial>div:first-child{position:relative;overflow:hidden}.testimonial .circle{color:currentColor;position:absolute;top:-18rem;right:-8rem;font-size:28rem;border-width:4px}.testimonial__images{overflow:auto;scroll-snap-type:x mandatory;display:flex;user-select:none;touch-action:pan-x;height:14.375rem}@media screen and (min-width: 36em){.testimonial__images{height:21.25rem}}@media screen and (min-width: 62em){.testimonial__images{min-height:100%;scroll-snap-type:y mandatory;flex-direction:column;touch-action:pan-y}}.testimonial__images img{scroll-snap-align:start;user-select:none;pointer-events:none;flex-shrink:0}.testimonial .testimonial__controls{display:none}.testimonial.testimonial--multi .testimonial__controls{display:block;position:absolute;bottom:0;left:50%;transform:translate(-50%,50%)}@media screen and (min-width: 62em){.testimonial.testimonial--multi .testimonial__controls{left:auto;bottom:auto;right:0;top:50%;transform:rotate(90deg) translateY(-120%);transform-origin:center}}.testimonial h2{padding:2rem var(--testimonial-padding) 0 var(--testimonial-padding)}@media screen and (min-width: 36em){.testimonial h2{padding-top:3rem}}@media screen and (min-width: 62em){.testimonial h2{padding-top:9rem}}.testimonial__content{--display-none: none;margin:0 var(--testimonial-padding) var(--testimonial-spacing) var(--testimonial-padding);position:relative}@media screen and (min-width: 62em){.testimonial__content{--display-none: block}.testimonial__content blockquote:not(.largest){position:absolute;top:0}}.testimonial[data-show="1"] blockquote:not(:nth-child(1)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="2"] blockquote:not(:nth-child(2)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="3"] blockquote:not(:nth-child(3)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="4"] blockquote:not(:nth-child(4)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="5"] blockquote:not(:nth-child(5)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="6"] blockquote:not(:nth-child(6)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="7"] blockquote:not(:nth-child(7)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="8"] blockquote:not(:nth-child(8)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="9"] blockquote:not(:nth-child(9)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial[data-show="10"] blockquote:not(:nth-child(10)){display:var(--display-none);opacity:0;user-select:none;pointer-events:none}.testimonial__after{padding:1rem var(--testimonial-padding) var(--testimonial-spacing) var(--testimonial-padding)}.testimonial__images::-webkit-scrollbar{display:none}.testimonial__images{-ms-overflow-style:none;scrollbar-width:none}.property-searchbar fieldset{position:relative}@media screen and (min-width: 62em){.property-searchbar fieldset{position:relative;padding-right:1.5rem}.property-searchbar fieldset:after{content:"";position:absolute;top:0;right:.5rem;display:block;height:100%;width:1px;background-color:var(--colour-muted);opacity:.25}}.property-searchbar .form-control__wrapper{margin-bottom:1rem}@media screen and (min-width: 62em){.property-searchbar .form-control__wrapper{margin-bottom:0}}.property-searchbar .form-label,.property-searchbar label{font-size:.875rem;text-transform:uppercase}@media screen and (min-width: 62em){.property-searchbar .row .row .form-label{display:none}.property-searchbar .form-control,.property-searchbar .form-select{padding:.5rem 1.5rem .5rem .5rem}.property-searchbar .form-select{background-position:right .5rem center}}.property-searchbar .input--locations{padding-right:5.5rem}.property-searchbar .select--miles{position:absolute;bottom:0rem;right:.5rem;width:5rem}@media screen and (min-width: 62em){.property-searchbar .select--miles{right:1.5rem}}.property-searchbar .select--miles label{display:none}.property-searchbar .select--miles select{background-color:transparent;border-color:transparent}@media screen and (min-width: 62em){.property-searchbar .property-searchbar__btn{align-items:flex-end}}.property-searchbar button{margin-top:1rem;margin-bottom:1rem}@media screen and (min-width: 62em){.property-searchbar button{margin:0;padding-left:3.5rem;padding-right:3.5rem}}.property-searchbar--hero .property-searchbar{--colour-body: var(--colour-body-theme);--colour-heading: var(--colour-primary);--colour-link: var(--colour-link-theme);--colour-hover: var(--colour-hover-theme);--colour-active: var(--colour-active-theme);--colour-border: var(--colour-border-theme);--colour-brand: var(--colour-primary);--btn-bg: var(--colour-warning);--btn-text: var(--colour-primary);--btn-hover-text: var(--colour-primary);--btn-tertiary-bg: var(--colour-primary);--btn-tertiary-hover-text: white;padding:1rem;background-color:#fff;width:100%;border-radius:.625rem;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.24);box-shadow:0 2px 4px #0000003d;position:relative}.property-searchbar--hero .property-searchbar .text-primary{color:var(--colour-primary)!important}@media screen and (min-width: 62em){.property-searchbar--hero .property-searchbar{border-radius:3rem;padding:1.5rem 2.5rem}.property-searchbar--hero .property-searchbar .form-label,.property-searchbar--hero .property-searchbar label{margin-bottom:0}.property-searchbar--hero .property-searchbar .form-control,.property-searchbar--hero .property-searchbar .form-select{margin-left:-.5rem;border:none;padding-top:.25rem;padding-bottom:.25rem}.property-searchbar--hero .property-searchbar .form-select{background-position:right 0rem center;padding-right:1rem}.property-searchbar--hero .property-searchbar .property-searchbar__btn{align-items:center}}.nav .nav__mobile-bar{background:var(--colour-primary);color:#fff;--colour-body: #FCFCFC;--colour-heading: #FCFCFC;--colour-link: #FCFCFC;--colour-hover: #FCFCFC;--colour-border: #FCFCFC;--colour-brand: #FCFCFC;--btn-bg: #FCFCFC;--btn-text: var(--colour-primary);--btn-hover-text: var(--colour-heading);--btn-tertiary-bg: #FCFCFC;--btn-tertiary-hover-text: var(--colour-primary);display:flex;flex-direction:column;flex-wrap:nowrap;width:23.4375rem}@media screen and (min-width: 36em){.nav .nav__mobile-bar{width:100%}}.nav .nav__mobile-bar>.container{padding-top:1rem;padding-bottom:1rem;flex-shrink:0;overflow:visible}.nav{overflow-x:hidden;font-weight:700}.nav__inner,.nav__menu--account{display:flex;flex-direction:column;flex-wrap:nowrap}.nav__inner>.container,.nav__menu--account>.container{padding-top:1rem;padding-bottom:0;flex-shrink:0;overflow:visible;z-index:unset}.nav__menu{padding-top:2.25rem;padding-bottom:1rem}.nav .brand{font-size:2.25rem}@media screen and (min-width: 62em){.nav .brand{font-size:3.75rem}}.nav__logo img{height:2.25rem;width:auto}@media screen and (min-width: 36em){.nav__logo img{height:3.75rem;width:auto}}.nav__search-btn,.nav__menu-btn{display:flex}.nav__search-btn label,.nav__menu-btn label{height:1.125rem;width:1.5rem;text-indent:-300%;overflow:hidden;position:relative;cursor:pointer;color:var(--colour-link)}.nav__search-btn label:hover,.nav__search-btn label:focus,.nav__menu-btn label:hover,.nav__menu-btn label:focus{color:var(--colour-hover)}.nav__search-btn label:active,.nav__menu-btn label:active{color:var(--colour-active)}.nav__search-btn label:before,.nav__search-btn label:after,.nav__menu-btn label:before,.nav__menu-btn label:after{content:"";position:absolute;width:0%;height:2px;top:calc(50% - 1px);left:0;background:currentColor;transform-origin:50% 50%;transition:transform .5s,width .5s}.nav__search-btn label{text-indent:0;overflow:visible}.nav__search-btn .icon{height:2rem;width:2rem;margin-top:-.5rem;margin-left:-.0625rem;transition:opacity .5s;color:inherit}.nav__search-btn .icon__outline{stroke-width:2px;stroke:currentColor}.nav__menu-btn{display:flex}.nav__menu-btn label{border-top:2px solid currentColor;border-bottom:2px solid currentColor}.nav__menu-btn label:before,.nav__menu-btn label:after{width:100%}.nav__account-btn label{font-size:1.125rem;text-indent:0;overflow:visible;color:var(--colour-body);height:3rem;line-height:3rem;display:block;border-top:1px solid var(--colour-border);border-bottom:1px solid var(--colour-border)}.nav__account-btn .icon{height:1.75rem;width:1.75rem;margin-top:-.5rem;margin-right:.5rem;transition:opacity .5s;color:inherit}.nav__account-btn .icon__outline{stroke-width:2px;stroke:currentColor}.nav__menu>ul{margin-bottom:0}.nav__menu>ul>li>a{font-size:1.125rem;line-height:2rem;display:inline-block;position:relative;text-decoration:none}.nav__menu>ul>li>a.current{border-left:.375rem solid var(--colour-info);margin-left:-1.25rem;padding-left:.875rem}@media screen and (min-width: 62em){.nav__menu--search{display:none}#showSearch:checked~.nav__inner>.nav__menu--search{order:2;position:absolute;top:100%;left:0;width:100%;background:rgba(0,0,0,.6);height:calc(100vh - 5rem);display:block}}.services{line-height:2rem}.services li{display:flex;justify-content:space-between}.services .service--active:before{content:"";height:1em;width:1em;display:inline-block;background:var(--colour-secondary);margin-right:.5rem;margin-bottom:-.1em;border-radius:50%}.credits{border:2px solid var(--colour-primary);padding:1rem;margin-bottom:2rem;border-radius:.625rem}.credits .h5,.credits ul{padding-inline:1rem}.credits>*:last-child{margin-bottom:0!important}.nav[class*=bg-] .nav__inner{background-color:transparent}.nav__menu--secondary{flex-grow:1;font-weight:700}.nav__menu--secondary .nav__section-link{pointer-events:none;font-weight:700;color:var(--colour-link);font-size:1.125rem}.nav__menu--secondary>.container>ul>li{padding-block:.375rem}.nav__menu--secondary>.container>ul>li:not(:last-child){border-bottom:1px solid var(--colour-border)}.nav__menu--secondary>.container>ul>li a{display:inline-block;font-size:1.125rem;line-height:2.25rem;text-decoration:none;font-weight:700}.nav__menu--secondary>.container>ul>li ul{padding:0}.nav__menu--secondary>.container>ul>li ul a{font-weight:400}.nav__menu--secondary>.container>ul>li ul a .icon{display:none}.nav{position:sticky;top:0;left:0;width:100%;z-index:var(--index-menu)}.nav.is-stuck{-webkit-box-shadow:0 4px 20px -10px rgba(51,51,51,.25);box-shadow:0 4px 20px -10px #33333340}nav+main>*:first-child{padding-top:2rem}.nav__menu,.nav__btn,.nav__menu--secondary{display:none}.nav__inner,.nav__menu--account{position:absolute;top:0;left:100%;background:var(--body-bg);z-index:2;width:100%;overscroll-behavior:contain}@media screen and (min-width: 36em){.nav__inner,.nav__menu--account{width:23.4375rem}}.nav__menu--account{z-index:2;height:100vh}.nav:has(#showMenu:checked){min-height:100vh}#showMenu:checked~.nav__inner,#showAccount:checked~.nav__menu--account{height:100vh;overflow:visible;overflow-x:auto;left:0}@media screen and (min-width: 36em){#showMenu:checked~.nav__inner,#showAccount:checked~.nav__menu--account{left:calc(100% - 23.4375rem)}}@media screen and (min-width: 62em){#showAccount~.nav__menu--account{display:none}#showAccount:checked~.nav__menu--account{left:0;width:100%;height:auto;display:block;top:6rem;border-top:.3125rem solid var(--colour-primary);border-bottom:1px solid var(--colour-border-light);-webkit-box-shadow:0px 3px 6px 0px rgba(0,0,0,.16);-moz-box-shadow:0px 3px 6px 0px rgba(0,0,0,.16);box-shadow:0 3px 6px #00000029}}#showMenu:checked~div .nav__menu,#showMenu:checked~div .nav__btn,#showMenu:checked~div .nav__menu--secondary,#showMenu:not(:checked)~#showSearch:checked~div .nav__menu--search{display:block}#showMenu:checked~div .nav__menu-btn label,#showSearch:checked~div .nav__search-btn label{border:0}#showMenu:checked~div .nav__menu-btn label .icon,#showSearch:checked~div .nav__search-btn label .icon{opacity:0}#showMenu:checked~div .nav__menu-btn label:before,#showSearch:checked~div .nav__search-btn label:before{width:100%;transform:rotate(45deg)}#showMenu:checked~div .nav__menu-btn label:after,#showSearch:checked~div .nav__search-btn label:after{width:100%;transform:rotate(-45deg)}@media screen and (min-width: 36em){#showMenu:checked~.nav__bg{content:" ";position:absolute;top:0;left:0;width:100vw;height:100vh;background:rgba(0,0,0,.5);z-index:1}}@media screen and (min-width: 62em){.nav__bg{display:none}}@media screen and (min-width: 62em){.nav .nav__mobile-bar{display:none}.nav__logo{height:4rem}#showMenu:checked~.nav__inner,.nav__inner{overflow:visible;position:static;width:100%}.nav .nav__menu{display:flex;padding-bottom:0}.nav__btn,.nav__menu--secondary{display:flex}.nav .nav__inner>.container{padding-bottom:1rem}.nav__search-btn,.nav__btn{order:2;margin-left:1rem}.nav__search-btn .btn,.nav__btn .btn{margin-bottom:0}.nav__menu{padding-top:0}.nav__menu>.list-unstyled{margin-left:-1.5rem!important;margin-right:-1.5rem!important;width:calc(100% + 3rem);margin-bottom:0;padding-top:0;padding-left:1.5rem;padding-right:1.5rem}.nav__menu>.list-unstyled>li{display:inline-block;padding-left:1rem;padding-right:1rem}.nav__menu>.list-unstyled>li:not(:last-child){border-right:1px solid var(--colour-border)}.nav__menu>.list-unstyled>li>a{line-height:1.75rem}.nav__menu>.list-unstyled>li>a.current{border-left:none;padding-left:0;border-bottom:.1875rem solid var(--colour-info)}.nav__account-btn{max-width:fit-content!important}.nav__account-btn label{border:none!important;padding-top:.5rem;position:relative;padding-right:2.5rem}.nav__account-btn label:after{content:"";position:absolute;top:calc(50% + .5rem);right:0;width:1.5em;height:1.5em;background:currentColor;mask-image:var(--icon-arrow);mask-size:50%;mask-repeat:no-repeat;mask-position:50% 50%;-webkit-mask-image:var(--icon-arrow);-webkit-mask-size:50%;-webkit-mask-repeat:no-repeat;-webkit-mask-position:50% 50%;transition:transform .2s ease-in-out;transform:rotate(90deg) translate(-50%)}.nav .nav__menu--secondary>.container>.list-unstyled{font-size:.9375rem;padding-top:0}}@media screen and (min-width: 62em){.nav__menu--secondary{background-color:var(--colour-primary);--colour-body: #FCFCFC;--colour-heading: #FCFCFC;--colour-link: #FCFCFC;--colour-hover: #FCFCFC;--colour-border: #FCFCFC;--colour-brand: #FCFCFC;--btn-bg: #FCFCFC;--btn-text: var(--colour-primary);--btn-hover-text: var(--colour-heading);--btn-tertiary-bg: #FCFCFC;--btn-tertiary-hover-text: var(--colour-primary)}.nav__menu--secondary .nav__section-link{pointer-events:all}.nav__menu--secondary>.container{padding-bottom:0}.nav__menu--secondary>.container>.list-unstyled{margin-left:-1rem!important;margin-right:-1rem!important;width:calc(100% + 2rem);margin-bottom:0}.nav__menu--secondary>.container>.list-unstyled>li{display:inline-block;padding-left:1rem;padding-right:1rem;border:none!important;padding-block:0;position:relative}.nav__menu--secondary>.container>.list-unstyled>li a,.nav__menu--secondary>.container>.list-unstyled>li .nav__section-link{display:block;line-height:2.25rem;padding-block:.5rem;cursor:pointer}.nav__menu--secondary>.container>.list-unstyled>li ul{display:none}.nav__menu--secondary>.container>.list-unstyled>li:hover>.nav__section-link,.nav__menu--secondary>.container>.list-unstyled>li:focus>.nav__section-link,.nav__menu--secondary>.container>.list-unstyled>li:focus-within>.nav__section-link{color:var(--colour-selected)}.nav__menu--secondary>.container>.list-unstyled>li:hover ul,.nav__menu--secondary>.container>.list-unstyled>li:focus ul,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul{display:block;background:white;position:absolute;top:100%;left:0;padding-top:1rem;-webkit-box-shadow:0 4px 20px -10px rgba(51,51,51,.25);box-shadow:0 4px 20px -10px #33333340;--colour-body: var(--colour-body-theme);--colour-heading: var(--colour-primary);--colour-link: var(--colour-link-theme);--colour-hover: var(--colour-hover-theme);--colour-active: var(--colour-active-theme);--colour-border: var(--colour-border-theme);--colour-brand: var(--colour-primary);--btn-bg: var(--colour-warning);--btn-text: var(--colour-primary);--btn-hover-text: var(--colour-primary);--btn-tertiary-bg: var(--colour-primary);--btn-tertiary-hover-text: white;--colour-admin: var(--colour-admin-theme)}.nav__menu--secondary>.container>.list-unstyled>li:hover ul .text-primary,.nav__menu--secondary>.container>.list-unstyled>li:focus ul .text-primary,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul .text-primary{color:var(--colour-primary)!important}.nav__menu--secondary>.container>.list-unstyled>li:hover ul li,.nav__menu--secondary>.container>.list-unstyled>li:focus ul li,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul li{padding-inline:1.5rem}.nav__menu--secondary>.container>.list-unstyled>li:hover ul li:last-child,.nav__menu--secondary>.container>.list-unstyled>li:focus ul li:last-child,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul li:last-child{padding-bottom:1rem}.nav__menu--secondary>.container>.list-unstyled>li:hover ul li.nav__download,.nav__menu--secondary>.container>.list-unstyled>li:focus ul li.nav__download,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul li.nav__download{background:var(--colour-admin);padding-top:1rem}.nav__menu--secondary>.container>.list-unstyled>li:hover ul li.nav__download+li.nav__download,.nav__menu--secondary>.container>.list-unstyled>li:focus ul li.nav__download+li.nav__download,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul li.nav__download+li.nav__download{padding-top:0}.nav__menu--secondary>.container>.list-unstyled>li:hover ul a,.nav__menu--secondary>.container>.list-unstyled>li:focus ul a,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul a{white-space:nowrap;padding:0;line-height:3rem}.nav__menu--secondary>.container>.list-unstyled>li:hover ul a .icon,.nav__menu--secondary>.container>.list-unstyled>li:focus ul a .icon,.nav__menu--secondary>.container>.list-unstyled>li:focus-within ul a .icon{display:inline-block;font-size:1.5em;padding:0;margin:-.15em .25em 0 0}.nav__menu--secondary>.container>.logout-button{display:none}}@media screen and (min-width: 62em){.nav__menu--account>.container:first-child{display:none}.nav__menu--account>.container:not(:first-child){display:flex;flex-wrap:wrap;gap:2rem;align-items:start}.nav__menu--account>.container:not(:first-child):before{display:none}.nav__menu--account>.container:not(:first-child)>.row,.nav__menu--account>.container:not(:first-child) .nav__featured-link,.nav__menu--account>.container:not(:first-child) .credits{flex-basis:22%;flex-grow:1;margin:0}.nav__menu--account>.container:not(:first-child)>.row>.col:first-child,.nav__menu--account>.container:not(:first-child) .nav__featured-link>.row>.col:first-child{max-width:100%!important;width:100%;flex-shrink:0;min-width:100%;margin-bottom:1rem}.nav__menu--account>.container:not(:first-child) .logout-button{min-width:100%}}@media screen and (min-width: 62em){.nav .list-unstyled>li details.nav__mega-menu{position:static;height:4.5rem;margin-bottom:-5rem}}.nav .list-unstyled>li details.nav__mega-menu .inner{z-index:5}.nav .list-unstyled>li details.nav__mega-menu .inner [class*=bg-]{--bs-bg-opacity: 0}@media screen and (min-width: 62em){.nav .list-unstyled>li details.nav__mega-menu .inner [class*=bg-]{--bs-bg-opacity: 1}}@media screen and (min-width: 62em){.nav .list-unstyled>li details.nav__mega-menu .inner{--bs-bg-opacity: 1;position:absolute;top:100%;left:50%;width:100vw!important;max-width:100vw!important;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translate(-50%);background:rgba(0,0,0,.6);height:calc(100vh - 8rem);pointer-events:none;padding-top:0}.nav .list-unstyled>li details.nav__mega-menu .inner .container{padding:0 1.5rem 1rem!important;max-width:90rem!important;text-align:left;pointer-events:all;display:flex}.nav .list-unstyled>li details.nav__mega-menu .inner .container>div{padding:2.25rem}}.nav--inline-search .nav__menu form{position:relative}.nav--inline-search .nav__menu form .form-control__wrapper .form-control{padding-right:3rem}.nav--inline-search .nav__menu form button{position:absolute;bottom:0;right:0;margin:0;z-index:var(--index-focus);border-color:transparent;background:transparent;padding:.85rem 0rem}.nav--inline-search .nav__menu form button .icon{stroke:currentColor}@media screen and (min-width: 62em){.nav--inline-search .nav__menu>.list-unstyled{text-align:left;margin-right:0!important}.nav--inline-search .nav__menu form{min-width:21.875rem;position:relative}.nav--inline-search .nav__menu form .form-control__wrapper{margin-bottom:0;display:flex;align-items:center}.nav--inline-search .nav__menu form .form-control__wrapper label{white-space:nowrap;padding-right:1rem}.nav--inline-search .nav__menu form .form-control__wrapper .form-control{padding:.4375rem 3rem .4375rem 1rem}.nav--inline-search .nav__menu form button{padding:.5rem 0rem}}@media screen and (min-width: 62em){.nav--admin .nav__logo{height:3rem}.nav--admin .nav__logo .brand{font-size:3rem}}.nav--just-account .nav__menu,.nav--just-account .nav__account-btn{display:none!important}@media screen and (min-width: 62em){.nav--just-account .nav__menu,.nav--just-account .nav__account-btn{display:block!important}}.nav--just-account #showMenu:checked~.nav__menu--account{height:100vh;overflow:visible;overflow-x:auto;left:0;pointer-events:none;background:transparent}@media screen and (min-width: 36em){.nav--just-account #showMenu:checked~.nav__menu--account{width:23.4375rem;left:calc(100% - 23.4375rem)}}.nav--just-account #showMenu:checked~.nav__menu--account>.container:first-child{opacity:0}.nav--just-account #showMenu:checked~.nav__menu--account>.container:not(:first-child){pointer-events:all}.stepper{background:#f0f0f0;display:flex;flex-wrap:wrap;margin-bottom:2rem;border:1px solid var(--body-bg);overflow:hidden}@media screen and (min-width: 62em){.stepper{flex-wrap:nowrap;overflow-x:auto}}.stepper ol{margin:0;z-index:1;background:var(--body-bg);counter-reset:section;width:100%;overflow:auto}@media screen and (min-width: 36em){.stepper ol{display:flex;flex-grow:1;padding-right:calc(2rem + 1px);margin-top:-1px;margin-bottom:-1px;margin-right:calc(-2rem - 2px);clip-path:polygon(0 0,calc(100% - 2rem) 0,100% 50%,calc(100% - 2rem) 100%,0 100%)}}@media screen and (min-width: 62em){.stepper ol{overflow:initial}}.stepper ol li{width:100%;max-width:100%;background:var(--body-bg);padding:1px}@media screen and (min-width: 36em){.stepper ol li:first-child a{padding-left:1rem;clip-path:polygon(0 0,calc(100% - 2rem) 0,100% 50%,calc(100% - 2rem) 100%,0 100%)}}@media screen and (min-width: 62em){.stepper ol li:first-child a{padding-left:2rem}}.stepper ol li a{display:block;padding:1rem;text-decoration:none;background:var(--colour-muted);line-height:1;position:relative;color:var(--colour-primary)}@media screen and (min-width: 36em){.stepper ol li a{margin-right:-2rem;padding:2rem 3rem;clip-path:polygon(0 0,calc(100% - 2rem) 0,100% 50%,calc(100% - 2rem) 100%,0 100%,2rem 50%);display:flex;height:100%;vertical-align:baseline;justify-content:center;align-items:center}}.stepper ol li a span{position:relative;display:inline;padding-left:2.25rem}.stepper ol li a span:before{counter-increment:section;content:counter(section);display:block;position:absolute;top:50%;left:0;transform:translateY(-50%);margin-right:.5rem;font-size:.75em;border-radius:50%;border:2px solid currentColor;height:1.5rem;line-height:1.3rem;width:1.5rem;font-family:var(--font-heading);text-align:center}.stepper ol li a.bg-warning span:before,.stepper ol li a.bg-danger span:before{content:"!"}.stepper ol li a.bg-success span:before{content:"\2713";text-indent:-.1em}.stepper ol li a.current{background:var(--colour-primary);color:#fff;pointer-events:none}.stepper ol li a:not([href]){pointer-events:none}.stepper ol li a[href]:hover{opacity:.6}.stepper ol li a[href]:active{opacity:.8}.stepper>span{width:100%;display:flex;padding:1rem;flex-shrink:0;margin:0;position:relative;z-index:0;align-items:center}.stepper>span.stepper__end{display:none}@media screen and (min-width: 62em){.stepper>span{width:max-content;padding:2rem}.stepper>span.stepper__end{padding-left:3.5rem;display:flex}}.tabs{position:relative}.tabs>.tabs__links{margin-bottom:1.5rem;overflow:hidden}.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn){--is-current: 0;font-weight:700;font-family:var(--font-heading);font-size:1.125rem;cursor:pointer;margin:0 0 .5rem;float:left;clear:both;padding:0}@media screen and (min-width: 36em){.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn){clear:none;margin-bottom:0;margin-right:2rem}}.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn):before{width:0;width:calc(var(--is-current) * 100%)}.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn):hover:before,.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn):focus:before,.tabs>.tabs__links .link:not(.text-decoration-none):not(.btn).focus:before{width:100%}.tabs .tabs__links .link:not(.text-decoration-none):not(.btn)[aria-pressed=true]{--is-current: 1;--panel-tab-colour: white;--panel-tab-border: var(--colour-secondary) }.admin-panel .tabs__links,:host(.admin-panel) .tabs__links{margin-top:-3px!important;margin-left:calc(var(--panel-gutter) * -1);margin-right:calc(var(--panel-gutter) * -1);display:flex;flex-direction:column;background-color:var(--body-bg);border-bottom:2px solid var(--colour-border-light);margin-bottom:var(--panel-gutter)}@media screen and (min-width: 36em){.admin-panel .tabs__links,:host(.admin-panel) .tabs__links{flex-direction:row;border-top:1px solid var(--colour-border-light)}}.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn),:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn){padding:var(--panel-gutter);margin:0;width:100%;background:var(--panel-tab-colour);border-top:1px solid var(--colour-border-light);border-left:3px solid var(--panel-tab-border, #fafafa);text-align:left}.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn):before,:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn):before{display:none}@media screen and (min-width: 36em){.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn),:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn){margin-right:0!important;border-top:3px solid var(--panel-tab-border, #fafafa)}.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn):first-child,:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn):first-child{border-left:none!important}.admin-panel .tabs__links .link:not(.text-decoration-none):not(.btn):not(:first-child),:host(.admin-panel) .tabs__links .link:not(.text-decoration-none):not(.btn):not(:first-child){border-left:1px solid var(--colour-border-light)!important}}:host(.admin-panel){display:block}.alert__inner{position:relative;padding:1.5rem;margin-bottom:2rem;border-radius:.375rem}.alert__inner:not(.bg-primary):not(.bg-dark):not(.bg-danger){--colour-body: black;color:#000}.alert__inner>*:last-child{margin-bottom:0}.alert__inner>*{max-width:100%}.alert--fixed{position:fixed;padding-top:2rem;z-index:var(--index-floating);left:50%;transform:translate(-50%);bottom:0}.alert--dismissible .alert__inner{padding-right:4rem;overflow:hidden}.alert--dismissible .alert__inner .btn-close{position:absolute;top:1.5rem;right:1.5rem;height:1rem;width:1rem;padding:0;border:none;z-index:var(--index-focus);background:currentColor;mask-image:var(--icon-close);mask-size:100%;mask-repeat:no-repeat;mask-position:50% 50%}.alert__holder{position:fixed;z-index:var(--index-floating);bottom:0;left:0;width:100%;max-height:100vh;overflow:auto;background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.4))}.alert__holder>*:first-child{margin-top:2rem}.alert__holder .alert--fixed{position:static;transform:none;padding-top:0}[data-timeout] .alert__inner:after{content:"";position:absolute;bottom:0;left:0;width:0%;height:.25rem;background:black;animation:progress var(--animation-length) linear}@keyframes progress{0%{width:0%}to{width:100%}}
package/package.json CHANGED
@@ -5,9 +5,9 @@
5
5
  "name": "iamproperty"
6
6
  },
7
7
  "private": false,
8
- "version": "3.4.6",
8
+ "version": "3.4.7",
9
9
  "scripts": {
10
- "dev": "npm run copy && vite --host",
10
+ "dev": "npm run copy && node local_modules/delete-assets.js && vite --host",
11
11
  "build": "npm run compile && vue-tsc --noEmit && vite build --mode lib",
12
12
  "prepack": "npm run build",
13
13
  "build:docs": "npm run compile && npm run copy && vue-tsc --noEmit && vite build",
@@ -29,11 +29,12 @@
29
29
  "audit": "node local_modules/audit.js",
30
30
  "gen:email": "sass assets/sass/email.scss assets/css/email.min.css --style=compressed && node local_modules/email-css.js",
31
31
  "gen:error": "sass assets/sass/error.scss assets/css/error.min.css --style=compressed && node local_modules/error-css.js",
32
- "test:unit": "jest src",
32
+ "test:vue": "jest src",
33
+ "test:unit": "jest assets/ts/tests",
33
34
  "test:scss": "jest assets/sass/_tests",
34
- "test": "npm run test:unit && npm run test:scss",
35
+ "test": "npm run test:vue && npm run test:unit && npm run test:scss",
35
36
  "visual": "jest tests --updateSnapshot",
36
- "pull-request": "npm run test:unit && npm run test:scss && npm run visual && npm run compile && npm run audit",
37
+ "pull-request": "npm run test && npm run visual && npm run compile && npm run audit",
37
38
  "deploy:fonts": "copyfiles -u 2 assets/fonts/**/* public/assets/fonts",
38
39
  "deploy:svg": "copyfiles -u 2 assets/svg/icons.svg public/svg && copyfiles -u 2 assets/svg/logo.svg public/svg",
39
40
  "deploy:404": "node local_modules/create404.js"
@@ -55,6 +56,7 @@
55
56
  "@rollup/plugin-replace": "^5.0.2",
56
57
  "@rollup/plugin-terser": "^0.4.1",
57
58
  "@rollup/plugin-typescript": "^11.0.0",
59
+ "@testing-library/jest-dom": "^5.16.5",
58
60
  "@types/jest": "^29.5.0",
59
61
  "@vitejs/plugin-vue": "^4.1.0",
60
62
  "@vue/test-utils": "^2.3.2",
@@ -0,0 +1,20 @@
1
+ <template>
2
+ <!-- Custom element -->
3
+ <iam-applied-filters>
4
+ <slot></slot>
5
+ </iam-applied-filters>
6
+ </template>
7
+
8
+ <script>
9
+ // Load web components
10
+ import iamAppliedFilters from '../../../assets/ts/components/applied-filters/applied-filters.component'
11
+
12
+ // Register components
13
+ if (!window.customElements.get('iam-applied-filters'))
14
+ window.customElements.define('iam-applied-filters', iamAppliedFilters);
15
+
16
+
17
+ export default {
18
+ name: 'Header'
19
+ }
20
+ </script>
@@ -0,0 +1,5 @@
1
+ ```
2
+ <AppliedFilters></AppliedFilters>
3
+ ```
4
+
5
+ To add an input to the applied filters an attribute of **data-filter-text** needs to be supplied so that the JavaScript knows to listen for the value to change. This attribute can also be used on a wrapper for mulitple input filters also and dynamic values can also be given. **$value** passes the inputs value as the filter text and **$1,$2,$3...** will pass the corresponding child input value to the text.
@@ -1,122 +1,21 @@
1
1
  <template>
2
- <a :href="link" :class="'card'+(type?' card--'+type:'')+' '+cardClass" :title="ctatext+': '+title+(subtitle ? ' - '+subtitle:'')" :target="target">
3
- <div class="card-header__wrapper" v-if="image">
4
- <img :src="image" alt="" loading="lazy" class="card-image" />
5
- <div class="card-header">
6
- <span class="badge bg-primary p-2 me-2" v-if="this.details && this.details.status" v-html="cardStatus()"></span>
7
- <span class="badge bg-black bg-opacity-50 p-2 align-self-end" v-if="this.details && (this.details.images || this.details.videos)" v-html="cardMedia()"></span>
8
- </div>
9
- <img v-if="details && details.logo" :src="details.logo" alt="" loading="lazy" class="card-logo" />
10
- </div>
11
- <div class="card-body" v-html="cardContent()"></div>
12
- <div class="card-footer" v-if="hidectatext == false">
13
- <span :class="`${btntype == 'link' ? `link` : `btn btn-${btntype}`} mb-0`">{{ctatext}}<span class="visually-hidden">: {{title}}</span></span>
14
- </div>
15
- </a>
2
+ <iam-card>
3
+ <slot></slot>
4
+ </iam-card>
16
5
  </template>
17
6
 
18
- <style lang="scss">
19
- @import "../../../assets/sass/components/card.scss";
20
- </style>
21
-
22
7
  <script>
8
+ import iamCard from '../../../assets/ts/components/card/card.component'
9
+
23
10
  export default {
24
11
  name: 'Card',
25
- props: {
26
- link: {
27
- type: String,
28
- required: false
29
- },
30
- cardClass: {
31
- type: String,
32
- required: false,
33
- default: ''
34
- },
35
- titleclass: {
36
- type: String,
37
- required: false,
38
- default: 'h4'
39
- },
40
- title: {
41
- type: String,
42
- required: false
43
- },
44
- subtitle: {
45
- type: String,
46
- required: false
47
- },
48
- content: {
49
- type: String,
50
- required: false
51
- },
52
- type: {
53
- type: String,
54
- required: false
55
- },
56
- btntype: {
57
- type: String,
58
- required: false,
59
- default: 'secondary'
60
- },
61
- ctatext: {
62
- type: String,
63
- required: false,
64
- default: 'Find out more'
65
- },
66
- hidectatext: {
67
- type: Boolean,
68
- required: false,
69
- default: false
70
- },
71
- image: {
72
- type: String,
73
- required: false
74
- },
75
- target: {
76
- type: String,
77
- required: false
78
- },
79
- details: {
80
- type: Object,
81
- required: false
82
- }
83
- },
84
- computed: {
85
- cardStatus (){
86
- return () => {
87
- return this.details && this.details.status ? `${this.details.status == 'Live now' ? '<span class="text-danger lh-0 fs-1 align-middle">&#8226;</span>&nbsp;&nbsp;': ''}${this.details.status}`: '';
88
- }
89
- },
90
- cardMedia (){
91
- return () => {
92
- return `<svg xmlns='http://www.w3.org/2000/svg' width='30' height='28' viewBox='0 0 30 28' class="icon text-white"><title>Images </title><path d='M15 10.5c2.484 0 4.5 2.016 4.5 4.5s-2.016 4.5-4.5 4.5-4.5-2.016-4.5-4.5 2.016-4.5 4.5-4.5zM26 4c2.203 0 4 1.797 4 4v14c0 2.203-1.797 4-4 4h-22c-2.203 0-4-1.797-4-4v-14c0-2.203 1.797-4 4-4h3.5l0.797-2.125c0.391-1.031 1.609-1.875 2.703-1.875h8c1.094 0 2.312 0.844 2.703 1.875l0.797 2.125h3.5zM15 22c3.859 0 7-3.141 7-7s-3.141-7-7-7-7 3.141-7 7 3.141 7 7 7z'></path></svg> ${this.details && this.details.images ? `${this.details.images}`: `0`}&nbsp;&nbsp;|&nbsp;&nbsp;<svg xmlns='http://www.w3.org/2000/svg' width='30' height='28' viewBox='0 0 28 28' class="icon text-white ms-0"><title>Videos </title><path d="M11.109 17.625l7.562-3.906-7.562-3.953v7.859zM14 4.156c5.891 0 9.797 0.281 9.797 0.281 0.547 0.063 1.75 0.063 2.812 1.188 0 0 0.859 0.844 1.109 2.781 0.297 2.266 0.281 4.531 0.281 4.531v2.125s0.016 2.266-0.281 4.531c-0.25 1.922-1.109 2.781-1.109 2.781-1.062 1.109-2.266 1.109-2.812 1.172 0 0-3.906 0.297-9.797 0.297v0c-7.281-0.063-9.516-0.281-9.516-0.281-0.625-0.109-2.031-0.078-3.094-1.188 0 0-0.859-0.859-1.109-2.781-0.297-2.266-0.281-4.531-0.281-4.531v-2.125s-0.016-2.266 0.281-4.531c0.25-1.937 1.109-2.781 1.109-2.781 1.062-1.125 2.266-1.125 2.812-1.188 0 0 3.906-0.281 9.797-0.281v0z"></path></svg> ${this.details && this.details.videos ? `${this.details.videos}`: `0`}`;
93
- }
94
- },
95
- cardContent () {
96
- return () => {
97
- const tagClass = function(tag){
98
- switch(tag) {
99
- case 'Modern method':
100
- return 'bg-secondary text-primary'
101
- case 'Freehold':
102
- return 'bg-light text-dark'
103
- default:
104
- return 'bg-body text-white'
105
- }
106
- }
107
-
108
- const tags = this.details && this.details.tags ? this.details.tags.map(tag => `<span class="badge rounded-pill py-2 px-3 mb-3 me-2 ${tagClass(tag)}">${tag}</span>` ).join(""): '';
109
- const title = this.title ? `<span class="card-title d-block ${this.titleclass}">${this.title}${this.subtitle ? ` <span class="d-block fw-normal font-body text-body small">${this.subtitle}</span>` : ''}</span>` : ``;
110
-
111
- const details = `
112
- ${this.details && this.details.guideprice ? `<span class="d-block h6 text-dark mb-1">Price guide: ${this.details.guideprice}</span>` : ``}
113
- ${this.details && this.details.auctiontime ? `<span class="d-block h6 text-primary mb-4">Auction time left: ${this.details.auctiontime}</span>` : ``}
114
- ${this.details && this.details.readtime ? `<span class="d-block h6 text-primary mb-4"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="22" height="23" viewBox="0 0 22 23" class="icon ms-0 me-2"><path d="M11 1.63c-5.176 0-9.37 4.194-9.37 9.37 0 5.176 4.194 9.37 9.37 9.37 5.176 0 9.37-4.194 9.37-9.37 0-5.176-4.194-9.37-9.37-9.37M11 0c6.075 0 11 4.925 11 11s-4.925 11-11 11S0 17.075 0 11 4.925 0 11 0" fill="var(--colour-secondary)" /><path d="M9.62 5.39c0-.473.368-.856.82-.856.454 0 .822.383.822.855v6.27l3.25 1.898c.395.23.536.75.314 1.16-.22.412-.72.558-1.115.328l-4.09-2.39V5.39z" fill="var(--colour-primary)"/></svg>${this.details.readtime}</span>` : ``}
115
- `;
12
+ created(){
116
13
 
117
- return `${tags}${title}${details}${this.content}`;
118
- }
119
- }
14
+ this.$nextTick(function () {
15
+
16
+ if (!window.customElements.get('iam-card'))
17
+ window.customElements.define('iam-card', iamCard);
18
+ })
120
19
  }
121
20
  }
122
21
  </script>
@@ -1,24 +1,22 @@
1
- ### Usage
2
-
3
1
  ```
4
- <Card :title="value.title" :content="value.content" :link="value.link"></Card>
2
+ <a href="/link-url">
3
+ <Card>Link content</Card>
4
+ </a>
5
5
  ```
6
6
 
7
- ### Properties
7
+ **Note**
8
+
9
+ The card component needs to be wrapped with a link or a button, this is required to give the card any functionality.
10
+
11
+ **Properties**
8
12
 
9
13
  | Option | Type | Default Value | Description |
10
14
  | ------ | ---- | ------------- | ----------- |
11
- | title | String | - | Used for the card heading |
12
- | titleclass | String | h2 | Update the class of the title from being a h2 |
13
- | subtitle | String | - | Optional sub heading |
14
- | content | HTML | - | Card content |
15
- | link | String | - | Card link |
16
- | type | String | - | Change the type of card (simple,quick)|
17
- | btntype | String | secondary | Change the type of button at the bottom of the card (primary,secondary,tertairy, link) |
18
- | ctatext | String | Find out more | Update the cta text within the button at the bottom of the card |
19
- | details | Object | - | Build up the card content with pre-defined bits of data |
20
- | - detail.tags | Array of strings | - | Add tags above the card header |
21
- | - detail.guideprice | String | - | Property guide price |
22
- | - detail.auctiontime | String | - | Auction time left |
23
- | - detail.readtime | String | - | How long it will take to read |
24
- | - detail.status | String | - | Display a status badge at the top of the card |
15
+ | data-total | Int | - | Optional total number , usually use on the filter card type |
16
+ | data-image | image url | - | Optional image url to create a card header with an image as its background |
17
+
18
+ **Class modifiers**
19
+
20
+ - Adding a class of **.card--filter** will implement the filter card design.
21
+ - Adding a class of **.border-o** will remove the box-shadow of the card and make some minor sizing adjustments.
22
+ - Adding a class like **.colour-warning** will update the colour of the left berder for the filter card. The theme colours will be avialable to use.
@@ -32,17 +32,8 @@
32
32
 
33
33
  <script>
34
34
  import Card from '../Card/Card.vue'
35
- import CardDeck from '../CardDeck/CardDeck.vue'
36
35
  import carousel from '../../../assets/ts/modules/carousel'
37
36
 
38
- // Inherit the card deck props
39
- let cardDeckProps = CardDeck.props;
40
- // Update the default values
41
- cardDeckProps.gap.default = 0
42
- cardDeckProps.cols.default = 1
43
- cardDeckProps.smcols.default = 2
44
- cardDeckProps.mdcols.default = 4
45
-
46
37
 
47
38
  export default {
48
39
  components: {
@@ -55,7 +46,55 @@ export default {
55
46
  }
56
47
  },
57
48
  props: {
58
- ...cardDeckProps,
49
+ items: {
50
+ type: Array,
51
+ required: false
52
+ },
53
+ cols: {
54
+ type: Number,
55
+ required: false,
56
+ default: 1
57
+ },
58
+ smcols: {
59
+ type: Number,
60
+ required: false,
61
+ default: 1
62
+ },
63
+ mdcols: {
64
+ type: Number,
65
+ required: false,
66
+ default: 3
67
+ },
68
+ gap: {
69
+ type: Number,
70
+ required: false,
71
+ default: 4
72
+ },
73
+ cardtype: {
74
+ type: String,
75
+ required: false
76
+ },
77
+ cardclass: {
78
+ type: String,
79
+ required: false
80
+ },
81
+ btntype: {
82
+ type: String,
83
+ required: false
84
+ },
85
+ titleclass: {
86
+ type: String,
87
+ required: false
88
+ },
89
+ ctatext: {
90
+ type: String,
91
+ required: false
92
+ },
93
+ hidectatext: {
94
+ type: Boolean,
95
+ required: false,
96
+ default: false
97
+ },
59
98
  colclass: {
60
99
  type: String,
61
100
  required: false
@@ -14,14 +14,29 @@
14
14
  <span>{{point.display}}</span>
15
15
  </div>
16
16
  </div>
17
- <Table v-bind="$props">
17
+
18
+
19
+ <div class="table__wrapper">
20
+
21
+ <table v-if="fields">
22
+ <thead>
23
+ <tr>
24
+ <th v-for="(field) in fields" :key="field.key">{{ cellHeading(field.key) }}</th>
25
+ </tr>
26
+ </thead>
27
+ <tbody v-if="items">
28
+ <tr v-for="(value,index) in items" :key="index" :data-row-id="value['rowid']">
29
+ <td :key="cellIndex" v-for="(cellValue,cellIndex) in Object.fromEntries(Object.entries(value).filter(([key]) => key !== 'rowid'))" v-html="cellValue" :data-label="cellHeading(cellIndex)" :data-numeric="numericValue(cellValue)"></td>
30
+ </tr>
31
+ </tbody>
32
+ </table>
18
33
 
19
34
  <div class="chart__guidelines" role="presentation">
20
35
  <div :key="index" v-for="(point,index) in yaxis" :data-value="point.value" :style="`--percent:${((point.value-min)/(max-min))*100}%;`" class="guideline">
21
36
  </div>
22
37
  </div>
23
38
  <span class="lines" v-if="type == 'line'"></span>
24
- </Table>
39
+ </div>
25
40
  <div class="pies" v-if="type == 'pie'"></div>
26
41
  </div>
27
42
  </figure>
@@ -34,13 +49,26 @@
34
49
 
35
50
  <script>
36
51
  import { ucfirst, unsnake } from '../../helpers/strings'
37
- import Table from '../../components/Table/Table.vue'
38
52
  import chartModule from '../../../assets/ts/modules/chart'
39
53
 
54
+ let numericValue = function(value) {
55
+
56
+ if(typeof(value) != "string")
57
+ return value;
58
+
59
+ value = value.replace('£','')
60
+ value = value.replace('%','')
61
+
62
+ if (Number.isNaN(Number.parseFloat(value))) {
63
+ return 0;
64
+ }
65
+
66
+ return Number.parseFloat(value);
67
+ }
68
+
40
69
  export default {
41
70
  name: 'Chart',
42
71
  components: {
43
- Table
44
72
  },
45
73
  props: {
46
74
  type: {
@@ -74,6 +102,20 @@ export default {
74
102
  required: true
75
103
  }
76
104
  },
105
+ computed: {
106
+ cellHeading () {
107
+ return (heading) => {
108
+ return `${ucfirst(unsnake(heading))}`
109
+ }
110
+ },
111
+ numericValue () {
112
+ return (value) => {
113
+
114
+ value = numericValue(value);
115
+ return value;
116
+ }
117
+ }
118
+ },
77
119
  mounted(){
78
120
  this.$nextTick(function () {
79
121
 
@@ -0,0 +1,20 @@
1
+ <template>
2
+ <!-- Custom element -->
3
+ <iam-filterlist>
4
+ <slot></slot>
5
+ </iam-filterlist>
6
+ </template>
7
+
8
+ <script>
9
+ // Load web components
10
+ import iamFilterlist from '../../../assets/ts/components/filterlist/filterlist.component'
11
+
12
+ // Register components
13
+ if (!window.customElements.get('iam-filterlist'))
14
+ window.customElements.define('iam-filterlist', iamFilterlist);
15
+
16
+
17
+ export default {
18
+ name: 'Filter list',
19
+ }
20
+ </script>
@@ -0,0 +1,17 @@
1
+ ```
2
+ <Filterlist>
3
+ <ul>
4
+ <li>Olivia Anderson</li>
5
+ <li>Ethan Ramirez</li>
6
+ <li>Sophia Patel</li>
7
+ <li>Noah Jenkins</li>
8
+ <li>Ava Thompson</li>
9
+ </ul>
10
+ </Filterlist>
11
+ ```
12
+
13
+ **Properties**
14
+
15
+ | Option | Type | Default Value | Description |
16
+ | ------ | ---- | ------------- | ----------- |
17
+ | data-max-height | string | '' | Optional choice from small, medium or large control of the height of the list. Giving it a scrollable area. |