<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="https://www.pandoraburo.ru/" xml:lang="ru">
  <id>https://www.pandoraburo.ru/drosselnye-shayby-prays</id>
  <link href="https://www.pandoraburo.ru/drosselnye-shayby-prays.xml" rel="self"/>
  <title>Дроссельные шайбы Прайс</title>
  <subtitle type="html">
&lt;html lang="ru"&gt;
&lt;head&gt;
&lt;meta charset="UTF-8"&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt;
&lt;title&gt;Дроссельные шайбы — прайс-лист&lt;/title&gt;
&lt;style&gt;
  :root{
    --bg:#0a0a0a; --bg2:#111111; --line:#d4af37;
    --gold:#d4af37; --goldB:#f0d060; --goldD:#8a7020;
    --red:#e74c3c; --green:#39ff14;
  }
  *{box-sizing:border-box;margin:0;padding:0}
  body{
    font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;
    background:var(--bg); color:var(--gold); line-height:1.5; padding:20px 14px;
  }
  ::selection{background:var(--gold);color:#000}
  .wrap{max-width:1200px;margin:0 auto}

  /* БЕГУЩАЯ СТРОКА */
  .ticker-block{
    display:flex;align-items:stretch;background:var(--bg);
    border:1px solid var(--line);border-radius:8px;overflow:hidden;
    margin-bottom:14px;height:44px;
  }
  .ticker-label{
    background:var(--gold);color:#0a0a0a;font-weight:800;
    font-size:12px;letter-spacing:1.5px;padding:0 16px;
    display:flex;align-items:center;white-space:nowrap;
  }
  .ticker-viewport{flex:1;overflow:hidden;position:relative}
  .ticker-track{
    display:inline-flex;align-items:center;height:100%;
    white-space:nowrap;animation:tickerScroll 40s linear infinite;
    padding-left:20px;
  }
  .ticker-item{color:var(--gold);font-size:13px;padding:0 10px;letter-spacing:.3px}
  .ticker-item b{color:var(--goldB);font-weight:700}
  .ticker-dot{color:var(--gold);font-size:10px}
  @keyframes tickerScroll{
    0%{transform:translateX(0)}
    100%{transform:translateX(-50%)}
  }

  /* ШАПКА */
  header{
    background:var(--bg);border:1px solid var(--line);border-radius:12px;
    padding:30px 25px;text-align:center;margin-bottom:14px;
  }
  .banner-tag{
    display:inline-block;background:var(--gold);color:#0a0a0a;
    font-size:11px;font-weight:800;letter-spacing:2px;padding:4px 14px;
    border-radius:999px;margin-bottom:14px;
  }
  header h1{
    margin:0 0 12px;font-size:28px;color:var(--gold);
    text-transform:uppercase;letter-spacing:3px;font-weight:800;
  }
  .banner-line{
    width:60px;height:2px;background:var(--gold);
    margin:0 auto 14px;
  }
  header p{margin:0;color:var(--gold);font-size:15px;opacity:.9}

  /* СТАТИСТИКА */
  .stats{
    display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px;
  }
  @media(max-width:800px){.stats{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:500px){.stats{grid-template-columns:1fr}}
  .stat-card{
    background:var(--bg);border:1px solid var(--line);border-radius:12px;
    padding:16px;text-align:center;
  }
  .stat-card .lbl{
    font-size:10px;font-weight:700;letter-spacing:1px;
    text-transform:uppercase;color:var(--gold);opacity:.7;margin-bottom:6px;
  }
  .stat-card .val{
    font-size:22px;font-weight:800;color:var(--goldB);line-height:1.1;
  }
  .stat-card .val.small{font-size:16px}

  /* ТУЛБАР */
  .promo-toolbar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
  .promo-btn{
    display:inline-flex;align-items:center;gap:6px;padding:10px 16px;
    border-radius:9px;border:1px solid var(--gold);background:transparent;
    color:var(--gold);font-size:13px;font-weight:700;cursor:pointer;
    transition:.15s;font-family:inherit;letter-spacing:.3px;
  }
  .promo-btn:hover{background:var(--gold);color:#0a0a0a}
  .promo-btn.primary{background:var(--gold);color:#0a0a0a}
  .promo-btn.primary:hover{background:var(--goldB)}

  /* ПОИСК */
  .promo-search{
    background:var(--bg);border:1px solid var(--line);border-radius:12px;
    padding:16px;margin-bottom:14px;display:grid;
    grid-template-columns:1fr auto;gap:12px;align-items:end;
  }
  @media(max-width:600px){.promo-search{grid-template-columns:1fr}}
  .promo-search input{
    width:100%;padding:12px 14px;border:1px solid var(--line);
    border-radius:9px;font-size:14px;background:var(--bg);color:var(--gold);
    outline:none;font-family:inherit;
  }
  .promo-search input::placeholder{color:rgba(212,175,55,.4)}
  .promo-search input:focus{box-shadow:0 0 0 3px rgba(212,175,55,.2)}
  .promo-counter{
    color:var(--gold);font-size:13px;white-space:nowrap;
    padding:12px 14px;border:1px solid var(--line);border-radius:9px;
    background:var(--bg);font-weight:700;
  }

  /* ТАБЛИЦА */
  .table-block{
    background:var(--bg);border:1px solid var(--line);border-radius:12px;
    padding:20px;margin-bottom:14px;
  }
  .block-title{
    color:var(--gold);font-size:12px;font-weight:800;letter-spacing:2px;
    text-align:center;margin-bottom:16px;padding-bottom:12px;
    border-bottom:1px solid var(--line);
  }
  .table-wrapper{
    overflow:auto;max-height:70vh;border-radius:8px;
    border:1px solid var(--line);
  }
  .price-table{
    width:100%;border-collapse:collapse;background:var(--bg);
    min-width:600px;font-size:14px;
  }
  .price-table th,.price-table td{
    padding:14px 16px;text-align:left;
    border-bottom:1px solid rgba(212,175,55,.25);
    vertical-align:middle;color:var(--gold);
  }
  .price-table th{
    position:sticky;top:0;z-index:2;background:var(--bg);color:var(--gold);
    font-weight:800;text-transform:uppercase;font-size:11px;
    letter-spacing:1px;white-space:nowrap;
    border-bottom:1px solid var(--gold);cursor:pointer;user-select:none;
    transition:.15s;
  }
  .price-table th:hover{background:#1a1408}
  .price-table th.sortable::after{content:' ⇅';opacity:.5;margin-left:4px}
  .price-table th.asc::after{content:' ▲';opacity:1;color:var(--goldB)}
  .price-table th.desc::after{content:' ▼';opacity:1;color:var(--goldB)}
  .price-table th.num,.price-table td.num{
    text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;
  }
  .price-table tbody tr{transition:background .15s, box-shadow .15s}
  .price-table tbody tr:hover{
    background:#1a1408;
    box-shadow:inset 4px 0 0 var(--goldB), inset -4px 0 0 var(--goldB);
  }
  .price-table td.price{font-weight:800;color:var(--goldB);font-size:16px}
  .price-table .stock-badge{
    display:inline-block;padding:3px 10px;border-radius:20px;
    font-size:12px;font-weight:800;
    background:rgba(212,175,55,.15);color:var(--goldB);
    border:1px solid rgba(212,175,55,.5);
  }
  .price-table .stock-badge.zero{
    background:rgba(231,76,60,.15);color:#ff8a7a;
    border-color:rgba(231,76,60,.4);
  }
  .price-table .stock-badge.many{
    background:rgba(57,255,20,.08);color:#b9ff9f;
    border-color:rgba(57,255,20,.3);
  }

  .table-footnote{
    display:flex;flex-wrap:wrap;gap:20px;margin-top:14px;
    padding-top:12px;border-top:1px solid var(--line);
  }
  .footnote-item{
    color:var(--gold);font-size:12px;position:relative;
    padding-left:14px;opacity:.85;
  }
  .footnote-item::before{
    content:"◆";position:absolute;left:0;color:var(--gold);
    font-size:8px;top:4px;
  }

  /* КОНТАКТЫ */
  .cta-section{
    text-align:center;background:var(--bg);border:1px solid var(--gold);
    border-radius:12px;padding:28px 20px;margin-top:14px;
  }
  .cta-text{font-size:16px;font-weight:600;color:var(--gold);margin:0 0 16px}
  .cta-button{
    display:inline-block;background:var(--gold);color:#0a0a0a !important;
    text-decoration:none;padding:16px 40px;font-size:20px;font-weight:800;
    letter-spacing:1px;border-radius:999px;transition:.25s;
  }
  .cta-button:hover{background:var(--goldB);transform:scale(1.03)}
  .manager-info{margin:16px 0 0;font-size:13px;color:var(--gold);opacity:.8}

  /* SEO */
  .seo-text{
    position:absolute;width:1px;height:1px;padding:0;margin:-1px;
    overflow:hidden;clip:rect(0,0,0,0);border:0;
  }

  /* ОГНЕННЫЕ ПОЛЗУНКИ */
  ::-webkit-scrollbar{width:18px;height:18px}
  ::-webkit-scrollbar-track{
    background:#050505;border:1px solid #2a2210;border-radius:9px;
    box-shadow:inset 0 0 12px rgba(212,175,55,.2);
  }
  ::-webkit-scrollbar-thumb{
    background:linear-gradient(180deg,#ffffcc 0%,#ffd700 15%,#ff8c00 35%,#d4af37 50%,#ff8c00 65%,#ffd700 85%,#ffffcc 100%);
    border:1px solid #ffd700;border-radius:9px;
    box-shadow:0 0 10px rgba(255,215,0,.9),0 0 20px rgba(255,140,0,.7),
      0 0 30px rgba(255,80,0,.4),inset 0 0 8px rgba(255,255,255,.5);
    background-size:100% 200%;animation:fireFlow 2.5s linear infinite;
  }
  ::-webkit-scrollbar-thumb:hover{
    background:linear-gradient(180deg,#ffffff 0%,#ffffcc 20%,#ffd700 40%,#ff8c00 60%,#ffd700 80%,#ffffff 100%);
    box-shadow:0 0 18px rgba(255,215,0,1),0 0 36px rgba(255,140,0,.9),
      0 0 54px rgba(255,80,0,.6),inset 0 0 12px rgba(255,255,255,.8);
  }
  ::-webkit-scrollbar-button:single-button{
    background-color:#0a0a0a;display:block;background-size:12px;
    background-repeat:no-repeat;background-position:center;
    border:1px solid #3a2f10;border-radius:8px;height:18px;width:18px;
    box-shadow:inset 0 0 6px rgba(212,175,55,.4);transition:.2s;
  }
  ::-webkit-scrollbar-button:single-button:hover{
    background-color:#1a0e08;border-color:#ffd700;
    box-shadow:0 0 12px rgba(255,215,0,.9),inset 0 0 8px rgba(255,140,0,.5);
  }
  ::-webkit-scrollbar-button:single-button:vertical:decrement{
    background-image:url("data:image/svg+xml;utf8,&lt;svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'&gt;&lt;path d='M8 3 L13 11 L3 11 Z' fill='%23ffd700' stroke='%23ff5500' stroke-width='0.8'/&gt;&lt;/svg&gt;");
  }
  ::-webkit-scrollbar-button:single-button:vertical:increment{
    background-image:url("data:image/svg+xml;utf8,&lt;svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'&gt;&lt;path d='M8 13 L3 5 L13 5 Z' fill='%23ffd700' stroke='%23ff5500' stroke-width='0.8'/&gt;&lt;/svg&gt;");
  }
  @keyframes fireFlow{
    0%{background-position:0% 0%}
    100%{background-position:0% 200%}
  }
  *{scrollbar-width:thin;scrollbar-color:#ffd700 #0a0a0a}

  /* АДАПТИВ */
  @media(max-width:700px){
    body{padding:12px 10px}
    header h1{font-size:20px;letter-spacing:1.5px}
    .price-table th,.price-table td{padding:10px 12px;font-size:13px}
    .cta-button{width:100%;padding:16px 10px;font-size:17px}
    .ticker-item{font-size:12px}
  }

  /* ПЕЧАТЬ */
  @media print{
    body{background:#fff;color:#000;padding:0}
    .ticker-block,.promo-toolbar,.promo-search{display:none !important}
    header{
      background:#000 !important;color:#ffd700 !important;
      border-color:#000 !important;
      -webkit-print-color-adjust:exact;print-color-adjust:exact;
    }
    header h1{color:#ffd700 !important}
    header p{color:#ffd700 !important}
    .banner-tag{background:#ffd700 !important;color:#000 !important;
      -webkit-print-color-adjust:exact;print-color-adjust:exact;}
    .banner-line{background:#ffd700 !important}
    .stats,.table-block{background:#fff !important;border:1px solid #999 !important}
    .stat-card .val{color:#000 !important}
    .block-title{color:#000 !important;border-color:#999 !important}
    .table-wrapper{max-height:none;overflow:visible;border-color:#999}
    .price-table{min-width:auto;font-size:12px}
    .price-table th{
      background:#000 !important;color:#ffd700 !important;
      -webkit-print-color-adjust:exact;print-color-adjust:exact;
    }
    .price-table td{color:#000 !important;border-bottom:1px solid #ccc !important}
    .price-table td.price{color:#000 !important}
    .stock-badge{-webkit-print-color-adjust:exact;print-color-adjust:exact}
    .table-footnote{border-color:#999}
    .footnote-item{color:#666 !important}
    .footnote-item::before{color:#666 !important}
    .cta-section{background:#fff !important;border-color:#999 !important}
    .cta-text{color:#000 !important}
    .cta-button{background:#000 !important;color:#fff !important;
      -webkit-print-color-adjust:exact;print-color-adjust:exact;}
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class="wrap"&gt;

  
  &lt;div class="ticker-block"&gt;
    &lt;div class="ticker-label"&gt;ЦЕНЫ&lt;/div&gt;
    &lt;div class="ticker-viewport"&gt;
      &lt;div class="ticker-track"&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø40 — &lt;b&gt;1 440 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø60 — &lt;b&gt;1 440 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø80 — &lt;b&gt;1 620 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø100 — &lt;b&gt;1 920 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø120 — &lt;b&gt;1 920 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø180 — &lt;b&gt;2 220 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø200 — &lt;b&gt;2 220 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø260 — &lt;b&gt;2 520 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Сталь 3 · толщина 3 мм · НДС 20%&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø40 — &lt;b&gt;1 440 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø60 — &lt;b&gt;1 440 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø80 — &lt;b&gt;1 620 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø100 — &lt;b&gt;1 920 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø120 — &lt;b&gt;1 920 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø180 — &lt;b&gt;2 220 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø200 — &lt;b&gt;2 220 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Шайба Ø260 — &lt;b&gt;2 520 ₽&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Сталь 3 · толщина 3 мм · НДС 20%&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  
  &lt;header&gt;
    &lt;div class="banner-tag"&gt;ПРАЙС-ЛИСТ&lt;/div&gt;
    &lt;h1&gt;Дроссельные шайбы&lt;/h1&gt;
    &lt;div class="banner-line"&gt;&lt;/div&gt;
    &lt;p&gt;Сталь 3 · Толщина 3 мм · НДС 20% · Наличие на складе&lt;/p&gt;
  &lt;/header&gt;

  
  &lt;div class="stats"&gt;
    &lt;div class="stat-card"&gt;
      &lt;div class="lbl"&gt;Всего позиций&lt;/div&gt;
      &lt;div class="val" id="statTotal"&gt;14&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="stat-card"&gt;
      &lt;div class="lbl"&gt;Всего на складе&lt;/div&gt;
      &lt;div class="val" id="statStock"&gt;147 шт&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="stat-card"&gt;
      &lt;div class="lbl"&gt;Диапазон Ø&lt;/div&gt;
      &lt;div class="val small"&gt;40–260 мм&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="stat-card"&gt;
      &lt;div class="lbl"&gt;Цена от&lt;/div&gt;
      &lt;div class="val small"&gt;1 440 ₽&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  
  &lt;div class="promo-toolbar"&gt;
    &lt;button class="promo-btn primary" onclick="downloadCSV()"&gt;⬇ Скачать CSV&lt;/button&gt;
    &lt;button class="promo-btn primary" onclick="downloadExcel()"&gt;⬇ Скачать Excel&lt;/button&gt;
    &lt;button class="promo-btn" onclick="window.print()"&gt;? Печать / PDF&lt;/button&gt;
    &lt;button class="promo-btn" onclick="resetAll()"&gt;✕ Сбросить&lt;/button&gt;
  &lt;/div&gt;

  
  &lt;div class="promo-search"&gt;
    &lt;input type="text" id="search" placeholder="Поиск по диаметру…" /&gt;
    &lt;div class="promo-counter" id="counter"&gt;Найдено: 14&lt;/div&gt;
  &lt;/div&gt;

  
  &lt;div class="table-block"&gt;
    &lt;div class="block-title"&gt;НАЛИЧИЕ И ЦЕНЫ&lt;/div&gt;
    &lt;div class="table-wrapper"&gt;
      &lt;table class="price-table" id="table"&gt;
        &lt;thead&gt;
          &lt;tr&gt;
            &lt;th class="sortable num" data-key="diam"&gt;Ø, мм&lt;/th&gt;
            &lt;th class="sortable num" data-key="thk"&gt;Толщина, мм&lt;/th&gt;
            &lt;th class="sortable num" data-key="stock"&gt;Наличие, шт&lt;/th&gt;
            &lt;th class="sortable num" data-key="price"&gt;Цена с НДС, ₽&lt;/th&gt;
            &lt;th class="sortable" data-key="term"&gt;Сроки&lt;/th&gt;
          &lt;/tr&gt;
        &lt;/thead&gt;
        &lt;tbody id="body"&gt;&lt;/tbody&gt;
      &lt;/table&gt;
    &lt;/div&gt;
    &lt;div class="table-footnote"&gt;
      &lt;div class="footnote-item"&gt;Материал: Сталь 3&lt;/div&gt;
      &lt;div class="footnote-item"&gt;НДС 20% включён в цену&lt;/div&gt;
      &lt;div class="footnote-item"&gt;Сверление отверстий — по запросу&lt;/div&gt;
      &lt;div class="footnote-item"&gt;Отгрузка со склада&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  
  &lt;div class="cta-section"&gt;
    &lt;p class="cta-text"&gt;Уточнить наличие и оформить заказ&lt;/p&gt;
    &lt;a href="tel:+79028733690" class="cta-button"&gt;8 (902) 873-36-90&lt;/a&gt;
    &lt;p class="manager-info"&gt;Менеджер: Ольга · ООО «Арсенал Деталь»&lt;/p&gt;
  &lt;/div&gt;

  
  &lt;div class="seo-text"&gt;
    &lt;p&gt;Дроссельные шайбы из стали 3, толщина 3 мм. Наружный диаметр 40–260 мм. Наличие на складе. Цены с НДС 20%. Шайбы дроссельные для отопления. Купить оптом и в розницу. Отгрузка со склада.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
/* ==================== ДАННЫЕ ==================== */
const DATA = [
  {diam: 40,  thk: 3, stock: 7,  price: 1440, term: 'Со склада'},
  {diam: 50,  thk: 3, stock: 11, price: 1440, term: 'Со склада'},
  {diam: 60,  thk: 3, stock: 10, price: 1440, term: 'Со склада'},
  {diam: 70,  thk: 3, stock: 11, price: 1620, term: 'Со склада'},
  {diam: 80,  thk: 3, stock: 14, price: 1620, term: 'Со склада'},
  {diam: 90,  thk: 3, stock: 19, price: 1620, term: 'Со склада'},
  {diam: 100, thk: 3, stock: 44, price: 1920, term: 'Со склада'},
  {diam: 110, thk: 3, stock: 10, price: 1920, term: 'Со склада'},
  {diam: 115, thk: 3, stock: 2,  price: 1920, term: 'Со склада'},
  {diam: 120, thk: 3, stock: 9,  price: 1920, term: 'Со склада'},
  {diam: 125, thk: 3, stock: 2,  price: 1920, term: 'Со склада'},
  {diam: 180, thk: 3, stock: 6,  price: 2220, term: 'Со склада'},
  {diam: 200, thk: 3, stock: 8,  price: 2220, term: 'Со склада'},
  {diam: 260, thk: 3, stock: 2,  price: 2520, term: 'Со склада'}
];

/* ==================== СОСТОЯНИЕ ==================== */
let state = { search: '', sort: {key: null, dir: 1} };

/* ==================== УТИЛИТЫ ==================== */
const fmt = n =&gt; n.toLocaleString('ru-RU');

function getFiltered() {
  let rows = DATA.slice();
  if (state.search) {
    const q = state.search.toLowerCase();
    rows = rows.filter(r =&gt;
      String(r.diam).includes(q) ||
      String(r.thk).includes(q) ||
      r.term.toLowerCase().includes(q)
    );
  }
  if (state.sort.key) {
    const k = state.sort.key, d = state.sort.dir;
    rows.sort((a, b) =&gt; {
      const va = a[k], vb = b[k];
      if (typeof va === 'number' &amp;&amp; typeof vb === 'number') return (va - vb) * d;
      return String(va).localeCompare(String(vb), 'ru') * d;
    });
  }
  return rows;
}

/* ==================== РЕНДЕР ==================== */
function render() {
  const rows = getFiltered();
  const tbody = document.getElementById('body');
  tbody.innerHTML = '';

  if (!rows.length) {
    const tr = document.createElement('tr');
    tr.innerHTML = `&lt;td colspan="5" style="text-align:center;padding:40px;opacity:.6"&gt;Ничего не найдено&lt;/td&gt;`;
    tbody.appendChild(tr);
    document.getElementById('counter').textContent = 'Найдено: 0';
    return;
  }

  rows.forEach(r =&gt; {
    const badgeCls = r.stock &gt;= 20 ? 'stock-badge many'
                   : r.stock === 0 ? 'stock-badge zero'
                   : 'stock-badge';
    const tr = document.createElement('tr');
    tr.innerHTML = `
      &lt;td class="num"&gt;&lt;b&gt;${r.diam}&lt;/b&gt;&lt;/td&gt;
      &lt;td class="num"&gt;${r.thk}&lt;/td&gt;
      &lt;td class="num"&gt;&lt;span class="${badgeCls}"&gt;${r.stock} шт&lt;/span&gt;&lt;/td&gt;
      &lt;td class="num price"&gt;${fmt(r.price)}&lt;/td&gt;
      &lt;td&gt;${r.term}&lt;/td&gt;
    `;
    tbody.appendChild(tr);
  });

  document.getElementById('counter').textContent = 'Найдено: ' + rows.length;
  updateSortIndicators();
}

function updateSortIndicators() {
  document.querySelectorAll('#table th.sortable').forEach(th =&gt; {
    th.classList.remove('asc','desc');
    if (th.dataset.key === state.sort.key) {
      th.classList.add(state.sort.dir === 1 ? 'asc' : 'desc');
    }
  });
}

/* ==================== СОБЫТИЯ ==================== */
document.getElementById('search').addEventListener('input', e =&gt; {
  state.search = e.target.value.trim();
  render();
});

document.querySelectorAll('#table th.sortable').forEach(th =&gt; {
  th.addEventListener('click', () =&gt; {
    const k = th.dataset.key;
    if (state.sort.key === k) state.sort.dir *= -1;
    else state.sort = {key: k, dir: 1};
    render();
  });
});

function resetAll() {
  state = {search: '', sort: {key: null, dir: 1}};
  document.getElementById('search').value = '';
  render();
}

/* ==================== ЭКСПОРТ CSV ==================== */
function downloadCSV() {
  const rows = getFiltered();
  const header = ['Ø, мм','Толщина, мм','Наличие, шт','Цена с НДС, ₽','Сроки'];
  const body = rows.map(r =&gt; [r.diam, r.thk, r.stock, r.price, r.term]);
  const esc = v =&gt; `"${String(v).replace(/"/g,'""')}"`;
  const csv = [header, ...body].map(r =&gt; r.map(esc).join(';')).join('\r\n');
  downloadBlob(new Blob(['\uFEFF' + csv], {type:'text/csv;charset=utf-8;'}),
               'drosselnye_shayby_' + today() + '.csv');
}

/* ==================== ЭКСПОРТ EXCEL ==================== */
function downloadExcel() {
  const rows = getFiltered();
  const header = ['Ø, мм','Толщина, мм','Наличие, шт','Цена с НДС, ₽','Сроки'];
  const body = rows.map(r =&gt; [r.diam, r.thk, r.stock, r.price, r.term]);
  const esc = v =&gt; String(v ?? '').replace(/&amp;/g,'&amp;amp;').replace(/&lt;/g,'&amp;lt;').replace(/&gt;/g,'&amp;gt;');
  const table = `&lt;table border="1" cellspacing="0" cellpadding="4"&gt;
    &lt;thead style="background:#000;color:#ffd700;"&gt;&lt;tr&gt;${header.map(h=&gt;`&lt;th&gt;${esc(h)}&lt;/th&gt;`).join('')}&lt;/tr&gt;&lt;/thead&gt;
    &lt;tbody&gt;${body.map(r=&gt;`&lt;tr&gt;${r.map(c=&gt;`&lt;td&gt;${esc(c)}&lt;/td&gt;`).join('')}&lt;/tr&gt;`).join('')}&lt;/tbody&gt;&lt;/table&gt;`;
  const html = `&lt;html xmlns:x="urn:schemas-microsoft-com:office:excel"&gt;&lt;head&gt;&lt;meta charset="UTF-8"&gt;
    &lt;style&gt;td,th{font-family:Arial;font-size:12px;}&lt;/style&gt;&lt;/head&gt;
    &lt;body&gt;&lt;h2&gt;Дроссельные шайбы — ${today()}&lt;/h2&gt;
    &lt;p&gt;Сталь 3 · Толщина 3 мм · НДС 20%&lt;/p&gt;
    ${table}
    &lt;p&gt;&lt;i&gt;ООО «Арсенал-Деталь» · 8 902 873-36-90&lt;/i&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;`;
  downloadBlob(new Blob(['\uFEFF' + html], {type:'application/vnd.ms-excel;charset=utf-8;'}),
               'drosselnye_shayby_' + today() + '.xls');
}

function downloadBlob(blob, filename) {
  const url = URL.createObjectURL(blob);
  const a = document.createElement('a');
  a.href = url; a.download = filename;
  document.body.appendChild(a); a.click(); a.remove();
  setTimeout(() =&gt; URL.revokeObjectURL(url), 500);
}

function today() {
  const d = new Date(), p = n =&gt; String(n).padStart(2,'0');
  return `${d.getFullYear()}-${p(d.getMonth()+1)}-${p(d.getDate())}`;
}

/* ==================== СТАРТ ==================== */
render();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</subtitle>
  <updated>2026-10-10T07:36:45Z</updated>
  <logo>https://pandoraburo.ru/ssl/u/pic/07/26436cc3c611f19d9efcd8c4a10874/-/0c723f71762611f1b3964aaba1665535.jpg</logo>
  <author>
    <name>1592962</name>
    <uri>https://www.pandoraburo.ru/</uri>
  </author>
</feed>
