{"id":10595,"date":"2026-05-17T09:14:40","date_gmt":"2026-05-17T07:14:40","guid":{"rendered":"https:\/\/stockholmnature.com\/?page_id=10595"},"modified":"2026-05-19T07:22:32","modified_gmt":"2026-05-19T05:22:32","slug":"resena","status":"publish","type":"page","link":"https:\/\/stockholmnature.com\/es\/review\/","title":{"rendered":"Revisar"},"content":{"rendered":"<section class=\"bde-section-10595-100 bde-section\">\n  \n  \n\t\n\n\n\n<div class=\"section-container\"><div class=\"bde-code-block-10595-101 bde-code-block\">\n\n  <div class=\"sn-review-interface\">\n  <div class=\"sn-review-card\">\n    <p class=\"sn-review-eyebrow\">Stockholm Nature<\/p>\n\n    <h2>How was your experience?<\/h2>\n\n    <p class=\"sn-review-text\">\n      Tap a star to rate your tour. Your feedback helps us improve our outdoor experiences.\n    <\/p>\n\n    <div class=\"sn-stars\" id=\"snStars\" aria-label=\"Choose your rating\">\n      <button type=\"button\" data-rating=\"1\" aria-label=\"1 star\">\u2605<\/button>\n      <button type=\"button\" data-rating=\"2\" aria-label=\"2 stars\">\u2605<\/button>\n      <button type=\"button\" data-rating=\"3\" aria-label=\"3 stars\">\u2605<\/button>\n      <button type=\"button\" data-rating=\"4\" aria-label=\"4 stars\">\u2605<\/button>\n      <button type=\"button\" data-rating=\"5\" aria-label=\"5 stars\">\u2605<\/button>\n    <\/div>\n\n    <div class=\"sn-rating-label\" id=\"snRatingLabel\">\n      Select your rating\n    <\/div>\n\n    <button type=\"button\" class=\"sn-continue-button\" id=\"snContinueButton\" disabled>\n      Continue\n    <\/button>\n  <\/div>\n<\/div>\n\n<style>\n  .sn-review-interface {\n    width: 100%;\n    padding: 32px 16px;\n    display: flex;\n    justify-content: center;\n  }\n\n  .sn-review-card {\n    width: 100%;\n    max-width: 620px;\n    text-align: center;\n    background: #ffffff;\n    border-radius: 24px;\n    padding: 36px 24px;\n    box-shadow: 0 14px 40px rgba(0, 0, 0, 0.08);\n  }\n\n  .sn-review-eyebrow {\n    margin: 0 0 10px;\n    font-size: 14px;\n    font-weight: 700;\n    letter-spacing: 0.04em;\n    text-transform: uppercase;\n    color: #2f6b4f;\n  }\n\n  .sn-review-card h2 {\n    margin: 0 0 12px;\n    font-size: 32px;\n    line-height: 1.2;\n    color: #1d1d1f;\n  }\n\n  .sn-review-text {\n    max-width: 460px;\n    margin: 0 auto 26px;\n    font-size: 17px;\n    line-height: 1.55;\n    color: #555;\n  }\n\n  .sn-stars {\n    display: flex;\n    justify-content: center;\n    gap: 8px;\n    margin: 0 0 18px;\n  }\n\n  .sn-stars button {\n    appearance: none;\n    border: 0;\n    background: transparent;\n    color: #d7d7d7;\n    font-size: 56px;\n    line-height: 1;\n    padding: 4px;\n    cursor: pointer;\n    transition: color 0.15s ease, transform 0.15s ease;\n  }\n\n  .sn-stars button.is-active {\n    color: #f5b301;\n  }\n\n  .sn-stars button:hover,\n  .sn-stars button:focus {\n    transform: scale(1.08);\n    outline: none;\n  }\n\n  .sn-rating-label {\n    min-height: 28px;\n    margin-bottom: 22px;\n    font-size: 18px;\n    font-weight: 700;\n    color: #1d1d1f;\n  }\n\n  .sn-continue-button {\n    border: 0;\n    border-radius: 999px;\n    padding: 15px 34px;\n    font-size: 16px;\n    font-weight: 700;\n    background: #2f6b4f;\n    color: #ffffff;\n    cursor: pointer;\n    transition: opacity 0.15s ease, transform 0.15s ease;\n  }\n\n  .sn-continue-button:disabled {\n    opacity: 0.45;\n    cursor: not-allowed;\n  }\n\n  .sn-continue-button:not(:disabled):hover {\n    transform: translateY(-1px);\n  }\n\n  @media (max-width: 480px) {\n    .sn-review-card {\n      padding: 30px 18px;\n      border-radius: 20px;\n    }\n\n    .sn-review-card h2 {\n      font-size: 26px;\n    }\n\n    .sn-review-text {\n      font-size: 16px;\n    }\n\n    .sn-stars {\n      gap: 4px;\n    }\n\n    .sn-stars button {\n      font-size: 44px;\n      padding: 3px;\n    }\n  }\n<\/style>\n\n<script>\n  document.addEventListener(\"DOMContentLoaded\", function () {\n    const starsWrapper = document.getElementById(\"snStars\");\n    const stars = starsWrapper.querySelectorAll(\"button\");\n    const ratingLabel = document.getElementById(\"snRatingLabel\");\n    const continueButton = document.getElementById(\"snContinueButton\");\n\n    let selectedRating = 0;\n\n    const labels = {\n      1: \"Very poor\",\n      2: \"Poor\",\n      3: \"Okay\",\n      4: \"Great\",\n      5: \"Excellent\"\n    };\n\n    function updateStars(rating) {\n      stars.forEach(function (star) {\n        const starRating = Number(star.dataset.rating);\n        star.classList.toggle(\"is-active\", starRating <= rating);\n      });\n    }\n\n    function selectRating(rating) {\n      selectedRating = rating;\n      updateStars(selectedRating);\n      ratingLabel.textContent = labels[selectedRating];\n      continueButton.disabled = false;\n    }\n\n    stars.forEach(function (star) {\n      const rating = Number(star.dataset.rating);\n\n      star.addEventListener(\"mouseenter\", function () {\n        updateStars(rating);\n        ratingLabel.textContent = labels[rating];\n      });\n\n      star.addEventListener(\"click\", function () {\n        selectRating(rating);\n      });\n\n      star.addEventListener(\"focus\", function () {\n        updateStars(rating);\n        ratingLabel.textContent = labels[rating];\n      });\n    });\n\n    starsWrapper.addEventListener(\"mouseleave\", function () {\n      updateStars(selectedRating);\n      ratingLabel.textContent = selectedRating ? labels[selectedRating] : \"Select your rating\";\n    });\n\n    continueButton.addEventListener(\"click\", function () {\n      if (!selectedRating) return;\n\n      const params = new URLSearchParams(window.location.search);\n      const token = params.get(\"token\") || \"\";\n\n      if (!token) {\n        alert(\"Review link is missing. Please open the link from your email again.\");\n        return;\n      }\n\n      continueButton.disabled = true;\n      continueButton.textContent = \"Saving...\";\n\n      fetch(\"\/wp-json\/sn-reviews\/v1\/save-rating\", {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application\/json\"\n        },\n        body: JSON.stringify({\n          token: token,\n          rating: selectedRating\n        })\n      })\n        .then(function (response) {\n          if (!response.ok) {\n            throw new Error(\"Server error\");\n          }\n\n          return response.json();\n        })\n        .then(function (data) {\n          if (!data.success) {\n            throw new Error(data.message || \"Could not save rating.\");\n          }\n\n          const targetUrl = data.redirect\n            + \"?rating=\" + encodeURIComponent(selectedRating)\n            + \"&token=\" + encodeURIComponent(token);\n\n          window.location.href = targetUrl;\n        })\n        .catch(function () {\n          continueButton.disabled = false;\n          continueButton.textContent = \"Continue\";\n          alert(\"Sorry, your rating could not be saved. Please try again.\");\n        });\n    });\n  });\n<\/script>\n\n\n<\/div><\/div>\n<\/section><section class=\"bde-section-10595-103 bde-section\">\n  \n  \n\t\n\n\n\n<div class=\"section-container\"><div class=\"bde-div-10595-104 bde-div\">\n  \n  \n\t\n\n\n\n<h2 class=\"bde-heading-10595-105 bde-heading\">\nGuest Reviews\n<\/h2><div class=\"bde-code-block-10595-107 bde-code-block\">\n\n  <script defer async src='https:\/\/cdn.trustindex.io\/loader.js?0c1cc9f72b8a233bcf56dbf5b1e'><\/script>\n\n\n<\/div>\n<\/div><\/div>\n<\/section>","protected":false},"excerpt":{"rendered":"<p>Naturaleza de Estocolmo \u00bfC\u00f3mo fue tu experiencia? Toca una estrella para calificar tu tour. Tus comentarios nos ayudan a mejorar nuestras experiencias al aire libre. \u2605 \u2605 \u2605 \u2605 \u2605 Selecciona tu puntuaci\u00f3n Continuar Rese\u00f1as de hu\u00e9spedes<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"ai_generated_summary":"","_breakdance_hide_in_design_set":false,"_breakdance_tags":"","footnotes":""},"class_list":["post-10595","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/stockholmnature.com\/es\/wp-json\/wp\/v2\/pages\/10595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stockholmnature.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/stockholmnature.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/stockholmnature.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stockholmnature.com\/es\/wp-json\/wp\/v2\/comments?post=10595"}],"version-history":[{"count":14,"href":"https:\/\/stockholmnature.com\/es\/wp-json\/wp\/v2\/pages\/10595\/revisions"}],"predecessor-version":[{"id":10629,"href":"https:\/\/stockholmnature.com\/es\/wp-json\/wp\/v2\/pages\/10595\/revisions\/10629"}],"wp:attachment":[{"href":"https:\/\/stockholmnature.com\/es\/wp-json\/wp\/v2\/media?parent=10595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}