/* Bertacco Property Valuations: the locked mock's styles (Revision 39), less its mock-only rules. */

/* Hanken Grotesk, self-hosted under the SIL Open Font License (fonts/OFL.txt): the same latin file the mock loaded
   from Google Fonts, so the page makes no third-party request for it. Other scripts fall back as they did. */
@font-face{font-family:'Hanken Grotesk';font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/HankenGrotesk-latin.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
/* Parts the mock added and removed (menu, errors, states) are in the page from the start and hidden until needed;
   the hidden attribute wins over their inline display. */
[hidden]{display:none !important}
body{margin:0;background:#FFFFFF}
/* Arriving at a #section address (old-site redirects, the privacy page's links) lands where the in-page jumps do:
   under the condensed header, 72px, once the script runs; under the full 88px header without it (Codex review, round 1). */
section[id],main[id]{scroll-margin-top:88px}
html.bpv-js section[id],html.bpv-js main[id]{scroll-margin-top:72px}
a{color:#2E5E4E}a:hover{color:#1F4236}
input,select,textarea,button{font-family:inherit}
@media (max-width: 1120px){.bpv-navlinks{display:none !important}.bpv-navphone{display:none !important}}

/* Interaction pass, Damo 16-Oct-2026: 150 to 200 ms ease-out, nothing moves under reduced motion. */
.bpv-skip{position:absolute;left:16px;top:-64px;z-index:50;padding:10px 16px;background:#15181B;color:#FFFFFF !important;border-radius:4px;font-weight:600;font-size:15px;text-decoration:none;transition:top 180ms ease-out}
.bpv-skip:focus{top:12px}
#content:focus{outline:none}
a:focus-visible,button:focus-visible{outline:3px solid #1F4236;outline-offset:2px}
.bpv-dark a:focus-visible,.bpv-dark button:focus-visible{outline-color:#FFFFFF}
/* Form fields (Damo, 17-Oct-2026): grey at rest, mid grey on hover, green border and soft ring when focused; error border wins over both. */
.bpv-formgrid input,.bpv-formgrid select,.bpv-formgrid textarea{transition:border-color 150ms ease-out,box-shadow 150ms ease-out}
.bpv-formgrid input:hover,.bpv-formgrid select:hover,.bpv-formgrid textarea:hover{border-color:#9AA09B !important}
.bpv-formgrid input:focus,.bpv-formgrid select:focus,.bpv-formgrid textarea:focus{outline:none;border-color:#2E5E4E !important;box-shadow:0 0 0 3px rgba(46,94,78,0.15)}

.bpv-header{transition:box-shadow 180ms ease-out}
.bpv-header nav{transition:padding 180ms ease-out}
.bpv-header.is-condensed{box-shadow:0 2px 12px rgba(21,24,27,0.07)}
.bpv-header.is-condensed nav{padding-top:6px !important;padding-bottom:6px !important}
.bpv-nav{position:relative;color:#1F2328 !important;text-decoration:none !important;transition:color 180ms ease-out}
.bpv-nav:hover{color:var(--g) !important}
.bpv-nav::after{content:"";position:absolute;left:0;bottom:-6px;width:0;height:2px;background:var(--m);transition:width 180ms ease-out}
.bpv-nav.is-active::after{width:20px}

.bpv-btn{cursor:pointer;transition:filter 180ms ease-out,transform 180ms ease-out,background-color 180ms ease-out,color 180ms ease-out,border-color 180ms ease-out}
.bpv-btn:hover{transform:translateY(-1px)}
.bpv-btn:active{transform:translateY(1px)}
.bpv-btn-primary:hover{filter:brightness(0.86)}
/* Secondary buttons keep the white fill on hover: green border and text over a faint green tint (Damo, 17-Oct-2026). */
.bpv-btn-secondary:hover{background:#F1F5F3 !important;color:#2E5E4E !important;border-color:#2E5E4E !important}
.bpv-btn[disabled]{cursor:progress;transform:none;filter:none}

.bpv-link{text-decoration:none !important}
.bpv-link:hover{text-decoration:underline !important}
.bpv-src:hover{text-decoration:underline !important}

.bpv-card{transition:transform 180ms ease-out,border-color 180ms ease-out}
.bpv-card:hover{transform:translateY(-2px);border-color:var(--g) !important}
.bpv-team{transition:transform 180ms ease-out}
.bpv-team:hover{transform:translateY(-2px)}
.bpv-rule{transition:border-color 180ms ease-out}
.bpv-team:hover .bpv-rule{border-top-color:var(--g) !important}
.bpv-sub{transition:background-color 180ms ease-out}
.bpv-sub:hover{background:rgba(255,255,255,0.08)}
.bpv-client{opacity:0.72;transition:opacity 180ms ease-out}
.bpv-client:hover{opacity:1}
.bpv-client img{filter:grayscale(1);transition:filter 180ms ease-out}
.bpv-client:hover img{filter:none}

.bpv-tile-note{opacity:0;transform:translateY(-2px);transition:opacity 180ms ease-out,transform 180ms ease-out}
.bpv-tile:hover .bpv-tile-note,.bpv-tile:focus .bpv-tile-note{opacity:1;transform:none}
.bpv-tile:focus{outline:none}
.bpv-tile:focus-visible{outline:3px solid #1F4236;outline-offset:4px;border-radius:4px}
.bpv-snapgrid{grid-template-columns:repeat(5,minmax(0,1fr))}
.bpv-tile{padding:8px 20px;border-right:1px solid #E6E7E4}
.bpv-tile:first-child{padding-left:0}
.bpv-tile:last-child{border-right:0}
@media (max-width: 900px){.bpv-snapgrid{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:16px}.bpv-tile{border-right:0;padding-left:0}}
.bpv-snap-ph{display:none}
/* Snapshot on phones (Damo, 17-Oct-2026): two-line heading, date on its own line, tiles 2 across with the fifth on its own row. Desktop unchanged. */
@media (max-width: 760px){
.bpv-snap-dt{display:none}
.bpv-snap-ph{display:flex;flex-direction:column;gap:2px}
#snap-h{font-size:18px !important;line-height:1.3;letter-spacing:0 !important;text-transform:none !important;color:rgba(255,255,255,0.7) !important}
.bpv-snap-sub{font-size:14px;font-weight:400;color:rgba(255,255,255,0.7)}
.bpv-snaphead{flex-direction:column;align-items:flex-start !important;gap:6px !important}
.bpv-snap-upd{font-size:13px !important}
.bpv-snapwrap{padding:28px 20px 24px !important;gap:16px !important}
.bpv-snapgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px !important}
.bpv-tile,.bpv-tile:first-child{padding:4px 0;border-right:0}
.bpv-tile:last-child{grid-column:1 / -1}
.bpv-tile > span:nth-child(2){font-size:32px !important}
.bpv-tile-note{opacity:1 !important;transform:none !important}
}
.bpv-formgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
.bpv-teamgrid{display:flex;flex-wrap:wrap;justify-content:center;gap:48px 32px}
.bpv-teamgrid > *{flex:0 0 calc((100% - 64px) / 3);min-width:0}
@media (max-width: 640px){.bpv-formgrid{grid-template-columns:minmax(0,1fr)}}

.bpv-purpose{transition:background-color 180ms ease-out,color 180ms ease-out}
.bpv-purpose:hover{background:#FFFFFF;color:var(--g) !important}
.bpv-enq{flex:none;font-size:14px;font-weight:600;color:#2E5E4E;white-space:nowrap;opacity:0;transform:translateX(-4px);transition:opacity 180ms ease-out,transform 180ms ease-out}
.bpv-purpose:hover .bpv-enq,.bpv-purpose:focus-visible .bpv-enq{opacity:1;transform:none}
/* Arrow always shown so rows read as actions on touch screens too; "Enquire" still appears on hover (Damo, 17-Oct-2026). */
.bpv-pend{flex:none;display:inline-flex;align-items:center;gap:6px}
.bpv-parr{font-size:16px;font-weight:600;color:#A3A9AD;transition:color 180ms ease-out}
.bpv-purpose:hover .bpv-parr,.bpv-purpose:focus-visible .bpv-parr{color:#2E5E4E}

.bpv-reveal{transition:opacity 200ms ease-out,transform 200ms ease-out}
.bpv-pre{opacity:0;transform:translateY(12px)}

.bpv-hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
/* How it works (Damo, 18-Oct-2026): steps 40%, FAQ 60%; steps stick while the FAQ scrolls; one column on narrow screens. */
.bpv-how{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr);gap:48px 72px;align-items:start}
.bpv-how-steps{position:sticky;top:96px;display:flex;flex-direction:column;gap:32px}
@media (max-width: 860px){.bpv-how{grid-template-columns:minmax(0,1fr)}.bpv-how-steps{position:static}}
.bpv-tl{list-style:none;margin:0;padding:0}
.bpv-tl li{position:relative;display:grid;grid-template-columns:32px minmax(0,1fr);column-gap:16px;padding-bottom:28px}
.bpv-tl li:last-child{padding-bottom:0}
.bpv-tl li:not(:last-child)::before{content:"";position:absolute;left:15.5px;top:36px;bottom:4px;width:1px;background:#C9CCC8}
.bpv-tl-num{width:32px;height:32px;border-radius:50%;background:#2E5E4E;color:#FFFFFF;font-size:14px;font-weight:600;display:flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums}
.bpv-acc-btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:56px;padding:14px 0;background:none;border:0;text-align:left;cursor:pointer;font:inherit;font-size:17px;font-weight:600;color:#15181B}
.bpv-acc-btn:hover{color:#2E5E4E}
.bpv-acc-btn:focus-visible{outline:3px solid #1F4236;outline-offset:2px}
.bpv-pm{position:relative;flex:none;width:16px;height:16px}
.bpv-pm::before,.bpv-pm::after{content:"";position:absolute;left:0;top:7.25px;width:16px;height:1.5px;border-radius:1px;background:#2E5E4E;transition:transform 200ms ease-out}
.bpv-pm::after{transform:rotate(90deg)}
.bpv-acc.is-open .bpv-pm::after{transform:rotate(90deg) scaleX(0)}
.bpv-acc-panel{display:grid;grid-template-rows:0fr;visibility:hidden;transition:grid-template-rows 240ms ease-out,visibility 0s linear 240ms}
.bpv-acc.is-open .bpv-acc-panel{grid-template-rows:1fr;visibility:visible;transition:grid-template-rows 240ms ease-out,visibility 0s}
.bpv-acc-inner{overflow:hidden;min-height:0}
@media (prefers-reduced-motion: reduce){.bpv-acc-panel,.bpv-acc.is-open .bpv-acc-panel,.bpv-pm::before,.bpv-pm::after{transition:none}}
.bpv-aud-item{padding:0 18px;border-left:1px solid #D9DCD8}
.bpv-aud-item:first-child{padding-left:0;border-left:0}
/* 44px touch areas on phones; padding offset by negative margin so nothing moves (Damo, 18-Oct-2026). */
@media (max-width: 760px){.bpv-aud-item a,.bpv-hero-tap{padding:13px 0;margin:-13px 0}.bpv-aud-list{row-gap:20px}}
/* Rows sit 20px apart so those tap areas never overlap, wrapped links included (Damo, 18-Oct-2026). */
@media (max-width: 600px){.bpv-aud-list{display:grid !important;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 0;width:100%}.bpv-aud-item{padding:0 12px}.bpv-aud-item:nth-child(odd){padding-left:0;border-left:0}}
.bpv-pill{position:absolute;top:calc(100% + 12px);right:max(72px, calc((100% - 1200px) / 2 + 72px));display:flex;align-items:center;gap:2px;padding:0 4px 0 14px;background:#FFFFFF;border:1px solid #2E5E4E;border-radius:999px;box-shadow:0 4px 14px rgba(21,24,27,0.10);opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity 200ms ease-out,transform 200ms ease-out,visibility 0s linear 200ms}
.bpv-pill.is-shown{opacity:1;visibility:visible;transform:none;transition:opacity 200ms ease-out,transform 200ms ease-out,visibility 0s}
.bpv-pill a{display:inline-flex;align-items:center;min-height:36px;font-size:13px;font-weight:600;color:#2E5E4E;text-decoration:none;white-space:nowrap}
.bpv-pill a:hover{text-decoration:underline}
.bpv-pill button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin-left:6px;border:0;border-radius:50%;background:none;color:#2E5E4E;cursor:pointer}
.bpv-pill button:hover{background:#F1F5F3}
@media (max-width: 760px){.bpv-pill{right:auto;left:50%;transform:translate(-50%,-4px)}.bpv-pill.is-shown{transform:translate(-50%,0)}
/* 44px tap areas on phones, padding offset by negative margin so the pill keeps its size (Damo, 19-Oct-2026). */
.bpv-pill a{padding:4px 0;margin:-4px 0}.bpv-pill button{box-sizing:content-box;padding:6px;margin:-6px -6px -6px 0;background-clip:content-box}}
/* Phones (Damo, 17-Oct-2026): every grid to one column below 640px; nothing scrolls sideways at 360px.
   Exceptions kept on purpose: the audience links (2 by 2, ruled earlier) and client name tiles (2 across). */
@media (max-width: 640px){
[style*="grid-template-columns"]{grid-template-columns:minmax(0,1fr) !important}
.bpv-clients-grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important}
.bpv-h1{font-size:38px !important}
#top{padding-top:56px !important;padding-bottom:48px !important;gap:40px !important}
.bpv-commercial{padding:28px 24px !important}
section h2[id]{font-size:30px !important}
#contact aside{margin-top:0 !important}
}
.bpv-formcard{outline:2px solid transparent;outline-offset:16px;border-radius:8px;transition:outline-color 200ms ease-out}
.bpv-formcard.is-flash{outline-color:var(--g)}
.bpv-formgrid .bpv-field.is-invalid input,.bpv-formgrid .bpv-field.is-invalid input:hover,.bpv-formgrid .bpv-field.is-invalid input:focus,.bpv-formgrid .bpv-field.is-invalid select{border-color:#B3261E !important}
.bpv-spin{display:inline-block;width:16px;height:16px;box-sizing:border-box;border:2px solid rgba(255,255,255,0.45);border-top-color:#FFFFFF;border-radius:50%;animation:bpvspin 700ms linear infinite}
@keyframes bpvspin{to{transform:rotate(360deg)}}

.bpv-mbar{display:none}
@media (max-width: 760px){
.bpv-mbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:20;transform:translateY(110%);visibility:hidden;transition:transform 200ms ease-out,visibility 0s linear 200ms}
.bpv-mbar.is-shown{transform:none;visibility:visible;transition:transform 200ms ease-out,visibility 0s}
}

@media (prefers-reduced-motion: reduce){
*,*::before,*::after{transition:none !important;animation:none !important}
.bpv-pre{opacity:1 !important;transform:none !important}
.bpv-btn:hover,.bpv-btn:active,.bpv-card:hover,.bpv-team:hover{transform:none !important}
}
/* Hero wrapper and the white mask behind the headline. */
.bpv-hero{position:relative;overflow:hidden}
.bpv-hero-fade{position:absolute;inset:0;background:linear-gradient(90deg,#FFFFFF 0%,#FFFFFF 45%,rgba(255,255,255,0) 60%)}
.bpv-hero-foot{position:absolute;left:0;right:0;bottom:0;height:80px;background:linear-gradient(0deg,#FFFFFF 20%,rgba(255,255,255,0))}
/* Hero background (Damo, 18-Oct-2026): topographic contours on the right 60%, a soft mist glow at the top right,
   the left 45% pure white behind the headline. The contours drift about 20px over 30s; still with reduced motion. */
.bpv-hero{background:radial-gradient(ellipse 70% 85% at 94% 4%, #EAF1ED 0%, rgba(234,241,237,0.55) 35%, rgba(255,255,255,0) 70%), #FFFFFF}
.bpv-topo-wrap{position:absolute;top:0;right:0;bottom:0;width:60%;overflow:hidden}
.bpv-topo{position:absolute;inset:-20px;width:calc(100% + 40px);height:calc(100% + 40px)}
.bpv-topo-lines{stroke-opacity:0.09}
@keyframes bpvDrift{from{transform:translate(0,0)}to{transform:translate(-16px,12px)}}
.bpv-topo{animation:bpvDrift 30s ease-in-out infinite alternate}
@media (max-width: 900px){
.bpv-hero{background:#FFFFFF}
.bpv-topo-wrap{width:100%;bottom:auto;height:60%}
.bpv-topo-lines{stroke-opacity:0.05}
.bpv-hero-fade{display:none}
}
/* Full-width tint behind a centred section (Damo, 18-Oct-2026). */
.bpv-notice-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:32px 56px;align-items:start}
@media (max-width: 900px){.bpv-notice-grid{grid-template-columns:minmax(0,1fr)}}
@media (max-width: 640px){.bpv-notice{padding:28px 22px !important}#notice{padding-top:64px !important;padding-bottom:64px !important}#notice-h{font-size:24px !important}.bpv-notice-mean{padding:20px !important}.bpv-notice-dot{display:none}}
/* Phones: hero eyebrow puts the year on its own line, without the dot (Damo, 18-Oct-2026). */
@media (max-width: 640px){.bpv-eb-dot{display:none}.bpv-eb-yr{display:block}}
/* Phones: keep the last footer line clear of the fixed bottom bar (Damo, 18-Oct-2026). */
@media (max-width: 760px){.bpv-foot{padding-bottom:calc(72px + env(safe-area-inset-bottom))}.bpv-foot-tap{padding:15px 0;margin:-15px 0}
/* Phone, email and LinkedIn stack as 44px blocks whose tap areas touch but never overlap (Damo, 18-Oct-2026). */
.bpv-foot-contact{gap:0 !important}.bpv-foot-contact .bpv-foot-tap{display:flex !important;align-items:center;align-self:flex-start;min-height:44px;padding:0;margin:0}
/* Contact panel email: 44px tap area, clear of the phone link above (Damo, 18-Oct-2026). */
.bpv-contact-email{padding:9px 0;margin:-9px 0}
/* Last standalone links brought to 44px, clear of their neighbours (Damo, 19-Oct-2026). */
.bpv-contact-phone{padding:3px 0;margin:-3px 0}
/* Sent screen: weighted padding keeps the two tap areas apart without moving either (Damo, 19-Oct-2026). */
.bpv-done-tel{padding:12px 0 5px;margin:-12px 0 -5px}.bpv-done-again{padding:4px 0 16px !important;margin:4px 0 -16px !important}.bpv-about-cap{padding:10px 0;margin:-10px 0}.bpv-contact-addr{padding:2px 0;margin:-2px 0}}
/* Footer links: 44px touch area on phones via padding offset by negative margin, so nothing moves. */
.bpv-footgrid{display:grid;grid-template-columns:minmax(0,1.3fr) repeat(3,minmax(0,1fr));gap:40px 48px}
@media (max-width: 900px){.bpv-footgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width: 560px){.bpv-footgrid{grid-template-columns:minmax(0,1fr)}}
.bpv-bleed-mist,.bpv-bleed-stone{clip-path:inset(0 -100vmax)}
.bpv-bleed-mist{background:var(--mist);box-shadow:0 0 0 100vmax var(--mist)}
.bpv-bleed-stone{background:var(--stone);box-shadow:0 0 0 100vmax var(--stone)}
/* Market snapshot on deep green (Damo, 18-Oct-2026). */
.bpv-snap .bpv-tile{border-right-color:rgba(255,255,255,0.15)}
.bpv-snap .bpv-tile:focus-visible{outline-color:#FFFFFF}
.bpv-snap a:focus-visible{outline-color:#FFFFFF}
.bpv-snap .bpv-src{text-decoration:underline !important;text-underline-offset:2px;color:#FFFFFF !important}
.bpv-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* Header below 1120px: menu icon; below 760px: phone icon, header CTA hidden (bottom bar carries it). The product owner, 16-Oct-2026. */
.bpv-menubtn,.bpv-phoneicon{display:none}
@media (max-width: 1120px){.bpv-menubtn{display:flex !important}}
@media (max-width: 760px){.bpv-phoneicon{display:flex !important}.bpv-navcta{display:none !important}}
/* Team below 760px: one per row, 72px photo at left. */
@media (max-width: 760px){
.bpv-teamgrid{gap:28px}
.bpv-teamgrid > *{flex-basis:100% !important}
.bpv-team{flex-direction:row !important;align-items:flex-start;gap:16px !important}
.bpv-teamphoto{width:72px !important;height:72px !important;flex:none;padding:0 6px !important;font-size:8px !important}
.bpv-teambody{gap:12px !important}
}
@media print{.bpv-pre{opacity:1 !important;transform:none !important}.bpv-mbar{display:none !important}}
/* A supplied team photo takes the placeholder's size and circle crop; the placeholder's padding is for its text. */
img.bpv-teamphoto{padding:0 !important;object-fit:cover;flex:none}

/* Privacy page: the policy in the page's type, under the same header and footer. */
.bpv-privacy{max-width:760px;margin:0 auto;padding:96px 24px 112px;color:#3A4046}
.bpv-privacy h1{margin:0 0 24px;font-size:36px;line-height:1.2;font-weight:600;color:#15181B}
.bpv-privacy h2{margin:40px 0 12px;font-size:22px;line-height:1.3;font-weight:600;color:#15181B}
.bpv-privacy p,.bpv-privacy ul{margin:0 0 16px}
.bpv-privacy ul{padding-left:22px}
.bpv-privacy li{margin-bottom:6px}
.bpv-privacy strong{font-weight:600;color:#1F2328}
@media (max-width: 640px){.bpv-privacy{padding:56px 24px 72px}.bpv-privacy h1{font-size:30px}}
