.estate{position:fixed;inset:0;z-index:100;background:#080d15;color:#f8efd9;font-family:Manrope,Arial,sans-serif;overflow:hidden}.estate[hidden]{display:none}.estate canvas{display:block;width:100%;height:100%;position:absolute;inset:0}.estate-fallback{position:absolute;inset:0;background:#080909}.estate.ready .estate-fallback{opacity:0;transition:opacity 1.5s}.estate:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(#03070dc9,transparent 24%,transparent 65%,#03070ddd)}.estate-header{position:absolute;top:24px;left:4%;right:4%;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:16px}.estate-brand img{width:180px;height:auto;display:block}.estate-header>a:last-child,.estate-controls button,.estate-controls a{color:#e9d296;border:1px solid #d4b46d66;background:#0a101bbb;backdrop-filter:blur(12px);border-radius:40px;padding:11px 18px;text-decoration:none;font:500 12px Manrope,Arial;cursor:pointer}.estate-header>a:last-child:hover,.estate-controls button:hover,.estate-controls a:hover{background:#4d3e22}.estate-caption{position:absolute;bottom:90px;left:5%;right:5%;z-index:3;text-align:center;pointer-events:none}.estate-caption .eyebrow{color:#dbbd79;font-size:10px;letter-spacing:4px}.estate-caption h2{font:400 clamp(25px,3vw,44px)/1.2 Georgia,serif;margin:12px 0}.estate-caption p:last-child{font-size:12px;color:#c8c6be;line-height:1.6;margin:0}.estate-controls{position:absolute;bottom:25px;left:4%;right:4%;z-index:5;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.estate-labels{position:absolute;inset:0;z-index:6;pointer-events:none}.villa-link{position:absolute;left:0;top:0;pointer-events:auto;display:flex;flex-direction:column;align-items:center;white-space:nowrap;text-decoration:none;color:#f6e4b5;opacity:0;visibility:hidden;will-change:transform;transition:opacity .6s}.estate.exploring .villa-link{visibility:visible;opacity:1}.villa-link>span{border:1px solid #e6c67b9c;background:linear-gradient(120deg,#101722ed,#1d2022e8);box-shadow:0 8px 25px #0006;border-radius:3px;padding:12px 17px;font-size:13px;letter-spacing:.5px}.villa-link small{font-size:9px;letter-spacing:2px;color:#ad9d78;display:block;margin-bottom:5px}.villa-link:after{content:'';display:block;height:24px;width:1px;background:linear-gradient(#e6c67b,transparent)}.villa-link:hover>span,.villa-link:focus-visible>span{background:#c7a660;color:#10141d;transform:translateY(-4px)}.villa-link:hover small{color:#302616}.estate-progress{position:absolute;bottom:0;height:2px;left:0;background:#e8cb83;width:0;z-index:9}.estate-fade{position:absolute;inset:0;background:#080909;opacity:0;z-index:8;pointer-events:none;transition:opacity .65s}.estate.departing .estate-fade{opacity:1}.estate-error{position:absolute;inset:35% 8% auto;z-index:8;text-align:center;background:#060b12de;padding:30px;border:1px solid #c8a764}.estate-error a{color:#e9d296}.estate a:focus-visible,.estate button:focus-visible{outline:2px solid #fff0ba;outline-offset:5px}.estate-quick{display:none}.estate.exploring .estate-caption{bottom:100px}.estate-exit{position:absolute;right:18px;top:18px}.estate-fallback-nav{display:flex;gap:15px;justify-content:center;flex-wrap:wrap;margin-top:20px}.estate-loading{position:absolute;top:48%;left:0;right:0;text-align:center;z-index:3;font:12px Manrope;letter-spacing:2px;color:#f3d48e}.estate.ready .estate-loading{display:none}@media(max-width:650px){.estate-header{top:15px}.estate-brand img{width:130px}.estate-header>a:last-child{font-size:10px;padding:10px 13px}.estate-caption{bottom:105px}.estate-caption .eyebrow{font-size:8px;letter-spacing:2px}.estate-caption h2{font-size:26px}.estate-controls{bottom:18px;gap:6px}.estate-controls button,.estate-controls a{padding:10px 12px;font-size:10px}.villa-link>span{font-size:10px;padding:9px 10px}.villa-link small{font-size:7px;letter-spacing:1px}.villa-link:after{height:15px}.estate.exploring .estate-caption{bottom:95px}.estate-caption p:last-child{font-size:11px}}@media(prefers-reduced-motion:reduce){.estate *{transition:none!important}}

.estate canvas{touch-action:none;cursor:grab}.estate-caption,.estate.exploring .estate-caption{bottom:34px}.estate.exploring .estate-caption h2{font-size:24px}.estate-progress{display:none}.estate-caption .eyebrow{font-size:9px}.estate.exploring .estate-caption{pointer-events:none}.estate:after{background:linear-gradient(#03070d99,transparent 20%,transparent 78%,#03070daa)}@media(max-width:650px){.estate-caption,.estate.exploring .estate-caption{bottom:24px}.estate.exploring .estate-caption h2{font-size:22px}.villa-link>span{max-width:145px;white-space:normal;text-align:center}.estate-header>a:last-child{max-width:150px;text-align:center}}

.estate-error[hidden]{display:none}.estate-error:not([hidden])~.estate-caption{display:none}.villa-link{min-height:44px}.estate-header{z-index:7}.estate-error{max-height:70vh;overflow:auto}.estate-brand img{border-radius:2px}@media(max-width:650px){.estate-error{inset:25% 6% auto;padding:22px}.villa-link>span{font-size:11px}}

/* Quiet navigation around the architecture. */
.villa-link>span{font-family:Georgia,serif;font-size:16px;font-weight:400;letter-spacing:.2px;padding:12px 18px;background:linear-gradient(145deg,#11171ee8,#0b1019e0);border:1px solid #b9995866;box-shadow:0 12px 28px #0003;backdrop-filter:blur(7px)}.villa-link small{font-family:Manrope,Arial,sans-serif;font-size:10px;letter-spacing:1.5px}.estate-brand img{width:155px}.estate-caption h2{letter-spacing:-.4px}.estate-header>a:last-child{font-size:12px}.estate-fallback{transition:opacity .4s!important}@media(max-width:650px){.villa-link>span{font-size:14px;padding:10px 12px}.villa-link small{display:none}.villa-link:after{height:16px}.estate-brand img{width:125px}.estate-header>a:last-child{font-size:11px}.estate-caption p:last-child{font-size:12px}}
.estate-fallback,.estate-loading{pointer-events:none}

/* Show only the first correctly positioned animation frame. */
.estate{background:#080909}.estate:not(.ready) canvas,.estate:not(.ready) .estate-caption,.estate-loading{visibility:hidden}.estate-fallback,.estate-header{display:none!important}
