{"id":20143,"date":"2026-06-19T12:24:42","date_gmt":"2026-06-19T11:24:42","guid":{"rendered":"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/property-calculator"},"modified":"2026-07-02T09:31:44","modified_gmt":"2026-07-02T08:31:44","slug":"property-calculator","status":"publish","type":"page","link":"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/property-calculator","title":{"rendered":"Property Calculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"20143\" class=\"elementor elementor-20143 elementor-17477\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-95f7c5e e-con-full e-flex e-con e-parent\" data-id=\"95f7c5e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t<div class=\"elementor-element elementor-element-18b801d e-con-full empty-boxes e-flex e-con e-child\" data-id=\"18b801d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a4cce64 e-con-full e-flex e-con e-child\" data-id=\"a4cce64\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-64e9863 elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"64e9863\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation_mobile&quot;:&quot;none&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Expert Advice on Buying, Selling &amp; Spanish <span class=\"rebekka_style\">Laws<\/span><\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-24b4fac e-con-full empty-boxes e-flex e-con e-child\" data-id=\"24b4fac\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0dd5328 e-con-full e-flex e-con e-parent\" data-id=\"0dd5328\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t<div class=\"elementor-element elementor-element-2dc738d e-con-full empty-boxes e-flex e-con e-child\" data-id=\"2dc738d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fcffcfc e-con-full e-flex e-con e-child\" data-id=\"fcffcfc\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dc63fbe elementor-nav-menu--dropdown-none main-menu elementor-widget elementor-widget-nav-menu\" data-id=\"dc63fbe\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;layout&quot;:&quot;horizontal&quot;,&quot;submenu_icon&quot;:{&quot;value&quot;:&quot;&lt;svg aria-hidden=\\&quot;true\\&quot; class=\\&quot;e-font-icon-svg e-fas-caret-down\\&quot; viewBox=\\&quot;0 0 320 512\\&quot; xmlns=\\&quot;http:\\\/\\\/www.w3.org\\\/2000\\\/svg\\&quot;&gt;&lt;path d=\\&quot;M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\\&quot;&gt;&lt;\\\/path&gt;&lt;\\\/svg&gt;&quot;,&quot;library&quot;:&quot;fa-solid&quot;}}\" data-widget_type=\"nav-menu.default\">\n\t\t\t\t\t\t\t\t<nav aria-label=\"Menu\" class=\"elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-background e--animation-fade\">\n\t\t\t\t<ul id=\"menu-1-dc63fbe\" class=\"elementor-nav-menu\"><li class=\"menu-item menu-item-type-taxonomy menu-item-object-guide-topic menu-item-16201\"><a href=\"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/topic\/buying-guide\" class=\"elementor-item\">Buying Guide<\/a><\/li>\n<li class=\"menu-item menu-item-type-taxonomy menu-item-object-guide-topic menu-item-9454\"><a href=\"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/topic\/selling-guide\" class=\"elementor-item\">Selling Guide<\/a><\/li>\n<li class=\"menu-item menu-item-type-taxonomy menu-item-object-guide-topic menu-item-9452\"><a href=\"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/topic\/legal-guide\" class=\"elementor-item\">Legal Guide<\/a><\/li>\n<li class=\"menu-item menu-item-type-taxonomy menu-item-object-guide-topic menu-item-9451\"><a href=\"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/topic\/finance-guide\" class=\"elementor-item\">Finance Guide<\/a><\/li>\n<li class=\"menu-item menu-item-type-taxonomy menu-item-object-guide-topic menu-item-9449\"><a href=\"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/topic\/area-guide\" class=\"elementor-item\">Area Guide<\/a><\/li>\n<li class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-9455\"><a href=\"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/blog\" class=\"elementor-item\">Blogs<\/a><\/li>\n<li class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-9420\"><a href=\"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/property-calculator\" class=\"elementor-item\">Property Calculator<\/a><\/li>\n<\/ul>\t\t\t<\/nav>\n\t\t\t\t\t\t<nav class=\"elementor-nav-menu--dropdown elementor-nav-menu__container\" aria-hidden=\"true\">\n\t\t\t\t<ul id=\"menu-2-dc63fbe\" class=\"elementor-nav-menu\"><li class=\"menu-item menu-item-type-taxonomy menu-item-object-guide-topic menu-item-16201\"><a href=\"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/topic\/buying-guide\" class=\"elementor-item\" tabindex=\"-1\">Buying Guide<\/a><\/li>\n<li class=\"menu-item menu-item-type-taxonomy menu-item-object-guide-topic menu-item-9454\"><a href=\"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/topic\/selling-guide\" class=\"elementor-item\" tabindex=\"-1\">Selling Guide<\/a><\/li>\n<li class=\"menu-item menu-item-type-taxonomy menu-item-object-guide-topic menu-item-9452\"><a href=\"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/topic\/legal-guide\" class=\"elementor-item\" tabindex=\"-1\">Legal Guide<\/a><\/li>\n<li class=\"menu-item menu-item-type-taxonomy menu-item-object-guide-topic menu-item-9451\"><a href=\"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/topic\/finance-guide\" class=\"elementor-item\" tabindex=\"-1\">Finance Guide<\/a><\/li>\n<li class=\"menu-item menu-item-type-taxonomy menu-item-object-guide-topic menu-item-9449\"><a href=\"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/topic\/area-guide\" class=\"elementor-item\" tabindex=\"-1\">Area Guide<\/a><\/li>\n<li class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-9455\"><a href=\"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/blog\" class=\"elementor-item\" tabindex=\"-1\">Blogs<\/a><\/li>\n<li class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-9420\"><a href=\"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/property-calculator\" class=\"elementor-item\" tabindex=\"-1\">Property Calculator<\/a><\/li>\n<\/ul>\t\t\t<\/nav>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-be74d8c e-con-full empty-boxes e-flex e-con e-child\" data-id=\"be74d8c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8d65d55 e-con-full e-flex e-con e-parent\" data-id=\"8d65d55\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t<div class=\"elementor-element elementor-element-f2ec262 e-con-full empty-boxes e-flex e-con e-child\" data-id=\"f2ec262\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1020bc7 e-con-full e-flex e-con e-child\" data-id=\"1020bc7\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1a18fc7 elementor-widget elementor-widget-html\" data-id=\"1a18fc7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"mojoTC\">\r\n  <div class=\"tc-card\" id=\"tc_card\">\r\n\r\n    <div class=\"tc-head\">\r\n      <h2>Property cost, tax &amp; ROI <span class=\"tc-script\">calculator<\/span><\/h2>\r\n      <p class=\"tc-sub\">Work out the real cost, taxes and after-tax return of buying, owning, renting out, selling, financing and co-owning property on the Costa del Sol &amp; Mallorca. Instant and free to use.<\/p>\r\n      <p class=\"tc-sub2\">Every Spanish tax in one place \u2014 <strong>ITP, IBI, non-resident tax, capital gains &amp; the dual-method plusval\u00eda<\/strong> \u2014 plus your <strong>home-country tax<\/strong> and full <strong>before- and after-tax ROI<\/strong>, whether you're a buyer, owner, seller or Mojo Sharing co-owner.<\/p>\r\n      <div class=\"tc-badges\">\r\n        <span class=\"tc-badge\"><b>4<\/b> buyer journeys<\/span>\r\n        <span class=\"tc-badge\"><b>7<\/b> calculators<\/span>\r\n        <span class=\"tc-badge\"><b>20+<\/b> Spanish taxes &amp; costs<\/span>\r\n        <span class=\"tc-badge\"><b>17<\/b> municipalities<\/span>\r\n        <span class=\"tc-badge\"><b>\u2713<\/b> before- &amp; after-tax ROI<\/span>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"tc-tophead\">\r\n      <div class=\"tc-stephead\"><span class=\"tc-num\">1<\/span>Where are you in your journey?<\/div>\r\n      <button type=\"button\" class=\"tc-reset\" id=\"resetBtn\">Reset all fields<\/button>\r\n    <\/div>\r\n    <div class=\"tc-pcards\" id=\"tcPersona\">\r\n      <button type=\"button\" class=\"tc-pcard is-on\" data-persona=\"buyer\">\r\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 12 12 5l8 7\"\/><path d=\"M6 11v9h12v-9\"\/><\/svg>\r\n        <span class=\"tc-pc-t\">I'm buying<\/span>\r\n        <span class=\"tc-pc-s\">Purchase costs, running costs, mortgage, rental income, tax &amp; ROI<\/span>\r\n      <\/button>\r\n      <button type=\"button\" class=\"tc-pcard\" data-persona=\"sell\">\r\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 7h11l6 6-7 7-6-6V7z\"\/><circle cx=\"8.5\" cy=\"11.5\" r=\"1.4\"\/><\/svg>\r\n        <span class=\"tc-pc-t\">I want to sell<\/span>\r\n        <span class=\"tc-pc-s\">Capital Gains Tax, plusval\u00eda &amp; net proceeds<\/span>\r\n      <\/button>\r\n      <button type=\"button\" class=\"tc-pcard\" data-persona=\"rentout\">\r\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"8\" cy=\"9\" r=\"4\"\/><path d=\"M11 12l8 8M16 17l2 2M14 19l2 2\"\/><\/svg>\r\n        <span class=\"tc-pc-t\">I want to rent out<\/span>\r\n        <span class=\"tc-pc-s\">Rental income, running costs, tax &amp; ROI<\/span>\r\n      <\/button>\r\n      <button type=\"button\" class=\"tc-pcard\" data-persona=\"coowner\">\r\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"9\" cy=\"9\" r=\"3\"\/><circle cx=\"16.5\" cy=\"10\" r=\"2.3\"\/><path d=\"M4 19c0-3 2.5-5 5-5s5 2 5 5\"\/><path d=\"M14.5 19c0-2 .8-3.2 2-3.6\"\/><\/svg>\r\n        <span class=\"tc-pc-t\">Mojo Sharing co-owner<\/span>\r\n        <span class=\"tc-pc-s\">Co-ownership economics &amp; availability tax<\/span>\r\n      <\/button>\r\n    <\/div>\r\n\r\n    <div class=\"tc-region\" id=\"tcRegionWrap\">\r\n      <span class=\"tc-region-label\">Region<\/span>\r\n      <div class=\"tc-seg\" id=\"tcRegion\">\r\n        <button type=\"button\" class=\"tc-seg-btn is-on\" data-region=\"AND\">Andaluc\u00eda<\/button>\r\n        <button type=\"button\" class=\"tc-seg-btn\" data-region=\"BAL\">Balearics \u00b7 Mallorca<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"tc-stephead\" id=\"tcJourneyHead\"><span class=\"tc-num\">2<\/span>Your buying journey<\/div>\r\n    <div class=\"tc-steprail\" id=\"tcSteps\"><\/div>\r\n\r\n    <!-- BUYING -->\r\n    <section class=\"tc-panel\" data-panel=\"buy\">\r\n      <h3 class=\"tc-ptitle\">What it costs to buy property in Spain \u2014 taxes &amp; fees on top of the price<\/h3>\r\n      <div class=\"tc-grid\">\r\n        <div class=\"tc-field\"><label>Purchase price (\u20ac)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money tc-link-price\" id=\"b_price\" value=\"650.000\"><\/div>\r\n        <div class=\"tc-field\"><label>Property type<\/label><select id=\"b_type\">\r\n          <option value=\"resale\">Resale (second-hand)<\/option>\r\n          <option value=\"new\">New build (from developer)<\/option>\r\n          <option value=\"plot_co\">Plot (from company)<\/option>\r\n          <option value=\"plot_coin\">Plot (from company - inactive)<\/option>\r\n          <option value=\"plot_priv\">Plot (from private)<\/option>\r\n        <\/select><\/div>\r\n        <div class=\"tc-field\"><label>Furniture share in the price (\u20ac) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"If part of the purchase price is the existing\/used furniture, enter that share. It is taxed at 4% ITP (movable goods) instead of the property rate, so your transfer tax falls proportionally. Same 4% in Andaluc\u00eda &amp; the Balearics.\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"fn_old\" value=\"0\"><\/div>\r\n        <div class=\"tc-field\"><label>New furniture package \u2014 incl. IVA (\u20ac) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"A brand-new furniture &amp; interior package delivered turnkey by the Mojo Architecture &amp; Design Studio \u2014 our White Gloves concept. Enter the price including 21% IVA; ask the studio for a quote.\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"fn_new\" value=\"0\"><\/div>\r\n        <div class=\"tc-field\"><label>Legal service<\/label><select id=\"b_legal\">\r\n          <option value=\"std\">Standard - 1,0% of Purchase price + IVA<\/option>\r\n          <option value=\"merit\">Mojo Legal fee - 10% Discount<\/option>\r\n        <\/select><\/div>\r\n        <div class=\"tc-field tc-check\"><label class=\"tc-switch\"><input type=\"checkbox\" id=\"b_mort\" checked><span>Buying with a mortgage<\/span><\/label><span class=\"tc-hint\">Adds ~0,5% for valuation, deed &amp; bank costs.<\/span><\/div>\r\n      <\/div>\r\n      <div class=\"tc-result\" id=\"b_out\"><\/div>\r\n    <\/section>\r\n\r\n    <!-- OWNING \/ RUNNING COSTS -->\r\n    <section class=\"tc-panel\" data-panel=\"own\">\r\n      <h3 class=\"tc-ptitle\">Operational costs \u2014 the annual cost of owning a Spanish property (IBI, community fees &amp; non-resident tax)<\/h3>\r\n      <div class=\"tc-grid\">\r\n        <div class=\"tc-field\"><label>Property value (\u20ac)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money tc-link-price\" id=\"o_value\" value=\"650.000\"><\/div>\r\n        <div class=\"tc-field\"><label>Cadastral value (\u20ac) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Valor catastral \u2014 the official value on your IBI receipt, usually well below market value. IBI and Modelo 210 are calculated from it.\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money tc-link-cad\" id=\"o_cad\" value=\"260.000\"><\/div>\r\n        <div class=\"tc-field\"><label>Municipality<\/label><select id=\"o_muni\"><\/select><\/div>\r\n        <div class=\"tc-field\"><label>IBI rate (% of cadastral) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Pre-filled from the municipality and editable. Each town hall sets the IBI rate yearly in its ordenanza fiscal \u2014 confirm the current rate with your adviser.\">?<\/span><\/label><div class=\"tc-inpct\"><input type=\"text\" inputmode=\"decimal\" id=\"o_ibirate\" value=\"0,45\"><span>%<\/span><\/div><\/div>\r\n        <div class=\"tc-field\"><label>Tax residency<\/label><select id=\"o_res\"><option value=\"resident\">Spanish tax resident<\/option><option value=\"eu\" selected>Non-resident \u00b7 EU\/EEA<\/option><option value=\"noneu\">Non-resident \u00b7 non-EU<\/option><option value=\"company\">Owned via company (SL) \u00b7 25%<\/option><\/select><\/div>\r\n        <div class=\"tc-field\"><label>Community fees (\u20ac\/yr)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money tc-own-op\" id=\"o_comm\" value=\"1.800\"><\/div>\r\n        <div class=\"tc-field\"><label>Property insurance (\u20ac\/yr)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money tc-own-op\" id=\"o_ins\" value=\"450\"><\/div>\r\n        <div class=\"tc-field\"><label>Water (\u20ac\/yr)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money tc-own-op\" id=\"o_water\" value=\"600\"><\/div>\r\n        <div class=\"tc-field\"><label>Electricity (\u20ac\/yr)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money tc-own-op\" id=\"o_elec\" value=\"1.500\"><\/div>\r\n        <div class=\"tc-field\"><label>Internet (\u20ac\/yr)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money tc-own-op\" id=\"o_internet\" value=\"600\"><\/div>\r\n        <div class=\"tc-field\"><label>Alarm (\u20ac\/yr)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money tc-own-op\" id=\"o_alarm\" value=\"300\"><\/div>\r\n        <div class=\"tc-field\"><label>Waste collection \/ basura (\u20ac\/yr) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Set yearly by each town hall, so it varies. The 150 \u20ac here is a typical Costa del Sol figure (M\u00e1laga's 2026 fee averages ~130 \u20ac) \u2014 replace it with your actual basura bill.\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money tc-own-op\" id=\"o_basura\" value=\"150\"><\/div>\r\n        <div class=\"tc-field\"><label>Other (\u20ac\/yr) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Anything else \u2014 gardener, pool service, property management \u2014 enter your own annual figure.\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money tc-own-op\" id=\"o_other\" value=\"0\"><\/div>\r\n      <\/div>\r\n      <div class=\"tc-expand\"><label class=\"tc-switch\"><input type=\"checkbox\" id=\"hc_on\"><span>Add home-country property tax (for non-Spanish tax residents)<\/span><\/label><\/div>\r\n      <div class=\"tc-extra\" id=\"hc_box\">\r\n        <div class=\"tc-grid\">\r\n          <div class=\"tc-field\"><label>Home country<\/label><select id=\"hc_country\"><option value=\"DK\">Denmark \u2014 Ejendomsv\u00e6rdiskat<\/option><option value=\"OT\">Other \u2014 enter amount<\/option><\/select><\/div>\r\n          <div class=\"tc-field\" id=\"hc_otherF\" style=\"display:none\"><label>Home-country property tax (\u20ac\/yr)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"hc_other\" value=\"0\"><\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"tc-expand\" id=\"omExpand\"><label class=\"tc-switch\"><input type=\"checkbox\" id=\"om_on\"><span>I already have a mortgage on this property<\/span><\/label><\/div>\r\n      <div class=\"tc-extra\" id=\"om_box\">\r\n        <div class=\"tc-grid\">\r\n          <div class=\"tc-field\"><label>Outstanding mortgage (\u20ac)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"o_loan\" value=\"0\"><\/div>\r\n          <div class=\"tc-field\"><label>Mortgage interest rate (%)<\/label><div class=\"tc-inpct\"><input type=\"text\" inputmode=\"decimal\" id=\"o_lrate\" value=\"3,0\"><span>%<\/span><\/div><\/div>\r\n          <div class=\"tc-field\"><label>Years remaining <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"How many years are left on the loan \u2014 used to split your annual payment into deductible interest and capital repayment.\">?<\/span><\/label><input type=\"number\" id=\"o_lterm\" value=\"20\" min=\"1\" max=\"40\" step=\"1\"><\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"tc-result\" id=\"o_out\"><\/div>\r\n    <\/section>\r\n\r\n    <!-- RENTING OUT -->\r\n    <section class=\"tc-panel\" data-panel=\"rent\">\r\n      <h3 class=\"tc-ptitle\">Holiday-rental income &amp; after-tax return on the Costa del Sol \u2014 with Mojo Rentals<\/h3>\r\n      <div class=\"tc-grid\">\r\n        <div class=\"tc-field\"><label id=\"y_valLbl\">All-in purchase price (\u20ac) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Your total invested amount \u2014 purchase price plus purchase costs (and furniture) from the Purchase-cost step. The yield is calculated on this. Auto-filled.\">?<\/span><\/label><input type=\"text\" id=\"y_value\" class=\"tc-ro\" readonly><\/div>\r\n        <div class=\"tc-field\"><label>Running costs \u2014 deductible (\u20ac\/yr) <span class=\"tc-hint2\">pre-filled from Running costs<\/span> <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Operating costs apportioned to the let period. Formula: (annual operating costs + mortgage interest) \u00d7 rented-days share. Pre-filled from your Running-costs step; editable.\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"y_costs\" value=\"9.000\"><\/div>\r\n        <div class=\"tc-field\"><label>Income-tax basis <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Applied to your net rental profit (expenses deductible). EU\/EEA 19%; non-EU 24% \u2014 deductions now allowed too after National Court ruling 3630\/2025 (under appeal); a Spanish company (SL) pays 25% Impuesto sobre Sociedades.\">?<\/span><\/label><select id=\"y_tax\"><option value=\"19\" selected>Non-resident EU\/EEA \u2014 19%<\/option><option value=\"24\">Non-resident non-EU \u2014 24%<\/option><option value=\"25\">Company (SL) \u2014 25%<\/option><\/select><\/div>\r\n        <div class=\"tc-field\"><label>Average nightly rate <strong id=\"y_rateLbl\">220 \u20ac<\/strong> <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Mojo Rentals can provide a property-specific nightly-rate estimate based on location, size, quality and season.\">?<\/span><\/label><input type=\"range\" id=\"y_rate\" min=\"60\" max=\"600\" value=\"220\" step=\"10\"><span class=\"tc-hint\">Mojo Rentals can estimate this for your property.<\/span><\/div>\r\n        <div class=\"tc-field\"><label>Occupancy <strong id=\"y_occLbl\">62%<\/strong> <span class=\"tc-hint2\" id=\"y_nights\">\u2248 226 nights\/yr<\/span><\/label><input type=\"range\" id=\"y_occ\" min=\"20\" max=\"90\" value=\"62\" step=\"1\"><\/div>\r\n        <div class=\"tc-field\"><label>Mojo Rentals fee (+ 21% IVA)<\/label><select id=\"y_mgmt\"><option value=\"19\">19% + IVA<\/option><option value=\"21\" selected>21% + IVA<\/option><option value=\"23\">23% + IVA<\/option><option value=\"26\">26% + IVA<\/option><\/select><\/div>\r\n        <div class=\"tc-field tc-check\"><label class=\"tc-switch\"><input type=\"checkbox\" id=\"y_ai\" checked><span>Mojo AI \u2013 Dynamic Pricing (+13%)<\/span><\/label><span class=\"tc-hint\">Lifts revenue by ~13% versus a flat nightly rate.<\/span><\/div>\r\n      <\/div>\r\n      <div class=\"tc-compare\" id=\"y_compare\"><\/div>\r\n      <div class=\"tc-yields\" id=\"y_yields\"><\/div>\r\n      <div class=\"tc-result\" id=\"y_out\"><\/div>\r\n    <\/section>\r\n\r\n    <!-- SELLING -->\r\n    <section class=\"tc-panel\" data-panel=\"sell\">\r\n      <h3 class=\"tc-ptitle\">What you keep when you sell property in Spain \u2014 Capital Gains Tax &amp; Plusval\u00eda<\/h3>\r\n      <div class=\"tc-grid\">\r\n        <div class=\"tc-field\"><label>Asking price (\u20ac)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"s_ask\" value=\"900.000\"><\/div>\r\n        <div class=\"tc-field\"><label>Discount (%) <span class=\"tc-hint2\" id=\"s_discAmt\">\u2013 0 \u20ac<\/span><\/label><div class=\"tc-inpct\"><input type=\"text\" inputmode=\"decimal\" id=\"s_disc\" value=\"0\"><span>%<\/span><\/div><\/div>\r\n        <div class=\"tc-field\"><label>Selling price (\u20ac) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Asking price minus the discount \u2014 the actual sale price used for all calculations.\">?<\/span><\/label><input type=\"text\" id=\"s_sellprice\" readonly class=\"tc-ro\"><\/div>\r\n        <div class=\"tc-field\"><label>Furniture included in sale (\u20ac) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"If part of the sale price is furniture (movable goods), enter it. It is excluded from the property gain and Plusval\u00eda \u2014 those apply to the property only.\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"s_furn\" value=\"0\"><\/div>\r\n        <div class=\"tc-field\"><label>Original purchase price (\u20ac)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"s_buy\" value=\"650.000\"><\/div>\r\n        <div class=\"tc-field\"><label>Tax residency<\/label><select id=\"s_res\"><option value=\"resident\">Spanish tax resident<\/option><option value=\"eu\" selected>Non-resident \u00b7 EU\/EEA<\/option><option value=\"noneu\">Non-resident \u00b7 non-EU<\/option><\/select><\/div>\r\n        <div class=\"tc-field\"><label>Bought \u2014 month &amp; year<\/label><div class=\"tc-row2\"><select id=\"s_buyM\"><\/select><input type=\"number\" id=\"s_buyY\" value=\"2019\" min=\"1990\" max=\"2026\" step=\"1\"><\/div><\/div>\r\n        <div class=\"tc-field\"><label>Selling \u2014 month &amp; year<\/label><div class=\"tc-row2\"><select id=\"s_saleM\"><\/select><input type=\"number\" id=\"s_saleY\" value=\"2026\" min=\"1990\" max=\"2040\" step=\"1\"><\/div><\/div>\r\n        <div class=\"tc-field\"><label>Purchase costs \u2014 deductible (\u20ac) <span class=\"tc-hint2\" id=\"s_costsPct\"><\/span> <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Costs you paid when you bought \u2014 ITP\/IVA, notary, Land Registry and lawyer fees \u2014 which reduce your taxable gain.\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"s_costs\" value=\"55.000\"><\/div>\r\n        <div class=\"tc-field\"><label>Improvements \u2014 deductible (\u20ac) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Invoiced renovation or improvement works (not ordinary repairs) that increase the property's value \u2014 they also reduce the taxable gain.\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"s_impr\" value=\"15.000\"><\/div>\r\n        <div class=\"tc-field\"><label>Mojo sales package <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Mojo listing packages (2025 Sellers materials). The total commission on the sale price, plus 21% IVA, deductible from your gain. Move 5,0% \u00b7 Momentum 6,5% \u00b7 Maximise 7,5% \u2014 the 70-20-10 model, where most of the commission funds the buyer-agent side that actually sells your home.\">?<\/span><\/label><select id=\"s_agency\"><option value=\"5\">Move \u2014 5,0% + IVA<\/option><option value=\"6.5\" selected>Momentum \u2014 6,5% + IVA<\/option><option value=\"7.5\">Maximise \u2014 7,5% + IVA<\/option><\/select><\/div>\r\n        <div class=\"tc-field\"><label>Legal service <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Your lawyer's fee to handle the sale (conveyancing), plus 21% IVA \u2014 deductible from your gain. Mojo Legal fee is 10% off the standard 1,0%; Legal Merit Partnership members get 50% off.\">?<\/span><\/label><select id=\"s_legal\"><option value=\"std\">Standard - 1,0% of sale price + IVA<\/option><option value=\"merit\">Mojo Legal fee - 10% Discount<\/option><option value=\"merit50\">Mojo Legal Merit Partnership - 50% Discount<\/option><\/select><\/div>\r\n        <div class=\"tc-field\"><label>Outstanding mortgage to redeem (\u20ac) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"The balance still owed to the bank, repaid out of the sale proceeds. Not a tax \u2014 it just reduces the cash you walk away with.\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"s_loan\" value=\"0\"><\/div>\r\n        <div class=\"tc-field\"><label>Bank redemption \/ cancellation fee (\u20ac) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Early-repayment or cancellation fee charged by your bank to clear the mortgage on sale. Enter the amount your bank quotes.\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"s_redeem\" value=\"0\"><\/div>\r\n        <div class=\"tc-field\"><label>Total cadastral value (\u20ac) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Valor catastral total on your IBI receipt \u2014 used to work out the land's share of the gain for the real plusval\u00eda method.\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money tc-link-cad\" id=\"s_cadTot\" value=\"260.000\"><\/div>\r\n        <div class=\"tc-field\"><label>Cadastral land value (\u20ac) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Valor catastral del suelo \u2014 the land portion on your IBI receipt. Drives both plusval\u00eda methods. Left blank we estimate 45% of the total cadastral value.\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"s_land\" value=\"110.000\"><\/div>\r\n        <div class=\"tc-field\"><label>Plusval\u00eda municipality<\/label><select id=\"s_plusMuni\"><\/select><\/div>\r\n        <div class=\"tc-field\"><label>Plusval\u00eda rate (%) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Pre-filled from the municipality and editable. Each town hall sets the plusval\u00eda tipo yearly (maximum 30%) \u2014 confirm the current rate with your adviser.\">?<\/span><\/label><div class=\"tc-inpct\"><input type=\"text\" inputmode=\"decimal\" id=\"s_plusRate\" value=\"29\"><span>%<\/span><\/div><\/div>\r\n      <\/div>\r\n      <div class=\"tc-plusbox\" id=\"s_plusBox\"><\/div>\r\n      <div class=\"tc-proj\">\r\n        <div class=\"tc-proj-head\"><span class=\"tc-proj-title\">Sell now \u2014 or hold longer?<\/span><span class=\"tc-proj-val\">Hold <strong id=\"s_holdLbl\">0 years<\/strong> \u00b7 growth <strong id=\"s_grLbl\">4 %\/yr<\/strong><\/span><\/div>\r\n        <div class=\"tc-sliders\"><div><label>Hold a further\u2026 <strong id=\"s_holdLbl2\">0 years<\/strong><\/label><input type=\"range\" id=\"s_hold\" min=\"0\" max=\"15\" value=\"0\" step=\"1\"><\/div><div><label>Assumed appreciation <strong id=\"s_grLbl2\">4 %\/yr<\/strong><\/label><input type=\"range\" id=\"s_growth\" min=\"0\" max=\"8\" value=\"4\" step=\"0.5\"><\/div><\/div>\r\n      <\/div>\r\n      <div class=\"tc-result\" id=\"s_out\"><\/div>\r\n    <\/section>\r\n\r\n    <!-- MORTGAGE -->\r\n    <section class=\"tc-panel\" data-panel=\"mort\">\r\n      <h3 class=\"tc-ptitle\">Spanish mortgage for non-residents \u2014 monthly payment, down payment &amp; interest<\/h3>\r\n      <div class=\"tc-grid\">\r\n        <div class=\"tc-field\"><label>Property price (\u20ac)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money tc-link-price\" id=\"m_price\" value=\"650.000\"><\/div>\r\n        <div class=\"tc-field\"><label>Loan-to-value <strong id=\"m_ltvLbl\">70%<\/strong><\/label><input type=\"range\" id=\"m_ltv\" min=\"0\" max=\"80\" value=\"70\" step=\"5\"><span class=\"tc-hint\">Non-residents typically borrow up to 70%. Slide to 0% for a cash purchase.<\/span><\/div>\r\n        <div class=\"tc-field\"><label>Interest rate (%) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"3-month Eur\u00edbor \u2248 2,8% (June 2026) plus the bank's margin. Most non-resident mortgages are fixed or Eur\u00edbor-linked.\">?<\/span><\/label><div class=\"tc-inpct\"><input type=\"text\" inputmode=\"decimal\" id=\"m_rate\" value=\"3,6\"><span>%<\/span><\/div><\/div>\r\n        <div class=\"tc-field\"><label>Term (years)<\/label><input type=\"number\" id=\"m_term\" value=\"25\" min=\"5\" max=\"40\" step=\"1\"><span class=\"tc-hint\">The loan must be fully repaid by age 75.<\/span><\/div>\r\n      <\/div>\r\n      <div class=\"tc-result\" id=\"m_out\"><\/div>\r\n    <\/section>\r\n\r\n    <!-- CO-OWNERSHIP -->\r\n    <section class=\"tc-panel\" data-panel=\"coown\">\r\n      <h3 class=\"tc-ptitle\">Mojo Sharing co-ownership \u2014 own a Costa del Sol villa for an eighth<\/h3>\r\n      <div class=\"tc-grid\">\r\n        <div class=\"tc-field\"><label>Share price \u2014 your 1\/8 (\u20ac)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"c_share\" value=\"175.000\"><\/div>\r\n        <div class=\"tc-field\"><label>Financed by Mojo Mortgage <strong id=\"c_finLbl\">80%<\/strong> <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Up to 80% of your share financed by Mojo Mortgage \u2014 24-hour approval, 15-year term.\">?<\/span><\/label><input type=\"range\" id=\"c_fin\" min=\"0\" max=\"80\" value=\"80\" step=\"5\"><\/div>\r\n        <div class=\"tc-field\"><label>Hold for <strong id=\"c_holdLbl\">7 years<\/strong><\/label><input type=\"range\" id=\"c_hold\" min=\"1\" max=\"15\" value=\"7\" step=\"1\"><\/div>\r\n        <div class=\"tc-field\"><label>Assumed appreciation <strong id=\"c_aprLbl\">5 %\/yr<\/strong> <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Compound annual growth applied to your share price (CAGR) \u2014 this is a projected value, not an IRR. Mojo Sharing cites historical Costa del Sol growth nearer 9,3%\/yr \u2014 move the slider to test it.\">?<\/span><\/label><input type=\"range\" id=\"c_apr\" min=\"0\" max=\"10\" value=\"5\" step=\"0.5\"><\/div>\r\n      <\/div>\r\n      <div class=\"tc-expand\"><label class=\"tc-switch\"><input type=\"checkbox\" id=\"cr_on\"><span>Rent out your weeks through Mojo Rentals (income)<\/span><\/label><\/div>\r\n      <div class=\"tc-extra\" id=\"cr_box\">\r\n        <div class=\"tc-grid\">\r\n          <div class=\"tc-field\"><label>Days to rent out \/ yr <span class=\"tc-hint2\">max 45<\/span><\/label><input type=\"number\" id=\"cr_days\" value=\"20\" min=\"0\" max=\"45\" step=\"1\"><\/div>\r\n          <div class=\"tc-field\"><label>Rental price per day (\u20ac)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"cr_rate\" value=\"350\"><\/div>\r\n          <div class=\"tc-field\"><label>Max to the common fund (\u20ac) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"20% of your rental goes to the shared house fund. Once the fund reaches this cap, that 20% comes back to you instead \u2014 so beyond the cap you keep 80% rather than 60%.\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"cr_cap\" value=\"2.000\"><\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"tc-expand\"><label class=\"tc-switch\"><input type=\"checkbox\" id=\"av_on\"><span>Danish company co-owner \u2014 add R\u00e5dighedsskat (or other-country tax)<\/span><\/label><\/div>\r\n      <div class=\"tc-extra\" id=\"av_box\">\r\n        <div class=\"tc-grid\">\r\n          <div class=\"tc-field\"><label>Home country<\/label><select id=\"av_country\"><option value=\"DK\">Denmark \u2014 R\u00e5dighedsskat<\/option><option value=\"OT\">Other \u2014 enter amount<\/option><\/select><\/div>\r\n          <div class=\"tc-field\" id=\"av_baseF\"><label>Availability tax base (\u20ac) <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Contact Mojo Sharing for the specific Sharing property's availability-tax base. Shown in euro (the underlying Danish figure is converted at 7,46 DKK\/EUR).\">?<\/span><\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"av_base\" value=\"1.190.000\"><\/div>\r\n          <div class=\"tc-field\" id=\"av_prateF\"><label>Personal income-tax rate <span class=\"tc-tip\" tabindex=\"0\" data-tip=\"Your personal income-tax rate in your home country, applied to the availability amount. Denmark: 37% (default) or 56% top bracket.\">?<\/span><\/label><select id=\"av_prate\"><option value=\"37\" selected>37% (standard)<\/option><option value=\"56\">56% (top bracket)<\/option><\/select><\/div>\r\n          <div class=\"tc-field\" id=\"av_wsumF\"><label>Summer weeks (0,50%\/wk) <span class=\"tc-hint2\">weeks 22\u201334<\/span><\/label><input type=\"number\" id=\"av_wsum\" value=\"2\" min=\"0\" max=\"6\" step=\"1\"><\/div>\r\n          <div class=\"tc-field\" id=\"av_wnonF\"><label>Non-summer weeks (0,25%\/wk) <span class=\"tc-hint2\">weeks 1\u201321 &amp; 35\u201352<\/span><\/label><input type=\"number\" id=\"av_wnon\" value=\"4\" min=\"0\" max=\"6\" step=\"1\"><\/div>\r\n          <div class=\"tc-field\" id=\"av_wrentF\"><label>Weeks let via Mojo Rentals <span class=\"tc-hint2\">exempt \u2014 no availability tax<\/span><\/label><input type=\"number\" id=\"av_wrent\" value=\"0\" min=\"0\" max=\"6\" step=\"1\"><\/div>\r\n          <div class=\"tc-field\" id=\"av_otherF\" style=\"display:none\"><label>Home-country availability tax (\u20ac\/yr)<\/label><input type=\"text\" inputmode=\"numeric\" class=\"tc-money\" id=\"av_other\" value=\"0\"><\/div>\r\n        <\/div>\r\n        <span class=\"tc-hint\" id=\"av_wtot\">Your 6 owned weeks \u2014 summer + non-summer + let weeks always total 6.<\/span>\r\n      <\/div>\r\n      <div class=\"tc-result\" id=\"c_out\"><\/div>\r\n      <div class=\"tc-expand\"><label class=\"tc-switch\"><input type=\"checkbox\" id=\"c_resale\"><span>Let Mojo handle the resale on exit (10.000 \u20ac + 5% + IVA)<\/span><\/label><span class=\"tc-hint\">If you'd rather not sell privately, Mojo markets &amp; sells your share \u2014 the fee shows below and is NOT counted in the projected gain above.<\/span><\/div>\r\n      <div class=\"tc-result\" id=\"c_out2\"><\/div>\r\n    <\/section>\r\n\r\n    <!-- OVERVIEW (full picture) -->\r\n    <section class=\"tc-panel\" data-panel=\"overview\">\r\n      <h3 class=\"tc-ptitle\">Your full picture \u2014 total cost, annual cashflow &amp; after-tax return<\/h3>\r\n      <div class=\"tc-result\" id=\"ov_out\"><\/div>\r\n    <\/section>\r\n\r\n    <!-- Step navigation -->\r\n    <div class=\"tc-nav\" id=\"tcNav\">\r\n      <button type=\"button\" class=\"tc-navbtn\" id=\"navBack\">\u2190 Back<\/button>\r\n      <span class=\"tc-navind\" id=\"navInd\"><\/span>\r\n      <button type=\"button\" class=\"tc-navbtn next\" id=\"navNext\">Next \u2192<\/button>\r\n    <\/div>\r\n\r\n    <!-- Live running summary -->\r\n    <div class=\"tc-summary\" id=\"tcSummary\"><\/div>\r\n\r\n    <!-- Lead capture (final step only) -->\r\n    <div class=\"tc-lead\" id=\"tcLead\">\r\n      <p class=\"tc-lead-h\">Want these figures by email? We'll send your full estimate.<\/p>\r\n      <div class=\"tc-lead-row\">\r\n        <input type=\"text\" id=\"tc_name\" placeholder=\"Full name\">\r\n        <input type=\"email\" id=\"tc_email\" placeholder=\"Email\">\r\n        <input type=\"tel\" id=\"tc_mobile\" placeholder=\"Mobile +34 600 000 000\">\r\n      <\/div>\r\n      <div class=\"tc-lead-btns\">\r\n        <button type=\"button\" id=\"leadBtn\">Email my results<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Footer -->\r\n    <div class=\"tc-foot\">\r\n      <span class=\"tc-stamp\">Rates verified June 2026<\/span>\r\n      <p>Estimates only \u2014 not tax, investment or credit advice. Standard rates for the Costa del Sol &amp; Mallorca are shown; reliefs and the real-gain plusval\u00eda method (when lower) are applied where noted; rental, ROI and co-ownership figures are illustrative and appreciation is not guaranteed. Danish tax rules are shown in euro, converted internally at 7,46 DKK\/EUR. For binding figures, talk to Mojo's Legal &amp; Finance Departments. Developed by Per Moensted, CEO. Mojo Estates \u2014 part of House of Mojo \u00b7 busy-goldstine.212-227-153-4.plesk.page<\/p>\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500;600;700&display=swap');\r\n.mojoTC{--teal:#62C0A8;--dark:#161616;--ink:#234E43;--mint:#8BE0CC;--body:#3D3D3D;--muted:#999;--glass:#EDF8F4;--glass2:#E0F3EC;--alt:#F7F7F7;--border:#E5E5E5;--white:#fff;\r\n  font-family:'Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--body);line-height:1.5;width:100%;max-width:100%; margin:0 auto;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;box-sizing:border-box;overflow-x:hidden}\r\n.mojoTC,.mojoTC *{box-sizing:border-box}\r\n.mojoTC .tc-card{background:var(--white);border:1px solid var(--border);border-radius:16px;padding:32px;box-shadow:0 10px 40px rgba(22,22,22,.05);width:100%;max-width:100%;min-width:0;overflow:hidden}\r\n.mojoTC .tc-head h2{font-size:26px;font-weight:700;color:var(--dark);margin:0 0 6px}\r\n.mojoTC .tc-script{color:var(--teal);font-style:italic;font-weight:600}\r\n.mojoTC .tc-sub{color:var(--muted);font-size:14px;margin:0 0 8px}\r\n.mojoTC .tc-sub2{font-size:13px;color:var(--body);margin:0 0 12px;line-height:1.5}\r\n.mojoTC .tc-sub2 strong{color:var(--teal);font-weight:600}\r\n.mojoTC .tc-badges{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 22px}\r\n.mojoTC .tc-badge{display:inline-flex;align-items:baseline;gap:5px;background:var(--glass);border:1px solid var(--glass2);border-radius:20px;padding:5px 13px;font-size:11.5px;color:var(--body)}\r\n.mojoTC .tc-badge b{color:var(--teal);font-weight:700;font-size:13px}\r\n.mojoTC .tc-region{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}\r\n.mojoTC .tc-region-label{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--teal);font-weight:600}\r\n.mojoTC .tc-seg{display:inline-flex;background:var(--alt);border:1px solid var(--border);border-radius:10px;padding:4px}\r\n.mojoTC .tc-seg-btn{border:0;background:transparent;font:inherit;font-size:13px;color:var(--muted);padding:8px 16px;border-radius:7px;cursor:pointer;transition:.15s}\r\n.mojoTC .tc-seg-btn.is-on{background:var(--white);color:var(--dark);font-weight:600;box-shadow:0 1px 4px rgba(22,22,22,.08)}\r\n.mojoTC .tc-stephead{display:flex;align-items:center;gap:9px;font-size:13.5px;font-weight:600;color:var(--dark);margin:0 0 12px}\r\n.mojoTC .tc-num{display:inline-flex;align-items:center;justify-content:center;width:21px;height:21px;border-radius:50%;background:var(--ink);color:#fff;font-size:11px;font-weight:600;flex:none}\r\n.mojoTC .tc-pcards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:24px;width:100%;max-width:100%;overflow:hidden;align-items:stretch}\r\n.mojoTC .tc-pcard{text-align:left;border:1px solid var(--border);background:var(--white);border-radius:12px;padding:15px 16px;cursor:pointer;transition:.15s;display:flex;flex-direction:column;font:inherit;color:var(--muted);width:100%;min-width:0;max-width:100%;overflow:hidden;height:100%}\r\n.mojoTC .tc-pcard:hover{border-color:var(--teal)}\r\n.mojoTC .tc-pcard.is-on{border:2px solid var(--teal);background:var(--glass);padding:14px 15px}\r\n.mojoTC .tc-pcard svg{width:26px;height:26px;color:var(--muted)}\r\n.mojoTC .tc-pcard.is-on svg{color:var(--teal)}\r\n.mojoTC .tc-pc-t{font-weight:600;color:var(--dark);font-size:15px;margin-top:8px;line-height:1.25;white-space:normal;overflow-wrap:break-word;word-break:normal}\r\n.mojoTC .tc-pc-s{font-size:12px;color:var(--body);margin-top:3px;line-height:1.35;white-space:normal;overflow-wrap:break-word;word-break:normal}\r\n.mojoTC .tc-steprail{display:flex;gap:10px;margin-bottom:22px;flex-wrap:wrap}\r\n.mojoTC .tc-step{flex:1;min-width:140px;display:flex;align-items:center;gap:10px;background:var(--white);border:1.5px solid var(--border);border-radius:12px;padding:13px 15px;font:inherit;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;transition:.15s}\r\n.mojoTC .tc-step:hover{border-color:var(--teal);color:var(--body)}\r\n.mojoTC .tc-step .n{width:24px;height:24px;border-radius:50%;background:var(--alt);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex:none}\r\n.mojoTC .tc-step.is-on{background:var(--teal);border-color:var(--teal);color:#fff;box-shadow:0 8px 18px rgba(98,192,168,.4)}\r\n.mojoTC .tc-step.is-on .n{background:rgba(255,255,255,.28);color:#fff}\r\n.mojoTC .tc-step.is-done{background:var(--teal);border-color:var(--teal);color:#fff}\r\n.mojoTC .tc-step.is-done .n{background:rgba(255,255,255,.28);color:#fff}\r\n.mojoTC .tc-panel{display:none;animation:tcFade .25s ease}\r\n.mojoTC .tc-panel.is-on{display:block}\r\n@keyframes tcFade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}\r\n.mojoTC .tc-ptitle{font-size:16px;font-weight:600;color:var(--dark);margin:0 0 16px;padding-left:12px;border-left:4px solid var(--teal)}\r\n.mojoTC .tc-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px}\r\n.mojoTC .tc-field{display:flex;flex-direction:column;gap:6px}\r\n.mojoTC .tc-field label{font-size:13px;color:var(--dark);font-weight:500}\r\n.mojoTC .tc-field label strong{color:var(--teal)}\r\n.mojoTC .tc-field input,.mojoTC .tc-field select,.mojoTC .tc-lead input{font:inherit;font-size:16px;color:var(--dark);background:var(--white);border:1px solid var(--border);border-radius:9px;padding:11px 13px;width:100%;transition:.15s}\r\n.mojoTC .tc-field input:focus,.mojoTC .tc-field select:focus,.mojoTC .tc-lead input:focus{outline:0;border-color:var(--teal);box-shadow:0 0 0 3px rgba(98,192,168,.18)}\r\n.mojoTC .tc-ro{background:var(--alt)!important;color:var(--dark);font-weight:600}\r\n.mojoTC .tc-inpct{position:relative}\r\n.mojoTC .tc-inpct input{padding-right:30px!important}\r\n.mojoTC .tc-inpct span{position:absolute;right:13px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:14px;pointer-events:none}\r\n.mojoTC .tc-row2{display:flex;gap:8px}\r\n.mojoTC .tc-row2 select{flex:1.3}.mojoTC .tc-row2 input{flex:1}\r\n.mojoTC .tc-hint{font-size:11.5px;color:var(--muted)}\r\n.mojoTC .tc-hint2{font-size:11px;color:var(--muted);font-weight:400}\r\n.mojoTC .tc-check{justify-content:flex-start}\r\n.mojoTC .tc-switch{display:flex;align-items:center;gap:9px;font-weight:500;cursor:pointer;font-size:13px;color:var(--dark)}\r\n.mojoTC .tc-switch input{width:18px;height:18px;accent-color:var(--teal);flex:none}\r\n.mojoTC .tc-expand{margin-top:16px;background:var(--alt);border:1px solid var(--border);border-radius:10px;padding:12px 14px}\r\n.mojoTC .tc-extra{display:none;margin-top:12px;background:var(--glass);border:1px solid var(--glass2);border-radius:10px;padding:16px}\r\n.mojoTC .tc-extra.is-open{display:block}\r\n.mojoTC .tc-tip{position:relative;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--glass2);color:var(--teal);font-size:10px;font-weight:700;cursor:pointer;margin-left:2px;outline:none}\r\n.mojoTC .tc-tip:focus{box-shadow:0 0 0 3px rgba(98,192,168,.3)}\r\n.mojoTC .tc-tip::after{content:attr(data-tip);position:absolute;left:50%;bottom:150%;transform:translateX(-50%);background:var(--dark);color:#fff;padding:9px 11px;border-radius:8px;font-size:11.5px;font-weight:400;line-height:1.45;width:230px;max-width:62vw;opacity:0;visibility:hidden;transition:opacity .15s;z-index:20;pointer-events:none;text-transform:none;letter-spacing:normal;text-align:left;box-shadow:0 6px 22px rgba(22,22,22,.22)}\r\n.mojoTC .tc-tip:hover::after,.mojoTC .tc-tip:focus::after{opacity:1;visibility:visible}\r\n.mojoTC input[type=range]{-webkit-appearance:none;appearance:none;height:6px;border-radius:6px;background:var(--glass2);width:100%;margin:8px 0}\r\n.mojoTC input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:var(--teal);cursor:pointer;border:3px solid var(--white);box-shadow:0 1px 4px rgba(22,22,22,.25)}\r\n.mojoTC input[type=range]::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--teal);cursor:pointer;border:3px solid var(--white)}\r\n.mojoTC .tc-plusbox{margin-top:22px}\r\n.mojoTC .tc-proj{margin-top:22px;background:var(--glass);border-top:3px solid var(--teal);border-bottom:3px solid var(--teal);padding:16px 18px;border-radius:4px}\r\n.mojoTC .tc-proj-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:6px;margin-bottom:10px}\r\n.mojoTC .tc-proj-title{font-weight:600;color:var(--dark);font-size:14px}\r\n.mojoTC .tc-proj-val{font-size:12.5px;color:var(--body)}.mojoTC .tc-proj-val strong{color:var(--teal)}\r\n.mojoTC .tc-sliders{display:grid;grid-template-columns:1fr 1fr;gap:8px 22px}\r\n.mojoTC .tc-sliders label{font-size:12px;color:var(--muted)}.mojoTC .tc-sliders label strong{color:var(--teal)}\r\n.mojoTC .tc-compare{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:8px}\r\n.mojoTC .tc-col{border:1px solid var(--border);border-radius:12px;padding:16px 18px}\r\n.mojoTC .tc-col.is-ai{border-color:var(--teal);background:var(--glass);box-shadow:0 0 0 3px rgba(98,192,168,.12)}\r\n.mojoTC .tc-col h4{margin:0 0 4px;font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600}\r\n.mojoTC .tc-col.is-ai h4{color:var(--teal)}\r\n.mojoTC .tc-col .tc-big{font-size:23px;font-weight:700;color:var(--dark);font-variant-numeric:tabular-nums}\r\n.mojoTC .tc-col .tc-cap{font-size:12px;color:var(--muted)}\r\n.mojoTC .tc-yields{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}\r\n.mojoTC .tc-yield{background:var(--ink);border-radius:12px;padding:16px 18px;color:#fff}\r\n.mojoTC .tc-yield.alt{background:var(--glass);color:var(--dark);border:1px solid var(--glass2)}\r\n.mojoTC .tc-yield h4{margin:0 0 3px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--mint);font-weight:600}\r\n.mojoTC .tc-yield.alt h4{color:var(--teal)}\r\n.mojoTC .tc-yield .tc-ybig{font-size:30px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}\r\n.mojoTC .tc-yield .tc-ycap{font-size:11.5px;opacity:.75;margin-top:3px}\r\n.mojoTC .tc-result{margin-top:18px}\r\n.mojoTC .tc-peryear{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--teal);font-weight:600;margin-bottom:8px}\r\n.mojoTC .tc-row{display:flex;justify-content:space-between;align-items:baseline;padding:11px 14px;font-size:14px;border-radius:7px}\r\n.mojoTC .tc-row:nth-child(even){background:var(--alt)}\r\n.mojoTC .tc-row .tc-amt{color:var(--dark);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}\r\n.mojoTC .tc-row small{display:block;color:var(--muted);font-size:11.5px;font-weight:400}\r\n.mojoTC .tc-methods{border:1px solid var(--border);border-radius:12px;overflow:hidden;margin-top:14px}\r\n.mojoTC .tc-methods .tc-mhead{background:var(--alt);padding:10px 14px;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:600}\r\n.mojoTC .tc-mrow{display:flex;justify-content:space-between;align-items:baseline;padding:11px 14px;font-size:14px;border-top:1px solid var(--border)}\r\n.mojoTC .tc-mrow.is-applied{background:var(--glass)}\r\n.mojoTC .tc-mrow .tc-amt{font-weight:600;color:var(--dark);font-variant-numeric:tabular-nums}\r\n.mojoTC .tc-mrow small{display:block;color:var(--muted);font-size:11.5px}\r\n.mojoTC .tc-mtag{color:var(--teal);font-weight:600;font-size:11.5px}\r\n.mojoTC .tc-total{margin-top:10px;background:var(--ink);color:var(--white);border-radius:11px;padding:18px 20px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}\r\n.mojoTC .tc-total .tc-tlabel{font-size:14px;opacity:.85}\r\n.mojoTC .tc-total .tc-tamt{font-size:25px;font-weight:700;font-variant-numeric:tabular-nums}\r\n.mojoTC .tc-total .tc-tpct{font-size:12px;opacity:.7;margin-top:2px}\r\n.mojoTC .tc-pos{color:var(--mint)!important}\r\n.mojoTC .tc-glass{margin-top:12px;background:var(--glass);border-top:3px solid var(--teal);border-bottom:3px solid var(--teal);border-radius:4px;padding:13px 16px;font-size:13px;color:var(--body)}\r\n.mojoTC .tc-glass strong{color:var(--teal)}\r\n.mojoTC .tc-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:22px;background:var(--alt);border:1px solid var(--border);border-radius:14px;padding:12px 14px}\r\n.mojoTC .tc-navbtn{border:1px solid var(--border);background:var(--white);color:var(--dark);font:inherit;font-size:15px;font-weight:600;padding:13px 28px;border-radius:11px;cursor:pointer;transition:.15s}\r\n.mojoTC .tc-navbtn:hover{border-color:var(--teal);color:var(--teal)}\r\n.mojoTC .tc-navbtn.next{background:var(--teal);color:#fff;border-color:var(--teal);box-shadow:0 8px 20px rgba(98,192,168,.45)}\r\n.mojoTC .tc-navbtn.next:hover{background:#52ad96;color:#fff}\r\n.mojoTC .tc-navbtn:disabled{opacity:.4;cursor:default;border-color:var(--border);color:var(--muted);box-shadow:none}\r\n.mojoTC .tc-navbtn.next:disabled{background:#e9eeec;color:var(--muted)}\r\n.mojoTC .tc-navind{font-size:13.5px;color:var(--dark);font-weight:600;text-align:center;flex:1}\r\n.mojoTC .tc-tophead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px;flex-wrap:wrap}\r\n.mojoTC .tc-tophead .tc-stephead{margin:0}\r\n.mojoTC .tc-reset{display:flex;align-items:center;gap:7px;flex:none;background:var(--white);border:1px solid var(--border);color:var(--body);font:inherit;font-size:13px;font-weight:500;cursor:pointer;padding:9px 16px;border-radius:9px;transition:.15s}\r\n.mojoTC .tc-reset:hover{border-color:var(--teal);color:var(--teal);background:var(--glass)}\r\n.mojoTC .tc-summary{margin-top:18px;background:var(--glass);border:1px solid var(--glass2);border-left:4px solid var(--teal);border-radius:10px;padding:14px 20px;display:none;align-items:center;justify-content:space-between;gap:12px}\r\n.mojoTC .tc-summary.is-on{display:flex}\r\n.mojoTC .tc-summary .l{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--teal);font-weight:600}\r\n.mojoTC .tc-summary .v{font-size:23px;font-weight:700;color:var(--dark);font-variant-numeric:tabular-nums}\r\n.mojoTC .tc-lead{margin-top:22px;background:var(--alt);border:1px solid var(--border);border-radius:12px;padding:18px;display:none}\r\n.mojoTC .tc-lead.is-on{display:block}\r\n.mojoTC .tc-lead-h{margin:0 0 12px;font-size:14px;font-weight:600;color:var(--dark)}\r\n.mojoTC .tc-lead-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:10px}\r\n.mojoTC .tc-lead-btns{display:flex;gap:10px;flex-wrap:wrap}\r\n.mojoTC #leadBtn{flex:1;min-width:200px;background:var(--teal);color:var(--white);border:0;border-radius:9px;font:inherit;font-weight:600;font-size:15px;padding:12px 22px;cursor:pointer;transition:.15s}\r\n.mojoTC #leadBtn:hover{background:#52ad96}\r\n.mojoTC .tc-foot{margin-top:22px;border-top:1px solid var(--border);padding-top:14px}\r\n.mojoTC .tc-stamp{display:inline-block;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--teal);font-weight:600;border:1px solid var(--glass2);background:var(--glass);border-radius:20px;padding:3px 11px;margin-bottom:8px}\r\n.mojoTC .tc-foot p{font-size:11.5px;color:var(--muted);margin:0;line-height:1.55}\r\n@media(max-width:900px){.mojoTC .tc-pcards{grid-template-columns:repeat(2,minmax(0,1fr))}.mojoTC .tc-pcard{min-height:116px}}\r\n@media(max-width:720px){.mojoTC{width:100%;max-width:100%;padding:0 6px;overflow-x:hidden}.mojoTC .tc-card{padding:12px;max-width:100%;overflow:hidden}.mojoTC .tc-grid,.mojoTC .tc-sliders,.mojoTC .tc-compare,.mojoTC .tc-yields,.mojoTC .tc-lead-row{grid-template-columns:minmax(0,1fr)}.mojoTC .tc-head h2{font-size:22px}.mojoTC .tc-total .tc-tamt{font-size:22px}.mojoTC .tc-region,.mojoTC .tc-seg,.mojoTC .tc-steprail,.mojoTC .tc-grid,.mojoTC .tc-field,.mojoTC .tc-row,.mojoTC .tc-mrow,.mojoTC .tc-total,.mojoTC .tc-summary,.mojoTC .tc-nav,.mojoTC .tc-lead,.mojoTC .tc-extra,.mojoTC .tc-expand{max-width:100%;min-width:0}.mojoTC .tc-row,.mojoTC .tc-mrow{gap:8px;flex-wrap:wrap}.mojoTC .tc-row .tc-amt,.mojoTC .tc-mrow .tc-amt{white-space:normal;text-align:right}.mojoTC .tc-field label,.mojoTC .tc-row span,.mojoTC .tc-mrow span,.mojoTC .tc-total div,.mojoTC .tc-summary span,.mojoTC .tc-foot p{min-width:0;overflow-wrap:break-word;word-break:normal}.mojoTC input,.mojoTC select,.mojoTC button{max-width:100%}}\r\n@media(max-width:560px){.mojoTC .tc-pcards{grid-template-columns:1fr}.mojoTC .tc-pcard{min-height:0}.mojoTC .tc-tophead{align-items:flex-start}.mojoTC .tc-reset{width:100%;justify-content:center}.mojoTC .tc-seg{width:100%}.mojoTC .tc-seg-btn{flex:1;padding:8px 10px}.mojoTC .tc-nav{flex-wrap:wrap}.mojoTC .tc-navind{order:-1;flex-basis:100%;text-align:left}.mojoTC .tc-navbtn{flex:1;padding:12px 16px}}\r\n<\/style>\r\n\r\n<script>\r\n(function(){\r\n  var root=document.querySelector('.mojoTC'); if(!root||root.dataset.init) return; root.dataset.init=1;\r\n\r\n  var R={\r\n    regions:{\r\n      AND:{name:\"Andaluc\u00eda\",mode:\"flat\",itp:0.07,ajd:0.012,ivaNew:0.10,ivaPlot:0.21,\r\n        munis:{\"M\u00e1laga\":{ibi:0.00451,plus:29},\"Marbella\":{ibi:0.00650,plus:29},\"Benahav\u00eds\":{ibi:0.00800,plus:20},\"Fuengirola\":{ibi:0.00650,plus:25},\"Estepona\":{ibi:0.00550,plus:20},\"Mijas\":{ibi:0.00450,plus:30},\"Benalm\u00e1dena\":{ibi:0.00700,plus:27.5},\"Torremolinos\":{ibi:0.00740,plus:30},\"San Roque\":{ibi:0.0047,plus:21},\"Oj\u00e9n\":{ibi:0.0040,plus:21},\"Casares\":{ibi:0.0061,plus:30},\"Other (typical)\":{ibi:0.00650,plus:30}}},\r\n      BAL:{name:\"Balearics \u00b7 Mallorca\",mode:\"prog\",bands:[[400000,0.08],[600000,0.09],[1000000,0.10],[2000000,0.12],[Infinity,0.13]],ajd:0.015,ivaNew:0.10,ivaPlot:0.21,\r\n        munis:{\"Palma\":{ibi:0.00790,plus:30},\"Calvi\u00e0\":{ibi:0.00730,plus:30},\"Andratx\":{ibi:0.00710,plus:30},\"Pollen\u00e7a\":{ibi:0.00750,plus:30},\"Alc\u00fadia\":{ibi:0.00700,plus:30},\"Sant Lloren\u00e7\":{ibi:0.00700,plus:30},\"Other (typical)\":{ibi:0.00700,plus:30}}}\r\n    },\r\n    NOTARY:3000, LEGAL_STD:0.0121, LEGAL_MERIT:0.01089, MORTCOST:0.005,\r\n    FURN_ITP:0.04, FURN_IVA:0.21,\r\n    IMPUT:0.02, IMP_EU:0.19, IMP_NONEU:0.24, IVA:0.21, MOD_FEE:200, MOD_RENTAL:350,\r\n    CGT_NR:0.19, CGT_BANDS:[[6000,0.19],[50000,0.21],[200000,0.23],[300000,0.27],[Infinity,0.30]], RETENTION:0.03,\r\n    PLUSV:{1:0.15,2:0.14,3:0.14,4:0.16,5:0.18,6:0.19,7:0.20,8:0.19,9:0.15,10:0.12,11:0.10,12:0.09,13:0.09,14:0.09,15:0.09,16:0.10,17:0.13,18:0.17,19:0.23,20:0.40},\r\n    SHARE:0.125, COWN_RATE:0.0695+0.028, COWN_TERM:15, AI:0.13, COWN_MKT:10000,\r\n    EJV_CAUTION:0.20, EJV_THRESH_DKK:9200000, EJV_LO:0.0051, EJV_HI:0.014, KURS:7.46,\r\n    ILLUS_LTV:0.80, ILLUS_RATE:0.03, ILLUS_TERM:25\r\n  };\r\n  var region=\"AND\", MONTHS=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];\r\n  var G={};\r\n  var STEPS={\r\n    buyer:[['buy','Purchase cost'],['own','Running costs'],['mort','Mortgage'],['rent','Rental income'],['overview','Your full picture']],\r\n    sell:[['sell','Selling']],\r\n    rentout:[['own','Running costs'],['rent','Rental income'],['overview','Your full picture']],\r\n    coowner:[['coown','Co-ownership']]\r\n  };\r\n  var JNAME={buyer:'Your buying journey',sell:'Selling your property',rentout:'Renting out your property',coowner:'Mojo Sharing co-ownership'};\r\n  var persona='buyer', stepIdx=0, curLabel='Purchase cost';\r\n  var $=function(id){return document.getElementById(id)};\r\n  function money(id){return parseInt(String($(id).value).replace(\/[^0-9]\/g,''),10)||0}\r\n  function rate(id){return parseFloat(String($(id).value).replace(',','.').replace('%',''))||0}\r\n  function intv(id){return parseInt($(id).value,10)||0}\r\n  function grp(s){return String(s).replace(\/\\B(?=(\\d{3})+(?!\\d))\/g,'.');}\r\n  function fmtInt(n){var neg=n<0;return (neg?'-':'')+grp(Math.round(Math.abs(n)).toString());}\r\n  function eur(n){return fmtInt(n)+\" \u20ac\"}\r\n  function pcN(n){return ((parseFloat((n).toFixed(2))+\"\").replace('.',',')+\"%\").replace('-','\u2212')}\r\n  function pc0(n){return (Math.round(n)+\"%\").replace('-','\u2212')}\r\n  function row(l,a,sub){return '<div class=\"tc-row\"><span>'+l+(sub?'<small>'+sub+'<\/small>':'')+'<\/span><span class=\"tc-amt\">'+a+'<\/span><\/div>'}\r\n  function total(l,a,sub,pos){return '<div class=\"tc-total\"><div><div class=\"tc-tlabel\">'+l+'<\/div>'+(sub?'<div class=\"tc-tpct\">'+sub+'<\/div>':'')+'<\/div><div class=\"tc-tamt'+(pos?' tc-pos':'')+'\">'+a+'<\/div><\/div>'}\r\n  function mrow(l,a,sub,applied){return '<div class=\"tc-mrow'+(applied?' is-applied':'')+'\"><span>'+l+(sub?'<small>'+sub+'<\/small>':'')+'<\/span><span class=\"tc-amt\">'+a+'<\/span><\/div>'}\r\n\r\n  \/* ---------- home-country tax (Danish ejendomsv\u00e6rdiskat, in EUR) ---------- *\/\r\n  function ejvGrossEUR(valueEUR){\r\n    var grund=valueEUR*(1-R.EJV_CAUTION), threshEUR=R.EJV_THRESH_DKK\/R.KURS;\r\n    var tax=Math.min(grund,threshEUR)*R.EJV_LO+Math.max(0,grund-threshEUR)*R.EJV_HI;\r\n    return {eur:tax, grund:grund, threshEUR:threshEUR};\r\n  }\r\n  function homeTaxNet(valueEUR, ibiEUR){\r\n    if(!$('hc_on').checked) return null;\r\n    if($('hc_country').value===\"OT\") return {eur:money('hc_other'), label:\"Home-country property tax\", sub:\"your own figure\"};\r\n    var g=ejvGrossEUR(valueEUR), net=Math.max(0,g.eur-(ibiEUR||0));\r\n    return {eur:net, label:\"Home-country tax \u2014 Ejendomsv\u00e6rdiskat (net of IBI)\", sub:\"grundlag \"+eur(g.grund)+\" (value \u00d7 80%) \u00b7 0,51% to \"+eur(g.threshEUR)+\", 1,4% above \u00b7 net of IBI\"};\r\n  }\r\n\r\n  \/* ---------- BUYING ---------- *\/\r\n  function itpProg(price){var reg=R.regions[region],t=0,p=0,rows=[];\r\n    for(var i=0;i<reg.bands.length;i++){var c=reg.bands[i][0],r=reg.bands[i][1];if(price<=p)break;\r\n      var slice=(price>c?c:price)-p,amt=slice*r;var lab=(p===0?\"up to \"+eur(c):(c===Infinity?\"above \"+eur(p):eur(p)+\" \u2013 \"+eur(c)));\r\n      rows.push([pcN(r*100)+\" on \"+lab,amt]);t+=amt;p=c;if(price<=c)break;}return{tax:t,rows:rows};}\r\n  function itpRegional(price){var reg=R.regions[region];if(reg.mode===\"flat\")return{tax:price*reg.itp,rows:[[\"ITP 7%\",price*reg.itp]]};return itpProg(price);}\r\n  function transferRows(price,type){var reg=R.regions[region],ajd=price*reg.ajd;\r\n    if(type===\"resale\"||type===\"plot_priv\"||type===\"plot_coin\"){var r=itpRegional(price);return {rows:r.rows,total:r.tax};}\r\n    if(type===\"new\")return{rows:[[\"IVA 10% (new build)\",price*reg.ivaNew],[\"AJD \"+pcN(reg.ajd*100),ajd]],total:price*reg.ivaNew+ajd};\r\n    return{rows:[[\"IVA 21% (plot from company)\",price*reg.ivaPlot],[\"AJD \"+pcN(reg.ajd*100),ajd]],total:price*reg.ivaPlot+ajd};}\r\n  function calcBuy(){\r\n    var price=money('b_price'),type=$('b_type').value,merit=$('b_legal').value===\"merit\",mort=$('b_mort').checked;\r\n    var fnOld=money('fn_old'),fnNew=money('fn_new'); if(fnOld>price)fnOld=price;\r\n    var propBase=price-fnOld;\r\n    var tt=transferRows(propBase,type),furnITP=fnOld*R.FURN_ITP;\r\n    var legal=price*(merit?R.LEGAL_MERIT:R.LEGAL_STD),mortc=mort?price*R.MORTCOST:0;\r\n    var allTop=tt.total+furnITP+R.NOTARY+legal+mortc+fnNew;\r\n    G.price=price;G.priceNoFurn=propBase;G.buyTotal=allTop;G.allIn=price+allTop;\r\n    var h=\"\";for(var i=0;i<tt.rows.length;i++){h+=row(tt.rows[i][0],eur(tt.rows[i][1]),(fnOld>0&&i===0)?(\"on the property part \u2014 \"+eur(propBase)+\" (price minus the \"+eur(fnOld)+\" furniture share)\"):\"\");}\r\n    if(fnOld>0)h+=row(\"ITP 4% on furniture share\",eur(furnITP),eur(fnOld)+\" of the price is furniture \u2014 taxed at 4%, not the property rate\");\r\n    h+=row(\"Notary &amp; Land Registry\",eur(R.NOTARY),\"typical fixed estimate\")\r\n      +row(\"Legal fees\",eur(legal),(merit?\"Mojo Legal fee \u00b7 10% discount \u00b7 0,9%\":\"Standard \u00b7 1,0%\")+\" of purchase price + IVA\")\r\n      +(mort?row(\"Mortgage set-up\",eur(mortc),\"valuation, deed &amp; bank ~0,5%\"):\"\");\r\n    if(fnNew>0)h+=row(\"New furniture package (incl. IVA)\",eur(fnNew),\"Mojo Architecture &amp; Design Studio \u2014 White Gloves\");\r\n    h+=total(\"Total cost on top of price\",eur(allTop),\"\u2248 \"+pcN(allTop\/(price||1)*100)+\" of price \u00b7 all-in \"+eur(price+allTop));\r\n    $('b_out').innerHTML=h;\r\n  }\r\n\r\n  \/* ---------- municipalities ---------- *\/\r\n  function fillMunis(){\r\n    var m=R.regions[region].munis, h=\"\";\r\n    for(var k in m){ h+='<option value=\"'+k+'\">'+k+'<\/option>'; }\r\n    var o=$('o_muni'), oc=o.value; o.innerHTML=h; if(m[oc])o.value=oc;\r\n    var s=$('s_plusMuni'), sc=s.value, h2=\"\";\r\n    for(var k2 in m){ h2+='<option value=\"'+k2+'\">'+k2+' \u2014 '+(''+m[k2].plus).replace('.',',')+'%<\/option>'; }\r\n    s.innerHTML=h2; if(m[sc])s.value=sc;\r\n    syncRateFields();\r\n  }\r\n  function syncRateFields(){\r\n    var om=R.regions[region].munis[$('o_muni').value]; if(om) $('o_ibirate').value=(om.ibi*100).toFixed(2).replace('.',',');\r\n    var sm=R.regions[region].munis[$('s_plusMuni').value]; if(sm) $('s_plusRate').value=(''+sm.plus).replace('.',',');\r\n  }\r\n\r\n  \/* ---------- OWNING \/ RUNNING COSTS ---------- *\/\r\n  function calcOwn(){\r\n    $('hc_box').classList.toggle('is-open',$('hc_on').checked);\r\n    $('om_box').classList.toggle('is-open',$('om_on').checked);\r\n    $('hc_otherF').style.display=($('hc_country').value===\"OT\")?'':'none';\r\n    var cad=money('o_cad'),ibiRate=rate('o_ibirate')\/100,res=$('o_res').value,\r\n        comm=money('o_comm'),ins=money('o_ins'),water=money('o_water'),elec=money('o_elec'),internet=money('o_internet'),alarm=money('o_alarm'),basura=money('o_basura'),other=money('o_other');\r\n    var op=comm+ins+water+elec+internet+alarm+basura+other;\r\n    var ibi=cad*ibiRate, m210=0, isEU=res===\"eu\"||res===\"noneu\", incRow;\r\n    if(res===\"company\"){incRow=row(\"Imputed income tax\",eur(0),\"owned via a Spanish company (SL) \u2014 25% Impuesto sobre Sociedades applies to rental income instead\");}\r\n    else if(res===\"resident\"){incRow=row(\"Imputed income \u2014 Modelo 100\",eur(0),\"declared in your IRPF as a Spanish resident\");}\r\n    else{m210=cad*R.IMPUT*(res===\"eu\"?R.IMP_EU:R.IMP_NONEU);incRow=row(\"Imputed income tax \u2014 Modelo 210\",eur(m210),\"non-resident: 2% of cadastral \u00d7 \"+(res===\"eu\"?\"19% (EU\/EEA)\":\"24% (non-EU)\"));}\r\n    var fin=isEU?R.MOD_FEE*(1+R.IVA):0;\r\n    var home=homeTaxNet(money('o_value'),ibi);\r\n    var annual=ibi+op+m210+fin+(home?home.eur:0);\r\n    G.ownAnnual=annual;G.ownOp=op;\r\n    G.ownLoan=(persona==='rentout'&&$('om_on').checked)?money('o_loan'):0;G.ownLrate=rate('o_lrate')\/100;G.ownLterm=intv('o_lterm')||20;G.ownIntYr=amortAnnualInterest(G.ownLoan,G.ownLrate,G.ownLterm);\r\n    $('o_out').innerHTML='<div class=\"tc-peryear\">All amounts per year<\/div>'+row(\"IBI (council tax)\",eur(ibi),pcN(ibiRate*100)+\" of cadastral value\")\r\n      +row(\"Community fees\",eur(comm))+row(\"Property insurance\",eur(ins))\r\n      +row(\"Water\",eur(water))+row(\"Electricity\",eur(elec))+row(\"Internet\",eur(internet))+row(\"Alarm\",eur(alarm))\r\n      +row(\"Waste collection \/ basura\",eur(basura))\r\n      +(other>0?row(\"Other\",eur(other)):\"\")\r\n      +incRow\r\n      +(fin>0?row(\"Modelo 210 filing \u2014 Mojo Finance Dept.\",eur(fin),\"200 \u20ac + 21% IVA \u00b7 prepared for you\"):\"\")\r\n      +(home?row(home.label,eur(home.eur),home.sub):\"\")\r\n      +((persona==='rentout'&&$('om_on').checked)?row(\"Mortgage interest (current loan)\",eur(G.ownIntYr),\"average \/ yr over \"+G.ownLterm+\" yrs left \u00b7 \"+pcN(G.ownLrate*100)+\" on \"+eur(G.ownLoan)+\" \u00b7 financing, shown separately\"):\"\")\r\n      +total(\"Annual cost of ownership\",eur(annual),\"\u2248 \"+eur(annual\/12)+\" \/ month\");\r\n  }\r\n\r\n  \/* ---------- SELLING ---------- *\/\r\n  function cgtRes(g){if(g<=0)return 0;var t=0,p=0;for(var i=0;i<R.CGT_BANDS.length;i++){var c=R.CGT_BANDS[i][0],r=R.CGT_BANDS[i][1];if(g>c){t+=(c-p)*r;p=c}else{t+=(g-p)*r;break}}return t}\r\n  function cgtResRows(g){var rows=[],p=0;if(g<=0)return rows;for(var i=0;i<R.CGT_BANDS.length;i++){var c=R.CGT_BANDS[i][0],r=R.CGT_BANDS[i][1];if(g<=p)break;var slice=(g>c?c:g)-p,lab=pcN(r*100)+\" on \"+(p===0?\"first \"+eur(c):(c===Infinity?\"above \"+eur(p):eur(p)+\"\u2013\"+eur(c)));rows.push([lab,slice*r]);p=c;if(g<=c)break;}return rows;}\r\n  function coef(y){return R.PLUSV[Math.max(1,Math.min(20,Math.floor(y)))]}\r\n  function calcSell(){\r\n    var ask=money('s_ask'),disc=rate('s_disc')\/100,sale=ask*(1-disc),furn=money('s_furn'),buy=money('s_buy'),res=$('s_res').value,\r\n        costs=money('s_costs'),impr=money('s_impr'),agencyPct=rate('s_agency'),cadTot=money('s_cadTot'),cadLand=money('s_land'),\r\n        loan=money('s_loan'),redeem=money('s_redeem'),\r\n        buyY=money('s_buyY'),buyM=parseInt($('s_buyM').value,10),saleY=money('s_saleY'),saleM=parseInt($('s_saleM').value,10),\r\n        plusPc=rate('s_plusRate')||29, prate=plusPc\/100;\r\n    var legalRate=$('s_legal').value==='std'?R.LEGAL_STD:($('s_legal').value==='merit'?R.LEGAL_MERIT:R.LEGAL_STD*0.5),\r\n        legalPkg=$('s_legal').value==='std'?'Standard \u00b7 1,0%':($('s_legal').value==='merit'?'Mojo Legal \u00b7 10% off':'Mojo Merit Partnership \u00b7 50% off');\r\n    $('s_discAmt').textContent=\"\u2013 \"+eur(ask*disc);\r\n    $('s_sellprice').value=eur(sale);\r\n    $('s_costsPct').textContent=ask>0?\"\u2248 \"+pcN(costs\/ask*100)+\" of price\":\"\";\r\n    if(cadLand<=0)cadLand=cadTot*0.45;\r\n    var landFrac=cadTot>0?Math.min(1,cadLand\/cadTot):0.45, years=Math.max(0,(saleY+saleM\/12)-(buyY+buyM\/12));\r\n    function plusv(propSale,yrsHeld){var realGain=propSale-buy;if(realGain<=0)return{tax:0,obj:0,real:0,method:\"exempt\"};\r\n      var obj=cadLand*coef(yrsHeld)*prate,real=realGain*landFrac*prate;return (real<obj)?{tax:real,obj:obj,real:real,method:\"real\"}:{tax:obj,obj:obj,real:real,method:\"objective\"};}\r\n    function scn(fullSale,yrsHeld){var propSale=Math.max(0,fullSale-furn),agency=fullSale*agencyPct\/100*(1+R.IVA),legalSell=fullSale*legalRate,\r\n      gain=Math.max(0,propSale-buy-costs-impr-agency-legalSell),cgt=res===\"resident\"?cgtRes(gain):gain*R.CGT_NR,pv=plusv(propSale,yrsHeld);\r\n      return {agency:agency,legalSell:legalSell,gain:gain,cgt:cgt,pv:pv,net:fullSale-agency-legalSell-cgt-pv.tax};}\r\n    var now=scn(sale,years),nr=res!==\"resident\",retention=nr?sale*R.RETENTION:0,balance=now.cgt-retention,pv=now.pv,pb=\"\";\r\n    var cashInHand=now.net-loan-redeem;\r\n    G.sellNet=now.net;\r\n    var pkg=$('s_agency').options[$('s_agency').selectedIndex].text.split(' \u2014 ')[0];\r\n    if(pv.method===\"exempt\"){pb='<div class=\"tc-methods\"><div class=\"tc-mhead\">Plusval\u00eda municipal \u00b7 '+plusPc+'%<\/div><div class=\"tc-mrow is-applied\"><span>Exempt \u2014 no land gain on this sale<small>Plusval\u00eda is not due when the land has not increased in value<\/small><\/span><span class=\"tc-amt\">'+eur(0)+'<\/span><\/div><\/div>';}\r\n    else{var objA=pv.method===\"objective\";\r\n      pb='<div class=\"tc-methods\"><div class=\"tc-mhead\">Plusval\u00eda municipal \u00b7 two methods \u2014 the lower one applies ('+plusPc+'%)<\/div>'\r\n        +'<div class=\"tc-mrow'+(objA?' is-applied':'')+'\"><span>Objective method'+(objA?' <span class=\"tc-mtag\">\u2713 applied (lower)<\/span>':'')+'<small>cadastral land \u00d7 coefficient ('+pcN(years).replace('%','')+' yrs) \u00d7 '+plusPc+'%<\/small><\/span><span class=\"tc-amt\">'+eur(pv.obj)+'<\/span><\/div>'\r\n        +'<div class=\"tc-mrow'+(!objA?' is-applied':'')+'\"><span>Real method'+(!objA?' <span class=\"tc-mtag\">\u2713 applied (lower)<\/span>':'')+'<small>land share of the actual gain \u00d7 '+plusPc+'%<\/small><\/span><span class=\"tc-amt\">'+eur(pv.real)+'<\/span><\/div><\/div>';}\r\n    $('s_plusBox').innerHTML=pb;\r\n    var h=\"\";\r\n    if(disc>0) h+=row(\"Discount on asking price\",eur(ask*disc),pcN(disc*100)+\" \u2192 selling price \"+eur(sale));\r\n    if(furn>0) h+=row(\"Furniture in the sale (excluded from gain)\",eur(furn),\"taxed as movable goods, not as property\");\r\n    var cgtBox=\"\";if(res===\"resident\"&&now.gain>0){var crr=cgtResRows(now.gain);cgtBox='<div class=\"tc-methods\"><div class=\"tc-mhead\">Capital Gains Tax \u2014 resident progressive scale<\/div>';for(var ci=0;ci<crr.length;ci++)cgtBox+=mrow(crr[ci][0],eur(crr[ci][1]),\"\",ci===crr.length-1);cgtBox+='<\/div>';}\r\n    h+=row(\"Gross profit\",eur(Math.max(0,sale-furn)-buy),\"sale price \u2212 original purchase price\"+(furn>0?\" (property only)\":\"\"))\r\n      +row(\"Taxable gain\",eur(now.gain),\"gross profit \u2212 deductible costs, improvements, agency &amp; legal\")\r\n      +row(\"Capital Gains Tax\",eur(now.cgt),nr?\"non-resident flat 19% (EU &amp; non-EU)\":\"resident progressive scale 19\u201330% \u2014 breakdown below\")+cgtBox\r\n      +(nr?row(\"3% retention at the notary\",eur(retention),\"your buyer's lawyer withholds it and pays it to the tax office (Modelo 211), on account of your CGT\"):\"\")\r\n      +(nr?row(balance>=0?\"Additional CGT still to pay\":\"CGT refund due to you\",eur(Math.abs(balance)),balance>=0?\"CGT exceeds the 3% already withheld \u2014 pay the difference\":\"the 3% withheld exceeds your CGT \u2014 your lawyer reclaims it for you\"):\"\")\r\n      +row(\"Plusval\u00eda municipal\",eur(now.pv.tax),now.pv.method===\"exempt\"?\"exempt \u2014 no land gain\":(now.pv.method+\" method \u2014 the lower of the two\"))\r\n      +row(\"Agency fee \u2014 Mojo \"+pkg+\" package\",eur(now.agency),pcN(agencyPct)+\" of price + 21% IVA\")\r\n      +row(\"Legal fees on sale \u2014 \"+legalPkg,eur(now.legalSell),pcN(legalRate\/(1+R.IVA)*100)+\" of sale price + 21% IVA\")\r\n      +total(\"Net proceeds (sell today)\",eur(now.net),\"after Capital Gains Tax, Plusval\u00eda, agency &amp; legal\",true);\r\n    if(loan>0||redeem>0){\r\n      h+=(loan>0?row(\"Less: redeem outstanding mortgage\",\"\u2212 \"+eur(loan),\"repaid to the bank from the proceeds\"):\"\")\r\n        +(redeem>0?row(\"Less: bank redemption fee\",\"\u2212 \"+eur(redeem),\"early-repayment \/ cancellation charge\"):\"\")\r\n        +total(\"Cash in hand after mortgage\",eur(cashInHand),\"what you actually walk away with\",cashInHand>=0);\r\n    }\r\n    var hold=money('s_hold'),gr=rate('s_growth')\/100;\r\n    if(hold>0){var fSale=sale*Math.pow(1+gr,hold),fut=scn(fSale,years+hold),diff=fut.net-now.net;\r\n      h+='<div class=\"tc-row\" style=\"margin-top:14px\"><span>Projected selling price in '+hold+' yr'+(hold>1?'s':'')+'<small>at '+pcN(gr*100)+'\/yr growth<\/small><\/span><span class=\"tc-amt\">'+eur(fSale)+'<\/span><\/div>'\r\n        +row(\"Net proceeds then\",eur(fut.net),\"taxes recalculated \u00b7 Plusval\u00eda \"+fut.pv.method+\" \u00b7 \"+Math.round(years+hold)+\" yrs owned\")\r\n        +total((diff>=0?\"Gain from holding \"+hold+\" yr\"+(hold>1?\"s\":\"\"):\"Cost of waiting\"),(diff>=0?\"+\":\"\u2212\")+eur(Math.abs(diff)),\"vs selling today\",diff>=0);}\r\n    $('s_out').innerHTML=h;\r\n  }\r\n\r\n  \/* ---------- MORTGAGE ---------- *\/\r\n  function calcMort(){\r\n    var price=money('m_price'),ltv=money('m_ltv')\/100,rt=rate('m_rate')\/100,term=money('m_term'),\r\n        loan=price*ltv,down=price-loan,n=term*12,r=rt\/12,\r\n        pay=(loan>0&&n>0)?(r>0?loan*r\/(1-Math.pow(1+r,-n)):loan\/n):0,interest=pay>0?pay*n-loan:0;\r\n    G.mortMonthly=pay;G.mortAnnual=pay*12;G.mortInterest=interest;G.mortTerm=term;G.down=down;G.loan=loan;\r\n    $('m_ltvLbl').textContent=Math.round(ltv*100)+\"%\";\r\n    $('m_out').innerHTML=row(\"Loan amount\",eur(loan),Math.round(ltv*100)+\"% LTV\")\r\n      +row(\"Your down payment\",eur(down),Math.round((1-ltv)*100)+\"% of price\")\r\n      +row(\"Total interest over term\",eur(interest),term+\" yrs @ \"+pcN(rt*100))\r\n      +total(\"Monthly payment\",eur(pay),\"loan repayment + interest\");\r\n  }\r\n\r\n  \/* ---------- RENTING OUT ---------- *\/\r\n  function amortAnnualInterest(loan,r,term){if(loan<=0||term<=0)return 0;var n=term*12,m=r\/12,pay=m>0?loan*m\/(1-Math.pow(1+m,-n)):loan\/n;return Math.max(0,(pay*n-loan)\/term);}\r\n  function rentLoan(value){\r\n    if(persona==='buyer' && $('b_mort').checked && money('m_ltv')>0){var l1=(G.priceNoFurn||value)*(money('m_ltv')\/100),r1=rate('m_rate')\/100,t1=money('m_term')||25;return {loan:l1,rate:r1,term:t1,illus:false,intYr:amortAnnualInterest(l1,r1,t1)};}\r\n    if(persona==='rentout' && $('om_on').checked && money('o_loan')>0){var l2=money('o_loan'),r2=rate('o_lrate')\/100,t2=G.ownLterm||20;return {loan:l2,rate:r2,term:t2,illus:false,intYr:amortAnnualInterest(l2,r2,t2)};}\r\n    var l3=(G.priceNoFurn||value)*R.ILLUS_LTV;return {loan:l3,rate:R.ILLUS_RATE,term:R.ILLUS_TERM,illus:true,intYr:amortAnnualInterest(l3,R.ILLUS_RATE,R.ILLUS_TERM)};\r\n  }\r\n  function calcYield(){\r\n    var base = persona==='rentout'?money('o_value'):(G.allIn||0);\r\n    $('y_value').value=fmtInt(base);\r\n    if($('y_valLbl').firstChild)$('y_valLbl').firstChild.textContent=(persona==='rentout'?'Current property value (\u20ac) ':'All-in purchase price (\u20ac) ');\r\n    var value=base,costs=money('y_costs'),rt=money('y_rate'),occ=money('y_occ')\/100,\r\n        mgmt=parseFloat($('y_mgmt').value)\/100,taxRate=rate('y_tax')\/100,fin=(R.MOD_FEE+R.MOD_RENTAL)*(1+R.IVA),aiOn=$('y_ai').checked,nights=Math.round(365*occ);\r\n    $('y_rateLbl').textContent=rt+\" \u20ac\";$('y_occLbl').textContent=Math.round(occ*100)+\"%\";$('y_nights').textContent=\"\u2248 \"+nights+\" nights\/yr\";\r\n    var baseRev=rt*365*occ,aiRev=baseRev*(1+R.AI),rev=aiOn?aiRev:baseRev;\r\n    function noiB(r){return r-r*mgmt*(1+R.IVA)-fin-costs;}\r\n    var fee=rev*mgmt*(1+R.IVA),noiBefore=noiB(rev);\r\n    var lev=rentLoan(value),equity=Math.max(0,value-lev.loan),interest=lev.intYr;\r\n    var dedInt=(!lev.illus)?interest*occ:0;\r\n    var incomeTax=Math.max(0,noiBefore-dedInt)*taxRate,noiAfter=noiBefore-incomeTax;\r\n    var yB=value>0?noiBefore\/value*100:0, yA=value>0?noiAfter\/value*100:0;\r\n    var levB=equity>0?(noiBefore-interest)\/equity*100:0, levA=equity>0?(noiAfter-interest)\/equity*100:0;\r\n    G.rentValue=value;G.rentNOIbefore=noiBefore;G.rentNOIafter=noiAfter;G.rentYB=yB;G.rentYA=yA;\r\n    G.rentLevB=levB;G.rentLevA=levA;G.rentIllus=lev.illus;G.rentTaxRate=taxRate;G.rentRev=rev;G.rentDedInt=dedInt;\r\n    var baseY=value>0?noiB(baseRev)\/value*100:0,aiY=value>0?noiB(aiRev)\/value*100:0;\r\n    $('y_compare').innerHTML='<div class=\"tc-col'+(aiOn?'':' is-ai')+'\"><h4>Flat pricing<\/h4><div class=\"tc-big\">'+eur(baseRev)+'<\/div><div class=\"tc-cap\">gross\/yr \u00b7 before-tax yield '+pcN(baseY)+'<\/div><\/div>'+\r\n      '<div class=\"tc-col'+(aiOn?' is-ai':'')+'\"><h4>Mojo AI \u2013 Dynamic Pricing<\/h4><div class=\"tc-big\">'+eur(aiRev)+'<\/div><div class=\"tc-cap\">gross\/yr \u00b7 before-tax yield '+pcN(aiY)+'<\/div><\/div>';\r\n    $('y_yields').innerHTML='<div class=\"tc-yield\"><h4>Gross yield \u00b7 before tax<\/h4><div class=\"tc-ybig\">'+pcN(yB)+'<\/div><div class=\"tc-ycap\">net of costs &amp; fees \u00b7 on '+eur(value)+'<\/div><\/div>'+\r\n      '<div class=\"tc-yield alt\"><h4>Net yield \u00b7 after tax<\/h4><div class=\"tc-ybig\">'+pcN(yA)+'<\/div><div class=\"tc-ycap\">after '+pc0(taxRate*100)+' income tax<\/div><\/div>';\r\n    $('y_out').innerHTML='<div class=\"tc-peryear\">All amounts per year<\/div>'+row(\"Gross rental income\",eur(rev),rt+\" \u20ac \u00d7 \"+nights+\" nights\"+(aiOn?\" \u00b7 incl. Mojo AI +13%\":\"\"))\r\n      +row(\"Mojo Rentals fee\",eur(fee),$('y_mgmt').value+\"% + 21% IVA \u2014 listing, guests, cleaning &amp; laundry, pricing\")\r\n      +row(\"Mojo Finance Dept. fee\",eur(fin),\"Modelo 210 incl. rental: 200 \u20ac + 350 \u20ac + 21% IVA\")\r\n      +row(\"Running costs (deductible)\",eur(costs),\"operating costs apportioned to the let period\")\r\n      +(dedInt>0?row(\"Deductible mortgage interest\",eur(dedInt),\"interest \u00d7 occupancy \u2014 reduces the taxable profit\"):\"\")\r\n      +total(\"Net income before tax \/ year\",eur(noiBefore),\"taxable rental profit \u00b7 before-tax yield \"+pcN(yB))\r\n      +row(\"Income tax on rental\",eur(incomeTax),pc0(taxRate*100)+(dedInt>0?\" of profit after interest\":\" of the net profit\"))\r\n      +total(\"Net income after tax \/ year\",eur(noiAfter),\"after-tax yield \"+pcN(yA)+\" on \"+eur(value),true)\r\n      +'<div class=\"tc-methods\"><div class=\"tc-mhead\">Return on your cash \u2014 gearing effect ('+(lev.illus?'illustrative '+Math.round(R.ILLUS_LTV*100)+'% \/ '+R.ILLUS_TERM+' yr \/ '+pcN(R.ILLUS_RATE*100)+' loan':'your mortgage')+')<\/div>'\r\n        +mrow(\"Unleveraged \u2014 cash buyer\",\"before tax \"+pcN(yB)+\" \u00b7 after tax \"+pcN(yA),\"return on the full \"+eur(value))\r\n        +mrow(\"Leveraged \u2014 with mortgage\",\"before tax \"+pcN(levB)+\" \u00b7 after tax \"+pcN(levA),\"on your \"+eur(equity)+\" equity, after \"+pcN(lev.rate*100)+\" interest\",true)+'<\/div>'\r\n      +'<div class=\"tc-glass\"><strong>Deductible running costs<\/strong> = (annual operating costs + mortgage interest) \u00d7 the share of the year it is let. Tax: non-resident EU\/EEA 19%, non-EU 24% (deductions now allowed too after the 2025 court ruling), or a Spanish company (SL) 25% \u2014 all on the net profit. Mojo AI \u2013 Dynamic Pricing adds an estimated <strong>'+eur(noiB(aiRev)-noiB(baseRev))+'\/yr<\/strong> versus flat pricing.<\/div>';\r\n  }\r\n\r\n  \/* ---------- CO-OWNERSHIP ---------- *\/\r\n  function calcCoown(){\r\n    $('av_box').classList.toggle('is-open',$('av_on').checked);\r\n    $('cr_box').classList.toggle('is-open',$('cr_on').checked);\r\n    var ot=$('av_country').value===\"OT\";\r\n    ['av_baseF','av_prateF','av_wsumF','av_wnonF','av_wrentF'].forEach(function(f){$(f).style.display=ot?'none':'';});\r\n    $('av_otherF').style.display=ot?'':'none';\r\n    var share=money('c_share'),fin=money('c_fin')\/100,hold=money('c_hold'),apr=(parseFloat($('c_apr').value)||0)\/100,resale=$('c_resale').checked;\r\n    $('c_finLbl').textContent=Math.round(fin*100)+\"%\";$('c_holdLbl').textContent=hold+\" year\"+(hold>1?\"s\":\"\");$('c_aprLbl').textContent=pcN(apr*100)+\"\/yr\";\r\n    var whole=share\/R.SHARE,loan=share*fin,down=share-loan,n=R.COWN_TERM*12,r=R.COWN_RATE\/12,\r\n        monthly=loan>0?loan*r\/(1-Math.pow(1+r,-n)):0,projected=share*Math.pow(1+apr,hold),gain=projected-share,\r\n        resaleFee=resale?(R.COWN_MKT+projected*0.05*(1+R.IVA)):0,netGain=gain-resaleFee;\r\n    G.coMonthly=monthly;G.coGain=gain;\r\n    var h=row(\"Your 1\/8 share price\",eur(share),\"12,5% of \"+eur(whole))\r\n      +row(\"Mojo Mortgage loan\",eur(loan),Math.round(fin*100)+\"% of share \u00b7 15-yr \u00b7 \"+pcN(R.COWN_RATE*100)+\" (6,95% + Eur\u00edbor)\")\r\n      +row(\"Your down payment\",eur(down),Math.round((1-fin)*100)+\"% of your share\")\r\n      +row(\"Monthly mortgage payment\",eur(monthly),\"loan repayment + interest\")\r\n      +row(\"Projected share value in \"+hold+\" yr\"+(hold>1?\"s\":\"\"),eur(projected),pcN(apr*100)+\"\/yr compound growth (CAGR, not IRR)\")\r\n      +total((gain>=0?\"Projected gain on your share\":\"Projected result\"),(gain>=0?\"+\":\"\u2212\")+eur(Math.abs(gain)),\"after \"+hold+\" yr\"+(hold>1?\"s\":\"\")+\" \u00b7 before tax &amp; any resale fee\",gain>=0);\r\n    $('c_out').innerHTML=h;\r\n    var h2='';\r\n    if(resale) h2+=row(\"Resale agency fee on exit (optional)\",\"\u2212 \"+eur(resaleFee),\"only if Mojo sells your share for you \u2014 10.000 \u20ac + 5% + IVA\")\r\n      +row(\"Net gain if Mojo handles the resale\",(netGain>=0?\"+\":\"\u2212\")+eur(Math.abs(netGain)),\"projected gain above \u2212 resale fee\");\r\n    if($('cr_on').checked){\r\n      var days=Math.min(45,intv('cr_days')),drate=money('cr_rate'),cap=money('cr_cap'),\r\n          gross=days*drate,common20=gross*0.20,toCommon=Math.min(common20,cap),extra=common20-toCommon,mojo=gross*0.20,ownerNet=gross*0.60+extra;\r\n      h2+='<div class=\"tc-methods\"><div class=\"tc-mhead\">Rent out your weeks \u00b7 '+days+' days \u00d7 '+eur(drate)+'\/day<\/div>'\r\n        +mrow(\"Gross rental income\",eur(gross),\"up to 45 days\/yr\")\r\n        +mrow(\"Your share (60%)\",eur(gross*0.60))\r\n        +mrow(\"To the common fund (20%, capped)\",eur(toCommon),\"cap \"+eur(cap))\r\n        +(extra>0?mrow(\"Extra back to you beyond the cap\",eur(extra),\"the 20% returns to you once the fund is full\"):\"\")\r\n        +mrow(\"Mojo Rentals (20%)\",eur(mojo))\r\n        +mrow(\"Your net rental income\",eur(ownerNet),\"60%\"+(extra>0?\" + cap-overflow\":\"\")+\" of the rental\",true)+'<\/div>';\r\n    }\r\n    if($('av_on').checked){\r\n      if(ot){\r\n        var avo=money('av_other');\r\n        h2+='<div class=\"tc-methods\"><div class=\"tc-mhead\">Home-country availability tax<\/div>'+mrow(\"Your annual figure\",eur(avo),\"as advised by your own tax adviser\",true)+'<\/div>';\r\n      } else {\r\n        var base=money('av_base'),wsum=intv('av_wsum'),wnon=intv('av_wnon'),wrent=intv('av_wrent'),\r\n            pct=wsum*0.005+wnon*0.0025, avail=base*pct, prate=parseFloat($('av_prate').value)\/100, tax=avail*prate;\r\n        h2+='<div class=\"tc-methods\"><div class=\"tc-mhead\">Danish R\u00e5dighedsskat (availability tax) \u00b7 '+(wsum+wnon)+' personal weeks \u2192 '+pcN(pct*100)+'<\/div>'\r\n          +mrow(\"Availability base\",eur(base),\"from Mojo Sharing for this property\")\r\n          +mrow(\"Availability amount \/ year\",eur(avail),wsum+\" summer \u00d7 0,50% + \"+wnon+\" non-summer \u00d7 0,25% \u00b7 \"+wrent+\" let weeks exempt\")\r\n          +mrow(\"Personal income tax @ \"+pc0(prate*100),eur(tax),\"payable in your home country\",true)+'<\/div>';\r\n      }\r\n    }\r\n    $('c_out2').innerHTML=h2;\r\n  }\r\n\r\n  \/* ---------- OVERVIEW (full picture) ---------- *\/\r\n  function calcOverview(){\r\n    if(!$('ov_out'))return;\r\n    if(persona==='rentout'){ovRentout();return;}\r\n    \/\/ buyer\r\n    var mortOn=$('b_mort').checked&&money('m_ltv')>0, allIn=G.allIn||0, buyTot=G.buyTotal||0, price=G.price||0, pnf=G.priceNoFurn||price,\r\n        ltv=mortOn?money('m_ltv'):0, down=mortOn?(G.down||0):price, cashIn=down+buyTot,\r\n        mAnnual=mortOn?(G.mortAnnual||0):0, mInt=mortOn?((G.mortInterest||0)\/(G.mortTerm||25)):0, mPrin=Math.max(0,mAnnual-mInt),\r\n        otherOwn=Math.max(0,(G.ownAnnual||0)-(G.ownOp||0)), rentAfter=G.rentNOIafter||0, rentBefore=G.rentNOIbefore||0;\r\n    var noiNetB=rentBefore-otherOwn, noiNetA=rentAfter-otherOwn, cfWith=noiNetA-mAnnual, cfWithout=noiNetA-mInt;\r\n    var yTotB=allIn>0?noiNetB\/allIn*100:0, yTotA=allIn>0?noiNetA\/allIn*100:0;\r\n    var ill=!mortOn, lLoan=ill?pnf*R.ILLUS_LTV:(G.loan||0), lRate=ill?R.ILLUS_RATE:rate('m_rate')\/100,\r\n        lInt=ill?amortAnnualInterest(lLoan,lRate,R.ILLUS_TERM):mInt, lEq=ill?(price-lLoan):cashIn,\r\n        cocB=lEq>0?(noiNetB-lInt)\/lEq*100:0, cocA=lEq>0?(noiNetA-lInt)\/lEq*100:0;\r\n    var h=row(\"All-in purchase cost\",eur(allIn),\"price \"+eur(price)+\" + costs \"+eur(buyTot))\r\n      +row(\"Your cash in (self-financing)\",eur(cashIn),mortOn?(\"down payment \"+eur(down)+\" (\"+ltv+\"% LTV) + purchase costs\"):\"cash buyer \u2014 full price + costs\")\r\n      +row(\"Rental income \u2014 before tax \/ yr\",eur(rentBefore),\"net of running costs &amp; Mojo fees\")\r\n      +row(\"Rental income \u2014 after tax \/ yr\",eur(rentAfter),\"after \"+pc0((G.rentTaxRate||0)*100)+\" income tax\"+(G.rentDedInt>0?\" (interest deducted)\":\"\"))\r\n      +row(\"Other ownership costs \/ yr\",eur(otherOwn),\"IBI, Modelo 210 &amp; home-country tax (not in rental costs)\")\r\n      +(mortOn?row(\"Mortgage interest \/ yr (deductible)\",eur(mInt),\"tax-deductible against rental for the let share\"):\"\")\r\n      +(mortOn?row(\"Capital repayment \/ yr (your saving)\",eur(mPrin),\"not a cost \u2014 it pays down your loan &amp; builds equity\"):\"\")\r\n      +total((cfWithout>=0?\"Net cashflow \u2014 interest only\":\"Net shortfall \u2014 interest only\"),(cfWithout>=0?\"+\":\"\u2212\")+eur(Math.abs(cfWithout)),\"\u2248 \"+(cfWithout>=0?\"+\":\"\u2212\")+eur(Math.abs(cfWithout)\/12)+\" \/ month \u00b7 the true economic return\",cfWithout>=0)\r\n      +(mortOn?total((cfWith>=0?\"Net cashflow \u2014 incl. repayment\":\"Net outlay \u2014 incl. repayment\"),(cfWith>=0?\"+\":\"\u2212\")+eur(Math.abs(cfWith)),\"\u2248 \"+(cfWith>=0?\"+\":\"\u2212\")+eur(Math.abs(cfWith)\/12)+\" \/ month \u00b7 part of it is saving\",cfWith>=0):\"\")\r\n      +'<div class=\"tc-methods\"><div class=\"tc-mhead\">Your after-tax return<\/div>'\r\n        +mrow(\"Yield on total price \u2014 cash buyer\",\"before tax \"+pcN(yTotB)+\" \u00b7 after tax \"+pcN(yTotA),\"net operating profit \u00f7 all-in \"+eur(allIn))\r\n        +mrow(\"Cash-on-cash \u2014 \"+(ill?\"illustrative \"+Math.round(R.ILLUS_LTV*100)+\"% loan\":\"with your mortgage\"),\"before tax \"+pcN(cocB)+\" \u00b7 after tax \"+pcN(cocA),\"\u00f7 \"+eur(lEq)+\" cash \u00b7 interest only\",true)+'<\/div>'\r\n      +'<div class=\"tc-glass\">Total cost, the cash you put in, and the after-tax return once let. We show two cashflows: <strong>interest only<\/strong> is the true economic return; <strong>incl. repayment<\/strong> is your real monthly outlay, where the repayment is really saving into your equity. '+(ill?'You chose no mortgage \u2014 the cash-on-cash line shows an illustrative '+Math.round(R.ILLUS_LTV*100)+'% \/ '+R.ILLUS_TERM+'-yr \/ '+pcN(R.ILLUS_RATE*100)+' loan on the property value ex-furniture. ':'')+'Illustrative; your Mojo adviser confirms the figures.<\/div>';\r\n    $('ov_out').innerHTML=h;\r\n  }\r\n  function ovRentout(){\r\n    var value=money('o_value'), loanOn=$('om_on').checked, loan=loanOn?money('o_loan'):0, lrate=rate('o_lrate')\/100, lterm=G.ownLterm||20,\r\n        interest=amortAnnualInterest(loan,lrate,lterm), equity=Math.max(0,value-loan),\r\n        otherOwn=Math.max(0,(G.ownAnnual||0)-(G.ownOp||0)), rentAfter=G.rentNOIafter||0, rentBefore=G.rentNOIbefore||0;\r\n    var n=lterm*12,r=lrate\/12,pay=(loan>0&&lterm>0)?(r>0?loan*r\/(1-Math.pow(1+r,-n)):loan\/n):0,mAnnual=pay*12,mPrin=Math.max(0,mAnnual-interest);\r\n    var cfWithout=rentAfter-otherOwn-interest, cfWith=rentAfter-otherOwn-mAnnual;\r\n    var roiUn=value>0?(rentAfter-otherOwn)\/value*100:0, roiEq=equity>0?cfWithout\/equity*100:0;\r\n    var h=row(\"Current property value\",eur(value))\r\n      +(loanOn?row(\"Outstanding mortgage\",eur(loan),pcN(lrate*100)+\" \u00b7 \"+lterm+\" yrs left\"):\"\")\r\n      +row(\"Rental income \u2014 before tax \/ yr\",eur(rentBefore),\"net of running costs &amp; Mojo fees\")\r\n      +row(\"Rental income \u2014 after tax \/ yr\",eur(rentAfter),\"after \"+pc0((G.rentTaxRate||0)*100)+\" income tax\"+(G.rentDedInt>0?\" (interest deducted)\":\"\"))\r\n      +row(\"Other ownership costs \/ yr\",eur(otherOwn),\"IBI, Modelo 210 &amp; home-country tax\")\r\n      +(loanOn?row(\"Mortgage interest \/ yr (deductible)\",eur(interest),\"tax-deductible against rental for the let share\"):\"\")\r\n      +(loanOn?row(\"Capital repayment \/ yr (your saving)\",eur(mPrin),\"pays down your loan &amp; builds equity\"):\"\")\r\n      +total((cfWithout>=0?\"Net cashflow \u2014 interest only\":\"Net shortfall \u2014 interest only\"),(cfWithout>=0?\"+\":\"\u2212\")+eur(Math.abs(cfWithout)),\"\u2248 \"+(cfWithout>=0?\"+\":\"\u2212\")+eur(Math.abs(cfWithout)\/12)+\" \/ month \u00b7 true economic return\",cfWithout>=0)\r\n      +(loanOn?total((cfWith>=0?\"Net cashflow \u2014 incl. repayment\":\"Net outlay \u2014 incl. repayment\"),(cfWith>=0?\"+\":\"\u2212\")+eur(Math.abs(cfWith)),\"\u2248 \"+(cfWith>=0?\"+\":\"\u2212\")+eur(Math.abs(cfWith)\/12)+\" \/ month\",cfWith>=0):\"\")\r\n      +'<div class=\"tc-methods\"><div class=\"tc-mhead\">Your after-tax return<\/div>'\r\n        +mrow(\"Unleveraged yield\",pcN(roiUn),\"on the full \"+eur(value))\r\n        +mrow(\"Return on your equity\",pcN(roiEq),\"on \"+eur(equity)+(loanOn?\" after interest\":\"\"),true)+'<\/div>'\r\n      +'<div class=\"tc-glass\">Your rental picture after tax, using the current loan (amount, rate &amp; years left) from the Running-costs step. The repayment portion is saving, not a cost. Illustrative; your Mojo adviser confirms the figures.<\/div>';\r\n    $('ov_out').innerHTML=h;\r\n  }\r\n\r\n  \/* ---------- live running summary ---------- *\/\r\n  function renderSummary(){\r\n    var box=$('tcSummary'); if(!box)return;\r\n    if(persona==='buyer'){box.innerHTML='<span class=\"l\">All-in purchase price<\/span><span class=\"v\">'+eur(G.allIn||0)+'<\/span>';box.classList.add('is-on');}\r\n    else{box.classList.remove('is-on');box.innerHTML='';}\r\n  }\r\n\r\n  function recalc(){calcBuy();calcOwn();calcSell();calcMort();calcYield();calcCoown();calcOverview();renderSummary();}\r\n\r\n  \/* ---------- money formatting + cross-tab carry-over ---------- *\/\r\n  function bindMoney(el){el.addEventListener('input',function(){var d=el.value.replace(\/[^0-9]\/g,'');el.value=d?grp(String(parseInt(d,10))):\"\";});}\r\n  root.querySelectorAll('.tc-money').forEach(bindMoney);\r\n  var LINKS=[['.tc-link-price'],['.tc-link-cad']];\r\n  LINKS.forEach(function(g){var els=root.querySelectorAll(g[0]);els.forEach(function(el){el.addEventListener('input',function(){els.forEach(function(o){if(o!==el)o.value=el.value;});});});});\r\n  function ownOpSum(){var s=0;root.querySelectorAll('.tc-own-op').forEach(function(el){s+=parseInt(el.value.replace(\/[^0-9]\/g,''),10)||0;});return s;}\r\n  root.querySelectorAll('.tc-own-op').forEach(function(el){el.addEventListener('input',function(){$('y_costs').value=grp(String(ownOpSum()));});});\r\n\r\n  \/* ---------- availability weeks: always total 6 ---------- *\/\r\n  function clampW(v){return Math.max(0,Math.min(6,v));}\r\n  function balWeeks(changed){\r\n    var S=clampW(intv('av_wsum')),N=clampW(intv('av_wnon')),Rw=clampW(intv('av_wrent')),rem;\r\n    if(changed==='av_wsum'){rem=6-S;if(Rw>rem)Rw=rem;N=rem-Rw;}\r\n    else if(changed==='av_wnon'){rem=6-N;if(Rw>rem)Rw=rem;S=rem-Rw;}\r\n    else{rem=6-Rw;if(S>rem)S=rem;N=rem-S;}\r\n    $('av_wsum').value=Math.max(0,S);$('av_wnon').value=Math.max(0,N);$('av_wrent').value=Math.max(0,Rw);\r\n  }\r\n  ['av_wsum','av_wnon','av_wrent'].forEach(function(id){$(id).addEventListener('input',function(){balWeeks(id);});});\r\n\r\n  \/* ---------- month selects ---------- *\/\r\n  (function(){var h=\"\";for(var i=0;i<12;i++)h+='<option value=\"'+(i+1)+'\">'+MONTHS[i]+'<\/option>';\r\n    $('s_buyM').innerHTML=h; $('s_buyM').value=6; $('s_saleM').innerHTML=h; $('s_saleM').value=6;})();\r\n\r\n  \/* ---------- persona + steps ---------- *\/\r\n  function showPanel(p){root.querySelectorAll('.tc-panel').forEach(function(x){x.classList.toggle('is-on',x.dataset.panel===p)});}\r\n  function renderSteps(){\r\n    var list=STEPS[persona]; if(stepIdx>=list.length)stepIdx=0;\r\n    var h='';list.forEach(function(s,i){var done=i<stepIdx;h+='<button type=\"button\" class=\"tc-step'+(i===stepIdx?' is-on':(done?' is-done':''))+'\" data-i=\"'+i+'\"><span class=\"n\">'+(done?'\u2713':(i+1))+'<\/span>'+s[1]+'<\/button>';});\r\n    $('tcSteps').innerHTML=h;\r\n    curLabel=list[stepIdx][1]; showPanel(list[stepIdx][0]);\r\n    $('tcJourneyHead').lastChild.textContent=JNAME[persona];\r\n    $('tcRegionWrap').style.display=(persona==='coowner')?'none':'';\r\n    var omx=$('omExpand'); if(omx)omx.style.display=(persona==='rentout')?'':'none';\r\n    if(persona!=='rentout'){var omb=$('om_box'); if(omb)omb.classList.remove('is-open');}\r\n    $('navBack').disabled=(stepIdx===0);\r\n    var last=(stepIdx===list.length-1);\r\n    $('navNext').disabled=last; $('navNext').textContent=last?'Done':'Next \u2192';\r\n    $('navInd').textContent=(list.length>1?'Step '+(stepIdx+1)+' of '+list.length+' \u00b7 ':'')+list[stepIdx][1];\r\n    $('tcLead').classList.toggle('is-on',last);\r\n    renderSummary();\r\n  }\r\n  function gotoStep(i){var n=STEPS[persona].length; stepIdx=Math.max(0,Math.min(n-1,i)); renderSteps(); $('tcSteps').scrollIntoView({behavior:'smooth',block:'nearest'});}\r\n  function setPersona(p){persona=p;stepIdx=0;root.querySelectorAll('#tcPersona .tc-pcard').forEach(function(c){c.classList.toggle('is-on',c.dataset.persona===p)});recalc();renderSteps();}\r\n  root.querySelectorAll('#tcPersona .tc-pcard').forEach(function(c){c.addEventListener('click',function(){setPersona(c.dataset.persona);})});\r\n  $('tcSteps').addEventListener('click',function(e){var b=e.target.closest('.tc-step');if(b)gotoStep(parseInt(b.dataset.i,10));});\r\n  $('navBack').addEventListener('click',function(){gotoStep(stepIdx-1);});\r\n  $('navNext').addEventListener('click',function(){gotoStep(stepIdx+1);});\r\n\r\n  \/* ---------- wiring ---------- *\/\r\n  root.querySelectorAll('#tcRegion .tc-seg-btn').forEach(function(b){b.addEventListener('click',function(){root.querySelectorAll('#tcRegion .tc-seg-btn').forEach(function(x){x.classList.remove('is-on')});b.classList.add('is-on');region=b.dataset.region;fillMunis();recalc()})});\r\n  $('s_hold').addEventListener('input',function(){var v=this.value;$('s_holdLbl').textContent=v+\" year\"+(v==1?\"\":\"s\");$('s_holdLbl2').textContent=v+\" year\"+(v==1?\"\":\"s\")});\r\n  $('s_growth').addEventListener('input',function(){var v=pcN(parseFloat(this.value))+\"\/yr\";$('s_grLbl').textContent=v;$('s_grLbl2').textContent=v});\r\n  $('o_muni').addEventListener('change',function(){var m=R.regions[region].munis[this.value];if(m)$('o_ibirate').value=(m.ibi*100).toFixed(2).replace('.',',');recalc();});\r\n  $('s_plusMuni').addEventListener('change',function(){var m=R.regions[region].munis[this.value];if(m)$('s_plusRate').value=(''+m.plus).replace('.',',');recalc();});\r\n  root.querySelectorAll('input,select').forEach(function(el){el.addEventListener('input',recalc)});\r\n\r\n  \/* ---------- lead (email only; Mojo sends the PDF) ---------- *\/\r\n  $('leadBtn').addEventListener('click',function(){\r\n    var name=$('tc_name').value.trim(), email=$('tc_email').value.trim(), mobile=$('tc_mobile').value.trim();\r\n    var body=root.querySelector('.tc-panel.is-on .tc-result').innerText;\r\n    var b=\"Name: \"+name+\"\\nEmail: \"+email+\"\\nMobile: \"+mobile+\"\\nRegion: \"+R.regions[region].name+\"\\nSection: \"+curLabel+\"\\n\\n\"+body+\"\\n\\n\u2014 Sent from the Mojo property calculator (busy-goldstine.212-227-153-4.plesk.page)\";\r\n    window.location.href=\"mailto:info@busy-goldstine.212-227-153-4.plesk.page?subject=\"+encodeURIComponent(\"My Mojo \"+curLabel+\" estimate\"+(name?\" \u2014 \"+name:\"\"))+\"&body=\"+encodeURIComponent(b);\r\n  });\r\n\r\n  \/* ---------- reset all fields ---------- *\/\r\n  var DEFAULTS=[];\r\n  $('resetBtn').addEventListener('click',function(){\r\n    region='AND';\r\n    root.querySelectorAll('#tcRegion .tc-seg-btn').forEach(function(x){x.classList.toggle('is-on',x.dataset.region==='AND')});\r\n    DEFAULTS.forEach(function(d){var el=d[0];\r\n      if(el.classList.contains('tc-money'))el.value='';\r\n      else if(el.type==='checkbox')el.checked=d[1];\r\n      else el.value=d[1];});\r\n    fillMunis();\r\n    setPersona('buyer');\r\n    root.scrollIntoView({behavior:'smooth',block:'start'});\r\n  });\r\n\r\n  fillMunis(); $('y_costs').value=grp(String(ownOpSum())); recalc(); setPersona('buyer');\r\n  root.querySelectorAll('input,select').forEach(function(el){DEFAULTS.push([el,el.type==='checkbox'?el.checked:el.value]);});\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e58e8c2 e-con-full empty-boxes e-flex e-con e-child\" data-id=\"e58e8c2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Expert Advice on Buying, Selling &amp; Spanish Laws Property cost, tax &amp; ROI calculator Work out the real cost, taxes and after-tax return of buying, owning, renting out, selling, financing and co-owning property on the Costa del Sol &amp; Mallorca. Instant and free to use. Every Spanish tax in one place \u2014 ITP, IBI, non-resident [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-20143","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/wp-json\/wp\/v2\/pages\/20143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/wp-json\/wp\/v2\/comments?post=20143"}],"version-history":[{"count":1,"href":"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/wp-json\/wp\/v2\/pages\/20143\/revisions"}],"predecessor-version":[{"id":20148,"href":"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/wp-json\/wp\/v2\/pages\/20143\/revisions\/20148"}],"wp:attachment":[{"href":"https:\/\/busy-goldstine.212-227-153-4.plesk.page\/sv\/wp-json\/wp\/v2\/media?parent=20143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}