commit 6e0a2ba30e5b09335e33cc2fa140a366ad4a1faf Author: Flatlogic Bot Date: Wed May 20 10:02:04 2026 +0000 Initial import diff --git a/app.js b/app.js new file mode 100644 index 0000000..737e4a0 --- /dev/null +++ b/app.js @@ -0,0 +1,144 @@ +const data = window.REPORT_DATA; +const cards = document.querySelector("#cards"); +const rows = document.querySelector("#summaryRows"); +const rate = document.querySelector("#rate"); +const criteria = document.querySelector("#criteria"); +const notes = document.querySelector("#notes"); +const lightbox = document.querySelector("#lightbox"); +const lightboxImage = document.querySelector("#lightboxImage"); +const lightboxSource = document.querySelector("#lightboxSource"); + +rate.textContent = `${data.generated}. ${data.rate}`; +criteria.textContent = data.criteria; +notes.innerHTML = data.notes.map((note) => `
  • ${note}
  • `).join(""); + +const labelByKind = { + hotel: "отель", + review: "отзыв", + "traveler-video": "видео" +}; + +function formatRub(value) { + return new Intl.NumberFormat("ru-RU").format(value); +} + +function formatByn(value) { + return new Intl.NumberFormat("ru-RU").format(value); +} + +function renderSummary(filter = "all") { + const visible = data.hotels.filter((hotel) => filter === "all" || hotel.segment === filter); + rows.innerHTML = visible.map((hotel) => ` + + ${hotel.name}
    ${hotel.rank} + ${hotel.dates} + ${hotel.nights} + ${formatByn(hotel.price_byn)} BYN
    ${formatRub(hotel.price_rub)} RUB + ${hotel.transfer} + ${hotel.verdict} + + `).join(""); +} + +function renderCards(filter = "all") { + const visible = data.hotels.filter((hotel) => filter === "all" || hotel.segment === filter); + cards.innerHTML = visible.map((hotel) => ` +
    + + +
    +
    +
    +

    ${hotel.name} ${hotel.stars}

    +

    ${hotel.rank}

    +
    +
    + ${formatByn(hotel.price_byn)} BYN + ${formatRub(hotel.price_rub)} RUB. ${hotel.alt_price} +
    +
    + +
    +
    Даты${hotel.dates}
    +
    Ночи${hotel.nights}
    +
    Питание${hotel.meal}
    +
    Трансфер${hotel.transfer}
    +
    Рейс${hotel.flight}
    +
    Пляж${hotel.line}, ${hotel.beach}
    +
    Рейтинг${hotel.rating}
    +
    Сегмент${hotel.segment === "near-9" ? "рядом с 9" : hotel.segment + " тыс."}
    +
    + +

    ${hotel.verdict}

    + +
    +
    +

    Плюсы

    +
      ${hotel.pros.map((item) => `
    • ${item}
    • `).join("")}
    +
    +
    +

    Риски

    +
      ${hotel.cons.map((item) => `
    • ${item}
    • `).join("")}
    +
    +
    + +
    +

    По фото и отзывам

    +

    ${hotel.review}

    +
    + + +
    +
    + `).join(""); +} + +function setFilter(filter) { + document.querySelectorAll(".filter").forEach((button) => { + button.classList.toggle("active", button.dataset.filter === filter); + }); + renderSummary(filter); + renderCards(filter); +} + +document.querySelectorAll(".filter").forEach((button) => { + button.addEventListener("click", () => setFilter(button.dataset.filter)); +}); + +cards.addEventListener("click", (event) => { + const shot = event.target.closest(".shot"); + if (!shot) return; + lightboxImage.src = shot.dataset.full; + lightboxSource.href = shot.dataset.source; + lightbox.classList.add("open"); + lightbox.setAttribute("aria-hidden", "false"); + document.body.classList.add("lightbox-open"); +}); + +document.querySelector("#closeLightbox").addEventListener("click", closeLightbox); +lightbox.addEventListener("click", (event) => { + if (event.target === lightbox) closeLightbox(); +}); +window.addEventListener("keydown", (event) => { + if (event.key === "Escape") closeLightbox(); +}); + +function closeLightbox() { + lightbox.classList.remove("open"); + lightbox.setAttribute("aria-hidden", "true"); + document.body.classList.remove("lightbox-open"); + lightboxImage.src = ""; +} + +setFilter("all"); diff --git a/assets/first-class-01-hotel.jpg b/assets/first-class-01-hotel.jpg new file mode 100644 index 0000000..a122bfe Binary files /dev/null and b/assets/first-class-01-hotel.jpg differ diff --git a/assets/first-class-02-hotel.jpg b/assets/first-class-02-hotel.jpg new file mode 100644 index 0000000..a122bfe Binary files /dev/null and b/assets/first-class-02-hotel.jpg differ diff --git a/assets/first-class-03-review.jpg b/assets/first-class-03-review.jpg new file mode 100644 index 0000000..98be5aa Binary files /dev/null and b/assets/first-class-03-review.jpg differ diff --git a/assets/first-class-04-review.jpg b/assets/first-class-04-review.jpg new file mode 100644 index 0000000..f750e2b Binary files /dev/null and b/assets/first-class-04-review.jpg differ diff --git a/assets/first-class-05-review.jpg b/assets/first-class-05-review.jpg new file mode 100644 index 0000000..99afeb8 Binary files /dev/null and b/assets/first-class-05-review.jpg differ diff --git a/assets/first-class-06-review.jpg b/assets/first-class-06-review.jpg new file mode 100644 index 0000000..1ee2c4d Binary files /dev/null and b/assets/first-class-06-review.jpg differ diff --git a/assets/first-class-07-review.jpg b/assets/first-class-07-review.jpg new file mode 100644 index 0000000..b59b18a Binary files /dev/null and b/assets/first-class-07-review.jpg differ diff --git a/assets/first-class-08-review.jpg b/assets/first-class-08-review.jpg new file mode 100644 index 0000000..38974c2 Binary files /dev/null and b/assets/first-class-08-review.jpg differ diff --git a/assets/first-class-09-review.jpg b/assets/first-class-09-review.jpg new file mode 100644 index 0000000..12dc5dd Binary files /dev/null and b/assets/first-class-09-review.jpg differ diff --git a/assets/first-class-10-review.jpg b/assets/first-class-10-review.jpg new file mode 100644 index 0000000..eb83ca3 Binary files /dev/null and b/assets/first-class-10-review.jpg differ diff --git a/assets/first-class-11-traveler-video.jpg b/assets/first-class-11-traveler-video.jpg new file mode 100644 index 0000000..029195d Binary files /dev/null and b/assets/first-class-11-traveler-video.jpg differ diff --git a/assets/first-class-12-traveler-video.jpg b/assets/first-class-12-traveler-video.jpg new file mode 100644 index 0000000..1420e8f Binary files /dev/null and b/assets/first-class-12-traveler-video.jpg differ diff --git a/assets/galaxy-01-hotel.jpg b/assets/galaxy-01-hotel.jpg new file mode 100644 index 0000000..83e542d Binary files /dev/null and b/assets/galaxy-01-hotel.jpg differ diff --git a/assets/galaxy-02-hotel.jpg b/assets/galaxy-02-hotel.jpg new file mode 100644 index 0000000..83e542d Binary files /dev/null and b/assets/galaxy-02-hotel.jpg differ diff --git a/assets/galaxy-03-review.jpg b/assets/galaxy-03-review.jpg new file mode 100644 index 0000000..831e32f Binary files /dev/null and b/assets/galaxy-03-review.jpg differ diff --git a/assets/galaxy-04-review.jpg b/assets/galaxy-04-review.jpg new file mode 100644 index 0000000..63b6969 Binary files /dev/null and b/assets/galaxy-04-review.jpg differ diff --git a/assets/galaxy-05-review.jpg b/assets/galaxy-05-review.jpg new file mode 100644 index 0000000..1c15f6a Binary files /dev/null and b/assets/galaxy-05-review.jpg differ diff --git a/assets/galaxy-06-review.jpg b/assets/galaxy-06-review.jpg new file mode 100644 index 0000000..b35ce1a Binary files /dev/null and b/assets/galaxy-06-review.jpg differ diff --git a/assets/galaxy-07-review.jpg b/assets/galaxy-07-review.jpg new file mode 100644 index 0000000..0c15de4 Binary files /dev/null and b/assets/galaxy-07-review.jpg differ diff --git a/assets/galaxy-08-review.jpg b/assets/galaxy-08-review.jpg new file mode 100644 index 0000000..8b53b79 Binary files /dev/null and b/assets/galaxy-08-review.jpg differ diff --git a/assets/galaxy-09-review.jpg b/assets/galaxy-09-review.jpg new file mode 100644 index 0000000..64768cd Binary files /dev/null and b/assets/galaxy-09-review.jpg differ diff --git a/assets/galaxy-10-review.jpg b/assets/galaxy-10-review.jpg new file mode 100644 index 0000000..a84b4db Binary files /dev/null and b/assets/galaxy-10-review.jpg differ diff --git a/assets/hedef-01-hotel.jpg b/assets/hedef-01-hotel.jpg new file mode 100644 index 0000000..ebb3d63 Binary files /dev/null and b/assets/hedef-01-hotel.jpg differ diff --git a/assets/hedef-02-hotel.jpg b/assets/hedef-02-hotel.jpg new file mode 100644 index 0000000..ebb3d63 Binary files /dev/null and b/assets/hedef-02-hotel.jpg differ diff --git a/assets/hedef-03-review.jpg b/assets/hedef-03-review.jpg new file mode 100644 index 0000000..158f666 Binary files /dev/null and b/assets/hedef-03-review.jpg differ diff --git a/assets/hedef-04-review.jpg b/assets/hedef-04-review.jpg new file mode 100644 index 0000000..3b9a5df Binary files /dev/null and b/assets/hedef-04-review.jpg differ diff --git a/assets/hedef-05-review.jpg b/assets/hedef-05-review.jpg new file mode 100644 index 0000000..d3cca0f Binary files /dev/null and b/assets/hedef-05-review.jpg differ diff --git a/assets/hedef-06-review.jpg b/assets/hedef-06-review.jpg new file mode 100644 index 0000000..5b65230 Binary files /dev/null and b/assets/hedef-06-review.jpg differ diff --git a/assets/hedef-07-review.jpg b/assets/hedef-07-review.jpg new file mode 100644 index 0000000..7a08a12 Binary files /dev/null and b/assets/hedef-07-review.jpg differ diff --git a/assets/hedef-08-review.jpg b/assets/hedef-08-review.jpg new file mode 100644 index 0000000..0229341 Binary files /dev/null and b/assets/hedef-08-review.jpg differ diff --git a/assets/hedef-09-review.jpg b/assets/hedef-09-review.jpg new file mode 100644 index 0000000..2820bf5 Binary files /dev/null and b/assets/hedef-09-review.jpg differ diff --git a/assets/hedef-10-review.jpg b/assets/hedef-10-review.jpg new file mode 100644 index 0000000..9ae67ec Binary files /dev/null and b/assets/hedef-10-review.jpg differ diff --git a/assets/hedef-11-traveler-video.jpg b/assets/hedef-11-traveler-video.jpg new file mode 100644 index 0000000..d9104b6 Binary files /dev/null and b/assets/hedef-11-traveler-video.jpg differ diff --git a/assets/hedef-12-traveler-video.jpg b/assets/hedef-12-traveler-video.jpg new file mode 100644 index 0000000..1c1cdeb Binary files /dev/null and b/assets/hedef-12-traveler-video.jpg differ diff --git a/assets/insula-01-hotel.jpg b/assets/insula-01-hotel.jpg new file mode 100644 index 0000000..e204919 Binary files /dev/null and b/assets/insula-01-hotel.jpg differ diff --git a/assets/insula-02-hotel.jpg b/assets/insula-02-hotel.jpg new file mode 100644 index 0000000..e204919 Binary files /dev/null and b/assets/insula-02-hotel.jpg differ diff --git a/assets/insula-03-review.jpg b/assets/insula-03-review.jpg new file mode 100644 index 0000000..891319f Binary files /dev/null and b/assets/insula-03-review.jpg differ diff --git a/assets/insula-04-review.jpg b/assets/insula-04-review.jpg new file mode 100644 index 0000000..a808e73 Binary files /dev/null and b/assets/insula-04-review.jpg differ diff --git a/assets/insula-05-review.jpg b/assets/insula-05-review.jpg new file mode 100644 index 0000000..ac49740 Binary files /dev/null and b/assets/insula-05-review.jpg differ diff --git a/assets/insula-06-review.jpg b/assets/insula-06-review.jpg new file mode 100644 index 0000000..ac79f88 Binary files /dev/null and b/assets/insula-06-review.jpg differ diff --git a/assets/insula-07-review.jpg b/assets/insula-07-review.jpg new file mode 100644 index 0000000..0207029 Binary files /dev/null and b/assets/insula-07-review.jpg differ diff --git a/assets/insula-08-review.jpg b/assets/insula-08-review.jpg new file mode 100644 index 0000000..8516864 Binary files /dev/null and b/assets/insula-08-review.jpg differ diff --git a/assets/insula-09-review.jpg b/assets/insula-09-review.jpg new file mode 100644 index 0000000..f4a68fa Binary files /dev/null and b/assets/insula-09-review.jpg differ diff --git a/assets/insula-10-review.jpg b/assets/insula-10-review.jpg new file mode 100644 index 0000000..25b327f Binary files /dev/null and b/assets/insula-10-review.jpg differ diff --git a/assets/insula-11-traveler-video.jpg b/assets/insula-11-traveler-video.jpg new file mode 100644 index 0000000..c982918 Binary files /dev/null and b/assets/insula-11-traveler-video.jpg differ diff --git a/assets/insula-12-traveler-video.jpg b/assets/insula-12-traveler-video.jpg new file mode 100644 index 0000000..30a1996 Binary files /dev/null and b/assets/insula-12-traveler-video.jpg differ diff --git a/assets/kirbiyik-01-hotel.jpg b/assets/kirbiyik-01-hotel.jpg new file mode 100644 index 0000000..46c1ef4 Binary files /dev/null and b/assets/kirbiyik-01-hotel.jpg differ diff --git a/assets/kirbiyik-02-hotel.jpg b/assets/kirbiyik-02-hotel.jpg new file mode 100644 index 0000000..46c1ef4 Binary files /dev/null and b/assets/kirbiyik-02-hotel.jpg differ diff --git a/assets/kirbiyik-03-review.jpg b/assets/kirbiyik-03-review.jpg new file mode 100644 index 0000000..50d4974 Binary files /dev/null and b/assets/kirbiyik-03-review.jpg differ diff --git a/assets/kirbiyik-04-review.jpg b/assets/kirbiyik-04-review.jpg new file mode 100644 index 0000000..1decf69 Binary files /dev/null and b/assets/kirbiyik-04-review.jpg differ diff --git a/assets/kirbiyik-05-review.jpg b/assets/kirbiyik-05-review.jpg new file mode 100644 index 0000000..63d4c3e Binary files /dev/null and b/assets/kirbiyik-05-review.jpg differ diff --git a/assets/kirbiyik-06-review.jpg b/assets/kirbiyik-06-review.jpg new file mode 100644 index 0000000..c2b7428 Binary files /dev/null and b/assets/kirbiyik-06-review.jpg differ diff --git a/assets/kirbiyik-07-review.jpg b/assets/kirbiyik-07-review.jpg new file mode 100644 index 0000000..7bdaa3c Binary files /dev/null and b/assets/kirbiyik-07-review.jpg differ diff --git a/assets/kirbiyik-08-review.jpg b/assets/kirbiyik-08-review.jpg new file mode 100644 index 0000000..c23d677 Binary files /dev/null and b/assets/kirbiyik-08-review.jpg differ diff --git a/assets/kirbiyik-09-review.jpg b/assets/kirbiyik-09-review.jpg new file mode 100644 index 0000000..a2fc7db Binary files /dev/null and b/assets/kirbiyik-09-review.jpg differ diff --git a/assets/kirbiyik-10-review.jpg b/assets/kirbiyik-10-review.jpg new file mode 100644 index 0000000..62cc011 Binary files /dev/null and b/assets/kirbiyik-10-review.jpg differ diff --git a/assets/kirbiyik-11-traveler-video.jpg b/assets/kirbiyik-11-traveler-video.jpg new file mode 100644 index 0000000..c9b435d Binary files /dev/null and b/assets/kirbiyik-11-traveler-video.jpg differ diff --git a/assets/kirbiyik-12-traveler-video.jpg b/assets/kirbiyik-12-traveler-video.jpg new file mode 100644 index 0000000..96814a0 Binary files /dev/null and b/assets/kirbiyik-12-traveler-video.jpg differ diff --git a/assets/mc-beach-01-hotel.jpg b/assets/mc-beach-01-hotel.jpg new file mode 100644 index 0000000..a99c717 Binary files /dev/null and b/assets/mc-beach-01-hotel.jpg differ diff --git a/assets/mc-beach-02-hotel.jpg b/assets/mc-beach-02-hotel.jpg new file mode 100644 index 0000000..a99c717 Binary files /dev/null and b/assets/mc-beach-02-hotel.jpg differ diff --git a/assets/mc-beach-03-review.jpg b/assets/mc-beach-03-review.jpg new file mode 100644 index 0000000..ccc0d1f Binary files /dev/null and b/assets/mc-beach-03-review.jpg differ diff --git a/assets/mc-beach-04-review.jpg b/assets/mc-beach-04-review.jpg new file mode 100644 index 0000000..9076661 Binary files /dev/null and b/assets/mc-beach-04-review.jpg differ diff --git a/assets/mc-beach-05-review.jpg b/assets/mc-beach-05-review.jpg new file mode 100644 index 0000000..8a53336 Binary files /dev/null and b/assets/mc-beach-05-review.jpg differ diff --git a/assets/mc-beach-06-review.jpg b/assets/mc-beach-06-review.jpg new file mode 100644 index 0000000..985bce1 Binary files /dev/null and b/assets/mc-beach-06-review.jpg differ diff --git a/assets/mc-beach-07-review.jpg b/assets/mc-beach-07-review.jpg new file mode 100644 index 0000000..07844ce Binary files /dev/null and b/assets/mc-beach-07-review.jpg differ diff --git a/assets/mc-beach-08-review.jpg b/assets/mc-beach-08-review.jpg new file mode 100644 index 0000000..0def98f Binary files /dev/null and b/assets/mc-beach-08-review.jpg differ diff --git a/assets/mc-beach-09-review.jpg b/assets/mc-beach-09-review.jpg new file mode 100644 index 0000000..65686d1 Binary files /dev/null and b/assets/mc-beach-09-review.jpg differ diff --git a/assets/mc-beach-10-review.jpg b/assets/mc-beach-10-review.jpg new file mode 100644 index 0000000..f3a71b3 Binary files /dev/null and b/assets/mc-beach-10-review.jpg differ diff --git a/assets/mc-beach-11-traveler-video.jpg b/assets/mc-beach-11-traveler-video.jpg new file mode 100644 index 0000000..f49ddc0 Binary files /dev/null and b/assets/mc-beach-11-traveler-video.jpg differ diff --git a/assets/mc-beach-12-traveler-video.jpg b/assets/mc-beach-12-traveler-video.jpg new file mode 100644 index 0000000..54a0893 Binary files /dev/null and b/assets/mc-beach-12-traveler-video.jpg differ diff --git a/assets/miarosa-01-hotel.jpg b/assets/miarosa-01-hotel.jpg new file mode 100644 index 0000000..d5981dd Binary files /dev/null and b/assets/miarosa-01-hotel.jpg differ diff --git a/assets/miarosa-02-hotel.jpg b/assets/miarosa-02-hotel.jpg new file mode 100644 index 0000000..d5981dd Binary files /dev/null and b/assets/miarosa-02-hotel.jpg differ diff --git a/assets/miarosa-03-review.jpg b/assets/miarosa-03-review.jpg new file mode 100644 index 0000000..6f875ee Binary files /dev/null and b/assets/miarosa-03-review.jpg differ diff --git a/assets/miarosa-04-review.jpg b/assets/miarosa-04-review.jpg new file mode 100644 index 0000000..0dabe07 Binary files /dev/null and b/assets/miarosa-04-review.jpg differ diff --git a/assets/miarosa-05-review.jpg b/assets/miarosa-05-review.jpg new file mode 100644 index 0000000..bd267a2 Binary files /dev/null and b/assets/miarosa-05-review.jpg differ diff --git a/assets/miarosa-06-review.jpg b/assets/miarosa-06-review.jpg new file mode 100644 index 0000000..16d0fbc Binary files /dev/null and b/assets/miarosa-06-review.jpg differ diff --git a/assets/miarosa-07-review.jpg b/assets/miarosa-07-review.jpg new file mode 100644 index 0000000..2b04df3 Binary files /dev/null and b/assets/miarosa-07-review.jpg differ diff --git a/assets/miarosa-08-review.jpg b/assets/miarosa-08-review.jpg new file mode 100644 index 0000000..c3c2e5e Binary files /dev/null and b/assets/miarosa-08-review.jpg differ diff --git a/assets/miarosa-09-review.jpg b/assets/miarosa-09-review.jpg new file mode 100644 index 0000000..4fb9fc7 Binary files /dev/null and b/assets/miarosa-09-review.jpg differ diff --git a/assets/miarosa-10-review.jpg b/assets/miarosa-10-review.jpg new file mode 100644 index 0000000..8576d1e Binary files /dev/null and b/assets/miarosa-10-review.jpg differ diff --git a/assets/miarosa-11-traveler-video.jpg b/assets/miarosa-11-traveler-video.jpg new file mode 100644 index 0000000..ae450ae Binary files /dev/null and b/assets/miarosa-11-traveler-video.jpg differ diff --git a/assets/miarosa-12-traveler-video.jpg b/assets/miarosa-12-traveler-video.jpg new file mode 100644 index 0000000..e068295 Binary files /dev/null and b/assets/miarosa-12-traveler-video.jpg differ diff --git a/assets/nora-01-hotel.jpg b/assets/nora-01-hotel.jpg new file mode 100644 index 0000000..3e45405 Binary files /dev/null and b/assets/nora-01-hotel.jpg differ diff --git a/assets/nora-02-hotel.jpg b/assets/nora-02-hotel.jpg new file mode 100644 index 0000000..3e45405 Binary files /dev/null and b/assets/nora-02-hotel.jpg differ diff --git a/assets/nora-03-review.jpg b/assets/nora-03-review.jpg new file mode 100644 index 0000000..ed7ce8a Binary files /dev/null and b/assets/nora-03-review.jpg differ diff --git a/assets/nora-04-review.jpg b/assets/nora-04-review.jpg new file mode 100644 index 0000000..d3dcc04 Binary files /dev/null and b/assets/nora-04-review.jpg differ diff --git a/assets/nora-05-review.jpg b/assets/nora-05-review.jpg new file mode 100644 index 0000000..f61159d Binary files /dev/null and b/assets/nora-05-review.jpg differ diff --git a/assets/nora-06-review.jpg b/assets/nora-06-review.jpg new file mode 100644 index 0000000..0f5d344 Binary files /dev/null and b/assets/nora-06-review.jpg differ diff --git a/assets/nora-07-review.png b/assets/nora-07-review.png new file mode 100644 index 0000000..0697ec9 Binary files /dev/null and b/assets/nora-07-review.png differ diff --git a/assets/nora-08-review.jpg b/assets/nora-08-review.jpg new file mode 100644 index 0000000..259103b Binary files /dev/null and b/assets/nora-08-review.jpg differ diff --git a/assets/nora-09-review.jpg b/assets/nora-09-review.jpg new file mode 100644 index 0000000..0a273e6 Binary files /dev/null and b/assets/nora-09-review.jpg differ diff --git a/assets/nora-10-review.jpg b/assets/nora-10-review.jpg new file mode 100644 index 0000000..1c6f78b Binary files /dev/null and b/assets/nora-10-review.jpg differ diff --git a/assets/nora-11-traveler-video.jpg b/assets/nora-11-traveler-video.jpg new file mode 100644 index 0000000..dd78a39 Binary files /dev/null and b/assets/nora-11-traveler-video.jpg differ diff --git a/assets/nora-12-traveler-video.jpg b/assets/nora-12-traveler-video.jpg new file mode 100644 index 0000000..00d8a8a Binary files /dev/null and b/assets/nora-12-traveler-video.jpg differ diff --git a/assets/perre-delta-01-hotel.jpg b/assets/perre-delta-01-hotel.jpg new file mode 100644 index 0000000..4a165af Binary files /dev/null and b/assets/perre-delta-01-hotel.jpg differ diff --git a/assets/perre-delta-02-hotel.jpg b/assets/perre-delta-02-hotel.jpg new file mode 100644 index 0000000..4a165af Binary files /dev/null and b/assets/perre-delta-02-hotel.jpg differ diff --git a/assets/perre-delta-03-review.jpg b/assets/perre-delta-03-review.jpg new file mode 100644 index 0000000..551cce7 Binary files /dev/null and b/assets/perre-delta-03-review.jpg differ diff --git a/assets/perre-delta-04-review.jpg b/assets/perre-delta-04-review.jpg new file mode 100644 index 0000000..5239a1e Binary files /dev/null and b/assets/perre-delta-04-review.jpg differ diff --git a/assets/perre-delta-05-review.jpg b/assets/perre-delta-05-review.jpg new file mode 100644 index 0000000..dc6d1e9 Binary files /dev/null and b/assets/perre-delta-05-review.jpg differ diff --git a/assets/perre-delta-06-review.jpg b/assets/perre-delta-06-review.jpg new file mode 100644 index 0000000..9c0a97a Binary files /dev/null and b/assets/perre-delta-06-review.jpg differ diff --git a/assets/perre-delta-07-review.jpg b/assets/perre-delta-07-review.jpg new file mode 100644 index 0000000..48215f0 Binary files /dev/null and b/assets/perre-delta-07-review.jpg differ diff --git a/assets/perre-delta-08-review.jpg b/assets/perre-delta-08-review.jpg new file mode 100644 index 0000000..6a80993 Binary files /dev/null and b/assets/perre-delta-08-review.jpg differ diff --git a/assets/perre-delta-09-review.jpg b/assets/perre-delta-09-review.jpg new file mode 100644 index 0000000..52cdaaf Binary files /dev/null and b/assets/perre-delta-09-review.jpg differ diff --git a/assets/perre-delta-10-review.jpg b/assets/perre-delta-10-review.jpg new file mode 100644 index 0000000..fc66c63 Binary files /dev/null and b/assets/perre-delta-10-review.jpg differ diff --git a/assets/perre-delta-11-traveler-video.jpg b/assets/perre-delta-11-traveler-video.jpg new file mode 100644 index 0000000..1e07204 Binary files /dev/null and b/assets/perre-delta-11-traveler-video.jpg differ diff --git a/assets/perre-delta-12-traveler-video.jpg b/assets/perre-delta-12-traveler-video.jpg new file mode 100644 index 0000000..fbc0639 Binary files /dev/null and b/assets/perre-delta-12-traveler-video.jpg differ diff --git a/data.js b/data.js new file mode 100644 index 0000000..f5faec6 --- /dev/null +++ b/data.js @@ -0,0 +1,856 @@ +window.REPORT_DATA = { + "generated": "20 мая 2026", + "rate": "НБРБ: 100 RUB = 3.8411 BYN", + "criteria": "2 взрослых + 2 ребенка 11 и 13 лет, Аланья, вылет из Москвы, возвращение не позже 31 августа, AI/UAI, приоритет 9 ночей, семейность, 1 линия, пляжный бар/горки.", + "hotels": [ + { + "name": "Miarosa Incekum Beach", + "stars": "5*", + "segment": "10-11", + "rank": "Лучший кандидат на 9 ночей", + "price_byn": 10941, + "price_rub": 284853, + "alt_price": "скрин: ~10 640 BYN, но без багажа", + "dates": "21-30 августа", + "nights": 9, + "meal": "UAI", + "transfer": "нет в выдаче", + "flight": "регулярный", + "line": "1 линия", + "beach": "100 м", + "rating": "3.88 Travelata / 3.89 TopHotels", + "verdict": "Мой главный кандидат, если менеджер подтверждает трансфер, багаж и нормальный тип номера.", + "pros": [ + "9 ночей", + "1 линия", + "семейный формат", + "водные горки", + "хороший пляж Инжекум" + ], + "cons": [ + "в выдаче может быть без трансфера", + "багаж надо проверять отдельно", + "есть жалобы на уборку и очереди" + ], + "review": "Фото туристов показывают плюс отеля: зеленая территория, бассейны, горки, пляж. Минусы в отзывах: усталость номеров и нестабильный сервис.", + "trip": "https://www.tripadvisor.com/Hotel_Review-g609052-d25547438-Reviews-Miarosa_Incekum_Beach-Avsallar_Alanya_Turkish_Mediterranean_Coast.html", + "slug": "miarosa", + "images": [ + { + "file": "assets/miarosa-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/24896/1000654_740x550.jpg" + }, + { + "file": "assets/miarosa-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/24896/1000654_740x550.jpg" + }, + { + "file": "assets/miarosa-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868746_740x550.jpg" + }, + { + "file": "assets/miarosa-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868745_740x550.jpg" + }, + { + "file": "assets/miarosa-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868744_740x550.jpg" + }, + { + "file": "assets/miarosa-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868743_740x550.jpg" + }, + { + "file": "assets/miarosa-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868742_740x550.jpg" + }, + { + "file": "assets/miarosa-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868741_740x550.jpg" + }, + { + "file": "assets/miarosa-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868740_740x550.jpg" + }, + { + "file": "assets/miarosa-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868739_740x550.jpg" + }, + { + "file": "assets/miarosa-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/186/1867430.jpg?__t=1759750561" + }, + { + "file": "assets/miarosa-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video.tophotels.ru/poster/210/210712.jpg?__t=1760341860" + } + ], + "top_source": "https://tophotels.ru/hotel/al24896/media" + }, + { + "name": "Insula Resort & Spa", + "stars": "5*", + "segment": "10-11", + "rank": "Лучше по отзывам", + "price_byn": 10891, + "price_rub": 283545, + "alt_price": "7 ночей", + "dates": "24-31 августа", + "nights": 7, + "meal": "UAI", + "transfer": "групповой", + "flight": "чартер", + "line": "1 линия", + "beach": "270 м", + "rating": "4.63 Travelata / 4.41 TopHotels", + "verdict": "Очень сильный вариант по отзывам, но проигрывает Miarosa по длительности.", + "pros": [ + "сильнее по отзывам", + "групповой трансфер", + "UAI", + "1 линия" + ], + "cons": [ + "только 7 ночей", + "пляж не самый близкий по метражу", + "нужно уточнить формат номера" + ], + "review": "Фото туристов выглядят бодрее, чем у бюджетных вариантов: территория, бассейны, пляжная зона. По отзывам это один из более спокойных кандидатов.", + "trip": "https://www.tripadvisor.com/Hotel_Review-g951014-d4762524-Reviews-Insula_Resort_Spa-Konakli_Alanya_Turkish_Mediterranean_Coast.html", + "slug": "insula", + "images": [ + { + "file": "assets/insula-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/12585/2211436_740x550.jpg" + }, + { + "file": "assets/insula-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/12585/2211436_740x550.jpg" + }, + { + "file": "assets/insula-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/272/9011938_740x550.jpg" + }, + { + "file": "assets/insula-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/272/9011937_740x550.jpg" + }, + { + "file": "assets/insula-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/272/9011936_740x550.jpg" + }, + { + "file": "assets/insula-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8935625_740x550.jpg" + }, + { + "file": "assets/insula-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8935624_740x550.jpg" + }, + { + "file": "assets/insula-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8935623_740x550.jpg" + }, + { + "file": "assets/insula-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8935622_740x550.jpg" + }, + { + "file": "assets/insula-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8935621_740x550.jpg" + }, + { + "file": "assets/insula-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/230/2302869.jpg" + }, + { + "file": "assets/insula-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/230/2302804.jpg" + } + ], + "top_source": "https://tophotels.ru/en/hotel/al12585/media" + }, + { + "name": "Kirbiyik Resort", + "stars": "5*", + "segment": "10-11", + "rank": "Аккуратный, но меньше детский", + "price_byn": 10966, + "price_rub": 285494, + "alt_price": "7 ночей", + "dates": "24-31 августа", + "nights": 7, + "meal": "AI", + "transfer": "групповой", + "flight": "чартер", + "line": "1 линия", + "beach": "100 м", + "rating": "4.33 Travelata", + "verdict": "Нравится по аккуратности и отзывам, но для детей/горок может быть слабее семейных комплексов.", + "pros": [ + "1 линия", + "групповой трансфер", + "лучше визуально по фото", + "не выглядит совсем уставшим" + ], + "cons": [ + "7 ночей", + "AI, не UAI", + "детскую инфраструктуру нужно проверять" + ], + "review": "Фото туристов дают ощущение более аккуратного отеля. Это скорее спокойный вариант, а не большой семейный аква-комплекс.", + "trip": "https://www.tripadvisor.com/Hotel_Review-g1192197-d1195695-Reviews-KIrbIyIk_Resort_Hotel_Alanya-Kargicak_Alanya_Turkish_Mediterranean_Coast.html", + "slug": "kirbiyik", + "images": [ + { + "file": "assets/kirbiyik-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/7619/930925_740x550.jpg" + }, + { + "file": "assets/kirbiyik-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/7619/930925_740x550.jpg" + }, + { + "file": "assets/kirbiyik-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/274/8906025_740x550.jpg" + }, + { + "file": "assets/kirbiyik-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/274/8906024_740x550.jpg" + }, + { + "file": "assets/kirbiyik-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/274/8906022_740x550.jpg" + }, + { + "file": "assets/kirbiyik-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/274/8906021_740x550.jpg" + }, + { + "file": "assets/kirbiyik-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8873122_740x550.jpg" + }, + { + "file": "assets/kirbiyik-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8860023_740x550.jpg" + }, + { + "file": "assets/kirbiyik-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8860022_740x550.jpg" + }, + { + "file": "assets/kirbiyik-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8860021_740x550.jpg" + }, + { + "file": "assets/kirbiyik-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/199/1997873.jpg" + }, + { + "file": "assets/kirbiyik-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/157/1571651.jpg?__t=1759765071" + } + ], + "top_source": "https://tophotels.ru/hotel/al7619/media" + }, + { + "name": "The Nora Family Club", + "stars": "5*", + "segment": "8-9", + "rank": "Компромиссный бюджет", + "price_byn": 8482, + "price_rub": 220816, + "alt_price": "9 ночей: ~9 256 BYN", + "dates": "24-31 августа", + "nights": 7, + "meal": "AI", + "transfer": "групповой", + "flight": "регулярный", + "line": "1 линия", + "beach": "100 м", + "rating": "3.36 Travelata", + "verdict": "Самый дешевый вход в семейный формат, но я бы считал это вариантом “если бюджет железный”.", + "pros": [ + "1 линия", + "есть семейная концепция", + "есть пляжный бар по fact sheet", + "можно найти 9 ночей рядом с бюджетом" + ], + "cons": [ + "слабоватые отзывы", + "эконом-номер", + "нужно проверить багаж и фактический трансфер" + ], + "review": "По фото туристов видно: территория и горки есть, но уровень отделки и пляж выглядят проще, чем у сильных 5*. Отзывы часто говорят “нормально за свои деньги”, но без ощущения премиума.", + "trip": "https://www.tripadvisor.com/Hotel_Review-g609052-d27658043-Reviews-The_Nora_Hotels_Family_Club-Payallar_Turkish_Mediterranean_Coast.html", + "slug": "nora", + "images": [ + { + "file": "assets/nora-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/323835/2702360_740x550.jpg" + }, + { + "file": "assets/nora-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/323835/2702360_740x550.jpg" + }, + { + "file": "assets/nora-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8867010_740x550.jpeg" + }, + { + "file": "assets/nora-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8851322_740x550.jpeg" + }, + { + "file": "assets/nora-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8851321_740x550.jpeg" + }, + { + "file": "assets/nora-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8851320_740x550.jpeg" + }, + { + "file": "assets/nora-07-review.png", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8845987_740x550.png" + }, + { + "file": "assets/nora-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8845986_740x550.jpg" + }, + { + "file": "assets/nora-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8845985_740x550.jpg" + }, + { + "file": "assets/nora-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8845984_740x550.jpg" + }, + { + "file": "assets/nora-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video.tophotels.ru/poster/165/1654805.jpg?__t=1759761435" + }, + { + "file": "assets/nora-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/165/1654782.jpg?__t=1759761126" + } + ], + "top_source": "https://tophotels.ru/hotel/al323835/media" + }, + { + "name": "MC Beach Resort", + "stars": "5*", + "segment": "10-11", + "rank": "Недорогой 5*", + "price_byn": 10074, + "price_rub": 262268, + "alt_price": "7 ночей", + "dates": "21-28 августа", + "nights": 7, + "meal": "UAI", + "transfer": "нет в выдаче", + "flight": "регулярный", + "line": "1 линия", + "beach": "50 м", + "rating": "3.83 Travelata", + "verdict": "Цена приятная, но я бы не покупал без свежей проверки отзывов за лето 2026.", + "pros": [ + "1 линия", + "пляж близко", + "UAI", + "есть водные развлечения" + ], + "cons": [ + "без трансфера в текущей строке", + "детский возраст 13 лет надо перепроверить по номеру", + "отзывы смешанные" + ], + "review": "На фото туристов есть пляж, бассейн, территория. По отзывам встречается сценарий “за эти деньги нормально”, но сервис и питание спорные.", + "trip": "https://www.tripadvisor.com/Hotel_Review-g12002292-d3892015-Reviews-MC_Beach_Resort_Hotel-Payallar_Turkish_Mediterranean_Coast.html", + "slug": "mc-beach", + "images": [ + { + "file": "assets/mc-beach-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/2364/236977_740x550.jpg" + }, + { + "file": "assets/mc-beach-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/2364/236977_740x550.jpg" + }, + { + "file": "assets/mc-beach-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031948_740x550.jpg" + }, + { + "file": "assets/mc-beach-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031947_740x550.jpg" + }, + { + "file": "assets/mc-beach-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031946_740x550.jpg" + }, + { + "file": "assets/mc-beach-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031945_740x550.jpg" + }, + { + "file": "assets/mc-beach-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031944_740x550.jpg" + }, + { + "file": "assets/mc-beach-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031943_740x550.jpg" + }, + { + "file": "assets/mc-beach-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031942_740x550.jpg" + }, + { + "file": "assets/mc-beach-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031941_740x550.jpg" + }, + { + "file": "assets/mc-beach-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/256/2566073.jpg" + }, + { + "file": "assets/mc-beach-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/256/2566055.jpg" + } + ], + "top_source": "https://tophotels.ru/en/hotel/al2364/media" + }, + { + "name": "First Class", + "stars": "5*", + "segment": "10-11", + "rank": "Цена ок, отзывы нет", + "price_byn": 10330, + "price_rub": 268929, + "alt_price": "7 ночей", + "dates": "24-31 августа", + "nights": 7, + "meal": "UAI", + "transfer": "групповой", + "flight": "чартер", + "line": "1 линия", + "beach": "70 м", + "rating": "4.11 Travelata", + "verdict": "На бумаге красиво, но по отзывам и визуально я бы ставил ниже Insula/Miarosa/Kirbiyik.", + "pros": [ + "цена", + "1 линия", + "UAI", + "групповой трансфер" + ], + "cons": [ + "не лучший отзывной фон", + "7 ночей", + "надо проверять пляж/номер/питание" + ], + "review": "Фото туристов помогают увидеть, что это не премиальный 5*. Может подойти, если цена важнее уровня.", + "trip": "https://www.tripadvisor.ru/Hotel_Review-g1192197-d878290-Reviews-First_Class_Hotel-Kargicak_Alanya_Turkish_Mediterranean_Coast.html", + "slug": "first-class", + "images": [ + { + "file": "assets/first-class-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/20801/2341408_740x550.jpg" + }, + { + "file": "assets/first-class-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/20801/2341408_740x550.jpg" + }, + { + "file": "assets/first-class-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046044_740x550.jpeg" + }, + { + "file": "assets/first-class-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046043_740x550.jpeg" + }, + { + "file": "assets/first-class-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046042_740x550.jpeg" + }, + { + "file": "assets/first-class-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046041_740x550.jpeg" + }, + { + "file": "assets/first-class-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046040_740x550.jpeg" + }, + { + "file": "assets/first-class-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046039_740x550.jpeg" + }, + { + "file": "assets/first-class-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046038_740x550.jpeg" + }, + { + "file": "assets/first-class-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046037_740x550.jpeg" + }, + { + "file": "assets/first-class-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video.tophotels.ru/poster/193/1931249.jpg" + }, + { + "file": "assets/first-class-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/177/1772948.jpg?__t=1759756338" + } + ], + "top_source": "https://tophotels.ru/hotel/al20801/media" + }, + { + "name": "Hedef Resort & Spa", + "stars": "5*", + "segment": "8-9", + "rank": "Дешево, но рискованно", + "price_byn": 8819, + "price_rub": 229600, + "alt_price": "9 ночей: ~10 643 BYN", + "dates": "24-31 августа", + "nights": 7, + "meal": "AI", + "transfer": "групповой", + "flight": "чартер", + "line": "2 линия", + "beach": "230 м", + "rating": "3.63 Travelata", + "verdict": "Беру только если цена решает все и менеджер подтверждает номер/багаж/трансфер.", + "pros": [ + "входит в 8-9 тыс. BYN", + "групповой трансфер", + "есть водные зоны" + ], + "cons": [ + "2 линия", + "много жалоб на сервис и чистоту", + "не выглядит сильным семейным выбором" + ], + "review": "Фото туристов показывают большую территорию и водные зоны, но отзывы заметно неровные: номера, уборка и питание надо проверять особенно внимательно.", + "trip": "https://www.tripadvisor.com/Hotel_Review-g951014-d669255-Reviews-Hedef_Resort_Spa_Hotel-Konakli_Alanya_Turkish_Mediterranean_Coast.html", + "slug": "hedef", + "images": [ + { + "file": "assets/hedef-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/27984/835603_740x550.jpg" + }, + { + "file": "assets/hedef-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/27984/835603_740x550.jpg" + }, + { + "file": "assets/hedef-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9023807_740x550.jpg" + }, + { + "file": "assets/hedef-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9023806_740x550.jpg" + }, + { + "file": "assets/hedef-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8971485_740x550.jpg" + }, + { + "file": "assets/hedef-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8971484_740x550.jpg" + }, + { + "file": "assets/hedef-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8971483_740x550.jpg" + }, + { + "file": "assets/hedef-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8971482_740x550.jpg" + }, + { + "file": "assets/hedef-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/274/8886482_740x550.jpg" + }, + { + "file": "assets/hedef-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/274/8886481_740x550.jpg" + }, + { + "file": "assets/hedef-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/179/1799511.jpg?__t=1759755764" + }, + { + "file": "assets/hedef-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/179/1799443.jpg?__t=1759755766" + } + ], + "top_source": "https://tophotels.ru/en/hotel/al27984/media" + }, + { + "name": "Galaxy Beach", + "stars": "4*", + "segment": "near-9", + "rank": "Рядом с 9 тыс.", + "price_byn": 9400, + "price_rub": 244717, + "alt_price": "", + "dates": "21-30 августа", + "nights": 9, + "meal": "AI", + "transfer": "нет в выдаче", + "flight": "регулярный", + "line": "1 линия", + "beach": "20 м", + "rating": "3.86 Travelata", + "verdict": "9 ночей дешево, но это не тот отель, который хочется советовать семье первым.", + "pros": [ + "9 ночей", + "очень близко к пляжу", + "цена ниже 10 тыс. BYN" + ], + "cons": [ + "без трансфера в выдаче", + "4*", + "отзывы слабее, чем хочется" + ], + "review": "Фотографии полезны именно как проверка реальности: пляж рядом, но сам отель и номера выглядят скромно.", + "trip": "https://www.tripadvisor.com/Hotel_Review-g1192197-d1128553-Reviews-Galaxy_Beach_Hotel-Kargicak_Alanya_Turkish_Mediterranean_Coast.html", + "slug": "galaxy", + "images": [ + { + "file": "assets/galaxy-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/5025/2314011_740x550.jpg" + }, + { + "file": "assets/galaxy-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/5025/2314011_740x550.jpg" + }, + { + "file": "assets/galaxy-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/264/8393157_740x550.jpg" + }, + { + "file": "assets/galaxy-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/264/8393156_740x550.jpg" + }, + { + "file": "assets/galaxy-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/264/8393155_740x550.jpg" + }, + { + "file": "assets/galaxy-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/264/8393154_740x550.jpg" + }, + { + "file": "assets/galaxy-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/263/8372006_740x550.jpg" + }, + { + "file": "assets/galaxy-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/260/8262616_740x550.jpg" + }, + { + "file": "assets/galaxy-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/260/8262615_740x550.jpg" + }, + { + "file": "assets/galaxy-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/260/8262614_740x550.jpg" + } + ], + "top_source": "https://tophotels.ru/hotel/al5025/media" + }, + { + "name": "Perre Delta", + "stars": "5*", + "segment": "10-11", + "rank": "Большой риск", + "price_byn": 10810, + "price_rub": 281419, + "alt_price": "7 ночей", + "dates": "24-31 августа", + "nights": 7, + "meal": "UAI", + "transfer": "групповой", + "flight": "чартер", + "line": "1 линия", + "beach": "110 м", + "rating": "3.32 Travelata", + "verdict": "Я бы оставил как запасной вариант, а не как цель.", + "pros": [ + "1 линия", + "UAI", + "групповой трансфер", + "цена в сегменте" + ], + "cons": [ + "низкий рейтинг", + "много спорных отзывов", + "нужно особенно проверять свежие фото" + ], + "review": "По фото туристов видно крупный курортный формат, но отзывной фон слишком нервный для семейной поездки без сюрпризов.", + "trip": "https://www.tripadvisor.com/Hotel_Review-g950910-d14113708-Reviews-Perre_Delta_Hotel_Resort_Spa-Okurcalar_Alanya_Turkish_Mediterranean_Coast.html", + "slug": "perre-delta", + "images": [ + { + "file": "assets/perre-delta-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/39867/342024_740x550.jpg" + }, + { + "file": "assets/perre-delta-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/39867/342024_740x550.jpg" + }, + { + "file": "assets/perre-delta-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8947728_740x550.jpg" + }, + { + "file": "assets/perre-delta-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8947727_740x550.jpg" + }, + { + "file": "assets/perre-delta-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8947726_740x550.jpg" + }, + { + "file": "assets/perre-delta-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8947725_740x550.jpg" + }, + { + "file": "assets/perre-delta-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8947724_740x550.jpg" + }, + { + "file": "assets/perre-delta-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8947723_740x550.jpg" + }, + { + "file": "assets/perre-delta-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8861660_740x550.jpg" + }, + { + "file": "assets/perre-delta-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8858818_740x550.jpg" + }, + { + "file": "assets/perre-delta-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/200/2008759.jpg" + }, + { + "file": "assets/perre-delta-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/199/1994930.jpg" + } + ], + "top_source": "https://tophotels.ru/hotel/al39867/media" + } + ], + "notes": [ + "Travelata из Минска на этих фильтрах вернула 0 пакетных туров.", + "Фото скачаны из открытых медиа-разделов TopHotels; для Tripadvisor оставлены ссылки, потому что сайт блокирует прямое скачивание.", + "Перед оплатой обязательно проверить багаж, трансфер, точный номер и время прилета 31 августа." + ] +}; diff --git a/image-manifest.json b/image-manifest.json new file mode 100644 index 0000000..df09b4b --- /dev/null +++ b/image-manifest.json @@ -0,0 +1,595 @@ +[ + { + "slug": "miarosa", + "name": "Miarosa Incekum Beach", + "images": [ + { + "file": "assets/miarosa-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/24896/1000654_740x550.jpg" + }, + { + "file": "assets/miarosa-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/24896/1000654_740x550.jpg" + }, + { + "file": "assets/miarosa-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868746_740x550.jpg" + }, + { + "file": "assets/miarosa-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868745_740x550.jpg" + }, + { + "file": "assets/miarosa-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868744_740x550.jpg" + }, + { + "file": "assets/miarosa-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868743_740x550.jpg" + }, + { + "file": "assets/miarosa-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868742_740x550.jpg" + }, + { + "file": "assets/miarosa-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868741_740x550.jpg" + }, + { + "file": "assets/miarosa-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868740_740x550.jpg" + }, + { + "file": "assets/miarosa-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8868739_740x550.jpg" + }, + { + "file": "assets/miarosa-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/186/1867430.jpg?__t=1759750561" + }, + { + "file": "assets/miarosa-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video.tophotels.ru/poster/210/210712.jpg?__t=1760341860" + } + ], + "top_source": "https://tophotels.ru/hotel/al24896/media" + }, + { + "slug": "insula", + "name": "Insula Resort & Spa", + "images": [ + { + "file": "assets/insula-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/12585/2211436_740x550.jpg" + }, + { + "file": "assets/insula-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/12585/2211436_740x550.jpg" + }, + { + "file": "assets/insula-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/272/9011938_740x550.jpg" + }, + { + "file": "assets/insula-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/272/9011937_740x550.jpg" + }, + { + "file": "assets/insula-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/272/9011936_740x550.jpg" + }, + { + "file": "assets/insula-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8935625_740x550.jpg" + }, + { + "file": "assets/insula-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8935624_740x550.jpg" + }, + { + "file": "assets/insula-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8935623_740x550.jpg" + }, + { + "file": "assets/insula-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8935622_740x550.jpg" + }, + { + "file": "assets/insula-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8935621_740x550.jpg" + }, + { + "file": "assets/insula-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/230/2302869.jpg" + }, + { + "file": "assets/insula-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/230/2302804.jpg" + } + ], + "top_source": "https://tophotels.ru/en/hotel/al12585/media" + }, + { + "slug": "mc-beach", + "name": "MC Beach Resort", + "images": [ + { + "file": "assets/mc-beach-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/2364/236977_740x550.jpg" + }, + { + "file": "assets/mc-beach-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/2364/236977_740x550.jpg" + }, + { + "file": "assets/mc-beach-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031948_740x550.jpg" + }, + { + "file": "assets/mc-beach-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031947_740x550.jpg" + }, + { + "file": "assets/mc-beach-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031946_740x550.jpg" + }, + { + "file": "assets/mc-beach-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031945_740x550.jpg" + }, + { + "file": "assets/mc-beach-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031944_740x550.jpg" + }, + { + "file": "assets/mc-beach-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031943_740x550.jpg" + }, + { + "file": "assets/mc-beach-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031942_740x550.jpg" + }, + { + "file": "assets/mc-beach-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9031941_740x550.jpg" + }, + { + "file": "assets/mc-beach-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/256/2566073.jpg" + }, + { + "file": "assets/mc-beach-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/256/2566055.jpg" + } + ], + "top_source": "https://tophotels.ru/en/hotel/al2364/media" + }, + { + "slug": "nora", + "name": "The Nora Family Club", + "images": [ + { + "file": "assets/nora-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/323835/2702360_740x550.jpg" + }, + { + "file": "assets/nora-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/323835/2702360_740x550.jpg" + }, + { + "file": "assets/nora-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8867010_740x550.jpeg" + }, + { + "file": "assets/nora-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8851322_740x550.jpeg" + }, + { + "file": "assets/nora-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8851321_740x550.jpeg" + }, + { + "file": "assets/nora-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8851320_740x550.jpeg" + }, + { + "file": "assets/nora-07-review.png", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8845987_740x550.png" + }, + { + "file": "assets/nora-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8845986_740x550.jpg" + }, + { + "file": "assets/nora-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8845985_740x550.jpg" + }, + { + "file": "assets/nora-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8845984_740x550.jpg" + }, + { + "file": "assets/nora-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video.tophotels.ru/poster/165/1654805.jpg?__t=1759761435" + }, + { + "file": "assets/nora-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/165/1654782.jpg?__t=1759761126" + } + ], + "top_source": "https://tophotels.ru/hotel/al323835/media" + }, + { + "slug": "hedef", + "name": "Hedef Resort & Spa", + "images": [ + { + "file": "assets/hedef-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/27984/835603_740x550.jpg" + }, + { + "file": "assets/hedef-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/27984/835603_740x550.jpg" + }, + { + "file": "assets/hedef-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9023807_740x550.jpg" + }, + { + "file": "assets/hedef-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9023806_740x550.jpg" + }, + { + "file": "assets/hedef-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8971485_740x550.jpg" + }, + { + "file": "assets/hedef-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8971484_740x550.jpg" + }, + { + "file": "assets/hedef-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8971483_740x550.jpg" + }, + { + "file": "assets/hedef-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8971482_740x550.jpg" + }, + { + "file": "assets/hedef-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/274/8886482_740x550.jpg" + }, + { + "file": "assets/hedef-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/274/8886481_740x550.jpg" + }, + { + "file": "assets/hedef-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/179/1799511.jpg?__t=1759755764" + }, + { + "file": "assets/hedef-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/179/1799443.jpg?__t=1759755766" + } + ], + "top_source": "https://tophotels.ru/en/hotel/al27984/media" + }, + { + "slug": "kirbiyik", + "name": "Kirbiyik Resort", + "images": [ + { + "file": "assets/kirbiyik-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/7619/930925_740x550.jpg" + }, + { + "file": "assets/kirbiyik-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/7619/930925_740x550.jpg" + }, + { + "file": "assets/kirbiyik-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/274/8906025_740x550.jpg" + }, + { + "file": "assets/kirbiyik-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/274/8906024_740x550.jpg" + }, + { + "file": "assets/kirbiyik-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/274/8906022_740x550.jpg" + }, + { + "file": "assets/kirbiyik-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/274/8906021_740x550.jpg" + }, + { + "file": "assets/kirbiyik-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8873122_740x550.jpg" + }, + { + "file": "assets/kirbiyik-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8860023_740x550.jpg" + }, + { + "file": "assets/kirbiyik-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8860022_740x550.jpg" + }, + { + "file": "assets/kirbiyik-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8860021_740x550.jpg" + }, + { + "file": "assets/kirbiyik-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/199/1997873.jpg" + }, + { + "file": "assets/kirbiyik-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/157/1571651.jpg?__t=1759765071" + } + ], + "top_source": "https://tophotels.ru/hotel/al7619/media" + }, + { + "slug": "first-class", + "name": "First Class", + "images": [ + { + "file": "assets/first-class-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/20801/2341408_740x550.jpg" + }, + { + "file": "assets/first-class-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/20801/2341408_740x550.jpg" + }, + { + "file": "assets/first-class-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046044_740x550.jpeg" + }, + { + "file": "assets/first-class-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046043_740x550.jpeg" + }, + { + "file": "assets/first-class-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046042_740x550.jpeg" + }, + { + "file": "assets/first-class-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046041_740x550.jpeg" + }, + { + "file": "assets/first-class-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046040_740x550.jpeg" + }, + { + "file": "assets/first-class-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046039_740x550.jpeg" + }, + { + "file": "assets/first-class-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046038_740x550.jpeg" + }, + { + "file": "assets/first-class-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/277/9046037_740x550.jpeg" + }, + { + "file": "assets/first-class-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video.tophotels.ru/poster/193/1931249.jpg" + }, + { + "file": "assets/first-class-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/177/1772948.jpg?__t=1759756338" + } + ], + "top_source": "https://tophotels.ru/hotel/al20801/media" + }, + { + "slug": "galaxy", + "name": "Galaxy Beach", + "images": [ + { + "file": "assets/galaxy-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/5025/2314011_740x550.jpg" + }, + { + "file": "assets/galaxy-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/5025/2314011_740x550.jpg" + }, + { + "file": "assets/galaxy-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/264/8393157_740x550.jpg" + }, + { + "file": "assets/galaxy-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/264/8393156_740x550.jpg" + }, + { + "file": "assets/galaxy-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/264/8393155_740x550.jpg" + }, + { + "file": "assets/galaxy-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/264/8393154_740x550.jpg" + }, + { + "file": "assets/galaxy-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/263/8372006_740x550.jpg" + }, + { + "file": "assets/galaxy-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/260/8262616_740x550.jpg" + }, + { + "file": "assets/galaxy-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/260/8262615_740x550.jpg" + }, + { + "file": "assets/galaxy-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/260/8262614_740x550.jpg" + } + ], + "top_source": "https://tophotels.ru/hotel/al5025/media" + }, + { + "slug": "perre-delta", + "name": "Perre Delta", + "images": [ + { + "file": "assets/perre-delta-01-hotel.jpg", + "kind": "hotel", + "source": "http://tophotels.ru/icache/hotel_photos/83/18/39867/342024_740x550.jpg" + }, + { + "file": "assets/perre-delta-02-hotel.jpg", + "kind": "hotel", + "source": "https://tophotels.ru/icache/hotel_photos/83/18/39867/342024_740x550.jpg" + }, + { + "file": "assets/perre-delta-03-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8947728_740x550.jpg" + }, + { + "file": "assets/perre-delta-04-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8947727_740x550.jpg" + }, + { + "file": "assets/perre-delta-05-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8947726_740x550.jpg" + }, + { + "file": "assets/perre-delta-06-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8947725_740x550.jpg" + }, + { + "file": "assets/perre-delta-07-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8947724_740x550.jpg" + }, + { + "file": "assets/perre-delta-08-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/275/8947723_740x550.jpg" + }, + { + "file": "assets/perre-delta-09-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8861660_740x550.jpg" + }, + { + "file": "assets/perre-delta-10-review.jpg", + "kind": "review", + "source": "https://cdn.tophotels.ru/icache/user_photos/273/8858818_740x550.jpg" + }, + { + "file": "assets/perre-delta-11-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/200/2008759.jpg" + }, + { + "file": "assets/perre-delta-12-traveler-video.jpg", + "kind": "traveler-video", + "source": "https://video2.tophotels.ru/poster/199/1994930.jpg" + } + ], + "top_source": "https://tophotels.ru/hotel/al39867/media" + } +] \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..da6eb2d --- /dev/null +++ b/index.html @@ -0,0 +1,62 @@ + + + + + + Аланья до 1 сентября: семейные туры + + + +
    +
    +

    Travelata / Москва / семья 2+2

    +

    Аланья до 1 сентября

    +
    +
    +
    + +
    +
    +
    +

    Короткий вывод

    +

    +
    +
      +
      + + + +
      + + + + + + + + + + + + +
      ОтельДатыНочиЦенаТрансферВердикт
      +
      + +
      +
      + + + + + + + diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..2bad8fb --- /dev/null +++ b/styles.css @@ -0,0 +1,478 @@ +:root { + color-scheme: light; + --bg: #f4f7f8; + --panel: #ffffff; + --ink: #172126; + --muted: #63727a; + --line: #dce5e8; + --teal: #0f766e; + --blue: #2563eb; + --coral: #d94f3d; + --green: #157347; + --amber: #9a6700; + --shadow: 0 14px 40px rgba(27, 42, 50, 0.11); +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + background: var(--bg); + color: var(--ink); + font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + line-height: 1.45; +} + +body.lightbox-open { + overflow: hidden; +} + +.topbar { + display: flex; + align-items: end; + justify-content: space-between; + gap: 24px; + padding: 30px clamp(18px, 4vw, 52px) 24px; + background: #ffffff; + border-bottom: 1px solid var(--line); +} + +h1, +h2, +h3, +p { + margin: 0; +} + +h1 { + font-size: clamp(30px, 4vw, 54px); + line-height: 1; + letter-spacing: 0; +} + +h2 { + font-size: 22px; + line-height: 1.15; +} + +h3 { + font-size: 23px; + line-height: 1.15; +} + +.eyebrow { + margin-bottom: 8px; + color: var(--teal); + font-size: 13px; + font-weight: 760; + letter-spacing: 0; + text-transform: uppercase; +} + +.rate { + max-width: 330px; + color: var(--muted); + font-size: 14px; + text-align: right; +} + +main { + width: min(1440px, 100%); + margin: 0 auto; + padding: 22px clamp(14px, 3vw, 42px) 56px; +} + +.summary { + display: grid; + grid-template-columns: minmax(0, 1.45fr) minmax(280px, 0.85fr); + gap: 24px; + padding: 22px 0 20px; + border-bottom: 1px solid var(--line); +} + +.summary p { + margin-top: 10px; + color: var(--muted); + font-size: 16px; +} + +.summary ol { + margin: 0; + padding-left: 22px; + color: var(--muted); +} + +.summary li + li { + margin-top: 8px; +} + +.filters { + display: flex; + gap: 10px; + flex-wrap: wrap; + padding: 22px 0; +} + +.filter { + min-height: 38px; + padding: 0 15px; + border: 1px solid var(--line); + border-radius: 8px; + background: #ffffff; + color: var(--ink); + font: inherit; + font-weight: 700; + cursor: pointer; +} + +.filter.active { + border-color: var(--teal); + background: var(--teal); + color: #ffffff; +} + +.table-wrap { + overflow-x: auto; + margin-bottom: 24px; + border: 1px solid var(--line); + border-radius: 8px; + background: #ffffff; +} + +table { + width: 100%; + min-width: 880px; + border-collapse: collapse; + font-size: 14px; +} + +th, +td { + padding: 13px 14px; + border-bottom: 1px solid var(--line); + text-align: left; + vertical-align: top; +} + +th { + color: var(--muted); + font-size: 12px; + font-weight: 800; + letter-spacing: 0; + text-transform: uppercase; +} + +tbody tr:last-child td { + border-bottom: 0; +} + +.price { + white-space: nowrap; + font-weight: 850; +} + +.cards { + display: grid; + gap: 22px; +} + +.hotel-card { + display: grid; + grid-template-columns: minmax(330px, 0.9fr) minmax(0, 1.25fr); + gap: 22px; + padding: 18px; + border: 1px solid var(--line); + border-radius: 8px; + background: var(--panel); + box-shadow: var(--shadow); +} + +.gallery { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 8px; + align-content: start; +} + +.shot { + position: relative; + display: block; + overflow: hidden; + width: 100%; + aspect-ratio: 4 / 3; + padding: 0; + border: 0; + border-radius: 6px; + background: #e5ecef; + cursor: zoom-in; +} + +.shot:first-child { + grid-column: span 2; + grid-row: span 2; +} + +.shot img { + display: block; + width: 100%; + height: 100%; + object-fit: cover; +} + +.tag { + position: absolute; + left: 7px; + bottom: 7px; + padding: 4px 7px; + border-radius: 6px; + background: rgba(14, 22, 26, 0.78); + color: #ffffff; + font-size: 11px; + font-weight: 800; +} + +.hotel-info { + display: flex; + flex-direction: column; + gap: 14px; +} + +.hotel-head { + display: flex; + justify-content: space-between; + gap: 18px; +} + +.hotel-title { + min-width: 0; +} + +.hotel-title p { + margin-top: 6px; + color: var(--muted); + font-weight: 650; +} + +.hotel-price { + min-width: 150px; + text-align: right; +} + +.hotel-price strong { + display: block; + color: var(--teal); + font-size: 27px; + line-height: 1; +} + +.hotel-price span { + display: block; + margin-top: 5px; + color: var(--muted); + font-size: 12px; +} + +.facts { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 8px; +} + +.fact { + min-height: 62px; + padding: 10px; + border: 1px solid var(--line); + border-radius: 7px; + background: #f8fbfc; +} + +.fact span { + display: block; + color: var(--muted); + font-size: 11px; + font-weight: 780; + text-transform: uppercase; +} + +.fact strong { + display: block; + margin-top: 4px; + font-size: 14px; +} + +.verdict { + padding: 12px 14px; + border-left: 4px solid var(--coral); + background: #fff7f5; + border-radius: 7px; + font-weight: 700; +} + +.columns { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 18px; +} + +.columns h4, +.review h4, +.links h4 { + margin: 0 0 8px; + color: var(--muted); + font-size: 12px; + letter-spacing: 0; + text-transform: uppercase; +} + +ul { + margin: 0; + padding-left: 18px; +} + +li + li { + margin-top: 5px; +} + +.pros li::marker { + color: var(--green); +} + +.cons li::marker { + color: var(--coral); +} + +.review { + color: #314047; +} + +.links { + display: flex; + gap: 10px; + flex-wrap: wrap; + align-items: center; +} + +.links h4 { + flex-basis: 100%; +} + +.links a { + display: inline-flex; + align-items: center; + min-height: 36px; + padding: 0 12px; + border: 1px solid var(--line); + border-radius: 7px; + color: var(--blue); + font-weight: 750; + text-decoration: none; +} + +.links a:hover { + border-color: var(--blue); +} + +.badge { + display: inline-block; + padding: 3px 8px; + border-radius: 999px; + background: #eaf7f4; + color: var(--teal); + font-size: 12px; + font-weight: 850; +} + +.badge.warn { + background: #fff4dc; + color: var(--amber); +} + +.lightbox { + position: fixed; + inset: 0; + z-index: 20; + display: none; + place-items: center; + padding: 50px 20px; + background: rgba(8, 14, 18, 0.86); +} + +.lightbox.open { + display: grid; +} + +.lightbox img { + max-width: min(1120px, 96vw); + max-height: 78vh; + border-radius: 8px; + box-shadow: 0 18px 70px rgba(0, 0, 0, 0.35); +} + +.lightbox a { + margin-top: 14px; + color: #ffffff; + font-weight: 800; +} + +.close { + position: fixed; + top: 18px; + right: 20px; + width: 44px; + height: 44px; + border: 0; + border-radius: 50%; + background: #ffffff; + color: var(--ink); + font-size: 28px; + cursor: pointer; +} + +@media (max-width: 1040px) { + .hotel-card { + grid-template-columns: 1fr; + } + + .gallery { + grid-template-columns: repeat(5, 1fr); + } +} + +@media (max-width: 760px) { + .topbar, + .summary, + .hotel-head, + .columns { + display: block; + } + + .rate, + .hotel-price { + margin-top: 12px; + text-align: left; + } + + .facts { + grid-template-columns: repeat(2, 1fr); + } + + .gallery { + grid-template-columns: repeat(3, 1fr); + } + + .hotel-card { + padding: 12px; + } +} + +@media (max-width: 500px) { + .facts { + grid-template-columns: 1fr; + } + + .gallery { + grid-template-columns: repeat(2, 1fr); + } +}