{"id":1678,"date":"2026-09-15T12:10:54","date_gmt":"2026-09-15T12:10:54","guid":{"rendered":"https:\/\/villasrivero.com\/?page_id=1678"},"modified":"2026-09-15T12:13:46","modified_gmt":"2026-09-15T12:13:46","slug":"dashboard-tasarte","status":"publish","type":"page","link":"https:\/\/villasrivero.com\/en\/dashboard-tasarte\/","title":{"rendered":"Dashboard Casas Tasarte"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1678\" class=\"elementor elementor-1678\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fb8e8dd e-flex e-con-boxed e-con e-parent\" data-id=\"fb8e8dd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-475489c elementor-widget elementor-widget-html\" data-id=\"475489c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!doctype html>\n<html lang=\"es\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<title>Villas Rivero \u00b7 Portfolio Dashboard<\/title>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@4.4.1\/dist\/chart.umd.min.js\"><\/script>\n<style>\n:root{--navy:#242B59;--sea:#4ABCC5;--sand:#D1B38C;--bg:#F7F6F3;--card:#fff;--line:#E4E1DA;--text:#171717;--muted:#6D6962;--up:#5BAE6A;--dn:#C97962;--upbg:#EEF8F0;--dnbg:#F8EDE8;--soft:#F3F1EC}\n*{box-sizing:border-box}\nbody{margin:0;background:var(--bg);font-family:Arial,Helvetica,sans-serif;color:var(--text);line-height:1.5}\n.wrap{max-width:1160px;margin:0 auto;padding:0 28px}\nheader{background:linear-gradient(135deg,#242B59,#30386C);color:#fff;padding:36px 0 32px;border-bottom:4px solid var(--sand)}\n.head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}\n.brand{font-family:Georgia,serif;font-style:italic;font-size:31px}.brand span{color:var(--sea)}\n.kicker{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:#C2C7DC;margin-top:18px}\nh1{font-family:Georgia,serif;font-size:35px;font-weight:400;margin:5px 0 0}\n.meta{font-size:12px;color:#C7CBDE;line-height:1.7;text-align:right}.meta b{color:#fff}\nnav{background:rgba(255,255,255,.97);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}\n.nav{display:flex;overflow:auto;gap:2px}.nav button{border:0;background:none;padding:15px 16px;font-size:12px;color:var(--muted);cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent}\n.nav button.on{color:var(--navy);font-weight:700;border-bottom-color:var(--sea)}\nmain{padding:36px 0 58px}.pane{display:none}.pane.on{display:block}section{margin-bottom:48px}\n.eyebrow{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:#967A58;font-weight:700;margin-bottom:7px}\nh2{font-family:Georgia,serif;font-size:29px;font-weight:400;color:var(--navy);margin:0 0 7px}\n.lead{font-size:14px;color:#5D5953;max-width:940px;margin:0 0 22px}\n.hero{background:linear-gradient(135deg,#242B59,#333C74);border-radius:10px;color:#fff;padding:30px;box-shadow:0 14px 32px rgba(36,43,89,.13)}\n.hero-title{font-size:10px;text-transform:uppercase;letter-spacing:1.5px;color:#C9CDDF;margin-bottom:18px}\n.hero-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:19px}\n.hlabel{font-size:10px;text-transform:uppercase;letter-spacing:1.1px;color:#C2C7DA}\n.hvalue{font-family:Georgia,serif;font-size:38px;line-height:1.05;color:var(--sea);margin-top:6px}\n.hdesc{font-size:11px;color:#CDD1E1;margin-top:7px}.hdesc strong{color:#F2D5B0}\n.hero-note{margin-top:20px;background:#1C224A;padding:13px 15px;border-radius:6px;font-size:12px;color:#DDE0EC}.hero-note strong{color:#fff}\n\n.glossary{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-top:18px}\n.gcard{background:#fff;border:1px solid var(--line);border-radius:9px;padding:17px}\n.gcard .gtitle{font-family:Georgia,serif;font-size:20px;color:var(--navy);margin-bottom:6px}\n.gcard p{font-size:12px;color:#57534D;margin:0}\n.gcard.focus{background:var(--upbg);border-color:#CFE7D6;box-shadow:0 0 0 1px rgba(91,174,106,.05)}\n.gcard.focus .gtitle{color:#33784A}\n.focus-note{margin-top:13px;background:#fff;border-left:4px solid var(--up);border-radius:0 8px 8px 0;padding:17px 19px}\n.focus-note strong{color:#2D6E3D}\n.focus-note .bigline{font-family:Georgia,serif;font-size:22px;color:var(--navy);display:block;margin-bottom:6px}\n.focus-note p{font-size:13px;color:#504C46;margin:0}\n.example{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:13px}\n.ex{background:#F8F7F4;border-radius:7px;padding:12px}\n.ex .lab{font-size:9px;text-transform:uppercase;color:var(--muted);letter-spacing:.8px}\n.ex .val{font-family:Georgia,serif;font-size:20px;color:var(--navy);margin-top:3px}\n.ex .delta{font-size:11px;font-weight:700;margin-top:2px}\n\n.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:18px}\n.kpi{background:#fff;border:1px solid var(--line);border-radius:9px;padding:18px}\n.kpi .lab{font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}\n.kpi .vals{font-family:Georgia,serif;font-size:25px;color:var(--navy);margin:6px 0}\n.delta{font-size:12px;font-weight:700}.up{color:var(--up)}.dn{color:var(--dn)}\n\n.block-panel{background:#fff;border:1px solid var(--line);border-radius:10px;padding:23px;margin-top:18px}\n.block-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:16px}\n.block-kpi{background:#F8F7F4;border-radius:8px;padding:15px}\n.block-kpi .lab{font-size:9px;letter-spacing:.9px;text-transform:uppercase;color:var(--muted)}\n.block-kpi .val{font-family:Georgia,serif;font-size:25px;color:var(--navy);margin:4px 0}\n.block-kpi .sub{font-size:10.5px;color:var(--muted)}\n.callout{margin-top:15px;background:var(--upbg);border-left:4px solid var(--up);border-radius:0 8px 8px 0;padding:17px 18px;font-size:13px;color:#3F5147}\n.callout strong{color:#2D6E3D}\n\n.property-blocks{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:16px}\n.pb-card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:18px}\n.pb-card.highlight{background:#FFFCF8;border-color:#E5D3BA}\n.pb-name{font-family:Georgia,serif;font-size:20px;color:var(--navy);margin-bottom:3px}\n.pb-sub{font-size:10px;color:var(--muted);margin-bottom:12px}\n.pb-main{display:grid;grid-template-columns:1fr 1fr;gap:8px}\n.pb-box{background:#F7F6F3;border-radius:6px;padding:10px}\n.pb-box .l{font-size:8.5px;text-transform:uppercase;color:var(--muted)}\n.pb-box .v{font-family:Georgia,serif;font-size:18px;color:var(--navy)}\n.pb-stats{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:9px}\n.pb-stat{border:1px solid var(--line);border-radius:6px;padding:8px}\n.pb-stat .l{font-size:8px;text-transform:uppercase;color:var(--muted)}\n.pb-stat .v{font-family:Georgia,serif;font-size:16px;color:var(--navy)}\n.pb-read{font-size:10.5px;line-height:1.55;color:#555149;background:#F8F7F4;border-radius:6px;padding:10px;margin-top:10px}\n.pb-read strong{color:var(--navy)}\n.history{margin-top:30px;background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}\n.history summary{cursor:pointer;list-style:none;padding:18px 21px;font-family:Georgia,serif;font-size:21px;color:var(--navy);display:flex;justify-content:space-between;align-items:center}\n.history summary::-webkit-details-marker{display:none}\n.history summary:after{content:'+';font-family:Arial,sans-serif;font-size:22px;color:var(--sea)}\n.history[open] summary:after{content:'\u2212'}\n.history-body{border-top:1px solid var(--line);padding:20px 21px 23px}\n.history-controls{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.4fr;gap:10px}\n.history-controls label{font-size:9px;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);font-weight:700}\n.history-controls select{width:100%;margin-top:5px;border:1px solid var(--line);background:#fff;border-radius:6px;padding:10px;color:var(--navy)}\n.history-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}\n.hk{background:#F8F7F4;border-radius:7px;padding:13px}\n.hk .l{font-size:8.5px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted)}\n.hk .pair{font-family:Georgia,serif;font-size:19px;color:var(--navy);margin:4px 0}\n.hk .chg{font-size:10.5px;font-weight:700}\n.history-note{margin-top:12px;font-size:11px;color:var(--muted);line-height:1.55}\n.hist-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:16px}\n.hist-summary-card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:18px}\n.hist-summary-name{font-family:Georgia,serif;font-size:20px;color:var(--navy);margin-bottom:10px}\n.hist-mini-table{width:100%;border-collapse:collapse;font-size:12px}\n.hist-mini-table th{font-size:8.5px;text-transform:uppercase;color:var(--muted);font-weight:700;padding:7px 5px;border-bottom:1px solid var(--line);text-align:right}\n.hist-mini-table th:first-child,.hist-mini-table td:first-child{text-align:left}\n.hist-mini-table td{padding:8px 5px;border-bottom:1px solid #F0EEE9;text-align:right;color:#504C46}\n.hist-mini-table td.revpar{background:var(--upbg);color:#2D6E3D;font-weight:700}\n.hist-toolbar{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin:18px 0}\n.hist-toolbar label{font-size:9px;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);font-weight:700}\n.hist-toolbar select{display:block;margin-top:5px;border:1px solid var(--line);background:#fff;border-radius:6px;padding:10px 12px;color:var(--navy);min-width:220px}\n.hist-table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:9px;padding:8px 12px 14px}\n.hist-table{width:100%;border-collapse:collapse;min-width:860px;font-size:12px}\n.hist-table th{padding:10px 8px;border-bottom:1px solid var(--line);font-size:8.5px;text-transform:uppercase;letter-spacing:.65px;color:var(--muted);text-align:right;white-space:nowrap}\n.hist-table th:first-child,.hist-table td:first-child{text-align:left}\n.hist-table td{padding:10px 8px;border-bottom:1px solid #F0EEE9;text-align:right}\n.hist-table .rp-head{background:var(--upbg);color:#2D6E3D}\n.hist-table .rp{background:#F8FCF9;color:#2D6E3D;font-weight:700}\n.hist-year-note{font-size:10px;color:var(--muted);margin-top:10px;line-height:1.55}\n.hist-callout{background:#F8F7F4;border-left:4px solid var(--sea);padding:14px 16px;border-radius:0 7px 7px 0;font-size:12px;color:#504C46;margin-top:14px}\n\n\n\n.message{margin-top:15px;background:#fff;border-left:4px solid var(--sea);border-radius:0 8px 8px 0;padding:18px 20px}\n.message .headline{font-family:Georgia,serif;color:var(--navy);font-size:22px;display:block;margin-bottom:5px}\n.message p{margin:0;font-size:13px;color:#504C46}\n\n.card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:21px;box-shadow:0 2px 10px rgba(0,0,0,.025)}\n.chartbox{height:320px}\n\n.month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}\n.month{background:#fff;border:1px solid var(--line);border-radius:9px;padding:17px;min-height:345px}\n.month.closed{border-top:4px solid var(--sea)}.month.live{border-top:4px solid var(--sand)}.month.future{border-top:4px solid #B9B3A8}\n.mname{font-family:Georgia,serif;font-size:21px;color:var(--navy)}\n.status{font-size:9px;text-transform:uppercase;letter-spacing:.9px;color:var(--muted);font-weight:700;margin-top:2px}\n.compare{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}\n.box{background:#F7F6F3;border-radius:6px;padding:10px}\n.box .yr{font-size:9px;text-transform:uppercase;color:var(--muted)}.box .val{font-family:Georgia,serif;font-size:20px;color:var(--navy)}\n.result{font-size:11px;margin-top:10px;padding:7px 9px;border-radius:5px}\n.good{background:var(--upbg);color:var(--up);font-weight:700}.bad{background:var(--dnbg);color:var(--dn);font-weight:700}.neutral{background:#F4F1EA;color:#625D55}\n.metric-pair{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:9px}\n.micro{border:1px solid var(--line);border-radius:6px;padding:8px;background:#FCFBF9}\n.micro .l{font-size:8.5px;text-transform:uppercase;color:var(--muted)}\n.micro .v{font-family:Georgia,serif;font-size:17px;color:var(--navy)}\n.micro .sub{font-size:9px;color:var(--muted)}\n.blockline{margin-top:9px;padding:9px 10px;border-radius:6px;background:#F3F1EC;font-size:10.5px;color:#554F48}\n.blockline b{color:var(--navy)}\n\n.detail-panel{margin-top:34px;padding-top:27px;border-top:2px solid var(--line)}\n.month-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0 18px}\n.month-tabs button{border:1px solid var(--line);background:#fff;color:var(--muted);padding:8px 11px;border-radius:20px;font-size:11px;cursor:pointer}\n.month-tabs button.on{background:var(--navy);color:#fff;border-color:var(--navy)}\n.property-month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}\n.pm-card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:18px}\n.pm-name{font-family:Georgia,serif;font-size:20px;color:var(--navy)}\n.pm-status{font-size:9px;text-transform:uppercase;color:var(--muted);margin-top:2px}\n.pm-revenue{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:13px}\n.pm-r{background:#F7F6F3;border-radius:6px;padding:10px}\n.pm-r .yr{font-size:8px;text-transform:uppercase;color:var(--muted)}\n.pm-r .val{font-family:Georgia,serif;font-size:18px;color:var(--navy)}\n.pm-kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin-top:9px}\n.pm-kpi{border:1px solid var(--line);border-radius:6px;padding:8px}\n.pm-kpi .lab{font-size:8px;text-transform:uppercase;color:var(--muted)}\n.pm-kpi .val{font-family:Georgia,serif;font-size:16px;color:var(--navy)}\n.pm-kpi .sub{font-size:9px;color:var(--muted)}\n.pm-note{font-size:10.5px;color:#5B5750;background:#F8F7F4;border-radius:6px;padding:9px;margin-top:9px}\n\n.apt-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}\n.apt{background:#fff;border:1px solid var(--line);border-radius:9px;padding:19px}\n.apt-name{font-family:Georgia,serif;font-size:20px;color:var(--navy);margin-bottom:12px}\n.apt-cols{display:grid;grid-template-columns:1fr 1fr;gap:9px}\n.aptbox{background:#F7F6F3;border-radius:6px;text-align:center;padding:11px}\n.aptbox .yr{font-size:9px;text-transform:uppercase;color:var(--muted)}.aptbox .val{font-family:Georgia,serif;font-size:21px;color:var(--navy)}\n.apt-change{font-size:12px;font-weight:700;margin-top:10px}\n.apt-metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}\n.am{border:1px solid var(--line);border-radius:6px;padding:9px}\n.am .l{font-size:8.5px;text-transform:uppercase;color:var(--muted)}.am .v{font-family:Georgia,serif;font-size:16px;color:var(--navy)}.small{font-size:9px;color:var(--muted)}\n.apt-note{font-size:11px;line-height:1.55;margin-top:11px;padding:10px;border-radius:6px;background:#F8F7F4;color:#5A564F}\n\n.footnote{font-size:11px;color:var(--muted);margin-top:12px;line-height:1.55}\nfooter{border-top:1px solid var(--line);padding:23px 0 30px;font-size:10.5px;color:var(--muted)}\n@media(max-width:1000px){.glossary{grid-template-columns:repeat(3,1fr)}.hero-grid,.kpis,.block-grid{grid-template-columns:1fr 1fr}.month-grid,.apt-grid,.property-month-grid,.property-blocks,.hist-summary-grid{grid-template-columns:1fr 1fr}.history-controls{grid-template-columns:1fr 1fr}.history-kpis{grid-template-columns:1fr 1fr}}\n@media(max-width:620px){.wrap{padding:0 15px}.meta{text-align:left}.glossary,.hero-grid,.kpis,.block-grid,.month-grid,.apt-grid,.property-month-grid,.property-blocks,.hist-summary-grid,.example,.history-controls,.history-kpis{grid-template-columns:1fr}}\n<\/style>\n<\/head>\n<body>\n<header><div class=\"wrap\"><div class=\"head\">\n<div><div class=\"brand\">Villas <span>Rivero<\/span><\/div><div class=\"kicker\">Portfolio Dashboard<\/div><h1>Tasarte \u00b7 Lengua de Lava \u00b7 Casita Feliz<\/h1><\/div>\n<div class=\"meta\"><b>3 alojamientos<\/b><br>2025 cerrado \u00b7 2026 a fecha de hoy<br>Actualizado \u00b7 15\/09\/2026<\/div>\n<\/div><\/div><\/header>\n\n<nav><div class=\"wrap nav\">\n<button class=\"on\" data-pane=\"resumen\">Situaci\u00f3n general<\/button>\n<button data-pane=\"meses\">Mes a mes<\/button>\n<button data-pane=\"alojamientos\">Alojamientos<\/button>\n<button data-pane=\"historico\">Hist\u00f3rico 2024\u20132026<\/button>\n<\/div><\/nav>\n\n<main><div class=\"wrap\">\n\n<div class=\"pane on\" id=\"resumen\">\n<section>\n<div class=\"eyebrow\">Visi\u00f3n global<\/div>\n<h2>Situaci\u00f3n general del portfolio<\/h2>\n<p class=\"lead\">2025 es un a\u00f1o cerrado. 2026 refleja la producci\u00f3n ya asegurada a 15 de septiembre y todav\u00eda tiene meses por completar.<\/p>\n\n<div class=\"hero\">\n<div class=\"hero-title\">2025 completo vs 2026 a fecha de hoy<\/div>\n<div class=\"hero-grid\">\n<div><div class=\"hlabel\">Revenue<\/div><div class=\"hvalue\" id=\"heroRev\"><\/div><div class=\"hdesc\"><strong id=\"rev25\"><\/strong> \u2192 <strong id=\"rev26\"><\/strong><\/div><\/div>\n<div><div class=\"hlabel\">Noches<\/div><div class=\"hvalue\" id=\"heroN\"><\/div><div class=\"hdesc\"><strong id=\"n25\"><\/strong> \u2192 <strong id=\"n26\"><\/strong><\/div><\/div>\n<div><div class=\"hlabel\">RevPAR<\/div><div class=\"hvalue\" id=\"heroRp\"><\/div><div class=\"hdesc\"><strong id=\"rp25\"><\/strong> \u2192 <strong id=\"rp26\"><\/strong><\/div><\/div>\n<div><div class=\"hlabel\">Sep\u2013dic 2026<\/div><div class=\"hvalue\" id=\"futureRev\"><\/div><div class=\"hdesc\"><strong id=\"futureN\"><\/strong> noches ya reservadas<\/div><\/div>\n<\/div>\n<div class=\"hero-note\"><strong>La cifra que importa al cierre del a\u00f1o es el RevPAR:<\/strong> indica cu\u00e1nto dinero ha producido cada noche que realmente estaba disponible para vender.<\/div>\n<\/div>\n\n<div class=\"eyebrow\" style=\"margin-top:28px\">C\u00f3mo leer estas m\u00e9tricas<\/div>\n<h2 style=\"font-size:25px\">En sencillo: qu\u00e9 significa cada KPI<\/h2>\n<div class=\"glossary\">\n<div class=\"gcard\"><div class=\"gtitle\">Revenue<\/div><p>Es el dinero generado. Al final, es la cifra que queremos hacer crecer.<\/p><\/div>\n<div class=\"gcard\"><div class=\"gtitle\">ADR<\/div><p>Precio medio de las noches que s\u00ed se vendieron. <strong>No dice cu\u00e1ntas noches quedaron vac\u00edas.<\/strong><\/p><\/div>\n<div class=\"gcard focus\"><div class=\"gtitle\">RevPAR \u2605<\/div><p>Dinero que produce cada noche disponible. <strong>Combina precio y capacidad de llenar.<\/strong> Es la m\u00e9trica m\u00e1s importante para medir rendimiento.<\/p><\/div>\n<div class=\"gcard\"><div class=\"gtitle\">Ocupaci\u00f3n<\/div><p>Porcentaje de noches disponibles que conseguimos vender.<\/p><\/div>\n<div class=\"gcard\"><div class=\"gtitle\">LOS<\/div><p>Duraci\u00f3n media de las estancias. Un LOS m\u00e1s alto significa reservas m\u00e1s largas y menos rotaci\u00f3n.<\/p><\/div>\n<\/div>\n\n<div class=\"focus-note\">\n<span class=\"bigline\">Un ADR alto no significa necesariamente ganar m\u00e1s dinero.<\/span>\n<p>Si subimos mucho el precio pero dejamos demasiadas noches vac\u00edas, el ADR puede verse bonito mientras el alojamiento produce menos. Por eso hay que mirar el <strong>RevPAR al final del a\u00f1o<\/strong>: nos dice cu\u00e1nto ha producido realmente cada noche que pod\u00edamos vender.<\/p>\n<div class=\"example\">\n<div class=\"ex\"><div class=\"lab\">ADR \u00b7 ene\u2013ago<\/div><div class=\"val\">123,44 \u20ac \u2192 117,09 \u20ac<\/div><div class=\"delta dn\">-5,1%<\/div><\/div>\n<div class=\"ex\"><div class=\"lab\">RevPAR comercializable \u00b7 ene\u2013ago<\/div><div class=\"val\">68,17 \u20ac \u2192 80,83 \u20ac<\/div><div class=\"delta up\">+18,6%<\/div><\/div>\n<div class=\"ex\"><div class=\"lab\">Ocupaci\u00f3n comercializable \u00b7 ene\u2013ago<\/div><div class=\"val\">55,2% \u2192 69,0%<\/div><div class=\"delta up\">+13,8 pp<\/div><\/div>\n<\/div>\n<p style=\"margin-top:10px\"><strong>Este portfolio es un buen ejemplo:<\/strong> si mir\u00e1semos \u00fanicamente el ADR parecer\u00eda que el rendimiento empeora. Sin embargo, cada noche realmente comercializable est\u00e1 produciendo un 18,6% m\u00e1s.<\/p>\n<\/div>\n\n<div class=\"kpis\">\n<div class=\"kpi\"><div class=\"lab\">ADR<\/div><div class=\"vals\" id=\"adrVals\"><\/div><div class=\"delta\" id=\"adrDelta\"><\/div><\/div>\n<div class=\"kpi\"><div class=\"lab\">Ocupaci\u00f3n sobre inventario comercializable<\/div><div class=\"vals\" id=\"occVals\"><\/div><div class=\"delta\" id=\"occDelta\"><\/div><\/div>\n<div class=\"kpi\"><div class=\"lab\">Noches bloqueadas<\/div><div class=\"vals\" id=\"blockVals\"><\/div><div class=\"delta\" id=\"blockDelta\"><\/div><\/div>\n<div class=\"kpi\"><div class=\"lab\">Noches comercializables<\/div><div class=\"vals\" id=\"sellVals\"><\/div><div class=\"delta\" id=\"sellDelta\"><\/div><\/div>\n<\/div>\n\n<div class=\"block-panel\">\n<div class=\"eyebrow\">Periodo comparable cerrado<\/div>\n<h2 style=\"font-size:25px\">Enero\u2013agosto: el efecto de los bloqueos es muy relevante<\/h2>\n<p class=\"lead\" style=\"margin-bottom:0\">Comparando \u00fanicamente meses ya cerrados, se ve mejor qu\u00e9 parte del resultado responde a rendimiento y qu\u00e9 parte a menor capacidad real para vender.<\/p>\n<div class=\"block-grid\">\n<div class=\"block-kpi\"><div class=\"lab\">Revenue<\/div><div class=\"val\">43.699 \u20ac \u2192 39.928 \u20ac<\/div><div class=\"sub\">-8,6%<\/div><\/div>\n<div class=\"block-kpi\"><div class=\"lab\">Noches bloqueadas<\/div><div class=\"val\">88 \u2192 235<\/div><div class=\"sub\">+147 noches bloqueadas<\/div><\/div>\n<div class=\"block-kpi\"><div class=\"lab\">Noches comercializables<\/div><div class=\"val\">641 \u2192 494<\/div><div class=\"sub\">-22,9% de capacidad real<\/div><\/div>\n<div class=\"block-kpi\"><div class=\"lab\">RevPAR comercializable<\/div><div class=\"val\">68,17 \u20ac \u2192 80,83 \u20ac<\/div><div class=\"sub\" style=\"color:var(--up);font-weight:700\">+18,6%<\/div><\/div>\n<\/div>\n<div class=\"callout\"><strong>La lectura cambia:<\/strong> entre enero y agosto el revenue baja un 8,6%, pero el inventario realmente disponible para vender baja un 22,9%. La producci\u00f3n por cada noche comercializable mejora un <strong>18,6%<\/strong> y la ocupaci\u00f3n sobre ese inventario pasa del <strong>55,2%<\/strong> al <strong>69,0%<\/strong>.<\/div>\n<\/div>\n\n<div class=\"eyebrow\" style=\"margin-top:28px\">Bloqueos por alojamiento<\/div>\n<h2 style=\"font-size:25px\">No todas las viviendas han tenido la misma disponibilidad<\/h2>\n<p class=\"lead\">La comparaci\u00f3n mejora cuando se analiza cu\u00e1nto inventario estuvo realmente disponible para vender en cada alojamiento.<\/p>\n<div class=\"property-blocks\" id=\"propertyBlockGrid\"><\/div>\n<div class=\"callout\"><strong>Dato clave:<\/strong> Casita Feliz concentra aproximadamente el <strong>60% de las noches bloqueadas adicionales<\/strong> del portfolio entre enero y agosto de 2026. Por eso su revenue nominal debe leerse junto a su disponibilidad real.<\/div>\n\n<details class=\"history\">\n<summary>Comparativa hist\u00f3rica \u00b7 2024, 2025 y 2026<\/summary>\n<div class=\"history-body\">\n<p class=\"lead\" style=\"margin-bottom:14px\">Esta comparativa permanece cerrada por defecto para no mezclar a\u00f1os en la lectura principal. \u00c1brela solo cuando quieras contrastar un alojamiento, un mes concreto o el portfolio completo.<\/p>\n<div class=\"history-controls\">\n<label>Alcance\n<select id=\"histScope\">\n<option value=\"portfolio\">Portfolio agregado<\/option>\n<option value=\"Tasarte\">Tasarte<\/option>\n<option value=\"Lengua de Lava\">Lengua de Lava<\/option>\n<option value=\"Casita Feliz\">Casita Feliz<\/option>\n<\/select><\/label>\n<label>A\u00f1o A\n<select id=\"histYearA\"><option>2024<\/option><option>2025<\/option><option>2026<\/option><\/select><\/label>\n<label>A\u00f1o B\n<select id=\"histYearB\"><option>2025<\/option><option>2024<\/option><option>2026<\/option><\/select><\/label>\n<label>Periodo\n<select id=\"histPeriod\">\n<option value=\"year\">A\u00f1o completo<\/option>\n<option value=\"1\">Enero<\/option><option value=\"2\">Febrero<\/option><option value=\"3\">Marzo<\/option>\n<option value=\"4\">Abril<\/option><option value=\"5\">Mayo<\/option><option value=\"6\">Junio<\/option>\n<option value=\"7\">Julio<\/option><option value=\"8\">Agosto<\/option><option value=\"9\">Septiembre<\/option>\n<option value=\"10\">Octubre<\/option><option value=\"11\">Noviembre<\/option><option value=\"12\">Diciembre<\/option>\n<\/select><\/label>\n<\/div>\n<div class=\"history-kpis\" id=\"historyKpis\"><\/div>\n<div class=\"history-note\">Para que 2024, 2025 y 2026 sean comparables entre s\u00ed, esta herramienta hist\u00f3rica utiliza RevPAR y ocupaci\u00f3n sobre calendario natural. El an\u00e1lisis operativo 2025\u20132026 del resto del dashboard sigue mostrando adem\u00e1s el efecto real de los bloqueos. 2026 todav\u00eda no es un a\u00f1o cerrado.<\/div>\n<\/div>\n<\/details>\n<\/section>\n\n<section>\n<div class=\"eyebrow\">Bloqueos<\/div><h2>C\u00f3mo cambi\u00f3 la disponibilidad mes a mes<\/h2>\n<p class=\"lead\">Porcentaje de noches bloqueadas sobre el inventario de las tres propiedades.<\/p>\n<div class=\"card\"><div class=\"chartbox\"><canvas id=\"blockChart\"><\/canvas><\/div><\/div>\n<\/section>\n\n<section>\n<div class=\"eyebrow\">Rendimiento<\/div><h2>ADR y RevPAR sobre inventario comercializable<\/h2>\n<p class=\"lead\">El ADR por s\u00ed solo no cuenta toda la historia. El RevPAR incorpora cu\u00e1nto conseguimos producir con las noches realmente disponibles.<\/p>\n<div class=\"card\"><div class=\"chartbox\"><canvas id=\"mainChart\"><\/canvas><\/div><\/div>\n<\/section>\n<\/div>\n\n<div class=\"pane\" id=\"meses\">\n<section>\n<div class=\"eyebrow\">Detalle mensual<\/div><h2>Mes a mes \u00b7 portfolio agregado<\/h2>\n<p class=\"lead\">Se mantiene la lectura conjunta de las tres propiedades. Enero\u2013agosto est\u00e1n cerrados; septiembre est\u00e1 en curso y octubre\u2013diciembre siguen abiertos a nuevas reservas.<\/p>\n<div class=\"month-grid\" id=\"monthGrid\"><\/div>\n\n<div class=\"detail-panel\">\n<div class=\"eyebrow\">Detalle individual<\/div>\n<h2>Mes a mes \u00b7 por alojamiento<\/h2>\n<p class=\"lead\">Selecciona un mes para ver Tasarte, Lengua de Lava y Casita Feliz por separado. Incluye Revenue, noches, ADR, RevPAR, Ocupaci\u00f3n, LOS y el nivel de bloqueos de cada vivienda.<\/p>\n<div class=\"month-tabs\" id=\"monthTabs\"><\/div>\n<div class=\"property-month-grid\" id=\"propertyMonthGrid\"><\/div>\n<div class=\"footnote\">En el detalle individual, Ocupaci\u00f3n y RevPAR se ajustan a las noches realmente comercializables de cada alojamiento, descontando los bloqueos registrados.<\/div>\n<\/div>\n<\/section>\n<\/div>\n\n<div class=\"pane\" id=\"alojamientos\">\n<section>\n<div class=\"eyebrow\">Detalle por activo<\/div><h2>Situaci\u00f3n de cada alojamiento<\/h2>\n<p class=\"lead\">La comparaci\u00f3n principal se centra en enero\u2013agosto, el periodo cerrado en ambos a\u00f1os. Tambi\u00e9n se muestra la producci\u00f3n anual ya asegurada.<\/p>\n<div class=\"apt-grid\" id=\"aptGrid\"><\/div>\n<div class=\"footnote\">Ocupaci\u00f3n y RevPAR individuales se calculan sobre el inventario realmente comercializable de cada vivienda, descontando los bloqueos registrados.<\/div>\n<\/section>\n<\/div>\n\n<div class=\"pane\" id=\"historico\">\n<section>\n<div class=\"eyebrow\">Evoluci\u00f3n hist\u00f3rica<\/div>\n<h2>Hist\u00f3rico 2024\u20132026<\/h2>\n<p class=\"lead\">Una vista de consulta para comparar la evoluci\u00f3n de cada alojamiento sin recargar la lectura principal del dashboard.<\/p>\n\n<div class=\"hist-callout\"><strong>C\u00f3mo leerlo:<\/strong> el ADR muestra el precio medio de las noches vendidas. El <strong>RevPAR<\/strong> muestra cu\u00e1nto produce cada noche disponible y ofrece una visi\u00f3n m\u00e1s completa del rendimiento. En 2026, los meses futuros siguen abiertos y no deben interpretarse como cierre definitivo.<\/div>\n\n<div class=\"hist-summary-grid\" id=\"histSummaryGrid\"><\/div>\n\n<div class=\"hist-toolbar\">\n<label>Alojamiento\n<select id=\"histPropertySelect\">\n<option>Tasarte<\/option>\n<option>Lengua de Lava<\/option>\n<option>Casita Feliz<\/option>\n<\/select>\n<\/label>\n<\/div>\n\n<div class=\"hist-table-wrap\">\n<table class=\"hist-table\" id=\"histMonthlyTable\"><\/table>\n<\/div>\n<div class=\"hist-year-note\">2024 y 2025 son a\u00f1os cerrados. 2026 refleja la producci\u00f3n disponible a 15\/09\/2026 y los \u00faltimos meses todav\u00eda pueden seguir incorporando reservas.<\/div>\n<\/section>\n<\/div>\n\n<\/div><\/main>\n\n<footer><div class=\"wrap\">Villas Rivero \u00b7 Portfolio Dashboard \u00b7 Tasarte \u00b7 Lengua de Lava \u00b7 Casita Feliz \u00b7 15\/09\/2026<\/div><\/footer>\n\n<script>\nconst D={\"meta\": {\"updated\": \"15\/09\/2026\", \"units\": 3}, \"months\": [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"], \"year2025\": {\"revenue\": 68062.64, \"nights\": 562, \"adr\": 121.11, \"revpar\": 71.49, \"occupancy\": 59.03, \"blocked\": 143, \"sellable\": 952}, \"year2026\": {\"revenue\": 59634.19, \"nights\": 503, \"adr\": 118.56, \"revpar\": 72.99, \"occupancy\": 61.57, \"blocked\": 278, \"sellable\": 817}, \"summary\": {\"revenueChange\": -12.38, \"nightsChange\": -10.5, \"adrChange\": -2.11, \"revparChange\": 2.09, \"occChangePP\": 2.53, \"sellableChange\": -14.18, \"futureRevenue\": 19705.73, \"futureNights\": 162}, \"closed\": {\"2025\": {\"revenue\": 43698.85, \"nights\": 354, \"blocked\": 88, \"sellable\": 641, \"adr\": 123.44, \"revpar\": 68.17, \"occupancy\": 55.23}, \"2026\": {\"revenue\": 39928.46, \"nights\": 341, \"blocked\": 235, \"sellable\": 494, \"adr\": 117.09, \"revpar\": 80.83, \"occupancy\": 69.03}, \"revenueChange\": -8.63, \"sellableChange\": -22.93, \"revparChange\": 18.56, \"occChangePP\": 13.8}, \"monthly\": {\"1\": {\"2025\": {\"revenue\": 7160.56, \"nights\": 59, \"blocked\": 13, \"units\": 93, \"adr\": 121.37, \"revpar\": 89.51}, \"2026\": {\"revenue\": 10436.81, \"nights\": 75, \"blocked\": 9, \"units\": 93, \"adr\": 139.16, \"revpar\": 124.25}}, \"2\": {\"2025\": {\"revenue\": 9320.95, \"nights\": 66, \"blocked\": 15, \"units\": 84, \"adr\": 141.23, \"revpar\": 135.09}, \"2026\": {\"revenue\": 7214.9, \"nights\": 51, \"blocked\": 31, \"units\": 84, \"adr\": 141.47, \"revpar\": 136.13}}, \"3\": {\"2025\": {\"revenue\": 9550.72, \"nights\": 70, \"blocked\": 12, \"units\": 93, \"adr\": 136.44, \"revpar\": 117.91}, \"2026\": {\"revenue\": 5100.93, \"nights\": 43, \"blocked\": 37, \"units\": 93, \"adr\": 118.63, \"revpar\": 91.09}}, \"4\": {\"2025\": {\"revenue\": 6725.93, \"nights\": 51, \"blocked\": 16, \"units\": 90, \"adr\": 131.88, \"revpar\": 90.89}, \"2026\": {\"revenue\": 4029.11, \"nights\": 30, \"blocked\": 27, \"units\": 90, \"adr\": 134.3, \"revpar\": 63.95}}, \"5\": {\"2025\": {\"revenue\": 1281.2, \"nights\": 12, \"blocked\": 7, \"units\": 93, \"adr\": 106.77, \"revpar\": 14.9}, \"2026\": {\"revenue\": 3446.72, \"nights\": 41, \"blocked\": 22, \"units\": 93, \"adr\": 84.07, \"revpar\": 48.55}}, \"6\": {\"2025\": {\"revenue\": 2888.5, \"nights\": 22, \"blocked\": 6, \"units\": 90, \"adr\": 131.3, \"revpar\": 34.39}, \"2026\": {\"revenue\": 2970.85, \"nights\": 35, \"blocked\": 29, \"units\": 90, \"adr\": 84.88, \"revpar\": 48.7}}, \"7\": {\"2025\": {\"revenue\": 3766.6, \"nights\": 33, \"blocked\": 9, \"units\": 93, \"adr\": 114.14, \"revpar\": 44.84}, \"2026\": {\"revenue\": 3363.1, \"nights\": 37, \"blocked\": 40, \"units\": 93, \"adr\": 90.89, \"revpar\": 63.45}}, \"8\": {\"2025\": {\"revenue\": 3004.41, \"nights\": 41, \"blocked\": 10, \"units\": 93, \"adr\": 73.28, \"revpar\": 36.2}, \"2026\": {\"revenue\": 3366.05, \"nights\": 29, \"blocked\": 40, \"units\": 93, \"adr\": 116.07, \"revpar\": 63.51}}, \"9\": {\"2025\": {\"revenue\": 4513.17, \"nights\": 47, \"blocked\": 15, \"units\": 90, \"adr\": 96.02, \"revpar\": 60.18}, \"2026\": {\"revenue\": 5367.93, \"nights\": 52, \"blocked\": 20, \"units\": 90, \"adr\": 103.23, \"revpar\": 76.68}}, \"10\": {\"2025\": {\"revenue\": 5522.43, \"nights\": 57, \"blocked\": 11, \"units\": 93, \"adr\": 96.88, \"revpar\": 67.35}, \"2026\": {\"revenue\": 5241.28, \"nights\": 48, \"blocked\": 10, \"units\": 93, \"adr\": 109.19, \"revpar\": 63.15}}, \"11\": {\"2025\": {\"revenue\": 6544.21, \"nights\": 50, \"blocked\": 14, \"units\": 90, \"adr\": 130.88, \"revpar\": 86.11}, \"2026\": {\"revenue\": 7837.64, \"nights\": 56, \"blocked\": 11, \"units\": 90, \"adr\": 139.96, \"revpar\": 99.21}}, \"12\": {\"2025\": {\"revenue\": 7783.98, \"nights\": 54, \"blocked\": 15, \"units\": 93, \"adr\": 144.15, \"revpar\": 99.79}, \"2026\": {\"revenue\": 1258.87, \"nights\": 6, \"blocked\": 2, \"units\": 93, \"adr\": 209.81, \"revpar\": 13.83}}}, \"properties\": [{\"name\": \"Tasarte\", \"full25\": 35929.82, \"full26\": 30935.29, \"n25\": 227, \"n26\": 194, \"adr25\": 158.28, \"adr26\": 159.46, \"closed25\": 23734.59, \"closed26\": 21404.12, \"closedChange\": -9.82}, {\"name\": \"Lengua de Lava\", \"full25\": 19046.36, \"full26\": 18123.04, \"n25\": 200, \"n26\": 195, \"adr25\": 95.23, \"adr26\": 92.94, \"closed25\": 11136.96, \"closed26\": 11223.78, \"closedChange\": 0.78}, {\"name\": \"Casita Feliz\", \"full25\": 13086.46, \"full26\": 10575.87, \"n25\": 135, \"n26\": 114, \"adr25\": 96.94, \"adr26\": 92.77, \"closed25\": 8827.3, \"closed26\": 7300.56, \"closedChange\": -17.3}], \"property_monthly\": {\"Tasarte\": {\"2025\": {\"1\": {\"revenue\": 3334.0, \"nights\": 21, \"adr\": 158.76, \"revpar_cal\": 107.55, \"occupancy_cal\": 67.7, \"los\": 14.0, \"active_res\": 2, \"blocked\": 3, \"blocked_pct\": 9.68, \"calendar_nights\": 31, \"sellable\": 28, \"occupancy_sell\": 75.0, \"revpar_sell\": 119.07}, \"2\": {\"revenue\": 3915.81, \"nights\": 23, \"adr\": 170.25, \"revpar_cal\": 139.85, \"occupancy_cal\": 82.1, \"los\": 8.2, \"active_res\": 4, \"blocked\": 5, \"blocked_pct\": 17.86, \"calendar_nights\": 28, \"sellable\": 23, \"occupancy_sell\": 100.0, \"revpar_sell\": 170.25}, \"3\": {\"revenue\": 4983.36, \"nights\": 27, \"adr\": 184.57, \"revpar_cal\": 160.75, \"occupancy_cal\": 87.1, \"los\": 8.2, \"active_res\": 4, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 100.0, \"revpar_sell\": 184.57}, \"4\": {\"revenue\": 4128.93, \"nights\": 24, \"adr\": 172.04, \"revpar_cal\": 137.63, \"occupancy_cal\": 80.0, \"los\": 5.2, \"active_res\": 5, \"blocked\": 6, \"blocked_pct\": 20.0, \"calendar_nights\": 30, \"sellable\": 24, \"occupancy_sell\": 100.0, \"revpar_sell\": 172.04}, \"5\": {\"revenue\": 794.0, \"nights\": 5, \"adr\": 158.8, \"revpar_cal\": 25.61, \"occupancy_cal\": 16.1, \"los\": 4.5, \"active_res\": 2, \"blocked\": 3, \"blocked_pct\": 9.68, \"calendar_nights\": 31, \"sellable\": 28, \"occupancy_sell\": 17.86, \"revpar_sell\": 28.36}, \"6\": {\"revenue\": 2572.5, \"nights\": 18, \"adr\": 142.92, \"revpar_cal\": 85.75, \"occupancy_cal\": 60.0, \"los\": 6.3, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 13.33, \"calendar_nights\": 30, \"sellable\": 26, \"occupancy_sell\": 69.23, \"revpar_sell\": 98.94}, \"7\": {\"revenue\": 3166.28, \"nights\": 24, \"adr\": 131.93, \"revpar_cal\": 102.14, \"occupancy_cal\": 77.4, \"los\": 6.0, \"active_res\": 5, \"blocked\": 6, \"blocked_pct\": 19.35, \"calendar_nights\": 31, \"sellable\": 25, \"occupancy_sell\": 96.0, \"revpar_sell\": 126.65}, \"8\": {\"revenue\": 839.71, \"nights\": 6, \"adr\": 139.95, \"revpar_cal\": 27.09, \"occupancy_cal\": 19.4, \"los\": 3.0, \"active_res\": 2, \"blocked\": 5, \"blocked_pct\": 16.13, \"calendar_nights\": 31, \"sellable\": 26, \"occupancy_sell\": 23.08, \"revpar_sell\": 32.3}, \"9\": {\"revenue\": 2559.22, \"nights\": 19, \"adr\": 134.7, \"revpar_cal\": 85.31, \"occupancy_cal\": 63.3, \"los\": 9.0, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 13.33, \"calendar_nights\": 30, \"sellable\": 26, \"occupancy_sell\": 73.08, \"revpar_sell\": 98.43}, \"10\": {\"revenue\": 3167.76, \"nights\": 27, \"adr\": 117.32, \"revpar_cal\": 102.19, \"occupancy_cal\": 87.1, \"los\": 8.5, \"active_res\": 4, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 100.0, \"revpar_sell\": 117.32}, \"11\": {\"revenue\": 2859.26, \"nights\": 17, \"adr\": 168.19, \"revpar_cal\": 95.31, \"occupancy_cal\": 56.7, \"los\": 5.2, \"active_res\": 4, \"blocked\": 5, \"blocked_pct\": 16.67, \"calendar_nights\": 30, \"sellable\": 25, \"occupancy_sell\": 68.0, \"revpar_sell\": 114.37}, \"12\": {\"revenue\": 3609.0, \"nights\": 16, \"adr\": 225.56, \"revpar_cal\": 116.42, \"occupancy_cal\": 51.6, \"los\": 7.3, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 59.26, \"revpar_sell\": 133.67}}, \"2026\": {\"1\": {\"revenue\": 4263.46, \"nights\": 22, \"adr\": 193.79, \"revpar_cal\": 137.53, \"occupancy_cal\": 71.0, \"los\": 5.5, \"active_res\": 4, \"blocked\": 5, \"blocked_pct\": 16.13, \"calendar_nights\": 31, \"sellable\": 26, \"occupancy_sell\": 84.62, \"revpar_sell\": 163.98}, \"2\": {\"revenue\": 3763.46, \"nights\": 21, \"adr\": 179.21, \"revpar_cal\": 134.41, \"occupancy_cal\": 75.0, \"los\": 8.0, \"active_res\": 3, \"blocked\": 5, \"blocked_pct\": 17.86, \"calendar_nights\": 28, \"sellable\": 23, \"occupancy_sell\": 91.3, \"revpar_sell\": 163.63}, \"3\": {\"revenue\": 2808.21, \"nights\": 16, \"adr\": 175.51, \"revpar_cal\": 90.59, \"occupancy_cal\": 51.6, \"los\": 8.0, \"active_res\": 3, \"blocked\": 6, \"blocked_pct\": 19.35, \"calendar_nights\": 31, \"sellable\": 25, \"occupancy_sell\": 64.0, \"revpar_sell\": 112.33}, \"4\": {\"revenue\": 2962.87, \"nights\": 17, \"adr\": 174.29, \"revpar_cal\": 98.76, \"occupancy_cal\": 56.7, \"los\": 9.0, \"active_res\": 2, \"blocked\": 7, \"blocked_pct\": 23.33, \"calendar_nights\": 30, \"sellable\": 23, \"occupancy_sell\": 73.91, \"revpar_sell\": 128.82}, \"5\": {\"revenue\": 2070.37, \"nights\": 19, \"adr\": 108.97, \"revpar_cal\": 66.79, \"occupancy_cal\": 61.3, \"los\": 8.5, \"active_res\": 4, \"blocked\": 8, \"blocked_pct\": 25.81, \"calendar_nights\": 31, \"sellable\": 23, \"occupancy_sell\": 82.61, \"revpar_sell\": 90.02}, \"6\": {\"revenue\": 1414.2, \"nights\": 12, \"adr\": 117.85, \"revpar_cal\": 47.14, \"occupancy_cal\": 40.0, \"los\": 8.2, \"active_res\": 4, \"blocked\": 12, \"blocked_pct\": 40.0, \"calendar_nights\": 30, \"sellable\": 18, \"occupancy_sell\": 66.67, \"revpar_sell\": 78.57}, \"7\": {\"revenue\": 1821.94, \"nights\": 13, \"adr\": 140.15, \"revpar_cal\": 58.77, \"occupancy_cal\": 41.9, \"los\": 17.0, \"active_res\": 1, \"blocked\": 17, \"blocked_pct\": 54.84, \"calendar_nights\": 31, \"sellable\": 14, \"occupancy_sell\": 92.86, \"revpar_sell\": 130.14}, \"8\": {\"revenue\": 2299.61, \"nights\": 12, \"adr\": 191.63, \"revpar_cal\": 74.18, \"occupancy_cal\": 38.7, \"los\": 7.3, \"active_res\": 3, \"blocked\": 19, \"blocked_pct\": 61.29, \"calendar_nights\": 31, \"sellable\": 12, \"occupancy_sell\": 100.0, \"revpar_sell\": 191.63}, \"9\": {\"revenue\": 2935.84, \"nights\": 24, \"adr\": 122.33, \"revpar_cal\": 97.86, \"occupancy_cal\": 80.0, \"los\": 14.5, \"active_res\": 2, \"blocked\": 3, \"blocked_pct\": 10.0, \"calendar_nights\": 30, \"sellable\": 27, \"occupancy_sell\": 88.89, \"revpar_sell\": 108.73}, \"10\": {\"revenue\": 2445.45, \"nights\": 15, \"adr\": 163.03, \"revpar_cal\": 78.89, \"occupancy_cal\": 48.4, \"los\": 7.5, \"active_res\": 2, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 55.56, \"revpar_sell\": 90.57}, \"11\": {\"revenue\": 3084.72, \"nights\": 18, \"adr\": 171.37, \"revpar_cal\": 102.82, \"occupancy_cal\": 60.0, \"los\": 7.7, \"active_res\": 3, \"blocked\": 5, \"blocked_pct\": 16.67, \"calendar_nights\": 30, \"sellable\": 25, \"occupancy_sell\": 72.0, \"revpar_sell\": 123.39}, \"12\": {\"revenue\": 1065.16, \"nights\": 5, \"adr\": 213.03, \"revpar_cal\": 34.36, \"occupancy_cal\": 16.1, \"los\": 6.0, \"active_res\": 1, \"blocked\": 1, \"blocked_pct\": 3.23, \"calendar_nights\": 31, \"sellable\": 30, \"occupancy_sell\": 16.67, \"revpar_sell\": 35.51}}}, \"Lengua de Lava\": {\"2025\": {\"1\": {\"revenue\": 2480.56, \"nights\": 23, \"adr\": 107.85, \"revpar_cal\": 80.02, \"occupancy_cal\": 74.2, \"los\": 10.0, \"active_res\": 3, \"blocked\": 5, \"blocked_pct\": 16.13, \"calendar_nights\": 31, \"sellable\": 26, \"occupancy_sell\": 88.46, \"revpar_sell\": 95.41}, \"2\": {\"revenue\": 2713.59, \"nights\": 20, \"adr\": 135.68, \"revpar_cal\": 96.91, \"occupancy_cal\": 71.4, \"los\": 7.7, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 14.29, \"calendar_nights\": 28, \"sellable\": 24, \"occupancy_sell\": 83.33, \"revpar_sell\": 113.07}, \"3\": {\"revenue\": 2223.86, \"nights\": 22, \"adr\": 101.08, \"revpar_cal\": 71.74, \"occupancy_cal\": 71.0, \"los\": 9.3, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 81.48, \"revpar_sell\": 82.37}, \"4\": {\"revenue\": 1405.0, \"nights\": 14, \"adr\": 100.36, \"revpar_cal\": 46.83, \"occupancy_cal\": 46.7, \"los\": 7.0, \"active_res\": 2, \"blocked\": 4, \"blocked_pct\": 13.33, \"calendar_nights\": 30, \"sellable\": 26, \"occupancy_sell\": 53.85, \"revpar_sell\": 54.04}, \"5\": {\"revenue\": 258.2, \"nights\": 4, \"adr\": 64.55, \"revpar_cal\": 8.33, \"occupancy_cal\": 12.9, \"los\": 4.0, \"active_res\": 1, \"blocked\": 2, \"blocked_pct\": 6.45, \"calendar_nights\": 31, \"sellable\": 29, \"occupancy_sell\": 13.79, \"revpar_sell\": 8.9}, \"6\": {\"revenue\": 0.0, \"nights\": 0, \"adr\": 0, \"revpar_cal\": 0.0, \"occupancy_cal\": 0.0, \"los\": 0, \"active_res\": 0, \"blocked\": 0, \"blocked_pct\": 0.0, \"calendar_nights\": 30, \"sellable\": 30, \"occupancy_sell\": 0.0, \"revpar_sell\": 0.0}, \"7\": {\"revenue\": 269.07, \"nights\": 4, \"adr\": 67.27, \"revpar_cal\": 8.68, \"occupancy_cal\": 12.9, \"los\": 12.0, \"active_res\": 1, \"blocked\": 1, \"blocked_pct\": 3.23, \"calendar_nights\": 31, \"sellable\": 30, \"occupancy_sell\": 13.33, \"revpar_sell\": 8.97}, \"8\": {\"revenue\": 1786.7, \"nights\": 30, \"adr\": 59.56, \"revpar_cal\": 57.64, \"occupancy_cal\": 96.8, \"los\": 12.7, \"active_res\": 3, \"blocked\": 3, \"blocked_pct\": 9.68, \"calendar_nights\": 31, \"sellable\": 28, \"occupancy_sell\": 107.14, \"revpar_sell\": 63.81}, \"9\": {\"revenue\": 1020.3, \"nights\": 15, \"adr\": 68.02, \"revpar_cal\": 34.01, \"occupancy_cal\": 50.0, \"los\": 8.3, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 13.33, \"calendar_nights\": 30, \"sellable\": 26, \"occupancy_sell\": 57.69, \"revpar_sell\": 39.24}, \"10\": {\"revenue\": 1678.41, \"nights\": 22, \"adr\": 76.29, \"revpar_cal\": 54.14, \"occupancy_cal\": 71.0, \"los\": 8.7, \"active_res\": 3, \"blocked\": 5, \"blocked_pct\": 16.13, \"calendar_nights\": 31, \"sellable\": 26, \"occupancy_sell\": 84.62, \"revpar_sell\": 64.55}, \"11\": {\"revenue\": 2476.26, \"nights\": 21, \"adr\": 117.92, \"revpar_cal\": 82.54, \"occupancy_cal\": 70.0, \"los\": 7.0, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 13.33, \"calendar_nights\": 30, \"sellable\": 26, \"occupancy_sell\": 80.77, \"revpar_sell\": 95.24}, \"12\": {\"revenue\": 2734.43, \"nights\": 25, \"adr\": 109.38, \"revpar_cal\": 88.21, \"occupancy_cal\": 80.6, \"los\": 9.0, \"active_res\": 4, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 92.59, \"revpar_sell\": 101.28}}, \"2026\": {\"1\": {\"revenue\": 2561.57, \"nights\": 22, \"adr\": 116.43, \"revpar_cal\": 82.63, \"occupancy_cal\": 71.0, \"los\": 8.3, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 81.48, \"revpar_sell\": 94.87}, \"2\": {\"revenue\": 2519.37, \"nights\": 22, \"adr\": 114.52, \"revpar_cal\": 89.98, \"occupancy_cal\": 78.6, \"los\": 6.4, \"active_res\": 5, \"blocked\": 6, \"blocked_pct\": 21.43, \"calendar_nights\": 28, \"sellable\": 22, \"occupancy_sell\": 100.0, \"revpar_sell\": 114.52}, \"3\": {\"revenue\": 1973.05, \"nights\": 22, \"adr\": 89.68, \"revpar_cal\": 63.65, \"occupancy_cal\": 71.0, \"los\": 7.5, \"active_res\": 4, \"blocked\": 5, \"blocked_pct\": 16.13, \"calendar_nights\": 31, \"sellable\": 26, \"occupancy_sell\": 84.62, \"revpar_sell\": 75.89}, \"4\": {\"revenue\": 730.16, \"nights\": 9, \"adr\": 81.13, \"revpar_cal\": 24.34, \"occupancy_cal\": 30.0, \"los\": 5.0, \"active_res\": 2, \"blocked\": 7, \"blocked_pct\": 23.33, \"calendar_nights\": 30, \"sellable\": 23, \"occupancy_sell\": 39.13, \"revpar_sell\": 31.75}, \"5\": {\"revenue\": 711.42, \"nights\": 12, \"adr\": 59.28, \"revpar_cal\": 22.95, \"occupancy_cal\": 38.7, \"los\": 7.0, \"active_res\": 2, \"blocked\": 3, \"blocked_pct\": 9.68, \"calendar_nights\": 31, \"sellable\": 28, \"occupancy_sell\": 42.86, \"revpar_sell\": 25.41}, \"6\": {\"revenue\": 590.87, \"nights\": 9, \"adr\": 65.65, \"revpar_cal\": 19.7, \"occupancy_cal\": 30.0, \"los\": 6.0, \"active_res\": 3, \"blocked\": 5, \"blocked_pct\": 16.67, \"calendar_nights\": 30, \"sellable\": 25, \"occupancy_sell\": 36.0, \"revpar_sell\": 23.63}, \"7\": {\"revenue\": 1070.91, \"nights\": 17, \"adr\": 62.99, \"revpar_cal\": 34.55, \"occupancy_cal\": 54.8, \"los\": 8.5, \"active_res\": 2, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 62.96, \"revpar_sell\": 39.66}, \"8\": {\"revenue\": 1066.44, \"nights\": 17, \"adr\": 62.73, \"revpar_cal\": 34.4, \"occupancy_cal\": 54.8, \"los\": 8.5, \"active_res\": 2, \"blocked\": 5, \"blocked_pct\": 16.13, \"calendar_nights\": 31, \"sellable\": 26, \"occupancy_sell\": 65.38, \"revpar_sell\": 41.02}, \"9\": {\"revenue\": 1333.2, \"nights\": 15, \"adr\": 88.88, \"revpar_cal\": 44.44, \"occupancy_cal\": 50.0, \"los\": 3.8, \"active_res\": 4, \"blocked\": 7, \"blocked_pct\": 23.33, \"calendar_nights\": 30, \"sellable\": 23, \"occupancy_sell\": 65.22, \"revpar_sell\": 57.97}, \"10\": {\"revenue\": 2171.13, \"nights\": 26, \"adr\": 83.5, \"revpar_cal\": 70.04, \"occupancy_cal\": 83.9, \"los\": 13.0, \"active_res\": 2, \"blocked\": 3, \"blocked_pct\": 9.68, \"calendar_nights\": 31, \"sellable\": 28, \"occupancy_sell\": 92.86, \"revpar_sell\": 77.54}, \"11\": {\"revenue\": 3394.92, \"nights\": 24, \"adr\": 141.46, \"revpar_cal\": 113.16, \"occupancy_cal\": 80.0, \"los\": 8.0, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 13.33, \"calendar_nights\": 30, \"sellable\": 26, \"occupancy_sell\": 92.31, \"revpar_sell\": 130.57}, \"12\": {\"revenue\": 0.0, \"nights\": 0, \"adr\": 0, \"revpar_cal\": 0.0, \"occupancy_cal\": 0.0, \"los\": 0, \"active_res\": 0, \"blocked\": 0, \"blocked_pct\": 0.0, \"calendar_nights\": 31, \"sellable\": 31, \"occupancy_sell\": 0.0, \"revpar_sell\": 0.0}}}, \"Casita Feliz\": {\"2025\": {\"1\": {\"revenue\": 1346.0, \"nights\": 15, \"adr\": 89.73, \"revpar_cal\": 43.42, \"occupancy_cal\": 48.4, \"los\": 7.5, \"active_res\": 2, \"blocked\": 5, \"blocked_pct\": 16.13, \"calendar_nights\": 31, \"sellable\": 26, \"occupancy_sell\": 57.69, \"revpar_sell\": 51.77}, \"2\": {\"revenue\": 2691.55, \"nights\": 23, \"adr\": 117.02, \"revpar_cal\": 96.13, \"occupancy_cal\": 82.1, \"los\": 6.5, \"active_res\": 4, \"blocked\": 6, \"blocked_pct\": 21.43, \"calendar_nights\": 28, \"sellable\": 22, \"occupancy_sell\": 104.55, \"revpar_sell\": 122.34}, \"3\": {\"revenue\": 2343.5, \"nights\": 21, \"adr\": 111.6, \"revpar_cal\": 75.6, \"occupancy_cal\": 67.7, \"los\": 8.0, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 77.78, \"revpar_sell\": 86.8}, \"4\": {\"revenue\": 1192.0, \"nights\": 13, \"adr\": 91.69, \"revpar_cal\": 39.73, \"occupancy_cal\": 43.3, \"los\": 4.3, \"active_res\": 3, \"blocked\": 6, \"blocked_pct\": 20.0, \"calendar_nights\": 30, \"sellable\": 24, \"occupancy_sell\": 54.17, \"revpar_sell\": 49.67}, \"5\": {\"revenue\": 229.0, \"nights\": 3, \"adr\": 76.33, \"revpar_cal\": 7.39, \"occupancy_cal\": 9.7, \"los\": 3.0, \"active_res\": 1, \"blocked\": 2, \"blocked_pct\": 6.45, \"calendar_nights\": 31, \"sellable\": 29, \"occupancy_sell\": 10.34, \"revpar_sell\": 7.9}, \"6\": {\"revenue\": 316.0, \"nights\": 4, \"adr\": 79.0, \"revpar_cal\": 10.53, \"occupancy_cal\": 13.3, \"los\": 4.0, \"active_res\": 1, \"blocked\": 2, \"blocked_pct\": 6.67, \"calendar_nights\": 30, \"sellable\": 28, \"occupancy_sell\": 14.29, \"revpar_sell\": 11.29}, \"7\": {\"revenue\": 331.25, \"nights\": 5, \"adr\": 66.25, \"revpar_cal\": 10.69, \"occupancy_cal\": 16.1, \"los\": 5.0, \"active_res\": 1, \"blocked\": 2, \"blocked_pct\": 6.45, \"calendar_nights\": 31, \"sellable\": 29, \"occupancy_sell\": 17.24, \"revpar_sell\": 11.42}, \"8\": {\"revenue\": 378.0, \"nights\": 5, \"adr\": 75.6, \"revpar_cal\": 12.19, \"occupancy_cal\": 16.1, \"los\": 5.0, \"active_res\": 1, \"blocked\": 2, \"blocked_pct\": 6.45, \"calendar_nights\": 31, \"sellable\": 29, \"occupancy_sell\": 17.24, \"revpar_sell\": 13.03}, \"9\": {\"revenue\": 933.65, \"nights\": 13, \"adr\": 71.82, \"revpar_cal\": 31.12, \"occupancy_cal\": 43.3, \"los\": 4.3, \"active_res\": 3, \"blocked\": 7, \"blocked_pct\": 23.33, \"calendar_nights\": 30, \"sellable\": 23, \"occupancy_sell\": 56.52, \"revpar_sell\": 40.59}, \"10\": {\"revenue\": 676.27, \"nights\": 8, \"adr\": 84.53, \"revpar_cal\": 21.82, \"occupancy_cal\": 25.8, \"los\": 5.5, \"active_res\": 2, \"blocked\": 2, \"blocked_pct\": 6.45, \"calendar_nights\": 31, \"sellable\": 29, \"occupancy_sell\": 27.59, \"revpar_sell\": 23.32}, \"11\": {\"revenue\": 1208.69, \"nights\": 12, \"adr\": 100.72, \"revpar_cal\": 40.29, \"occupancy_cal\": 40.0, \"los\": 5.3, \"active_res\": 3, \"blocked\": 5, \"blocked_pct\": 16.67, \"calendar_nights\": 30, \"sellable\": 25, \"occupancy_sell\": 48.0, \"revpar_sell\": 48.35}, \"12\": {\"revenue\": 1440.55, \"nights\": 13, \"adr\": 110.81, \"revpar_cal\": 46.47, \"occupancy_cal\": 41.9, \"los\": 17.3, \"active_res\": 3, \"blocked\": 7, \"blocked_pct\": 22.58, \"calendar_nights\": 31, \"sellable\": 24, \"occupancy_sell\": 54.17, \"revpar_sell\": 60.02}}, \"2026\": {\"1\": {\"revenue\": 3611.78, \"nights\": 31, \"adr\": 116.51, \"revpar_cal\": 116.51, \"occupancy_cal\": 100.0, \"los\": 42.0, \"active_res\": 1, \"blocked\": 0, \"blocked_pct\": 0.0, \"calendar_nights\": 31, \"sellable\": 31, \"occupancy_sell\": 100.0, \"revpar_sell\": 116.51}, \"2\": {\"revenue\": 932.07, \"nights\": 8, \"adr\": 116.51, \"revpar_cal\": 33.29, \"occupancy_cal\": 28.6, \"los\": 42.0, \"active_res\": 1, \"blocked\": 20, \"blocked_pct\": 71.43, \"calendar_nights\": 28, \"sellable\": 8, \"occupancy_sell\": 100.0, \"revpar_sell\": 116.51}, \"3\": {\"revenue\": 319.67, \"nights\": 5, \"adr\": 63.93, \"revpar_cal\": 10.31, \"occupancy_cal\": 16.1, \"los\": 6.0, \"active_res\": 1, \"blocked\": 26, \"blocked_pct\": 83.87, \"calendar_nights\": 31, \"sellable\": 5, \"occupancy_sell\": 100.0, \"revpar_sell\": 63.93}, \"4\": {\"revenue\": 336.08, \"nights\": 4, \"adr\": 84.02, \"revpar_cal\": 11.2, \"occupancy_cal\": 13.3, \"los\": 4.5, \"active_res\": 2, \"blocked\": 13, \"blocked_pct\": 43.33, \"calendar_nights\": 30, \"sellable\": 17, \"occupancy_sell\": 23.53, \"revpar_sell\": 19.77}, \"5\": {\"revenue\": 664.93, \"nights\": 10, \"adr\": 66.49, \"revpar_cal\": 21.45, \"occupancy_cal\": 32.3, \"los\": 6.0, \"active_res\": 2, \"blocked\": 11, \"blocked_pct\": 35.48, \"calendar_nights\": 31, \"sellable\": 20, \"occupancy_sell\": 50.0, \"revpar_sell\": 33.25}, \"6\": {\"revenue\": 965.78, \"nights\": 14, \"adr\": 68.98, \"revpar_cal\": 32.19, \"occupancy_cal\": 46.7, \"los\": 4.8, \"active_res\": 4, \"blocked\": 12, \"blocked_pct\": 40.0, \"calendar_nights\": 30, \"sellable\": 18, \"occupancy_sell\": 77.78, \"revpar_sell\": 53.65}, \"7\": {\"revenue\": 470.25, \"nights\": 7, \"adr\": 67.18, \"revpar_cal\": 15.17, \"occupancy_cal\": 22.6, \"los\": 7.0, \"active_res\": 1, \"blocked\": 19, \"blocked_pct\": 61.29, \"calendar_nights\": 31, \"sellable\": 12, \"occupancy_sell\": 58.33, \"revpar_sell\": 39.19}, \"8\": {\"revenue\": 0.0, \"nights\": 0, \"adr\": 0, \"revpar_cal\": 0.0, \"occupancy_cal\": 0.0, \"los\": 0, \"active_res\": 0, \"blocked\": 16, \"blocked_pct\": 51.61, \"calendar_nights\": 31, \"sellable\": 15, \"occupancy_sell\": 0.0, \"revpar_sell\": 0.0}, \"9\": {\"revenue\": 1098.89, \"nights\": 13, \"adr\": 84.53, \"revpar_cal\": 36.63, \"occupancy_cal\": 43.3, \"los\": 5.3, \"active_res\": 3, \"blocked\": 10, \"blocked_pct\": 33.33, \"calendar_nights\": 30, \"sellable\": 20, \"occupancy_sell\": 65.0, \"revpar_sell\": 54.94}, \"10\": {\"revenue\": 624.7, \"nights\": 7, \"adr\": 89.24, \"revpar_cal\": 20.15, \"occupancy_cal\": 22.6, \"los\": 5.5, \"active_res\": 2, \"blocked\": 3, \"blocked_pct\": 9.68, \"calendar_nights\": 31, \"sellable\": 28, \"occupancy_sell\": 25.0, \"revpar_sell\": 22.31}, \"11\": {\"revenue\": 1358.0, \"nights\": 14, \"adr\": 97.0, \"revpar_cal\": 45.27, \"occupancy_cal\": 46.7, \"los\": 14.0, \"active_res\": 1, \"blocked\": 2, \"blocked_pct\": 6.67, \"calendar_nights\": 30, \"sellable\": 28, \"occupancy_sell\": 50.0, \"revpar_sell\": 48.5}, \"12\": {\"revenue\": 193.71, \"nights\": 1, \"adr\": 193.71, \"revpar_cal\": 6.25, \"occupancy_cal\": 3.2, \"los\": 7.0, \"active_res\": 1, \"blocked\": 1, \"blocked_pct\": 3.23, \"calendar_nights\": 31, \"sellable\": 30, \"occupancy_sell\": 3.33, \"revpar_sell\": 6.46}}}}, \"property_year\": {\"Tasarte\": {\"2025\": {\"revenue\": 35929.83, \"nights\": 227, \"adr\": 158.28, \"revpar_cal\": 98.44, \"occupancy_cal\": 62.2, \"los\": 6.7, \"active_res\": 34, \"blocked\": 53, \"blocked_pct\": 14.52, \"calendar_nights\": 365, \"sellable\": 312, \"occupancy_sell\": 72.76, \"revpar_sell\": 115.16}, \"2026\": {\"revenue\": 30935.29, \"nights\": 194, \"adr\": 159.46, \"revpar_cal\": 84.75, \"occupancy_cal\": 53.2, \"los\": 7.5, \"active_res\": 26, \"blocked\": 92, \"blocked_pct\": 25.21, \"calendar_nights\": 365, \"sellable\": 273, \"occupancy_sell\": 71.06, \"revpar_sell\": 113.32}}, \"Lengua de Lava\": {\"2025\": {\"revenue\": 19046.38, \"nights\": 200, \"adr\": 95.23, \"revpar_cal\": 52.18, \"occupancy_cal\": 54.8, \"los\": 8.8, \"active_res\": 24, \"blocked\": 40, \"blocked_pct\": 10.96, \"calendar_nights\": 365, \"sellable\": 325, \"occupancy_sell\": 61.54, \"revpar_sell\": 58.6}, \"2026\": {\"revenue\": 18123.04, \"nights\": 195, \"adr\": 92.94, \"revpar_cal\": 49.65, \"occupancy_cal\": 53.4, \"los\": 7.0, \"active_res\": 28, \"blocked\": 53, \"blocked_pct\": 14.52, \"calendar_nights\": 365, \"sellable\": 312, \"occupancy_sell\": 62.5, \"revpar_sell\": 58.09}}, \"Casita Feliz\": {\"2025\": {\"revenue\": 13086.46, \"nights\": 135, \"adr\": 96.94, \"revpar_cal\": 35.85, \"occupancy_cal\": 37.0, \"los\": 7.0, \"active_res\": 25, \"blocked\": 50, \"blocked_pct\": 13.7, \"calendar_nights\": 365, \"sellable\": 315, \"occupancy_sell\": 42.86, \"revpar_sell\": 41.54}, \"2026\": {\"revenue\": 10575.86, \"nights\": 114, \"adr\": 92.77, \"revpar_cal\": 28.97, \"occupancy_cal\": 31.2, \"los\": 8.2, \"active_res\": 15, \"blocked\": 133, \"blocked_pct\": 36.44, \"calendar_nights\": 365, \"sellable\": 232, \"occupancy_sell\": 49.14, \"revpar_sell\": 45.59}}}, \"property_closed\": {\"Tasarte\": {\"2025\": {\"revenue\": 23734.59, \"nights\": 148, \"adr\": 160.37, \"revpar_cal\": 97.67, \"occupancy_cal\": 60.9, \"los\": 6.4, \"active_res\": 23, \"blocked\": 36, \"blocked_pct\": 14.81, \"calendar_nights\": 243, \"sellable\": 207, \"occupancy_sell\": 71.5, \"revpar_sell\": 114.66}, \"2026\": {\"revenue\": 21404.12, \"nights\": 132, \"adr\": 162.15, \"revpar_cal\": 88.08, \"occupancy_cal\": 54.3, \"los\": 7.1, \"active_res\": 20, \"blocked\": 79, \"blocked_pct\": 32.51, \"calendar_nights\": 243, \"sellable\": 164, \"occupancy_sell\": 80.49, \"revpar_sell\": 130.51}}, \"Lengua de Lava\": {\"2025\": {\"revenue\": 11136.98, \"nights\": 117, \"adr\": 95.19, \"revpar_cal\": 45.83, \"occupancy_cal\": 48.1, \"los\": 9.3, \"active_res\": 13, \"blocked\": 23, \"blocked_pct\": 9.47, \"calendar_nights\": 243, \"sellable\": 220, \"occupancy_sell\": 53.18, \"revpar_sell\": 50.62}, \"2026\": {\"revenue\": 11223.79, \"nights\": 130, \"adr\": 86.34, \"revpar_cal\": 46.19, \"occupancy_cal\": 53.5, \"los\": 6.9, \"active_res\": 19, \"blocked\": 39, \"blocked_pct\": 16.05, \"calendar_nights\": 243, \"sellable\": 204, \"occupancy_sell\": 63.73, \"revpar_sell\": 55.02}}, \"Casita Feliz\": {\"2025\": {\"revenue\": 8827.3, \"nights\": 89, \"adr\": 99.18, \"revpar_cal\": 36.33, \"occupancy_cal\": 36.6, \"los\": 5.9, \"active_res\": 15, \"blocked\": 29, \"blocked_pct\": 11.93, \"calendar_nights\": 243, \"sellable\": 214, \"occupancy_sell\": 41.59, \"revpar_sell\": 41.25}, \"2026\": {\"revenue\": 7300.56, \"nights\": 79, \"adr\": 92.41, \"revpar_cal\": 30.04, \"occupancy_cal\": 32.5, \"los\": 9.1, \"active_res\": 9, \"blocked\": 117, \"blocked_pct\": 48.15, \"calendar_nights\": 243, \"sellable\": 126, \"occupancy_sell\": 62.7, \"revpar_sell\": 57.94}}}, \"aggregate_los\": {\"2025\": {\"1\": 10.4, \"2\": 7.5, \"3\": 8.5, \"4\": 5.3, \"5\": 4.0, \"6\": 5.8, \"7\": 6.7, \"8\": 8.2, \"9\": 7.2, \"10\": 7.9, \"11\": 5.8, \"12\": 11.0}, \"2026\": {\"1\": 11.1, \"2\": 10.9, \"3\": 7.5, \"4\": 6.2, \"5\": 7.5, \"6\": 6.4, \"7\": 10.2, \"8\": 7.8, \"9\": 6.7, \"10\": 8.7, \"11\": 8.7, \"12\": 6.5}}, \"property_block_summary\": {\"Tasarte\": {\"blocked25\": 36, \"blocked26\": 79, \"blockedDelta\": 43, \"blockPct25\": 14.81, \"blockPct26\": 32.51, \"sellable25\": 207, \"sellable26\": 164, \"sellableChange\": -20.8, \"revenueChange\": -9.8, \"revpar25\": 114.66, \"revpar26\": 130.51, \"revparChange\": 13.8, \"occ25\": 71.5, \"occ26\": 80.49, \"occChangePP\": 9.0, \"shareExtraBlocked\": 29.3}, \"Lengua de Lava\": {\"blocked25\": 23, \"blocked26\": 39, \"blockedDelta\": 16, \"blockPct25\": 9.47, \"blockPct26\": 16.05, \"sellable25\": 220, \"sellable26\": 204, \"sellableChange\": -7.3, \"revenueChange\": 0.8, \"revpar25\": 50.62, \"revpar26\": 55.02, \"revparChange\": 8.7, \"occ25\": 53.18, \"occ26\": 63.73, \"occChangePP\": 10.5, \"shareExtraBlocked\": 10.9}, \"Casita Feliz\": {\"blocked25\": 29, \"blocked26\": 117, \"blockedDelta\": 88, \"blockPct25\": 11.93, \"blockPct26\": 48.15, \"sellable25\": 214, \"sellable26\": 126, \"sellableChange\": -41.1, \"revenueChange\": -17.3, \"revpar25\": 41.25, \"revpar26\": 57.94, \"revparChange\": 40.5, \"occ25\": 41.59, \"occ26\": 62.7, \"occChangePP\": 21.1, \"shareExtraBlocked\": 59.9}}};\nconst H={\"portfolio\": {\"2024\": {\"year\": {\"revenue\": 41253.48347826087, \"nights\": 414, \"adr\": 99.64609535811803, \"revpar_cal\": 37.571478577651064, \"occupancy_cal\": 37.704918032786885, \"los\": 9.627906976744185, \"active_res\": 43}, \"monthly\": {\"1\": {\"revenue\": 3952.0, \"nights\": 47, \"adr\": 84.08510638297872, \"revpar_cal\": 42.494623655913976, \"occupancy_cal\": 50.53763440860215, \"los\": 7.833333333333333, \"active_res\": 6}, \"2\": {\"revenue\": 6027.571428571428, \"nights\": 63, \"adr\": 95.67573696145125, \"revpar_cal\": 69.28243021346469, \"occupancy_cal\": 72.41379310344827, \"los\": 7.875, \"active_res\": 8}, \"3\": {\"revenue\": 6988.428571428572, \"nights\": 77, \"adr\": 90.75881261595548, \"revpar_cal\": 75.14439324116744, \"occupancy_cal\": 82.79569892473118, \"los\": 11.0, \"active_res\": 7}, \"4\": {\"revenue\": 490.0, \"nights\": 17, \"adr\": 28.823529411764707, \"revpar_cal\": 5.444444444444445, \"occupancy_cal\": 18.88888888888889, \"los\": 8.5, \"active_res\": 2}, \"5\": {\"revenue\": 1044.5555555555557, \"nights\": 10, \"adr\": 104.45555555555556, \"revpar_cal\": 11.23178016726404, \"occupancy_cal\": 10.75268817204301, \"los\": 5.0, \"active_res\": 2}, \"6\": {\"revenue\": 1443.4444444444443, \"nights\": 11, \"adr\": 131.2222222222222, \"revpar_cal\": 16.03827160493827, \"occupancy_cal\": 12.222222222222221, \"los\": 3.6666666666666665, \"active_res\": 3}, \"7\": {\"revenue\": 2150.0, \"nights\": 13, \"adr\": 165.3846153846154, \"revpar_cal\": 23.118279569892472, \"occupancy_cal\": 13.978494623655912, \"los\": 6.5, \"active_res\": 2}, \"8\": {\"revenue\": 1136.0, \"nights\": 15, \"adr\": 75.73333333333333, \"revpar_cal\": 12.21505376344086, \"occupancy_cal\": 16.129032258064516, \"los\": 5.0, \"active_res\": 3}, \"9\": {\"revenue\": 1778.7, \"nights\": 15, \"adr\": 118.58, \"revpar_cal\": 19.763333333333335, \"occupancy_cal\": 16.666666666666664, \"los\": 7.5, \"active_res\": 2}, \"10\": {\"revenue\": 4287.842857142857, \"nights\": 35, \"adr\": 122.50979591836733, \"revpar_cal\": 46.105837173579104, \"occupancy_cal\": 37.634408602150536, \"los\": 7.0, \"active_res\": 5}, \"11\": {\"revenue\": 4478.857142857143, \"nights\": 45, \"adr\": 99.53015873015873, \"revpar_cal\": 49.765079365079366, \"occupancy_cal\": 50.0, \"los\": 7.5, \"active_res\": 6}, \"12\": {\"revenue\": 7476.083478260869, \"nights\": 66, \"adr\": 113.27399209486165, \"revpar_cal\": 80.38799438990182, \"occupancy_cal\": 70.96774193548387, \"los\": 11.0, \"active_res\": 6}}}, \"2025\": {\"year\": {\"revenue\": 68062.67, \"nights\": 562, \"adr\": 121.1079537366548, \"revpar_cal\": 62.157689497716895, \"occupancy_cal\": 51.32420091324201, \"los\": 6.771084337349397, \"active_res\": 83}, \"monthly\": {\"1\": {\"revenue\": 7160.5599999999995, \"nights\": 59, \"adr\": 121.36542372881355, \"revpar_cal\": 76.99526881720429, \"occupancy_cal\": 63.44086021505376, \"los\": 8.428571428571429, \"active_res\": 7}, \"2\": {\"revenue\": 9320.95, \"nights\": 66, \"adr\": 141.22651515151517, \"revpar_cal\": 110.96369047619048, \"occupancy_cal\": 78.57142857142857, \"los\": 6.0, \"active_res\": 11}, \"3\": {\"revenue\": 9550.72, \"nights\": 70, \"adr\": 136.43885714285713, \"revpar_cal\": 102.69591397849462, \"occupancy_cal\": 75.26881720430107, \"los\": 7.0, \"active_res\": 10}, \"4\": {\"revenue\": 6725.93, \"nights\": 51, \"adr\": 131.88098039215686, \"revpar_cal\": 74.73255555555556, \"occupancy_cal\": 56.666666666666664, \"los\": 5.1, \"active_res\": 10}, \"5\": {\"revenue\": 1281.2, \"nights\": 12, \"adr\": 106.76666666666667, \"revpar_cal\": 13.776344086021506, \"occupancy_cal\": 12.903225806451612, \"los\": 3.0, \"active_res\": 4}, \"6\": {\"revenue\": 2888.5, \"nights\": 22, \"adr\": 131.29545454545453, \"revpar_cal\": 32.09444444444444, \"occupancy_cal\": 24.444444444444443, \"los\": 5.5, \"active_res\": 4}, \"7\": {\"revenue\": 3766.6000000000004, \"nights\": 33, \"adr\": 114.13939393939395, \"revpar_cal\": 40.50107526881721, \"occupancy_cal\": 35.483870967741936, \"los\": 4.714285714285714, \"active_res\": 7}, \"8\": {\"revenue\": 3004.41, \"nights\": 41, \"adr\": 73.27829268292683, \"revpar_cal\": 32.30548387096774, \"occupancy_cal\": 44.086021505376344, \"los\": 6.833333333333333, \"active_res\": 6}, \"9\": {\"revenue\": 4513.17, \"nights\": 47, \"adr\": 96.02489361702128, \"revpar_cal\": 50.14633333333333, \"occupancy_cal\": 52.22222222222223, \"los\": 5.222222222222222, \"active_res\": 9}, \"10\": {\"revenue\": 5522.4400000000005, \"nights\": 57, \"adr\": 96.88491228070177, \"revpar_cal\": 59.38107526881721, \"occupancy_cal\": 61.29032258064516, \"los\": 6.333333333333333, \"active_res\": 9}, \"11\": {\"revenue\": 6544.210000000001, \"nights\": 50, \"adr\": 130.88420000000002, \"revpar_cal\": 72.71344444444445, \"occupancy_cal\": 55.55555555555556, \"los\": 5.0, \"active_res\": 10}, \"12\": {\"revenue\": 7783.98, \"nights\": 54, \"adr\": 144.14777777777778, \"revpar_cal\": 83.69870967741934, \"occupancy_cal\": 58.06451612903226, \"los\": 5.4, \"active_res\": 10}}}, \"2026\": {\"year\": {\"revenue\": 59634.19, \"nights\": 503, \"adr\": 118.55703777335985, \"revpar_cal\": 54.46044748858448, \"occupancy_cal\": 45.93607305936073, \"los\": 7.2898550724637685, \"active_res\": 69}, \"monthly\": {\"1\": {\"revenue\": 10436.810000000001, \"nights\": 75, \"adr\": 139.1574666666667, \"revpar_cal\": 112.22376344086022, \"occupancy_cal\": 80.64516129032258, \"los\": 9.375, \"active_res\": 8}, \"2\": {\"revenue\": 7214.9, \"nights\": 51, \"adr\": 141.4686274509804, \"revpar_cal\": 85.89166666666667, \"occupancy_cal\": 60.71428571428571, \"los\": 5.666666666666667, \"active_res\": 9}, \"3\": {\"revenue\": 5100.93, \"nights\": 43, \"adr\": 118.62627906976745, \"revpar_cal\": 54.84870967741936, \"occupancy_cal\": 46.236559139784944, \"los\": 5.375, \"active_res\": 8}, \"4\": {\"revenue\": 4029.1099999999997, \"nights\": 30, \"adr\": 134.30366666666666, \"revpar_cal\": 44.76788888888888, \"occupancy_cal\": 33.33333333333333, \"los\": 5.0, \"active_res\": 6}, \"5\": {\"revenue\": 3446.72, \"nights\": 41, \"adr\": 84.06634146341463, \"revpar_cal\": 37.06150537634409, \"occupancy_cal\": 44.086021505376344, \"los\": 5.125, \"active_res\": 8}, \"6\": {\"revenue\": 2970.85, \"nights\": 35, \"adr\": 84.88142857142857, \"revpar_cal\": 33.00944444444444, \"occupancy_cal\": 38.88888888888889, \"los\": 3.1818181818181817, \"active_res\": 11}, \"7\": {\"revenue\": 3363.1000000000004, \"nights\": 37, \"adr\": 90.89459459459461, \"revpar_cal\": 36.16236559139785, \"occupancy_cal\": 39.784946236559136, \"los\": 9.25, \"active_res\": 4}, \"8\": {\"revenue\": 3366.05, \"nights\": 29, \"adr\": 116.07068965517242, \"revpar_cal\": 36.19408602150538, \"occupancy_cal\": 31.182795698924732, \"los\": 5.8, \"active_res\": 5}, \"9\": {\"revenue\": 5367.93, \"nights\": 52, \"adr\": 103.22942307692308, \"revpar_cal\": 59.64366666666667, \"occupancy_cal\": 57.77777777777777, \"los\": 5.777777777777778, \"active_res\": 9}, \"10\": {\"revenue\": 5241.28, \"nights\": 48, \"adr\": 109.19333333333333, \"revpar_cal\": 56.357849462365586, \"occupancy_cal\": 51.61290322580645, \"los\": 8.0, \"active_res\": 6}, \"11\": {\"revenue\": 7837.639999999999, \"nights\": 56, \"adr\": 139.95785714285714, \"revpar_cal\": 87.08488888888888, \"occupancy_cal\": 62.22222222222222, \"los\": 8.0, \"active_res\": 7}, \"12\": {\"revenue\": 1258.8700000000001, \"nights\": 6, \"adr\": 209.8116666666667, \"revpar_cal\": 13.536236559139786, \"occupancy_cal\": 6.451612903225806, \"los\": 3.0, \"active_res\": 2}}}}, \"Tasarte\": {\"2024\": {\"year\": {\"revenue\": 22496.4, \"nights\": 152, \"adr\": 148.0026315789474, \"revpar_cal\": 61.46557377049181, \"occupancy_cal\": 41.53005464480874, \"los\": 8.31578947368421, \"active_res\": 19}, \"monthly\": {\"1\": {\"revenue\": 1265.0, \"nights\": 10, \"adr\": 126.5, \"revpar_cal\": 40.806451612903224, \"occupancy_cal\": 32.25806451612903, \"los\": 5.0, \"active_res\": 2, \"calendar_nights\": 31}, \"2\": {\"revenue\": 2738.5714285714284, \"nights\": 18, \"adr\": 152.14285714285714, \"revpar_cal\": 94.43349753694581, \"occupancy_cal\": 62.06896551724138, \"los\": 7.333333333333333, \"active_res\": 3, \"calendar_nights\": 29}, \"3\": {\"revenue\": 3901.4285714285716, \"nights\": 26, \"adr\": 150.05494505494505, \"revpar_cal\": 125.85253456221199, \"occupancy_cal\": 83.87096774193549, \"los\": 9.666666666666666, \"active_res\": 3, \"calendar_nights\": 31}, \"4\": {\"revenue\": 0, \"nights\": 0, \"adr\": 0, \"revpar_cal\": 0.0, \"occupancy_cal\": 0.0, \"los\": 0, \"active_res\": 0, \"calendar_nights\": 30}, \"5\": {\"revenue\": 420.0, \"nights\": 3, \"adr\": 140.0, \"revpar_cal\": 13.548387096774194, \"occupancy_cal\": 9.67741935483871, \"los\": 5.0, \"active_res\": 1, \"calendar_nights\": 31}, \"6\": {\"revenue\": 1265.0, \"nights\": 9, \"adr\": 140.55555555555554, \"revpar_cal\": 42.166666666666664, \"occupancy_cal\": 30.0, \"los\": 6.0, \"active_res\": 2, \"calendar_nights\": 30}, \"7\": {\"revenue\": 2150.0, \"nights\": 13, \"adr\": 165.3846153846154, \"revpar_cal\": 69.35483870967742, \"occupancy_cal\": 41.935483870967744, \"los\": 6.5, \"active_res\": 2, \"calendar_nights\": 31}, \"8\": {\"revenue\": 282.0, \"nights\": 3, \"adr\": 94.0, \"revpar_cal\": 9.096774193548388, \"occupancy_cal\": 9.67741935483871, \"los\": 3.0, \"active_res\": 1, \"calendar_nights\": 31}, \"9\": {\"revenue\": 1778.7, \"nights\": 15, \"adr\": 118.58, \"revpar_cal\": 59.29, \"occupancy_cal\": 50.0, \"los\": 12.0, \"active_res\": 2, \"calendar_nights\": 30}, \"10\": {\"revenue\": 2756.7, \"nights\": 15, \"adr\": 183.78, \"revpar_cal\": 88.9258064516129, \"occupancy_cal\": 48.38709677419355, \"los\": 8.0, \"active_res\": 2, \"calendar_nights\": 31}, \"11\": {\"revenue\": 2269.0, \"nights\": 16, \"adr\": 141.8125, \"revpar_cal\": 75.63333333333334, \"occupancy_cal\": 53.333333333333336, \"los\": 8.0, \"active_res\": 2, \"calendar_nights\": 30}, \"12\": {\"revenue\": 3670.0, \"nights\": 24, \"adr\": 152.91666666666666, \"revpar_cal\": 118.38709677419355, \"occupancy_cal\": 77.41935483870968, \"los\": 15.0, \"active_res\": 2, \"calendar_nights\": 31}}}, \"2025\": {\"year\": {\"revenue\": 35929.83, \"nights\": 227, \"adr\": 158.28, \"revpar_cal\": 98.44, \"occupancy_cal\": 62.2, \"los\": 6.7, \"active_res\": 34, \"blocked\": 53, \"blocked_pct\": 14.52, \"calendar_nights\": 365, \"sellable\": 312, \"occupancy_sell\": 72.76, \"revpar_sell\": 115.16}, \"monthly\": {\"1\": {\"revenue\": 3334.0, \"nights\": 21, \"adr\": 158.76, \"revpar_cal\": 107.55, \"occupancy_cal\": 67.7, \"los\": 14.0, \"active_res\": 2, \"blocked\": 3, \"blocked_pct\": 9.68, \"calendar_nights\": 31, \"sellable\": 28, \"occupancy_sell\": 75.0, \"revpar_sell\": 119.07}, \"2\": {\"revenue\": 3915.81, \"nights\": 23, \"adr\": 170.25, \"revpar_cal\": 139.85, \"occupancy_cal\": 82.1, \"los\": 8.2, \"active_res\": 4, \"blocked\": 5, \"blocked_pct\": 17.86, \"calendar_nights\": 28, \"sellable\": 23, \"occupancy_sell\": 100.0, \"revpar_sell\": 170.25}, \"3\": {\"revenue\": 4983.36, \"nights\": 27, \"adr\": 184.57, \"revpar_cal\": 160.75, \"occupancy_cal\": 87.1, \"los\": 8.2, \"active_res\": 4, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 100.0, \"revpar_sell\": 184.57}, \"4\": {\"revenue\": 4128.93, \"nights\": 24, \"adr\": 172.04, \"revpar_cal\": 137.63, \"occupancy_cal\": 80.0, \"los\": 5.2, \"active_res\": 5, \"blocked\": 6, \"blocked_pct\": 20.0, \"calendar_nights\": 30, \"sellable\": 24, \"occupancy_sell\": 100.0, \"revpar_sell\": 172.04}, \"5\": {\"revenue\": 794.0, \"nights\": 5, \"adr\": 158.8, \"revpar_cal\": 25.61, \"occupancy_cal\": 16.1, \"los\": 4.5, \"active_res\": 2, \"blocked\": 3, \"blocked_pct\": 9.68, \"calendar_nights\": 31, \"sellable\": 28, \"occupancy_sell\": 17.86, \"revpar_sell\": 28.36}, \"6\": {\"revenue\": 2572.5, \"nights\": 18, \"adr\": 142.92, \"revpar_cal\": 85.75, \"occupancy_cal\": 60.0, \"los\": 6.3, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 13.33, \"calendar_nights\": 30, \"sellable\": 26, \"occupancy_sell\": 69.23, \"revpar_sell\": 98.94}, \"7\": {\"revenue\": 3166.28, \"nights\": 24, \"adr\": 131.93, \"revpar_cal\": 102.14, \"occupancy_cal\": 77.4, \"los\": 6.0, \"active_res\": 5, \"blocked\": 6, \"blocked_pct\": 19.35, \"calendar_nights\": 31, \"sellable\": 25, \"occupancy_sell\": 96.0, \"revpar_sell\": 126.65}, \"8\": {\"revenue\": 839.71, \"nights\": 6, \"adr\": 139.95, \"revpar_cal\": 27.09, \"occupancy_cal\": 19.4, \"los\": 3.0, \"active_res\": 2, \"blocked\": 5, \"blocked_pct\": 16.13, \"calendar_nights\": 31, \"sellable\": 26, \"occupancy_sell\": 23.08, \"revpar_sell\": 32.3}, \"9\": {\"revenue\": 2559.22, \"nights\": 19, \"adr\": 134.7, \"revpar_cal\": 85.31, \"occupancy_cal\": 63.3, \"los\": 9.0, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 13.33, \"calendar_nights\": 30, \"sellable\": 26, \"occupancy_sell\": 73.08, \"revpar_sell\": 98.43}, \"10\": {\"revenue\": 3167.76, \"nights\": 27, \"adr\": 117.32, \"revpar_cal\": 102.19, \"occupancy_cal\": 87.1, \"los\": 8.5, \"active_res\": 4, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 100.0, \"revpar_sell\": 117.32}, \"11\": {\"revenue\": 2859.26, \"nights\": 17, \"adr\": 168.19, \"revpar_cal\": 95.31, \"occupancy_cal\": 56.7, \"los\": 5.2, \"active_res\": 4, \"blocked\": 5, \"blocked_pct\": 16.67, \"calendar_nights\": 30, \"sellable\": 25, \"occupancy_sell\": 68.0, \"revpar_sell\": 114.37}, \"12\": {\"revenue\": 3609.0, \"nights\": 16, \"adr\": 225.56, \"revpar_cal\": 116.42, \"occupancy_cal\": 51.6, \"los\": 7.3, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 59.26, \"revpar_sell\": 133.67}}}, \"2026\": {\"year\": {\"revenue\": 30935.29, \"nights\": 194, \"adr\": 159.46, \"revpar_cal\": 84.75, \"occupancy_cal\": 53.2, \"los\": 7.5, \"active_res\": 26, \"blocked\": 92, \"blocked_pct\": 25.21, \"calendar_nights\": 365, \"sellable\": 273, \"occupancy_sell\": 71.06, \"revpar_sell\": 113.32}, \"monthly\": {\"1\": {\"revenue\": 4263.46, \"nights\": 22, \"adr\": 193.79, \"revpar_cal\": 137.53, \"occupancy_cal\": 71.0, \"los\": 5.5, \"active_res\": 4, \"blocked\": 5, \"blocked_pct\": 16.13, \"calendar_nights\": 31, \"sellable\": 26, \"occupancy_sell\": 84.62, \"revpar_sell\": 163.98}, \"2\": {\"revenue\": 3763.46, \"nights\": 21, \"adr\": 179.21, \"revpar_cal\": 134.41, \"occupancy_cal\": 75.0, \"los\": 8.0, \"active_res\": 3, \"blocked\": 5, \"blocked_pct\": 17.86, \"calendar_nights\": 28, \"sellable\": 23, \"occupancy_sell\": 91.3, \"revpar_sell\": 163.63}, \"3\": {\"revenue\": 2808.21, \"nights\": 16, \"adr\": 175.51, \"revpar_cal\": 90.59, \"occupancy_cal\": 51.6, \"los\": 8.0, \"active_res\": 3, \"blocked\": 6, \"blocked_pct\": 19.35, \"calendar_nights\": 31, \"sellable\": 25, \"occupancy_sell\": 64.0, \"revpar_sell\": 112.33}, \"4\": {\"revenue\": 2962.87, \"nights\": 17, \"adr\": 174.29, \"revpar_cal\": 98.76, \"occupancy_cal\": 56.7, \"los\": 9.0, \"active_res\": 2, \"blocked\": 7, \"blocked_pct\": 23.33, \"calendar_nights\": 30, \"sellable\": 23, \"occupancy_sell\": 73.91, \"revpar_sell\": 128.82}, \"5\": {\"revenue\": 2070.37, \"nights\": 19, \"adr\": 108.97, \"revpar_cal\": 66.79, \"occupancy_cal\": 61.3, \"los\": 8.5, \"active_res\": 4, \"blocked\": 8, \"blocked_pct\": 25.81, \"calendar_nights\": 31, \"sellable\": 23, \"occupancy_sell\": 82.61, \"revpar_sell\": 90.02}, \"6\": {\"revenue\": 1414.2, \"nights\": 12, \"adr\": 117.85, \"revpar_cal\": 47.14, \"occupancy_cal\": 40.0, \"los\": 8.2, \"active_res\": 4, \"blocked\": 12, \"blocked_pct\": 40.0, \"calendar_nights\": 30, \"sellable\": 18, \"occupancy_sell\": 66.67, \"revpar_sell\": 78.57}, \"7\": {\"revenue\": 1821.94, \"nights\": 13, \"adr\": 140.15, \"revpar_cal\": 58.77, \"occupancy_cal\": 41.9, \"los\": 17.0, \"active_res\": 1, \"blocked\": 17, \"blocked_pct\": 54.84, \"calendar_nights\": 31, \"sellable\": 14, \"occupancy_sell\": 92.86, \"revpar_sell\": 130.14}, \"8\": {\"revenue\": 2299.61, \"nights\": 12, \"adr\": 191.63, \"revpar_cal\": 74.18, \"occupancy_cal\": 38.7, \"los\": 7.3, \"active_res\": 3, \"blocked\": 19, \"blocked_pct\": 61.29, \"calendar_nights\": 31, \"sellable\": 12, \"occupancy_sell\": 100.0, \"revpar_sell\": 191.63}, \"9\": {\"revenue\": 2935.84, \"nights\": 24, \"adr\": 122.33, \"revpar_cal\": 97.86, \"occupancy_cal\": 80.0, \"los\": 14.5, \"active_res\": 2, \"blocked\": 3, \"blocked_pct\": 10.0, \"calendar_nights\": 30, \"sellable\": 27, \"occupancy_sell\": 88.89, \"revpar_sell\": 108.73}, \"10\": {\"revenue\": 2445.45, \"nights\": 15, \"adr\": 163.03, \"revpar_cal\": 78.89, \"occupancy_cal\": 48.4, \"los\": 7.5, \"active_res\": 2, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 55.56, \"revpar_sell\": 90.57}, \"11\": {\"revenue\": 3084.72, \"nights\": 18, \"adr\": 171.37, \"revpar_cal\": 102.82, \"occupancy_cal\": 60.0, \"los\": 7.7, \"active_res\": 3, \"blocked\": 5, \"blocked_pct\": 16.67, \"calendar_nights\": 30, \"sellable\": 25, \"occupancy_sell\": 72.0, \"revpar_sell\": 123.39}, \"12\": {\"revenue\": 1065.16, \"nights\": 5, \"adr\": 213.03, \"revpar_cal\": 34.36, \"occupancy_cal\": 16.1, \"los\": 6.0, \"active_res\": 1, \"blocked\": 1, \"blocked_pct\": 3.23, \"calendar_nights\": 31, \"sellable\": 30, \"occupancy_sell\": 16.67, \"revpar_sell\": 35.51}}}}, \"Lengua de Lava\": {\"2024\": {\"year\": {\"revenue\": 10505.0, \"nights\": 122, \"adr\": 86.10655737704919, \"revpar_cal\": 28.702185792349727, \"occupancy_cal\": 33.33333333333333, \"los\": 8.714285714285714, \"active_res\": 14}, \"monthly\": {\"1\": {\"revenue\": 1275.0, \"nights\": 15, \"adr\": 85.0, \"revpar_cal\": 41.12903225806452, \"occupancy_cal\": 48.38709677419355, \"los\": 15.0, \"active_res\": 1, \"calendar_nights\": 31}, \"2\": {\"revenue\": 1622.0, \"nights\": 19, \"adr\": 85.36842105263158, \"revpar_cal\": 55.93103448275862, \"occupancy_cal\": 65.51724137931035, \"los\": 7.0, \"active_res\": 3, \"calendar_nights\": 29}, \"3\": {\"revenue\": 1967.0, \"nights\": 23, \"adr\": 85.52173913043478, \"revpar_cal\": 63.45161290322581, \"occupancy_cal\": 74.19354838709677, \"los\": 9.666666666666666, \"active_res\": 3, \"calendar_nights\": 31}, \"4\": {\"revenue\": 90.0, \"nights\": 7, \"adr\": 12.857142857142858, \"revpar_cal\": 3.0, \"occupancy_cal\": 23.333333333333332, \"los\": 7.0, \"active_res\": 1, \"calendar_nights\": 30}, \"5\": {\"revenue\": 624.5555555555557, \"nights\": 7, \"adr\": 89.22222222222224, \"revpar_cal\": 20.146953405017925, \"occupancy_cal\": 22.58064516129032, \"los\": 9.0, \"active_res\": 1, \"calendar_nights\": 31}, \"6\": {\"revenue\": 178.44444444444446, \"nights\": 2, \"adr\": 89.22222222222223, \"revpar_cal\": 5.948148148148149, \"occupancy_cal\": 6.666666666666667, \"los\": 9.0, \"active_res\": 1, \"calendar_nights\": 30}, \"7\": {\"revenue\": 0, \"nights\": 0, \"adr\": 0, \"revpar_cal\": 0.0, \"occupancy_cal\": 0.0, \"los\": 0, \"active_res\": 0, \"calendar_nights\": 31}, \"8\": {\"revenue\": 716.0, \"nights\": 9, \"adr\": 79.55555555555556, \"revpar_cal\": 23.096774193548388, \"occupancy_cal\": 29.03225806451613, \"los\": 9.0, \"active_res\": 1, \"calendar_nights\": 31}, \"9\": {\"revenue\": 0, \"nights\": 0, \"adr\": 0, \"revpar_cal\": 0.0, \"occupancy_cal\": 0.0, \"los\": 0, \"active_res\": 0, \"calendar_nights\": 30}, \"10\": {\"revenue\": 1181.142857142857, \"nights\": 15, \"adr\": 78.74285714285715, \"revpar_cal\": 38.10138248847926, \"occupancy_cal\": 48.38709677419355, \"los\": 8.0, \"active_res\": 2, \"calendar_nights\": 31}, \"11\": {\"revenue\": 644.8571428571429, \"nights\": 7, \"adr\": 92.12244897959184, \"revpar_cal\": 21.495238095238097, \"occupancy_cal\": 23.333333333333332, \"los\": 6.5, \"active_res\": 2, \"calendar_nights\": 30}, \"12\": {\"revenue\": 2206.0, \"nights\": 18, \"adr\": 122.55555555555556, \"revpar_cal\": 71.16129032258064, \"occupancy_cal\": 58.06451612903226, \"los\": 9.0, \"active_res\": 2, \"calendar_nights\": 31}}}, \"2025\": {\"year\": {\"revenue\": 19046.38, \"nights\": 200, \"adr\": 95.23, \"revpar_cal\": 52.18, \"occupancy_cal\": 54.8, \"los\": 8.8, \"active_res\": 24, \"blocked\": 40, \"blocked_pct\": 10.96, \"calendar_nights\": 365, \"sellable\": 325, \"occupancy_sell\": 61.54, \"revpar_sell\": 58.6}, \"monthly\": {\"1\": {\"revenue\": 2480.56, \"nights\": 23, \"adr\": 107.85, \"revpar_cal\": 80.02, \"occupancy_cal\": 74.2, \"los\": 10.0, \"active_res\": 3, \"blocked\": 5, \"blocked_pct\": 16.13, \"calendar_nights\": 31, \"sellable\": 26, \"occupancy_sell\": 88.46, \"revpar_sell\": 95.41}, \"2\": {\"revenue\": 2713.59, \"nights\": 20, \"adr\": 135.68, \"revpar_cal\": 96.91, \"occupancy_cal\": 71.4, \"los\": 7.7, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 14.29, \"calendar_nights\": 28, \"sellable\": 24, \"occupancy_sell\": 83.33, \"revpar_sell\": 113.07}, \"3\": {\"revenue\": 2223.86, \"nights\": 22, \"adr\": 101.08, \"revpar_cal\": 71.74, \"occupancy_cal\": 71.0, \"los\": 9.3, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 81.48, \"revpar_sell\": 82.37}, \"4\": {\"revenue\": 1405.0, \"nights\": 14, \"adr\": 100.36, \"revpar_cal\": 46.83, \"occupancy_cal\": 46.7, \"los\": 7.0, \"active_res\": 2, \"blocked\": 4, \"blocked_pct\": 13.33, \"calendar_nights\": 30, \"sellable\": 26, \"occupancy_sell\": 53.85, \"revpar_sell\": 54.04}, \"5\": {\"revenue\": 258.2, \"nights\": 4, \"adr\": 64.55, \"revpar_cal\": 8.33, \"occupancy_cal\": 12.9, \"los\": 4.0, \"active_res\": 1, \"blocked\": 2, \"blocked_pct\": 6.45, \"calendar_nights\": 31, \"sellable\": 29, \"occupancy_sell\": 13.79, \"revpar_sell\": 8.9}, \"6\": {\"revenue\": 0.0, \"nights\": 0, \"adr\": 0, \"revpar_cal\": 0.0, \"occupancy_cal\": 0.0, \"los\": 0, \"active_res\": 0, \"blocked\": 0, \"blocked_pct\": 0.0, \"calendar_nights\": 30, \"sellable\": 30, \"occupancy_sell\": 0.0, \"revpar_sell\": 0.0}, \"7\": {\"revenue\": 269.07, \"nights\": 4, \"adr\": 67.27, \"revpar_cal\": 8.68, \"occupancy_cal\": 12.9, \"los\": 12.0, \"active_res\": 1, \"blocked\": 1, \"blocked_pct\": 3.23, \"calendar_nights\": 31, \"sellable\": 30, \"occupancy_sell\": 13.33, \"revpar_sell\": 8.97}, \"8\": {\"revenue\": 1786.7, \"nights\": 30, \"adr\": 59.56, \"revpar_cal\": 57.64, \"occupancy_cal\": 96.8, \"los\": 12.7, \"active_res\": 3, \"blocked\": 3, \"blocked_pct\": 9.68, \"calendar_nights\": 31, \"sellable\": 28, \"occupancy_sell\": 107.14, \"revpar_sell\": 63.81}, \"9\": {\"revenue\": 1020.3, \"nights\": 15, \"adr\": 68.02, \"revpar_cal\": 34.01, \"occupancy_cal\": 50.0, \"los\": 8.3, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 13.33, \"calendar_nights\": 30, \"sellable\": 26, \"occupancy_sell\": 57.69, \"revpar_sell\": 39.24}, \"10\": {\"revenue\": 1678.41, \"nights\": 22, \"adr\": 76.29, \"revpar_cal\": 54.14, \"occupancy_cal\": 71.0, \"los\": 8.7, \"active_res\": 3, \"blocked\": 5, \"blocked_pct\": 16.13, \"calendar_nights\": 31, \"sellable\": 26, \"occupancy_sell\": 84.62, \"revpar_sell\": 64.55}, \"11\": {\"revenue\": 2476.26, \"nights\": 21, \"adr\": 117.92, \"revpar_cal\": 82.54, \"occupancy_cal\": 70.0, \"los\": 7.0, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 13.33, \"calendar_nights\": 30, \"sellable\": 26, \"occupancy_sell\": 80.77, \"revpar_sell\": 95.24}, \"12\": {\"revenue\": 2734.43, \"nights\": 25, \"adr\": 109.38, \"revpar_cal\": 88.21, \"occupancy_cal\": 80.6, \"los\": 9.0, \"active_res\": 4, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 92.59, \"revpar_sell\": 101.28}}}, \"2026\": {\"year\": {\"revenue\": 18123.04, \"nights\": 195, \"adr\": 92.94, \"revpar_cal\": 49.65, \"occupancy_cal\": 53.4, \"los\": 7.0, \"active_res\": 28, \"blocked\": 53, \"blocked_pct\": 14.52, \"calendar_nights\": 365, \"sellable\": 312, \"occupancy_sell\": 62.5, \"revpar_sell\": 58.09}, \"monthly\": {\"1\": {\"revenue\": 2561.57, \"nights\": 22, \"adr\": 116.43, \"revpar_cal\": 82.63, \"occupancy_cal\": 71.0, \"los\": 8.3, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 81.48, \"revpar_sell\": 94.87}, \"2\": {\"revenue\": 2519.37, \"nights\": 22, \"adr\": 114.52, \"revpar_cal\": 89.98, \"occupancy_cal\": 78.6, \"los\": 6.4, \"active_res\": 5, \"blocked\": 6, \"blocked_pct\": 21.43, \"calendar_nights\": 28, \"sellable\": 22, \"occupancy_sell\": 100.0, \"revpar_sell\": 114.52}, \"3\": {\"revenue\": 1973.05, \"nights\": 22, \"adr\": 89.68, \"revpar_cal\": 63.65, \"occupancy_cal\": 71.0, \"los\": 7.5, \"active_res\": 4, \"blocked\": 5, \"blocked_pct\": 16.13, \"calendar_nights\": 31, \"sellable\": 26, \"occupancy_sell\": 84.62, \"revpar_sell\": 75.89}, \"4\": {\"revenue\": 730.16, \"nights\": 9, \"adr\": 81.13, \"revpar_cal\": 24.34, \"occupancy_cal\": 30.0, \"los\": 5.0, \"active_res\": 2, \"blocked\": 7, \"blocked_pct\": 23.33, \"calendar_nights\": 30, \"sellable\": 23, \"occupancy_sell\": 39.13, \"revpar_sell\": 31.75}, \"5\": {\"revenue\": 711.42, \"nights\": 12, \"adr\": 59.28, \"revpar_cal\": 22.95, \"occupancy_cal\": 38.7, \"los\": 7.0, \"active_res\": 2, \"blocked\": 3, \"blocked_pct\": 9.68, \"calendar_nights\": 31, \"sellable\": 28, \"occupancy_sell\": 42.86, \"revpar_sell\": 25.41}, \"6\": {\"revenue\": 590.87, \"nights\": 9, \"adr\": 65.65, \"revpar_cal\": 19.7, \"occupancy_cal\": 30.0, \"los\": 6.0, \"active_res\": 3, \"blocked\": 5, \"blocked_pct\": 16.67, \"calendar_nights\": 30, \"sellable\": 25, \"occupancy_sell\": 36.0, \"revpar_sell\": 23.63}, \"7\": {\"revenue\": 1070.91, \"nights\": 17, \"adr\": 62.99, \"revpar_cal\": 34.55, \"occupancy_cal\": 54.8, \"los\": 8.5, \"active_res\": 2, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 62.96, \"revpar_sell\": 39.66}, \"8\": {\"revenue\": 1066.44, \"nights\": 17, \"adr\": 62.73, \"revpar_cal\": 34.4, \"occupancy_cal\": 54.8, \"los\": 8.5, \"active_res\": 2, \"blocked\": 5, \"blocked_pct\": 16.13, \"calendar_nights\": 31, \"sellable\": 26, \"occupancy_sell\": 65.38, \"revpar_sell\": 41.02}, \"9\": {\"revenue\": 1333.2, \"nights\": 15, \"adr\": 88.88, \"revpar_cal\": 44.44, \"occupancy_cal\": 50.0, \"los\": 3.8, \"active_res\": 4, \"blocked\": 7, \"blocked_pct\": 23.33, \"calendar_nights\": 30, \"sellable\": 23, \"occupancy_sell\": 65.22, \"revpar_sell\": 57.97}, \"10\": {\"revenue\": 2171.13, \"nights\": 26, \"adr\": 83.5, \"revpar_cal\": 70.04, \"occupancy_cal\": 83.9, \"los\": 13.0, \"active_res\": 2, \"blocked\": 3, \"blocked_pct\": 9.68, \"calendar_nights\": 31, \"sellable\": 28, \"occupancy_sell\": 92.86, \"revpar_sell\": 77.54}, \"11\": {\"revenue\": 3394.92, \"nights\": 24, \"adr\": 141.46, \"revpar_cal\": 113.16, \"occupancy_cal\": 80.0, \"los\": 8.0, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 13.33, \"calendar_nights\": 30, \"sellable\": 26, \"occupancy_sell\": 92.31, \"revpar_sell\": 130.57}, \"12\": {\"revenue\": 0.0, \"nights\": 0, \"adr\": 0, \"revpar_cal\": 0.0, \"occupancy_cal\": 0.0, \"los\": 0, \"active_res\": 0, \"blocked\": 0, \"blocked_pct\": 0.0, \"calendar_nights\": 31, \"sellable\": 31, \"occupancy_sell\": 0.0, \"revpar_sell\": 0.0}}}}, \"Casita Feliz\": {\"2024\": {\"year\": {\"revenue\": 8252.083478260869, \"nights\": 140, \"adr\": 58.94345341614906, \"revpar_cal\": 22.546676170111663, \"occupancy_cal\": 38.25136612021858, \"los\": 14.7, \"active_res\": 10}, \"monthly\": {\"1\": {\"revenue\": 1412.0, \"nights\": 22, \"adr\": 64.18181818181819, \"revpar_cal\": 45.54838709677419, \"occupancy_cal\": 70.96774193548387, \"los\": 11.333333333333334, \"active_res\": 3, \"calendar_nights\": 31}, \"2\": {\"revenue\": 1667.0, \"nights\": 26, \"adr\": 64.11538461538461, \"revpar_cal\": 57.48275862068966, \"occupancy_cal\": 89.65517241379311, \"los\": 14.0, \"active_res\": 2, \"calendar_nights\": 29}, \"3\": {\"revenue\": 1120.0, \"nights\": 28, \"adr\": 40.0, \"revpar_cal\": 36.12903225806452, \"occupancy_cal\": 90.32258064516128, \"los\": 38.0, \"active_res\": 1, \"calendar_nights\": 31}, \"4\": {\"revenue\": 400.0, \"nights\": 10, \"adr\": 40.0, \"revpar_cal\": 13.333333333333334, \"occupancy_cal\": 33.33333333333333, \"los\": 38.0, \"active_res\": 1, \"calendar_nights\": 30}, \"5\": {\"revenue\": 0, \"nights\": 0, \"adr\": 0, \"revpar_cal\": 0.0, \"occupancy_cal\": 0.0, \"los\": 0, \"active_res\": 0, \"calendar_nights\": 31}, \"6\": {\"revenue\": 0, \"nights\": 0, \"adr\": 0, \"revpar_cal\": 0.0, \"occupancy_cal\": 0.0, \"los\": 0, \"active_res\": 0, \"calendar_nights\": 30}, \"7\": {\"revenue\": 0, \"nights\": 0, \"adr\": 0, \"revpar_cal\": 0.0, \"occupancy_cal\": 0.0, \"los\": 0, \"active_res\": 0, \"calendar_nights\": 31}, \"8\": {\"revenue\": 138.0, \"nights\": 3, \"adr\": 46.0, \"revpar_cal\": 4.451612903225806, \"occupancy_cal\": 9.67741935483871, \"los\": 3.0, \"active_res\": 1, \"calendar_nights\": 31}, \"9\": {\"revenue\": 0, \"nights\": 0, \"adr\": 0, \"revpar_cal\": 0.0, \"occupancy_cal\": 0.0, \"los\": 0, \"active_res\": 0, \"calendar_nights\": 30}, \"10\": {\"revenue\": 350.0, \"nights\": 5, \"adr\": 70.0, \"revpar_cal\": 11.290322580645162, \"occupancy_cal\": 16.129032258064516, \"los\": 13.0, \"active_res\": 1, \"calendar_nights\": 31}, \"11\": {\"revenue\": 1565.0, \"nights\": 22, \"adr\": 71.13636363636364, \"revpar_cal\": 52.166666666666664, \"occupancy_cal\": 73.33333333333333, \"los\": 13.5, \"active_res\": 2, \"calendar_nights\": 30}, \"12\": {\"revenue\": 1600.0834782608695, \"nights\": 24, \"adr\": 66.67014492753623, \"revpar_cal\": 51.615596072931275, \"occupancy_cal\": 77.41935483870968, \"los\": 15.5, \"active_res\": 2, \"calendar_nights\": 31}}}, \"2025\": {\"year\": {\"revenue\": 13086.46, \"nights\": 135, \"adr\": 96.94, \"revpar_cal\": 35.85, \"occupancy_cal\": 37.0, \"los\": 7.0, \"active_res\": 25, \"blocked\": 50, \"blocked_pct\": 13.7, \"calendar_nights\": 365, \"sellable\": 315, \"occupancy_sell\": 42.86, \"revpar_sell\": 41.54}, \"monthly\": {\"1\": {\"revenue\": 1346.0, \"nights\": 15, \"adr\": 89.73, \"revpar_cal\": 43.42, \"occupancy_cal\": 48.4, \"los\": 7.5, \"active_res\": 2, \"blocked\": 5, \"blocked_pct\": 16.13, \"calendar_nights\": 31, \"sellable\": 26, \"occupancy_sell\": 57.69, \"revpar_sell\": 51.77}, \"2\": {\"revenue\": 2691.55, \"nights\": 23, \"adr\": 117.02, \"revpar_cal\": 96.13, \"occupancy_cal\": 82.1, \"los\": 6.5, \"active_res\": 4, \"blocked\": 6, \"blocked_pct\": 21.43, \"calendar_nights\": 28, \"sellable\": 22, \"occupancy_sell\": 104.55, \"revpar_sell\": 122.34}, \"3\": {\"revenue\": 2343.5, \"nights\": 21, \"adr\": 111.6, \"revpar_cal\": 75.6, \"occupancy_cal\": 67.7, \"los\": 8.0, \"active_res\": 3, \"blocked\": 4, \"blocked_pct\": 12.9, \"calendar_nights\": 31, \"sellable\": 27, \"occupancy_sell\": 77.78, \"revpar_sell\": 86.8}, \"4\": {\"revenue\": 1192.0, \"nights\": 13, \"adr\": 91.69, \"revpar_cal\": 39.73, \"occupancy_cal\": 43.3, \"los\": 4.3, \"active_res\": 3, \"blocked\": 6, \"blocked_pct\": 20.0, \"calendar_nights\": 30, \"sellable\": 24, \"occupancy_sell\": 54.17, \"revpar_sell\": 49.67}, \"5\": {\"revenue\": 229.0, \"nights\": 3, \"adr\": 76.33, \"revpar_cal\": 7.39, \"occupancy_cal\": 9.7, \"los\": 3.0, \"active_res\": 1, \"blocked\": 2, \"blocked_pct\": 6.45, \"calendar_nights\": 31, \"sellable\": 29, \"occupancy_sell\": 10.34, \"revpar_sell\": 7.9}, \"6\": {\"revenue\": 316.0, \"nights\": 4, \"adr\": 79.0, \"revpar_cal\": 10.53, \"occupancy_cal\": 13.3, \"los\": 4.0, \"active_res\": 1, \"blocked\": 2, \"blocked_pct\": 6.67, \"calendar_nights\": 30, \"sellable\": 28, \"occupancy_sell\": 14.29, \"revpar_sell\": 11.29}, \"7\": {\"revenue\": 331.25, \"nights\": 5, \"adr\": 66.25, \"revpar_cal\": 10.69, \"occupancy_cal\": 16.1, \"los\": 5.0, \"active_res\": 1, \"blocked\": 2, \"blocked_pct\": 6.45, \"calendar_nights\": 31, \"sellable\": 29, \"occupancy_sell\": 17.24, \"revpar_sell\": 11.42}, \"8\": {\"revenue\": 378.0, \"nights\": 5, \"adr\": 75.6, \"revpar_cal\": 12.19, \"occupancy_cal\": 16.1, \"los\": 5.0, \"active_res\": 1, \"blocked\": 2, \"blocked_pct\": 6.45, \"calendar_nights\": 31, \"sellable\": 29, \"occupancy_sell\": 17.24, \"revpar_sell\": 13.03}, \"9\": {\"revenue\": 933.65, \"nights\": 13, \"adr\": 71.82, \"revpar_cal\": 31.12, \"occupancy_cal\": 43.3, \"los\": 4.3, \"active_res\": 3, \"blocked\": 7, \"blocked_pct\": 23.33, \"calendar_nights\": 30, \"sellable\": 23, \"occupancy_sell\": 56.52, \"revpar_sell\": 40.59}, \"10\": {\"revenue\": 676.27, \"nights\": 8, \"adr\": 84.53, \"revpar_cal\": 21.82, \"occupancy_cal\": 25.8, \"los\": 5.5, \"active_res\": 2, \"blocked\": 2, \"blocked_pct\": 6.45, \"calendar_nights\": 31, \"sellable\": 29, \"occupancy_sell\": 27.59, \"revpar_sell\": 23.32}, \"11\": {\"revenue\": 1208.69, \"nights\": 12, \"adr\": 100.72, \"revpar_cal\": 40.29, \"occupancy_cal\": 40.0, \"los\": 5.3, \"active_res\": 3, \"blocked\": 5, \"blocked_pct\": 16.67, \"calendar_nights\": 30, \"sellable\": 25, \"occupancy_sell\": 48.0, \"revpar_sell\": 48.35}, \"12\": {\"revenue\": 1440.55, \"nights\": 13, \"adr\": 110.81, \"revpar_cal\": 46.47, \"occupancy_cal\": 41.9, \"los\": 17.3, \"active_res\": 3, \"blocked\": 7, \"blocked_pct\": 22.58, \"calendar_nights\": 31, \"sellable\": 24, \"occupancy_sell\": 54.17, \"revpar_sell\": 60.02}}}, \"2026\": {\"year\": {\"revenue\": 10575.86, \"nights\": 114, \"adr\": 92.77, \"revpar_cal\": 28.97, \"occupancy_cal\": 31.2, \"los\": 8.2, \"active_res\": 15, \"blocked\": 133, \"blocked_pct\": 36.44, \"calendar_nights\": 365, \"sellable\": 232, \"occupancy_sell\": 49.14, \"revpar_sell\": 45.59}, \"monthly\": {\"1\": {\"revenue\": 3611.78, \"nights\": 31, \"adr\": 116.51, \"revpar_cal\": 116.51, \"occupancy_cal\": 100.0, \"los\": 42.0, \"active_res\": 1, \"blocked\": 0, \"blocked_pct\": 0.0, \"calendar_nights\": 31, \"sellable\": 31, \"occupancy_sell\": 100.0, \"revpar_sell\": 116.51}, \"2\": {\"revenue\": 932.07, \"nights\": 8, \"adr\": 116.51, \"revpar_cal\": 33.29, \"occupancy_cal\": 28.6, \"los\": 42.0, \"active_res\": 1, \"blocked\": 20, \"blocked_pct\": 71.43, \"calendar_nights\": 28, \"sellable\": 8, \"occupancy_sell\": 100.0, \"revpar_sell\": 116.51}, \"3\": {\"revenue\": 319.67, \"nights\": 5, \"adr\": 63.93, \"revpar_cal\": 10.31, \"occupancy_cal\": 16.1, \"los\": 6.0, \"active_res\": 1, \"blocked\": 26, \"blocked_pct\": 83.87, \"calendar_nights\": 31, \"sellable\": 5, \"occupancy_sell\": 100.0, \"revpar_sell\": 63.93}, \"4\": {\"revenue\": 336.08, \"nights\": 4, \"adr\": 84.02, \"revpar_cal\": 11.2, \"occupancy_cal\": 13.3, \"los\": 4.5, \"active_res\": 2, \"blocked\": 13, \"blocked_pct\": 43.33, \"calendar_nights\": 30, \"sellable\": 17, \"occupancy_sell\": 23.53, \"revpar_sell\": 19.77}, \"5\": {\"revenue\": 664.93, \"nights\": 10, \"adr\": 66.49, \"revpar_cal\": 21.45, \"occupancy_cal\": 32.3, \"los\": 6.0, \"active_res\": 2, \"blocked\": 11, \"blocked_pct\": 35.48, \"calendar_nights\": 31, \"sellable\": 20, \"occupancy_sell\": 50.0, \"revpar_sell\": 33.25}, \"6\": {\"revenue\": 965.78, \"nights\": 14, \"adr\": 68.98, \"revpar_cal\": 32.19, \"occupancy_cal\": 46.7, \"los\": 4.8, \"active_res\": 4, \"blocked\": 12, \"blocked_pct\": 40.0, \"calendar_nights\": 30, \"sellable\": 18, \"occupancy_sell\": 77.78, \"revpar_sell\": 53.65}, \"7\": {\"revenue\": 470.25, \"nights\": 7, \"adr\": 67.18, \"revpar_cal\": 15.17, \"occupancy_cal\": 22.6, \"los\": 7.0, \"active_res\": 1, \"blocked\": 19, \"blocked_pct\": 61.29, \"calendar_nights\": 31, \"sellable\": 12, \"occupancy_sell\": 58.33, \"revpar_sell\": 39.19}, \"8\": {\"revenue\": 0.0, \"nights\": 0, \"adr\": 0, \"revpar_cal\": 0.0, \"occupancy_cal\": 0.0, \"los\": 0, \"active_res\": 0, \"blocked\": 16, \"blocked_pct\": 51.61, \"calendar_nights\": 31, \"sellable\": 15, \"occupancy_sell\": 0.0, \"revpar_sell\": 0.0}, \"9\": {\"revenue\": 1098.89, \"nights\": 13, \"adr\": 84.53, \"revpar_cal\": 36.63, \"occupancy_cal\": 43.3, \"los\": 5.3, \"active_res\": 3, \"blocked\": 10, \"blocked_pct\": 33.33, \"calendar_nights\": 30, \"sellable\": 20, \"occupancy_sell\": 65.0, \"revpar_sell\": 54.94}, \"10\": {\"revenue\": 624.7, \"nights\": 7, \"adr\": 89.24, \"revpar_cal\": 20.15, \"occupancy_cal\": 22.6, \"los\": 5.5, \"active_res\": 2, \"blocked\": 3, \"blocked_pct\": 9.68, \"calendar_nights\": 31, \"sellable\": 28, \"occupancy_sell\": 25.0, \"revpar_sell\": 22.31}, \"11\": {\"revenue\": 1358.0, \"nights\": 14, \"adr\": 97.0, \"revpar_cal\": 45.27, \"occupancy_cal\": 46.7, \"los\": 14.0, \"active_res\": 1, \"blocked\": 2, \"blocked_pct\": 6.67, \"calendar_nights\": 30, \"sellable\": 28, \"occupancy_sell\": 50.0, \"revpar_sell\": 48.5}, \"12\": {\"revenue\": 193.71, \"nights\": 1, \"adr\": 193.71, \"revpar_cal\": 6.25, \"occupancy_cal\": 3.2, \"los\": 7.0, \"active_res\": 1, \"blocked\": 1, \"blocked_pct\": 3.23, \"calendar_nights\": 31, \"sellable\": 30, \"occupancy_sell\": 3.33, \"revpar_sell\": 6.46}}}}};\nconst euro=n=>new Intl.NumberFormat('es-ES',{style:'currency',currency:'EUR',maximumFractionDigits:0}).format(n);\nconst euro2=n=>new Intl.NumberFormat('es-ES',{style:'currency',currency:'EUR',minimumFractionDigits:2,maximumFractionDigits:2}).format(n);\nconst num=n=>new Intl.NumberFormat('es-ES').format(n);\nconst p1=n=>(n>=0?'+':'')+n.toFixed(1)+'%';\nconst arrow=n=>n>=0?'\u25b2':'\u25bc';\nconst cls=n=>n>=0?'up':'dn';\nconst change=(a,b)=>a?((b\/a)-1)*100:0;\n\ndocument.querySelectorAll('.nav button').forEach(b=>b.onclick=()=>{\n document.querySelectorAll('.nav button').forEach(x=>x.classList.remove('on'));\n document.querySelectorAll('.pane').forEach(x=>x.classList.remove('on'));\n b.classList.add('on');document.getElementById(b.dataset.pane).classList.add('on');window.scrollTo({top:0,behavior:'smooth'});\n});\n\nconst A=D.year2025,B=D.year2026,S=D.summary,C=D.closed;\ndocument.getElementById('heroRev').textContent=p1(S.revenueChange);\ndocument.getElementById('rev25').textContent=euro(A.revenue);\ndocument.getElementById('rev26').textContent=euro(B.revenue);\ndocument.getElementById('heroN').textContent=p1(S.nightsChange);\ndocument.getElementById('n25').textContent=num(A.nights);\ndocument.getElementById('n26').textContent=num(B.nights);\ndocument.getElementById('heroRp').textContent=p1(S.revparChange);\ndocument.getElementById('rp25').textContent=euro2(A.revpar);\ndocument.getElementById('rp26').textContent=euro2(B.revpar);\ndocument.getElementById('futureRev').textContent=euro(S.futureRevenue);\ndocument.getElementById('futureN').textContent=num(S.futureNights);\n\nfunction setDelta(id,val,suffix='%'){\n const e=document.getElementById(id);e.textContent=arrow(val)+' '+Math.abs(val).toFixed(1)+suffix;e.className='delta '+cls(val);\n}\ndocument.getElementById('adrVals').textContent=euro2(A.adr)+' \u2192 '+euro2(B.adr);setDelta('adrDelta',S.adrChange);\ndocument.getElementById('occVals').textContent=A.occupancy.toFixed(1)+'% \u2192 '+B.occupancy.toFixed(1)+'%';setDelta('occDelta',S.occChangePP,' pp');\ndocument.getElementById('blockVals').textContent=num(A.blocked)+' \u2192 '+num(B.blocked);setDelta('blockDelta',((B.blocked\/A.blocked)-1)*100);\ndocument.getElementById('sellVals').textContent=num(A.sellable)+' \u2192 '+num(B.sellable);setDelta('sellDelta',S.sellableChange);\n\nfunction monthInsight(m,a,b){\n const revCh=change(a.revenue,b.revenue);\n const rpCh=change(a.revpar,b.revpar);\n const sellA=a.units-a.blocked,sellB=b.units-b.blocked;\n const sellCh=change(sellA,sellB);\n if(m===1) return '<b>Enero mejora de forma clara.<\/b> Adem\u00e1s, 42 noches disfrutadas en enero proced\u00edan de estancias iniciadas a finales de diciembre de 2025.';\n if(m===2) return '<b>La ca\u00edda de revenue coincide casi exactamente con la reducci\u00f3n de inventario comercializable.<\/b> El RevPAR comercializable se mantiene pr\u00e1cticamente estable.';\n if(m===3) return '<b>Los bloqueos explican una parte importante, pero no toda la ca\u00edda.<\/b> El inventario comercializable baja un '+Math.abs(sellCh).toFixed(1)+'%.';\n if(m===4) return '<b>Menos inventario disponible y menor rendimiento.<\/b> Aqu\u00ed los bloqueos influyen, aunque no explican por s\u00ed solos toda la variaci\u00f3n.';\n if(m===5) return '<b>Mejora muy fuerte pese a tener m\u00e1s bloqueos.<\/b> Revenue y RevPAR crecen de forma notable.';\n if(m===6) return '<b>M\u00e1s revenue con bastante menos disponibilidad.<\/b> El RevPAR comercializable mejora un '+rpCh.toFixed(1)+'%.';\n if(m===7) return '<b>El revenue baja un '+Math.abs(revCh).toFixed(1)+'%, con un '+(b.blocked\/b.units*100).toFixed(1)+'% del inventario bloqueado.<\/b>';\n if(m===8) return '<b>Mejora de revenue con el 43% del inventario bloqueado.<\/b> El RevPAR comercializable crece con fuerza.';\n if(m===9) return '<b>Septiembre ya supera el revenue de 2025<\/b> aun siendo un mes todav\u00eda en curso.';\n if(m===10) return 'Octubre sigue abierto y se encuentra cerca del cierre de 2025.';\n if(m===11) return '<b>Noviembre ya supera 2025<\/b> con reservas todav\u00eda por poder entrar.';\n return 'Diciembre todav\u00eda tiene mucho recorrido de venta y no debe leerse como un cierre.';\n}\n\nconst mg=document.getElementById('monthGrid');\nD.months.forEach((name,i)=>{\n const m=i+1,a=D.monthly[String(m)]['2025'],b=D.monthly[String(m)]['2026'];\n const revCh=change(a.revenue,b.revenue);\n const rpCh=change(a.revpar,b.revpar);\n const blockPct25=a.blocked\/a.units*100,blockPct26=b.blocked\/b.units*100;\n const sellA=a.units-a.blocked,sellB=b.units-b.blocked;\n const occ25=sellA?a.nights\/sellA*100:0,occ26=sellB?b.nights\/sellB*100:0;\n const los25=D.aggregate_los['2025'][String(m)]||0,los26=D.aggregate_los['2026'][String(m)]||0;\n const status=m<=8?'Mes cerrado \u00b7 comparaci\u00f3n directa':m===9?'Mes en curso \u00b7 a fecha de hoy':'Reservas ya confirmadas';\n const css=m<=8?'closed':m===9?'live':'future';\n const tag=m<=8?(revCh>=0?'good':'bad'):'neutral';\n const result=m<=8?(arrow(revCh)+' '+Math.abs(revCh).toFixed(1)+'% de revenue'):(b.revenue>=a.revenue?'Ya supera el cierre 2025':'2026 todav\u00eda sigue en venta');\n mg.insertAdjacentHTML('beforeend',`<div class=\"month ${css}\">\n  <div class=\"mname\">${name}<\/div><div class=\"status\">${status}<\/div>\n  <div class=\"compare\"><div class=\"box\"><div class=\"yr\">2025<\/div><div class=\"val\">${euro(a.revenue)}<\/div><\/div><div class=\"box\"><div class=\"yr\">2026<\/div><div class=\"val\">${euro(b.revenue)}<\/div><\/div><\/div>\n  <div class=\"result ${tag}\">${result}<\/div>\n  <div class=\"metric-pair\">\n   <div class=\"micro\"><div class=\"l\">ADR 2026<\/div><div class=\"v\">${euro2(b.adr)}<\/div><div class=\"sub\">2025: ${euro2(a.adr)}<\/div><\/div>\n   <div class=\"micro\"><div class=\"l\">RevPAR 2026<\/div><div class=\"v\">${euro2(b.revpar)}<\/div><div class=\"sub\">2025: ${euro2(a.revpar)} \u00b7 ${arrow(rpCh)} ${Math.abs(rpCh).toFixed(1)}%<\/div><\/div>\n  <\/div>\n  <div class=\"metric-pair\">\n   <div class=\"micro\"><div class=\"l\">Ocupaci\u00f3n 2026<\/div><div class=\"v\">${occ26.toFixed(1)}%<\/div><div class=\"sub\">2025: ${occ25.toFixed(1)}%<\/div><\/div>\n   <div class=\"micro\"><div class=\"l\">LOS 2026<\/div><div class=\"v\">${los26.toFixed(1)} noches<\/div><div class=\"sub\">2025: ${los25.toFixed(1)} noches<\/div><\/div>\n  <\/div>\n  <div class=\"blockline\">${monthInsight(m,a,b)}<br><span style=\"color:var(--muted)\">Bloqueos: ${blockPct25.toFixed(1)}% en 2025 \u2192 ${blockPct26.toFixed(1)}% en 2026<\/span><\/div>\n <\/div>`);\n});\n\n\nfunction propertyMonthInsight(p,m,a,b,future){\n const revCh=change(a.revenue,b.revenue);\n const rpCh=change(a.revpar_sell,b.revpar_sell);\n const sellCh=change(a.sellable,b.sellable);\n const blockDelta=b.blocked-a.blocked;\n if(future){\n   if(blockDelta>0) return `2026 tiene ${blockDelta} noches bloqueadas m\u00e1s que 2025. El mes sigue abierto y el revenue puede seguir creciendo.`;\n   if(blockDelta<0) return `2026 tiene ${Math.abs(blockDelta)} noches bloqueadas menos que 2025. El mes sigue abierto y el revenue puede seguir creciendo.`;\n   return 'El nivel de bloqueos es similar al a\u00f1o anterior. El mes sigue abierto y todav\u00eda puede incorporar nuevas reservas.';\n }\n if(revCh<0 && blockDelta>2){\n   if(rpCh>=0) return `Hay ${blockDelta} noches bloqueadas m\u00e1s. El revenue baja ${Math.abs(revCh).toFixed(1)}%, pero el RevPAR comercializable mejora ${rpCh.toFixed(1)}%: la menor disponibilidad explica una parte importante de la ca\u00edda nominal.`;\n   return `Hay ${blockDelta} noches bloqueadas m\u00e1s y el inventario comercializable baja ${Math.abs(sellCh).toFixed(1)}%. Los bloqueos explican parte de la ca\u00edda, aunque el rendimiento por noche disponible tambi\u00e9n es menor.`;\n }\n if(revCh<0 && blockDelta<=2){\n   return `El revenue baja ${Math.abs(revCh).toFixed(1)}% sin un aumento relevante de bloqueos. En este mes la ca\u00edda no puede explicarse principalmente por la disponibilidad.`;\n }\n if(revCh>=0 && blockDelta>2){\n   return `El revenue mejora ${revCh.toFixed(1)}% pese a tener ${blockDelta} noches bloqueadas m\u00e1s. El rendimiento del inventario disponible compensa la menor disponibilidad.`;\n }\n if(revCh>=0 && blockDelta<0){\n   return `El revenue mejora ${revCh.toFixed(1)}% y adem\u00e1s hay ${Math.abs(blockDelta)} noches bloqueadas menos, por lo que existe m\u00e1s capacidad de venta.`;\n }\n return `El revenue mejora ${revCh.toFixed(1)}% con un nivel de bloqueos similar al a\u00f1o anterior.`;\n}\n\nfunction propertyPeriodInsight(p,s){\n const rev=s.revenueChange, sell=s.sellableChange, rp=s.revparChange, occ=s.occChangePP;\n if(rev<0 && sell<rev && rp>0){\n   return `El revenue baja ${Math.abs(rev).toFixed(1)}%, pero las noches comercializables caen todav\u00eda m\u00e1s (${Math.abs(sell).toFixed(1)}%). El RevPAR comercializable mejora ${rp.toFixed(1)}% y la ocupaci\u00f3n sube ${occ.toFixed(1)} puntos.`;\n }\n if(rev>=0 && sell<0){\n   return `El revenue mejora ${rev.toFixed(1)}% pese a disponer de ${Math.abs(sell).toFixed(1)}% menos noches comercializables. El RevPAR mejora ${rp.toFixed(1)}%.`;\n }\n if(rev<0 && rp<0){\n   return `El revenue baja ${Math.abs(rev).toFixed(1)}% y el RevPAR comercializable tambi\u00e9n retrocede ${Math.abs(rp).toFixed(1)}%. Los bloqueos no explican por s\u00ed solos el resultado.`;\n }\n return `Revenue ${rev>=0?'+':''}${rev.toFixed(1)}% \u00b7 inventario comercializable ${sell>=0?'+':''}${sell.toFixed(1)}% \u00b7 RevPAR ${rp>=0?'+':''}${rp.toFixed(1)}%.`;\n}\n\n\/\/ Bloqueos por alojamiento en Situaci\u00f3n general\ndocument.getElementById('propertyBlockGrid').innerHTML=['Tasarte','Lengua de Lava','Casita Feliz'].map(p=>{\n const s=D.property_block_summary[p];\n return `<div class=\"pb-card ${p==='Casita Feliz'?'highlight':''}\">\n   <div class=\"pb-name\">${p}<\/div>\n   <div class=\"pb-sub\">Enero\u2013agosto \u00b7 2025 vs 2026<\/div>\n   <div class=\"pb-main\">\n     <div class=\"pb-box\"><div class=\"l\">Noches bloqueadas<\/div><div class=\"v\">${s.blocked25} \u2192 ${s.blocked26}<\/div><\/div>\n     <div class=\"pb-box\"><div class=\"l\">% bloqueado 2026<\/div><div class=\"v\">${s.blockPct26.toFixed(1)}%<\/div><\/div>\n   <\/div>\n   <div class=\"pb-stats\">\n     <div class=\"pb-stat\"><div class=\"l\">Revenue<\/div><div class=\"v ${cls(s.revenueChange)}\">${p1(s.revenueChange)}<\/div><\/div>\n     <div class=\"pb-stat\"><div class=\"l\">Noches vendibles<\/div><div class=\"v ${cls(s.sellableChange)}\">${p1(s.sellableChange)}<\/div><\/div>\n     <div class=\"pb-stat\"><div class=\"l\">RevPAR<\/div><div class=\"v ${cls(s.revparChange)}\">${p1(s.revparChange)}<\/div><\/div>\n     <div class=\"pb-stat\"><div class=\"l\">Ocupaci\u00f3n<\/div><div class=\"v ${cls(s.occChangePP)}\">${s.occChangePP>=0?'+':''}${s.occChangePP.toFixed(1)} pp<\/div><\/div>\n   <\/div>\n   <div class=\"pb-read\">${propertyPeriodInsight(p,s)}<\/div>\n <\/div>`;\n}).join('');\n\n\n\/\/ Detalle mensual por alojamiento\nconst mt=document.getElementById('monthTabs');\nD.months.forEach((name,i)=>{\n const btn=document.createElement('button');\n btn.textContent=name.substring(0,3);\n btn.dataset.month=String(i+1);\n if(i===0)btn.classList.add('on');\n btn.onclick=()=>{document.querySelectorAll('#monthTabs button').forEach(x=>x.classList.remove('on'));btn.classList.add('on');renderPropertyMonth(i+1);};\n mt.appendChild(btn);\n});\n\nfunction renderPropertyMonth(m){\n const box=document.getElementById('propertyMonthGrid');\n const monthName=D.months[m-1];\n const status=m<=8?'Mes cerrado':m===9?'Mes en curso':'Reservas confirmadas';\n box.innerHTML=['Tasarte','Lengua de Lava','Casita Feliz'].map(p=>{\n   const a=D.property_monthly[p]['2025'][String(m)], b=D.property_monthly[p]['2026'][String(m)];\n   const revCh=change(a.revenue,b.revenue);\n   const future=m>=9;\n   const blockDelta=b.blocked-a.blocked;\n   return `<div class=\"pm-card\">\n    <div class=\"pm-name\">${p}<\/div><div class=\"pm-status\">${monthName} \u00b7 ${status}<\/div>\n    <div class=\"pm-revenue\"><div class=\"pm-r\"><div class=\"yr\">Revenue 2025<\/div><div class=\"val\">${euro(a.revenue)}<\/div><\/div><div class=\"pm-r\"><div class=\"yr\">Revenue 2026<\/div><div class=\"val\">${euro(b.revenue)}<\/div><\/div><\/div>\n    <div class=\"result ${future?'neutral':(revCh>=0?'good':'bad')}\">${future?(b.revenue?'Revenue ya asegurado':'Todav\u00eda sin reservas confirmadas'):(arrow(revCh)+' '+Math.abs(revCh).toFixed(1)+'% de revenue')}<\/div>\n    <div class=\"pm-kpis\">\n      <div class=\"pm-kpi\"><div class=\"lab\">Noches<\/div><div class=\"val\">${b.nights}<\/div><div class=\"sub\">2025: ${a.nights}<\/div><\/div>\n      <div class=\"pm-kpi\"><div class=\"lab\">ADR<\/div><div class=\"val\">${euro2(b.adr)}<\/div><div class=\"sub\">2025: ${euro2(a.adr)}<\/div><\/div>\n      <div class=\"pm-kpi\"><div class=\"lab\">RevPAR<\/div><div class=\"val\">${euro2(b.revpar_sell)}<\/div><div class=\"sub\">2025: ${euro2(a.revpar_sell)}<\/div><\/div>\n      <div class=\"pm-kpi\"><div class=\"lab\">Ocupaci\u00f3n<\/div><div class=\"val\">${b.occupancy_sell.toFixed(1)}%<\/div><div class=\"sub\">2025: ${a.occupancy_sell.toFixed(1)}%<\/div><\/div>\n      <div class=\"pm-kpi\"><div class=\"lab\">LOS<\/div><div class=\"val\">${b.los?b.los.toFixed(1)+' noches':'\u2014'}<\/div><div class=\"sub\">2025: ${a.los?a.los.toFixed(1)+' noches':'\u2014'}<\/div><\/div>\n      <div class=\"pm-kpi\"><div class=\"lab\">Bloqueos<\/div><div class=\"val\">${b.blocked} noches<\/div><div class=\"sub\">2025: ${a.blocked} \u00b7 ${blockDelta>0?'+':''}${blockDelta}<\/div><\/div>\n      <div class=\"pm-kpi\"><div class=\"lab\">Noches comercializables<\/div><div class=\"val\">${b.sellable}<\/div><div class=\"sub\">2025: ${a.sellable}<\/div><\/div>\n      <div class=\"pm-kpi\"><div class=\"lab\">% bloqueado<\/div><div class=\"val\">${b.blocked_pct.toFixed(1)}%<\/div><div class=\"sub\">2025: ${a.blocked_pct.toFixed(1)}%<\/div><\/div>\n    <\/div>\n    <div class=\"pm-note\">${propertyMonthInsight(p,m,a,b,future)}<\/div>\n   <\/div>`;\n }).join('');\n}\nrenderPropertyMonth(1);\n\n\/\/ Alojamiento\nconst ag=document.getElementById('aptGrid');\nag.innerHTML=['Tasarte','Lengua de Lava','Casita Feliz'].map(p=>{\n const a=D.property_closed[p]['2025'], b=D.property_closed[p]['2026'];\n const ay=D.property_year[p]['2025'], by=D.property_year[p]['2026'];\n const s=D.property_block_summary[p];\n const revCh=change(a.revenue,b.revenue),adrCh=change(a.adr,b.adr),rpCh=change(a.revpar_sell,b.revpar_sell),occCh=b.occupancy_sell-a.occupancy_sell,losCh=b.los-a.los,nCh=change(a.nights,b.nights);\n let context=propertyPeriodInsight(p,s);\n if(p==='Casita Feliz') context='<strong>Disponibilidad especialmente condicionada:<\/strong> entre enero y agosto pasa de 29 a 117 noches bloqueadas. '+context+' Durante parte del periodo estuvo fuera de venta por las obras del jacuzzi.';\n return `<div class=\"apt\">\n  <div class=\"apt-name\">${p}<\/div>\n  <div class=\"apt-cols\"><div class=\"aptbox\"><div class=\"yr\">Ene\u2013ago 2025<\/div><div class=\"val\">${euro(a.revenue)}<\/div><\/div><div class=\"aptbox\"><div class=\"yr\">Ene\u2013ago 2026<\/div><div class=\"val\">${euro(b.revenue)}<\/div><\/div><\/div>\n  <div class=\"apt-change ${cls(revCh)}\">${arrow(revCh)} ${Math.abs(revCh).toFixed(1)}% de revenue<\/div>\n  <div class=\"apt-metrics\">\n   <div class=\"am\"><div class=\"l\">ADR<\/div><div class=\"v\">${euro2(b.adr)}<\/div><div class=\"small\">2025: ${euro2(a.adr)} \u00b7 ${arrow(adrCh)} ${Math.abs(adrCh).toFixed(1)}%<\/div><\/div>\n   <div class=\"am\"><div class=\"l\">RevPAR<\/div><div class=\"v\">${euro2(b.revpar_sell)}<\/div><div class=\"small\">2025: ${euro2(a.revpar_sell)} \u00b7 ${arrow(rpCh)} ${Math.abs(rpCh).toFixed(1)}%<\/div><\/div>\n   <div class=\"am\"><div class=\"l\">Ocupaci\u00f3n<\/div><div class=\"v\">${b.occupancy_sell.toFixed(1)}%<\/div><div class=\"small\">2025: ${a.occupancy_sell.toFixed(1)}% \u00b7 ${arrow(occCh)} ${Math.abs(occCh).toFixed(1)} pp<\/div><\/div>\n   <div class=\"am\"><div class=\"l\">LOS<\/div><div class=\"v\">${b.los.toFixed(1)} noches<\/div><div class=\"small\">2025: ${a.los.toFixed(1)} \u00b7 ${arrow(losCh)} ${Math.abs(losCh).toFixed(1)}<\/div><\/div>\n   <div class=\"am\"><div class=\"l\">Noches vendidas<\/div><div class=\"v\">${num(b.nights)}<\/div><div class=\"small\">2025: ${num(a.nights)} \u00b7 ${arrow(nCh)} ${Math.abs(nCh).toFixed(1)}%<\/div><\/div>\n   <div class=\"am\"><div class=\"l\">Noches bloqueadas<\/div><div class=\"v\">${num(b.blocked)}<\/div><div class=\"small\">2025: ${num(a.blocked)} \u00b7 ${b.blocked-a.blocked>=0?'+':''}${b.blocked-a.blocked}<\/div><\/div>\n   <div class=\"am\"><div class=\"l\">Noches comercializables<\/div><div class=\"v\">${num(b.sellable)}<\/div><div class=\"small\">2025: ${num(a.sellable)} \u00b7 ${p1(s.sellableChange)}<\/div><\/div>\n   <div class=\"am\"><div class=\"l\">2026 a fecha de hoy<\/div><div class=\"v\">${euro(by.revenue)}<\/div><div class=\"small\">2025 completo: ${euro(ay.revenue)}<\/div><\/div>\n  <\/div>\n  <div class=\"apt-note\">${context}<\/div>\n <\/div>`;\n}).join('');\n\n\nfunction histItem(scope,year,period){\n const x=H[scope][year];\n return period==='year'?x.year:x.monthly[period];\n}\nfunction histMetric(label,key,a,b,formatter,suffix=''){\n const va=a[key]||0,vb=b[key]||0;\n const ch=va?((vb\/va)-1)*100:0;\n return `<div class=\"hk\"><div class=\"l\">${label}<\/div><div class=\"pair\">${formatter(va)} \u2192 ${formatter(vb)}<\/div><div class=\"chg ${ch>=0?'up':'dn'}\">${ch>=0?'\u25b2':'\u25bc'} ${Math.abs(ch).toFixed(1)}${suffix}<\/div><\/div>`;\n}\nfunction renderHistory(){\n const scope=document.getElementById('histScope').value;\n const ya=document.getElementById('histYearA').value;\n const yb=document.getElementById('histYearB').value;\n const period=document.getElementById('histPeriod').value;\n const a=histItem(scope,ya,period), b=histItem(scope,yb,period);\n document.getElementById('historyKpis').innerHTML=\n  histMetric('Revenue','revenue',a,b,euro,'%')+\n  histMetric('Noches','nights',a,b,n=>num(Math.round(n)),'%')+\n  histMetric('ADR','adr',a,b,euro2,'%')+\n  histMetric('RevPAR','revpar_cal',a,b,euro2,'%')+\n  histMetric('Ocupaci\u00f3n','occupancy_cal',a,b,n=>n.toFixed(1)+'%','%')+\n  histMetric('LOS','los',a,b,n=>n.toFixed(1)+' noches','%');\n}\n['histScope','histYearA','histYearB','histPeriod'].forEach(id=>document.getElementById(id).addEventListener('change',renderHistory));\nrenderHistory();\n\n\nfunction buildHistSummary(){\n const props=['Tasarte','Lengua de Lava','Casita Feliz'];\n document.getElementById('histSummaryGrid').innerHTML=props.map(p=>{\n   const y24=H[p]['2024'].year,y25=H[p]['2025'].year,y26=H[p]['2026'].year;\n   return `<div class=\"hist-summary-card\">\n     <div class=\"hist-summary-name\">${p}<\/div>\n     <table class=\"hist-mini-table\">\n       <thead><tr><th>A\u00f1o<\/th><th>ADR<\/th><th class=\"rp-head\">RevPAR<\/th><\/tr><\/thead>\n       <tbody>\n         <tr><td>2024<\/td><td>${euro2(y24.adr)}<\/td><td class=\"revpar\">${euro2(y24.revpar_cal)}<\/td><\/tr>\n         <tr><td>2025<\/td><td>${euro2(y25.adr)}<\/td><td class=\"revpar\">${euro2(y25.revpar_cal)}<\/td><\/tr>\n         <tr><td>2026*<\/td><td>${euro2(y26.adr)}<\/td><td class=\"revpar\">${euro2(y26.revpar_cal)}<\/td><\/tr>\n       <\/tbody>\n     <\/table>\n   <\/div>`;\n }).join('');\n}\n\nfunction buildHistMonthlyTable(){\n const p=document.getElementById('histPropertySelect').value;\n const years=['2024','2025','2026'];\n let rows='';\n D.months.forEach((monthName,i)=>{\n   const m=String(i+1);\n   const x24=H[p]['2024'].monthly[m],x25=H[p]['2025'].monthly[m],x26=H[p]['2026'].monthly[m];\n   rows+=`<tr>\n     <td><strong>${monthName}<\/strong><\/td>\n     <td>${x24.adr?euro2(x24.adr):'\u2014'}<\/td>\n     <td>${x25.adr?euro2(x25.adr):'\u2014'}<\/td>\n     <td>${x26.adr?euro2(x26.adr):'\u2014'}<\/td>\n     <td class=\"rp\">${x24.revpar_cal?euro2(x24.revpar_cal):'\u2014'}<\/td>\n     <td class=\"rp\">${x25.revpar_cal?euro2(x25.revpar_cal):'\u2014'}<\/td>\n     <td class=\"rp\">${x26.revpar_cal?euro2(x26.revpar_cal):'\u2014'}<\/td>\n   <\/tr>`;\n });\n document.getElementById('histMonthlyTable').innerHTML=`\n   <thead>\n     <tr>\n       <th>Mes<\/th>\n       <th>ADR 2024<\/th><th>ADR 2025<\/th><th>ADR 2026*<\/th>\n       <th class=\"rp-head\">RevPAR 2024<\/th><th class=\"rp-head\">RevPAR 2025<\/th><th class=\"rp-head\">RevPAR 2026*<\/th>\n     <\/tr>\n   <\/thead>\n   <tbody>${rows}<\/tbody>`;\n}\nbuildHistSummary();\nbuildHistMonthlyTable();\ndocument.getElementById('histPropertySelect').addEventListener('change',buildHistMonthlyTable);\n\nChart.defaults.font.family='Arial, Helvetica, sans-serif';\nChart.defaults.color='#6D6962';\nnew Chart(document.getElementById('mainChart'),{\n type:'bar',\n data:{labels:['ADR','RevPAR'],datasets:[\n  {label:'2025',data:[A.adr,A.revpar],backgroundColor:'#D1B38C',borderRadius:4},\n  {label:'2026 a fecha de hoy',data:[B.adr,B.revpar],backgroundColor:'#4ABCC5',borderRadius:4}\n ]},\n options:{maintainAspectRatio:false,plugins:{legend:{position:'bottom',labels:{boxWidth:10,padding:15}},tooltip:{callbacks:{label:x=>x.dataset.label+': '+euro2(x.raw)}}},scales:{y:{grid:{color:'#EFEBE5'},ticks:{callback:v=>v+' \u20ac'}},x:{grid:{display:false}}}}\n});\nnew Chart(document.getElementById('blockChart'),{\n type:'bar',\n data:{labels:D.months,datasets:[\n  {label:'Bloqueos 2025',data:D.months.map((_,i)=>D.monthly[String(i+1)]['2025'].blocked\/D.monthly[String(i+1)]['2025'].units*100),backgroundColor:'#D1B38C',borderRadius:3},\n  {label:'Bloqueos 2026',data:D.months.map((_,i)=>D.monthly[String(i+1)]['2026'].blocked\/D.monthly[String(i+1)]['2026'].units*100),backgroundColor:'#4ABCC5',borderRadius:3}\n ]},\n options:{maintainAspectRatio:false,plugins:{legend:{position:'bottom',labels:{boxWidth:10,padding:15}},tooltip:{callbacks:{label:x=>x.dataset.label+': '+x.raw.toFixed(1)+'%'}}},scales:{y:{grid:{color:'#EFEBE5'},ticks:{callback:v=>v+'%'},suggestedMax:50},x:{grid:{display:false}}}}\n});\n<\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Villas Rivero \u00b7 Portfolio Dashboard Villas RiveroPortfolio Dashboard Tasarte \u00b7 Lengua de Lava \u00b7 Casita Feliz 3 alojamientos2025 cerrado \u00b7 2026 a fecha de hoyActualizado \u00b7 15\/09\/2026 Situaci\u00f3n general Mes a mes Alojamientos Hist\u00f3rico 2024\u20132026 Visi\u00f3n global Situaci\u00f3n general del portfolio 2025 es un a\u00f1o cerrado. 2026 refleja la producci\u00f3n ya asegurada a 15 de [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-1678","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Dashboard Casas Tasarte - Villas Rivero<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/villasrivero.com\/en\/dashboard-tasarte\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dashboard Casas Tasarte - Villas Rivero\" \/>\n<meta property=\"og:description\" content=\"Villas Rivero \u00b7 Portfolio Dashboard Villas RiveroPortfolio Dashboard Tasarte \u00b7 Lengua de Lava \u00b7 Casita Feliz 3 alojamientos2025 cerrado \u00b7 2026 a fecha de hoyActualizado \u00b7 15\/09\/2026 Situaci\u00f3n general Mes a mes Alojamientos Hist\u00f3rico 2024\u20132026 Visi\u00f3n global Situaci\u00f3n general del portfolio 2025 es un a\u00f1o cerrado. 2026 refleja la producci\u00f3n ya asegurada a 15 de [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/villasrivero.com\/en\/dashboard-tasarte\/\" \/>\n<meta property=\"og:site_name\" content=\"Villas Rivero\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-15T12:13:46+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/villasrivero.com\\\/dashboard-tasarte\\\/\",\"url\":\"https:\\\/\\\/villasrivero.com\\\/dashboard-tasarte\\\/\",\"name\":\"Dashboard Casas Tasarte - Villas Rivero\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/villasrivero.com\\\/#website\"},\"datePublished\":\"2026-09-15T12:10:54+00:00\",\"dateModified\":\"2026-09-15T12:13:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/villasrivero.com\\\/dashboard-tasarte\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/villasrivero.com\\\/dashboard-tasarte\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/villasrivero.com\\\/dashboard-tasarte\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/villasrivero.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dashboard Casas Tasarte\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/villasrivero.com\\\/#website\",\"url\":\"https:\\\/\\\/villasrivero.com\\\/\",\"name\":\"Villas Rivero\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/villasrivero.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dashboard Casas Tasarte - Villas Rivero","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/villasrivero.com\/en\/dashboard-tasarte\/","og_locale":"en_GB","og_type":"article","og_title":"Dashboard Casas Tasarte - Villas Rivero","og_description":"Villas Rivero \u00b7 Portfolio Dashboard Villas RiveroPortfolio Dashboard Tasarte \u00b7 Lengua de Lava \u00b7 Casita Feliz 3 alojamientos2025 cerrado \u00b7 2026 a fecha de hoyActualizado \u00b7 15\/09\/2026 Situaci\u00f3n general Mes a mes Alojamientos Hist\u00f3rico 2024\u20132026 Visi\u00f3n global Situaci\u00f3n general del portfolio 2025 es un a\u00f1o cerrado. 2026 refleja la producci\u00f3n ya asegurada a 15 de [&hellip;]","og_url":"https:\/\/villasrivero.com\/en\/dashboard-tasarte\/","og_site_name":"Villas Rivero","article_modified_time":"2026-09-15T12:13:46+00:00","twitter_card":"summary_large_image","twitter_misc":{"Estimated reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/villasrivero.com\/dashboard-tasarte\/","url":"https:\/\/villasrivero.com\/dashboard-tasarte\/","name":"Dashboard Casas Tasarte - Villas Rivero","isPartOf":{"@id":"https:\/\/villasrivero.com\/#website"},"datePublished":"2026-09-15T12:10:54+00:00","dateModified":"2026-09-15T12:13:46+00:00","breadcrumb":{"@id":"https:\/\/villasrivero.com\/dashboard-tasarte\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/villasrivero.com\/dashboard-tasarte\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/villasrivero.com\/dashboard-tasarte\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/villasrivero.com\/"},{"@type":"ListItem","position":2,"name":"Dashboard Casas Tasarte"}]},{"@type":"WebSite","@id":"https:\/\/villasrivero.com\/#website","url":"https:\/\/villasrivero.com\/","name":"Villas Rivero","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/villasrivero.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"}]}},"_links":{"self":[{"href":"https:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/pages\/1678","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/comments?post=1678"}],"version-history":[{"count":5,"href":"https:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/pages\/1678\/revisions"}],"predecessor-version":[{"id":1683,"href":"https:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/pages\/1678\/revisions\/1683"}],"wp:attachment":[{"href":"https:\/\/villasrivero.com\/en\/wp-json\/wp\/v2\/media?parent=1678"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}