{"id":622,"date":"2026-03-12T19:27:36","date_gmt":"2026-03-12T18:27:36","guid":{"rendered":"https:\/\/puravida-realestate.es\/services\/"},"modified":"2026-05-02T00:40:53","modified_gmt":"2026-05-01T22:40:53","slug":"dienstleistungen","status":"publish","type":"page","link":"https:\/\/puravida-realestate.es\/de\/services\/","title":{"rendered":"SERVICES"},"content":{"rendered":"<style>.elementor-622 .elementor-element.elementor-element-53ac74f{--display:flex;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-622 .elementor-element.elementor-element-e00b4a6 > .elementor-widget-container{margin:120px 0px 80px 0px;}.elementor-622 .elementor-element.elementor-element-932822d{--display:flex;}.elementor-622 .elementor-element.elementor-element-72e095b{--spacer-size:60px;}<\/style>\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"622\" class=\"elementor elementor-622\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-53ac74f e-flex e-con-boxed e-con e-parent\" data-id=\"53ac74f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e00b4a6 elementor-widget elementor-widget-html\" data-id=\"e00b4a6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- =====================================================================\n     SERVICES PAGE \u2014 [pura_services]\n     ===================================================================== -->\n<div class=\"pv-svc-page\">\n\n<!-- \u2500\u2500 HERO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<section class=\"pv-svc-hero\">\n  <video class=\"pv-svc-hero-video\" autoplay muted loop playsinline preload=\"auto\" aria-hidden=\"true\">\n    <source src=\"https:\/\/puravida-realestate.es\/wp-content\/uploads\/2026\/04\/Pura-Vida-Real-Estate-Services-Clip-S.mp4\" type=\"video\/mp4\">\n  <\/video>\n  <div class=\"pv-svc-hero-overlay\" aria-hidden=\"true\"><\/div>\n  <div class=\"pv-svc-hero-inner\">\n    <h1 class=\"pv-svc-hero-title pv-reveal\">Your journey,<br><em>beautifully guided<\/em><\/h1>\n    <div class=\"pv-svc-gold-line pv-gold-line pv-reveal\"><\/div>\n    <p class=\"pv-svc-hero-sub pv-reveal\">Buying, selling<br>&mdash; and everything in between.<\/p>\n  <\/div>\n<\/section>\n\n<!-- \u2500\u2500 INTRO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<section class=\"pv-svc-intro\">\n  <div class=\"pv-svc-container\">\n    <div class=\"pv-svc-intro-grid\">\n      <div class=\"pv-svc-intro-text pv-reveal-left\">\n        <p class=\"pv-svc-section-eyebrow\">Who we are<\/p>\n        <h2 class=\"pv-svc-section-title\">A personal service from people who truly care<\/h2>\n        <div class=\"pv-svc-divider pv-gold-line\"><\/div>\n        <p class=\"pv-svc-body-text\">Buying a home on the Costa Blanca or Costa C\u00e1lida is one of the most significant decisions of your life. We are Davy and Marina \u2014 your dedicated partners, fluent in English, German and Russian, who combine deep local expertise with a genuine passion for helping international buyers find homes they love.<\/p>\n        <p class=\"pv-svc-body-text\">We believe in complete transparency, unhurried guidance, and a process that feels as good as the destination.<\/p>\n      <\/div>\n      <div class=\"pv-svc-intro-visual pv-reveal-right\">\n        <span class=\"pv-svc-intro-frame\" aria-hidden=\"true\"><\/span>\n        <img decoding=\"async\" class=\"pv-svc-intro-img\"\n             src=\"https:\/\/puravida-realestate.es\/wp-content\/uploads\/2026\/04\/Buying-Property-in-Spain-%E2%80%93-Davy-and-Marina-Siger-Guiding-Clients-Through-Contracts.avif\"\n             alt=\"Davy and Marina guiding clients through a property contract\">\n        <div class=\"pv-svc-intro-card\">\n          <span class=\"pv-svc-intro-card-num\"><span class=\"pv-svc-intro-card-count\" data-target=\"1300\">1,300<\/span><span class=\"pv-svc-intro-card-plus\">+<\/span><\/span>\n          <span class=\"pv-svc-intro-card-label\">Properties on our platform<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- \u2500\u2500 SERVICES GRID \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<section class=\"pv-svc-services\">\n  <div class=\"pv-svc-container\">\n    <div class=\"pv-svc-section-header pv-reveal\">\n      <p class=\"pv-svc-section-eyebrow\">What we do<\/p>\n      <h2 class=\"pv-svc-section-title pv-reveal-fade\">Everything you need,<br><em>all in one place<\/em><\/h2>\n      <div class=\"pv-svc-divider-center pv-gold-line\"><\/div>\n    <\/div>\n    <!-- Eight alternating image+text rows. Odd rows: image left, text right.\n         Even rows: image right, text left (flipped via CSS nth-child). Each\n         <img> is a placeholder \u2014 replace src with the generated image and\n         keep the alt text. ChatGPT prompts for each are listed at the\n         bottom of this comment block. -->\n    <div class=\"pv-svc-rows\">\n\n      <article class=\"pv-svc-row\">\n        <div class=\"pv-svc-row-img pv-reveal-fade\">\n          <img decoding=\"async\" src=\"https:\/\/puravida-realestate.es\/wp-content\/uploads\/2026\/04\/personal-property-search-costa-blanca-shortlist-v2.png\" alt=\"Davy and Marina listening attentively to international clients sharing their dream property requirements\" loading=\"lazy\">\n        <\/div>\n        <div class=\"pv-svc-row-text pv-reveal-right\">\n          <p class=\"pv-svc-row-num\">01<\/p>\n          <h3 class=\"pv-svc-row-title\">Personal property<br><em>search<\/em><\/h3>\n          <div class=\"pv-svc-divider pv-gold-line\"><\/div>\n          <p class=\"pv-svc-row-body\">We listen carefully to your wishes and actively search our portfolio of 1,300+ properties to find options perfectly matched to your lifestyle and budget.<\/p>\n        <\/div>\n      <\/article>\n\n      <article class=\"pv-svc-row\">\n        <div class=\"pv-svc-row-img\">\n          <img decoding=\"async\" src=\"https:\/\/puravida-realestate.es\/wp-content\/uploads\/2026\/04\/costa-blanca-inspection-trips-spanish-village.png\" alt=\"Clients touring a hillside Mediterranean villa with a Pura Vida agent on the Costa Blanca\" loading=\"lazy\">\n        <\/div>\n        <div class=\"pv-svc-row-text pv-reveal-left\">\n          <p class=\"pv-svc-row-num\">02<\/p>\n          <h3 class=\"pv-svc-row-title\">Inspection<br><em>trips<\/em><\/h3>\n          <div class=\"pv-svc-divider pv-gold-line\"><\/div>\n          <p class=\"pv-svc-row-body\">We organise guided property tours so you experience the homes, the neighbourhoods, and the lifestyle before making any commitment.<\/p>\n        <\/div>\n      <\/article>\n\n      <article class=\"pv-svc-row\">\n        <div class=\"pv-svc-row-img\">\n          <img decoding=\"async\" src=\"https:\/\/puravida-realestate.es\/wp-content\/uploads\/2026\/04\/legal-assistance-buying-property-spain-escritura.avif\" alt=\"Clients signing a Spanish property deed with their lawyer at a notary's office\" loading=\"lazy\">\n        <\/div>\n        <div class=\"pv-svc-row-text pv-reveal-right\">\n          <p class=\"pv-svc-row-num\">03<\/p>\n          <h3 class=\"pv-svc-row-title\">Full legal<br><em>assistance<\/em><\/h3>\n          <div class=\"pv-svc-divider pv-gold-line\"><\/div>\n          <p class=\"pv-svc-row-body\">Purchase contracts, NIE applications, bank account opening, notarial deeds, Power of Attorney \u2014 our legal team handles everything with precision.<\/p>\n        <\/div>\n      <\/article>\n\n      <article class=\"pv-svc-row\">\n        <div class=\"pv-svc-row-img\">\n          <img decoding=\"async\" src=\"https:\/\/puravida-realestate.es\/wp-content\/uploads\/2026\/04\/remote-video-viewings-virtual-property-tour-spain-V1.avif\" alt=\"Hands holding a tablet showing a live video tour of a Mediterranean villa pool area\" loading=\"lazy\">\n        <\/div>\n        <div class=\"pv-svc-row-text pv-reveal-left\">\n          <p class=\"pv-svc-row-num\">04<\/p>\n          <h3 class=\"pv-svc-row-title\">Remote video<br><em>viewings<\/em><\/h3>\n          <div class=\"pv-svc-divider pv-gold-line\"><\/div>\n          <p class=\"pv-svc-row-body\">Cannot travel yet? We conduct live video tours of properties so you can shortlist your favourites from the comfort of home.<\/p>\n        <\/div>\n      <\/article>\n\n      <article class=\"pv-svc-row\">\n        <div class=\"pv-svc-row-img\">\n          <img decoding=\"async\" src=\"https:\/\/puravida-realestate.es\/wp-content\/uploads\/2026\/04\/multilingual-real-estate-support-costa-blanca.png\" alt=\"Marina on a video consultation call from a sunlit Mediterranean office desk\" loading=\"lazy\">\n        <\/div>\n        <div class=\"pv-svc-row-text pv-reveal-right\">\n          <p class=\"pv-svc-row-num\">05<\/p>\n          <h3 class=\"pv-svc-row-title\">Multilingual<br><em>support<\/em><\/h3>\n          <div class=\"pv-svc-divider pv-gold-line\"><\/div>\n          <p class=\"pv-svc-row-body\">We speak fluent English, German and Russian, and through our trusted team Spanish, French and Swedish too. Every document, conversation and contract is fully understood.<\/p>\n        <\/div>\n      <\/article>\n\n      <article class=\"pv-svc-row\">\n        <div class=\"pv-svc-row-img\">\n          <img decoding=\"async\" src=\"https:\/\/puravida-realestate.es\/wp-content\/uploads\/2026\/04\/spanish-mortgage-finance-advice-costa-blanca.png\" alt=\"Trusted financial advisor walking a couple through Spanish mortgage paperwork\" loading=\"lazy\">\n        <\/div>\n        <div class=\"pv-svc-row-text pv-reveal-left\">\n          <p class=\"pv-svc-row-num\">06<\/p>\n          <h3 class=\"pv-svc-row-title\">Mortgage &amp; finance<br><em>advice<\/em><\/h3>\n          <div class=\"pv-svc-divider pv-gold-line\"><\/div>\n          <p class=\"pv-svc-row-body\">We connect you with trusted Spanish banks and financial advisors to secure the best possible mortgage rates for your purchase.<\/p>\n        <\/div>\n      <\/article>\n\n      <article class=\"pv-svc-row\">\n        <div class=\"pv-svc-row-img\">\n          <img decoding=\"async\" src=\"https:\/\/puravida-realestate.es\/wp-content\/uploads\/2026\/04\/currency-exchange-international-buyers-spain.avif\" alt=\"Crisp Euro banknotes beside a smartphone showing a live exchange-rate chart on a marble desk\" loading=\"lazy\">\n        <\/div>\n        <div class=\"pv-svc-row-text pv-reveal-right\">\n          <p class=\"pv-svc-row-num\">07<\/p>\n          <h3 class=\"pv-svc-row-title\">Currency<br><em>exchange<\/em><\/h3>\n          <div class=\"pv-svc-divider pv-gold-line\"><\/div>\n          <p class=\"pv-svc-row-body\">Transferring funds to Spain? We introduce you to trusted currency specialists who secure preferential exchange rates on international transfers.<\/p>\n        <\/div>\n      <\/article>\n\n      <article class=\"pv-svc-row\">\n        <div class=\"pv-svc-row-img\">\n          <img decoding=\"async\" src=\"https:\/\/puravida-realestate.es\/wp-content\/uploads\/2026\/04\/ChatGPT-Image-24.-Apr.-2026-08_09_14.avif\" alt=\"Smiling local handing over villa keys to a content homeowner couple at golden hour\" loading=\"lazy\">\n        <\/div>\n        <div class=\"pv-svc-row-text pv-reveal-left\">\n          <p class=\"pv-svc-row-num\">08<\/p>\n          <h3 class=\"pv-svc-row-title\">After-sales<br><em>care<\/em><\/h3>\n          <div class=\"pv-svc-divider pv-gold-line\"><\/div>\n          <p class=\"pv-svc-row-body\">Our support doesn't end at the notary. Utility connections, insurance, furnishing, renovations, rental licences \u2014 we remain your trusted partner.<\/p>\n        <\/div>\n      <\/article>\n\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- \u2500\u2500 CTA \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n<section class=\"pv-svc-cta\" id=\"pv-svc-cta\">\n  <div class=\"pv-svc-container\">\n    <div class=\"pv-svc-cta-inner pv-reveal\">\n      <p class=\"pv-svc-section-eyebrow\" style=\"color:#C9A84C;\">Ready to start?<\/p>\n      <h2 class=\"pv-svc-cta-title\" id=\"services-cta-headline\"><span class=\"word-dark\">Let&rsquo;s find<\/span> <span class=\"word-reveal\">your perfect home<\/span><\/h2>\n      <div class=\"pv-svc-gold-line pv-gold-line\" style=\"margin:24px auto 32px;\"><\/div>\n      <p class=\"pv-svc-cta-sub\">No obligation, no pressure &mdash; just an honest conversation about what's possible.<\/p>\n      <div class=\"pv-svc-cta-actions\">\n        <a href=\"#\" class=\"pv-svc-btn-primary pv-open-contact\" data-pv-source=\"services-cta\">Arrange a free consultation<\/a>\n        <a href=\"\/properties\/\" class=\"pv-svc-btn-secondary\">Browse properties<\/a>\n      <\/div>\n\n      <!-- Agent photo strip \u2014 mirrors the property-page .pv-agent-photos block\n           (same markup + same animation classes). The pv-agent-photos-animate\n           IIFE at the bottom of this snippet drives the slide-in + per-card\n           stagger. -->\n      <div class=\"pv-svc-agent-photos pv-agent-photos pv-agent-photos-animate\">\n        <div class=\"pv-agent-card\">\n          <div class=\"pv-agent-photo\">\n            <div class=\"pv-agent-initials\">DS<\/div>\n            <img decoding=\"async\" src=\"https:\/\/puravida-realestate.es\/wp-content\/uploads\/2026\/04\/davy-siger-real-estate-agent-costa-blanca-2.png\"\n                 alt=\"Davy Siger\" loading=\"lazy\" onerror=\"this.style.display='none';\" \/>\n          <\/div>\n          <div class=\"pv-agent-info\">\n            <div class=\"pv-agent-name\">Davy Siger<\/div>\n            <div class=\"pv-agent-role\">Founder and Senior Advisor<\/div>\n            <div class=\"pv-agent-langs\">English, German, Spanish<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"pv-agent-card pv-agent-card--offset\">\n          <div class=\"pv-agent-photo\">\n            <div class=\"pv-agent-initials\">MS<\/div>\n            <img decoding=\"async\" src=\"https:\/\/puravida-realestate.es\/wp-content\/uploads\/2026\/04\/marina-siger-real-estate-agent-costa-blanca-1.avif\"\n                 alt=\"Marina Siger\" loading=\"lazy\" onerror=\"this.style.display='none';\" \/>\n          <\/div>\n          <div class=\"pv-agent-info\">\n            <div class=\"pv-agent-name\">Marina Siger<\/div>\n            <div class=\"pv-agent-role\">Founder and Property Advisor<\/div>\n            <div class=\"pv-agent-langs\">English, German, Russian<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<\/div><!-- .pv-svc-page -->\n\n<!-- =====================================================================\n     STYLES\n     ===================================================================== -->\n<style>\n\/* \u2500\u2500 Base \u2500\u2500 *\/\n.pv-svc-page { font-family:'Inter',sans-serif; color:#22344B; }\n.pv-svc-container { max-width:1200px; margin:0 auto; padding:0 40px; }\n@media(max-width:768px){ .pv-svc-container{padding:0 20px;} }\n\n\/* \u2500\u2500 Section headers \u2500\u2500 *\/\n.pv-svc-section-eyebrow { font-size:11px !important; font-weight:700 !important; letter-spacing:.25em !important; text-transform:uppercase !important; color:#C9A84C !important; margin-bottom:14px !important; }\n.pv-svc-section-title { font-family:'Cormorant Garamond','Playfair Display',serif !important; font-size:clamp(32px,4vw,50px) !important; font-weight:400 !important; color:#22344B !important; margin:0 0 20px !important; line-height:1.15 !important; }\n.pv-svc-section-title em { font-style:italic !important; color:#C9A84C !important; }\n.pv-svc-section-sub { font-size:16px !important; color:rgba(34,52,75,.65) !important; max-width:580px; margin:0 auto !important; line-height:1.75 !important; }\n.pv-svc-divider { display:block; width:60px; height:1px; background:#C9A84C; margin:0 0 28px; }\n.pv-svc-divider-center { display:block; width:60px; height:1px; background:#C9A84C; margin:0 auto 28px; }\n.pv-svc-body-text { font-size:16px !important; color:rgba(34,52,75,.75) !important; line-height:1.8 !important; margin-bottom:16px !important; }\n\n\/* \u2500\u2500 Hero \u2500\u2500 *\/\n\/* TUNING POINTS:\n   - FULL-WIDTH BREAKOUT: the margin\/width trick on .pv-svc-hero below\n     pulls the section to the full viewport so the surrounding grey\n     page background no longer shows. Remove those 3 lines if you ever\n     want it constrained again.\n   - OVERLAY TRANSPARENCY: see the two rgba alpha values inside\n     .pv-svc-hero-overlay below \u2014 the navy alpha (.55) controls how\n     dark the video gets for text legibility, the gold alpha (.18)\n     controls the warm tint. Higher = more opaque.\n   - HEADER OVERLAY: the body.page-id-622 rules below pull the global\n     header on top of the hero (transparent, absolute) so the menu +\n     logo float over the video instead of sitting in a white strip\n     above it. Remove that whole block if you ever want the header\n     to take its normal space again. *\/\nbody.page-id-622 header[data-elementor-type=\"header\"] {\n  position:absolute !important;\n  top:0; left:0; right:0;\n  width:100%;\n  \/* Match the archive\/property-page header min-height EXACTLY (80px,\n     not 90). The 5px difference shifts the centred-logo down or up\n     visibly. Archive sets header min-height via a global rule, so we\n     replicate it here to keep the top:50% + translate(-50%,-50%) math\n     identical on both pages. *\/\n  min-height:80px !important;\n  background:transparent !important;\n  z-index:100;\n}\n\/* Kill the boxed Elementor section padding so the hero touches y=0 *\/\nbody.page-id-622 .elementor-622 > .elementor-element.e-con,\nbody.page-id-622 .elementor-622 .e-con-inner,\nbody.page-id-622 .elementor-622 .elementor-widget-html,\nbody.page-id-622 .elementor-622 .elementor-widget-container {\n  padding:0 !important;\n  margin:0 !important;\n  max-width:none !important;\n  width:100% !important;\n}\n.pv-svc-hero {\n  position:relative;\n  overflow:hidden;\n  \/* Top padding clears the header (~110-130px); bottom keeps breathing room *\/\n  padding:200px 40px 130px;\n  text-align:center;\n  background:#22344B; \/* fallback while video loads *\/\n  \/* Full-bleed breakout \u2014 escapes any constrained Elementor wrapper *\/\n  margin-left:calc(50% - 50vw);\n  margin-right:calc(50% - 50vw);\n  width:100vw;\n  min-height:620px;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n}\n\/* Logo sizing \u2014 match the archive page EXACTLY so the visual size\n   and position are identical on both. Archive's effective values\n   (after its own !important overrides):\n     - height: 84px both desktop AND mobile (no shrink)\n     - margin-top: 60px (overrides the 100px from snippet 18)\n   Services replicates those exact numbers. *\/\nbody.page-id-622 .pura-header-logo img {\n  height:84px !important; width:auto; display:block; margin-top:80px !important;\n}\n@media (max-width:767px) {\n  body.page-id-622 .pura-header-logo img { height:84px !important; margin-top:60px !important; }\n}\n\/* Mobile hamburger needs to stay legible against the video \u2014 override\n   snippet #79's navy colour (intended for white-bg inner pages). *\/\n@media (max-width:1024px) {\n  body.page-id-622 header[data-elementor-type=\"header\"] .elementor-menu-toggle,\n  body.page-id-622 header[data-elementor-type=\"header\"] .elementor-menu-toggle svg,\n  body.page-id-622 header[data-elementor-type=\"header\"] .elementor-menu-toggle i {\n    color:#fff !important;\n    fill:#fff !important;\n  }\n}\n.pv-svc-hero-video {\n  position:absolute; inset:0;\n  width:100%; height:100%;\n  object-fit:cover;\n  z-index:0;\n  pointer-events:none;\n}\n.pv-svc-hero-overlay {\n  position:absolute; inset:0;\n  z-index:1;\n  pointer-events:none;\n  \/* Two stacked tints. Adjust the alpha values to taste:\n     - rgba(34,52,75, X)   \u2192 navy darkening (legibility)\n     - rgba(201,168,76, X) \u2192 gold warm tint *\/\n  background:\n    linear-gradient(rgba(201,168,76,0.18), rgba(201,168,76,0.18)),\n    linear-gradient(rgba(34,52,75,0.55),  rgba(34,52,75,0.55));\n}\n.pv-svc-hero-inner { max-width:800px; margin:0 auto; position:relative; z-index:2; }\n.pv-svc-hero .pv-svc-section-eyebrow { color:#C9A84C !important; }\n.pv-svc-eyebrow { font-size:11px !important; font-weight:700 !important; letter-spacing:.25em !important; text-transform:uppercase !important; color:#C9A84C !important; margin-bottom:20px !important; }\n.pv-svc-hero-title { font-family:'Cormorant Garamond','Playfair Display',serif !important; font-size:clamp(44px,6vw,78px) !important; font-weight:400 !important; color:#fff !important; margin:0 0 28px !important; line-height:1.1 !important; text-shadow:0 2px 18px rgba(0,0,0,.25); }\n.pv-svc-hero-title em { font-style:italic !important; color:#C9A84C !important; }\n.pv-svc-gold-line { display:block; width:60px; height:1px; background:#C9A84C; margin:0 auto 32px; }\n.pv-svc-hero-sub { font-size:18px !important; color:rgba(255,255,255,.85) !important; max-width:560px; margin:0 auto !important; line-height:1.75 !important; text-shadow:0 1px 12px rgba(0,0,0,.25); }\n@media(max-width:768px){\n  .pv-svc-hero{padding:90px 20px 80px; min-height:440px;}\n  \/* Shift just the H1 + subtitle block down on mobile without\n     resizing the hero container. translateY moves the content\n     visually only \u2014 container\/min-height stays exactly the same. *\/\n  .pv-svc-hero-inner{transform:translateY(70px);}\n}\n\n\/* \u2500\u2500 Intro \u2500\u2500 *\/\n.pv-svc-intro { background:#fff; padding:100px 0; }\n.pv-svc-intro-grid { display:grid; grid-template-columns:1fr 1fr; gap:80px; align-items:center; }\n@media(max-width:900px){ .pv-svc-intro-grid{grid-template-columns:1fr; gap:50px;} }\n\/* Visual block on the right \u2014 image with offset gold frame and a single\n   floating navy stat card. Mirrors the homepage pattern (image-left)\n   inverted so it sits opposite the text column on this page.\n\n   \u2500\u2500 TUNING POINTS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   GOLD FRAME (.pv-svc-intro-frame):\n     - top:0; left:0       \u2192 where the frame anchors. Increase top\/left\n                             to pull frame inward; negative values push\n                             it outside the image.\n     - width  \/ height     \u2192 how big the frame is, relative to image.\n                             \"calc(100% - 44px)\" leaves a 44px gap on\n                             the right; \"calc(100% - 88px)\" leaves an\n                             88px gap at the bottom.\n     - border:1px #C9A84C  \u2192 frame thickness + colour.\n\n   NAVY CARD (.pv-svc-intro-card):\n     - bottom: -10px       \u2192 vertical position (negative = hangs below\n                             the image).\n     - left: 60%           \u2192 horizontal anchor as % of image width.\n                             Higher = further right. translateX shifts\n                             it relative to that anchor.\n     - transform: translateX(-50%)  \u2192 -50% centres on the anchor;\n                             0 = card starts at anchor; -100% = ends\n                             at anchor.\n     - padding             \u2192 inner spacing (smaller = tighter card).\n     - min-width           \u2192 minimum card width.\n   \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.pv-svc-intro-visual {\n  position:relative;\n  padding:22px 0 60px 22px; \/* room for frame top-left peek + card hang-down *\/\n}\n.pv-svc-intro-frame {\n  position:absolute;\n  top:0; left:0;\n  width:calc(100% - 44px);\n  height:calc(100% - 88px);\n  border:1px solid #C9A84C;\n  border-radius:3px;\n  pointer-events:none;\n  z-index:0;\n}\n.pv-svc-intro-img {\n  display:block;\n  position:relative;\n  width:100%;\n  height:auto;\n  border-radius:3px;\n  z-index:1;\n  box-shadow:0 22px 44px rgba(34,52,75,.14);\n}\n.pv-svc-intro-card {\n  position:absolute;\n  bottom:-10px;\n  left:78%;\n  transform:translateX(-50%);\n  background:#22344B;\n  color:#fff;\n  padding:18px 28px 16px;\n  text-align:center;\n  z-index:2;\n  box-shadow:0 16px 34px rgba(34,52,75,.28);\n  display:flex;\n  flex-direction:column;\n  gap:15px;\n  min-width:190px;\n}\n.pv-svc-intro-card-num {\n  font-family:'Cormorant Garamond','Playfair Display',serif !important;\n  font-size:38px !important;\n  font-weight:400 !important;\n  color:#fff !important;\n  line-height:1 !important;\n}\n\/* \"+\" stays WHITE here, not gold (per Davy's call \u2014 gold + would\n   compete with the headline accents elsewhere on the page). *\/\n.pv-svc-intro-card-plus { color:#fff !important; font-size:26px !important; font-style:italic; margin-left:2px; }\n.pv-svc-intro-card-label {\n  font-family:'Cormorant Garamond','Playfair Display',serif !important;\n  font-size:12px !important;\n  font-weight:400 !important;\n  letter-spacing:3px !important;\n  line-height:1.25 !important;\n  text-transform:uppercase !important;\n  color:rgba(255,255,255,.7) !important;\n}\n@media(max-width:900px){\n  .pv-svc-intro-visual { padding:18px 0 70px 18px; max-width:520px; margin:0 auto; }\n  .pv-svc-intro-card { padding:16px 24px 14px; min-width:170px; }\n  .pv-svc-intro-card-num { font-size:34px !important; }\n}\n\n\/* \u2500\u2500 Services Grid \u2500\u2500 *\/\n.pv-svc-services { background:#fff; padding:100px 0; }\n.pv-svc-section-header { text-align:center; margin-bottom:64px; }\n\/* \u2500\u2500 Services rows: alternating image\/text \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   \u2500\u2500 TUNING POINTS \u2500\u2500\n   - Vertical gap between rows: .pv-svc-rows { gap: ... }\n   - Side-to-side gap inside a row: .pv-svc-row { gap: ... }\n   - Image radius \/ shadow: .pv-svc-row-img img\n   - Number marker style: .pv-svc-row-num (font-size, opacity, color)\n   - Reverse breakpoint (when rows stack): @media (max-width: 900px)\n   \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.pv-svc-rows { display:flex; flex-direction:column; gap:120px; margin-top:30px; }\n\n.pv-svc-row {\n  display:grid;\n  grid-template-columns:1fr 1fr;\n  gap:80px;\n  align-items:center;\n}\n\/* Even rows flip \u2014 image moves to the right column. *\/\n.pv-svc-row:nth-child(even) .pv-svc-row-img  { order:2; }\n.pv-svc-row:nth-child(even) .pv-svc-row-text { order:1; }\n\n.pv-svc-row-img img {\n  display:block;\n  width:100%; height:auto;\n  border-radius:4px;\n  box-shadow:0 24px 50px rgba(34,52,75,.14);\n  aspect-ratio:4\/3;\n  object-fit:cover;\n}\n\n.pv-svc-row-text { padding:8px 0; }\n.pv-svc-row-num {\n  font-family:'Cormorant Garamond','Playfair Display',serif !important;\n  font-size:64px !important;\n  font-weight:400 !important;\n  font-style:italic !important;\n  color:rgba(201,168,76,.55) !important;\n  line-height:1 !important;\n  margin:0 0 16px !important;\n}\n.pv-svc-row-title {\n  font-family:'Cormorant Garamond','Playfair Display',serif !important;\n  font-size:clamp(28px,3.4vw,44px) !important;\n  font-weight:400 !important;\n  color:#22344B !important;\n  margin:0 0 18px !important;\n  line-height:1.1 !important;\n}\n.pv-svc-row-title em { font-style:italic !important; color:#C9A84C !important; }\n.pv-svc-row .pv-svc-divider { margin:0 0 22px !important; }\n.pv-svc-row-body {\n  font-size:16px !important;\n  color:rgba(34,52,75,.75) !important;\n  line-height:1.85 !important;\n  margin:0 !important;\n  max-width:520px;\n}\n\n@media(max-width:900px) {\n  .pv-svc-rows { gap:70px; margin-top:20px; }\n  .pv-svc-row {\n    grid-template-columns:1fr;\n    gap:28px;\n  }\n  \/* Mobile: text first (number + title + body), image SECOND for every\n     row. Reads better on small screens \u2014 user gets the context before\n     the visual instead of having to scroll past the photo first. *\/\n  .pv-svc-row:nth-child(even) .pv-svc-row-text,\n  .pv-svc-row .pv-svc-row-text { order:1; }\n  .pv-svc-row:nth-child(even) .pv-svc-row-img,\n  .pv-svc-row .pv-svc-row-img  { order:2; }\n  .pv-svc-row-num { font-size:52px !important; margin-bottom:10px !important; }\n}\n\n\/* \u2500\u2500 CTA \u2500\u2500 *\/\n\/* Bottom padding 200px (was 120px) for extra breathing room before the\n   site footer \u2014 Davy wanted +80px after the agent photos sit visually\n   close to the footer's gold separator. *\/\n\/* 2026-05-02 \u2014 boxed instead of full-width per Davy. The grey now\n   sits as a centered card up to 1200px, with breathing space on the\n   sides and rounded corners so it reads as its own block instead of\n   a page-wide stripe. *\/\n.pv-svc-cta {\n  background:#EEEEE8;\n  padding:120px 40px;\n  max-width:1200px;\n  margin:0 auto 80px;\n  border-radius:10px;\n}\n.pv-svc-cta-inner { text-align:center; max-width:700px; margin:0 auto; }\n.pv-svc-cta-title { font-family:'Cormorant Garamond','Playfair Display',serif !important; font-size:clamp(36px,5vw,58px) !important; font-weight:400 !important; color:#22344B !important; margin:0 0 10px !important; line-height:1.1 !important; }\n.pv-svc-cta-sub { font-size:16px !important; color:rgba(34,52,75,.65) !important; line-height:1.75 !important; margin:0 auto 44px !important; max-width:520px; }\n.pv-svc-cta-actions { display:flex; gap:16px; justify-content:center; flex-wrap:wrap; margin-bottom:56px; }\n.pv-svc-btn-primary { display:inline-block !important; padding:16px 36px !important; background:#C9A84C !important; color:#22344B !important; font-family:'Inter',sans-serif !important; font-size:11px !important; font-weight:700 !important; letter-spacing:.18em !important; text-transform:uppercase !important; text-decoration:none !important; border-radius:50px !important; border:none !important; -webkit-appearance:none !important; box-shadow:none !important; outline:none !important; cursor:pointer !important; transition:background .2s !important; }\n.pv-svc-btn-primary:hover,.pv-svc-btn-primary:focus,.pv-svc-btn-primary:active { background:#b8933f !important; color:#22344B !important; box-shadow:none !important; outline:none !important; }\n.pv-svc-btn-secondary { display:inline-block !important; padding:16px 36px !important; background:transparent !important; color:#22344B !important; font-family:'Inter',sans-serif !important; font-size:11px !important; font-weight:700 !important; letter-spacing:.18em !important; text-transform:uppercase !important; text-decoration:none !important; border-radius:50px !important; border:1.5px solid #22344B !important; -webkit-appearance:none !important; box-shadow:none !important; outline:none !important; cursor:pointer !important; transition:background .2s,color .2s !important; }\n.pv-svc-btn-secondary:hover,.pv-svc-btn-secondary:focus,.pv-svc-btn-secondary:active { background:#22344B !important; color:#fff !important; box-shadow:none !important; outline:none !important; }\n\/* Agents *\/\n\/* \u2500\u2500 Agent photos \u2014 copied verbatim from snippet 15 (property-page agent\n   block) so Davy + Marina sit below the CTA buttons in the same visual\n   style as the single-property pages. Centred (via the wrapper) instead\n   of right-aligned, since the CTA above is centre-aligned. *\/\n.pv-svc-agent-photos {\n  display:flex;\n  gap:24px;\n  align-items:flex-start;\n  justify-content:center;\n  max-width:560px;\n  margin:0 auto;\n}\n.pv-agent-card { flex:1; max-width:240px; }\n.pv-agent-card--offset { margin-top:60px; }\n.pv-agent-photo {\n  aspect-ratio:3\/4; overflow:hidden;\n  background:rgba(34,52,75,.06);\n  margin-bottom:20px; position:relative;\n  display:flex; align-items:center; justify-content:center;\n}\n.pv-agent-initials {\n  position:absolute; inset:0;\n  display:flex; align-items:center; justify-content:center;\n  font-family:'Cormorant Garamond','Playfair Display',serif;\n  font-size:52px; font-weight:300;\n  color:rgba(201,168,76,.5); letter-spacing:.1em; z-index:0;\n}\n.pv-agent-photo img {\n  position:absolute; inset:0; width:100%; height:100%;\n  object-fit:cover; display:block;\n  filter:grayscale(20%);\n  transition:filter .4s ease, transform .5s ease; z-index:1;\n}\n.pv-agent-card:hover .pv-agent-photo img {\n  filter:grayscale(0%); transform:scale(1.03);\n}\n.pv-agent-info { text-align:center; }\n.pv-agent-name {\n  font-family:'Cormorant Garamond','Playfair Display',serif !important;\n  font-size:22px !important; font-weight:500 !important;\n  color:#22344B !important; margin-bottom:4px !important;\n}\n.pv-agent-role {\n  font-size:12px !important; color:rgba(34,52,75,.55) !important;\n  margin-bottom:6px !important;\n}\n.pv-agent-langs {\n  font-size:11px !important; font-weight:600 !important;\n  letter-spacing:.15em !important; color:#C9A84C !important;\n}\n\n\/* Slide-in for the photo strip (from the right) \u2014 mirrors the\n   property-page animation. The IIFE at the bottom of this snippet\n   adds .pv-visible when the strip enters the viewport. *\/\n.pv-svc-agent-photos.pv-agent-photos-animate {\n  opacity:0;\n  transform:translateX(40px);\n  transition:opacity .7s ease .2s, transform .7s ease .2s;\n}\n.pv-svc-agent-photos.pv-agent-photos-animate.pv-visible {\n  opacity:1; transform:translateX(0);\n}\n\/* Per-card stagger \u2014 JS sets transition-delay based on index. *\/\n.pv-svc-agent-photos .pv-agent-card {\n  opacity:0;\n  transform:translateY(20px);\n  transition:opacity .7s cubic-bezier(.25,.46,.45,.94),\n             transform .7s cubic-bezier(.25,.46,.45,.94);\n}\n.pv-svc-agent-photos .pv-agent-card.pv-visible {\n  opacity:1; transform:translateY(0);\n}\n\n@media(max-width:600px) {\n  .pv-svc-agent-photos { gap:16px; max-width:480px; }\n  .pv-agent-card--offset { margin-top:40px; }\n  .pv-agent-name { font-size:20px !important; }\n}\n\n\/* \u2500\u2500 Intro spacing on mobile \u2500\u2500 *\/\n@media(max-width:768px){\n  .pv-svc-intro,.pv-svc-services { padding:70px 0; }\n  .pv-svc-cta { padding:70px 24px; margin:0 16px 60px; border-radius:8px; }\n}\n\n\/* \u2500\u2500 Scroll reveal animations (self-contained, dynamic) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   Same look-and-feel as the property page (snippet 15). The IIFE near\n   the bottom of this file toggles .pv-visible on\/off based on viewport\n   intersection \u2014 so revealing happens scroll-down AND reverse-fades\n   on scroll-up. Curve + duration tuned for \"smooth, slow\" per Davy. *\/\n.pv-svc-page .pv-reveal,\n.pv-svc-page .pv-reveal-left,\n.pv-svc-page .pv-reveal-right,\n.pv-svc-page .pv-reveal-scale,\n.pv-svc-page .pv-reveal-fade {\n  opacity:0;\n  will-change:opacity, transform;\n  transition:opacity 1s cubic-bezier(0.22, 0.61, 0.36, 1),\n             transform 1s cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n.pv-svc-page .pv-reveal       { transform:translateY(36px); }\n.pv-svc-page .pv-reveal-left  { transform:translateX(-30px); }\n.pv-svc-page .pv-reveal-right { transform:translateX(30px); }\n.pv-svc-page .pv-reveal-scale { transform:scale(.94) translateY(20px); }\n\/* Fade-only: gentle opacity-only entrance, no movement (used for the\n   row images and the \"Everything you need\" headline so the page\n   feels less restless when scrolling through the 8 rows). *\/\n.pv-svc-page .pv-reveal-fade  { transform:none; transition:opacity 1.2s cubic-bezier(0.22, 0.61, 0.36, 1); }\n.pv-svc-page .pv-reveal.pv-visible,\n.pv-svc-page .pv-reveal-left.pv-visible,\n.pv-svc-page .pv-reveal-right.pv-visible,\n.pv-svc-page .pv-reveal-scale.pv-visible,\n.pv-svc-page .pv-reveal-fade.pv-visible {\n  opacity:1;\n  transform:none;\n}\n\n\/* \u2500\u2500 Scroll-bound word reveal for both H2 headlines (CTA + Services\n   grid). Mirrors the property-page \"You might also love\" pattern from\n   snippet 15. The .word-dark span stays navy. The .word-reveal half\n   splits into per-character spans (JS at the bottom) that fade grey\n   \u2192 navy as scroll progresses \u2014 reverses on scroll-back-up. *\/\n.pv-svc-cta-title .word-dark,\n.pv-svc-section-title .word-dark   { color:#22344B !important; display:inline; }\n.pv-svc-cta-title .word-reveal,\n.pv-svc-section-title .word-reveal { display:inline; }\n.pv-svc-cta-title .char-reveal,\n.pv-svc-section-title .char-reveal {\n  display:inline;\n  color:#b3b3b3;\n  transition:color .5s ease;\n}\n.pv-svc-cta-title .char-reveal.is-revealed,\n.pv-svc-section-title .char-reveal.is-revealed { color:#22344B; }\n<\/style>\n\n<!-- Inject centered white logo into the header on this page only. The\n     header is now position:absolute over the dark video, so we use the\n     White-V3 variant. Mirrors the property-page injection pattern. -->\n<script>\n(function(){\n  if (!document.body.classList.contains('page-id-622')) return;\n  var header = document.querySelector('header[data-elementor-type=\"header\"]');\n  if (!header || header.querySelector('.pura-header-logo')) return;\n  header.style.position = 'absolute';\n  var logo = document.createElement('a');\n  var __pvLp = window.location.pathname.split('\/').filter(Boolean);\n  logo.href = (__pvLp[0] && \/^(de|ru|en)$\/.test(__pvLp[0])) ? '\/' + __pvLp[0] + '\/' : '\/';\n  logo.className = 'pura-header-logo';\n  logo.innerHTML = '<img decoding=\"async\" src=\"https:\/\/puravida-realestate.es\/wp-content\/uploads\/2026\/03\/Pura-Vida-Real-Estate-Logo-FINAL-White-w4.png\">';\n  header.appendChild(logo);\n})();\n<\/script>\n\n<!-- Agent photo-strip animations \u2014 mirrors the property-page pattern from\n     snippet 15: the strip slides in from the right when it enters the\n     viewport, and each card fades up with a staggered delay. Re-triggers\n     on scroll-back-up so the animation feels alive. -->\n<script>\n(function(){\n  \/\/ Strip slide-in\n  var strips = document.querySelectorAll('.pv-svc-agent-photos.pv-agent-photos-animate');\n  if (strips.length) {\n    var stripIO = new IntersectionObserver(function(entries){\n      entries.forEach(function(entry){\n        entry.target.classList.toggle('pv-visible', entry.isIntersecting);\n      });\n    }, { threshold: 0.1, rootMargin: '0px 0px -100px 0px' });\n    strips.forEach(function(el){ stripIO.observe(el); });\n  }\n  \/\/ Per-card stagger\n  var cards = document.querySelectorAll('.pv-svc-agent-photos .pv-agent-card');\n  if (cards.length) {\n    cards.forEach(function(card, i){\n      card.style.transitionDelay = (i * 300) + 'ms';\n    });\n    var cardIO = new IntersectionObserver(function(entries){\n      entries.forEach(function(entry){\n        entry.target.classList.toggle('pv-visible', entry.isIntersecting);\n      });\n    }, { threshold: 0.1, rootMargin: '0px 0px -180px 0px' });\n    cards.forEach(function(card){ cardIO.observe(card); });\n  }\n})();\n<\/script>\n\n<!-- Scroll-position-bound word reveal for both H2s (CTA + Services grid).\n     Same pattern as snippet 15. Each character in .word-reveal fades\n     grey \u2192 navy as the user scrolls past, and reverts on scroll-back-up\n     because we read getBoundingClientRect on every scroll. -->\n<script>\n(function(){\n  function init(headlineId) {\n    var headline = document.getElementById(headlineId);\n    if (!headline) return;\n    var wordReveal = headline.querySelector('.word-reveal');\n    if (!wordReveal || wordReveal.dataset.pvSplit === '1') return;\n    var text = wordReveal.textContent;\n    wordReveal.innerHTML = text.split('').map(function(ch, i){\n      var d = (i * 0.04).toFixed(3);\n      return '<span class=\"char-reveal\" style=\"transition-delay:' + d + 's\">' +\n             (ch === ' ' ? '&nbsp;' : ch) + '<\/span>';\n    }).join('');\n    wordReveal.dataset.pvSplit = '1';\n    var charSpans = wordReveal.querySelectorAll('.char-reveal');\n    function update() {\n      var rect = headline.getBoundingClientRect();\n      var start = window.innerHeight * 0.55;\n      var end   = window.innerHeight * 0.25;\n      var progress = Math.min(1, Math.max(0, (start - rect.top) \/ (start - end)));\n      charSpans.forEach(function(span, i){\n        if (progress > (i \/ charSpans.length) * 0.3) {\n          span.classList.add('is-revealed');\n        } else {\n          span.classList.remove('is-revealed');\n        }\n      });\n    }\n    window.addEventListener('scroll', update, { passive: true });\n    update();\n  }\n  init('services-cta-headline');\n})();\n<\/script>\n\n<!-- Dynamic scroll-reveal for .pv-reveal\/.pv-reveal-left\/.pv-reveal-right\n     elements inside .pv-svc-page. IntersectionObserver toggles\n     .pv-visible on\/off so the animation re-triggers when the user\n     scrolls back up \u2014 every entrance + exit is animated. -->\n<script>\n(function(){\n  function initReveal() {\n    var els = document.querySelectorAll(\n      '.pv-svc-page .pv-reveal, .pv-svc-page .pv-reveal-left, ' +\n      '.pv-svc-page .pv-reveal-right, .pv-svc-page .pv-reveal-scale, ' +\n      '.pv-svc-page .pv-reveal-fade'\n    );\n    if (!els.length) return;\n    if (!('IntersectionObserver' in window)) {\n      els.forEach(function(el){ el.classList.add('pv-visible'); });\n      return;\n    }\n    var io = new IntersectionObserver(function(entries){\n      entries.forEach(function(entry){\n        \/\/ Toggle so it re-triggers when scrolling back up.\n        entry.target.classList.toggle('pv-visible', entry.isIntersecting);\n      });\n    }, { threshold: 0.12, rootMargin: '0px 0px -80px 0px' });\n    els.forEach(function(el){ io.observe(el); });\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initReveal);\n  } else {\n    initReveal();\n  }\n})();\n<\/script>\n\n<!-- Count-up animation for the 1,300+ stat card. Counts from 0 to the\n     data-target value over ~1.6s with an ease-out curve when the card\n     enters the viewport. Resets to 0 on exit so it re-counts when the\n     user scrolls back into view (matches the rest of the dynamic\n     reveal pattern on this page). -->\n<script>\n(function(){\n  function init() {\n    var els = document.querySelectorAll('.pv-svc-intro-card-count');\n    if (!els.length || !('IntersectionObserver' in window)) return;\n\n    var DURATION = 2800; \/\/ ms \u2014 Davy wanted it noticeably slower\n    function animate(el) {\n      var target = parseInt(el.dataset.target, 10) || 0;\n      var startTime = null;\n      function step(ts) {\n        if (!startTime) startTime = ts;\n        var p = Math.min(1, (ts - startTime) \/ DURATION);\n        \/\/ Ease-out cubic \u2014 fast start, gentle finish.\n        var eased = 1 - Math.pow(1 - p, 3);\n        var val = Math.round(eased * target);\n        el.textContent = val.toLocaleString('en-US');\n        if (p < 1 && el.dataset.animating === '1') {\n          requestAnimationFrame(step);\n        }\n      }\n      el.dataset.animating = '1';\n      requestAnimationFrame(step);\n    }\n\n    var io = new IntersectionObserver(function(entries){\n      entries.forEach(function(entry){\n        var el = entry.target;\n        if (entry.isIntersecting) {\n          \/\/ (Re-)start from 0\n          el.dataset.animating = '0';     \/\/ cancel any in-flight rAF loop\n          el.textContent = '0';\n          \/\/ Tiny defer so cancellation lands before new start\n          setTimeout(function(){ animate(el); }, 30);\n        } else {\n          \/\/ Stop and reset when scrolled out of view\n          el.dataset.animating = '0';\n          el.textContent = '0';\n        }\n      });\n    }, { threshold: 0.5 });\n\n    els.forEach(function(el){ io.observe(el); });\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n})();\n<\/script>\n\n\n\t\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<div class=\"elementor-element elementor-element-932822d e-flex e-con-boxed e-con e-parent\" data-id=\"932822d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-72e095b elementor-widget elementor-widget-spacer\" data-id=\"72e095b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\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>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-622","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/puravida-realestate.es\/de\/wp-json\/wp\/v2\/pages\/622","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/puravida-realestate.es\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/puravida-realestate.es\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/puravida-realestate.es\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/puravida-realestate.es\/de\/wp-json\/wp\/v2\/comments?post=622"}],"version-history":[{"count":50,"href":"https:\/\/puravida-realestate.es\/de\/wp-json\/wp\/v2\/pages\/622\/revisions"}],"predecessor-version":[{"id":4759,"href":"https:\/\/puravida-realestate.es\/de\/wp-json\/wp\/v2\/pages\/622\/revisions\/4759"}],"wp:attachment":[{"href":"https:\/\/puravida-realestate.es\/de\/wp-json\/wp\/v2\/media?parent=622"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}