/* 2.2.6 extras: WhatsApp button, virtual tour viewer, calculators, extra listing-card actions */

/* ---------- WhatsApp ---------- */
.hvWA{position:fixed;right:clamp(14px,2vw,22px);bottom:clamp(14px,2.4vh,22px);z-index:1500;display:inline-flex;align-items:center;gap:10px;min-height:50px;padding:0 20px 0 15px;border-radius:999px;background:#1a7f4b;color:#fff;text-decoration:none;font:600 11px/1 Inter,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;box-shadow:0 16px 30px -12px rgba(0,0,0,.5);animation:hvWAin .5s cubic-bezier(.22,.61,.36,1) .6s both;transition:background .3s,transform .35s cubic-bezier(.22,.61,.36,1),opacity .3s}
.hvWA svg{width:22px;height:22px;fill:#fff;flex:0 0 auto}
.hvWA:hover{background:#136c3b;transform:translateY(-2px)}
.hvWA:focus-visible{outline:2px solid #1a7f4b;outline-offset:3px;box-shadow:0 0 0 5px #fff}
.hvWA.away{opacity:0;pointer-events:none;transform:translateY(10px)}
@keyframes hvWAin{from{opacity:0;transform:translateY(16px)}}
html.has-wa .to-top,html.has-wa .moTop{bottom:84px!important}
@media(max-width:700px){.hvWA{padding:0;width:52px;height:52px;justify-content:center}.hvWA .t{display:none}html.has-wa .to-top,html.has-wa .moTop{bottom:80px!important}}

/* ---------- virtual tours ---------- */
.hvTour{position:fixed;inset:0;z-index:2200;display:flex;flex-direction:column;background:#0b0d0c;color:#fff;animation:hvTourIn .35s ease}
.hvTour[hidden]{display:none}
@keyframes hvTourIn{from{opacity:0}}
.hvTour-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 12px 10px clamp(16px,3vw,32px);background:#0b0d0c;border-bottom:1px solid rgba(255,255,255,.12)}
.hvTour-bar h2{margin:0;font:500 clamp(18px,2vw,24px)/1.1 "Antonio","Oswald",Impact,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hvTour-x{flex:0 0 auto;width:46px;height:46px;border:1px solid rgba(255,255,255,.4);background:none;color:#fff;font:300 28px/1 Inter,sans-serif;cursor:pointer}
.hvTour-x:hover{background:#C31B37;border-color:#C31B37}
.hvTour-x:focus-visible{outline:2px solid #fff;outline-offset:2px}
.hvTour-stage{position:relative;flex:1}
.hvTour-wait{position:absolute;inset:0;display:grid;place-items:center;margin:0;font:400 14px/1 Inter,sans-serif;letter-spacing:.1em;color:rgba(255,255,255,.75)}
.hvTour.ready .hvTour-wait{display:none}
.hvTour-frame{position:absolute;inset:0;width:100%;height:100%;border:0;background:#0b0d0c}
.ltour{display:inline-flex;align-items:center;min-height:32px;margin-top:10px;padding:0 12px;border:1px solid #171816;background:#171816;color:#fff;font:600 10.5px/1 Inter,sans-serif;letter-spacing:.14em;text-transform:uppercase;cursor:pointer}
.ltour:hover{background:#C31B37;border-color:#C31B37}
.ltour.hero-tour{margin-top:22px;min-height:46px;padding:0 20px;background:#fff;border-color:#fff;color:#171816}
.ltour:focus-visible{outline:2px solid #C31B37;outline-offset:2px}

/* ---------- extra actions on listing cards ---------- */
.lwa,.lcalc{display:inline-flex;align-items:center;min-height:32px;margin:10px 10px 0 0;padding:0 12px;border:1px solid #cdbfb4;background:#fff;color:#2d2926;font:600 10.5px/1 Inter,sans-serif;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:background .25s,color .25s,border-color .25s}
.lwa{color:#136c3b;border-color:#b9d8c6}
.lwa:hover{background:#136c3b;border-color:#136c3b;color:#fff}
.lcalc:hover{background:#171816;border-color:#171816;color:#fff}
.lwa:focus-visible,.lcalc:focus-visible,.saved-view:focus-visible{outline:2px solid #C31B37;outline-offset:2px}
.lbody .lenq{display:inline-block;margin-right:14px}
.saved-view{min-height:44px;padding:0 16px;border:1px solid rgba(255,255,255,.5);background:none;color:#fff;font:600 11px/1 Inter,sans-serif;letter-spacing:.16em;text-transform:uppercase;cursor:pointer}
.saved-view:hover{background:#fff;color:#171516}

/* ---------- calculators ---------- */
.hvCalc{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(20px,3vw,44px);align-items:start;margin:0;padding:clamp(40px,6vw,72px) clamp(20px,10.5%,160px);background:#f6f2ed;border-top:1px solid #e6dccf;border-bottom:1px solid #e6dccf;color:#2d2926;scroll-margin-top:150px}
.hvCalc .kicker{font:600 10.5px/1 Inter,sans-serif;letter-spacing:.24em;text-transform:uppercase;color:#C31B37}
.hvCalc h2{margin:12px 0 12px;font:500 clamp(30px,3.2vw,46px)/1 "Antonio","Oswald",Impact,sans-serif;letter-spacing:.04em;text-transform:uppercase;color:#7c0b19;-webkit-text-fill-color:#7c0b19;background:none}
.hvCalc-head p{margin:0;font:400 14px/1.7 Inter,sans-serif;color:#5d5752}
.hvCalc-in{display:grid;gap:22px}
.hvCalc-f label{display:flex;justify-content:space-between;gap:12px;margin-bottom:10px;font:600 10.5px/1.3 Inter,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:#4a4540}
.hvCalc-f output{font:600 13px/1.3 Inter,sans-serif;letter-spacing:0;text-transform:none;color:#7c0b19}
.hvCalc-f input[type=range]{width:100%;accent-color:#C31B37;height:28px}
.hvCalc-f input[type=text]{width:100%;box-sizing:border-box;padding:14px;border:1px solid #cdbfb4;background:#fff;font:500 16px/1 Inter,sans-serif;color:#2d2926}
.hvCalc-f input:focus-visible{outline:2px solid #C31B37;outline-offset:2px}
.hvCalc-out{padding:24px;background:#171816;color:#fff}
.hvCalc-out .lbl{display:block;font:600 10.5px/1.3 Inter,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.75)}
.hvCalc-out .big{display:block;margin:12px 0 16px;font:500 clamp(30px,3vw,42px)/1 "Antonio","Oswald",Impact,sans-serif;letter-spacing:.03em;color:#fff}
.hvCalc-out dl{margin:0 0 14px;display:grid;gap:8px}
.hvCalc-out dl div{display:flex;justify-content:space-between;gap:10px;font:400 13px/1.4 Inter,sans-serif;border-top:1px solid rgba(255,255,255,.14);padding-top:8px}
.hvCalc-out dt{color:rgba(255,255,255,.75)}.hvCalc-out dd{margin:0;font-weight:600}
.hvCalc-out .band{margin:0 0 12px;font:400 13px/1.5 Inter,sans-serif;color:rgba(255,255,255,.85)}
.hvCalc-out .fine{margin:0 0 16px;font:400 11.5px/1.55 Inter,sans-serif;color:rgba(255,255,255,.72)}
.hvCalc-go{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;background:#C31B37;color:#fff;text-decoration:none;font:600 11px/1 Inter,sans-serif;letter-spacing:.16em;text-transform:uppercase}
.hvCalc-go[hidden]{display:none}
.hvCalc-go:hover{background:#fff;color:#7c0b19}
.hvCalc-go:focus-visible{outline:2px solid #fff;outline-offset:3px}
@media(max-width:1000px){.hvCalc{grid-template-columns:1fr 1fr}.hvCalc-head{grid-column:1/-1}}
@media(max-width:640px){.hvCalc{grid-template-columns:1fr;padding:36px 6%}}
@media(prefers-reduced-motion:reduce){.hvWA,.hvTour{animation:none}.hvWA,.lwa,.lcalc{transition:none}}

/* ---- 2.2.7 verification badges (assets/verify.js, _source/verification.py) ---- */
.vbadge{display:inline-flex;align-items:center;gap:6px;font:600 10px/1.2 Inter,Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#2b2523;white-space:nowrap}
.vbadge svg{width:14px;height:14px;flex:0 0 14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.vbadge.vb-property{color:#1d6b45}
.vbadge.vb-agent{color:#8a1426}
.vbadge.vb-owner{color:#5a4a2c}
.vbadge.vb-card{display:flex;margin:9px 0 2px}
.exclusiveBody .vbadge.vb-card{margin:0 0 7px}
.card .vbadge.vb-card{margin:14px 0 -6px}
.vlisting{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:18px 0 0;padding:12px 14px;border:1px solid #e3dcd0;background:#faf8f4;font:400 13px/1.5 Inter,Arial,sans-serif;color:#4a423d}
.vlisting em{font-style:normal;color:#6a625b}
.vlegend{margin:14px 0 0;font:400 13px/1.5 Inter,Arial,sans-serif;color:#4a423d}
.vlegend summary{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font:600 11px/1 Inter,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#8a1426;padding:8px 0;list-style:none}
.vlegend summary::-webkit-details-marker{display:none}
.vlegend summary::after{content:'+';font-size:14px;letter-spacing:0}
.vlegend[open] summary::after{content:'–'}
.vlegend summary:focus-visible{outline:2px solid #C31B37;outline-offset:3px}
.vlegend ul{list-style:none;margin:6px 0 8px;padding:0;display:grid;gap:8px}
.vlegend li{display:grid;grid-template-columns:minmax(170px,auto) 1fr;gap:4px 14px;align-items:center}
.vlegend p{margin:0;font-size:12px;color:#6a625b}
@media(max-width:560px){.vlegend li{grid-template-columns:1fr}}

/* ---- 2.2.7 "Add to home screen" offer (assets/pwa.js) ---- */
.hvInstall{position:fixed;left:clamp(12px,2vw,24px);bottom:clamp(14px,2.4vh,24px);z-index:9000;display:flex;align-items:center;gap:12px;max-width:min(440px,calc(100vw - 24px));padding:12px 12px 12px 14px;background:#171816;color:#f4efe6;box-shadow:0 12px 34px rgba(0,0,0,.3);font:400 13px/1.45 Inter,Arial,sans-serif;opacity:0;transform:translateY(16px);transition:opacity .3s,transform .3s}
.hvInstall.on{opacity:1;transform:none}
.hvInstall img{flex:0 0 40px;border-radius:9px}
.hvInstall-t{display:flex;flex-direction:column;gap:2px;min-width:0}
.hvInstall-t b{font-weight:600;color:#fff}
.hvInstall-t span{color:#cfc7bb;font-size:12px}
.hvInstall button{flex:0 0 auto;min-height:40px;padding:0 14px;border:1px solid #f4efe6;background:none;color:#f4efe6;font:600 10px/1 Inter,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;cursor:pointer}
.hvInstall .hvInstall-go{background:#C31B37;border-color:#C31B37;color:#fff}
.hvInstall .hvInstall-x{border-color:transparent;padding:0 8px;color:#cfc7bb}
.hvInstall button:focus-visible{outline:2px solid #fff;outline-offset:2px}
@media(max-width:640px){.hvInstall{right:12px;bottom:calc(clamp(14px,2.4vh,24px) + 66px);flex-wrap:wrap}.hvInstall-t{flex:1 1 calc(100% - 56px)}.hvInstall .hvInstall-go{margin-left:52px}}
@media(prefers-reduced-motion:reduce){.hvInstall{transition:none}}

/* ---- 2.2.8 share menu and "Link copied" notice (assets/share.js) ---- */
.hvShareBtn{display:inline-flex;align-items:center;gap:7px;cursor:pointer}
.hvShareBtn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8}
.hvShare{position:absolute;z-index:9600;min-width:220px;max-width:calc(100vw - 16px);padding:6px;background:#fff;border:1px solid #e3dcd0;box-shadow:0 14px 40px rgba(20,14,10,.22);display:flex;flex-direction:column}
.hvShare a,.hvShare button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:11px 12px;border:0;background:none;text-align:left;font:500 14px/1.3 Inter,Arial,sans-serif;color:#2b2523;text-decoration:none;cursor:pointer}
.hvShare a:hover,.hvShare button:hover,.hvShare a:focus-visible,.hvShare button:focus-visible{background:#f6f1ea;outline:none;box-shadow:inset 3px 0 0 #C31B37}
.hvShare button span{font-size:11px;color:#6a625b;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hvToast{position:fixed;left:50%;bottom:28px;z-index:9700;transform:translate(-50%,20px);opacity:0;pointer-events:none;padding:12px 18px;background:#171816;color:#fff;font:500 13px/1.4 Inter,Arial,sans-serif;box-shadow:0 10px 30px rgba(0,0,0,.3);transition:opacity .25s,transform .25s;max-width:calc(100vw - 32px)}
.hvToast.on{opacity:1;transform:translate(-50%,0)}
.lshare{display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:0;border:0;background:none;color:#5f574f;font:600 10px/1.2 Inter,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;cursor:pointer}
.lshare:hover{color:#7d111b}
.lshare:focus-visible{outline:2px solid #C31B37;outline-offset:3px}
.lagent{margin:6px 0 2px;font-size:12px;color:#5f574f}
.lagent a{color:#7d111b;text-decoration:none;border-bottom:1px solid rgba(125,17,27,.3)}
.lagent a:hover{border-bottom-color:currentColor}

/* ---- 2.2.8 skeleton placeholders while content loads ---- */
.sk,.sk-card .sk-ph,.sk-card .sk-l{background:linear-gradient(90deg,#ece6dd 0,#f6f2ec 40%,#ece6dd 80%);background-size:300% 100%;animation:hvSk 1.3s ease-in-out infinite}
.sk-line{height:12px;margin:0 0 12px;width:100%}
.sk-h{height:64px;width:80%;margin:6px 0 18px}
.sk-card{background:#fff;min-height:100%}
.sk-card .sk-ph{aspect-ratio:1.4;width:100%}
.sk-card .sk-b{padding:18px}
.sk-card .sk-l{height:12px;margin:0 0 12px}
.sk-card .sk-l.big{height:26px;width:55%}
.sk-card .sk-l.s{width:70%}
@keyframes hvSk{0%{background-position:100% 0}100%{background-position:0 0}}
@media(prefers-reduced-motion:reduce){.sk,.sk-card .sk-ph,.sk-card .sk-l{animation:none}.hvToast{transition:none}}
.rs-photo,.lthumb,.exclusiveImage,.ag-ph{background-color:#ece6dd}

/* ---- 2.2.8 listing page: reference, share, print, listing agent (assets/listing-page.js) ---- */
.lp-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;margin:18px 0 0}
.lp-ref{font:600 11px/1 Inter,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#6a625b;margin-right:6px}
.lp-btn{display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:0 14px;border:1px solid #cdbfb0;background:#fff;color:#2b2523;font:600 10.5px/1 Inter,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;cursor:pointer}
.lp-btn:hover{border-color:#7d111b;color:#7d111b}
.lp-btn:focus-visible{outline:2px solid #C31B37;outline-offset:2px}
.lp-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}
.lp-agent{display:flex;align-items:center;gap:14px;margin-top:22px}
.lp-av{position:relative;flex:0 0 56px;width:56px;height:56px;border-radius:50%;overflow:hidden;background:linear-gradient(140deg,#5a0b14,#c31b37);display:flex;align-items:center;justify-content:center}
.lp-av b{font:500 20px/1 'Cormorant Garamond',serif;color:#fff}
.lp-av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lp-who{display:flex;flex-direction:column;gap:3px}
.lp-who small{font:600 9.5px/1 Inter,Arial,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:#b8b2aa}
.contact .lp-who a{font:500 22px/1.1 'Cormorant Garamond',serif;letter-spacing:0;text-transform:none;border:0;padding:0;color:#fff}
.contact .lp-who a:hover{text-decoration:underline}
.lp-who span{font-size:12px;color:#b8b2aa}
.lp-print{display:none}

/* ---- 2.2.8 printing: any page prints without menus, floating buttons or pop-ups; the listing page prints as a datasheet ---- */
@media print{
  @page{margin:14mm}
  .hvCalc,.sn,.snSvc,.snBack,.skip-link,#hvDock,.hvWA,.hvSavedBtn,.hvInstall,.hvToast,.hvShare,.to-top,#get-in-touch,.bh,footer,.lp-tools,.rs-saved,.saved-bar,.lwa,.lcalc,.lshare,.save,.rs-save{display:none!important}
  html,body{background:#fff!important;color:#000!important}
  *{animation:none!important;transition:none!important;box-shadow:none!important}
  .reveal,[class*="reveal"]{opacity:1!important;transform:none!important}
  a{color:inherit!important}
  html[data-page="listing"] .hero{display:grid;grid-template-columns:1.1fr .9fr;gap:6mm;padding:0 0 6mm;align-items:start}
  html[data-page="listing"] .hero img{height:72mm!important}
  html[data-page="listing"] .copy h1{font-size:34pt;line-height:.95;margin:0 0 4mm;color:#4a0005!important;-webkit-text-fill-color:#4a0005!important;background:none!important}
  html[data-page="listing"] .price{font-size:20pt;margin:4mm 0}
  html[data-page="listing"] .facts{font-size:9pt;gap:4mm}
  html[data-page="listing"] .vlisting{margin-top:4mm;font-size:9pt;border-color:#999}
  html[data-page="listing"] .intro{display:block;padding:0 0 5mm}
  html[data-page="listing"] .intro h2,html[data-page="listing"] .gallery h2{font-size:16pt;margin:0 0 2mm;color:#000!important;-webkit-text-fill-color:#000!important;background:none!important}
  html[data-page="listing"] .intro p{font-size:10pt;line-height:1.5;color:#222}
  html[data-page="listing"] .gallery{background:none;padding:0 0 4mm;break-inside:avoid}
  html[data-page="listing"] .galleryHead span,html[data-page="listing"] .gallery .ey{display:none}
  html[data-page="listing"] .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3mm}
  html[data-page="listing"] .g,html[data-page="listing"] .g:nth-child(n){grid-column:auto!important;height:32mm!important;background:#eee}
  html[data-page="listing"] .g:nth-child(n+4){display:none}
  html[data-page="listing"] .contact{background:none!important;color:#000!important;padding:4mm 0;border-top:1px solid #999;display:block;break-inside:avoid}
  html[data-page="listing"] .contact h2{font-size:14pt;color:#000!important}
  html[data-page="listing"] .contact p,html[data-page="listing"] .lp-who span,html[data-page="listing"] .lp-who small{color:#333!important}
  html[data-page="listing"] .contact>a,html[data-page="listing"] .contact a[href^="contact-us"]{display:none}
  html[data-page="listing"] .contact .lp-who a{color:#000!important}
  html[data-page="listing"] .note{background:none;font-size:7.5pt;padding:2mm 0}
  html[data-page="listing"] .lp-print{break-inside:avoid;display:flex;justify-content:space-between;gap:8mm;padding:4mm 0 0;border-top:1px solid #999;font:9pt/1.5 Inter,Arial,sans-serif}
  html[data-page="listing"] .lp-print div:last-child{text-align:right}
}

/* ---- 2.2.8 listing grids: empty-state help, card share, link targets ---- */
.lcard{scroll-margin-top:150px}
.lcard:target{outline:2px solid #C31B37;outline-offset:4px}
.lempty-acts{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.lreset{min-height:44px;padding:0 18px;border:1px solid #8a1426;background:#8a1426;color:#fff;font:600 11px/1 Inter,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;cursor:pointer}
.lidea{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border:1px solid #cdbfb4;background:#fff;color:#2d2926;font:500 14px/1.2 Inter,Arial,sans-serif;cursor:pointer;text-decoration:none}
.lidea em{font-style:normal;font-size:12px;color:#6a625b}
.lidea:hover{border-color:#8a1426;color:#8a1426}
.lidea.ask{border-color:transparent;color:#8a1426;padding-left:4px}
.lreset:focus-visible,.lidea:focus-visible{outline:2px solid #C31B37;outline-offset:2px}
.lempty p{margin:0}
.lthumb:not(.ld),.exclusiveImage:not(.ld),.ag-ph:not(.ld){background-image:linear-gradient(90deg,#e5ddd3 0,#f3eee7 40%,#e5ddd3 80%);background-size:300% 100%;animation:hvSk 1.3s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.lthumb:not(.ld),.exclusiveImage:not(.ld),.ag-ph:not(.ld){animation:none}}
.ex-sk{flex:0 0 min(24vw,330px)}
@media(max-width:900px){.ex-sk{flex-basis:44vw}}
@media(max-width:600px){.ex-sk{flex-basis:64vw}}
