<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:yandex="http://news.yandex.ru" xmlns:turbo="http://turbo.yandex.ru" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>футер</title>
    <link>https://artonmebel.ru</link>
    <description/>
    <language>ru</language>
    <lastBuildDate>Mon, 27 Apr 2026 07:52:19 +0300</lastBuildDate>
    <item turbo="true">
      <title>Яркий каркасный дом 125 м²</title>
      <link>https://artonmebel.ru/tpost/nr7eg52il1-yarkii-karkasnii-dom-125-m</link>
      <amplink>https://artonmebel.ru/tpost/nr7eg52il1-yarkii-karkasnii-dom-125-m?amp=true</amplink>
      <pubDate>Sat, 20 Sep 2025 09:00:00 +0300</pubDate>
      <enclosure url="https://static.tildacdn.com/tild3761-6238-4836-a365-326364663462/DSC02180.jpg" type="image/jpeg"/>
      <description>2 спальни, комната для енота Тёмы, кухня-гостиная и выход в лес</description>
      <turbo:content><![CDATA[<header><h1>Яркий каркасный дом 125 м²</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild3761-6238-4836-a365-326364663462/DSC02180.jpg"/></figure><h2  class="t-redactor__h2">О проекте</h2><div class="t-redactor__text">Этот дом построен по индивидуальному проекту для девушки-блогера с учетом всех пожеланий: много солнечного света, панорамные окна, высокие потолки, просторные комнаты, выход на большую террасу и команта для любимого енота.</div><div class="t-redactor__text"><ul><li data-list="bullet"><strong>Срок строительства:</strong> 6 месяцев</li><li data-list="bullet">Построили каркасный дом в комплектации «Теплый контур»</li><li data-list="bullet"><strong>Общая площадь:</strong> 125 м2 по внешнему контуру, жилая 86, м2</li><li data-list="bullet">2 жилых комнаты+гаредероб</li></ul></div><hr style="color: #000000;"><div class="t-redactor__embedcode"><!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Технические детали проекта</title>
  <style>
    @font-face {
      font-family: 'Gilroy';
      src: url('https://atom.st/wp-content/uploads/font/Gilroy-Regular.ttf') format('truetype');
      font-weight: 400;
      font-style: normal;
    }

    @font-face {
      font-family: 'Gilroy';
      src: url('https://atom.st/wp-content/uploads/font/Gilroy-Medium.ttf') format('truetype');
      font-weight: 500;
      font-style: normal;
    }

    @font-face {
      font-family: 'Gilroy';
      src: url('https://atom.st/wp-content/uploads/font/Gilroy-Bold.ttf') format('truetype');
      font-weight: 700;
      font-style: normal;
    }

    @font-face {
      font-family: 'Gilroy';
      src: url('https://atom.st/wp-content/uploads/font/Gilroy-ExtraBold.ttf') format('truetype');
      font-weight: 800;
      font-style: normal;
    }

    body {
      font-family: 'Gilroy', Arial, sans-serif;
      margin: 20px;
    }

    details {
      margin: 20px 0;
    }

    summary {
      font-size: 20px;
      font-weight: 700;
      cursor: pointer;
    }

    h3 {
      font-size: 16px;
      font-weight: 700;
      margin-top: 15px;
      margin-bottom: 5px;
    }

    ul {
      margin: 0 0 10px 20px;
    }
  </style>
</head>
<body>

  <details>
    <summary>Технические характеристики</summary>

    <h3>Фундамент и каркас:</h3>
    <ul>
      <li>Фундамент — Ж/Б сваи 150х150;</li>
      <li>Обработка нижних досок антисептиком;</li>
      <li>Каркас — доска сухая строганная сосна (45х195);</li>
      <li>Утеплитель — каменная вата Технониколь Роклайт Master (стены — 200мм, потолок — 250мм, м/к перегородки — 150мм);</li>
    </ul>

    <h3>Кровля и цоколь:</h3>
    <ul>
      <li>Крыша — металлочерепица (0,5), RAL 7024 матовая + все доборные элементы;</li>
      <li>Цоколь зашит — профлист волна С8, матовый, RAL 7024;</li>
    </ul>

    <h3>Окна и отделка:</h3>
    <ul>
      <li>Окна — REHAU (5 камер, профиль 70мм), белый/белый со шпросами;</li>
      <li>Откосы снаружи — дерево с покраской в 2 слоя;</li>
      <li>Отделка снаружи — имитация бруса 180мм Кедр с горизонтальным расположением и покраской в 2 слоя;</li>
      <li>Входная дверь с терморазрывом (производитель — Новосибирск);</li>
      <li>Черновой пол — полусухая стяжка;</li>
      <li>Террасная доска — лиственница Вельвет с покрытием маслом в 2 слоя;</li>
      <li>Рейки на террасе — окрашены в 2 слоя;</li>
    </ul>

    <h3>Отопление, сантехника, электрика:</h3>
    <ul>
      <li>Электрика — дифавтомат, кабель ВВГнг-LS в гофре; котельная с полной разводкой «под ключ» (по дому разводка не осуществлялась);</li>
      <li>Сантехника — скрытая разводка воды в стяжке;</li>
      <li>Отопление — электрический котёл Зота, водяной тёплый пол Valtec; дополнительно заведён газовый котёл (сторонний подрядчик);</li>
      <li>Бойлер косвенного нагрева 200л, радиаторы в гостиной;</li>
    </ul>

    <h3>Технические моменты:</h3>
    <ul>
      <li>Вода — бурение скважины, подключение к скважине;</li>
      <li>Септик — переливной, бетонные кольца плюс люк;</li>
      <li>Подключение дома к электричеству под землёй;</li>
      <li>Канализационные трубы утеплены, дополнительно проложен греющий кабель;</li>
    </ul>

    <h3>Дополнительные услуги:</h3>
    <ul>
      <li>Установка датчика от протечки воды;</li>
      <li>Монтаж выводов под батареи под окнами (для отсечки холода и предотвращения конденсата);</li>
    </ul>

  </details>

</body>
</html>
</div><h2  class="t-redactor__h2">Видео-обзор дома</h2><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-211076269&id=456240237" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><hr style="color: #000000;"><h2  class="t-redactor__h2">Экстерьер</h2><div class="t-redactor__embedcode"><!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Слайдер</title>
<style>
  body {
    margin: 0;
    font-family: Arial, sans-serif;
    background: #fafafa;
  }

  .slider {
    position: relative;
    max-width: 900px;
    margin: 0 auto;
    overflow: hidden;
    border-radius: 12px;
  }

  .slides {
    display: flex;
    transition: transform 0.5s ease;
  }

  .slides img {
    width: 100%;
    flex-shrink: 0;
    object-fit: cover;
    display: block;
  }

  /* Стрелки */
  .slider__btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(0,0,0,.4);
    border: none;
    color: #fff;
    font-size: 26px;
    cursor: pointer;
    padding: 10px;
    border-radius: 50%;
  }
  .slider__btn:hover { background: rgba(0,0,0,.6); }
  .slider__btn.prev { left: 12px; }
  .slider__btn.next { right: 12px; }

  /* Точки */
  .dots {
    text-align: center;
    margin-top: 12px;
  }
  .dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    margin: 0 6px;
    background: #ccc;
    border-radius: 50%;
    cursor: pointer;
  }
  .dot.active { background: #333; }
</style>
</head>
<body>

<!-- Слайдер с настройками -->
<div class="slider" id="slider" data-autoplay="true" data-interval="4000">
  <div class="slides">
    <img src="https://static.tildacdn.com/tild3434-3637-4133-a337-386565653931/DSC02113.jpg" alt="Фото 1">
    <img src="https://static.tildacdn.com/tild3831-3738-4261-b734-313838313266/DSC02108.jpg" alt="Фото 2">
    <img src="https://static.tildacdn.com/tild3834-6536-4835-a331-653834653261/DSC02084.jpg" alt="Фото 3">
    <img src="https://static.tildacdn.com/tild6366-3065-4361-b762-353930316130/DSC02073.jpg" alt="Фото 4">
    <img src="https://static.tildacdn.com/tild3132-6339-4230-a235-623739623364/DSC02063.jpg" alt="Фото 5">
    <img src="https://static.tildacdn.com/tild3039-3363-4634-b431-393937643863/DJI_0998.jpg" alt="Фото 6">
    <img src="https://static.tildacdn.com/tild6661-3761-4838-b036-633862363265/DJI_0993.jpg" alt="Фото 7">
    <img src="https://static.tildacdn.com/tild3362-3166-4036-a630-316633626332/DJI_0992.jpg" alt="Фото 8">
  </div>
  <button class="slider__btn prev">⟨</button>
  <button class="slider__btn next">⟩</button>
</div>

<div class="dots" id="dots"></div>

<script>
  const slider = document.getElementById('slider');
  const slides = slider.querySelector('.slides');
  const images = slides.querySelectorAll('img');
  const prevBtn = slider.querySelector('.prev');
  const nextBtn = slider.querySelector('.next');
  const dotsContainer = document.getElementById('dots');

  // читаем настройки
  const AUTOPLAY = slider.dataset.autoplay === "true";
  const INTERVAL_MS = parseInt(slider.dataset.interval) || 4000;

  let index = 0;
  let timer = null;

  function showSlide(i) {
    if (i < 0) index = images.length - 1;
    else if (i >= images.length) index = 0;
    else index = i;

    slides.style.transform = `translateX(${-index * 100}%)`;

    document.querySelectorAll('.dot').forEach((dot, idx) => {
      dot.classList.toggle('active', idx === index);
    });
  }

  function nextSlide() { showSlide(index + 1); }
  function prevSlide() { showSlide(index - 1); }

  function startAutoplay() {
    if (!AUTOPLAY) return;
    stopAutoplay();
    timer = setInterval(nextSlide, INTERVAL_MS);
  }
  function stopAutoplay() {
    if (timer) {
      clearInterval(timer);
      timer = null;
    }
  }

  // кнопки
  prevBtn.addEventListener('click', () => { prevSlide(); startAutoplay(); });
  nextBtn.addEventListener('click', () => { nextSlide(); startAutoplay(); });

  // точки
  images.forEach((_, idx) => {
    const dot = document.createElement('span');
    dot.classList.add('dot');
    if (idx === 0) dot.classList.add('active');
    dot.addEventListener('click', () => {
      showSlide(idx);
      startAutoplay();
    });
    dotsContainer.appendChild(dot);
  });

  // свайп на мобилке
  let startX = 0;
  slider.addEventListener('touchstart', e => {
    startX = e.touches[0].clientX;
    stopAutoplay();
  }, {passive:true});
  slider.addEventListener('touchend', e => {
    const dx = e.changedTouches[0].clientX - startX;
    if (dx > 50) prevSlide();
    else if (dx < -50) nextSlide();
    startAutoplay();
  }, {passive:true});

  // пауза при наведении
  slider.addEventListener('mouseenter', stopAutoplay);
  slider.addEventListener('mouseleave', startAutoplay);

  // запуск
  showSlide(0);
  startAutoplay();
</script>

</body>
</html>
</div><hr style="color: #000000;"><h2  class="t-redactor__h2">Планировка</h2><div class="t-redactor__embedcode"><!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Слайдер</title>
<style>
  body { margin:0; font-family: Arial, sans-serif; background:#fafafa; }

  .slider {
    position: relative;
    max-width: 900px;
    margin: 20px auto;
    overflow: hidden;
    border-radius: 12px;
    background:#000;
  }
  .slides {
    display: flex;
    transition: transform .5s ease;
    will-change: transform;
  }
  .slides img {
    width: 100%;
    flex-shrink: 0;
    object-fit: cover;
    display: block;
  }

  /* Стрелки */
  .slider__btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(0,0,0,.4);
    border: none;
    color: #fff;
    font-size: 26px;
    cursor: pointer;
    padding: 10px;
    border-radius: 50%;
    z-index: 2;
  }
  .slider__btn:hover { background: rgba(0,0,0,.6); }
  .slider__btn.prev { left: 12px; }
  .slider__btn.next { right: 12px; }
</style>
</head>
<body>

<!-- теперь можно управлять атрибутами -->
<div class="slider" data-autoplay="true" data-interval="3000">
  <div class="slides">
    <img src="https://static.tildacdn.com/tild3035-6463-4538-b535-326363363664/____page-0002.jpg" alt="Фото 1">
    <img src="https://static.tildacdn.com/tild3730-6634-4134-a462-386533333935/____page-0003.jpg" alt="Фото 2">
    <img src="https://static.tildacdn.com/tild3930-6664-4139-a338-663133373465/____page-0006.jpg" alt="Фото 5">
    <img src="https://static.tildacdn.com/tild3530-6266-4736-a464-336233373461/____page-0007.jpg" alt="Фото 6">
  </div>
  <button class="slider__btn prev" type="button">⟨</button>
  <button class="slider__btn next" type="button">⟩</button>
</div>

<script>
(function () {
  function initSlider(root) {
    const slides = root.querySelector('.slides');
    const images = slides.querySelectorAll('img');
    const prevBtn = root.querySelector('.prev');
    const nextBtn = root.querySelector('.next');

    // читаем настройки из атрибутов
    const AUTOPLAY = root.dataset.autoplay === "true";
    const INTERVAL_MS = parseInt(root.dataset.interval) || 4000;

    let index = 0;
    let timer = null;
    let startX = 0;

    function showSlide(i) {
      if (i < 0) index = images.length - 1;
      else if (i >= images.length) index = 0;
      else index = i;
      slides.style.transform = `translateX(${-index * 100}%)`;
    }

    function next() { showSlide(index + 1); }
    function prev() { showSlide(index - 1); }

    function startAutoplay() {
      if (!AUTOPLAY) return;
      stopAutoplay();
      timer = setInterval(next, INTERVAL_MS);
    }
    function stopAutoplay() {
      if (timer) {
        clearInterval(timer);
        timer = null;
      }
    }

    // свайпы
    root.addEventListener('touchstart', e => {
      startX = e.touches[0].clientX;
      stopAutoplay();
    }, { passive: true });

    root.addEventListener('touchend', e => {
      const dx = e.changedTouches[0].clientX - startX;
      if (dx > 50) prev();
      else if (dx < -50) next();
      startAutoplay();
    }, { passive: true });

    // пауза при наведении
    root.addEventListener('mouseenter', stopAutoplay);
    root.addEventListener('mouseleave', startAutoplay);

    // кнопки
    prevBtn.addEventListener('click', () => { prev(); startAutoplay(); });
    nextBtn.addEventListener('click', () => { next(); startAutoplay(); });

    // автозапуск только когда видно
    const io = new IntersectionObserver((entries) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) startAutoplay();
        else stopAutoplay();
      });
    }, { threshold: 0.2 });
    io.observe(root);

    showSlide(0);
  }

  document.addEventListener('DOMContentLoaded', () => {
    document.querySelectorAll('.slider').forEach(initSlider);
  });
})();
</script>

</body>
</html>
</div>]]></turbo:content>
    </item>
    <item turbo="true">
      <title>Современный дом 174 м² с большой террасой</title>
      <link>https://artonmebel.ru/tpost/b1sutxypz1-sovremennii-dom-174-m-s-bolshoi-terrasoi</link>
      <amplink>https://artonmebel.ru/tpost/b1sutxypz1-sovremennii-dom-174-m-s-bolshoi-terrasoi?amp=true</amplink>
      <pubDate>Fri, 19 Sep 2025 10:45:00 +0300</pubDate>
      <enclosure url="https://static.tildacdn.com/tild6266-6430-4363-b862-613161616331/DSC00829.jpg" type="image/jpeg"/>
      <description>3 спальни, просторная терраса и кухня-гостиная</description>
      <turbo:content><![CDATA[<header><h1>Современный дом 174 м² с большой террасой</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild6266-6430-4363-b862-613161616331/DSC00829.jpg"/></figure><h2  class="t-redactor__h2">О проекте</h2><div class="t-redactor__text">Дом расположен на крайнем участке с уникальной треугольной формой. Благодаря грамотно спроектированному плану на участке легко разместить баню, бассейн, зону барбекю.<br /><br />В доме продумано абсолютно всё: от уникального фасада с вертикальной имитацией бруса, придающей дому современный и статусный вид, до просторной террасы из натуральной лиственницы с удобной зоной для отдыха и навесом.</div><div class="t-redactor__text"><ul><li data-list="bullet"><strong>Срок строительства:</strong> 8 месяцев</li><li data-list="bullet"><strong>Комплектация:</strong> «Под ключ»</li><li data-list="bullet"><strong>Общая площадь:</strong> – 174 м2 по внешнему контуру, жилая 92, м2</li><li data-list="bullet"><strong>Количество комнат:</strong> 3 жилых комнаты</li><li data-list="bullet"><strong>Фундамент:</strong> Ж/Б сваи 150х150</li></ul></div><div class="t-redactor__embedcode"><!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Технические детали проекта</title>
  <style>
    @font-face {
      font-family: 'Gilroy';
      src: url('https://atom.st/wp-content/uploads/font/Gilroy-Regular.ttf') format('truetype');
      font-weight: 400;
      font-style: normal;
    }

    @font-face {
      font-family: 'Gilroy';
      src: url('https://atom.st/wp-content/uploads/font/Gilroy-Medium.ttf') format('truetype');
      font-weight: 500;
      font-style: normal;
    }

    @font-face {
      font-family: 'Gilroy';
      src: url('https://atom.st/wp-content/uploads/font/Gilroy-Bold.ttf') format('truetype');
      font-weight: 700;
      font-style: normal;
    }

    @font-face {
      font-family: 'Gilroy';
      src: url('https://atom.st/wp-content/uploads/font/Gilroy-ExtraBold.ttf') format('truetype');
      font-weight: 800;
      font-style: normal;
    }

    body {
      font-family: 'Gilroy', Arial, sans-serif;
      margin: 20px;
    }

    details {
      margin: 20px 0;
    }

    summary {
      font-size: 20px;
      font-weight: 700;
      cursor: pointer;
    }

    h3 {
      font-size: 16px;
      font-weight: 700;
      margin-top: 15px;
      margin-bottom: 5px;
    }

    ul {
      margin: 0 0 10px 20px;
    }
  </style>
</head>
<body>

  <details>
    <summary>Технические характеристики</summary>

    <h3>Каркас и утепление:</h3>
    <ul>
      <li>Обработка нижних досок антисептиком;</li>
      <li>Каркас — доска сухая строганная сосна (45х195);</li>
      <li>Утеплитель — каменная вата Технониколь Роклайт Master (стены — 200мм, потолок — 250мм, м/к перегородки — 150мм);</li>
    </ul>

    <h3>Кровля и цоколь:</h3>
    <ul>
      <li>Крыша — металлочерепица (0,5), RAL 7024 матовая + все доборные элементы;</li>
      <li>Цоколь зашит — профлист волна С8, матовый, RAL 7024;</li>
    </ul>

    <h3>Окна и отделка:</h3>
    <ul>
      <li>Окна — REHAU (5 камер, профиль 70мм), графит/графит;</li>
      <li>Откосы снаружи — дерево с покраской в 2 слоя;</li>
      <li>Отделка снаружи — имитация бруса 180мм Кедр с вертикальным расположением и нанесением декоративного лака в 2 слоя;</li>
      <li>Входная дверь с терморазрывом (производитель — Новосибирск);</li>
      <li>Черновой пол — полусухая стяжка;</li>
      <li>Чистовой пол — ламинат 33 класс (выбран заказчиком);</li>
      <li>Отделка санузлов «под ключ»;</li>
      <li>Террасная доска — лиственница Вельвет с покрытием маслом в 2 слоя;</li>
      <li>Рейки на террасе — окрашены в 2 слоя;</li>
    </ul>

    <h3>Отопление, сантехника, электрика:</h3>
    <ul>
      <li>Электрика — дифавтомат, кабель ВВГнг-LS в гофре, котельная и дом с полной разводкой «под ключ»;</li>
      <li>Сантехника — скрытая разводка воды в стяжке;</li>
      <li>Отопление — электрический котёл Зота, водяной тёплый пол Valtec, дополнительно заведен газовый котёл (сторонний подрядчик);</li>
      <li>Бойлер косвенного нагрева 200л, радиаторы в гостиной;</li>
    </ul>

    <h3>Вентиляция:</h3>
    <ul>
      <li>Приточные клапаны в жилых помещениях;</li>
      <li>Вентиляция в санузлах и котельной (под газ);</li>
    </ul>

    <h3>Технические моменты:</h3>
    <ul>
      <li>Вода — бурение скважины, подключение;</li>
      <li>Септик — переливной, бетонные кольца плюс люк;</li>
      <li>Подключение дома к электричеству под землёй;</li>
      <li>Канализационные трубы утеплены, дополнительно проложен греющий кабель;</li>
    </ul>

    <h3>Дополнительные услуги:</h3>
    <ul>
      <li>Установка датчика от протечки воды;</li>
      <li>Регулировка тёплых полов по контурам (каждая комната со своим термодатчиком);</li>
    </ul>

  </details>

</body>
</html>
</div><hr style="color: #000000;"><h2  class="t-redactor__h2">Видео-обзор дома</h2><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-211076269&id=456240184" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><hr style="color: #000000;"><h2  class="t-redactor__h2">Экстерьер</h2><div class="t-redactor__embedcode"><!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Слайдер</title>
<style>
  body {
    margin: 0;
    font-family: Arial, sans-serif;
    background: #fafafa;
  }

  .slider {
    position: relative;
    max-width: 900px;
    margin: 0 auto;
    overflow: hidden;
    border-radius: 12px;
  }

  .slides {
    display: flex;
    transition: transform 0.5s ease;
  }

  .slides img {
    width: 100%;
    flex-shrink: 0;
    object-fit: cover;
    display: block;
  }

  /* Стрелки */
  .slider__btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(0,0,0,.4);
    border: none;
    color: #fff;
    font-size: 26px;
    cursor: pointer;
    padding: 10px;
    border-radius: 50%;
  }
  .slider__btn:hover { background: rgba(0,0,0,.6); }
  .slider__btn.prev { left: 12px; }
  .slider__btn.next { right: 12px; }

  /* Точки */
  .dots {
    text-align: center;
    margin-top: 12px;
  }
  .dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    margin: 0 6px;
    background: #ccc;
    border-radius: 50%;
    cursor: pointer;
  }
  .dot.active { background: #333; }
</style>
</head>
<body>

<div class="slider" id="slider">
  <div class="slides">
    <img src="https://static.tildacdn.com/tild6662-3339-4064-a638-666234316632/DSC00833.jpg" alt="Фото 1">
    <img src="https://static.tildacdn.com/tild6565-6631-4531-b936-613638626164/DSC00826.jpg" alt="Фото 2">
    <img src="https://static.tildacdn.com/tild3835-3863-4332-b534-666538306364/DSC00811.jpg" alt="Фото 3">
    <img src="https://static.tildacdn.com/tild6532-3533-4365-b263-363731393138/DJI_0768.jpg" alt="Фото 4">
    <img src="https://static.tildacdn.com/tild3833-3162-4564-b435-623463353335/DJI_0759.jpg" alt="Фото 5">
    <img src="https://static.tildacdn.com/tild6665-3063-4161-b363-396162373463/DSC00829.jpg" alt="Фото 6">
  </div>
  <button class="slider__btn prev">⟨</button>
  <button class="slider__btn next">⟩</button>
</div>

<div class="dots" id="dots"></div>

<script>
  const slider = document.getElementById('slider');
  const slides = slider.querySelector('.slides');
  const images = slides.querySelectorAll('img');
  const prevBtn = slider.querySelector('.prev');
  const nextBtn = slider.querySelector('.next');
  const dotsContainer = document.getElementById('dots');

  let index = 0;

  function showSlide(i) {
    if (i < 0) index = images.length - 1;
    else if (i >= images.length) index = 0;
    else index = i;

    slides.style.transform = `translateX(${-index * 100}%)`;

    document.querySelectorAll('.dot').forEach((dot, idx) => {
      dot.classList.toggle('active', idx === index);
    });
  }

  // кнопки
  prevBtn.addEventListener('click', () => showSlide(index - 1));
  nextBtn.addEventListener('click', () => showSlide(index + 1));

  // точки
  images.forEach((_, idx) => {
    const dot = document.createElement('span');
    dot.classList.add('dot');
    if (idx === 0) dot.classList.add('active');
    dot.addEventListener('click', () => showSlide(idx));
    dotsContainer.appendChild(dot);
  });

  // свайп на мобилке
  let startX = 0;
  slider.addEventListener('touchstart', e => startX = e.touches[0].clientX, {passive:true});
  slider.addEventListener('touchend', e => {
    const dx = e.changedTouches[0].clientX - startX;
    if (dx > 50) showSlide(index - 1);
    else if (dx < -50) showSlide(index + 1);
  }, {passive:true});

  showSlide(0);
</script>

</body>
</html></div><hr style="color: #000000;"><h2  class="t-redactor__h2">Интерьер</h2><div class="t-redactor__embedcode"><!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Слайдер</title>
<style>
  body { margin:0; font-family: Arial, sans-serif; background:#fafafa; }

  .slider {
    position: relative;
    max-width: 900px;
    margin: 20px auto;
    overflow: hidden;
    border-radius: 12px;
    background:#000;
  }
  .slides {
    display: flex;
    transition: transform .5s ease;
    will-change: transform;
  }
  .slides img {
    width: 100%;
    flex-shrink: 0;
    object-fit: cover;
    display: block;
  }

  /* Стрелки */
  .slider__btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(0,0,0,.4);
    border: none;
    color: #fff;
    font-size: 26px;
    cursor: pointer;
    padding: 10px;
    border-radius: 50%;
    z-index: 2;
  }
  .slider__btn:hover { background: rgba(0,0,0,.6); }
  .slider__btn.prev { left: 12px; }
  .slider__btn.next { right: 12px; }
</style>
</head>
<body>

<!-- Один слайдер -->
<div class="slider">
  <div class="slides">
    <img src="https://static.tildacdn.com/tild3163-3536-4431-b931-653539633733/DSC00775.jpg" alt="Фото 1">
    <img src="https://static.tildacdn.com/tild3239-3230-4338-b832-316130666464/DSC00760.jpg" alt="Фото 2">
    <img src="https://static.tildacdn.com/tild6162-3566-4839-b563-386135313135/DSC00757.jpg" alt="Фото 3">
    <img src="https://static.tildacdn.com/tild3131-3135-4664-a633-343131336338/DSC00750.jpg" alt="Фото 4">
    <img src="https://static.tildacdn.com/tild6138-6362-4336-b237-393265333432/DSC00748.jpg" alt="Фото 5">
    <img src="https://static.tildacdn.com/tild3635-3762-4665-b634-623063343034/DSC00734.jpg" alt="Фото 6">
    <img src="https://static.tildacdn.com/tild3033-3632-4935-b463-313062393361/DSC00732.jpg" alt="Фото 7">
    <img src="https://static.tildacdn.com/tild3264-3361-4665-b761-666463663630/DSC00726.jpg" alt="Фото 8">
    <img src="https://static.tildacdn.com/tild3633-6561-4639-a564-383936633565/DSC00720.jpg" alt="Фото 9">
    <img src="https://static.tildacdn.com/tild6533-3935-4664-b563-363138366465/DSC00703.jpg" alt="Фото 10">      
  </div>
  <button class="slider__btn prev" type="button">⟨</button>
  <button class="slider__btn next" type="button">⟩</button>
</div>

<script>
(function () {
  const AUTOPLAY = true;
  const INTERVAL_MS = 4000;

  function initSlider(root) {
    const slides = root.querySelector('.slides');
    const images = slides.querySelectorAll('img');
    const prevBtn = root.querySelector('.prev');
    const nextBtn = root.querySelector('.next');

    let index = 0;
    let timer = null;
    let startX = 0;

    function showSlide(i) {
      if (i < 0) index = images.length - 1;
      else if (i >= images.length) index = 0;
      else index = i;
      slides.style.transform = `translateX(${-index * 100}%)`;
    }

    function next() { showSlide(index + 1); }
    function prev() { showSlide(index - 1); }

    function startAutoplay() {
      if (!AUTOPLAY) return;
      stopAutoplay();
      timer = setInterval(next, INTERVAL_MS);
    }
    function stopAutoplay() {
      if (timer) {
        clearInterval(timer);
        timer = null;
      }
    }

    root.addEventListener('touchstart', e => {
      startX = e.touches[0].clientX;
      stopAutoplay();
    }, { passive: true });

    root.addEventListener('touchend', e => {
      const dx = e.changedTouches[0].clientX - startX;
      if (dx > 50) prev();
      else if (dx < -50) next();
      startAutoplay();
    }, { passive: true });

    root.addEventListener('mouseenter', stopAutoplay);
    root.addEventListener('mouseleave', startAutoplay);

    prevBtn.addEventListener('click', () => { prev(); });
    nextBtn.addEventListener('click', () => { next(); });

    const io = new IntersectionObserver((entries) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) startAutoplay();
        else stopAutoplay();
      });
    }, { threshold: 0.2 });
    io.observe(root);

    showSlide(0);
  }

  document.addEventListener('DOMContentLoaded', () => {
    document.querySelectorAll('.slider').forEach(initSlider);
  });
})();
</script>

</body>
</html></div><hr style="color: #000000;"><h2  class="t-redactor__h2">Планировка</h2><div class="t-redactor__embedcode"><!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Слайдер</title>
<style>
  body { margin:0; font-family: Arial, sans-serif; background:#fafafa; }

  .slider {
    position: relative;
    max-width: 900px;
    margin: 20px auto;
    overflow: hidden;
    border-radius: 12px;
    background:#000;
  }
  .slides {
    display: flex;
    transition: transform .5s ease;
    will-change: transform;
  }
  .slides img {
    width: 100%;
    flex-shrink: 0;
    object-fit: cover;
    display: block;
  }

  /* Стрелки */
  .slider__btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(0,0,0,.4);
    border: none;
    color: #fff;
    font-size: 26px;
    cursor: pointer;
    padding: 10px;
    border-radius: 50%;
    z-index: 2;
  }
  .slider__btn:hover { background: rgba(0,0,0,.6); }
  .slider__btn.prev { left: 12px; }
  .slider__btn.next { right: 12px; }
</style>
</head>
<body>

<!-- теперь можно управлять атрибутами -->
<div class="slider" data-autoplay="true" data-interval="3000">
  <div class="slides">
    <img src="https://static.tildacdn.com/tild3838-3333-4933-a537-616466326264/AH7_174____108___138.jpg" alt="Фото 1">
    <img src="https://static.tildacdn.com/tild3931-3464-4934-b433-303539646137/AH7_174____108___138.jpg" alt="Фото 2">
    <img src="https://static.tildacdn.com/tild3662-3964-4566-b331-363035363638/AH7_174____108___138.jpg" alt="Фото 6">
    <img src="https://static.tildacdn.com/tild3964-3736-4839-a137-646233616664/AH7_174____108___138.jpg" alt="Фото 7">
  </div>
  <button class="slider__btn prev" type="button">⟨</button>
  <button class="slider__btn next" type="button">⟩</button>
</div>

<script>
(function () {
  function initSlider(root) {
    const slides = root.querySelector('.slides');
    const images = slides.querySelectorAll('img');
    const prevBtn = root.querySelector('.prev');
    const nextBtn = root.querySelector('.next');

    // читаем настройки из атрибутов
    const AUTOPLAY = root.dataset.autoplay === "true";
    const INTERVAL_MS = parseInt(root.dataset.interval) || 4000;

    let index = 0;
    let timer = null;
    let startX = 0;

    function showSlide(i) {
      if (i < 0) index = images.length - 1;
      else if (i >= images.length) index = 0;
      else index = i;
      slides.style.transform = `translateX(${-index * 100}%)`;
    }

    function next() { showSlide(index + 1); }
    function prev() { showSlide(index - 1); }

    function startAutoplay() {
      if (!AUTOPLAY) return;
      stopAutoplay();
      timer = setInterval(next, INTERVAL_MS);
    }
    function stopAutoplay() {
      if (timer) {
        clearInterval(timer);
        timer = null;
      }
    }

    // свайпы
    root.addEventListener('touchstart', e => {
      startX = e.touches[0].clientX;
      stopAutoplay();
    }, { passive: true });

    root.addEventListener('touchend', e => {
      const dx = e.changedTouches[0].clientX - startX;
      if (dx > 50) prev();
      else if (dx < -50) next();
      startAutoplay();
    }, { passive: true });

    // пауза при наведении
    root.addEventListener('mouseenter', stopAutoplay);
    root.addEventListener('mouseleave', startAutoplay);

    // кнопки
    prevBtn.addEventListener('click', () => { prev(); startAutoplay(); });
    nextBtn.addEventListener('click', () => { next(); startAutoplay(); });

    // автозапуск только когда видно
    const io = new IntersectionObserver((entries) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) startAutoplay();
        else stopAutoplay();
      });
    }, { threshold: 0.2 });
    io.observe(root);

    showSlide(0);
  }

  document.addEventListener('DOMContentLoaded', () => {
    document.querySelectorAll('.slider').forEach(initSlider);
  });
})();
</script>

</body>
</html>
</div>]]></turbo:content>
    </item>
    <item turbo="true">
      <title>Каркасный дом 150 м² в теплом контуре</title>
      <link>https://artonmebel.ru/tpost/nvff6k2rl1-karkasnii-dom-150-m-v-teplom-konture</link>
      <amplink>https://artonmebel.ru/tpost/nvff6k2rl1-karkasnii-dom-150-m-v-teplom-konture?amp=true</amplink>
      <pubDate>Fri, 19 Sep 2025 10:44:00 +0300</pubDate>
      <enclosure url="https://static.tildacdn.com/tild6262-3735-4566-b766-633536643136/__150_2____1.png" type="image/png"/>
      <description>3 комнаты, кухня-гостиная, котельная и большая терраса</description>
      <turbo:content><![CDATA[<header><h1>Каркасный дом 150 м² в теплом контуре</h1></header><figure><img alt="" src="https://static.tildacdn.com/tild6262-3735-4566-b766-633536643136/__150_2____1.png"/></figure><h2  class="t-redactor__h2">О проекте</h2><div class="t-redactor__text">Этот современный дом выполнен в комплектации «Тёплый контур», что означает полностью готовые коммуникации и качественную внешнюю отделку, но без внутренней чистовой отделки — идеальный вариант для тех, кто хочет сделать интерьер по своему вкусу.<br /><br />Внутри дом с просторной гостиной с потолками высотой 4,5 метра, кухней с удобной столешницей у окна, тремя спальнями с высокими окнами и выходом на террасу. Особое внимание уделено современным инженерным решениям: системе водяного отопления, умной системе перекрытия воды при протечках и продуманным техническим коммуникациям.</div><div class="t-redactor__text"><ul><li data-list="bullet"><strong>Срок строительства:</strong> 6 месяцев</li><li data-list="bullet"><strong>Комплектация: </strong>«Теплый контур»</li><li data-list="bullet"><strong>Общая площадь:</strong> 150 м2 по внешнему контуру, жилая 101, м2</li><li data-list="bullet"><strong>Количество комнат:</strong> 3 жилых комнаты + гаредероб</li><li data-list="bullet"><strong>Фундамент:</strong> Ж/Б сваи 150х150</li></ul></div><div class="t-redactor__embedcode"><!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Технические детали проекта</title>
  <style>
    @font-face {
      font-family: 'Gilroy';
      src: url('https://atom.st/wp-content/uploads/font/Gilroy-Regular.ttf') format('truetype');
      font-weight: 400;
      font-style: normal;
    }

    @font-face {
      font-family: 'Gilroy';
      src: url('https://atom.st/wp-content/uploads/font/Gilroy-Medium.ttf') format('truetype');
      font-weight: 500;
      font-style: normal;
    }

    @font-face {
      font-family: 'Gilroy';
      src: url('https://atom.st/wp-content/uploads/font/Gilroy-Bold.ttf') format('truetype');
      font-weight: 700;
      font-style: normal;
    }

    @font-face {
      font-family: 'Gilroy';
      src: url('https://atom.st/wp-content/uploads/font/Gilroy-ExtraBold.ttf') format('truetype');
      font-weight: 800;
      font-style: normal;
    }

    body {
      font-family: 'Gilroy', Arial, sans-serif;
      margin: 20px;
    }

    details {
      margin: 20px 0;
    }

    summary {
      font-size: 20px;
      font-weight: 700;
      cursor: pointer;
    }

    h3 {
      font-size: 16px;
      font-weight: 700;
      margin-top: 15px;
      margin-bottom: 5px;
    }

    ul {
      margin: 0 0 10px 20px;
    }
  </style>
</head>
<body>

  <details>
    <summary>Технические характеристики</summary>

    <h3>Каркас и утепление:</h3>
    <ul>
      <li>Обработка нижних досок антисептиком;</li>
      <li>Каркас — доска сухая строганная сосна (45х195);</li>
      <li>Утеплитель — каменная вата Технониколь Роклайт Master (стены — 200мм, потолок — 250мм, м/к перегородки — 150мм);</li>
    </ul>

    <h3>Кровля и цоколь:</h3>
    <ul>
      <li>Крыша — металлочерепица (0,5), RAL 7024 матовая + все доборные элементы;</li>
      <li>Цоколь зашит — профлист волна С8, матовый, RAL 7024;</li>
    </ul>

    <h3>Окна и отделка:</h3>
    <ul>
      <li>Окна — REHAU (5 камер, профиль 70мм), графит/графит со шпросами;</li>
      <li>Откосы снаружи — дерево с покраской в 2 слоя;</li>
      <li>Отделка снаружи — имитация бруса 180мм Кедр с горизонтальным расположением и покраской в 2 слоя;</li>
      <li>Входная дверь с терморазрывом (производитель — Новосибирск);</li>
      <li>Черновой пол — полусухая стяжка;</li>
      <li>Террасная доска — лиственница Вельвет с покрытием маслом в 2 слоя;</li>
      <li>Рейки на террасе — окрашены в 2 слоя;</li>
    </ul>

    <h3>Отопление, сантехника, электрика:</h3>
    <ul>
      <li>Электрика — дифавтомат, кабель ВВГнг-LS в гофре; котельная с полной разводкой «под ключ» (по дому разводка не осуществлялась);</li>
      <li>Сантехника — скрытая разводка воды в стяжке;</li>
      <li>Отопление — электрический котёл Зота, водяной тёплый пол Valtec; дополнительно заведен газовый котёл (сторонний подрядчик);</li>
      <li>Бойлер косвенного нагрева 200л, радиаторы в гостиной;</li>
    </ul>

    <h3>Технические моменты:</h3>
    <ul>
      <li>Вода — бурение скважины, подключение к скважине;</li>
      <li>Септик — переливной, бетонные кольца плюс люк;</li>
      <li>Подключение дома к электричеству под землёй;</li>
      <li>Канализационные трубы утеплены, дополнительно проложен греющий кабель;</li>
    </ul>

    <h3>Дополнительные услуги:</h3>
    <ul>
      <li>Установка датчика от протечки воды;</li>
      <li>Монтаж усиленного тёплого контура под окнами (для отсечки холода и предотвращения конденсата);</li>
    </ul>

  </details>

</body>
</html>
</div><hr style="color: #000000;"><h2  class="t-redactor__h2">Видео-обзор дома</h2><iframe width="100%" height="100%" src="https://vk.com/video_ext.php?oid=-211076269&id=456240204" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe><hr style="color: #000000;"><h2  class="t-redactor__h2">Экстерьер</h2><div class="t-redactor__embedcode"><!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Слайдер</title>
<style>
  body {
    margin: 0;
    font-family: Arial, sans-serif;
    background: #fafafa;
  }

  .slider {
    position: relative;
    max-width: 900px;
    margin: 0 auto;
    overflow: hidden;
    border-radius: 12px;
  }

  .slides {
    display: flex;
    transition: transform 0.5s ease;
  }

  .slides img {
    width: 100%;
    flex-shrink: 0;
    object-fit: cover;
    display: block;
  }

  /* Стрелки */
  .slider__btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(0,0,0,.4);
    border: none;
    color: #fff;
    font-size: 26px;
    cursor: pointer;
    padding: 10px;
    border-radius: 50%;
  }
  .slider__btn:hover { background: rgba(0,0,0,.6); }
  .slider__btn.prev { left: 12px; }
  .slider__btn.next { right: 12px; }

  /* Точки */
  .dots {
    text-align: center;
    margin-top: 12px;
  }
  .dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    margin: 0 6px;
    background: #ccc;
    border-radius: 50%;
    cursor: pointer;
  }
  .dot.active { background: #333; }
</style>
</head>
<body>

<!-- Слайдер с автоплеем -->
<div class="slider" id="slider" data-autoplay="true" data-interval="4000">
  <div class="slides">
    <img src="https://static.tildacdn.com/tild3764-3435-4266-a238-313138663165/DSC00892.jpg" alt="Фото 1">
    <img src="https://static.tildacdn.com/tild3263-3731-4364-b636-633662303631/DSC00949.jpg" alt="Фото 2">
    <img src="https://static.tildacdn.com/tild3031-3034-4339-a361-326566623366/DSC00910.jpg" alt="Фото 3">
    <img src="https://static.tildacdn.com/tild3566-6132-4334-b866-306465623339/DSC00896.jpg" alt="Фото 4">
    <img src="https://static.tildacdn.com/tild3937-3630-4166-b938-623331666333/DSC00882.jpg" alt="Фото 5">
    <img src="https://static.tildacdn.com/tild6134-3431-4537-b139-333732323366/DJI_0790.jpg" alt="Фото 6">
    <img src="https://static.tildacdn.com/tild3131-6331-4335-b663-623131313434/DJI_0778.jpg" alt="Фото 7">
    <img src="https://static.tildacdn.com/tild3137-3737-4038-a164-373939336661/DJI_0776.jpg" alt="Фото 8">
    <img src="https://static.tildacdn.com/tild6361-3161-4366-a664-653131653364/DJI_0785.jpg" alt="Фото 9">
  </div>
  <button class="slider__btn prev">⟨</button>
  <button class="slider__btn next">⟩</button>
</div>

<div class="dots" id="dots"></div>

<script>
  const slider = document.getElementById('slider');
  const slides = slider.querySelector('.slides');
  const images = slides.querySelectorAll('img');
  const prevBtn = slider.querySelector('.prev');
  const nextBtn = slider.querySelector('.next');
  const dotsContainer = document.getElementById('dots');

  // настройки
  const AUTOPLAY = slider.dataset.autoplay === "true";
  const INTERVAL_MS = parseInt(slider.dataset.interval) || 4000;

  let index = 0;
  let timer = null;

  function showSlide(i) {
    if (i < 0) index = images.length - 1;
    else if (i >= images.length) index = 0;
    else index = i;

    slides.style.transform = `translateX(${-index * 100}%)`;

    document.querySelectorAll('.dot').forEach((dot, idx) => {
      dot.classList.toggle('active', idx === index);
    });
  }

  function nextSlide() { showSlide(index + 1); }
  function prevSlide() { showSlide(index - 1); }

  function startAutoplay() {
    if (!AUTOPLAY) return;
    stopAutoplay();
    timer = setInterval(nextSlide, INTERVAL_MS);
  }
  function stopAutoplay() {
    if (timer) {
      clearInterval(timer);
      timer = null;
    }
  }

  // кнопки
  prevBtn.addEventListener('click', () => { prevSlide(); startAutoplay(); });
  nextBtn.addEventListener('click', () => { nextSlide(); startAutoplay(); });

  // точки
  images.forEach((_, idx) => {
    const dot = document.createElement('span');
    dot.classList.add('dot');
    if (idx === 0) dot.classList.add('active');
    dot.addEventListener('click', () => {
      showSlide(idx);
      startAutoplay();
    });
    dotsContainer.appendChild(dot);
  });

  // свайп на мобилке
  let startX = 0;
  slider.addEventListener('touchstart', e => {
    startX = e.touches[0].clientX;
    stopAutoplay();
  }, {passive:true});
  slider.addEventListener('touchend', e => {
    const dx = e.changedTouches[0].clientX - startX;
    if (dx > 50) prevSlide();
    else if (dx < -50) nextSlide();
    startAutoplay();
  }, {passive:true});

  // пауза при наведении
  slider.addEventListener('mouseenter', stopAutoplay);
  slider.addEventListener('mouseleave', startAutoplay);

  // запуск
  showSlide(0);
  startAutoplay();
</script>

</body>
</html>
</div><hr style="color: #000000;"><h2  class="t-redactor__h2">Планировка</h2><div class="t-redactor__embedcode"><!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Слайдер</title>
<style>
  body { margin:0; font-family: Arial, sans-serif; background:#fafafa; }

  .slider {
    position: relative;
    max-width: 900px;
    margin: 20px auto;
    overflow: hidden;
    border-radius: 12px;
    background:#000;
  }
  .slides {
    display: flex;
    transition: transform .5s ease;
    will-change: transform;
  }
  .slides img {
    width: 100%;
    flex-shrink: 0;
    object-fit: cover;
    display: block;
  }

  /* Стрелки */
  .slider__btn {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(0,0,0,.4);
    border: none;
    color: #fff;
    font-size: 26px;
    cursor: pointer;
    padding: 10px;
    border-radius: 50%;
    z-index: 2;
  }
  .slider__btn:hover { background: rgba(0,0,0,.6); }
  .slider__btn.prev { left: 12px; }
  .slider__btn.next { right: 12px; }
</style>
</head>
<body>

<!-- теперь можно управлять атрибутами -->
<div class="slider" data-autoplay="true" data-interval="3000">
  <div class="slides">
    <img src="https://static.tildacdn.com/tild3962-3563-4339-a661-616662616464/1.jpg" alt="Фото 1">
    <img src="https://static.tildacdn.com/tild6566-3830-4263-b033-343064373235/2.jpg" alt="Фото 2">
    <img src="https://static.tildacdn.com/tild6635-3130-4562-b165-663537326265/5.jpg" alt="Фото 5">
    <img src="https://static.tildacdn.com/tild3238-3964-4137-a139-316638663136/6.jpg" alt="Фото 6">
  </div>
  <button class="slider__btn prev" type="button">⟨</button>
  <button class="slider__btn next" type="button">⟩</button>
</div>

<script>
(function () {
  function initSlider(root) {
    const slides = root.querySelector('.slides');
    const images = slides.querySelectorAll('img');
    const prevBtn = root.querySelector('.prev');
    const nextBtn = root.querySelector('.next');

    // читаем настройки из атрибутов
    const AUTOPLAY = root.dataset.autoplay === "true";
    const INTERVAL_MS = parseInt(root.dataset.interval) || 4000;

    let index = 0;
    let timer = null;
    let startX = 0;

    function showSlide(i) {
      if (i < 0) index = images.length - 1;
      else if (i >= images.length) index = 0;
      else index = i;
      slides.style.transform = `translateX(${-index * 100}%)`;
    }

    function next() { showSlide(index + 1); }
    function prev() { showSlide(index - 1); }

    function startAutoplay() {
      if (!AUTOPLAY) return;
      stopAutoplay();
      timer = setInterval(next, INTERVAL_MS);
    }
    function stopAutoplay() {
      if (timer) {
        clearInterval(timer);
        timer = null;
      }
    }

    // свайпы
    root.addEventListener('touchstart', e => {
      startX = e.touches[0].clientX;
      stopAutoplay();
    }, { passive: true });

    root.addEventListener('touchend', e => {
      const dx = e.changedTouches[0].clientX - startX;
      if (dx > 50) prev();
      else if (dx < -50) next();
      startAutoplay();
    }, { passive: true });

    // пауза при наведении
    root.addEventListener('mouseenter', stopAutoplay);
    root.addEventListener('mouseleave', startAutoplay);

    // кнопки
    prevBtn.addEventListener('click', () => { prev(); startAutoplay(); });
    nextBtn.addEventListener('click', () => { next(); startAutoplay(); });

    // автозапуск только когда видно
    const io = new IntersectionObserver((entries) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) startAutoplay();
        else stopAutoplay();
      });
    }, { threshold: 0.2 });
    io.observe(root);

    showSlide(0);
  }

  document.addEventListener('DOMContentLoaded', () => {
    document.querySelectorAll('.slider').forEach(initSlider);
  });
})();
</script>

</body>
</html>
</div>]]></turbo:content>
    </item>
  </channel>
</rss>
