{"id":1331,"date":"2026-07-22T15:01:40","date_gmt":"2026-07-22T15:01:40","guid":{"rendered":"https:\/\/panosky.com\/?page_id=1331"},"modified":"2026-08-25T08:32:14","modified_gmt":"2026-08-25T08:32:14","slug":"features","status":"publish","type":"page","link":"https:\/\/panosky.com\/?page_id=1331","title":{"rendered":"Features"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1331\" class=\"elementor elementor-1331\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8af362a e-con e-atomic-element e-flexbox-base e-8af362a-f06e721 \" data-id=\"8af362a\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"8af362a\" data-e-type=\"e-flexbox\" data-id=\"8af362a\">\n    <div class=\"elementor-element elementor-element-976e05d e-flex e-con-boxed e-con e-parent\" data-id=\"976e05d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-20f01b4 e-con-full e-flex e-con e-child\" data-id=\"20f01b4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-82cfd2e elementor-widget elementor-widget-heading\" data-id=\"82cfd2e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Pro Features.<br>Absolute <br><span class=\"animated-global\">Immersion.<\/span><\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fa4a764 elementor-widget elementor-widget-text-editor\" data-id=\"fa4a764\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><strong>The technology behind the tour.<\/strong><strong>\u00a0Every feature is built to turn your physical space into a powerful digital asset.<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0daafff e-con-full e-flex e-con e-child\" data-id=\"0daafff\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d61656d elementor-widget elementor-widget-html\" data-id=\"d61656d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n\/* =========================================================\r\n   EASY CONTROLS\r\n========================================================= *\/\r\n.ps-vgallery {\r\n  --ps-gallery-height: 820px;\r\n  --ps-column-gap: 18px;\r\n  --ps-card-gap: 22px;\r\n  --ps-card-radius: 20px;\r\n  --ps-edge-fade: 10%;\r\n\r\n  \/* Larger duration = slower movement *\/\r\n  --ps-side-speed: 80s;\r\n  --ps-middle-speed: 100s;\r\n\r\n  --ps-card-background: #07152b;\r\n  --ps-card-shadow: 0 12px 30px rgba(0, 0, 0, 0.2);\r\n\r\n  width: 100%;\r\n  max-width: 100%;\r\n  height: var(--ps-gallery-height);\r\n  display: grid;\r\n  grid-template-columns: repeat(3, minmax(0, 1fr));\r\n  gap: var(--ps-column-gap);\r\n  overflow: hidden;\r\n  isolation: isolate;\r\n  min-width: 0;\r\n\r\n  \/* Top and bottom fade *\/\r\n  -webkit-mask-image: linear-gradient(\r\n    to bottom,\r\n    transparent 0%,\r\n    #000 var(--ps-edge-fade),\r\n    #000 calc(100% - var(--ps-edge-fade)),\r\n    transparent 100%\r\n  );\r\n\r\n  mask-image: linear-gradient(\r\n    to bottom,\r\n    transparent 0%,\r\n    #000 var(--ps-edge-fade),\r\n    #000 calc(100% - var(--ps-edge-fade)),\r\n    transparent 100%\r\n  );\r\n}\r\n\r\n.ps-vgallery,\r\n.ps-vgallery * {\r\n  box-sizing: border-box;\r\n}\r\n\r\n.ps-vgallery__column {\r\n  min-width: 0;\r\n  height: 100%;\r\n  overflow: hidden;\r\n}\r\n\r\n.ps-vgallery__track {\r\n  width: 100%;\r\n  display: flex;\r\n  flex-direction: column;\r\n  will-change: transform;\r\n  backface-visibility: hidden;\r\n  transform: translate3d(0, 0, 0);\r\n  animation-timing-function: linear;\r\n  animation-iteration-count: infinite;\r\n}\r\n\r\n\/* First and third columns move upward *\/\r\n.ps-vgallery__column--up .ps-vgallery__track {\r\n  animation-name: ps-vgallery-up;\r\n  animation-duration: var(--ps-side-speed);\r\n}\r\n\r\n\/* Middle column moves downward *\/\r\n.ps-vgallery__column--down .ps-vgallery__track {\r\n  animation-name: ps-vgallery-down;\r\n  animation-duration: var(--ps-middle-speed);\r\n}\r\n\r\n\/* Different starting positions *\/\r\n.ps-vgallery__column:nth-child(1) .ps-vgallery__track {\r\n  animation-delay: -3s;\r\n}\r\n\r\n.ps-vgallery__column:nth-child(2) .ps-vgallery__track {\r\n  animation-delay: -17s;\r\n}\r\n\r\n.ps-vgallery__column:nth-child(3) .ps-vgallery__track {\r\n  animation-delay: -11s;\r\n}\r\n\r\n.ps-vgallery__set {\r\n  flex: 0 0 auto;\r\n  width: 100%;\r\n  display: flex;\r\n  flex-direction: column;\r\n  gap: var(--ps-card-gap);\r\n  padding-bottom: var(--ps-card-gap);\r\n}\r\n\r\n.ps-vgallery__card {\r\n  --ps-ratio: 4 \/ 5;\r\n\r\n  position: relative;\r\n  width: 100%;\r\n  aspect-ratio: var(--ps-ratio);\r\n  flex: 0 0 auto;\r\n  margin: 0;\r\n  overflow: hidden;\r\n  border-radius: var(--ps-card-radius);\r\n  background: var(--ps-card-background);\r\n  box-shadow: var(--ps-card-shadow);\r\n  transform: translateZ(0);\r\n}\r\n\r\n\/* Available card shapes *\/\r\n.ps-vgallery__card--landscape {\r\n  --ps-ratio: 16 \/ 10;\r\n}\r\n\r\n.ps-vgallery__card--square {\r\n  --ps-ratio: 1 \/ 1;\r\n}\r\n\r\n.ps-vgallery__card--portrait {\r\n  --ps-ratio: 4 \/ 5;\r\n}\r\n\r\n.ps-vgallery__card--tall {\r\n  --ps-ratio: 2 \/ 3;\r\n}\r\n\r\n.ps-vgallery__card img {\r\n  width: 100%;\r\n  height: 100%;\r\n  display: block;\r\n  object-fit: cover;\r\n  object-position: var(--ps-image-position, 50% 50%);\r\n  border: 0;\r\n  pointer-events: none;\r\n  user-select: none;\r\n  -webkit-user-drag: none;\r\n}\r\n\r\n@keyframes ps-vgallery-up {\r\n  from {\r\n    transform: translate3d(0, 0, 0);\r\n  }\r\n\r\n  to {\r\n    transform: translate3d(0, -50%, 0);\r\n  }\r\n}\r\n\r\n@keyframes ps-vgallery-down {\r\n  from {\r\n    transform: translate3d(0, -50%, 0);\r\n  }\r\n\r\n  to {\r\n    transform: translate3d(0, 0, 0);\r\n  }\r\n}\r\n\r\n\/* TABLET *\/\r\n@media (max-width: 1024px) {\r\n  .ps-vgallery {\r\n    --ps-gallery-height: 650px;\r\n    --ps-column-gap: 14px;\r\n    --ps-card-gap: 17px;\r\n    --ps-card-radius: 16px;\r\n    --ps-side-speed: 32s;\r\n    --ps-middle-speed: 36s;\r\n  }\r\n}\r\n\r\n\/* MOBILE *\/\r\n@media (max-width: 767px) {\r\n  .ps-vgallery {\r\n    --ps-gallery-height: 500px;\r\n    --ps-column-gap: 8px;\r\n    --ps-card-gap: 10px;\r\n    --ps-card-radius: 11px;\r\n    --ps-edge-fade: 6%;\r\n    --ps-side-speed: 28s;\r\n    --ps-middle-speed: 31s;\r\n  }\r\n}\r\n\r\n\/* SMALL MOBILE *\/\r\n@media (max-width: 420px) {\r\n  .ps-vgallery {\r\n    --ps-gallery-height: 460px;\r\n    --ps-column-gap: 6px;\r\n    --ps-card-gap: 8px;\r\n    --ps-card-radius: 9px;\r\n  }\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n  .ps-vgallery__track {\r\n    animation-play-state: paused !important;\r\n  }\r\n}\r\n\/* FORCE EVERY CARD TO THE SAME SIZE *\/\r\n.ps-vgallery .ps-vgallery__card {\r\n  --ps-ratio: 3 \/ 4 !important;\r\n}\r\n<\/style>\r\n\r\n<div class=\"ps-vgallery\" aria-label=\"Infinite image gallery\">\r\n\r\n  <!-- COLUMN 1 \u2014 MOVES UP -->\r\n  <div class=\"ps-vgallery__column ps-vgallery__column--up\">\r\n    <div class=\"ps-vgallery__track\">\r\n      <div class=\"ps-vgallery__set\">\r\n\r\n        <figure class=\"ps-vgallery__card ps-vgallery__card--landscape\">\r\n          <img src=\"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/01-time-shift-poster.jpg\" alt=\"\" decoding=\"async\">\r\n        <\/figure>\r\n\r\n        <figure class=\"ps-vgallery__card ps-vgallery__card--portrait\">\r\n          <img src=\"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/02-infinite-detail-poster.jpg\" alt=\"\" decoding=\"async\">\r\n        <\/figure>\r\n\r\n        <figure class=\"ps-vgallery__card ps-vgallery__card--portrait\">\r\n          <img src=\"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/03-horizon-360-poster.jpg\" alt=\"\" decoding=\"async\">\r\n        <\/figure>\r\n\r\n        <figure class=\"ps-vgallery__card ps-vgallery__card--landscape\">\r\n          <img src=\"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/04-precision-anywhere-poster.jpg\" alt=\"\" decoding=\"async\">\r\n        <\/figure>\r\n\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- COLUMN 2 \u2014 MOVES DOWN -->\r\n  <div class=\"ps-vgallery__column ps-vgallery__column--down\">\r\n    <div class=\"ps-vgallery__track\">\r\n      <div class=\"ps-vgallery__set\">\r\n\r\n        <figure class=\"ps-vgallery__card ps-vgallery__card--portrait\">\r\n          <img src=\"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/05-true-scale-vr-poster.jpg\" alt=\"\" decoding=\"async\">\r\n        <\/figure>\r\n\r\n        <figure class=\"ps-vgallery__card ps-vgallery__card--landscape\">\r\n          <img src=\"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/06-objects-in-3d-poster.jpg\" alt=\"\" decoding=\"async\">\r\n        <\/figure>\r\n\r\n        <figure class=\"ps-vgallery__card ps-vgallery__card--portrait\">\r\n          <img src=\"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/07-stage-anything-poster.jpg\" alt=\"\" decoding=\"async\">\r\n        <\/figure>\r\n\r\n        <figure class=\"ps-vgallery__card ps-vgallery__card--landscape\">\r\n          <img src=\"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/08-spatial-sound-poster.jpg\" alt=\"\" decoding=\"async\">\r\n        <\/figure>\r\n\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- COLUMN 3 \u2014 MOVES UP -->\r\n  <div class=\"ps-vgallery__column ps-vgallery__column--up\">\r\n    <div class=\"ps-vgallery__track\">\r\n      <div class=\"ps-vgallery__set\">\r\n\r\n        <figure class=\"ps-vgallery__card ps-vgallery__card--landscape\">\r\n          <img src=\"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/09-guided-journeys-poster.jpg\" alt=\"\" decoding=\"async\">\r\n        <\/figure>\r\n\r\n        <figure class=\"ps-vgallery__card ps-vgallery__card--portrait\">\r\n          <img src=\"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/10-smart-navigation-poster.jpg\" alt=\"\" decoding=\"async\">\r\n        <\/figure>\r\n\r\n        <figure class=\"ps-vgallery__card ps-vgallery__card--portrait\">\r\n          <img src=\"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/11-book-instantly-poster.jpg\" alt=\"\" decoding=\"async\">\r\n        <\/figure>\r\n\r\n        <figure class=\"ps-vgallery__card ps-vgallery__card--landscape\">\r\n          <img src=\"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/12-deep-analytics-poster.jpg\" alt=\"\" decoding=\"async\">\r\n        <\/figure>\r\n\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n<script>\r\n(() => {\r\n  document.querySelectorAll('.ps-vgallery').forEach((gallery) => {\r\n    \/* Prevent duplicate copies inside the Elementor editor *\/\r\n    if (gallery.dataset.psReady === 'true') return;\r\n\r\n    gallery.querySelectorAll('.ps-vgallery__track').forEach((track) => {\r\n      const originalSet = track.querySelector('.ps-vgallery__set');\r\n\r\n      if (!originalSet) return;\r\n\r\n      const repeatedSet = originalSet.cloneNode(true);\r\n      repeatedSet.setAttribute('aria-hidden', 'true');\r\n\r\n      repeatedSet.querySelectorAll('img').forEach((image) => {\r\n        image.alt = '';\r\n      });\r\n\r\n      track.appendChild(repeatedSet);\r\n    });\r\n\r\n    gallery.dataset.psReady = 'true';\r\n  });\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-e02d19f e-con e-atomic-element e-flexbox-base e-e02d19f-d5ae7a7 \" data-id=\"e02d19f\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"e02d19f\" data-e-type=\"e-flexbox\" data-id=\"e02d19f\">\n    <div class=\"elementor-element elementor-element-e8ebc64 e-flex e-con-boxed e-con e-parent\" data-id=\"e8ebc64\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-772a643 e-flex e-con-boxed e-con e-child\" data-id=\"772a643\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;position&quot;:&quot;absolute&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fe70e8e elementor-widget elementor-widget-spacer\" data-id=\"fe70e8e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-69753cd elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"69753cd\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\"><span class=\"animated-global\">Virtual<\/span> Staging<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-378b120 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"378b120\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Empty to extraordinary.<\/h1>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b47a4ef elementor-widget elementor-widget-html\" data-id=\"b47a4ef\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- PanoSky Before \/ After Slider \u2014 paste everything into one Elementor HTML widget -->\r\n\r\n<style>\r\n  \/* =========================\r\n     EASY SETTINGS\r\n     ========================= *\/\r\n  .ps-before-after {\r\n    --ps-ba-ratio: 16 \/ 9;        \/* Desktop and tablet *\/\r\n    --ps-ba-radius: 18px;\r\n    --ps-ba-line: #ffffff;\r\n    --ps-ba-handle: rgba(1, 24, 65, 0.9);\r\n    --ps-ba-position: 50%;\r\n\r\n    position: relative;\r\n    display: block;\r\n    width: 100%;\r\n    max-width: 100%;\r\n    height: auto !important;\r\n    min-height: 0 !important;\r\n    aspect-ratio: var(--ps-ba-ratio);\r\n    overflow: hidden;\r\n    isolation: isolate;\r\n    border-radius: var(--ps-ba-radius);\r\n    background: #071a37;\r\n    box-shadow: 0 18px 45px rgba(0, 12, 35, 0.16);\r\n    user-select: none;\r\n    -webkit-user-select: none;\r\n    touch-action: pan-y;\r\n  }\r\n\r\n  .ps-before-after *,\r\n  .ps-before-after *::before,\r\n  .ps-before-after *::after {\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  .ps-ba__after {\r\n    position: absolute;\r\n    inset: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n  }\r\n\r\n  \/* The stronger selector and !important values override Elementor's\r\n     global img { height: auto; } styling on mobile. *\/\r\n  .ps-before-after img.ps-ba__image {\r\n    position: absolute !important;\r\n    inset: 0;\r\n    display: block;\r\n    width: 100% !important;\r\n    height: 100% !important;\r\n    max-width: none !important;\r\n    max-height: none !important;\r\n    margin: 0 !important;\r\n    object-fit: cover !important;\r\n    object-position: center bottom !important;\r\n    pointer-events: none;\r\n    -webkit-user-drag: none;\r\n  }\r\n\r\n  \/* Keeps the Elementor HTML-widget wrapper fitted to the slider. *\/\r\n  .elementor-widget-html:has(.ps-before-after),\r\n  .elementor-widget-html:has(.ps-before-after) > .elementor-widget-container {\r\n    width: 100%;\r\n    height: auto !important;\r\n    min-height: 0 !important;\r\n  }\r\n\r\n  .elementor-widget-html:has(.ps-before-after) > .elementor-widget-container {\r\n    line-height: 0;\r\n  }\r\n\r\n  .ps-ba__after {\r\n    z-index: 2;\r\n    overflow: hidden;\r\n    clip-path: inset(0 calc(100% - var(--ps-ba-position)) 0 0);\r\n    will-change: clip-path;\r\n  }\r\n\r\n  .ps-ba__label {\r\n    position: absolute;\r\n    top: 18px;\r\n    z-index: 3;\r\n    padding: 7px 11px;\r\n    border: 1px solid rgba(255, 255, 255, 0.3);\r\n    border-radius: 999px;\r\n    background: rgba(1, 18, 43, 0.58);\r\n    color: #ffffff;\r\n    font: 600 11px\/1 Arial, sans-serif;\r\n    letter-spacing: 0.12em;\r\n    backdrop-filter: blur(8px);\r\n    -webkit-backdrop-filter: blur(8px);\r\n    pointer-events: none;\r\n  }\r\n\r\n  .ps-ba__label--before { left: 18px; }\r\n  .ps-ba__label--after  { right: 18px; }\r\n\r\n  .ps-ba__divider {\r\n    position: absolute;\r\n    top: 0;\r\n    bottom: 0;\r\n    left: var(--ps-ba-position);\r\n    z-index: 4;\r\n    width: 2px;\r\n    background: var(--ps-ba-line);\r\n    box-shadow: 0 0 14px rgba(0, 0, 0, 0.3);\r\n    transform: translateX(-50%);\r\n    pointer-events: none;\r\n    will-change: left;\r\n  }\r\n\r\n  .ps-ba__handle {\r\n    position: absolute;\r\n    top: 50%;\r\n    left: 50%;\r\n    display: grid;\r\n    place-items: center;\r\n    width: 46px;\r\n    height: 46px;\r\n    border: 2px solid var(--ps-ba-line);\r\n    border-radius: 50%;\r\n    background: var(--ps-ba-handle);\r\n    color: #ffffff;\r\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.24);\r\n    transform: translate(-50%, -50%);\r\n  }\r\n\r\n  .ps-ba__handle svg {\r\n    display: block;\r\n    width: 23px;\r\n    height: 23px;\r\n  }\r\n\r\n  .ps-ba__range {\r\n    position: absolute;\r\n    inset: 0;\r\n    z-index: 5;\r\n    width: 100%;\r\n    height: 100%;\r\n    margin: 0;\r\n    opacity: 0;\r\n    cursor: ew-resize;\r\n    touch-action: pan-y;\r\n  }\r\n\r\n  .ps-ba__range:focus-visible + .ps-ba__divider .ps-ba__handle {\r\n    outline: 3px solid #67c8ff;\r\n    outline-offset: 4px;\r\n  }\r\n\r\n  @media (max-width: 767px) {\r\n    .ps-before-after {\r\n      --ps-ba-ratio: 1 \/ 1;       \/* Mobile *\/\r\n      --ps-ba-radius: 14px;\r\n    }\r\n\r\n    .ps-ba__label {\r\n      top: 12px;\r\n      padding: 6px 9px;\r\n      font-size: 9px;\r\n    }\r\n\r\n    .ps-ba__label--before { left: 12px; }\r\n    .ps-ba__label--after  { right: 12px; }\r\n\r\n    .ps-ba__handle {\r\n      width: 42px;\r\n      height: 42px;\r\n    }\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce) {\r\n    .ps-ba__after,\r\n    .ps-ba__divider {\r\n      will-change: auto;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"ps-before-after\">\r\n  <!-- BEFORE IMAGE: replace this URL -->\r\n  <img\r\n    class=\"ps-ba__image\"\r\n    src=\"https:\/\/panosky.com\/wp-content\/uploads\/2026\/08\/stage-without.jpg\"\r\n    alt=\"Space before the transformation\"\r\n    draggable=\"false\"\r\n    decoding=\"async\"\r\n  >\r\n\r\n  <div class=\"ps-ba__after\">\r\n    <!-- AFTER IMAGE: replace this URL -->\r\n    <img\r\n      class=\"ps-ba__image\"\r\n      src=\"https:\/\/panosky.com\/wp-content\/uploads\/2026\/08\/Stage-with.jpg\"\r\n      alt=\"Space after the transformation\"\r\n      draggable=\"false\"\r\n      decoding=\"async\"\r\n    >\r\n  <\/div>\r\n\r\n  <span class=\"ps-ba__label ps-ba__label--before\">BEFORE<\/span>\r\n  <span class=\"ps-ba__label ps-ba__label--after\">AFTER<\/span>\r\n\r\n  <input\r\n    class=\"ps-ba__range\"\r\n    type=\"range\"\r\n    min=\"0\"\r\n    max=\"100\"\r\n    step=\"0.1\"\r\n    value=\"50\"\r\n    aria-label=\"Move the slider to compare the before and after images\"\r\n  >\r\n\r\n  <div class=\"ps-ba__divider\" aria-hidden=\"true\">\r\n    <span class=\"ps-ba__handle\">\r\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n        <path d=\"M9.25 7.25 4.5 12l4.75 4.75M14.75 7.25 19.5 12l-4.75 4.75\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n      <\/svg>\r\n    <\/span>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n  (() => {\r\n    const sliders = document.querySelectorAll('.ps-before-after:not([data-ps-ready])');\r\n\r\n    sliders.forEach((slider) => {\r\n      slider.dataset.psReady = 'true';\r\n\r\n      const range = slider.querySelector('.ps-ba__range');\r\n      const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n      const AUTO_MIN = 20;\r\n      const AUTO_MAX = 80;\r\n      const FULL_TRIP_DURATION = 4000;\r\n      const RESUME_DELAY = 1000;\r\n\r\n      let frameId = null;\r\n      let resumeTimer = null;\r\n      let isAutomatic = false;\r\n      let isPointerDown = false;\r\n      let currentPosition = Number(range.value);\r\n      let direction = 1;\r\n      let segmentStartTime = 0;\r\n      let segmentStartPosition = currentPosition;\r\n      let segmentTargetPosition = AUTO_MAX;\r\n      let segmentDuration = 2000;\r\n\r\n      const setPosition = (value) => {\r\n        const safeValue = Math.min(100, Math.max(0, Number(value)));\r\n        currentPosition = safeValue;\r\n        slider.style.setProperty('--ps-ba-position', `${safeValue}%`);\r\n        range.value = safeValue;\r\n      };\r\n\r\n      const prepareAutomaticSegment = (now) => {\r\n        segmentStartTime = now;\r\n        segmentStartPosition = currentPosition;\r\n        segmentTargetPosition = direction > 0 ? AUTO_MAX : AUTO_MIN;\r\n\r\n        const distance = Math.abs(segmentTargetPosition - segmentStartPosition);\r\n        const fullDistance = AUTO_MAX - AUTO_MIN;\r\n        segmentDuration = Math.max(450, (distance \/ fullDistance) * FULL_TRIP_DURATION);\r\n      };\r\n\r\n      const pauseAutomaticMovement = () => {\r\n        isAutomatic = false;\r\n        clearTimeout(resumeTimer);\r\n\r\n        if (frameId !== null) {\r\n          cancelAnimationFrame(frameId);\r\n          frameId = null;\r\n        }\r\n      };\r\n\r\n      const animate = (now) => {\r\n        if (!isAutomatic) return;\r\n\r\n        const progress = Math.min(1, (now - segmentStartTime) \/ segmentDuration);\r\n        const easedProgress = 0.5 - 0.5 * Math.cos(Math.PI * progress);\r\n        const position = segmentStartPosition\r\n          + (segmentTargetPosition - segmentStartPosition) * easedProgress;\r\n\r\n        setPosition(position.toFixed(2));\r\n\r\n        if (progress >= 1) {\r\n          direction *= -1;\r\n          prepareAutomaticSegment(now);\r\n        }\r\n\r\n        frameId = requestAnimationFrame(animate);\r\n      };\r\n\r\n      const startAutomaticMovement = () => {\r\n        clearTimeout(resumeTimer);\r\n        if (reduceMotion || isAutomatic) return;\r\n\r\n        \/* If the visitor leaves the slider outside its automatic range,\r\n           move it smoothly back toward the opposite side. *\/\r\n        if (currentPosition >= AUTO_MAX) direction = -1;\r\n        if (currentPosition <= AUTO_MIN) direction = 1;\r\n\r\n        isAutomatic = true;\r\n        prepareAutomaticSegment(performance.now());\r\n        frameId = requestAnimationFrame(animate);\r\n      };\r\n\r\n      const resumeAfterDelay = () => {\r\n        clearTimeout(resumeTimer);\r\n        if (reduceMotion) return;\r\n\r\n        resumeTimer = setTimeout(startAutomaticMovement, RESUME_DELAY);\r\n      };\r\n\r\n      const finishPointerInteraction = () => {\r\n        if (!isPointerDown) return;\r\n        isPointerDown = false;\r\n        resumeAfterDelay();\r\n      };\r\n\r\n      range.addEventListener('pointerdown', () => {\r\n        isPointerDown = true;\r\n        pauseAutomaticMovement();\r\n      });\r\n\r\n      range.addEventListener('input', () => {\r\n        pauseAutomaticMovement();\r\n        setPosition(range.value);\r\n\r\n        \/* Keyboard and accessibility controls do not use pointerdown. *\/\r\n        if (!isPointerDown) resumeAfterDelay();\r\n      });\r\n\r\n      range.addEventListener('pointerup', finishPointerInteraction);\r\n      range.addEventListener('pointercancel', finishPointerInteraction);\r\n      range.addEventListener('lostpointercapture', finishPointerInteraction);\r\n\r\n      range.addEventListener('keydown', pauseAutomaticMovement);\r\n      range.addEventListener('keyup', resumeAfterDelay);\r\n      range.addEventListener('change', resumeAfterDelay);\r\n      range.addEventListener('blur', () => {\r\n        isPointerDown = false;\r\n        resumeAfterDelay();\r\n      });\r\n\r\n      if (reduceMotion) {\r\n        setPosition(50);\r\n      } else {\r\n        startAutomaticMovement();\r\n      }\r\n    });\r\n  })();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-7e9d8d6 e-con e-atomic-element e-flexbox-base e-78904d1 \" data-id=\"7e9d8d6\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"7e9d8d6\" data-e-type=\"e-flexbox\" data-id=\"7e9d8d6\">\n    <div class=\"elementor-element elementor-element-dff1eca e-flex e-con-boxed e-con e-parent\" data-id=\"dff1eca\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-e31b4f6 e-flex e-con-boxed e-con e-child\" data-id=\"e31b4f6\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;position&quot;:&quot;absolute&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f6dfe7e elementor-widget elementor-widget-heading\" data-id=\"f6dfe7e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Dynamic Time Shift<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9ae0ee1 elementor-hidden-mobile elementor-widget elementor-widget-text-editor\" data-id=\"9ae0ee1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><strong>Shift\u00a0atmospheres with a single click.<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0e44a8e elementor-widget elementor-widget-html\" data-id=\"0e44a8e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!--\r\n  PANOSKY \u2014 MINIMAL TIME-SHIFT BOX \u2014 MOBILE HEIGHT FIX\r\n  Paste this complete file into ONE Elementor HTML widget.\r\n  It intentionally contains no heading, section background, or outer section spacing.\r\n\r\n  INTERACTIONS\r\n  - Drag or click the bottom time rail.\r\n  - Click Morning, Day, or Night.\r\n  - Use arrow keys while the time rail is focused.\r\n  - Autoplay resumes five seconds after interaction ends.\r\n  - Holds each scene for one second, then transitions over two seconds.\r\n-->\r\n\r\n<!--\r\n  ================================================================\r\n  EASY MOTION CONTROLS \u2014 EDIT THESE VALUES ANY TIME\r\n  ================================================================\r\n  Times are in milliseconds: 1000 = 1 second, 2000 = 2 seconds.\r\n-->\r\n<script>\r\n  window.PS_TIMEBOX_SETTINGS = {\r\n    autoplay: true,\r\n    initialTime: 100,          \/\/ 0 = Morning, 50 = Day, 100 = Night\r\n    holdDuration: 1000,        \/\/ How long each image remains still\r\n    transitionDuration: 2000,  \/\/ Thumbnail click + automatic transition speed\r\n    snapDuration: 500,         \/\/ Slider release \u2192 nearest point speed\r\n    resumeDelay: 5000          \/\/ Resume autoplay after 5 seconds without interaction\r\n  };\r\n<\/script>\r\n\r\n<style>\r\n  .ps-timebox {\r\n    \/* ---------- EASY DESIGN SETTINGS ---------- *\/\r\n    --ps-radius: 30px;\r\n    --ps-dock-radius: 22px;\r\n    --ps-border: rgba(148, 192, 255, 0.38);\r\n    --ps-border-soft: rgba(148, 192, 255, 0.2);\r\n    --ps-panel: rgba(2, 17, 47, 0.91);\r\n    --ps-title: var(--e-global-color-541fa18, #f8fbff);\r\n    --ps-muted: var(--e-global-color-text, rgba(231, 240, 255, 0.68));\r\n    --ps-accent: var(--e-global-color-7655478, #009fff);\r\n    --ps-morning: #e99555;\r\n    --ps-day: #ecf6ff;\r\n    --ps-night: #1c72ff;\r\n    --ps-font: var(--e-global-typography-text-font-family, \"Satoshi\");\r\n    --ps-small-font: var(\r\n      --e-global-typography-3b5881b-font-family,\r\n      var(--e-global-typography-accent-font-family, \"Satoshi\")\r\n    );\r\n\r\n    \/* Responsive sizing: edit these values whenever needed. *\/\r\n    --ps-desktop-height: 70vh;\r\n    --ps-desktop-dock-bottom: 24px;\r\n    --ps-mobile-ratio: 4 \/ 3;\r\n\r\n    \/* The three matched scenes are embedded, so the component works immediately. *\/\r\n    --ps-image-morning: url(https:\/\/panosky.com\/wp-content\/uploads\/2026\/07\/01-Morning.jpg);\r\n    --ps-image-day: url(https:\/\/panosky.com\/wp-content\/uploads\/2026\/07\/01-Day.jpg);\r\n    --ps-image-night: url(https:\/\/panosky.com\/wp-content\/uploads\/2026\/07\/01-Night.jpg);\r\n\r\n    \/* JavaScript-controlled values *\/\r\n    --ps-position: 100%;\r\n    --ps-morning-opacity: 0;\r\n    --ps-day-opacity: 0;\r\n    --ps-night-opacity: 1;\r\n\r\n    position: relative;\r\n    width: 100%;\r\n    padding: 0 0 76px;\r\n    color: var(--ps-title);\r\n    font-family: var(--ps-font), Arial, sans-serif;\r\n    box-sizing: border-box;\r\n    isolation: isolate;\r\n  }\r\n\r\n  .ps-timebox *,\r\n  .ps-timebox *::before,\r\n  .ps-timebox *::after {\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  .ps-timebox button {\r\n    font: inherit;\r\n  }\r\n\r\n  .ps-timebox,\r\n  .ps-timebox button,\r\n  .ps-timebox__viewport,\r\n  .ps-timebox__rail {\r\n    -webkit-tap-highlight-color: transparent;\r\n  }\r\n\r\n  .ps-timebox__viewport {\r\n    position: relative;\r\n    overflow: hidden;\r\n    width: 100%;\r\n    aspect-ratio: 16 \/ 9;\r\n    border: 1px solid var(--ps-border);\r\n    border-radius: var(--ps-radius);\r\n    background: #041737;\r\n    box-shadow:\r\n      0 28px 80px rgba(0, 7, 26, 0.42),\r\n      inset 0 0 0 1px rgba(255, 255, 255, 0.025);\r\n  }\r\n\r\n  .ps-timebox__viewport::after {\r\n    position: absolute;\r\n    z-index: 8;\r\n    inset: 0;\r\n    pointer-events: none;\r\n    content: \"\";\r\n    border-radius: inherit;\r\n    background:\r\n      linear-gradient(0deg, rgba(0, 8, 28, 0.2), transparent 35%),\r\n      linear-gradient(90deg, rgba(0, 8, 28, 0.05), transparent 25%, transparent 75%, rgba(0, 8, 28, 0.12));\r\n    box-shadow: inset 0 -1px 0 rgba(138, 196, 255, 0.15);\r\n  }\r\n\r\n  .ps-timebox__image-stack,\r\n  .ps-timebox__scene {\r\n    position: absolute;\r\n    inset: 0;\r\n  }\r\n\r\n  .ps-timebox__image-stack {\r\n    z-index: 1;\r\n  }\r\n\r\n  .ps-timebox__scene {\r\n    transform: scale(1.002);\r\n    background-position: center;\r\n    background-repeat: no-repeat;\r\n    background-size: cover;\r\n    transition: opacity 90ms linear;\r\n    will-change: opacity;\r\n  }\r\n\r\n  .ps-timebox__scene--morning {\r\n    opacity: var(--ps-morning-opacity);\r\n  }\r\n\r\n  .ps-timebox__scene--day {\r\n    opacity: var(--ps-day-opacity);\r\n  }\r\n\r\n  .ps-timebox__scene--night {\r\n    opacity: var(--ps-night-opacity);\r\n  }\r\n\r\n  .ps-timebox__scene--morning {\r\n    background-image: var(--ps-image-morning);\r\n  }\r\n\r\n  .ps-timebox__scene--day {\r\n    background-image: var(--ps-image-day);\r\n  }\r\n\r\n  .ps-timebox__scene--night {\r\n    background-image: var(--ps-image-night);\r\n  }\r\n\r\n  .ps-timebox__current {\r\n    position: absolute;\r\n    z-index: 12;\r\n    top: 18px;\r\n    right: 18px;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n    padding: 8px 11px;\r\n    color: rgba(248, 252, 255, 0.92);\r\n    border: 1px solid rgba(152, 200, 255, 0.26);\r\n    border-radius: 999px;\r\n    background: rgba(1, 18, 49, 0.54);\r\n    font-family: var(--ps-small-font), var(--ps-font), sans-serif;\r\n    font-size: 10px;\r\n    font-weight: 600;\r\n    letter-spacing: 0.13em;\r\n    line-height: 1;\r\n    text-transform: uppercase;\r\n    backdrop-filter: blur(10px);\r\n  }\r\n\r\n  .ps-timebox__current::before {\r\n    width: 6px;\r\n    height: 6px;\r\n    content: \"\";\r\n    border-radius: 50%;\r\n    background: var(--ps-accent);\r\n    box-shadow: 0 0 12px rgba(0, 159, 255, 0.82);\r\n  }\r\n\r\n  \/* ---------- FLOATING CONTROL DOCK ---------- *\/\r\n  .ps-timebox__dock {\r\n    position: absolute;\r\n    z-index: 20;\r\n    bottom: 0;\r\n    left: 50%;\r\n    width: min(700px, 66%);\r\n    padding: 16px 20px 15px;\r\n    border: 1px solid var(--ps-border-soft);\r\n    border-radius: var(--ps-dock-radius);\r\n    background:\r\n      radial-gradient(circle at 76% 115%, rgba(0, 115, 255, 0.14), transparent 38%),\r\n      linear-gradient(180deg, rgba(9, 25, 54, 0.91), rgba(0, 14, 42, 0.96));\r\n    box-shadow:\r\n      0 22px 60px rgba(0, 6, 24, 0.46),\r\n      inset 0 1px 0 rgba(255, 255, 255, 0.04);\r\n    transform: translateX(-50%);\r\n    backdrop-filter: blur(18px);\r\n  }\r\n\r\n  .ps-timebox__options {\r\n    display: grid;\r\n    grid-template-columns: repeat(3, minmax(0, 1fr));\r\n    gap: 14px;\r\n  }\r\n\r\n  .ps-timebox__option {\r\n    min-width: 0;\r\n    padding: 0;\r\n    color: var(--ps-muted);\r\n    border: 0 !important;\r\n    outline: 0;\r\n    background: transparent !important;\r\n    background-color: transparent !important;\r\n    box-shadow: none !important;\r\n    cursor: pointer;\r\n    appearance: none;\r\n  }\r\n\r\n  .ps-timebox__option:hover,\r\n  .ps-timebox__option:focus,\r\n  .ps-timebox__option:focus-visible,\r\n  .ps-timebox__option:active,\r\n  .ps-timebox__option.is-active {\r\n    color: var(--ps-muted);\r\n    border: 0 !important;\r\n    outline: 0;\r\n    background: transparent !important;\r\n    background-color: transparent !important;\r\n    box-shadow: none !important;\r\n    text-decoration: none !important;\r\n  }\r\n\r\n  .ps-timebox__option:focus-visible {\r\n    outline: none;\r\n  }\r\n\r\n  .ps-timebox__option-image {\r\n    position: relative;\r\n    display: block;\r\n    overflow: hidden;\r\n    width: 100%;\r\n    aspect-ratio: 16 \/ 7.8;\r\n    border: 1px solid rgba(149, 195, 255, 0.2);\r\n    border-radius: 10px;\r\n    background-position: center;\r\n    background-size: cover;\r\n    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02);\r\n    transition:\r\n      border-color 200ms ease,\r\n      box-shadow 200ms ease,\r\n      transform 200ms ease,\r\n      opacity 200ms ease;\r\n  }\r\n\r\n  .ps-timebox__option[data-time-value=\"0\"] .ps-timebox__option-image {\r\n    background-image: var(--ps-image-morning);\r\n  }\r\n\r\n  .ps-timebox__option[data-time-value=\"50\"] .ps-timebox__option-image {\r\n    background-image: var(--ps-image-day);\r\n  }\r\n\r\n  .ps-timebox__option[data-time-value=\"100\"] .ps-timebox__option-image {\r\n    background-image: var(--ps-image-night);\r\n  }\r\n\r\n  .ps-timebox__option:hover .ps-timebox__option-image {\r\n    border-color: rgba(151, 207, 255, 0.6);\r\n    transform: translateY(-2px);\r\n  }\r\n\r\n  .ps-timebox__option:focus-visible .ps-timebox__option-image {\r\n    box-shadow: 0 0 0 2px #00163d, 0 0 0 4px var(--ps-accent);\r\n  }\r\n\r\n  .ps-timebox__option.is-active .ps-timebox__option-image {\r\n    border-color: var(--ps-accent);\r\n    box-shadow:\r\n      0 0 0 2px rgba(0, 159, 255, 0.15),\r\n      0 0 18px rgba(0, 159, 255, 0.28);\r\n  }\r\n\r\n  .ps-timebox__option-name {\r\n    display: block;\r\n    margin-top: 7px;\r\n    color: rgba(237, 245, 255, 0.7);\r\n    font-family: var(--ps-small-font), var(--ps-font), sans-serif;\r\n    font-size: 10px;\r\n    font-weight: 600;\r\n    letter-spacing: 0.12em;\r\n    line-height: 1;\r\n    text-align: center;\r\n    text-transform: uppercase;\r\n    transition: color 200ms ease;\r\n  }\r\n\r\n  .ps-timebox__option.is-active .ps-timebox__option-name {\r\n    color: #fff;\r\n  }\r\n\r\n  \/* ---------- HORIZONTAL TIME CONTROL ---------- *\/\r\n  .ps-timebox__rail-label {\r\n    margin: 13px 0 8px;\r\n    color: rgba(218, 231, 249, 0.48);\r\n    font-family: var(--ps-small-font), var(--ps-font), sans-serif;\r\n    font-size: 9px;\r\n    font-weight: 500;\r\n    letter-spacing: 0.18em;\r\n    line-height: 1;\r\n    text-align: center;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .ps-timebox__rail {\r\n    position: relative;\r\n    height: 26px;\r\n    margin-inline: 6px;\r\n    cursor: ew-resize;\r\n    touch-action: none;\r\n    outline: none;\r\n  }\r\n\r\n  .ps-timebox__rail::before {\r\n    position: absolute;\r\n    top: 50%;\r\n    right: 0;\r\n    left: 0;\r\n    height: 2px;\r\n    content: \"\";\r\n    border-radius: 999px;\r\n    background: linear-gradient(\r\n      90deg,\r\n      var(--ps-morning),\r\n      var(--ps-day) 50%,\r\n      var(--ps-night)\r\n    );\r\n    box-shadow: 0 0 12px rgba(83, 161, 255, 0.16);\r\n    transform: translateY(-50%);\r\n  }\r\n\r\n  .ps-timebox__rail:focus-visible {\r\n    border-radius: 9px;\r\n    box-shadow: 0 0 0 2px #00163d, 0 0 0 4px var(--ps-accent);\r\n  }\r\n\r\n  .ps-timebox__rail-node {\r\n    position: absolute;\r\n    z-index: 1;\r\n    top: 50%;\r\n    width: 12px;\r\n    height: 12px;\r\n    border: 2px solid rgba(221, 236, 255, 0.68);\r\n    border-radius: 50%;\r\n    background: #082253;\r\n    box-shadow: 0 0 0 2px rgba(0, 15, 45, 0.88);\r\n    transform: translate(-50%, -50%);\r\n  }\r\n\r\n  .ps-timebox__rail-node--morning {\r\n    left: 0;\r\n    border-color: var(--ps-morning);\r\n  }\r\n\r\n  .ps-timebox__rail-node--day {\r\n    left: 50%;\r\n  }\r\n\r\n  .ps-timebox__rail-node--night {\r\n    left: 100%;\r\n    border-color: #6ea5ff;\r\n  }\r\n\r\n  .ps-timebox__rail-thumb {\r\n    position: absolute;\r\n    z-index: 3;\r\n    top: 50%;\r\n    left: var(--ps-position);\r\n    width: 19px;\r\n    height: 19px;\r\n    pointer-events: none;\r\n    border: 2px solid #fff;\r\n    border-radius: 50%;\r\n    background: #fff;\r\n    box-shadow:\r\n      0 0 0 4px rgba(255, 255, 255, 0.13),\r\n      0 0 16px rgba(226, 244, 255, 0.5);\r\n    transform: translate(-50%, -50%);\r\n    transition: width 170ms ease, height 170ms ease;\r\n  }\r\n\r\n  .ps-timebox__rail:hover .ps-timebox__rail-thumb,\r\n  .ps-timebox__rail.is-dragging .ps-timebox__rail-thumb {\r\n    width: 23px;\r\n    height: 23px;\r\n  }\r\n\r\n  .ps-timebox__sr-only {\r\n    position: absolute !important;\r\n    overflow: hidden !important;\r\n    width: 1px !important;\r\n    height: 1px !important;\r\n    margin: -1px !important;\r\n    padding: 0 !important;\r\n    clip: rect(0, 0, 0, 0) !important;\r\n    border: 0 !important;\r\n    white-space: nowrap !important;\r\n  }\r\n\r\n  \/* ---------- DESKTOP \/ FULL-WIDTH ---------- *\/\r\n  @media (min-width: 1025px) {\r\n    .ps-timebox {\r\n      padding-bottom: 0;\r\n    }\r\n\r\n    .ps-timebox__viewport {\r\n      height: var(--ps-desktop-height);\r\n      aspect-ratio: auto;\r\n    }\r\n\r\n    .ps-timebox__dock {\r\n      bottom: var(--ps-desktop-dock-bottom);\r\n    }\r\n  }\r\n\r\n  \/* ---------- TABLET ---------- *\/\r\n  @media (max-width: 1024px) {\r\n    .ps-timebox {\r\n      --ps-radius: 24px;\r\n      --ps-dock-radius: 20px;\r\n      padding-bottom: 72px;\r\n    }\r\n\r\n    .ps-timebox__dock {\r\n      width: min(670px, 78%);\r\n    }\r\n  }\r\n\r\n  \/* ---------- MOBILE ---------- *\/\r\n  @media (max-width: 767px) {\r\n    .ps-timebox {\r\n      --ps-radius: 20px;\r\n\r\n      \/*\r\n        Keep both mobile sections in normal document flow. This gives\r\n        Elementor one reliable, content-based height to measure instead of\r\n        carrying over the desktop floating-dock geometry.\r\n      *\/\r\n      display: grid !important;\r\n      grid-template-columns: minmax(0, 1fr) !important;\r\n      grid-template-rows: auto auto !important;\r\n      align-items: start;\r\n      width: 100%;\r\n      height: auto !important;\r\n      min-height: 0 !important;\r\n      overflow: hidden;\r\n      padding: 0;\r\n      border: 1px solid var(--ps-border);\r\n      border-radius: var(--ps-radius);\r\n      background: #03183d;\r\n      box-shadow:\r\n        0 24px 60px rgba(0, 7, 26, 0.4),\r\n        inset 0 0 0 1px rgba(255, 255, 255, 0.02);\r\n      overflow-anchor: none;\r\n      transition: none !important;\r\n    }\r\n\r\n    .ps-timebox__viewport {\r\n      grid-column: 1;\r\n      grid-row: 1;\r\n      width: 100%;\r\n      height: auto !important;\r\n      min-height: 0 !important;\r\n      aspect-ratio: var(--ps-mobile-ratio) !important;\r\n      flex: none !important;\r\n      align-self: start;\r\n      border: 0;\r\n      border-radius: 0;\r\n      box-shadow: none;\r\n    }\r\n\r\n    .ps-timebox__scene {\r\n      background-position: center;\r\n    }\r\n\r\n    .ps-timebox__current {\r\n      top: 11px;\r\n      right: 11px;\r\n      padding: 7px 9px;\r\n      font-size: 8px;\r\n    }\r\n\r\n    .ps-timebox__dock {\r\n      position: relative !important;\r\n      grid-column: 1;\r\n      grid-row: 2;\r\n      inset: auto !important;\r\n      width: 100%;\r\n      height: auto !important;\r\n      min-height: 0 !important;\r\n      padding: 12px 11px 10px;\r\n      border: 0;\r\n      border-top: 1px solid var(--ps-border-soft);\r\n      border-radius: 0;\r\n      background:\r\n        radial-gradient(circle at 76% 115%, rgba(0, 115, 255, 0.12), transparent 38%),\r\n        linear-gradient(180deg, #061d47, #021537);\r\n      box-shadow: none;\r\n      transform: none;\r\n      backdrop-filter: none;\r\n      transition: none !important;\r\n    }\r\n\r\n    \/* Make Elementor's own HTML-widget wrappers follow the complete component. *\/\r\n    .elementor-widget-html:has(> .elementor-widget-container > .ps-timebox),\r\n    .elementor-widget-html:has(> .elementor-widget-container > .ps-timebox)\r\n      > .elementor-widget-container {\r\n      height: auto !important;\r\n      max-height: none !important;\r\n      aspect-ratio: auto !important;\r\n      overflow: visible !important;\r\n      transition: none !important;\r\n    }\r\n\r\n    .elementor-widget-html:has(> .elementor-widget-container > .ps-timebox)\r\n      > .elementor-widget-container {\r\n      display: flow-root !important;\r\n      width: 100% !important;\r\n    }\r\n\r\n    .ps-timebox__options {\r\n      gap: 7px;\r\n    }\r\n\r\n    .ps-timebox__option-image {\r\n      border-radius: 8px;\r\n    }\r\n\r\n    .ps-timebox__option-name {\r\n      margin-top: 6px;\r\n      font-size: 8px;\r\n      letter-spacing: 0.08em;\r\n    }\r\n\r\n    .ps-timebox__rail-label {\r\n      margin-top: 11px;\r\n      font-size: 8px;\r\n      letter-spacing: 0.13em;\r\n    }\r\n\r\n    .ps-timebox__rail {\r\n      margin-inline: 9px;\r\n    }\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce) {\r\n    .ps-timebox__scene,\r\n    .ps-timebox__option-image,\r\n    .ps-timebox__option-name,\r\n    .ps-timebox__rail-thumb {\r\n      transition: none !important;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"ps-timebox\" data-ps-timebox>\r\n  <div\r\n    class=\"ps-timebox__viewport\"\r\n    data-time-viewport\r\n    role=\"img\"\r\n    aria-label=\"A luxury interior transitioning through morning, day, and night\"\r\n  >\r\n    <div class=\"ps-timebox__image-stack\" aria-hidden=\"true\">\r\n      <div class=\"ps-timebox__scene ps-timebox__scene--morning\"><\/div>\r\n      <div class=\"ps-timebox__scene ps-timebox__scene--day\"><\/div>\r\n      <div class=\"ps-timebox__scene ps-timebox__scene--night\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"ps-timebox__current\" aria-hidden=\"true\">\r\n      <span data-time-current>Night<\/span>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"ps-timebox__dock\">\r\n    <div class=\"ps-timebox__options\" aria-label=\"Select a time of day\">\r\n      <button class=\"ps-timebox__option\" data-time-value=\"0\" type=\"button\" aria-pressed=\"false\">\r\n        <span class=\"ps-timebox__option-image\" aria-hidden=\"true\"><\/span>\r\n        <span class=\"ps-timebox__option-name\">Morning<\/span>\r\n      <\/button>\r\n\r\n      <button class=\"ps-timebox__option\" data-time-value=\"50\" type=\"button\" aria-pressed=\"false\">\r\n        <span class=\"ps-timebox__option-image\" aria-hidden=\"true\"><\/span>\r\n        <span class=\"ps-timebox__option-name\">Day<\/span>\r\n      <\/button>\r\n\r\n      <button class=\"ps-timebox__option is-active\" data-time-value=\"100\" type=\"button\" aria-pressed=\"true\">\r\n        <span class=\"ps-timebox__option-image\" aria-hidden=\"true\"><\/span>\r\n        <span class=\"ps-timebox__option-name\">Night<\/span>\r\n      <\/button>\r\n    <\/div>\r\n\r\n    <p class=\"ps-timebox__rail-label\">Drag to shift time<\/p>\r\n\r\n    <div\r\n      class=\"ps-timebox__rail\"\r\n      data-time-rail\r\n      role=\"slider\"\r\n      tabindex=\"0\"\r\n      aria-label=\"Choose the time of day\"\r\n      aria-valuemin=\"0\"\r\n      aria-valuemax=\"100\"\r\n      aria-valuenow=\"100\"\r\n      aria-valuetext=\"Night\"\r\n    >\r\n      <span class=\"ps-timebox__rail-node ps-timebox__rail-node--morning\" aria-hidden=\"true\"><\/span>\r\n      <span class=\"ps-timebox__rail-node ps-timebox__rail-node--day\" aria-hidden=\"true\"><\/span>\r\n      <span class=\"ps-timebox__rail-node ps-timebox__rail-node--night\" aria-hidden=\"true\"><\/span>\r\n      <span class=\"ps-timebox__rail-thumb\" aria-hidden=\"true\"><\/span>\r\n    <\/div>\r\n\r\n    <span class=\"ps-timebox__sr-only\" data-time-live aria-live=\"polite\">Night selected<\/span>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n  (() => {\r\n    \"use strict\";\r\n\r\n    const reducedMotion = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\r\n    const editableSettings = window.PS_TIMEBOX_SETTINGS || {};\r\n    const timePoints = [0, 50, 100];\r\n    const numberOr = (value, fallback) => {\r\n      const parsed = Number(value);\r\n      return Number.isFinite(parsed) && parsed >= 0 ? parsed : fallback;\r\n    };\r\n    const motionSettings = {\r\n      autoplay: editableSettings.autoplay !== false,\r\n      initialTime: Math.min(100, numberOr(editableSettings.initialTime, 100)),\r\n      holdDuration: numberOr(editableSettings.holdDuration, 1000),\r\n      transitionDuration: numberOr(editableSettings.transitionDuration, 2000),\r\n      snapDuration: numberOr(editableSettings.snapDuration, 500),\r\n      resumeDelay: numberOr(editableSettings.resumeDelay, 5000)\r\n    };\r\n\r\n    document.querySelectorAll(\"[data-ps-timebox]\").forEach((root) => {\r\n      if (root.dataset.timeboxReady === \"true\") return;\r\n      root.dataset.timeboxReady = \"true\";\r\n\r\n      const rail = root.querySelector(\"[data-time-rail]\");\r\n      const viewport = root.querySelector(\"[data-time-viewport]\");\r\n      const dock = root.querySelector(\".ps-timebox__dock\");\r\n      const current = root.querySelector(\"[data-time-current]\");\r\n      const live = root.querySelector(\"[data-time-live]\");\r\n      const options = Array.from(root.querySelectorAll(\"[data-time-value]\"));\r\n      const elementorContainer = root.closest(\".elementor-widget-container\");\r\n      const elementorWidget = root.closest(\".elementor-widget-html\");\r\n      const mobileLayout = window.matchMedia(\"(max-width: 767px)\");\r\n\r\n      let value = motionSettings.initialTime;\r\n      let activeDrag = false;\r\n      let animationFrame = 0;\r\n      let autoplayTimer = 0;\r\n      let autoplayResumeTimer = 0;\r\n      let autoplayStopped = false;\r\n      let autoplayIndex = 0;\r\n      let userInteracting = false;\r\n      let heightFrame = 0;\r\n      let heightTimer = 0;\r\n      let forceHeightSync = true;\r\n      let lastLayoutWidth = -1;\r\n      let lastAppliedHeight = -1;\r\n\r\n      \/*\r\n        Elementor can retain the image-only height for an HTML widget. The\r\n        component itself stays fully content-sized; only Elementor's wrappers\r\n        receive the measured minimum height. Recalculation is width-driven so\r\n        mobile browser-bar resizing cannot create a height feedback loop.\r\n      *\/\r\n      const managedStyles = [];\r\n\r\n      const rememberStyle = (element, property) => {\r\n        if (!element) return;\r\n        const alreadySaved = managedStyles.some(\r\n          (entry) => entry.element === element && entry.property === property\r\n        );\r\n        if (alreadySaved) return;\r\n\r\n        managedStyles.push({\r\n          element,\r\n          property,\r\n          value: element.style.getPropertyValue(property),\r\n          priority: element.style.getPropertyPriority(property)\r\n        });\r\n      };\r\n\r\n      const setManagedStyle = (element, property, nextValue) => {\r\n        if (!element) return;\r\n        rememberStyle(element, property);\r\n        element.style.setProperty(property, nextValue, \"important\");\r\n      };\r\n\r\n      const restoreManagedStyles = () => {\r\n        managedStyles.splice(0).forEach((entry) => {\r\n          if (entry.value) {\r\n            entry.element.style.setProperty(\r\n              entry.property,\r\n              entry.value,\r\n              entry.priority\r\n            );\r\n          } else {\r\n            entry.element.style.removeProperty(entry.property);\r\n          }\r\n        });\r\n      };\r\n\r\n      const syncMobileHeight = () => {\r\n        heightFrame = 0;\r\n        heightTimer = 0;\r\n\r\n        if (!mobileLayout.matches || !viewport || !dock) {\r\n          restoreManagedStyles();\r\n          lastLayoutWidth = -1;\r\n          lastAppliedHeight = -1;\r\n          forceHeightSync = true;\r\n          return;\r\n        }\r\n\r\n        const layoutWidth = root.getBoundingClientRect().width;\r\n        if (!layoutWidth) return;\r\n\r\n        if (\r\n          !forceHeightSync &&\r\n          lastLayoutWidth >= 0 &&\r\n          Math.abs(layoutWidth - lastLayoutWidth) < 1\r\n        ) {\r\n          return;\r\n        }\r\n\r\n        forceHeightSync = false;\r\n        lastLayoutWidth = layoutWidth;\r\n\r\n        \/*\r\n          Some Elementor\/iPhone Safari combinations compress an auto-height\r\n          grid item even when aspect-ratio is present. Derive the image height\r\n          from its real rendered width so the intended 4:3 mobile frame is\r\n          preserved. The CSS variable remains editable (for example 1 \/ 1).\r\n        *\/\r\n        const ratioText = window\r\n          .getComputedStyle(root)\r\n          .getPropertyValue(\"--ps-mobile-ratio\")\r\n          .trim();\r\n        const ratioParts = ratioText\r\n          .split(\"\/\")\r\n          .map((part) => Number.parseFloat(part.trim()));\r\n        const ratioWidth = ratioParts[0] > 0 ? ratioParts[0] : 4;\r\n        const ratioHeight = ratioParts[1] > 0 ? ratioParts[1] : 3;\r\n        const viewportWidth = viewport.getBoundingClientRect().width;\r\n        const intendedViewportHeight = Math.round(\r\n          viewportWidth * (ratioHeight \/ ratioWidth)\r\n        );\r\n\r\n        if (intendedViewportHeight > 0) {\r\n          setManagedStyle(\r\n            viewport,\r\n            \"height\",\r\n            `${intendedViewportHeight}px`\r\n          );\r\n          setManagedStyle(\r\n            viewport,\r\n            \"min-height\",\r\n            `${intendedViewportHeight}px`\r\n          );\r\n          setManagedStyle(\r\n            viewport,\r\n            \"max-height\",\r\n            `${intendedViewportHeight}px`\r\n          );\r\n        }\r\n\r\n        const rootStyle = window.getComputedStyle(root);\r\n        const borderHeight =\r\n          (parseFloat(rootStyle.borderTopWidth) || 0) +\r\n          (parseFloat(rootStyle.borderBottomWidth) || 0);\r\n        const requiredHeight = Math.ceil(\r\n          viewport.getBoundingClientRect().height +\r\n            dock.getBoundingClientRect().height +\r\n            borderHeight\r\n        );\r\n\r\n        if (!requiredHeight) return;\r\n\r\n        if (requiredHeight === lastAppliedHeight) return;\r\n        lastAppliedHeight = requiredHeight;\r\n\r\n        [elementorContainer, elementorWidget].forEach((element) => {\r\n          setManagedStyle(element, \"height\", \"auto\");\r\n          setManagedStyle(element, \"min-height\", `${requiredHeight}px`);\r\n          setManagedStyle(element, \"max-height\", \"none\");\r\n          setManagedStyle(element, \"aspect-ratio\", \"auto\");\r\n          setManagedStyle(element, \"overflow\", \"visible\");\r\n        });\r\n      };\r\n\r\n      const requestHeightSync = (force = false) => {\r\n        forceHeightSync = forceHeightSync || force;\r\n\r\n        window.clearTimeout(heightTimer);\r\n        heightTimer = window.setTimeout(() => {\r\n          if (heightFrame) cancelAnimationFrame(heightFrame);\r\n          heightFrame = requestAnimationFrame(syncMobileHeight);\r\n        }, 60);\r\n      };\r\n\r\n      if (\"ResizeObserver\" in window) {\r\n        let observedWidth = -1;\r\n        const widthObserver = new ResizeObserver((entries) => {\r\n          const nextWidth = entries[0]?.contentRect?.width || 0;\r\n          if (!nextWidth || Math.abs(nextWidth - observedWidth) < 1) return;\r\n          observedWidth = nextWidth;\r\n          requestHeightSync(true);\r\n        });\r\n        widthObserver.observe(root);\r\n      }\r\n\r\n      let lastWindowWidth = window.innerWidth;\r\n      window.addEventListener(\r\n        \"resize\",\r\n        () => {\r\n          const nextWindowWidth = window.innerWidth;\r\n\r\n          \/* Ignore address-bar and keyboard resizes that change height only. *\/\r\n          if (Math.abs(nextWindowWidth - lastWindowWidth) < 1) return;\r\n\r\n          lastWindowWidth = nextWindowWidth;\r\n          requestHeightSync(true);\r\n        },\r\n        { passive: true }\r\n      );\r\n\r\n      if (typeof mobileLayout.addEventListener === \"function\") {\r\n        mobileLayout.addEventListener(\"change\", () => requestHeightSync(true));\r\n      } else if (typeof mobileLayout.addListener === \"function\") {\r\n        mobileLayout.addListener(() => requestHeightSync(true));\r\n      }\r\n\r\n      window.addEventListener(\"load\", () => requestHeightSync(true), {\r\n        once: true\r\n      });\r\n\r\n      if (document.fonts?.ready) {\r\n        document.fonts.ready.then(() => requestHeightSync(true));\r\n      }\r\n\r\n      const clamp = (number, minimum, maximum) =>\r\n        Math.min(maximum, Math.max(minimum, number));\r\n\r\n      const nearestPoint = (nextValue) =>\r\n        timePoints.reduce((closest, point) =>\r\n          Math.abs(point - nextValue) < Math.abs(closest - nextValue)\r\n            ? point\r\n            : closest\r\n        );\r\n\r\n      const pointIndexFor = (nextValue) =>\r\n        timePoints.indexOf(nearestPoint(nextValue));\r\n\r\n      const stateFor = (nextValue) => {\r\n        if (nextValue < 25) return { key: \"morning\", name: \"Morning\", snap: 0 };\r\n        if (nextValue > 75) return { key: \"night\", name: \"Night\", snap: 100 };\r\n        return { key: \"day\", name: \"Day\", snap: 50 };\r\n      };\r\n\r\n      const opacitiesFor = (nextValue) => {\r\n        const normalized = clamp(nextValue, 0, 100);\r\n\r\n        if (normalized <= 50) {\r\n          return {\r\n            morning: 1 - normalized \/ 50,\r\n            day: normalized \/ 50,\r\n            night: 0\r\n          };\r\n        }\r\n\r\n        return {\r\n          morning: 0,\r\n          day: 1 - (normalized - 50) \/ 50,\r\n          night: (normalized - 50) \/ 50\r\n        };\r\n      };\r\n\r\n      const update = (nextValue, announce = false) => {\r\n        value = clamp(Number(nextValue) || 0, 0, 100);\r\n\r\n        const blend = opacitiesFor(value);\r\n        const state = stateFor(value);\r\n\r\n        root.style.setProperty(\"--ps-position\", `${value.toFixed(3)}%`);\r\n        root.style.setProperty(\"--ps-morning-opacity\", blend.morning.toFixed(4));\r\n        root.style.setProperty(\"--ps-day-opacity\", blend.day.toFixed(4));\r\n        root.style.setProperty(\"--ps-night-opacity\", blend.night.toFixed(4));\r\n\r\n        rail.setAttribute(\"aria-valuenow\", String(Math.round(value)));\r\n        rail.setAttribute(\"aria-valuetext\", state.name);\r\n        current.textContent = state.name;\r\n\r\n        options.forEach((option) => {\r\n          const isActive = Number(option.dataset.timeValue) === state.snap;\r\n          option.classList.toggle(\"is-active\", isActive);\r\n          option.setAttribute(\"aria-pressed\", String(isActive));\r\n        });\r\n\r\n        if (announce && live) {\r\n          live.textContent = `${state.name} selected`;\r\n        }\r\n      };\r\n\r\n      const cancelAnimation = () => {\r\n        if (!animationFrame) return;\r\n        cancelAnimationFrame(animationFrame);\r\n        animationFrame = 0;\r\n      };\r\n\r\n      const animateTo = (target, animationOptions = {}) => {\r\n        const announce = animationOptions.announce !== false;\r\n        const onComplete =\r\n          typeof animationOptions.onComplete === \"function\"\r\n            ? animationOptions.onComplete\r\n            : null;\r\n        const duration = numberOr(\r\n          animationOptions.duration,\r\n          motionSettings.transitionDuration\r\n        );\r\n\r\n        cancelAnimation();\r\n\r\n        if (reducedMotion.matches || duration === 0 || target === value) {\r\n          update(target, announce);\r\n          if (onComplete) onComplete();\r\n          return;\r\n        }\r\n\r\n        const startValue = value;\r\n        const distance = target - startValue;\r\n        const startTime = performance.now();\r\n\r\n        const step = (time) => {\r\n          const progress = clamp((time - startTime) \/ duration, 0, 1);\r\n          const eased = progress * progress * (3 - 2 * progress);\r\n          update(startValue + distance * eased);\r\n\r\n          if (progress < 1) {\r\n            animationFrame = requestAnimationFrame(step);\r\n          } else {\r\n            animationFrame = 0;\r\n            update(target, announce);\r\n            if (onComplete) onComplete();\r\n          }\r\n        };\r\n\r\n        animationFrame = requestAnimationFrame(step);\r\n      };\r\n\r\n      const valueFromElement = (event, element) => {\r\n        const rect = element.getBoundingClientRect();\r\n        return clamp(((event.clientX - rect.left) \/ rect.width) * 100, 0, 100);\r\n      };\r\n\r\n      const beginDrag = (event) => {\r\n        cancelAnimation();\r\n        activeDrag = true;\r\n        rail.classList.add(\"is-dragging\");\r\n        rail.setPointerCapture(event.pointerId);\r\n        update(valueFromElement(event, rail));\r\n        event.preventDefault();\r\n      };\r\n\r\n      const moveDrag = (event) => {\r\n        if (!activeDrag) return;\r\n        update(valueFromElement(event, rail));\r\n      };\r\n\r\n      const endDrag = (event) => {\r\n        if (!activeDrag) return;\r\n        activeDrag = false;\r\n        rail.classList.remove(\"is-dragging\");\r\n\r\n        if (rail.hasPointerCapture(event.pointerId)) {\r\n          rail.releasePointerCapture(event.pointerId);\r\n        }\r\n\r\n        animateTo(nearestPoint(value), {\r\n          duration: motionSettings.snapDuration,\r\n          announce: true\r\n        });\r\n      };\r\n\r\n      rail.addEventListener(\"pointerdown\", beginDrag);\r\n      rail.addEventListener(\"pointermove\", moveDrag);\r\n      rail.addEventListener(\"pointerup\", endDrag);\r\n      rail.addEventListener(\"pointercancel\", endDrag);\r\n\r\n      const handleKeyboard = (event) => {\r\n        let target;\r\n\r\n        if (\r\n          event.key === \"ArrowRight\" ||\r\n          event.key === \"ArrowUp\" ||\r\n          event.key === \"PageUp\"\r\n        ) {\r\n          target = timePoints.find((point) => point > value + 0.01);\r\n          if (target === undefined) target = 100;\r\n        } else if (\r\n          event.key === \"ArrowLeft\" ||\r\n          event.key === \"ArrowDown\" ||\r\n          event.key === \"PageDown\"\r\n        ) {\r\n          target = [...timePoints]\r\n            .reverse()\r\n            .find((point) => point < value - 0.01);\r\n          if (target === undefined) target = 0;\r\n        } else if (event.key === \"Home\") target = 0;\r\n        else if (event.key === \"End\") target = 100;\r\n        else return;\r\n\r\n        animateTo(target, {\r\n          duration: motionSettings.snapDuration,\r\n          announce: true\r\n        });\r\n        event.preventDefault();\r\n      };\r\n\r\n      rail.addEventListener(\"keydown\", handleKeyboard);\r\n\r\n      options.forEach((option) => {\r\n        option.addEventListener(\"click\", () => {\r\n          animateTo(Number(option.dataset.timeValue), {\r\n            duration: motionSettings.transitionDuration,\r\n            announce: true\r\n          });\r\n        });\r\n      });\r\n\r\n      const stopAutoplay = () => {\r\n        autoplayStopped = true;\r\n        window.clearTimeout(autoplayTimer);\r\n        window.clearTimeout(autoplayResumeTimer);\r\n        autoplayTimer = 0;\r\n        autoplayResumeTimer = 0;\r\n      };\r\n\r\n      const advanceAutoplay = () => {\r\n        if (autoplayStopped) return;\r\n\r\n        autoplayIndex = (autoplayIndex + 1) % timePoints.length;\r\n        animateTo(timePoints[autoplayIndex], {\r\n          announce: false,\r\n          duration: motionSettings.transitionDuration,\r\n          onComplete: scheduleAutoplay\r\n        });\r\n      };\r\n\r\n      const scheduleAutoplay = () => {\r\n        if (autoplayStopped) return;\r\n\r\n        window.clearTimeout(autoplayTimer);\r\n        autoplayTimer = window.setTimeout(\r\n          advanceAutoplay,\r\n          motionSettings.holdDuration\r\n        );\r\n      };\r\n\r\n      const beginUserInteraction = () => {\r\n        userInteracting = true;\r\n        stopAutoplay();\r\n      };\r\n\r\n      const resumeAutoplayAfterIdle = () => {\r\n        if (!motionSettings.autoplay || userInteracting) return;\r\n\r\n        window.clearTimeout(autoplayResumeTimer);\r\n        autoplayResumeTimer = window.setTimeout(() => {\r\n          autoplayResumeTimer = 0;\r\n          autoplayStopped = false;\r\n          autoplayIndex = pointIndexFor(value);\r\n\r\n          \/* Begin the next slide now: the full five-second idle period passed. *\/\r\n          advanceAutoplay();\r\n        }, motionSettings.resumeDelay);\r\n      };\r\n\r\n      const endUserInteraction = () => {\r\n        if (!userInteracting) return;\r\n        userInteracting = false;\r\n        resumeAutoplayAfterIdle();\r\n      };\r\n\r\n      root.addEventListener(\"pointerdown\", beginUserInteraction, {\r\n        capture: true,\r\n        passive: true\r\n      });\r\n\r\n      \/* Window-level end events also catch a drag released outside the widget. *\/\r\n      window.addEventListener(\"pointerup\", endUserInteraction, {\r\n        capture: true,\r\n        passive: true\r\n      });\r\n      window.addEventListener(\"pointercancel\", endUserInteraction, {\r\n        capture: true,\r\n        passive: true\r\n      });\r\n\r\n      root.addEventListener(\"keydown\", beginUserInteraction, {\r\n        capture: true\r\n      });\r\n      window.addEventListener(\"keyup\", endUserInteraction, {\r\n        capture: true\r\n      });\r\n\r\n      autoplayIndex = pointIndexFor(value);\r\n      update(value);\r\n      requestHeightSync(true);\r\n      if (motionSettings.autoplay) scheduleAutoplay();\r\n    });\r\n  })();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-641dfc1 e-con e-atomic-element e-flexbox-base e-641dfc1-257fb19 \" data-id=\"641dfc1\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"641dfc1\" data-e-type=\"e-flexbox\" data-id=\"641dfc1\">\n    <div class=\"elementor-element elementor-element-2d00d49 e-con-full e-flex e-con e-parent\" data-id=\"2d00d49\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d9f58d8 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"d9f58d8\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"animated-guesswork\">VR<\/span> Ready<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f98c240 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"f98c240\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Step inside at true scale.<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5fe46d9 e-con-full e-flex e-con e-parent\" data-id=\"5fe46d9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1f643f2 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"1f643f2\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Interactive <span class=\"animated-guesswork\">3D<\/span> Objects<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b63207c elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"b63207c\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Inspect from every angle.<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-0ba8767 e-con e-atomic-element e-flexbox-base e-0ba8767-e3929b9 \" data-id=\"0ba8767\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"0ba8767\" data-e-type=\"e-flexbox\" data-id=\"0ba8767\">\n    <div class=\"elementor-element elementor-element-fb4cec2 e-con-full e-flex e-con e-parent\" data-id=\"fb4cec2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ac02066 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"ac02066\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"animated-guesswork\">Gigapixel<\/span> Clarity<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5b05df6 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"5b05df6\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Zoom Deeper. Keep every detail.<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6c01baa e-con-full e-flex e-con e-parent\" data-id=\"6c01baa\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d557620 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"d557620\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"animated-guesswork\">Specialized<\/span> Interiors <\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1c67d01 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"1c67d01\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Precision in every space.<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-37fd2a9 e-con e-atomic-element e-flexbox-base e-37fd2a9-7ac5ae6 \" data-id=\"37fd2a9\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"37fd2a9\" data-e-type=\"e-flexbox\" data-id=\"37fd2a9\">\n    <div class=\"elementor-element elementor-element-6e565a0 e-con-full e-flex e-con e-parent\" data-id=\"6e565a0\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0a174f9 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"0a174f9\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"animated-guesswork\">Aerial 360\u00b0<\/span> Perspective<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-821af72 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"821af72\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">See the entire context.<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-af577b2 e-con-full e-flex e-con e-parent\" data-id=\"af577b2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1a1681d elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"1a1681d\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"animated-guesswork\">Spacial<\/span> Audio &amp; Guides<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7f71aab elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"7f71aab\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Guidance you can hear.<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-24d7c27 e-con e-atomic-element e-flexbox-base e-24d7c27-562df05 \" data-id=\"24d7c27\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"24d7c27\" data-e-type=\"e-flexbox\" data-id=\"24d7c27\">\n    <div class=\"elementor-element elementor-element-49f4856 e-con-full e-flex e-con e-parent\" data-id=\"49f4856\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fbfe104 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"fbfe104\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"animated-guesswork\">Live Guided<\/span> Tours<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-25ab249 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"25ab249\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Be there from anywhere<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-40ad312 e-con-full e-flex e-con e-parent\" data-id=\"40ad312\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4ffb9a5 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"4ffb9a5\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Deep <span class=\"animated-guesswork\">Analytics<\/span> <\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9b6cb7a elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"9b6cb7a\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Know who is watching<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-745ca3f e-con e-atomic-element e-flexbox-base e-745ca3f-42565af \" data-id=\"745ca3f\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"745ca3f\" data-e-type=\"e-flexbox\" data-id=\"745ca3f\">\n    <div class=\"elementor-element elementor-element-5242785 e-con-full e-flex e-con e-parent\" data-id=\"5242785\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ec02f64 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"ec02f64\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"animated-guesswork\">Interactive<\/span> Floor Plans<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eb43a4d elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"eb43a4d\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">See the entire context.<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-26bbc90 e-con-full e-flex e-con e-parent\" data-id=\"26bbc90\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-25eeca4 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"25eeca4\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"animated-guesswork\">Direct<\/span> Booking<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8317fb5 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"8317fb5\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Guidance you can hear.<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-344f1c4 e-con e-atomic-element e-flexbox-base e-344f1c4-10f2c67 \" data-id=\"344f1c4\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"344f1c4\" data-e-type=\"e-flexbox\" data-id=\"344f1c4\">\n    <div class=\"elementor-element elementor-element-ba666db e-flex e-con-boxed e-con e-parent\" data-id=\"ba666db\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ca54e18 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"ca54e18\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Ready To <span class=\"animated-guesswork\">Digitalize<\/span><br>\nYour Reality?\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a9fb1b6 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"a9fb1b6\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Let\u2019s engineer a custom spatial environment tailored to your exact business objectives. <\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-261c0d2 elementor-align-center elementor-invisible elementor-widget elementor-widget-button\" data-id=\"261c0d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:400}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Schedule a Consultation<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Pro Features.Absolute Immersion. The technology behind the tour.\u00a0Every feature is built to turn your physical space into a powerful digital asset. Virtual Staging Empty to extraordinary. BEFORE AFTER Dynamic Time Shift Shift\u00a0atmospheres with a single click. Night Morning Day Night Drag to shift time Night selected VR Ready Step inside at true scale. Interactive 3D [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1331","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Features - PanoSky Systems<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/panosky.com\/?page_id=1331\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Features - PanoSky Systems\" \/>\n<meta property=\"og:description\" content=\"Pro Features.Absolute Immersion. The technology behind the tour.\u00a0Every feature is built to turn your physical space into a powerful digital asset. Virtual Staging Empty to extraordinary. BEFORE AFTER Dynamic Time Shift Shift\u00a0atmospheres with a single click. Night Morning Day Night Drag to shift time Night selected VR Ready Step inside at true scale. Interactive 3D [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/panosky.com\/?page_id=1331\" \/>\n<meta property=\"og:site_name\" content=\"PanoSky Systems\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-25T08:32:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/01-time-shift-poster.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"22 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/panosky.com\\\/?page_id=1331\",\"url\":\"https:\\\/\\\/panosky.com\\\/?page_id=1331\",\"name\":\"Features - PanoSky Systems\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/beepano.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/panosky.com\\\/?page_id=1331#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/panosky.com\\\/?page_id=1331#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/panosky-website-media.b-cdn.net\\\/Web%20Images%20and%20videos\\\/Features%20page\\\/01-time-shift-poster.jpg\",\"datePublished\":\"2026-07-22T15:01:40+00:00\",\"dateModified\":\"2026-08-25T08:32:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/panosky.com\\\/?page_id=1331#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/panosky.com\\\/?page_id=1331\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/panosky.com\\\/?page_id=1331#primaryimage\",\"url\":\"https:\\\/\\\/panosky-website-media.b-cdn.net\\\/Web%20Images%20and%20videos\\\/Features%20page\\\/01-time-shift-poster.jpg\",\"contentUrl\":\"https:\\\/\\\/panosky-website-media.b-cdn.net\\\/Web%20Images%20and%20videos\\\/Features%20page\\\/01-time-shift-poster.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/panosky.com\\\/?page_id=1331#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/panosky.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Features\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/beepano.com\\\/#website\",\"url\":\"http:\\\/\\\/beepano.com\\\/\",\"name\":\"PanoSky Systems\",\"description\":\"\",\"publisher\":{\"@id\":\"http:\\\/\\\/beepano.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\\\/\\\/beepano.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\\\/\\\/beepano.com\\\/#organization\",\"name\":\"PanoSky Systems\",\"url\":\"http:\\\/\\\/beepano.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/beepano.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/panosky.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/PanoSky-Logo-for-website-temp-01-1.png\",\"contentUrl\":\"https:\\\/\\\/panosky.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/PanoSky-Logo-for-website-temp-01-1.png\",\"width\":1024,\"height\":221,\"caption\":\"PanoSky Systems\"},\"image\":{\"@id\":\"http:\\\/\\\/beepano.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Features - PanoSky Systems","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/panosky.com\/?page_id=1331","og_locale":"en_US","og_type":"article","og_title":"Features - PanoSky Systems","og_description":"Pro Features.Absolute Immersion. The technology behind the tour.\u00a0Every feature is built to turn your physical space into a powerful digital asset. Virtual Staging Empty to extraordinary. BEFORE AFTER Dynamic Time Shift Shift\u00a0atmospheres with a single click. Night Morning Day Night Drag to shift time Night selected VR Ready Step inside at true scale. Interactive 3D [&hellip;]","og_url":"https:\/\/panosky.com\/?page_id=1331","og_site_name":"PanoSky Systems","article_modified_time":"2026-08-25T08:32:14+00:00","og_image":[{"url":"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/01-time-shift-poster.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"22 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/panosky.com\/?page_id=1331","url":"https:\/\/panosky.com\/?page_id=1331","name":"Features - PanoSky Systems","isPartOf":{"@id":"http:\/\/beepano.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/panosky.com\/?page_id=1331#primaryimage"},"image":{"@id":"https:\/\/panosky.com\/?page_id=1331#primaryimage"},"thumbnailUrl":"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/01-time-shift-poster.jpg","datePublished":"2026-07-22T15:01:40+00:00","dateModified":"2026-08-25T08:32:14+00:00","breadcrumb":{"@id":"https:\/\/panosky.com\/?page_id=1331#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/panosky.com\/?page_id=1331"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/panosky.com\/?page_id=1331#primaryimage","url":"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/01-time-shift-poster.jpg","contentUrl":"https:\/\/panosky-website-media.b-cdn.net\/Web%20Images%20and%20videos\/Features%20page\/01-time-shift-poster.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/panosky.com\/?page_id=1331#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/panosky.com\/"},{"@type":"ListItem","position":2,"name":"Features"}]},{"@type":"WebSite","@id":"http:\/\/beepano.com\/#website","url":"http:\/\/beepano.com\/","name":"PanoSky Systems","description":"","publisher":{"@id":"http:\/\/beepano.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/beepano.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/beepano.com\/#organization","name":"PanoSky Systems","url":"http:\/\/beepano.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/beepano.com\/#\/schema\/logo\/image\/","url":"https:\/\/panosky.com\/wp-content\/uploads\/2026\/07\/PanoSky-Logo-for-website-temp-01-1.png","contentUrl":"https:\/\/panosky.com\/wp-content\/uploads\/2026\/07\/PanoSky-Logo-for-website-temp-01-1.png","width":1024,"height":221,"caption":"PanoSky Systems"},"image":{"@id":"http:\/\/beepano.com\/#\/schema\/logo\/image\/"}}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/panosky.com\/index.php?rest_route=\/wp\/v2\/pages\/1331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/panosky.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/panosky.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/panosky.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/panosky.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1331"}],"version-history":[{"count":5,"href":"https:\/\/panosky.com\/index.php?rest_route=\/wp\/v2\/pages\/1331\/revisions"}],"predecessor-version":[{"id":2937,"href":"https:\/\/panosky.com\/index.php?rest_route=\/wp\/v2\/pages\/1331\/revisions\/2937"}],"wp:attachment":[{"href":"https:\/\/panosky.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}