<?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/gidroabraziv-s-materialom</id>
  <link href="https://www.pandoraburo.ru/gidroabraziv-s-materialom.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; --red: #e74c3c; --green: #2ecc71; --orange: #ffb060;
    --cyan: #6ee8e4;
  }
  * { 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;
  }
  .wrap { max-width: 1400px; 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: radial-gradient(120% 120% at 20% 0%, rgba(255,215,0,.18), transparent 55%),
                linear-gradient(135deg, #1a1408, #0a0a0a);
    border: 2px solid var(--gold); border-radius: 12px;
    padding: 30px 25px; text-align: center; margin-bottom: 14px;
    box-shadow: 0 0 40px rgba(255,215,0,.2);
  }
  .banner-line {
    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; box-shadow: 0 0 16px rgba(255,215,0,.7);
  }
  header h1 {
    margin: 0 0 12px 0; font-size: 28px; color: var(--gold);
    text-transform: uppercase; letter-spacing: 3px; font-weight: 900;
    text-shadow: 0 0 10px rgba(255,215,0,.95), 0 0 25px rgba(255,199,0,.8);
  }
  header p { margin: 0; color: var(--goldB); font-size: 15px; opacity: .95; }

  .calc-block {
    background: var(--bg); border: 1px solid var(--line); border-radius: 12px;
    padding: 20px; margin-bottom: 14px;
  }
  .calc-title {
    color: var(--gold); font-size: 12px; font-weight: 800; letter-spacing: 2px;
    text-transform: uppercase; padding-bottom: 12px; margin-bottom: 16px;
    border-bottom: 1px solid var(--line); text-align: center;
  }

  .highlight-block {
    background: linear-gradient(135deg, rgba(110,232,228,.12), rgba(255,215,0,.06));
    border: 3px solid var(--cyan); border-radius: 14px; padding: 22px 20px;
    margin-bottom: 16px; position: relative;
    box-shadow: 0 0 40px rgba(110,232,228,.25), inset 0 0 30px rgba(110,232,228,.05);
  }
  .highlight-block::before {
    content: '★ БРОНЯ С500 · ГИДРОАБРАЗИВ ★';
    position: absolute; top: -14px; left: 50%; transform: translateX(-50%);
    background: #0a0a0a; color: var(--cyan); padding: 4px 22px;
    border: 2px solid var(--cyan); border-radius: 999px;
    font-size: 12px; font-weight: 900; letter-spacing: 3px;
    text-shadow: 0 0 15px rgba(110,232,228,1); white-space: nowrap;
    box-shadow: 0 0 20px rgba(110,232,228,.6);
    animation: pulseCyan 2s ease-in-out infinite;
  }
  @keyframes pulseCyan {
    0%,100% { box-shadow: 0 0 20px rgba(110,232,228,.6); }
    50% { box-shadow: 0 0 35px rgba(110,232,228,1), 0 0 60px rgba(110,232,228,.6); }
  }

  .highlight-header {
    display: flex; justify-content: space-between; align-items: center;
    flex-wrap: wrap; gap: 12px; margin-bottom: 16px;
    padding-bottom: 14px; border-bottom: 1px solid rgba(110,232,228,.3);
  }
  .highlight-name {
    font-size: 22px; font-weight: 900; color: var(--cyan);
    letter-spacing: 2px; text-transform: uppercase;
    text-shadow: 0 0 12px rgba(110,232,228,.6);
  }
  .highlight-price {
    font-size: 32px; font-weight: 900; color: var(--goldB);
    font-variant-numeric: tabular-nums; line-height: 1;
    text-shadow: 0 0 20px rgba(255,215,0,.7);
  }
  .highlight-price small {
    font-size: 14px; color: var(--gold); opacity: .8;
    font-weight: 700; display: block; margin-bottom: 4px;
    letter-spacing: 1px;
  }

  .spec-grid {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
    margin-bottom: 16px;
  }
  @media (max-width: 900px) { .spec-grid { grid-template-columns: repeat(2, 1fr); } }
  @media (max-width: 500px) { .spec-grid { grid-template-columns: 1fr; } }
  .spec-item {
    background: rgba(0,0,0,.5); border: 1px solid rgba(110,232,228,.4);
    border-radius: 9px; padding: 10px 12px; text-align: center;
  }
  .spec-label {
    font-size: 10px; font-weight: 700; letter-spacing: 1px;
    text-transform: uppercase; color: var(--cyan); opacity: .7; margin-bottom: 4px;
  }
  .spec-value {
    font-size: 16px; font-weight: 800; color: var(--goldB);
    font-variant-numeric: tabular-nums;
  }

  .field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; }
  .field label {
    font-size: 11px; font-weight: 700; color: var(--gold);
    text-transform: uppercase; letter-spacing: 1px; opacity: .8;
  }
  .field input, .field select {
    padding: 12px 14px; border: 1px solid var(--line); border-radius: 9px;
    font-size: 14px; background: var(--bg); color: var(--gold);
    outline: none; transition: .15s; font-family: inherit; font-variant-numeric: tabular-nums;
  }
  .field input:focus, .field select:focus {
    border-color: var(--goldB); box-shadow: 0 0 0 3px rgba(212,175,55,.2);
  }
  .field-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; }
  @media (max-width: 800px) { .field-row { grid-template-columns: 1fr; } }
  .field-row-4 { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: 10px; }
  @media (max-width: 900px) { .field-row-4 { grid-template-columns: 1fr 1fr; } }
  @media (max-width: 500px) { .field-row-4 { grid-template-columns: 1fr; } }

  .auto-calc {
    background: rgba(212,175,55,.08); border: 1px dashed var(--gold);
    border-radius: 9px; padding: 12px 14px; margin-bottom: 14px;
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
  }
  @media (max-width: 900px) { .auto-calc { grid-template-columns: repeat(2, 1fr); } }
  @media (max-width: 500px) { .auto-calc { grid-template-columns: 1fr; } }
  .auto-item { text-align: center; }
  .auto-label { font-size: 10px; color: var(--gold); opacity: .7; text-transform: uppercase; font-weight: 700; }
  .auto-value { font-size: 18px; font-weight: 800; color: var(--goldB); font-variant-numeric: tabular-nums; }

  .result-block {
    background: var(--bg); border: 1px solid var(--line); border-radius: 12px; padding: 20px; margin-bottom: 14px;
  }
  .result-main {
    text-align: center; padding: 16px 0 20px; border-bottom: 1px solid rgba(212,175,55,.3); margin-bottom: 16px;
  }
  .result-main-label {
    font-size: 11px; font-weight: 800; letter-spacing: 2px;
    text-transform: uppercase; color: var(--gold); opacity: .8; margin-bottom: 8px;
  }
  .result-main-value {
    font-size: 48px; font-weight: 800; color: var(--goldB);
    line-height: 1; font-variant-numeric: tabular-nums; margin-bottom: 6px;
  }
  .result-main-unit { font-size: 16px; color: var(--gold); opacity: .8; }
  .result-main-note { font-size: 12px; color: var(--gold); opacity: .7; margin-top: 8px; }

  .result-grid {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 16px;
  }
  @media (max-width: 900px) { .result-grid { grid-template-columns: repeat(2, 1fr); } }
  @media (max-width: 500px) { .result-grid { grid-template-columns: 1fr; } }
  .result-item {
    background: #0a0a0a; border: 1px solid rgba(212,175,55,.3); border-radius: 9px; padding: 12px; text-align: center;
  }
  .result-label {
    font-size: 10px; font-weight: 700; letter-spacing: 1px;
    text-transform: uppercase; color: var(--gold); opacity: .7; margin-bottom: 6px;
  }
  .result-value { font-size: 18px; font-weight: 800; color: var(--goldB); line-height: 1.1; font-variant-numeric: tabular-nums; }
  .result-value.small { font-size: 15px; }
  .result-value.profit { color: var(--green); }
  .result-value.neg { color: var(--red); }

  .scale-table {
    width: 100%; border-collapse: collapse; font-size: 13px; margin-top: 10px;
    background: #0a0a0a; border-radius: 9px; overflow: hidden;
    border: 1px solid var(--line);
  }
  .scale-table th, .scale-table td {
    padding: 10px 12px; text-align: right; border-bottom: 1px solid rgba(212,175,55,.2);
    color: var(--gold); font-variant-numeric: tabular-nums;
  }
  .scale-table th {
    background: #1a1408; color: var(--gold); font-weight: 800;
    text-transform: uppercase; font-size: 10px; letter-spacing: 1px;
    border-bottom: 1px solid var(--gold);
  }
  .scale-table th:first-child, .scale-table td:first-child { text-align: left; }
  .scale-table tr:hover { background: #1a1408; }
  .scale-table tr.base-row { background: rgba(255,215,0,.12); box-shadow: inset 3px 0 0 var(--gold); }
  .scale-table tr.active-row { background: rgba(46,204,113,.12); box-shadow: inset 3px 0 0 var(--green); }
  .scale-table td.price { color: var(--goldB); font-weight: 700; }
  .scale-table td.total { color: var(--goldB); font-weight: 800; }

  .actions { display: flex; gap: 10px; flex-wrap: wrap; }
  .promo-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    padding: 12px 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; flex: 1; min-width: 140px;
  }
  .promo-btn:hover { background: var(--gold); color: #0a0a0a; }
  .promo-btn.primary { background: var(--gold); color: #0a0a0a; }
  .promo-btn.primary:hover { background: var(--goldB); }

  .pricing-info {
    background: rgba(110,232,228,.08); border: 1px solid var(--cyan);
    border-radius: 10px; padding: 14px 18px; margin-top: 14px; text-align: center;
  }
  .pricing-info-title {
    font-size: 12px; font-weight: 800; color: var(--cyan);
    text-transform: uppercase; letter-spacing: 1px; margin-bottom: 8px;
  }
  .pricing-info-text { font-size: 13px; color: var(--gold); opacity: .85; line-height: 1.6; }
  .pricing-info-text b { color: var(--goldB); }

  ::-webkit-scrollbar { width: 14px; height: 14px; }
  ::-webkit-scrollbar-track { background: #050505; border: 1px solid #2a2210; border-radius: 9px; }
  ::-webkit-scrollbar-thumb {
    background: linear-gradient(180deg, #ffd700 0%, #ff8c00 50%, #ffd700 100%);
    border: 1px solid #ffd700; border-radius: 9px; box-shadow: 0 0 10px rgba(255,215,0,.6);
  }

  @media print {
    body { background: #fff; color: #000; padding: 0; }
    .ticker-block, .promo-btn { display: none !important; }
    .calc-block, .result-block, .highlight-block { background: #fff !important; border: 1px solid #999 !important; box-shadow: none !important; }
    .field input, .field select { background: #fff !important; color: #000 !important; border-color: #999 !important; }
    .result-main-value, .result-value, .highlight-price { color: #000 !important; }
    .highlight-block::before { background: #fff !important; color: #000 !important; border-color: #999 !important; }
    .scale-table th { background: #000 !important; color: #FFD700 !important; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
    .scale-table td { color: #000 !important; border-color: #ccc !important; }
  }
&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;АКТУАЛЬНО 2024&lt;/div&gt;
    &lt;div class="ticker-viewport"&gt;
      &lt;div class="ticker-track"&gt;
        &lt;span class="ticker-item"&gt;Броня С500: &lt;b&gt;425 ₽/кг&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Гидроабразив 6–50 мм: &lt;b&gt;от 400 ₽/м&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;Повышающий коэфф. (твёрдость): &lt;b&gt;×1.3–1.5&lt;/b&gt;&lt;/span&gt;
        &lt;span class="ticker-dot"&gt;◆&lt;/span&gt;
        &lt;span class="ticker-item"&gt;НДС: &lt;b&gt;20%&lt;/b&gt;&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-line"&gt;★ ГИДРОАБРАЗИВНАЯ РЕЗКА · БРОНЯ С500 ★&lt;/div&gt;
    &lt;h1&gt;Плоская резка листа · 6–50 мм&lt;/h1&gt;
    &lt;p&gt;Расчёт длины реза · вес детали · материал 425 ₽/кг · повышающий коэффициент за твёрдость&lt;/p&gt;
  &lt;/header&gt;

  
  &lt;div class="highlight-block"&gt;
    &lt;div class="highlight-header"&gt;
      &lt;div class="highlight-name"&gt;Броня С500 · гидроабразив&lt;/div&gt;
      &lt;div class="highlight-price"&gt;
        &lt;small&gt;Цена металла&lt;/small&gt;
        425 ₽/кг
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="spec-grid"&gt;
      &lt;div class="spec-item"&gt;
        &lt;div class="spec-label"&gt;Материал&lt;/div&gt;
        &lt;div class="spec-value"&gt;Броня С500&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="spec-item"&gt;
        &lt;div class="spec-label"&gt;Толщина&lt;/div&gt;
        &lt;div class="spec-value"&gt;6–50 мм&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="spec-item"&gt;
        &lt;div class="spec-label"&gt;Плотность&lt;/div&gt;
        &lt;div class="spec-value"&gt;7850 кг/м³&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="spec-item"&gt;
        &lt;div class="spec-label"&gt;Повыш. коэфф.&lt;/div&gt;
        &lt;div class="spec-value"&gt;×1.3–1.5&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="spec-item"&gt;
        &lt;div class="spec-label"&gt;Цена резки 6 мм&lt;/div&gt;
        &lt;div class="spec-value"&gt;от 400 ₽/м&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="spec-item"&gt;
        &lt;div class="spec-label"&gt;Цена резки 50 мм&lt;/div&gt;
        &lt;div class="spec-value"&gt;от 5 800 ₽/м&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="spec-item"&gt;
        &lt;div class="spec-label"&gt;Точность&lt;/div&gt;
        &lt;div class="spec-value"&gt;±0.2 мм&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="spec-item"&gt;
        &lt;div class="spec-label"&gt;НДС&lt;/div&gt;
        &lt;div class="spec-value"&gt;20%&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="calc-block"&gt;
    &lt;div class="calc-title"&gt;Параметры расчёта&lt;/div&gt;

    &lt;div class="field-row-4"&gt;
      &lt;div class="field"&gt;
        &lt;label&gt;Толщина листа, мм&lt;/label&gt;
        &lt;select id="thickness"&gt;
          &lt;option value="6"&gt;6 мм · 400 ₽/м&lt;/option&gt;
          &lt;option value="8"&gt;8 мм · 550 ₽/м&lt;/option&gt;
          &lt;option value="10" selected="selected"&gt;10 мм · 700 ₽/м&lt;/option&gt;
          &lt;option value="12"&gt;12 мм · 850 ₽/м&lt;/option&gt;
          &lt;option value="16"&gt;16 мм · 1 200 ₽/м&lt;/option&gt;
          &lt;option value="20"&gt;20 мм · 1 600 ₽/м&lt;/option&gt;
          &lt;option value="25"&gt;25 мм · 2 200 ₽/м&lt;/option&gt;
          &lt;option value="30"&gt;30 мм · 2 800 ₽/м&lt;/option&gt;
          &lt;option value="40"&gt;40 мм · 4 200 ₽/м&lt;/option&gt;
          &lt;option value="50"&gt;50 мм · 5 800 ₽/м&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
      &lt;div class="field"&gt;
        &lt;label&gt;Материал&lt;/label&gt;
        &lt;select id="material"&gt;
          &lt;option value="s500" selected="selected"&gt;Броня С500 · 425 ₽/кг · ×1.4&lt;/option&gt;
          &lt;option value="s500_13"&gt;Броня С500 · 425 ₽/кг · ×1.3&lt;/option&gt;
          &lt;option value="s500_15"&gt;Броня С500 · 425 ₽/кг · ×1.5&lt;/option&gt;
          &lt;option value="st20"&gt;Сталь 20 · 110 ₽/кг · ×1.0&lt;/option&gt;
          &lt;option value="09g2s"&gt;Сталь 09Г2С · 125 ₽/кг · ×1.1&lt;/option&gt;
          &lt;option value="nm500"&gt;NM500 · 380 ₽/кг · ×1.35&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
      &lt;div class="field"&gt;
        &lt;label&gt;Длина реза, м&lt;/label&gt;
        &lt;input type="number" id="cutLength" value="10" min="0.1" max="10000" step="0.1" /&gt;
      &lt;/div&gt;
      &lt;div class="field"&gt;
        &lt;label&gt;Количество деталей, шт&lt;/label&gt;
        &lt;input type="number" id="qty" value="1" min="1" max="10000" step="1" /&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="field-row-4"&gt;
      &lt;div class="field"&gt;
        &lt;label&gt;Ширина детали, мм&lt;/label&gt;
        &lt;input type="number" id="partWidth" value="500" min="10" max="10000" step="10" /&gt;
      &lt;/div&gt;
      &lt;div class="field"&gt;
        &lt;label&gt;Длина детали, мм&lt;/label&gt;
        &lt;input type="number" id="partLength" value="1000" min="10" max="10000" step="10" /&gt;
      &lt;/div&gt;
      &lt;div class="field"&gt;
        &lt;label&gt;Рентабельность, %&lt;/label&gt;
        &lt;input type="number" id="margin" value="45" min="0" max="200" step="1" /&gt;
      &lt;/div&gt;
      &lt;div class="field"&gt;
        &lt;label&gt;Индекс удорожания (к 2022 г.)&lt;/label&gt;
        &lt;input type="number" id="inflationIdx" value="1.35" min="1.0" max="2.0" step="0.05" /&gt;
        &lt;div style="font-size:10px; color:var(--gold); opacity:0.6; margin-top:4px;"&gt;1.35 = +35% к работам&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="auto-calc"&gt;
      &lt;div class="auto-item"&gt;
        &lt;div class="auto-label"&gt;Вес 1 детали&lt;/div&gt;
        &lt;div class="auto-value" id="autoWeightUnit"&gt;0 кг&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="auto-item"&gt;
        &lt;div class="auto-label"&gt;Вес партии&lt;/div&gt;
        &lt;div class="auto-value" id="autoWeightTotal"&gt;0 кг&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="auto-item"&gt;
        &lt;div class="auto-label"&gt;Общий метраж реза&lt;/div&gt;
        &lt;div class="auto-value" id="autoCutTotal"&gt;0 м&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="auto-item"&gt;
        &lt;div class="auto-label"&gt;Ставка резки с коэфф.&lt;/div&gt;
        &lt;div class="auto-value" id="autoRate"&gt;0 ₽/м&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="result-block"&gt;
    &lt;div class="calc-title"&gt;Результат расчёта&lt;/div&gt;

    &lt;div class="result-main"&gt;
      &lt;div class="result-main-label"&gt;Итого с НДС 20% (за партию)&lt;/div&gt;
      &lt;div class="result-main-value" id="rPrice"&gt;0&lt;/div&gt;
      &lt;div class="result-main-unit"&gt;рублей&lt;/div&gt;
      &lt;div class="result-main-note" id="rNote"&gt;—&lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="result-grid"&gt;
      &lt;div class="result-item"&gt;&lt;div class="result-label"&gt;Услуга резки&lt;/div&gt;&lt;div class="result-value small" id="rCutCost"&gt;0 ₽&lt;/div&gt;&lt;/div&gt;
      &lt;div class="result-item"&gt;&lt;div class="result-label"&gt;Стоимость материала&lt;/div&gt;&lt;div class="result-value small" id="rMatCost"&gt;0 ₽&lt;/div&gt;&lt;/div&gt;
      &lt;div class="result-item"&gt;&lt;div class="result-label"&gt;Себестоимость (без НДС)&lt;/div&gt;&lt;div class="result-value small" id="rCost"&gt;0 ₽&lt;/div&gt;&lt;/div&gt;
      &lt;div class="result-item"&gt;&lt;div class="result-label"&gt;Прибыль (без НДС)&lt;/div&gt;&lt;div class="result-value small profit" id="rProfit"&gt;0 ₽&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="calc-title" style="margin-top:20px;"&gt;Сетка цен на резку по толщинам&lt;/div&gt;
    &lt;table class="scale-table" id="scaleTable"&gt;
      &lt;thead&gt;
        &lt;tr&gt;
          &lt;th&gt;Толщина&lt;/th&gt;
          &lt;th&gt;Базовая ставка, ₽/м&lt;/th&gt;
          &lt;th&gt;С коэфф. ×1.4, ₽/м&lt;/th&gt;
          &lt;th&gt;За 1 м (с НДС), ₽&lt;/th&gt;
          &lt;th&gt;За 10 м (с НДС), ₽&lt;/th&gt;
          &lt;th&gt;За 100 м (с НДС), ₽&lt;/th&gt;
        &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody id="scaleBody"&gt;&lt;/tbody&gt;
    &lt;/table&gt;

    &lt;div class="pricing-info"&gt;
      &lt;div class="pricing-info-title"&gt;? Логика ценообразования&lt;/div&gt;
      &lt;div class="pricing-info-text"&gt;
        &lt;b&gt;Услуга резки&lt;/b&gt; = длина реза × ставка по толщине × повышающий коэффициент (твёрдость).&lt;br /&gt;
        &lt;b&gt;Материал&lt;/b&gt; = вес детали × цена металла (425 ₽/кг для С500).&lt;br /&gt;
        &lt;b&gt;Повышающий коэффициент ×1.3–1.5&lt;/b&gt; — за твёрдость брони С500 (гидроабразив идёт медленнее, расход абразива выше).&lt;br /&gt;
        &lt;i&gt;Базовая сетка: 6 мм → 400 ₽/м; 50 мм → 5 800 ₽/м. Для С500 умножаем на 1.4.&lt;/i&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="actions"&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;? Печать&lt;/button&gt;
      &lt;button class="promo-btn" onclick="resetAll()"&gt;✕ Сброс&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
/* ==================== ДАННЫЕ ==================== */
const MATERIALS = [
  {key:'s500',    name:'Броня С500',   price:425, density:7850, coef:1.40},
  {key:'s500_13', name:'Броня С500',   price:425, density:7850, coef:1.30},
  {key:'s500_15', name:'Броня С500',   price:425, density:7850, coef:1.50},
  {key:'st20',    name:'Сталь 20',     price:110, density:7850, coef:1.00},
  {key:'09g2s',   name:'Сталь 09Г2С',  price:125, density:7850, coef:1.10},
  {key:'nm500',   name:'NM500',        price:380, density:7850, coef:1.35}
];

const CUT_RATES = {
  6:  400,
  8:  550,
  10: 700,
  12: 850,
  16: 1200,
  20: 1600,
  25: 2200,
  30: 2800,
  40: 4200,
  50: 5800
};

const THICKNESSES = [6, 8, 10, 12, 16, 20, 25, 30, 40, 50];

/* ==================== УТИЛИТЫ ==================== */
const fmt = n =&gt; (n === null || n === undefined || isNaN(n)) ? '0' : n.toLocaleString('ru-RU', {maximumFractionDigits: 0});
const fmt2 = n =&gt; (n === null || n === undefined || isNaN(n)) ? '0' : n.toLocaleString('ru-RU', {maximumFractionDigits: 2});
const num = id =&gt; { const el = document.getElementById(id); if (!el) return 0; const v = parseFloat(el.value); return isNaN(v) ? 0 : v; };
const getMaterial = key =&gt; MATERIALS.find(m =&gt; m.key === key) || MATERIALS[0];

/* ==================== РАСЧЁТ ==================== */
function calculate() {
  const mat = getMaterial(document.getElementById('material').value);
  const thickness = parseFloat(document.getElementById('thickness').value);
  const cutLength = num('cutLength');
  const qty = Math.max(1, num('qty'));
  const partWidth = num('partWidth');
  const partLength = num('partLength');
  const marginPct = num('margin');
  const inflationIdx = num('inflationIdx');

  if (cutLength &lt;= 0 || thickness &lt;= 0 || partWidth &lt;= 0 || partLength &lt;= 0) {
    document.getElementById('rPrice').textContent = '0';
    return;
  }

  // 1. Вес 1 детали (кг)
  const volume_m3 = (partWidth / 1000) * (partLength / 1000) * (thickness / 1000);
  const weightUnit = volume_m3 * mat.density;
  const weightTotal = weightUnit * qty;

  // 2. Стоимость материала
  const matCostUnit = weightUnit * mat.price;
  const matCost = matCostUnit * qty;

  // 3. Услуга резки
  const baseRate = CUT_RATES[thickness] || 0;
  const rateWithCoef = baseRate * mat.coef;
  const rateWithInflation = rateWithCoef * inflationIdx;
  const cutLengthTotal = cutLength * qty;
  const cutCost = cutLengthTotal * rateWithInflation;

  // 4. Себестоимость
  const totalCost = matCost + cutCost;

  // 5. Прибыль и цена
  const profit = totalCost * (marginPct / 100);
  const priceNoVat = totalCost + profit;
  const priceVat = priceNoVat * 1.20;

  // 6. Вывод
  document.getElementById('autoWeightUnit').textContent = fmt2(weightUnit) + ' кг';
  document.getElementById('autoWeightTotal').textContent = fmt2(weightTotal) + ' кг';
  document.getElementById('autoCutTotal').textContent = fmt2(cutLengthTotal) + ' м';
  document.getElementById('autoRate').textContent = fmt(rateWithInflation) + ' ₽/м';

  document.getElementById('rPrice').textContent = fmt(priceVat);
  document.getElementById('rCutCost').textContent = fmt(cutCost) + ' ₽';
  document.getElementById('rMatCost').textContent = fmt(matCost) + ' ₽';
  document.getElementById('rCost').textContent = fmt(totalCost) + ' ₽';
  document.getElementById('rProfit').textContent = fmt(profit) + ' ₽';

  document.getElementById('rNote').textContent =
    `${mat.name} · ${thickness} мм · ${mat.coef}× · ставка ${fmt(rateWithInflation)} ₽/м · ${fmt2(cutLengthTotal)} м реза`;

  // Сетка
  renderScaleTable(mat, inflationIdx, thickness);

  state.result = {
    material: mat.name,
    thickness: thickness,
    coef: mat.coef,
    cutLength: cutLength,
    qty: qty,
    weightUnit: weightUnit,
    weightTotal: weightTotal,
    cutLengthTotal: cutLengthTotal,
    baseRate: baseRate,
    rateWithInflation: rateWithInflation,
    matCost: matCost,
    cutCost: cutCost,
    totalCost: totalCost,
    profit: profit,
    priceVat: priceVat,
    margin: marginPct,
    idx: inflationIdx
  };
}

function renderScaleTable(mat, inflationIdx, activeThk) {
  const tbody = document.getElementById('scaleBody');
  tbody.innerHTML = '';
  THICKNESSES.forEach(t =&gt; {
    const base = CUT_RATES[t] || 0;
    const withCoef = base * mat.coef;
    const withInfl = withCoef * inflationIdx;
    const price1m = withInfl * 1.2;
    const price10m = withInfl * 10 * 1.2;
    const price100m = withInfl * 100 * 1.2;
    const tr = document.createElement('tr');
    if (t === activeThk) tr.classList.add('active-row');
    tr.innerHTML =
      '&lt;td&gt;' + t + ' мм&lt;/td&gt;' +
      '&lt;td&gt;' + fmt(base) + ' ₽&lt;/td&gt;' +
      '&lt;td class="price"&gt;' + fmt(withCoef) + ' ₽&lt;/td&gt;' +
      '&lt;td&gt;' + fmt(price1m) + ' ₽&lt;/td&gt;' +
      '&lt;td class="total"&gt;' + fmt(price10m) + ' ₽&lt;/td&gt;' +
      '&lt;td class="total"&gt;' + fmt(price100m) + ' ₽&lt;/td&gt;';
    tbody.appendChild(tr);
  });
}

/* ==================== СОБЫТИЯ ==================== */
document.getElementById('material').addEventListener('change', calculate);
document.getElementById('thickness').addEventListener('change', calculate);
['cutLength', 'qty', 'partWidth', 'partLength', 'margin', 'inflationIdx'].forEach(id =&gt; {
  document.getElementById(id).addEventListener('input', calculate);
});

/* ==================== СБРОС ==================== */
function resetAll() {
  document.getElementById('thickness').value = '10';
  document.getElementById('material').value = 's500';
  document.getElementById('cutLength').value = 10;
  document.getElementById('qty').value = 1;
  document.getElementById('partWidth').value = 500;
  document.getElementById('partLength').value = 1000;
  document.getElementById('margin').value = 45;
  document.getElementById('inflationIdx').value = 1.35;
  calculate();
}

/* ==================== ЭКСПОРТ ==================== */
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())}`; }

function buildScaleRows() {
  const mat = getMaterial(document.getElementById('material').value);
  const inflationIdx = num('inflationIdx');
  return THICKNESSES.map(t =&gt; {
    const base = CUT_RATES[t] || 0;
    const withCoef = base * mat.coef;
    const withInfl = withCoef * inflationIdx;
    return {
      thickness: t,
      base: base,
      withCoef: withCoef,
      withInfl: withInfl,
      price1m: withInfl * 1.2,
      price10m: withInfl * 10 * 1.2,
      price100m: withInfl * 100 * 1.2
    };
  });
}

function downloadCSV() {
  const rows = buildScaleRows();
  const header = ['Толщина, мм','Базовая ставка, ₽/м','С коэфф., ₽/м','С индексом, ₽/м','За 1 м (с НДС), ₽','За 10 м (с НДС), ₽','За 100 м (с НДС), ₽'];
  const body = rows.map(r =&gt; [
    r.thickness, Math.round(r.base), Math.round(r.withCoef), Math.round(r.withInfl),
    Math.round(r.price1m), Math.round(r.price10m), Math.round(r.price100m)
  ]);
  const esc = v =&gt; `"${String(v).replace(/"/g,'""')}"`;
  const csv = [header, ...body].map(row =&gt; row.map(esc).join(';')).join('\r\n');
  downloadBlob(new Blob(['\uFEFF' + csv], {type:'text/csv;charset=utf-8;'}), 'gidroabraziv_' + today() + '.csv');
}

function downloadExcel() {
  const rows = buildScaleRows();
  const mat = getMaterial(document.getElementById('material').value);
  const header = ['Толщина, мм','Базовая ставка, ₽/м','С коэфф., ₽/м','С индексом, ₽/м','За 1 м (с НДС), ₽','За 10 м (с НДС), ₽','За 100 м (с НДС), ₽'];
  const body = rows.map(r =&gt; [
    r.thickness, Math.round(r.base), Math.round(r.withCoef), Math.round(r.withInfl),
    Math.round(r.price1m), Math.round(r.price10m), Math.round(r.price100m)
  ]);
  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(row=&gt;`&lt;tr&gt;${row.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;ООО «Арсенал-Деталь» · 8 (992) 017-49-73&lt;/p&gt;
    &lt;p&gt;&lt;b&gt;Материал:&lt;/b&gt; ${mat.name} · ${mat.price} ₽/кг · повышающий коэфф. ${mat.coef}× · индекс ${num('inflationIdx')}&lt;/p&gt;
    ${table}
    &lt;/body&gt;&lt;/html&gt;`;
  downloadBlob(new Blob(['\uFEFF' + html], {type:'application/vnd.ms-excel;charset=utf-8;'}), 'gidroabraziv_' + today() + '.xls');
}

/* ==================== СТАРТ ==================== */
let state = { result: null };
calculate();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</subtitle>
  <updated>2026-10-12T10:12:03Z</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>
