
#harmony-v3{--hv-night:#070f1c;--hv-cream:#fff8ed;--hv-brass:#cdb384;position:relative;isolation:isolate;overflow:hidden;height:680px;background:var(--hv-night);color:var(--hv-cream);font-family:Jost,sans-serif}#harmony-v3 *{box-sizing:border-box}#harmony-v3 [hidden]{display:none!important}#harmony-v3 .hv-atmosphere{position:absolute;inset:0;overflow:hidden;background:var(--hv-night)}#harmony-v3 .hv-ambient{position:absolute;inset:-15%;width:130%;height:130%;object-fit:cover;filter:blur(32px) brightness(.68) saturate(.6);opacity:.45;transform:scale(1.05)}#harmony-v3 .hv-ambient-b{opacity:0}#harmony-v3 .hv-atmosphere::after{content:'';position:absolute;inset:0;background:#070f1c7d}#harmony-v3 .hv-stage{position:absolute;inset:0;perspective:1000px;perspective-origin:50% 48%;overflow:hidden}#harmony-v3 .hv-room{position:absolute;inset:0;transform-style:preserve-3d;will-change:transform;pointer-events:none}#harmony-v3 .hv-image{position:absolute;inset:-9% -12%;transform:translateZ(-100px) scale(1.16);mask-image:radial-gradient(ellipse 65% 66% at 62% 46%,#000 28%,#000e 50%,#0004 73%,transparent 90%);-webkit-mask-image:radial-gradient(ellipse 65% 66% at 62% 46%,#000 28%,#000e 50%,#0004 73%,transparent 90%);will-change:opacity,transform}#harmony-v3 .hv-image img{width:100%;height:100%;object-fit:cover;filter:brightness(1.04) saturate(.92);object-position:60% 50%}#harmony-v3 .hv-image::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#070f1ce0 0%,#070f1c55 30%,transparent 56%,#070f1c0d 78%,#070f1c70 100%)}#harmony-v3 .hv-copy{position:absolute;z-index:2;left:9%;top:29%;max-width:360px;transform:translateZ(70px);will-change:opacity,transform}#harmony-v3 .hv-copy>span{font-size:10px;letter-spacing:.22em;color:var(--hv-brass);text-shadow:0 1px 14px #070f1c}#harmony-v3 h3{font:400 clamp(58px,8.2vw,94px)/.94 'Cormorant Garamond',serif;letter-spacing:-.025em;margin:22px 0 24px;text-shadow:0 2px 28px #070f1c66}#harmony-v3 h3 i{font-weight:400}#harmony-v3 p{font-size:13px;line-height:1.9;margin:0;color:#fff8ede0;text-shadow:0 1px 12px #070f1c}#harmony-v3 .hv-room[data-room="1"] .hv-copy{left:auto;right:10%;top:25%}#harmony-v3 .hv-room[data-room="1"] .hv-image::after{background:linear-gradient(90deg,#070f1c50,transparent 32%,#070f1c44 60%,#070f1cd9 100%)}#harmony-v3 .hv-room[data-room="1"] .hv-image{mask-image:radial-gradient(ellipse 67% 70% at 40% 46%,#000 28%,#000d 55%,transparent 90%);-webkit-mask-image:radial-gradient(ellipse 67% 70% at 40% 46%,#000 28%,#000d 55%,transparent 90%)}#harmony-v3 .hv-room[data-room="2"] .hv-copy{left:13%;top:30%}#harmony-v3 .hv-room[data-room="3"] .hv-copy{left:11%;top:24%}#harmony-v3 .hv-room[data-room="3"] h3{font-size:clamp(52px,7.2vw,82px)}#harmony-v3 .hv-vignette{position:absolute;inset:0;pointer-events:none;z-index:3;background:linear-gradient(0deg,#070f1c 0%,#070f1c0a 24%,transparent 74%,#070f1caa),linear-gradient(90deg,#070f1c55,transparent 18%,transparent 85%,#070f1c55)}#harmony-v3 .hv-brand{position:absolute;z-index:5;top:36px;left:5.6%;font-size:15px;letter-spacing:.26em;text-shadow:0 1px 15px #070f1c}#harmony-v3 .hv-brand span{display:block;font-size:8px;letter-spacing:.5em;margin-top:5px}#harmony-v3 button{font-family:inherit;color:inherit;background:none;border:0}#harmony-v3 button:focus-visible{outline:1px solid var(--hv-brass);outline-offset:4px}#harmony-v3 .hv-invite{position:absolute;z-index:5;right:13%;top:55%;display:flex;align-items:center;flex-direction:column;gap:11px;min-height:90px;min-width:90px;padding:8px;transition:opacity .2s,transform .35s}#harmony-v3 .hv-circle{display:grid;place-items:center;width:44px;height:44px;border:1px solid #e2c89cbf;border-radius:50%;font-size:23px;backdrop-filter:blur(6px);background:#070f1c26;transition:transform .3s,background .3s}#harmony-v3 .hv-invite:hover .hv-circle{transform:scale(1.13) rotate(6deg);background:#070f1c66}#harmony-v3 .hv-name{font-size:11px;letter-spacing:.1em;text-shadow:0 1px 10px #070f1c}#harmony-v3[data-active="1"] .hv-invite{right:auto;left:14%;top:56%}#harmony-v3[data-active="3"] .hv-invite{top:61%}#harmony-v3.hv-travelling .hv-invite{opacity:0;pointer-events:none;transform:scale(.9)}#harmony-v3 .hv-nav{position:absolute;z-index:6;bottom:25px;left:0;right:0;display:flex;gap:18px;justify-content:center;align-items:center}#harmony-v3 .hv-nav button{min-width:44px;min-height:44px;padding:10px;font-size:18px;color:var(--hv-brass)}#harmony-v3 .hv-dots{display:flex;gap:0}#harmony-v3 .hv-dots button{min-width:34px;display:grid;place-items:center}#harmony-v3 .hv-dots span{width:5px;height:5px;border-radius:50%;background:#e3dfd266;transition:transform .3s,background .3s}#harmony-v3 .hv-dots button[aria-pressed=true] span{background:var(--hv-brass);transform:scale(1.5)}#harmony-v3 .hv-announcement{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
@media(max-width:580px){#harmony-v3{height:650px}#harmony-v3 .hv-brand{left:8%;top:28px}#harmony-v3 .hv-copy,#harmony-v3 .hv-room[data-room="1"] .hv-copy,#harmony-v3 .hv-room[data-room="2"] .hv-copy,#harmony-v3 .hv-room[data-room="3"] .hv-copy{left:9%;right:8%;top:27%;max-width:290px}#harmony-v3 h3{font-size:66px}#harmony-v3 .hv-room[data-room="3"] h3{font-size:57px}#harmony-v3 p{font-size:12px}#harmony-v3 .hv-image{inset:-7% -37%}#harmony-v3 .hv-image::after,#harmony-v3 .hv-room[data-room="1"] .hv-image::after{background:linear-gradient(90deg,#070f1cc9,transparent 83%)}#harmony-v3 .hv-invite,#harmony-v3[data-active="1"] .hv-invite,#harmony-v3[data-active="3"] .hv-invite{left:auto;right:8%;top:auto;bottom:100px}#harmony-v3 .hv-nav{bottom:22px}}

/* Public site integration; approved brochure motion is preserved. */
.brochure-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.harmony-brochure{position:relative;scroll-margin-top:70px}
.harmony-brochure #harmony-v3{height:clamp(680px,95svh,920px);background:var(--ink,#070f1c);font-family:var(--f-sans,Jost,sans-serif)}
#harmony-v3 .hv-copy h3{padding-bottom:.07em}
.gallery-access{position:fixed;z-index:50;left:max(22px,env(safe-area-inset-left));bottom:calc(22px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:12px;min-width:68px;min-height:58px;padding:10px 8px;color:#fff;border-radius:12px;background:radial-gradient(ellipse,#070f1c99,transparent 75%);-webkit-tap-highlight-color:transparent}
.gallery-access__flow{position:relative;display:block;width:58px;height:34px;perspective:180px;transform-style:preserve-3d}
.gallery-access__flow>span{position:absolute;top:4px;left:19px;width:21px;height:27px;border:1.3px solid currentColor;border-radius:1px;background:#070f1c44;transform-origin:50% 50%;transition:transform .65s cubic-bezier(.16,1,.3,1),opacity .45s ease}
.gallery-access__flow>span::after{content:"";position:absolute;left:3px;right:3px;bottom:4px;height:1px;background:currentColor;opacity:.5}
.gallery-access__flow>span:nth-child(1){transform:translateX(-21px) translateZ(-16px) rotateY(46deg);opacity:.65}
.gallery-access__flow>span:nth-child(2){transform:translateX(-12px) translateZ(-8px) rotateY(32deg);opacity:.85}
.gallery-access__flow>span:nth-child(3){transform:translateZ(7px);z-index:2;background:#070f1c8c}
.gallery-access__flow>span:nth-child(4){transform:translateX(12px) translateZ(-8px) rotateY(-32deg);opacity:.85}
.gallery-access__flow>span:nth-child(5){transform:translateX(21px) translateZ(-16px) rotateY(-46deg);opacity:.65}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(1){transform:translateX(-25px) translateY(1px) translateZ(-10px) rotateY(56deg);opacity:.9}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(2){transform:translateX(-15px) translateY(-1px) translateZ(-2px) rotateY(40deg);opacity:1}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(3){transform:translateY(-4px) translateZ(17px)}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(4){transform:translateX(15px) translateY(-1px) translateZ(-2px) rotateY(-40deg);opacity:1}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(5){transform:translateX(25px) translateY(1px) translateZ(-10px) rotateY(-56deg);opacity:.9}
.gallery-access__label{font-size:11px;letter-spacing:.08em;white-space:nowrap;opacity:0;transform:translateX(-6px);transition:opacity .3s,transform .3s;text-shadow:0 1px 10px #070f1c}
.gallery-access:is(:hover,:focus-visible) .gallery-access__label{opacity:1;transform:none}
.gallery-access:focus-visible{outline:1px solid #fff;outline-offset:4px}
body:has(.contact-modal.is-open) .gallery-access{visibility:hidden}
@media(max-width:580px){.harmony-brochure #harmony-v3{height:max(650px,90svh)}.gallery-access{left:max(12px,env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom))}.gallery-access__label{display:none}}
@media(prefers-reduced-motion:reduce){.gallery-access__flow>span,.gallery-access__label{transition:none}.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span{transform:revert-layer}.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(1){transform:translateX(-21px) translateZ(-16px) rotateY(46deg)}.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(2){transform:translateX(-12px) translateZ(-8px) rotateY(32deg)}.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(3){transform:translateZ(7px)}.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(4){transform:translateX(12px) translateZ(-8px) rotateY(-32deg)}.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(5){transform:translateX(21px) translateZ(-16px) rotateY(-46deg)}}
/* Spatial polish. Resting planes stay readable; camera travel carries the stronger perspective. */
#harmony-v3 .hv-stage{perspective:1100px}
#harmony-v3 .hv-ambient{inset:0;width:100%;height:100%;filter:brightness(.8) saturate(.7);transform:scale(1.04);opacity:.32}
#harmony-v3 .hv-image{transform:translateZ(-130px) scale(1.2)}
#harmony-v3 .hv-room{will-change:auto}
#harmony-v3.hv-travelling .hv-room:not([hidden]){will-change:transform}
#harmony-v3 .hv-copy{max-width:330px;top:29%;transform-style:preserve-3d;transform-origin:0 50%;transform:translateZ(115px) rotateY(-6deg) rotateX(2deg)}
#harmony-v3 .hv-copy h3{font-size:clamp(50px,7vw,84px);transform:translateZ(24px);text-shadow:1px 1px 0 #a9a39766,2px 3px 0 #070f1c44,8px 14px 28px #070f1c80}
#harmony-v3 .hv-copy p{white-space:pre-line;transform:translateZ(8px)}
#harmony-v3 .hv-room[data-placement="right"] .hv-copy{left:auto;right:11%;top:25%;transform-origin:100% 50%}
#harmony-v3 .hv-room[data-placement="left"] .hv-copy{left:11%;right:auto;top:29%}
#harmony-v3 .hv-room[data-placement="right"] .hv-image::after{background:linear-gradient(90deg,#070f1c50,transparent 32%,#070f1c44 60%,#070f1cd9)}
#harmony-v3[data-placement="right"] .hv-invite{right:auto;left:14%;top:56%}
#harmony-v3.hv-travelling .hv-invite{opacity:.45;pointer-events:auto;transform:scale(.96)}
#harmony-v3 .hv-dots{max-width:50vw;overflow:auto;scrollbar-width:thin}
/* Fixed viewport anchor: independent of all scene and camera transforms. */
.gallery-access{position:fixed;left:max(24px,env(safe-area-inset-left));bottom:calc(22px + env(safe-area-inset-bottom));width:82px;height:72px;min-height:72px;padding:12px;isolation:isolate;border-radius:50%;background:radial-gradient(ellipse,#070f1ccb,transparent 72%);transition:transform .25s}
.gallery-access::before{content:'';position:absolute;inset:3px;border:1px solid #ffffff26;border-radius:50%;transform:scale(.8);opacity:0;transition:transform .4s,opacity .4s}
.gallery-access:hover::before,.gallery-access:focus-visible::before{opacity:1;transform:scale(1)}
.gallery-access__flow{transform:rotateX(8deg) rotateY(-12deg);transition:transform .5s cubic-bezier(.16,1,.3,1)}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow{transform:rotateX(-9deg) rotateY(13deg) translateY(-2px)}
.gallery-access__flow>span{box-shadow:inset 0 0 0 .3px #fff4,0 5px 10px #0003;transition:transform .48s cubic-bezier(.2,.85,.25,1.2),opacity .25s}
.gallery-access__flow>span:nth-child(3){background:linear-gradient(145deg,#ffffff24,#070f1c);border-color:#fff}
.gallery-access__flow>span::after{height:9px;bottom:4px;background:linear-gradient(145deg,transparent 47%,#fffc 49%,#fffc 54%,transparent 56%),linear-gradient(30deg,transparent 41%,#fffa 44%,#fffa 48%,transparent 51%);opacity:.8}
.gallery-access__label{position:absolute;left:88px;padding:9px 12px;background:#070f1ce8;border-radius:2px;pointer-events:none}
.gallery-access:active{transform:scale(.93)}
@media(max-width:767px){#harmony-v3 .hv-copy,#harmony-v3 .hv-room[data-placement] .hv-copy{left:12%;right:12%;top:26%;max-width:275px}#harmony-v3 .hv-copy h3{font-size:clamp(44px,11.5vw,64px)}#harmony-v3 .hv-invite,#harmony-v3[data-placement] .hv-invite{left:auto;right:8%;top:auto;bottom:100px}.gallery-access{left:10px;bottom:12px;width:72px;height:64px;min-height:64px}#harmony-v3 .hv-nav{left:80px;right:12px;gap:5px}#harmony-v3 .hv-dots{max-width:calc(100vw - 190px)}}
@media(prefers-reduced-motion:reduce){#harmony-v3 .hv-copy,#harmony-v3 .hv-copy h3,#harmony-v3 .hv-copy p{transform:none!important}.gallery-access,.gallery-access::before,.gallery-access__flow,.gallery-access__flow>span{transition:none!important}.gallery-access:is(:hover,:focus-visible) .gallery-access__flow{transform:none}}
/* Keep scene controls fully inside shorter viewports, below the fixed header. */
.harmony-brochure #harmony-v3{height:clamp(560px,calc(100svh - 70px),920px)}
/* Pure white coverflow silhouette. Hover magnifies the central plane; no ornament or dark plate. */
.gallery-access{background:none!important;box-shadow:none!important;border:0;border-radius:0}
.gallery-access::before,.gallery-access__flow>span::after{display:none!important}
.gallery-access__flow{width:58px;height:38px;perspective:240px;transform:rotateX(0);transition:transform .5s cubic-bezier(.16,1,.3,1)}
.gallery-access__flow>span{top:5px;left:19px;width:22px;height:28px;border:1.2px solid #fff;border-radius:.5px;background:transparent!important;box-shadow:none!important;transition:transform .5s cubic-bezier(.2,.8,.2,1),opacity .4s}
.gallery-access__flow>span:nth-child(1){transform:translateX(-23px) translateZ(-24px) rotateY(52deg);opacity:.5}
.gallery-access__flow>span:nth-child(2){transform:translateX(-13px) translateZ(-12px) rotateY(42deg);opacity:.75}
.gallery-access__flow>span:nth-child(3){transform:translateZ(0);opacity:1;background:none}
.gallery-access__flow>span:nth-child(4){transform:translateX(13px) translateZ(-12px) rotateY(-42deg);opacity:.75}
.gallery-access__flow>span:nth-child(5){transform:translateX(23px) translateZ(-24px) rotateY(-52deg);opacity:.5}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow{transform:scale(1.16)}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(1){transform:translateX(-28px) translateZ(-24px) rotateY(58deg);opacity:.55}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(2){transform:translateX(-17px) translateZ(-10px) rotateY(48deg);opacity:.85}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(3){transform:translateZ(42px) scale(1.15);background:none}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(4){transform:translateX(17px) translateZ(-10px) rotateY(-48deg);opacity:.85}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(5){transform:translateX(28px) translateZ(-24px) rotateY(-58deg);opacity:.55}
.gallery-access__label{background:none!important;padding:0;left:92px;color:#fff;text-shadow:none;letter-spacing:.11em;font-size:10px}
.harmony-gallery-view{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#070f1c;overflow:hidden;color:#fff}
.harmony-gallery-view::backdrop{background:#070f1c}
.harmony-gallery-view iframe{display:block;width:100%;height:100%;border:0}
.harmony-gallery-close{position:absolute;z-index:1;right:22px;bottom:20px;padding:8px;background:none;border:0;color:#fff;font:11px Jost,sans-serif;letter-spacing:.06em;cursor:pointer}
@media(prefers-reduced-motion:reduce){.gallery-access:is(:hover,:focus-visible) .gallery-access__flow,.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span{transform:none;transition:none}}
/* The gallery belongs to this space, outside the moving camera planes. */
#harmony-v3 .gallery-access{position:absolute;z-index:7;left:max(24px,env(safe-area-inset-left));bottom:22px;overflow:visible}
#harmony-v3 .hv-image{inset:-2% -4%;transform:translateZ(-130px) scale(1.12)}
#harmony-v3 .hv-image img{filter:brightness(1.04) saturate(.92)}
.gallery-access__preview{position:absolute;bottom:64px;left:15px;width:116px;height:86px;pointer-events:none;opacity:0;transform:translate3d(-12px,28px,-60px) rotateY(-32deg) rotateZ(-4deg) scale(.28);transform-origin:22% 100%;transition:transform .62s cubic-bezier(.16,1,.3,1),opacity .3s;perspective:450px}
.gallery-access__preview img{display:block;width:100%;height:100%;object-fit:cover;border-radius:2px;box-shadow:none;filter:none}
.gallery-access__preview::before,.gallery-access__preview::after{content:'';position:absolute;inset:8px 0;border:1px solid #ffffff70;z-index:-1;transform:translateX(-11px) rotateY(38deg)}
.gallery-access__preview::after{transform:translateX(11px) rotateY(-38deg)}
.gallery-access:is(:hover,:focus-visible) .gallery-access__preview{opacity:1;transform:translate3d(4px,-2px,0) rotateY(-8deg) rotateZ(0) scale(1)}
#harmony-v3 .gallery-access__label{left:90px;white-space:nowrap}
@media(max-width:767px){#harmony-v3 .gallery-access{left:12px;bottom:12px}#harmony-v3 .hv-image{inset:-2% -12%}.gallery-access__preview{width:100px;height:75px}}
@media(prefers-reduced-motion:reduce){.gallery-access__preview{transition:none}.gallery-access:is(:hover,:focus-visible) .gallery-access__preview{transform:none}}
/* Five physical panels circulate through the front plane, like the full coverflow. */
#harmony-v3 .hv-image{transform:translateZ(-130px) scale(1.08)}
.gallery-access__preview{display:none!important}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow{transform:none}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span{animation:galleryMiniFlow 2.8s linear infinite}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(1){animation-delay:-1.68s}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(2){animation-delay:-2.24s}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(3){animation-delay:0s}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(4){animation-delay:-.56s}
.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span:nth-child(5){animation-delay:-1.12s}
@keyframes galleryMiniFlow{
  0%,100%{transform:translateX(0) translateZ(14px) rotateY(0) scale(1.05);opacity:1}
  20%{transform:translateX(13px) translateZ(-12px) rotateY(-42deg) scale(1);opacity:.8}
  40%{transform:translateX(24px) translateZ(-24px) rotateY(-55deg);opacity:.45}
  49%{transform:translateX(29px) translateZ(-30px) rotateY(-60deg);opacity:0}
  50%{transform:translateX(-29px) translateZ(-30px) rotateY(60deg);opacity:0}
  60%{transform:translateX(-24px) translateZ(-24px) rotateY(55deg);opacity:.45}
  80%{transform:translateX(-13px) translateZ(-12px) rotateY(42deg);opacity:.8}
}
@media(prefers-reduced-motion:reduce){.gallery-access:is(:hover,:focus-visible) .gallery-access__flow>span{animation:none}}
/* Light belongs to the title plane and travels with the existing camera choreography. */
#harmony-v3 .hv-copy h3{position:relative;color:#fff;text-shadow:none}
#harmony-v3 .hv-copy h3::before{content:'';position:absolute;inset:-18% -14%;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 45% 50%,#ffffff24,transparent 68%);filter:blur(13px);transform:translateZ(-2px)}
#harmony-v3 .hv-circle svg{display:block;width:25px;height:25px;transition:transform .4s cubic-bezier(.16,1,.3,1)}
#harmony-v3 .hv-invite:hover .hv-circle{transform:none}
#harmony-v3 .hv-invite:hover .hv-circle svg{transform:translate(2px,-2px)}
@media(prefers-reduced-motion:reduce){#harmony-v3 .hv-circle svg{transition:none}#harmony-v3 .hv-invite:hover .hv-circle svg{transform:none}}
/* Raised reading planes leave the lower gallery access clear. Reflection follows the title rotation. */
#harmony-v3 .hv-room[data-placement="left"] .hv-copy{top:19%}
#harmony-v3 .hv-room[data-placement="right"] .hv-copy{top:17%}
#harmony-v3 .hv-copy h3::before{background:radial-gradient(ellipse at var(--hv-reflect-x,50%) var(--hv-reflect-y,50%),#fff9 0%,#d8ebff33 18%,transparent 58%);opacity:var(--hv-reflect-strength,.2);filter:blur(10px);transform:translateZ(-2px) rotate(var(--hv-reflect-angle,0deg)) scale(1.15)}
#harmony-v3 .hv-atmosphere{z-index:0}
#harmony-v3 .hv-stage{z-index:2}
#harmony-v3 .hv-stars{position:absolute;inset:0;z-index:1;pointer-events:none;background-image:radial-gradient(1px 1px at 3% 12%,#fff9 80%,transparent),radial-gradient(1.5px 1.5px at 8% 72%,#fff8 70%,transparent),radial-gradient(1px 1px at 15% 5%,#fff8 80%,transparent),radial-gradient(1px 1px at 24% 93%,#fff7 80%,transparent),radial-gradient(1px 1px at 42% 3%,#fff8 80%,transparent),radial-gradient(1px 1px at 72% 96%,#fff7 80%,transparent),radial-gradient(1.5px 1.5px at 94% 16%,#fff8 70%,transparent),radial-gradient(1px 1px at 97% 58%,#fff9 80%,transparent),radial-gradient(1px 1px at 88% 89%,#fff8 80%,transparent),radial-gradient(1px 1px at 4% 45%,#fff7 80%,transparent);mask-image:radial-gradient(ellipse 53% 65% at 50% 48%,transparent 45%,#000 100%);-webkit-mask-image:radial-gradient(ellipse 53% 65% at 50% 48%,transparent 45%,#000 100%);animation:hvEdgeStars 6s ease-in-out infinite alternate}
@keyframes hvEdgeStars{from{opacity:.65}to{opacity:1}}
@media(max-width:767px){#harmony-v3 .hv-room[data-placement] .hv-copy{top:18%}}
@media(prefers-reduced-motion:reduce){#harmony-v3 .hv-stars{animation:none}}
/* Opaque faces overlap like real covers. On touch screens the miniature runs without hover. */
.gallery-access__flow>span{background:#070f1c!important}
@media(max-width:767px),(hover:none){
 .gallery-access .gallery-access__flow>span{animation:galleryMiniFlow 2.8s linear infinite}
 .gallery-access .gallery-access__flow>span:nth-child(1){animation-delay:-1.68s}
 .gallery-access .gallery-access__flow>span:nth-child(2){animation-delay:-2.24s}
 .gallery-access .gallery-access__flow>span:nth-child(3){animation-delay:0s}
 .gallery-access .gallery-access__flow>span:nth-child(4){animation-delay:-.56s}
 .gallery-access .gallery-access__flow>span:nth-child(5){animation-delay:-1.12s}
}
/* A narrow reflected band sweeps across the title plane as its perspective rotates. */
#harmony-v3 .hv-copy h3::before{inset:-20% -12%;background:linear-gradient(110deg,transparent 37%,#dbeaff55 46%,#ffffffc9 50%,#dbeaff55 54%,transparent 63%);background-size:260% 100%;background-position:var(--hv-reflect-x,50%) var(--hv-reflect-y,50%);mask-image:radial-gradient(ellipse,#000 20%,transparent 72%);filter:blur(11px);opacity:var(--hv-reflect-strength,.55)}
#harmony-v3 .hv-title-line{position:relative;display:inline-block}
#harmony-v3 .hv-title-line::after{content:attr(data-reflection);position:absolute;inset:0;pointer-events:none;color:transparent;-webkit-text-fill-color:transparent;background:linear-gradient(110deg,transparent 37%,#e1efff55 46%,#fff 50%,#e1efff55 54%,transparent 63%);background-size:260% 100%;background-position:var(--hv-reflect-x,50%) 50%;background-clip:text;-webkit-background-clip:text;filter:drop-shadow(0 0 5px #fff9);opacity:.9}
@media(prefers-reduced-motion:reduce){.gallery-access .gallery-access__flow>span{animation:none!important}}

@media(hover:none),(pointer:coarse){.gallery-access,.gallery-access:focus,.gallery-access:focus-visible{outline:none!important;box-shadow:none!important;-webkit-tap-highlight-color:transparent}}

.harmony-brochure #harmony-v3{height:clamp(610px,calc(100svh - 10px),980px)}
#harmony-v3 .hv-room[data-placement="left"] .hv-copy{top:15%}
#harmony-v3 .hv-room[data-placement="right"] .hv-copy{top:13%}
@media(max-width:767px){.harmony-brochure #harmony-v3{height:clamp(650px,100svh,980px)}#harmony-v3 .hv-room[data-placement] .hv-copy{top:14%}}

/* Reflections stay inside the letters; no rectangular backing plane in mobile 3D compositing. */
#harmony-v3 .hv-copy h3::before{display:none!important}
#harmony-v3 .hv-copy{background:none;border:0;box-shadow:none;outline:none}
#harmony-v3{clip-path:inset(0)}
#harmony-v3 .hv-room[hidden]{will-change:auto}
@media(max-width:767px){#harmony-v3 .hv-room[data-placement] .hv-copy{top:18%}}
/* The initial iframe paint never exposes an empty or white page. */
.harmony-gallery-view{background:#070f1c}
.harmony-gallery-view::before{content:'';position:absolute;left:50%;top:54%;width:clamp(145px,min(18vw,calc((100svh - 300px)*.56)),220px);aspect-ratio:4/5;transform:translate(-50%,-54%);border-radius:9px;background:#102033 url('/assets/img/realisations/web/R62-xs.jpg') center/cover;box-shadow:-12px 0 0 -4px #1a2b3e,12px 0 0 -4px #1a2b3e}
.harmony-gallery-view iframe{opacity:0;background:#070f1c;transition:opacity .18s ease}
.harmony-gallery-view.is-gallery-visible iframe{opacity:1}
.harmony-gallery-view.is-gallery-visible::before{opacity:0;transition:opacity .18s ease}

.harmony-gallery-view::before{pointer-events:none!important}
.harmony-gallery-view.is-gallery-visible::before{display:none!important}

/* One invitation anchor for every scene, including during the camera movement. */
#harmony-v3 .hv-invite,#harmony-v3[data-placement] .hv-invite,#harmony-v3[data-active] .hv-invite{left:auto;right:12%;top:56%;bottom:auto;width:150px;transform:none}
#harmony-v3 .hv-name{display:block;width:150px;min-height:2.6em;line-height:1.3;text-align:center}
@media(max-width:767px){#harmony-v3 .hv-invite,#harmony-v3[data-placement] .hv-invite,#harmony-v3[data-active] .hv-invite{left:auto;right:8%;top:auto;bottom:100px;width:120px}#harmony-v3 .hv-name{width:120px}}

/* A pearl-blue specular band gives the white lettering a visible moving reflection. */
#harmony-v3 .hv-title-line::after{background-image:linear-gradient(110deg,transparent 32%,#a9c9ef 44%,#fff 50%,#a9c9ef 56%,transparent 68%);background-size:220% 100%;background-position:var(--hv-reflect-x,50%) 50%;filter:drop-shadow(0 0 7px #d9ebff);opacity:var(--hv-reflect-strength,.8)}
#harmony-v3 .hv-title-line::before{content:attr(data-reflection);position:absolute;inset:0;pointer-events:none;color:transparent;-webkit-text-fill-color:transparent;background:linear-gradient(110deg,transparent 36%,#eff8ff 50%,transparent 64%);background-size:220% 100%;background-position:var(--hv-reflect-x,50%) 50%;background-clip:text;-webkit-background-clip:text;filter:blur(5px);opacity:.62}
#harmony-v3 .hv-room[hidden] .hv-image,#harmony-v3 .hv-room[hidden] .hv-copy{will-change:auto}
@media(max-width:767px){
 #harmony-v3 .hv-room[data-placement] .hv-copy{top:11%;left:12%;right:12%;max-width:275px}
 #harmony-v3 .hv-room[data-room] .hv-copy h3{font-size:clamp(42px,11vw,58px)}
 #harmony-v3 .hv-room[data-room] .hv-image{inset:2% -7%;transform:translateZ(-130px) scale(1.08)}
 #harmony-v3 .hv-room[data-placement] .hv-image::after{background:linear-gradient(180deg,#070f1cc4 0%,#070f1c8c 25%,transparent 62%),linear-gradient(90deg,#070f1c75,transparent 80%)}
}

/* Neutral light stays concentrated inside the lettering, on the moving title plane. */
#harmony-v3 .hv-title-line::before{background-image:linear-gradient(108deg,transparent 42%,#fffdf6 50%,transparent 58%);background-size:220% 100%;filter:blur(3px);opacity:.34}
#harmony-v3 .hv-title-line::after{background-image:linear-gradient(108deg,transparent 38%,#e8e4dc 47%,#fffefb 50%,#e8e4dc 53%,transparent 62%);filter:drop-shadow(0 0 3px #fffdf675);opacity:var(--hv-reflect-strength,.55)}

/* Lift the complete mobile navigation band together, including the scene invitation. */
@media(max-width:767px){#harmony-v3 .gallery-access{bottom:34px}#harmony-v3 .hv-nav{bottom:47px}#harmony-v3 .hv-invite,#harmony-v3[data-placement] .hv-invite,#harmony-v3[data-active] .hv-invite{bottom:122px}}

@media(max-width:767px){#harmony-v3 .hv-copy h3,#harmony-v3 .hv-title-line{backface-visibility:hidden;-webkit-backface-visibility:hidden;-webkit-font-smoothing:antialiased}#harmony-v3 .hv-title-line::before,#harmony-v3 .hv-title-line::after{backface-visibility:hidden;-webkit-backface-visibility:hidden}}

/* A small architectural object shares the camera's clock and comes to rest with the scene. */
#harmony-v3 .hv-cube{display:grid;place-items:center;width:44px;height:44px;perspective:180px;color:#e2c89cbf}
#harmony-v3 .hv-cube__solid{position:relative;display:block;width:27px;height:27px;transform-style:preserve-3d;transform:rotateX(-20deg) rotateY(34deg)}
#harmony-v3 .hv-cube__face{position:absolute;inset:0;border:1px solid currentColor;border-radius:1px;background:linear-gradient(135deg,#fff8ed16,#fff8ed03 65%,#fff8ed0b);backface-visibility:visible}
#harmony-v3 .hv-cube__face:nth-child(1){transform:translateZ(13.5px)}
#harmony-v3 .hv-cube__face:nth-child(2){transform:rotateY(180deg) translateZ(13.5px)}
#harmony-v3 .hv-cube__face:nth-child(3){transform:rotateY(90deg) translateZ(13.5px)}
#harmony-v3 .hv-cube__face:nth-child(4){transform:rotateY(-90deg) translateZ(13.5px)}
#harmony-v3 .hv-cube__face:nth-child(5){transform:rotateX(90deg) translateZ(13.5px)}
#harmony-v3 .hv-cube__face:nth-child(6){transform:rotateX(-90deg) translateZ(13.5px)}
#harmony-v3 .hv-invite{transition:none}
#harmony-v3.hv-travelling .hv-invite{opacity:1;transform:none;pointer-events:auto}
#harmony-v3 .hv-invite:hover .hv-cube{color:#fff3d2}
@media(min-width:768px){#harmony-v3 .hv-copy p{font-size:15px;line-height:1.85}}
/* The narrower, taller iPhone format gets a little more reading area; 414px keeps its existing scale. */
@media(min-width:380px) and (max-width:405px) and (min-height:780px){
 #harmony-v3 .hv-room[data-placement] .hv-copy{left:10%;right:10%;max-width:300px}
 #harmony-v3 .hv-room[data-room] .hv-copy h3{font-size:clamp(44px,11.5vw,60px)}
 #harmony-v3 .hv-copy p{font-size:13px;line-height:1.85}
}
/* A clipped copy of the letters carries a warm white ray. The original glyph plane never repaints. */
#harmony-v3 .hv-title-line::after{display:none}
#harmony-v3 .hv-title-line::before{color:#fffef8;-webkit-text-fill-color:#fffef8;background:none;filter:drop-shadow(0 0 3px #fff9) drop-shadow(0 0 7px #fff5);opacity:0;clip-path:polygon(-40% -30%,-10% -30%,-30% 130%,-60% 130%);transform:translateZ(.1px)}
#harmony-v3.hv-travelling .hv-room:not([hidden]) .hv-title-line::before{animation:hvTitleBeam 1.28s cubic-bezier(.25,.46,.45,.94) both}
#harmony-v3[data-direction="back"].hv-travelling .hv-title-line::before{animation-direction:reverse}
@keyframes hvTitleBeam{0%{opacity:0;clip-path:polygon(-40% -30%,-10% -30%,-30% 130%,-60% 130%)}24%,72%{opacity:.9}100%{opacity:0;clip-path:polygon(140% -30%,170% -30%,150% 130%,120% 130%)}}
@media(prefers-reduced-motion:reduce){#harmony-v3.hv-travelling .hv-title-line::before{animation:none}}

/* Smaller photographic planes keep their soft edge, at the same scale before and after travel. */
#harmony-v3 .hv-room[data-room] .hv-image{inset:-2% -5%;transform:translateZ(-130px) scale(1.08)}
#harmony-v3 .hv-invite,#harmony-v3[data-placement] .hv-invite,#harmony-v3[data-active] .hv-invite{top:auto;bottom:70px}
#harmony-v3 .hv-copy h3{text-shadow:0 0 6px #fff2,0 0 20px #fff2}
#harmony-v3 .hv-title-line::before,#harmony-v3 .hv-title-line::after{display:none!important}
#harmony-v3 .hv-title-halo{position:absolute;inset:0;pointer-events:none;color:#fffdf6;white-space:inherit;text-shadow:0 0 6px #fff,0 0 15px #fff9;filter:blur(2px);opacity:.3;mask-image:linear-gradient(108deg,transparent 28%,#000 45%,#000 55%,transparent 72%);-webkit-mask-image:linear-gradient(108deg,transparent 28%,#000 45%,#000 55%,transparent 72%);mask-size:230% 100%;-webkit-mask-size:230% 100%;mask-position:50% 50%;-webkit-mask-position:50% 50%;transform:translateZ(.1px)}
#harmony-v3.hv-travelling .hv-title-halo{animation:hvHaloRay 1.28s ease-in-out both}
#harmony-v3 .hv-title-halo{inset:-.2em -.25em;padding:.2em .25em;text-shadow:0 0 8px #fffd,0 0 22px #fff8;opacity:.42}
@keyframes hvHaloRay{0%{mask-position:110% 50%;-webkit-mask-position:110% 50%;opacity:.35}35%,65%{opacity:.95}100%{mask-position:-10% 50%;-webkit-mask-position:-10% 50%;opacity:.35}}
@media(max-width:767px){#harmony-v3 .hv-room[data-room] .hv-image{inset:6% 0}#harmony-v3 .hv-invite,#harmony-v3[data-placement] .hv-invite,#harmony-v3[data-active] .hv-invite{bottom:80px}}
@media(prefers-reduced-motion:reduce){#harmony-v3.hv-travelling .hv-title-halo{animation:none}}

/* A single photograph per room, cropped to one shared frame for every upload. */
#harmony-v3 .hv-ambient{display:none!important}
#harmony-v3 .hv-atmosphere{background:radial-gradient(ellipse at 55% 46%,#142037,#070f1c 75%)}
#harmony-v3 .hv-room[data-room] .hv-image{inset:7% 7%;transform:translateZ(-130px) scale(1.08)}
#harmony-v3 .hv-room[data-room] .hv-image{mask-image:radial-gradient(ellipse 60% 62% at 50% 50%,#000 24%,#000e 46%,#0006 68%,transparent 80%);-webkit-mask-image:radial-gradient(ellipse 60% 62% at 50% 50%,#000 24%,#000e 46%,#0006 68%,transparent 80%)}
#harmony-v3 .hv-image img{object-fit:cover;object-position:50% 50%}
#harmony-v3 .hv-copy h3{color:#eeeae1;text-shadow:none}
#harmony-v3 .hv-title-reflection,#harmony-v3 .hv-title-halo{position:absolute;inset:-.2em -.25em;padding:.2em .25em;pointer-events:none;color:#fffdf8;mask-image:linear-gradient(108deg,transparent 28%,#000 46%,#000 54%,transparent 72%);-webkit-mask-image:linear-gradient(108deg,transparent 28%,#000 46%,#000 54%,transparent 72%);mask-size:240% 100%;-webkit-mask-size:240% 100%;mask-position:var(--hv-reflect-x,50%) 50%;-webkit-mask-position:var(--hv-reflect-x,50%) 50%}
#harmony-v3 .hv-title-reflection{opacity:.95;filter:blur(.25px);text-shadow:0 0 5px #fff9,0 0 12px #fff6;transform:translateZ(.2px)}
#harmony-v3 .hv-title-halo,#harmony-v3.hv-travelling .hv-title-halo{animation:none!important;opacity:var(--hv-halo-strength,0);filter:blur(7px);text-shadow:0 0 10px #fff,0 0 24px #fffa;transform:translateZ(-1px) skewX(var(--hv-reflect-angle,0deg)) scale(1.035)}
/* One fixed pair of navigation objects, clear of every reading plane. */
#harmony-v3 .gallery-access{left:calc(6.5% - 13px);bottom:22px}
.gallery-access__flow{scale:1.12}
#harmony-v3 .gallery-access__label{left:50%;bottom:calc(100% - 4px);transform:translateX(-50%);padding:0;text-align:center}
#harmony-v3 .hv-invite,#harmony-v3[data-placement] .hv-invite,#harmony-v3[data-active] .hv-invite{left:calc(6.5% + 81px);right:auto;top:auto;bottom:22px;width:64px;min-width:64px;min-height:72px;height:72px;justify-content:center;gap:0;padding:8px;background:none!important;box-shadow:none;appearance:none;-webkit-appearance:none;-webkit-tap-highlight-color:transparent}
#harmony-v3 .hv-name{display:none}
#harmony-v3 .hv-invite:active{background:none!important;box-shadow:none}
@media(max-width:767px){
 #harmony-v3 .hv-room[data-room] .hv-image{inset:11% 7%}
 #harmony-v3 .gallery-access{left:10px;bottom:34px}
 #harmony-v3 .hv-invite,#harmony-v3[data-placement] .hv-invite,#harmony-v3[data-active] .hv-invite{left:10px;bottom:112px;width:72px;min-width:72px;height:60px;min-height:60px}
}
@media(hover:none),(pointer:coarse){#harmony-v3 .hv-invite:focus,#harmony-v3 .hv-invite:focus-visible{outline:none!important;box-shadow:none!important}}

/* Soft architectural edges, with a broad rectangular photographic field rather than an oval. */
#harmony-v3 .hv-room[data-room] .hv-image{
 mask-image:linear-gradient(90deg,transparent,#0006 6%,#000 18%,#000 82%,#0006 94%,transparent),linear-gradient(180deg,transparent,#0005 7%,#000 20%,#000 80%,#0005 93%,transparent);
 -webkit-mask-image:linear-gradient(90deg,transparent,#0006 6%,#000 18%,#000 82%,#0006 94%,transparent),linear-gradient(180deg,transparent,#0005 7%,#000 20%,#000 80%,#0005 93%,transparent);
 mask-composite:intersect;-webkit-mask-composite:source-in;
}
#harmony-v3 .hv-nav{display:none!important}
#harmony-v3 .hv-invite,#harmony-v3[data-placement] .hv-invite,#harmony-v3[data-active] .hv-invite{
 width:auto;min-width:64px;max-width:calc(87% - 100px);display:flex;flex-direction:row;justify-content:flex-start;gap:12px;pointer-events:auto;z-index:12;cursor:inherit;
}
#harmony-v3 .hv-cube{flex:0 0 44px;pointer-events:none}
#harmony-v3 .hv-name{display:block;width:auto;min-height:0;max-width:210px;text-align:left;font:400 12px/1.4 Jost,sans-serif;letter-spacing:.055em;color:#fff8edbd;pointer-events:none}
/* Fine translucent edge highlights soften the transformed one-pixel boundaries. */
#harmony-v3 .hv-cube__face{border-color:#e9d8b9c9;box-shadow:0 0 .45px .3px #e9d8b940,inset 0 0 .4px .2px #e9d8b930;transform-style:preserve-3d}
@media(max-width:767px){
 #harmony-v3 .hv-invite,#harmony-v3[data-placement] .hv-invite,#harmony-v3[data-active] .hv-invite{max-width:calc(100% - 30px);padding-left:14px;gap:15px}
 #harmony-v3 .hv-name{font-size:11px;max-width:230px}
}


/* An asymmetrical photographic wash reaches past the stage edges. One mask, no oval or box. */
#harmony-v3 .hv-room[data-room] .hv-image{
 inset:1% -6%;mask-image:url('/assets/img/spaces-edge.svg');-webkit-mask-image:url('/assets/img/spaces-edge.svg');
 mask-size:100% 100%;-webkit-mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-composite:add;-webkit-mask-composite:source-over;
}
@media(max-width:767px){#harmony-v3 .hv-room[data-room] .hv-image{inset:8% -8%}}
#harmony-v3 .hv-cube{position:relative}
#harmony-v3 .hv-cube.is-drawn .hv-cube__solid{visibility:hidden}
#harmony-v3 .hv-cube__drawing{position:absolute;width:64px;height:64px;left:-10px;top:-10px;max-width:none;pointer-events:none}


/* The edge wash belongs to a stationary aperture; only the texture travels behind it. */
.harmony-brochure{margin-top:-60px}
.harmony-brochure #harmony-v3{background:transparent}
#harmony-v3 .hv-atmosphere{mask-image:linear-gradient(180deg,transparent,#000 150px);-webkit-mask-image:linear-gradient(180deg,transparent,#000 150px)}
#harmony-v3 .hv-picture{position:absolute;inset:0;overflow:hidden;perspective:1100px;pointer-events:none;
 mask-image:url('/assets/img/spaces-edge.svg?v=19'),linear-gradient(180deg,transparent,#000 140px,#000 85%,transparent);
 -webkit-mask-image:url('/assets/img/spaces-edge.svg?v=19'),linear-gradient(180deg,transparent,#000 140px,#000 85%,transparent);
 mask-size:100% 100%;-webkit-mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-composite:intersect;-webkit-mask-composite:source-in;
}
#harmony-v3 .hv-room[data-room] .hv-image{inset:-14% -18%;mask:none;-webkit-mask:none;transform:translateZ(-130px) scale(1.08)}
#harmony-v3 .hv-copy{isolation:isolate;transform-style:flat;will-change:transform,opacity}
#harmony-v3 .hv-copy::before{content:'';position:absolute;inset:-60px -90px;z-index:-1;pointer-events:none;background:radial-gradient(ellipse,#070f1c91, #070f1c55 45%,transparent 73%);filter:blur(16px)}
#harmony-v3 .hv-copy h3,#harmony-v3 .hv-copy p{transform:none}
#harmony-v3 .hv-title-line{transform:none;backface-visibility:hidden;-webkit-font-smoothing:antialiased}
#harmony-v3 .hv-title-reflection,#harmony-v3 .hv-title-halo{transform:none!important}
@media(max-width:767px){
 .harmony-brochure{margin-top:-40px}
 #harmony-v3 .hv-picture{mask-image:url('/assets/img/spaces-edge.svg?v=19'),linear-gradient(180deg,transparent,#000 110px,#000 80%,transparent);-webkit-mask-image:url('/assets/img/spaces-edge.svg?v=19'),linear-gradient(180deg,transparent,#000 110px,#000 80%,transparent)}
 #harmony-v3 .hv-copy::before{inset:-40px -55px;background:radial-gradient(ellipse,#070f1ca3,#070f1c55 48%,transparent 76%)}
}


/* The welcome keeps its complete height; the hand-off uses transparency rather than overlap. */
.harmony-brochure{margin-top:0!important}
/* Both the travelling plane and its stationary aperture feather their edges. Strong perspective
   can reveal empty space, but never the hard boundary of the photograph. */
#harmony-v3 .hv-room[data-room] .hv-image{
 inset:-6% -10%;
 mask-image:url('/assets/img/spaces-edge.svg?v=20'),linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent),linear-gradient(180deg,transparent,#000 12%,#000 88%,transparent);
 -webkit-mask-image:url('/assets/img/spaces-edge.svg?v=20'),linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent),linear-gradient(180deg,transparent,#000 12%,#000 88%,transparent);
 mask-size:100% 100%;-webkit-mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-composite:intersect;-webkit-mask-composite:source-in;
}
@media(max-width:767px){
 #harmony-v3 .hv-room[data-room] .hv-image{inset:14% -14% 8%}
 #harmony-v3 .hv-image img{object-position:50% 50%}
}

/* Composite each scene in two dimensions, with independent 3D projection inside
   its photographic and reading surfaces. Their depth can no longer intersect. */
#harmony-v3 .hv-stage{perspective:none;overflow:visible;isolation:isolate}
#harmony-v3 .hv-room{transform-style:flat;isolation:isolate}
#harmony-v3 .hv-copy-plane{position:absolute;inset:0;z-index:2;perspective:1100px;perspective-origin:50% 48%;transform-style:flat;isolation:isolate;overflow:visible;pointer-events:none}
#harmony-v3 .hv-picture{
 z-index:0;transform-style:flat;isolation:isolate;overflow:visible;
 mask-image:url('/assets/img/spaces-edge.svg?v=20'),linear-gradient(180deg,transparent,#000 140px,#000 85%,transparent),linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);
 -webkit-mask-image:url('/assets/img/spaces-edge.svg?v=20'),linear-gradient(180deg,transparent,#000 140px,#000 85%,transparent),linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);
}
@media(max-width:767px){
 #harmony-v3 .hv-picture{
  mask-image:url('/assets/img/spaces-edge.svg?v=20'),linear-gradient(180deg,transparent,#000 110px,#000 80%,transparent),linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);
  -webkit-mask-image:url('/assets/img/spaces-edge.svg?v=20'),linear-gradient(180deg,transparent,#000 110px,#000 80%,transparent),linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);
 }
}
