<?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/shablon-kalkulyator-bukhgaltera-i-biznesmena</id>
  <link href="https://www.pandoraburo.ru/shablon-kalkulyator-bukhgaltera-i-biznesmena.xml" rel="self"/>
  <title>Шаблон калькулятор Бухгалтера и Бизнесмена</title>
  <subtitle type="html">
&lt;div id="fc-w"&gt;
&lt;style&gt;
#fc-w{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;max-width:920px;margin:0 auto;padding:20px;background:#f8f9fa;border-radius:12px;box-shadow:0 4px 6px rgba(0,0,0,.1);box-sizing:border-box}
#fc-w *{box-sizing:border-box}
#fc-w h1{color:#1a2a3a;font-size:1.5rem;margin:0 0 .3rem;text-align:center}
#fc-w .sub{text-align:center;color:#666;margin-bottom:.8rem;font-size:.88rem}
#fc-w .tabs-group{margin-bottom:.8rem}
#fc-w .tg-label{font-size:.72rem;font-weight:700;color:#999;text-transform:uppercase;letter-spacing:.5px;margin:.6rem 0 .2rem .3rem}
#fc-w .tg-label:first-child{margin-top:0}
#fc-w .tabs{display:flex;gap:2px;margin-bottom:.4rem;background:#e9ecef;padding:3px;border-radius:10px;flex-wrap:wrap}
#fc-w .tb{flex:1;padding:8px 6px;background:0 0;border:none;border-radius:7px;font-size:.82rem;font-weight:600;color:#555;cursor:pointer;transition:.2s;min-width:56px}
#fc-w .tb:hover{color:#1a2a3a}
#fc-w .tb.act{background:#fff;color:#00b4a0;box-shadow:0 2px 4px rgba(0,0,0,.08)}
#fc-w .fg{margin-bottom:.8rem}
#fc-w .fg label{display:block;margin-bottom:.2rem;font-weight:600;color:#1a2a3a;font-size:.88rem}
#fc-w .fg input,#fc-w .fg select{width:100%;padding:.55rem;border:2px solid #ddd;border-radius:8px;font-size:.92rem}
#fc-w .fg input:focus,#fc-w .fg select:focus{border-color:#00b4a0;outline:0}
#fc-w .fr{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
#fc-w .fr3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.6rem}
#fc-w .fr4{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem}
#fc-w .fr6{display:grid;grid-template-columns:repeat(6,1fr);gap:.4rem}
#fc-w .btn{padding:.6rem 1rem;background:#00b4a0;color:#fff;border:none;border-radius:8px;font-size:.92rem;font-weight:600;cursor:pointer;width:100%;transition:.3s}
#fc-w .btn:hover{background:#009688}
#fc-w .btn-s{background:#6c757d;padding:.3rem .6rem;font-size:.8rem;width:auto}
#fc-w .btn-s:hover{background:#5a6268}
#fc-w .btn-o{background:#fff;color:#00b4a0;border:2px solid #00b4a0;padding:.3rem .6rem;font-size:.8rem;width:auto}
#fc-w .btn-o:hover{background:#f0fffe}
#fc-w .btn-d{background:#dc3545;color:#fff;border:none;padding:.3rem .6rem;font-size:.8rem;width:auto}
#fc-w .btn-d:hover{background:#c82333}
#fc-w .btn-p{background:#17a2b8;color:#fff;border:none;padding:.3rem .6rem;font-size:.8rem;width:auto}
#fc-w .btn-p:hover{background:#138496}
#fc-w .res{background:#fff;border-radius:12px;padding:1rem;margin-top:1rem;box-shadow:0 2px 4px rgba(0,0,0,.05)}
#fc-w .ri{display:flex;justify-content:space-between;padding:.45rem 0;border-bottom:1px solid #eee;align-items:center;font-size:.88rem}
#fc-w .ri:last-child{border-bottom:none}
#fc-w .ri.hl{background:#f0fffe;padding:.6rem;border-radius:8px;margin:.3rem 0;border-bottom:none}
#fc-w .hl .v{font-size:1.2rem;font-weight:700;color:#00b4a0}
#fc-w .v{font-weight:600;color:#1a2a3a}
#fc-w .v.d{color:#dc3545}
#fc-w .v.s{color:#28a745}
#fc-w .st{font-size:.95rem;font-weight:700;color:#1a2a3a;margin:.9rem 0 .35rem;padding-bottom:.25rem;border-bottom:2px solid #00b4a0}
#fc-w .wr{background:#fff3cd;border-left:4px solid #ffc107;padding:.55rem;margin-top:.6rem;border-radius:4px;font-size:.85rem;color:#856404}
#fc-w .wr.err{background:#f8d7da;border-left-color:#dc3545;color:#721c24}
#fc-w .wr.ok{background:#d4edda;border-left-color:#28a745;color:#155724}
#fc-w .ib{background:#e7f3ff;border-left:4px solid #0066cc;padding:.55rem;margin-bottom:.8rem;border-radius:4px;color:#004085;font-size:.85rem}
#fc-w .badge{background:#d4edda;color:#155724;padding:.1rem .35rem;border-radius:4px;font-size:.62rem;font-weight:600;margin-left:.3rem}
#fc-w table{width:100%;border-collapse:collapse;margin-top:.6rem;font-size:.82rem}
#fc-w th{background:#f8f9fa;padding:.35rem;text-align:left;font-weight:600;color:#1a2a3a;border-bottom:2px solid #dee2e6}
#fc-w td{padding:.35rem;border-bottom:1px solid #eee}
#fc-w td.n,#fc-w th.n{text-align:right;font-weight:600}
#fc-w tr.best{background:#e8f8f5;border-left:3px solid #00b4a0}
#fc-w tr.unav{opacity:.5}
#fc-w .rec{background:linear-gradient(135deg,#e8f8f5,#d4f4ef);border-radius:10px;padding:.9rem;margin-top:.8rem;border-left:4px solid #00b4a0}
#fc-w .rec h3{margin:0 0 .3rem;color:#1a2a3a;font-size:.92rem}
#fc-w .rec p{margin:.2rem 0;color:#333;font-size:.85rem}
#fc-w .hint{font-size:.75rem;color:#888;margin-top:2px;line-height:1.3}
#fc-w .ci{padding:.5rem;border-radius:8px;margin-bottom:.3rem;display:flex;align-items:flex-start;gap:.4rem;font-size:.85rem}
#fc-w .ci.pass{background:#d4edda;border-left:4px solid #28a745}
#fc-w .ci.fail{background:#f8d7da;border-left:4px solid #dc3545}
#fc-w .ci.warn{background:#fff3cd;border-left:4px solid #ffc107}
#fc-w .ci.info{background:#e7f3ff;border-left:4px solid #0066cc}
#fc-w .tc{display:none}
#fc-w .tc.act{display:block}
#fc-w .disc{text-align:center;color:#999;font-size:.72rem;margin-top:1rem;padding:.3rem}
#fc-w .pf-row{display:flex;justify-content:space-between;padding:.25rem 0;border-bottom:1px solid #eee;font-size:.85rem}
#fc-w .pf-row .l{color:#666}
#fc-w .pf-row .r{font-weight:700}
#fc-w .metric-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:.5rem;margin-top:.6rem}
#fc-w .mc{background:#f8f9fa;border-radius:8px;padding:.6rem;text-align:center;border:1px solid #dee2e6}
#fc-w .mc .mc-val{font-size:1rem;font-weight:700;color:#00b4a0}
#fc-w .mc .mc-label{font-size:.68rem;color:#666;margin-top:.1rem}
#fc-w .mc.good .mc-val{color:#28a745}
#fc-w .mc.bad .mc-val{color:#dc3545}
#fc-w .mc.mid .mc-val{color:#ffc107}
#fc-w .op-item{background:#f8f9fa;border:1px solid #dee2e6;border-radius:8px;padding:.4rem;margin-bottom:.35rem;display:grid;grid-template-columns:100px 85px 1fr 85px 85px 28px;gap:.3rem;align-items:center}
#fc-w .op-item input,#fc-w .op-item select{padding:.3rem;border:1px solid #ddd;border-radius:6px;font-size:.8rem}
#fc-w .op-item .rm{background:#dc3545;color:#fff;border:none;padding:2px 5px;border-radius:4px;cursor:pointer;font-size:.78rem}
#fc-w .grp{background:#f8f9fa;border:1px solid #dee2e6;border-radius:8px;padding:.6rem;margin-bottom:.4rem}
#fc-w .grp .gh{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem}
#fc-w .grp input[type=text]{width:100%;margin-bottom:.25rem}
#fc-w .rm-g{background:#dc3545;color:#fff;border:none;padding:2px 6px;border-radius:4px;cursor:pointer;font-size:.72rem}
#fc-w .exp-item{display:flex;align-items:center;gap:.3rem;margin-bottom:.35rem;background:#fff;padding:.3rem .4rem;border-radius:6px;border:1px solid #ffe082}
#fc-w .exp-item .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
#fc-w .exp-item .nm{flex:1;font-size:.8rem}
#fc-w .exp-item input[type=number]{width:95px;padding:.2rem .3rem;border:1px solid #ddd;border-radius:6px;font-size:.8rem;text-align:right}
#fc-w .exp-item .rm{background:#dc3545;color:#fff;border:none;padding:1px 4px;border-radius:4px;cursor:pointer;font-size:.7rem}
#fc-w .exp-tot{display:flex;justify-content:space-between;margin-top:.5rem;padding-top:.4rem;border-top:2px solid #ffc107;font-weight:700;color:#856404;font-size:.88rem}
#fc-w .exp-tot .tv{font-size:1rem;color:#e65100}
#fc-w .ab{display:flex;gap:.4rem;margin-top:.6rem;flex-wrap:wrap}
#fc-w .ab .btn{flex:1;min-width:100px}
#fc-w .bar-row{display:flex;align-items:center;margin-bottom:.2rem}
#fc-w .bar-label{width:60px;font-size:.7rem;color:#333;text-align:right;padding-right:5px}
#fc-w .bar-track{flex:1;height:14px;background:#eee;border-radius:3px;overflow:hidden}
#fc-w .bar-fill{height:100%;border-radius:3px}
#fc-w .bar-fill.plan{background:#00b4a0}
#fc-w .bar-fill.fact{background:#ff6b6b}
#fc-w .bar-val{font-size:.68rem;margin-left:4px;font-weight:600;min-width:55px}
#fc-w .cf-row{display:grid;grid-template-columns:75px 1fr 70px;align-items:center;padding:.25rem 0;border-bottom:1px solid #f0f0f0;font-size:.8rem}
#fc-w .cf-date{font-weight:600;color:#555}
#fc-w .cf-val{font-weight:600;text-align:right}
#fc-w .cf-val.pos{color:#28a745}
#fc-w .cf-val.neg{color:#dc3545}
#fc-w .hist-item{background:#fff;border:1px solid #bee5eb;border-radius:8px;padding:.45rem;margin-bottom:.3rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.3rem;font-size:.8rem}
#fc-w .hist-item .hi{flex:1}
#fc-w .hist-item .hn{font-weight:600}
#fc-w .hist-item .hd{font-size:.68rem;color:#666}
#fc-w .hist-item .ha{display:flex;gap:.2rem}
#fc-w .hist-item .bs{padding:2px 6px;font-size:.68rem;border-radius:4px;border:none;cursor:pointer}
#fc-w .hist-item .bl{background:#17a2b8;color:#fff}
#fc-w .hist-item .bd{background:#dc3545;color:#fff}
#fc-w .hist-empty{text-align:center;color:#999;font-size:.8rem;padding:.5rem}
#fc-w .top-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem;flex-wrap:wrap;gap:.4rem}
#fc-w .top-bar .tb-actions{display:flex;gap:.3rem;flex-wrap:wrap}
#fc-w .save-ind{font-size:.68rem;color:#28a745;margin-left:.3rem}
@media(max-width:600px){
#fc-w{padding:10px}
#fc-w h1{font-size:1.15rem}
#fc-w .fr,#fc-w .fr3{grid-template-columns:1fr}
#fc-w .fr4{grid-template-columns:1fr 1fr}
#fc-w .fr6{grid-template-columns:1fr 1fr 1fr}
#fc-w .tb{font-size:.72rem;padding:6px 4px;min-width:48px}
#fc-w .op-item{grid-template-columns:1fr 1fr}
#fc-w .ab{flex-direction:column}
#fc-w .metric-cards{grid-template-columns:1fr 1fr}
}
@media print{
body *{visibility:hidden}
#fc-w .print-area,#fc-w .print-area *{visibility:visible}
#fc-w .print-area{position:absolute;left:0;top:0;width:100%;background:#fff;padding:20px}
#fc-w .no-print{display:none!important}
#fc-w .res{box-shadow:none;border:1px solid #ddd}
#fc-w .tabs,#fc-w .tabs-group{display:none!important}
}
&lt;/style&gt;

&lt;div id="fc-app"&gt;
&lt;div class="top-bar no-print"&gt;
&lt;h1 style="margin:0"&gt;Финансовый калькулятор &lt;span class="badge"&gt;2026&lt;/span&gt;&lt;/h1&gt;
&lt;div class="tb-actions"&gt;
&lt;button class="btn btn-p" id="fc-save-btn"&gt;Сохранить&lt;/button&gt;
&lt;button class="btn btn-o" id="fc-pdf-btn"&gt;PDF&lt;/button&gt;
&lt;button class="btn btn-d" id="fc-reset-btn"&gt;Сброс&lt;/button&gt;
&lt;span class="save-ind" id="fc-save-ind"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p class="sub no-print"&gt;Налоги | Учёт | Финансы | Планирование | Аналитика&lt;/p&gt;

&lt;div class="tabs-group no-print"&gt;
&lt;div class="tg-label"&gt;Налоги&lt;/div&gt;
&lt;div class="tabs"&gt;
&lt;button class="tb act" data-t="usn"&gt;УСН 6%&lt;/button&gt;
&lt;button class="tb" data-t="osn"&gt;ОСН&lt;/button&gt;
&lt;button class="tb" data-t="compare"&gt;Режимы&lt;/button&gt;
&lt;button class="tb" data-t="npd"&gt;НПД&lt;/button&gt;
&lt;button class="tb" data-t="cal"&gt;Календарь&lt;/button&gt;
&lt;button class="tb" data-t="pay"&gt;Платёжка&lt;/button&gt;
&lt;button class="tb" data-t="decl"&gt;Декл.&lt;/button&gt;
&lt;button class="tb" data-t="check"&gt;Проверки&lt;/button&gt;
&lt;/div&gt;
&lt;div class="tg-label"&gt;Учёт и аналитика&lt;/div&gt;
&lt;div class="tabs"&gt;
&lt;button class="tb" data-t="markup"&gt;Наценка&lt;/button&gt;
&lt;button class="tb" data-t="kudir"&gt;КУДиР&lt;/button&gt;
&lt;button class="tb" data-t="plan"&gt;План-факт&lt;/button&gt;
&lt;button class="tb" data-t="cash"&gt;Cash Flow&lt;/button&gt;
&lt;button class="tb" data-t="ratio"&gt;Коэфф.&lt;/button&gt;
&lt;button class="tb" data-t="unit"&gt;Unit-эк.&lt;/button&gt;
&lt;/div&gt;
&lt;div class="tg-label"&gt;Финансы и планирование&lt;/div&gt;
&lt;div class="tabs"&gt;
&lt;button class="tb" data-t="credit"&gt;Кредит&lt;/button&gt;
&lt;button class="tb" data-t="divid"&gt;Дивиденды&lt;/button&gt;
&lt;button class="tb" data-t="vac"&gt;Отпуск&lt;/button&gt;
&lt;button class="tb" data-t="amort"&gt;Аморт.&lt;/button&gt;
&lt;button class="tb" data-t="whatif"&gt;Что если?&lt;/button&gt;
&lt;button class="tb" data-t="finplan"&gt;Фин. план&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="fc-hist-panel" style="display:none;margin-bottom:.8rem;background:#e8f4f8;border:2px solid #17a2b8;border-radius:10px;padding:.8rem"&gt;
&lt;div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:.4rem"&gt;
&lt;strong style="font-size:.9rem;color:#0c5460"&gt;История расчётов&lt;/strong&gt;
&lt;button class="btn btn-s no-print" id="fc-hist-close" style="font-size:.72rem"&gt;Закрыть&lt;/button&gt;
&lt;/div&gt;
&lt;div id="fc-hist-list"&gt;&lt;div class="hist-empty"&gt;Нет сохранённых расчётов&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-usn" class="tc act print-area"&gt;
&lt;div class="ib"&gt;ℹ ИП без сотрудников. Фикс. взносы и 1% с дохода свыше 300 000 руб.&lt;/div&gt;
&lt;div class="fg"&gt;&lt;label&gt;Год&lt;/label&gt;&lt;select id="u-y"&gt;&lt;option value="2025"&gt;2025&lt;/option&gt;&lt;option value="2026" selected="selected"&gt;2026&lt;/option&gt;&lt;option value="2027"&gt;2027&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
&lt;div class="fr4"&gt;
&lt;div class="fg"&gt;&lt;label&gt;1 кв.&lt;/label&gt;&lt;input type="number" id="u-q1" min="0" value="0" /&gt;&lt;/div&gt;
&lt;div class="fg"&gt;&lt;label&gt;2 кв.&lt;/label&gt;&lt;input type="number" id="u-q2" min="0" value="0" /&gt;&lt;/div&gt;
&lt;div class="fg"&gt;&lt;label&gt;3 кв.&lt;/label&gt;&lt;input type="number" id="u-q3" min="0" value="0" /&gt;&lt;/div&gt;
&lt;div class="fg"&gt;&lt;label&gt;4 кв.&lt;/label&gt;&lt;input type="number" id="u-q4" min="0" value="0" /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;button class="btn no-print" id="u-btn"&gt;Рассчитать&lt;/button&gt;
&lt;div id="u-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-osn" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ НДС 22%, прибыль 25%, взносы 30%/15,1% сверх базы.&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Год&lt;/label&gt;&lt;select id="o-y"&gt;&lt;option value="2025"&gt;2025&lt;/option&gt;&lt;option value="2026" selected="selected"&gt;2026&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Категория&lt;/label&gt;&lt;select id="o-cat"&gt;&lt;option value="regular"&gt;Обычная (30%)&lt;/option&gt;&lt;option value="msp"&gt;МСП (15%)&lt;/option&gt;&lt;option value="it"&gt;ИТ (15%/7,6%)&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fg"&gt;&lt;label&gt;Сотрудников&lt;/label&gt;&lt;input type="number" id="o-emp" min="1" value="1" /&gt;&lt;/div&gt;
&lt;div class="st"&gt;Доходы (с НДС)&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Выручка 1 полугодие&lt;/label&gt;&lt;input type="number" id="o-r1" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Выручка 2 полугодие&lt;/label&gt;&lt;input type="number" id="o-r2" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="st"&gt;Расходы&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Закупки с НДС&lt;/label&gt;&lt;input type="number" id="o-ev" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Расходы без НДС&lt;/label&gt;&lt;input type="number" id="o-en" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="st"&gt;Персонал&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;ФОТ за год&lt;/label&gt;&lt;input type="number" id="o-pay" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;МРОТ&lt;/label&gt;&lt;input type="number" id="o-mrot" min="0" value="25000" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="o-btn"&gt;Рассчитать&lt;/button&gt;
&lt;div id="o-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-markup" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ Группы товаров + прочие расходы. Структура цены. Рекомендации.&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Режим&lt;/label&gt;&lt;select id="m-sys"&gt;&lt;option value="usn6"&gt;УСН 6%&lt;/option&gt;&lt;option value="usn15"&gt;УСН 15%&lt;/option&gt;&lt;option value="uv5"&gt;УСН+НДС 5%&lt;/option&gt;&lt;option value="uv7"&gt;УСН+НДС 7%&lt;/option&gt;&lt;option value="osn"&gt;ОСН&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Закупки с НДС?&lt;/label&gt;&lt;select id="m-iv"&gt;&lt;option value="y"&gt;Да&lt;/option&gt;&lt;option value="n"&gt;Нет&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="st"&gt;Группы товаров&lt;/div&gt;
&lt;div id="m-grps"&gt;&lt;/div&gt;
&lt;button class="btn btn-s no-print" id="m-ag"&gt;+ Группа&lt;/button&gt;
&lt;div style="background:#fff8e1;border:2px solid #ffc107;border-radius:10px;padding:.8rem;margin-top:.8rem"&gt;
&lt;strong style="color:#856404;font-size:.88rem"&gt;Прочие расходы (в месяц)&lt;/strong&gt;
&lt;div id="m-exps" style="margin-top:.3rem"&gt;&lt;/div&gt;
&lt;button class="btn btn-s no-print" id="m-ae" style="margin-top:.25rem"&gt;+ Расход&lt;/button&gt;
&lt;div class="exp-tot"&gt;&lt;span&gt;Итого:&lt;/span&gt;&lt;span class="tv" id="m-et"&gt;0 руб.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;button class="btn no-print" id="m-btn" style="margin-top:.8rem"&gt;Рассчитать&lt;/button&gt;
&lt;div id="m-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-compare" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ Сравнение всех режимов. Рекомендация по прибыли.&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Форма&lt;/label&gt;&lt;select id="c-form"&gt;&lt;option value="ip"&gt;ИП&lt;/option&gt;&lt;option value="ooo"&gt;ООО&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Год&lt;/label&gt;&lt;select id="c-y"&gt;&lt;option value="2025"&gt;2025&lt;/option&gt;&lt;option value="2026" selected="selected"&gt;2026&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fg"&gt;&lt;label&gt;Категория&lt;/label&gt;&lt;select id="c-cat"&gt;&lt;option value="regular"&gt;Обычная&lt;/option&gt;&lt;option value="msp"&gt;МСП (15%)&lt;/option&gt;&lt;option value="it"&gt;ИТ&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Выручка&lt;/label&gt;&lt;input type="number" id="c-rev" min="0" value="10000000" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Закупки&lt;/label&gt;&lt;input type="number" id="c-exp" min="0" value="5000000" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Прочие расходы&lt;/label&gt;&lt;input type="number" id="c-oe" min="0" value="500000" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;ФОТ&lt;/label&gt;&lt;input type="number" id="c-pay" min="0" value="2000000" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Сотрудников&lt;/label&gt;&lt;input type="number" id="c-emp" min="0" value="3" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Закупки с НДС?&lt;/label&gt;&lt;select id="c-iv"&gt;&lt;option value="y"&gt;Да&lt;/option&gt;&lt;option value="n"&gt;Нет&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="c-btn"&gt;Сравнить&lt;/button&gt;
&lt;div id="c-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-credit" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ Кредит vs лизинг с налоговым эффектом.&lt;/div&gt;
&lt;div class="fg"&gt;&lt;label&gt;Стоимость актива&lt;/label&gt;&lt;input type="number" id="cr-c" min="0" value="3000000" /&gt;&lt;/div&gt;
&lt;div class="fr3"&gt;&lt;div class="fg"&gt;&lt;label&gt;Аванс, %&lt;/label&gt;&lt;input type="number" id="cr-d" min="0" max="100" value="20" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Срок, мес.&lt;/label&gt;&lt;input type="number" id="cr-t" min="1" value="36" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Режим&lt;/label&gt;&lt;select id="cr-ts"&gt;&lt;option value="osn"&gt;ОСН 25%&lt;/option&gt;&lt;option value="usn15"&gt;УСН 15%&lt;/option&gt;&lt;option value="usn6"&gt;УСН 6%&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Ставка кредита, %&lt;/label&gt;&lt;input type="number" id="cr-r" min="0" step="0.1" value="22" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Удорожание лизинга, %&lt;/label&gt;&lt;input type="number" id="cr-l" min="0" step="0.1" value="8" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="cr-btn"&gt;Сравнить&lt;/button&gt;
&lt;div id="cr-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-divid" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ НДФЛ с дивидендов: 13% до 2,4 млн, 15% свыше.&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Чистая прибыль&lt;/label&gt;&lt;input type="number" id="d-p" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Сумма к выводу&lt;/label&gt;&lt;input type="number" id="d-a" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Учредителей&lt;/label&gt;&lt;input type="number" id="d-f" min="1" value="1" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Резидент?&lt;/label&gt;&lt;select id="d-r"&gt;&lt;option value="y"&gt;Да&lt;/option&gt;&lt;option value="n"&gt;Нет (15%)&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="d-btn"&gt;Рассчитать&lt;/button&gt;
&lt;div id="d-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-kudir" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ Книга учёта доходов и расходов для УСН.&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Режим&lt;/label&gt;&lt;select id="k-reg"&gt;&lt;option value="usn6"&gt;УСН 6%&lt;/option&gt;&lt;option value="usn15"&gt;УСН 15%&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Год&lt;/label&gt;&lt;select id="k-y"&gt;&lt;option value="2025"&gt;2025&lt;/option&gt;&lt;option value="2026" selected="selected"&gt;2026&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;ФИО / Название&lt;/label&gt;&lt;input type="text" id="k-name" placeholder="Иванов И.И." /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;ИНН&lt;/label&gt;&lt;input type="text" id="k-inn" maxlength="12" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="st"&gt;Операции&lt;/div&gt;
&lt;div id="k-ops"&gt;&lt;/div&gt;
&lt;button class="btn btn-s no-print" id="k-add"&gt;+ Операция&lt;/button&gt;
&lt;button class="btn no-print" id="k-btn" style="margin-top:.7rem"&gt;Сформировать КУДиР&lt;/button&gt;
&lt;div id="k-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-cal" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ Все сроки налогов и отчётности на год.&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Режим&lt;/label&gt;&lt;select id="cl-r"&gt;&lt;option value="usn_ip"&gt;ИП УСН без сотр.&lt;/option&gt;&lt;option value="usn_emp"&gt;ИП УСН с сотр.&lt;/option&gt;&lt;option value="usn_ooo"&gt;ООО УСН&lt;/option&gt;&lt;option value="osn"&gt;ОСН&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Год&lt;/label&gt;&lt;select id="cl-y"&gt;&lt;option value="2025"&gt;2025&lt;/option&gt;&lt;option value="2026" selected="selected"&gt;2026&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="cl-btn"&gt;Календарь&lt;/button&gt;
&lt;div id="cl-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-pay" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ Платёжное поручение с КБК.&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Тип платежа&lt;/label&gt;&lt;select id="p-t"&gt;&lt;option value="usn6"&gt;УСН 6%&lt;/option&gt;&lt;option value="usn15"&gt;УСН 15%&lt;/option&gt;&lt;option value="nds"&gt;НДС&lt;/option&gt;&lt;option value="profit"&gt;Прибыль&lt;/option&gt;&lt;option value="ndfl"&gt;НДФЛ&lt;/option&gt;&lt;option value="contrib"&gt;Взносы&lt;/option&gt;&lt;option value="ip_fix"&gt;Фикс. взносы ИП&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Сумма&lt;/label&gt;&lt;input type="number" id="p-a" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;ИНН&lt;/label&gt;&lt;input type="text" id="p-inn" maxlength="12" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;ОКТМО&lt;/label&gt;&lt;input type="text" id="p-ok" maxlength="11" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fg"&gt;&lt;label&gt;Плательщик&lt;/label&gt;&lt;input type="text" id="p-nm" /&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="p-btn"&gt;Сформировать&lt;/button&gt;
&lt;div id="p-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-check" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ Контрольные проверки. Лимиты, риски.&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Режим&lt;/label&gt;&lt;select id="ch-r"&gt;&lt;option value="usn6"&gt;УСН 6%&lt;/option&gt;&lt;option value="usn15"&gt;УСН 15%&lt;/option&gt;&lt;option value="osn"&gt;ОСН&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Год&lt;/label&gt;&lt;select id="ch-y"&gt;&lt;option value="2025"&gt;2025&lt;/option&gt;&lt;option value="2026" selected="selected"&gt;2026&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Доход&lt;/label&gt;&lt;input type="number" id="ch-i" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Расходы&lt;/label&gt;&lt;input type="number" id="ch-e" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Сотрудников&lt;/label&gt;&lt;input type="number" id="ch-emp" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Остаточная ст-ть ОС&lt;/label&gt;&lt;input type="number" id="ch-os" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr" id="ch-vat-row" style="display:none"&gt;&lt;div class="fg"&gt;&lt;label&gt;НДС начисл.&lt;/label&gt;&lt;input type="number" id="ch-vo" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;НДС к вычету&lt;/label&gt;&lt;input type="number" id="ch-vi" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="ch-btn"&gt;Проверить&lt;/button&gt;
&lt;div id="ch-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-ratio" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ ROS, ROA, ликвидность, безубыточность.&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Выручка&lt;/label&gt;&lt;input type="number" id="r-rev" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Себестоимость&lt;/label&gt;&lt;input type="number" id="r-cogs" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Чистая прибыль&lt;/label&gt;&lt;input type="number" id="r-np" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Оборотные активы&lt;/label&gt;&lt;input type="number" id="r-ca" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Краткоср. обязат.&lt;/label&gt;&lt;input type="number" id="r-cl" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Внеоборотные активы&lt;/label&gt;&lt;input type="number" id="r-fa" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Запасы&lt;/label&gt;&lt;input type="number" id="r-inv" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Пост. расходы/мес&lt;/label&gt;&lt;input type="number" id="r-fc" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="r-btn"&gt;Рассчитать&lt;/button&gt;
&lt;div id="r-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-vac" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ Отпускные и больничные.&lt;/div&gt;
&lt;div class="fg"&gt;&lt;label&gt;Тип&lt;/label&gt;&lt;select id="v-t"&gt;&lt;option value="vac"&gt;Отпускные&lt;/option&gt;&lt;option value="sick"&gt;Больничные&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
&lt;div class="fg"&gt;&lt;label&gt;Зарплата/мес&lt;/label&gt;&lt;input type="number" id="v-sal" min="0" value="50000" /&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Дней&lt;/label&gt;&lt;input type="number" id="v-d" min="1" value="14" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Стаж, лет&lt;/label&gt;&lt;input type="number" id="v-e" min="0" value="5" /&gt;&lt;div class="hint"&gt;Менее 5: 60%, 5-8: 80%, более 8: 100%&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="v-btn"&gt;Рассчитать&lt;/button&gt;
&lt;div id="v-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-amort" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ Линейный и нелинейный метод.&lt;/div&gt;
&lt;div class="fg"&gt;&lt;label&gt;Название&lt;/label&gt;&lt;input type="text" id="a-nm" placeholder="Оборудование" /&gt;&lt;/div&gt;
&lt;div class="fr3"&gt;&lt;div class="fg"&gt;&lt;label&gt;Стоимость&lt;/label&gt;&lt;input type="number" id="a-c" min="0" value="1000000" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Срок, мес.&lt;/label&gt;&lt;input type="number" id="a-l" min="1" value="60" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Метод&lt;/label&gt;&lt;select id="a-m"&gt;&lt;option value="lin"&gt;Линейный&lt;/option&gt;&lt;option value="dbl"&gt;Удвоенная норма&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="a-btn"&gt;Рассчитать&lt;/button&gt;
&lt;div id="a-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-decl" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ Декларация УСН 6%.&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Год&lt;/label&gt;&lt;select id="dc-y"&gt;&lt;option value="2025"&gt;2025&lt;/option&gt;&lt;option value="2026" selected="selected"&gt;2026&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;ФИО&lt;/label&gt;&lt;input type="text" id="dc-nm" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fg"&gt;&lt;label&gt;ИНН&lt;/label&gt;&lt;input type="text" id="dc-inn" maxlength="12" /&gt;&lt;/div&gt;
&lt;div class="st"&gt;Доходы нарастающим итогом&lt;/div&gt;
&lt;div class="fr4"&gt;&lt;div class="fg"&gt;&lt;label&gt;1 кв.&lt;/label&gt;&lt;input type="number" id="dc-q1" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Полугодие&lt;/label&gt;&lt;input type="number" id="dc-q2" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;9 мес.&lt;/label&gt;&lt;input type="number" id="dc-q3" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Год&lt;/label&gt;&lt;input type="number" id="dc-q4" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="st"&gt;Взносы нарастающим итогом&lt;/div&gt;
&lt;div class="fr4"&gt;&lt;div class="fg"&gt;&lt;label&gt;1 кв.&lt;/label&gt;&lt;input type="number" id="dc-c1" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Полугодие&lt;/label&gt;&lt;input type="number" id="dc-c2" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;9 мес.&lt;/label&gt;&lt;input type="number" id="dc-c3" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Год&lt;/label&gt;&lt;input type="number" id="dc-c4" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="dc-btn"&gt;Сформировать&lt;/button&gt;
&lt;div id="dc-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-plan" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ Бюджет: план vs факт по месяцам.&lt;/div&gt;
&lt;div class="fg"&gt;&lt;label&gt;Категория&lt;/label&gt;&lt;select id="pl-cat"&gt;&lt;option value="revenue"&gt;Выручка&lt;/option&gt;&lt;option value="cogs"&gt;Себестоимость&lt;/option&gt;&lt;option value="opex"&gt;Опер. расходы&lt;/option&gt;&lt;option value="marketing"&gt;Маркетинг&lt;/option&gt;&lt;option value="payroll"&gt;ФОТ&lt;/option&gt;&lt;option value="rent"&gt;Аренда&lt;/option&gt;&lt;option value="other"&gt;Прочие&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
&lt;div class="st"&gt;План, руб.&lt;/div&gt;&lt;div class="fr6" id="pl-plan"&gt;&lt;/div&gt;
&lt;div class="st"&gt;Факт, руб.&lt;/div&gt;&lt;div class="fr6" id="pl-fact"&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="pl-btn" style="margin-top:.7rem"&gt;Анализ&lt;/button&gt;
&lt;div id="pl-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-cash" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ Платёжный календарь. Кассовые разрывы.&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Начальный остаток&lt;/label&gt;&lt;input type="number" id="cf-start" min="0" value="500000" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Горизонт, дней&lt;/label&gt;&lt;input type="number" id="cf-days" min="7" max="90" value="30" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="st"&gt;Операции&lt;/div&gt;
&lt;div id="cf-ops"&gt;&lt;/div&gt;
&lt;button class="btn btn-s no-print" id="cf-add"&gt;+ Операция&lt;/button&gt;
&lt;button class="btn no-print" id="cf-btn" style="margin-top:.7rem"&gt;Построить&lt;/button&gt;
&lt;div id="cf-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-unit" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ CAC, LTV, масштабируемость.&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Средний чек&lt;/label&gt;&lt;input type="number" id="ue-check" min="0" value="5000" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Себестоимость&lt;/label&gt;&lt;input type="number" id="ue-cogs" min="0" value="3000" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Покупок на клиента&lt;/label&gt;&lt;input type="number" id="ue-freq" min="1" value="4" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;CAC&lt;/label&gt;&lt;input type="number" id="ue-cac" min="0" value="1500" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Клиентов/мес&lt;/label&gt;&lt;input type="number" id="ue-clients" min="1" value="100" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Пост. расходы/мес&lt;/label&gt;&lt;input type="number" id="ue-fixed" min="0" value="150000" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fg"&gt;&lt;label&gt;Режим&lt;/label&gt;&lt;select id="ue-tax"&gt;&lt;option value="usn6"&gt;УСН 6%&lt;/option&gt;&lt;option value="usn15"&gt;УСН 15%&lt;/option&gt;&lt;option value="osn"&gt;ОСН&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="ue-btn"&gt;Рассчитать&lt;/button&gt;
&lt;div id="ue-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-npd" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ Самозанятые. 4% физлицам, 6% юрлицам. Лимит 2,4 млн руб./год.&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Год&lt;/label&gt;&lt;select id="np-y"&gt;&lt;option value="2025"&gt;2025&lt;/option&gt;&lt;option value="2026" selected="selected"&gt;2026&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Регион&lt;/label&gt;&lt;select id="np-reg"&gt;&lt;option value="std"&gt;Стандартный&lt;/option&gt;&lt;option value="new"&gt;Новый (бонус 10 000)&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;От физлиц (4%)&lt;/label&gt;&lt;input type="number" id="np-phys" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;От юрлиц (6%)&lt;/label&gt;&lt;input type="number" id="np-legal" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Бонус&lt;/label&gt;&lt;input type="number" id="np-bonus" min="0" max="10000" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Уплачено&lt;/label&gt;&lt;input type="number" id="np-paid" min="0" value="0" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="np-btn"&gt;Рассчитать&lt;/button&gt;
&lt;div id="np-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-whatif" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ 3 сценария: текущий, рост, спад.&lt;/div&gt;
&lt;div class="st"&gt;Базовый сценарий&lt;/div&gt;
&lt;div class="fr3"&gt;&lt;div class="fg"&gt;&lt;label&gt;Выручка, руб/мес&lt;/label&gt;&lt;input type="number" id="wi-rev" min="0" value="1000000" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Перем. расходы&lt;/label&gt;&lt;input type="number" id="wi-var" min="0" value="600000" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Пост. расходы&lt;/label&gt;&lt;input type="number" id="wi-fix" min="0" value="250000" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Режим&lt;/label&gt;&lt;select id="wi-tax"&gt;&lt;option value="usn6"&gt;УСН 6%&lt;/option&gt;&lt;option value="usn15"&gt;УСН 15%&lt;/option&gt;&lt;option value="osn"&gt;ОСН&lt;/option&gt;&lt;option value="npd"&gt;НПД&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Что меняем&lt;/label&gt;&lt;select id="wi-param"&gt;&lt;option value="rev_pct"&gt;Выручка, %&lt;/option&gt;&lt;option value="var_pct"&gt;Перем. расходы, %&lt;/option&gt;&lt;option value="fix_pct"&gt;Пост. расходы, %&lt;/option&gt;&lt;option value="staff_add"&gt;Сотрудники, +/-чел.&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="st"&gt;Сценарий Б&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Изменение&lt;/label&gt;&lt;input type="number" id="wi-b-val" value="10" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Название&lt;/label&gt;&lt;input type="text" id="wi-b-name" value="Рост +10%" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="st"&gt;Сценарий В&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Изменение&lt;/label&gt;&lt;input type="number" id="wi-c-val" value="-20" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Название&lt;/label&gt;&lt;input type="text" id="wi-c-name" value="Спад -20%" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="wi-btn"&gt;Сравнить&lt;/button&gt;
&lt;div id="wi-res"&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;div id="fc-finplan" class="tc print-area"&gt;
&lt;div class="ib"&gt;ℹ Финансовый план на 12-36 месяцев. Прогноз выручки, прибыли, налогов, Cash Flow. Сценарии, инвестиции, найм, цели.&lt;/div&gt;
&lt;div class="st"&gt;Текущее состояние бизнеса&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Выручка сейчас, руб/мес&lt;/label&gt;&lt;input type="number" id="fp-rev" min="0" value="1000000" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Рост выручки, % в месяц&lt;/label&gt;&lt;input type="number" id="fp-growth" min="-50" max="100" step="0.5" value="3" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Себестоимость, % от выручки&lt;/label&gt;&lt;input type="number" id="fp-cogs" min="0" max="100" value="60" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Постоянные расходы, руб/мес&lt;/label&gt;&lt;input type="number" id="fp-fixed" min="0" value="250000" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Рост пост. расходов, % в месяц&lt;/label&gt;&lt;input type="number" id="fp-fgrowth" min="0" max="50" step="0.5" value="1" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Начальный остаток, руб&lt;/label&gt;&lt;input type="number" id="fp-start" min="0" value="500000" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Налоговый режим&lt;/label&gt;&lt;select id="fp-tax"&gt;&lt;option value="usn6"&gt;УСН 6%&lt;/option&gt;&lt;option value="usn15"&gt;УСН 15%&lt;/option&gt;&lt;option value="osn"&gt;ОСН (НДС 22% + Прибыль 25%)&lt;/option&gt;&lt;option value="npd"&gt;НПД (4%)&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Горизонт&lt;/label&gt;&lt;select id="fp-horizon"&gt;&lt;option value="12"&gt;12 месяцев&lt;/option&gt;&lt;option value="24"&gt;24 месяца&lt;/option&gt;&lt;option value="36"&gt;36 месяцев&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="st"&gt;Сезонность (коэффициенты, 1.0 = обычный месяц)&lt;/div&gt;
&lt;div class="fr6" id="fp-season"&gt;&lt;/div&gt;
&lt;div class="hint"&gt;Пример: 1.4 для декабря (высокий сезон), 0.7 для января (низкий сезон).&lt;/div&gt;
&lt;div class="st"&gt;Инвестиции (единовременные вложения)&lt;/div&gt;
&lt;div class="fr3"&gt;&lt;div class="fg"&gt;&lt;label&gt;Сумма, руб&lt;/label&gt;&lt;input type="number" id="fp-inv-sum" min="0" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Месяц (1-36)&lt;/label&gt;&lt;input type="number" id="fp-inv-month" min="1" max="36" value="1" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Тип&lt;/label&gt;&lt;select id="fp-inv-type"&gt;&lt;option value="equipment"&gt;Оборудование&lt;/option&gt;&lt;option value="repair"&gt;Ремонт&lt;/option&gt;&lt;option value="marketing"&gt;Маркетинг&lt;/option&gt;&lt;option value="other"&gt;Прочее&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="st"&gt;Найм сотрудников&lt;/div&gt;
&lt;div class="fr4"&gt;&lt;div class="fg"&gt;&lt;label&gt;Месяц найма (0 = нет)&lt;/label&gt;&lt;input type="number" id="fp-hire-month" min="0" max="36" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Количество&lt;/label&gt;&lt;input type="number" id="fp-hire-count" min="0" max="50" value="0" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Зарплата на 1 сотр.&lt;/label&gt;&lt;input type="number" id="fp-hire-salary" min="0" value="60000" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;Взносы&lt;/label&gt;&lt;select id="fp-hire-rate"&gt;&lt;option value="0.30"&gt;30%&lt;/option&gt;&lt;option value="0.15"&gt;15% (МСП)&lt;/option&gt;&lt;option value="0.076"&gt;7,6% (ИТ)&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="st"&gt;Цели&lt;/div&gt;
&lt;div class="fr"&gt;&lt;div class="fg"&gt;&lt;label&gt;Хочу чистую прибыль, руб/мес&lt;/label&gt;&lt;input type="number" id="fp-goal-profit" min="0" value="300000" /&gt;&lt;/div&gt;&lt;div class="fg"&gt;&lt;label&gt;К какому месяцу&lt;/label&gt;&lt;input type="number" id="fp-goal-month" min="1" max="36" value="12" /&gt;&lt;/div&gt;&lt;/div&gt;
&lt;button class="btn no-print" id="fp-btn"&gt;Построить финансовый план&lt;/button&gt;
&lt;div id="fp-res"&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;div class="disc"&gt;Все расчёты носят информационный характер и не являются официальной налоговой консультацией. Ставки актуальны на 2026 год.&lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
(function(){'use strict';
var T={2025:{ur:.06,fi:53658,cap:300888,pt:.25,vr:.20,mrot:22000,cb:2225000},2026:{ur:.06,fi:57390,cap:321818,pt:.25,vr:.22,mrot:25000,cb:2979000,vt:2e7,v5:2725e5,v7:4905e5},2027:{ur:.06,fi:61000,cap:343000,pt:.25,vr:.22,mrot:27000,cb:32e5,vt:2e7,v5:285e6,v7:51e7}};
function F(n){return new Intl.NumberFormat('ru-RU').format(Math.round(n));}
function P(n){return(n*100).toFixed(2)+'%';}
function $(id){return document.getElementById(id);}
function V(id,d){return+($(id)?$(id).value:d)||0;}
var MN=['Янв','Фев','Мар','Апр','Май','Июн','Июл','Авг','Сен','Окт','Ноя','Дек'];
var SK='fc_state_v1',SV=1,HK='fc_history_v1';
function saveState(){try{var inputs=document.querySelectorAll('#fc-w input,#fc-w select');var st={version:SV,savedAt:new Date().toISOString(),data:{}};inputs.forEach(function(inp){if(inp.id)st.data[inp.id]=inp.value;});localStorage.setItem(SK,JSON.stringify(st));var ind=$('fc-save-ind');if(ind){ind.textContent='[OK] Сохранено';setTimeout(function(){ind.textContent='';},2500);}}catch(e){}}
function loadState(){try{var raw=localStorage.getItem(SK);if(!raw)return;var st=JSON.parse(raw);if(st.version!==SV)return;var inputs=document.querySelectorAll('#fc-w input,#fc-w select');inputs.forEach(function(inp){if(inp.id&amp;&amp;st.data[inp.id]!==undefined)inp.value=st.data[inp.id];});}catch(e){}}
function resetState(){if(!confirm('Сбросить все данные? История останется.'))return;localStorage.removeItem(SK);location.reload();}
function getHist(){try{return JSON.parse(localStorage.getItem(HK))||[];}catch(e){return[];}}
function saveHist(h){try{localStorage.setItem(HK,JSON.stringify(h));}catch(e){}}
function addToHist(){var name=prompt('Название расчёта:','Расчёт '+new Date().toLocaleDateString('ru-RU'));if(!name)return;var h=getHist();var inputs=document.querySelectorAll('#fc-w input,#fc-w select');var data={};inputs.forEach(function(inp){if(inp.id)data[inp.id]=inp.value;});h.unshift({name:name,date:new Date().toLocaleString('ru-RU'),data:data});if(h.length&gt;50)h.pop();saveHist(h);renderHist();alert('Сохранено: '+name);}
function renderHist(){var h=getHist();var list=$('fc-hist-list');if(h.length===0){list.innerHTML='&lt;div class="hist-empty"&gt;Нет сохранённых расчётов&lt;/div&gt;';return;}var html='';for(var i=0;i&lt;h.length;i++){html+='&lt;div class="hist-item"&gt;&lt;div class="hi"&gt;&lt;div class="hn"&gt;'+h[i].name+'&lt;/div&gt;&lt;div class="hd"&gt;'+h[i].date+'&lt;/div&gt;&lt;/div&gt;&lt;div class="ha"&gt;&lt;button class="bs bl" data-i="'+i+'"&gt;Загрузить&lt;/button&gt;&lt;button class="bs bd" data-i="'+i+'"&gt;Удалить&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;';}list.innerHTML=html;list.querySelectorAll('.bl').forEach(function(b){b.onclick=function(){var hh=getHist();var item=hh[+b.dataset.i];if(item){var inputs=document.querySelectorAll('#fc-w input,#fc-w select');inputs.forEach(function(inp){if(inp.id&amp;&amp;item.data[inp.id]!==undefined)inp.value=item.data[inp.id];});alert('Загружено: '+item.name);}};});list.querySelectorAll('.bd').forEach(function(b){b.onclick=function(){var hh=getHist();hh.splice(+b.dataset.i,1);saveHist(hh);renderHist();};});}
function printPDF(){var act=document.querySelector('#fc-w .tc.act');document.querySelectorAll('#fc-w .tc').forEach(function(t){t.style.display='none';});if(act)act.style.display='block';window.print();document.querySelectorAll('#fc-w .tc').forEach(function(t){t.style.display='none';});if(act)act.classList.add('act');}
loadState();
$('fc-save-btn').onclick=addToHist;$('fc-pdf-btn').onclick=printPDF;$('fc-reset-btn').onclick=resetState;
$('fc-hist-close').onclick=function(){$('fc-hist-panel').style.display='none';};
if(getHist().length&gt;0){$('fc-hist-panel').style.display='block';renderHist();}
var saveTimer=null;document.querySelectorAll('#fc-w input,#fc-w select').forEach(function(inp){inp.addEventListener('change',function(){clearTimeout(saveTimer);saveTimer=setTimeout(saveState,1000);});});
document.querySelectorAll('#fc-w .tb').forEach(function(b){b.addEventListener('click',function(){document.querySelectorAll('#fc-w .tb').forEach(function(x){x.classList.remove('act');});document.querySelectorAll('#fc-w .tc').forEach(function(x){x.classList.remove('act');});b.classList.add('act');$('fc-'+b.dataset.t).classList.add('act');});});
function contrib(pay,emp,cat,cb){if(pay&lt;=0)return 0;var pe=emp&gt;0?pay/emp:pay;var t=0;if(cat==='regular'){t=pe&lt;=cb?pay*.3:cb*.3*emp+(pay-cb*emp)*.151;}else if(cat==='msp')t=pay*.15;else if(cat==='it'){t=pe&lt;=cb?pay*.15:cb*.15*emp+(pay-cb*emp)*.076;}return t+pay*.002;}

// ===== ГРАФИКИ (SVG) =====
function fcShort(v){var a=Math.abs(v);if(a&gt;=1e6)return(v/1e6).toFixed(1)+' млн';if(a&gt;=1e3)return Math.round(v/1e3)+' тыс';return Math.round(v);}
function fcLine(container,opts){if(!container)return;var W=600,H=opts.height||180,padL=42,padR=10,padT=10,padB=24;var all=[];opts.series.forEach(function(s){all=all.concat(s.values);});var min=Math.min.apply(null,all.concat([0])),max=Math.max.apply(null,all.concat([1]));if(max===min)max=min+1;var n=opts.labels.length;function x(i){return padL+(W-padL-padR)*(n&gt;1?i/(n-1):0);}function y(v){return padT+(H-padT-padB)*(1-(v-min)/(max-min));}var svg='&lt;svg viewBox="0 0 '+W+' '+H+'" style="width:100%;height:auto;display:block"&gt;';for(var g=0;g&lt;=4;g++){var gv=min+(max-min)*g/4;var gy=y(gv);svg+='&lt;line x1="'+padL+'" y1="'+gy+'" x2="'+(W-padR)+'" y2="'+gy+'" stroke="#e8e8e8"/&gt;';svg+='&lt;text x="'+(padL-5)+'" y="'+(gy+3)+'" font-size="9" fill="#999" text-anchor="end"&gt;'+fcShort(gv)+'&lt;/text&gt;';}if(min&lt;0)svg+='&lt;line x1="'+padL+'" y1="'+y(0)+'" x2="'+(W-padR)+'" y2="'+y(0)+'" stroke="#aaa" stroke-dasharray="4 3"/&gt;';opts.series.forEach(function(s){var pts='';for(var i=0;i&lt;n;i++){pts+=x(i)+','+y(s.values[i])+' ';}svg+='&lt;polyline points="'+pts+'" fill="none" stroke="'+s.color+'" stroke-width="2.5" stroke-linejoin="round"/&gt;';});var step=Math.ceil(n/8);for(var i=0;i&lt;n;i+=step){svg+='&lt;text x="'+x(i)+'" y="'+(H-6)+'" font-size="9" fill="#999" text-anchor="middle"&gt;'+opts.labels[i]+'&lt;/text&gt;';}svg+='&lt;/svg&gt;';var leg='';if(opts.series.length&gt;1){leg='&lt;div style="display:flex;gap:12px;flex-wrap:wrap;font-size:.75rem;color:#666;margin-top:4px"&gt;';opts.series.forEach(function(s){leg+='&lt;span style="display:flex;align-items:center;gap:4px"&gt;&lt;span style="width:10px;height:10px;background:'+s.color+';border-radius:2px"&gt;&lt;/span&gt;'+s.name+'&lt;/span&gt;';});leg+='&lt;/div&gt;';}container.innerHTML=svg+leg;}
function fcBars(container,opts){if(!container)return;var W=600,H=opts.height||180,padL=42,padR=10,padT=10,padB=24;var n=opts.labels.length;var all=[];opts.series.forEach(function(s){all=all.concat(s.values);});var max=Math.max.apply(null,all.concat([1])),min=Math.min.apply(null,all.concat([0]));if(max===min)max=min+1;function y(v){return padT+(H-padT-padB)*(1-(v-min)/(max-min));}var bw=(W-padL-padR)/n;var svg='&lt;svg viewBox="0 0 '+W+' '+H+'" style="width:100%;height:auto;display:block"&gt;';for(var g=0;g&lt;=4;g++){var gv=min+(max-min)*g/4;var gy=y(gv);svg+='&lt;line x1="'+padL+'" y1="'+gy+'" x2="'+(W-padR)+'" y2="'+gy+'" stroke="#e8e8e8"/&gt;';svg+='&lt;text x="'+(padL-5)+'" y="'+(gy+3)+'" font-size="9" fill="#999" text-anchor="end"&gt;'+fcShort(gv)+'&lt;/text&gt;';}if(min&lt;0)svg+='&lt;line x1="'+padL+'" y1="'+y(0)+'" x2="'+(W-padR)+'" y2="'+y(0)+'" stroke="#aaa" stroke-dasharray="4 3"/&gt;';for(var i=0;i&lt;n;i++){var x0=padL+i*bw;var sw=bw*0.8/opts.series.length;opts.series.forEach(function(sr,si){var v=sr.values[i];var yTop=v&gt;=0?y(v):y(0);var hpx=Math.abs(y(v)-y(0));svg+='&lt;rect x="'+(x0+bw*0.1+si*sw)+'" y="'+yTop+'" width="'+(sw*0.9)+'" height="'+Math.max(1,hpx)+'" fill="'+sr.color+'" rx="2"/&gt;';});var step=Math.ceil(n/8);if(i%step===0)svg+='&lt;text x="'+(x0+bw/2)+'" y="'+(H-6)+'" font-size="9" fill="#999" text-anchor="middle"&gt;'+opts.labels[i]+'&lt;/text&gt;';}svg+='&lt;/svg&gt;';var leg='&lt;div style="display:flex;gap:12px;flex-wrap:wrap;font-size:.75rem;color:#666;margin-top:4px"&gt;';opts.series.forEach(function(s){leg+='&lt;span style="display:flex;align-items:center;gap:4px"&gt;&lt;span style="width:10px;height:10px;background:'+s.color+';border-radius:2px"&gt;&lt;/span&gt;'+s.name+'&lt;/span&gt;';});leg+='&lt;/div&gt;';container.innerHTML=svg+leg;}
function fcDonut(container,items){if(!container)return;var total=0;items.forEach(function(it){total+=it.value;});if(total&lt;=0){container.innerHTML='&lt;div class="hint"&gt;Нет данных для диаграммы&lt;/div&gt;';return;}var R=38,C=2*Math.PI*R,off=0;var svg='&lt;svg viewBox="0 0 100 100" style="width:150px;height:150px;flex-shrink:0"&gt;';items.forEach(function(it){var dash=it.value/total*C;svg+='&lt;circle cx="50" cy="50" r="'+R+'" fill="none" stroke="'+it.color+'" stroke-width="16" stroke-dasharray="'+dash+' '+(C-dash)+'" stroke-dashoffset="'+(-off)+'" transform="rotate(-90 50 50)"/&gt;';off+=dash;});svg+='&lt;text x="50" y="47" font-size="10" font-weight="700" fill="#1a2a3a" text-anchor="middle"&gt;'+fcShort(total)+'&lt;/text&gt;';svg+='&lt;text x="50" y="58" font-size="6" fill="#999" text-anchor="middle"&gt;руб&lt;/text&gt;&lt;/svg&gt;';var leg='&lt;div style="flex:1;min-width:180px;font-size:.78rem;color:#555"&gt;';items.forEach(function(it){leg+='&lt;div style="display:flex;justify-content:space-between;margin:3px 0"&gt;&lt;span style="display:flex;align-items:center;gap:5px"&gt;&lt;span style="width:10px;height:10px;background:'+it.color+';border-radius:2px"&gt;&lt;/span&gt;'+it.label+'&lt;/span&gt;&lt;span style="font-weight:600"&gt;'+F(it.value)+' ('+Math.round(it.value/total*100)+'%)&lt;/span&gt;&lt;/div&gt;';});leg+='&lt;/div&gt;';container.innerHTML='&lt;div style="display:flex;gap:16px;align-items:center;flex-wrap:wrap"&gt;'+svg+leg+'&lt;/div&gt;';}

// 1 УСН
$('u-btn').onclick=function(){var y=V('u-y',2026),p=T[y],q=[V('u-q1'),V('u-q2'),V('u-q3'),V('u-q4')];var ti=q[0]+q[1]+q[2]+q[3],tb=ti*p.ur,fx=p.fi;var op=ti&gt;3e5?Math.min((ti-3e5)*.01,p.cap):0,tc=fx+op,tp=Math.max(0,tb-tc);var fq=fx/4,a1=Math.max(0,q[0]*p.ur-fq),a2=Math.max(0,(q[0]+q[1])*p.ur-fq*2-a1);var a3=Math.max(0,(q[0]+q[1]+q[2])*p.ur-fq*3-a1-a2),a4=Math.max(0,tb-a1-a2-a3-tc);var h='&lt;div class="res"&gt;';h+='&lt;div class="ri hl"&gt;&lt;span&gt;Налог УСН к уплате&lt;/span&gt;&lt;span class="v"&gt;'+F(tp)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Доход за год&lt;/span&gt;&lt;span class="v"&gt;'+F(ti)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Налог до вычетов (6%)&lt;/span&gt;&lt;span class="v"&gt;'+F(tb)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Фикс. взносы&lt;/span&gt;&lt;span class="v"&gt;'+F(fx)+' руб.&lt;/span&gt;&lt;/div&gt;';if(op&gt;0)h+='&lt;div class="ri"&gt;&lt;span&gt;1% свыше 300 тыс.&lt;/span&gt;&lt;span class="v"&gt;'+F(op)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Итого вычет&lt;/span&gt;&lt;span class="v"&gt;'+F(tc)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Эфф. ставка&lt;/span&gt;&lt;span class="v"&gt;'+(ti&gt;0?P(tp/ti):'0%')+'&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="st"&gt;Авансы&lt;/div&gt;';var adv=[[a1,'1 кв.'],[a2,'2 кв.'],[a3,'3 кв.'],[a4,'год']];for(var i=0;i&lt;adv.length;i++){h+='&lt;div class="ri"&gt;&lt;span&gt;'+adv[i][1]+' (до 28.04.'+y+')&lt;/span&gt;&lt;span class="v"&gt;'+F(adv[i][0])+' руб.&lt;/span&gt;&lt;/div&gt;';}var lim=y===2026?2868e5:2724e5;if(ti&gt;lim)h+='&lt;div class="wr err"&gt;[!!!] Доход превышает лимит УСН!&lt;/div&gt;';else if(y&gt;=2026&amp;&amp;ti&gt;p.vt)h+='&lt;div class="wr"&gt;[!] Доход &gt; 20 млн руб. - нужен НДС.&lt;/div&gt;';h+='&lt;div class="st"&gt;Доходы по кварталам&lt;/div&gt;&lt;div id="u-ch-bars"&gt;&lt;/div&gt;';h+='&lt;/div&gt;';$('u-res').innerHTML=h;fcBars($('u-ch-bars'),{labels:['1 кв','2 кв','3 кв','4 кв'],series:[{name:'Доход',color:'#00b4a0',values:q}]});saveState();};

// 2 ОСН
$('o-btn').onclick=function(){var y=V('o-y',2026),p=T[y],cat=$('o-cat').value,emp=V('o-emp',1);var rev=V('o-r1')+V('o-r2'),ev=V('o-ev'),en=V('o-en'),pay=V('o-pay');var ov=rev*p.vr/(1+p.vr),rn=rev-ov,iv=ev*p.vr/(1+p.vr),en2=ev-iv;var vp=Math.max(0,ov-iv),co=contrib(pay,emp,cat,p.cb),inj=pay*.002,tc=co+inj;var te=en2+en+pay+tc,pbt=rn-te,pt=Math.max(0,pbt)*p.pt,np=pbt-pt;var tt=vp+pt+tc,eb=rev&gt;0?tt/rev:0;var h='&lt;div class="res"&gt;';h+='&lt;div class="ri hl"&gt;&lt;span&gt;Чистая прибыль&lt;/span&gt;&lt;span class="v '+(np&lt;0?'d':'s')+'"&gt;'+F(np)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Нагрузка&lt;/span&gt;&lt;span class="v d"&gt;'+F(tt)+' руб. ('+P(eb)+')&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="st"&gt;НДС '+(p.vr*100)+'%&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Начисленный&lt;/span&gt;&lt;span class="v"&gt;'+F(ov)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;К вычету&lt;/span&gt;&lt;span class="v"&gt;-'+F(iv)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;К уплате&lt;/span&gt;&lt;span class="v"&gt;'+F(vp)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="st"&gt;Прибыль '+(p.pt*100)+'%&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;База&lt;/span&gt;&lt;span class="v"&gt;'+F(pbt)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Налог&lt;/span&gt;&lt;span class="v"&gt;'+F(pt)+' руб.&lt;/span&gt;&lt;/div&gt;';if(np&lt;0)h+='&lt;div class="wr err"&gt;[!] Убыток!&lt;/div&gt;';h+='&lt;/div&gt;';$('o-res').innerHTML=h;saveState();};

// 3 НАЦЕНКА
var grps=[{id:1,nm:'Товар А',cost:1000,price:1500,qty:100}],gid=2;var exps=[{id:1,nm:'Аренда',a:50000,c:'#00b4a0'},{id:2,nm:'Реклама',a:30000,c:'#ff6b6b'},{id:3,nm:'ЗП админ.',a:40000,c:'#4ecdc4'},{id:4,nm:'Связь',a:5000,c:'#45b7d1'},{id:5,nm:'Прочее',a:10000,c:'#feca57'}],eid=6;var EC=['#00b4a0','#ff6b6b','#4ecdc4','#45b7d1','#96ceb4','#feca57','#ff9ff3','#54a0ff','#5f27cd','#01a3a4'];
function rGrps(){var html='';for(var i=0;i&lt;grps.length;i++){var g=grps[i];var loss=g.cost&gt;g.price&amp;&amp;g.price&gt;0;html+='&lt;div class="grp" data-id="'+g.id+'"&gt;&lt;div class="gh"&gt;&lt;strong&gt;#'+g.id+'&lt;/strong&gt;&lt;button class="rm-g" data-id="'+g.id+'"&gt;x&lt;/button&gt;&lt;/div&gt;&lt;input type="text" class="g-nm" placeholder="Название" value="'+g.nm+'"&gt;&lt;div class="fr3"&gt;&lt;div&gt;&lt;input type="number" class="g-c" placeholder="Себест." min="0" value="'+g.cost+'"&gt;&lt;div class="hint"&gt;За 1 шт.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;input type="number" class="g-p" placeholder="Цена" min="0" value="'+g.price+'"&gt;&lt;div class="hint"&gt;За 1 шт.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;input type="number" class="g-q" placeholder="Шт./мес" min="0" value="'+g.qty+'"&gt;&lt;/div&gt;&lt;/div&gt;'+(loss?'&lt;div style="color:#dc3545;font-size:.72rem;margin-top:2px"&gt;[!] Убыток!&lt;/div&gt;':'')+'&lt;/div&gt;';}$('m-grps').innerHTML=html;document.querySelectorAll('#m-grps .rm-g').forEach(function(b){b.onclick=function(){grps=grps.filter(function(x){return x.id!=b.dataset.id;});rGrps();};});document.querySelectorAll('#m-grps .grp').forEach(function(el){var id=+el.dataset.id;var g=null;for(var j=0;j&lt;grps.length;j++){if(grps[j].id===id){g=grps[j];break;}}if(!g)return;el.querySelector('.g-nm').oninput=function(e){g.nm=e.target.value;};el.querySelector('.g-c').oninput=function(e){g.cost=+e.target.value||0;rGrps();};el.querySelector('.g-p').oninput=function(e){g.price=+e.target.value||0;rGrps();};el.querySelector('.g-q').oninput=function(e){g.qty=+e.target.value||0;};});}
function rExps(){var html='';for(var i=0;i&lt;exps.length;i++){var e=exps[i];html+='&lt;div class="exp-item" data-id="'+e.id+'"&gt;&lt;span class="dot" style="background:'+e.c+'"&gt;&lt;/span&gt;&lt;span class="nm"&gt;'+e.nm+'&lt;/span&gt;&lt;input type="number" class="e-a" min="0" value="'+e.a+'"&gt;&lt;button class="rm" data-id="'+e.id+'"&gt;x&lt;/button&gt;&lt;/div&gt;';}$('m-exps').innerHTML=html;document.querySelectorAll('#m-exps .rm').forEach(function(b){b.onclick=function(){exps=exps.filter(function(x){return x.id!=b.dataset.id;});rExps();uET();};});document.querySelectorAll('#m-exps .e-a').forEach(function(inp){inp.oninput=function(e){var id=+inp.closest('.exp-item').dataset.id;for(var j=0;j&lt;exps.length;j++){if(exps[j].id===id){exps[j].a=+e.target.value||0;break;}}uET();};});}
function uET(){var t=0;for(var i=0;i&lt;exps.length;i++)t+=exps[i].a;$('m-et').textContent=F(t)+' руб.';}
$('m-ag').onclick=function(){grps.push({id:gid++,nm:'Группа '+grps.length,cost:0,price:0,qty:0});rGrps();};
$('m-ae').onclick=function(){exps.push({id:eid++,nm:'Расход '+(exps.length+1),a:0,c:EC[eid%EC.length]});rExps();uET();};
rGrps();rExps();uET();
$('m-btn').onclick=function(){var sys=$('m-sys').value,iv=$('m-iv').value==='y',te=0;for(var i=0;i&lt;exps.length;i++)te+=exps[i].a;var tra=0;for(var i=0;i&lt;grps.length;i++)tra+=grps[i].price*grps[i].qty;var res=[];for(var i=0;i&lt;grps.length;i++){var g=grps[i];var rg=g.price*g.qty,ct=g.cost*g.qty,tx=0;if(sys==='usn6')tx=rg*.06;else if(sys==='usn15')tx=Math.max(0,rg-ct)*.15;else if(sys==='uv5'||sys==='uv7'){var vr=sys==='uv5'?.05:.07;var ov=rg*vr/(1+vr);var rn=rg-ov;var ia=0,cn=ct;if(iv){ia=ct*.22/1.22;cn=ct-ia;}tx=Math.max(0,ov-ia)+Math.max(0,rn-cn)*.15;}else{var ov2=rg*.22/1.22;var rn2=rg-ov2;var ia2=0,cn2=ct;if(iv){ia2=ct*.22/1.22;cn2=ct-ia2;}tx=Math.max(0,ov2-ia2)+Math.max(0,rn2-cn2)*.25;}var es=tra&gt;0?(rg/tra)*te:0;res.push({nm:g.nm,cost:g.cost,price:g.price,qty:g.qty,rg:rg,ct:ct,tx:Math.round(tx),es:Math.round(es),pr:Math.round(rg-ct-tx-es),mg:rg&gt;0?(rg-ct-tx-es)/rg:0,mk:g.cost&gt;0?(g.price-g.cost)/g.cost:0});}var tR=0,tC=0,tT=0,tP=0;for(var i=0;i&lt;res.length;i++){tR+=res[i].rg;tC+=res[i].ct;tT+=res[i].tx;tP+=res[i].pr;}var h='&lt;div class="res"&gt;';h+='&lt;div class="ri hl"&gt;&lt;span&gt;Прибыль/мес&lt;/span&gt;&lt;span class="v '+(tP&lt;0?'d':'s')+'"&gt;'+F(tP)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Выручка&lt;/span&gt;&lt;span class="v"&gt;'+F(tR)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Налоги&lt;/span&gt;&lt;span class="v d"&gt;'+F(tT)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Прочие расходы&lt;/span&gt;&lt;span class="v d"&gt;'+F(te)+' руб.&lt;/span&gt;&lt;/div&gt;';if(tR&gt;0)h+='&lt;div class="ri"&gt;&lt;span&gt;Маржа&lt;/span&gt;&lt;span class="v"&gt;'+P(tP/tR)+'&lt;/span&gt;&lt;/div&gt;';h+='&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Группа&lt;/th&gt;&lt;th class="n"&gt;Наценка&lt;/th&gt;&lt;th class="n"&gt;Маржа&lt;/th&gt;&lt;th class="n"&gt;Прибыль&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';for(var i=0;i&lt;res.length;i++){var r=res[i];h+='&lt;tr '+(r.cost&gt;r.price?'style="color:#dc3545"':'')+'&gt;&lt;td&gt;'+(r.nm||'—')+'&lt;/td&gt;&lt;td class="n"&gt;'+P(r.mk)+'&lt;/td&gt;&lt;td class="n"&gt;'+P(r.mg)+'&lt;/td&gt;&lt;td class="n"&gt;'+F(r.pr)+'&lt;/td&gt;&lt;/tr&gt;';}h+='&lt;/tbody&gt;&lt;/table&gt;';var fv=null;for(var i=0;i&lt;res.length;i++){if(res[i].qty&gt;0&amp;&amp;res[i].cost&lt;=res[i].price){fv=res[i];break;}}if(fv){h+='&lt;div class="st"&gt;Структура цены: '+fv.nm+'&lt;/div&gt;';h+='&lt;div class="pf-row"&gt;&lt;span class="l"&gt;Цена&lt;/span&gt;&lt;span class="r"&gt;'+F(fv.price)+' руб. (100%)&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="pf-row"&gt;&lt;span class="l"&gt;Себестоимость&lt;/span&gt;&lt;span class="r"&gt;'+F(fv.cost)+' руб. ('+P(fv.cost/fv.price)+')&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="pf-row"&gt;&lt;span class="l"&gt;Налоги&lt;/span&gt;&lt;span class="r"&gt;'+F(fv.tx/fv.qty)+' руб. ('+P((fv.tx/fv.qty)/fv.price)+')&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="pf-row"&gt;&lt;span class="l"&gt;Прочие&lt;/span&gt;&lt;span class="r"&gt;'+F(fv.es/fv.qty)+' руб. ('+P((fv.es/fv.qty)/fv.price)+')&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="pf-row" style="font-weight:700;border-top:2px solid #1a2a3a;padding-top:3px"&gt;&lt;span class="l"&gt;Прибыль&lt;/span&gt;&lt;span class="r"&gt;'+F(fv.pr/fv.qty)+' руб. ('+P((fv.pr/fv.qty)/fv.price)+')&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="st"&gt;Структура цены (диаграмма)&lt;/div&gt;&lt;div id="m-ch-donut"&gt;&lt;/div&gt;';}h+='&lt;div class="st"&gt;Рекомендации&lt;/div&gt;';var lossCount=0;for(var i=0;i&lt;res.length;i++){if(res[i].pr&lt;0)lossCount++;}var avgMargin=res.length&gt;0?res.reduce(function(s,r){return s+r.mg;},0)/res.length:0;if(lossCount&gt;0)h+='&lt;div class="ci fail"&gt;[X] '+lossCount+' групп(а) убыточны.&lt;/div&gt;';if(avgMargin&lt;0.1&amp;&amp;avgMargin&gt;0)h+='&lt;div class="ci warn"&gt;[!] Маржа '+P(avgMargin)+' &lt; 10%. Поднимите цены на 5-15%.&lt;/div&gt;';else if(avgMargin&gt;=0.2)h+='&lt;div class="ci pass"&gt;[OK] Маржа '+P(avgMargin)+' - отличная.&lt;/div&gt;';else if(avgMargin&gt;=0.1)h+='&lt;div class="ci pass"&gt;[OK] Маржа '+P(avgMargin)+' - приемлемая.&lt;/div&gt;';if(te&gt;tR*0.3&amp;&amp;tR&gt;0)h+='&lt;div class="ci warn"&gt;[!] Прочие расходы '+P(te/tR)+' от выручки (&gt;30%).&lt;/div&gt;';var bestG=res[0];for(var i=1;i&lt;res.length;i++){if(res[i].pr&gt;bestG.pr)bestG=res[i];}if(bestG&amp;&amp;bestG.pr&gt;0)h+='&lt;div class="ci pass"&gt;Локомотив: "'+(bestG.nm||'Группа')+'" -&gt; '+F(bestG.pr)+' руб./мес.&lt;/div&gt;';h+='&lt;/div&gt;';$('m-res').innerHTML=h;if(fv){fcDonut($('m-ch-donut'),[{label:'Себестоимость',value:fv.cost,color:'#ff6b6b'},{label:'Налоги',value:fv.tx/fv.qty,color:'#ffc107'},{label:'Прочие расходы',value:fv.es/fv.qty,color:'#45b7d1'},{label:'Чистая прибыль',value:Math.max(0,fv.pr/fv.qty),color:'#28a745'}]);}saveState();};

// 4 РЕЖИМЫ
$('c-btn').onclick=function(){var y=V('c-y',2026),p=T[y],form=$('c-form').value,cat=$('c-cat').value;var rev=V('c-rev'),exp=V('c-exp'),oe=V('c-oe'),pay=V('c-pay'),emp=V('c-emp'),iv=$('c-iv').value==='y';var co=contrib(pay,emp,cat,p.cb)+pay*.002;var ipf=form==='ip'?p.fi+(rev&gt;3e5?Math.min((rev-3e5)*.01,p.cap):0):0;var rs=[];var tx1=rev*.06;if(form==='ip'&amp;&amp;emp===0)tx1=Math.max(0,tx1-ipf);else if(form==='ip')tx1=Math.max(0,tx1-Math.min(ipf,tx1*.5));else tx1=Math.max(0,tx1-co*.5);rs.push({n:'УСН 6%',av:y&lt;2026||rev&lt;=p.vt,nt:y&gt;=2026&amp;&amp;rev&gt;p.vt?'&gt;20млн':'',np:Math.round(rev-exp-oe-pay-co-tx1)});var b2=Math.max(0,rev-exp-oe-pay-co);var tx2=Math.max(b2*.15,rev*.01);rs.push({n:'УСН 15%',av:y&lt;2026||rev&lt;=p.vt,nt:y&gt;=2026&amp;&amp;rev&gt;p.vt?'&gt;20млн':'',np:Math.round(rev-exp-oe-pay-co-tx2)});if(y&gt;=2026){var av5=rev&gt;p.vt&amp;&amp;rev&lt;=p.v5;var ov5=rev*.05/1.05;var rn5=rev-ov5;var ia5=iv?exp*.22/1.22:0;var b5=Math.max(0,rn5-(exp-ia5)-oe-pay-co);var ut5=b5*.15;rs.push({n:'УСН+НДС5',av:av5,nt:!av5?(rev&lt;=p.vt?'Только&gt;20млн':'&gt;272,5млн'):'',np:Math.round(rn5-(exp-ia5)-oe-pay-co-ut5)});var av7=rev&gt;p.v5&amp;&amp;rev&lt;=p.v7;var ov7=rev*.07/1.07;var rn7=rev-ov7;var ia7=iv?exp*.22/1.22:0;var b7=Math.max(0,rn7-(exp-ia7)-oe-pay-co);var ut7=b7*.15;rs.push({n:'УСН+НДС7',av:av7,nt:!av7?(rev&lt;=p.v5?'Только&gt;272,5млн':'&gt;490,5млн'):'',np:Math.round(rn7-(exp-ia7)-oe-pay-co-ut7)});}var ovO=rev*.22/1.22;var rnO=rev-ovO;var iaO=iv?exp*.22/1.22:0;var pbO=rnO-(exp-iaO)-oe-pay-co;var ptO=Math.max(0,pbO)*.25;rs.push({n:'ОСН',av:true,nt:'',np:Math.round(rnO-(exp-iaO)-oe-pay-co-ptO)});rs.sort(function(a,b){if(a.av!==b.av)return b.av-a.av;return b.np-a.np;});var best=null;for(var i=0;i&lt;rs.length;i++){if(rs[i].av){best=rs[i];break;}}var h='&lt;div class="res"&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Режим&lt;/th&gt;&lt;th class="n"&gt;Прибыль&lt;/th&gt;&lt;th&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';for(var i=0;i&lt;rs.length;i++){var r=rs[i];var ib=best&amp;&amp;r.n===best.n;h+='&lt;tr class="'+(!r.av?'unav':ib?'best':'')+'"&gt;&lt;td&gt;&lt;strong&gt;'+r.n+'&lt;/strong&gt;'+(r.nt?' &lt;small&gt;'+r.nt+'&lt;/small&gt;':'')+'&lt;/td&gt;&lt;td class="n"&gt;'+F(r.np)+' руб.&lt;/td&gt;&lt;td&gt;'+(!r.av?'[X]':ib?'[OK]':'')+'&lt;/td&gt;&lt;/tr&gt;';}h+='&lt;/tbody&gt;&lt;/table&gt;';h+='&lt;div class="st"&gt;Прибыль по режимам&lt;/div&gt;&lt;div id="c-ch-bars"&gt;&lt;/div&gt;';if(best)h+='&lt;div class="rec"&gt;&lt;h3&gt;Рекомендация: '+best.n+'&lt;/h3&gt;&lt;p&gt;Прибыль: &lt;strong&gt;'+F(best.np)+' руб./год&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;';h+='&lt;/div&gt;';$('c-res').innerHTML=h;fcBars($('c-ch-bars'),{labels:rs.map(function(r){return r.n;}),series:[{name:'Прибыль',color:'#00b4a0',values:rs.map(function(r){return r.np;})}]});saveState();};

// 5 КРЕДИТ
$('cr-btn').onclick=function(){var cost=V('cr-c'),dp=V('cr-d')/100,term=V('cr-t',12),cr=V('cr-r'),lr=V('cr-l'),ts=$('cr-ts').value;var fin=cost*(1-dp);function ann(s,r,m){if(s&lt;=0)return 0;var i=r/100/12;if(i===0)return s/m;var f=Math.pow(1+i,m);return s*(i*f)/(f-1);}var cm=ann(fin,cr,term),ctp=cm*term+cost*dp,cop=ctp-cost;var lte=fin*(lr/100)*(term/12),ltp=fin+lte+cost*dp,lm=(fin+lte)/term;var tr=0,tsl=0,tsc=0;if(ts==='osn'){tr=.25;tsl=lm*term*tr;tsc=cop*tr;}else if(ts==='usn15'){tr=.15;tsl=lm*term*tr;tsc=cop*tr;}var ce=ctp-tsc,le=ltp-tsl;var h='&lt;div class="res"&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th class="n"&gt;Кредит&lt;/th&gt;&lt;th class="n"&gt;Лизинг&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';h+='&lt;tr&gt;&lt;td&gt;Платёж/мес&lt;/td&gt;&lt;td class="n"&gt;'+F(cm)+' руб.&lt;/td&gt;&lt;td class="n"&gt;'+F(lm)+' руб.&lt;/td&gt;&lt;/tr&gt;';h+='&lt;tr&gt;&lt;td&gt;Переплата&lt;/td&gt;&lt;td class="n"&gt;'+F(cop)+' руб.&lt;/td&gt;&lt;td class="n"&gt;'+F(lte)+' руб.&lt;/td&gt;&lt;/tr&gt;';h+='&lt;tr&gt;&lt;td&gt;Итого&lt;/td&gt;&lt;td class="n"&gt;'+F(ctp)+' руб.&lt;/td&gt;&lt;td class="n"&gt;'+F(ltp)+' руб.&lt;/td&gt;&lt;/tr&gt;';if(tr&gt;0)h+='&lt;tr&gt;&lt;td&gt;Экономия налогов&lt;/td&gt;&lt;td class="n s"&gt;-'+F(tsc)+'&lt;/td&gt;&lt;td class="n s"&gt;-'+F(tsl)+'&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Реально&lt;/strong&gt;&lt;/td&gt;&lt;td class="n"&gt;&lt;strong&gt;'+F(ce)+'&lt;/strong&gt;&lt;/td&gt;&lt;td class="n"&gt;&lt;strong&gt;'+F(le)+'&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;';h+='&lt;/tbody&gt;&lt;/table&gt;';var w=tr&gt;0?(ce&lt;le?'Кредит':'Лизинг'):(cop&lt;lte?'Кредит':'Лизинг');h+='&lt;div class="rec"&gt;&lt;h3&gt;'+w+' выгоднее&lt;/h3&gt;&lt;p&gt;Экономия: &lt;strong&gt;'+F(tr&gt;0?Math.abs(ce-le):Math.abs(cop-lte))+' руб.&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;';$('cr-res').innerHTML=h;saveState();};

// 6 ДИВИДЕНДЫ
$('d-btn').onclick=function(){var pr=V('d-p'),am=V('d-a'),fd=V('d-f',1),res=$('d-r').value==='y';var aa=Math.min(am,pr),ie=am&gt;pr;var nd=!res?aa*.15:aa&lt;=24e5?aa*.13:24e5*.13+(aa-24e5)*.15;var net=aa-nd,sn=aa*.13,sc=aa*.30,st=aa+sc;var h='&lt;div class="res"&gt;';if(ie)h+='&lt;div class="wr err"&gt;[!] Нельзя больше прибыли ('+F(pr)+' руб.).&lt;/div&gt;';h+='&lt;div class="ri hl"&gt;&lt;span&gt;На руки&lt;/span&gt;&lt;span class="v s"&gt;'+F(net)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;НДФЛ&lt;/span&gt;&lt;span class="v d"&gt;'+F(nd)+' руб. ('+(aa&gt;0?P(nd/aa):'0%')+')&lt;/span&gt;&lt;/div&gt;';if(fd&gt;1)h+='&lt;div class="ri"&gt;&lt;span&gt;На каждого ('+fd+')&lt;/span&gt;&lt;span class="v"&gt;'+F(net/fd)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th class="n"&gt;Дивиденды&lt;/th&gt;&lt;th class="n"&gt;Зарплата&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';h+='&lt;tr&gt;&lt;td&gt;НДФЛ&lt;/td&gt;&lt;td class="n"&gt;'+F(nd)+'&lt;/td&gt;&lt;td class="n"&gt;'+F(sn)+'&lt;/td&gt;&lt;/tr&gt;';h+='&lt;tr&gt;&lt;td&gt;Взносы&lt;/td&gt;&lt;td class="n s"&gt;0&lt;/td&gt;&lt;td class="n"&gt;'+F(sc)+'&lt;/td&gt;&lt;/tr&gt;';h+='&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Расход ООО&lt;/strong&gt;&lt;/td&gt;&lt;td class="n"&gt;&lt;strong&gt;'+F(aa)+'&lt;/strong&gt;&lt;/td&gt;&lt;td class="n"&gt;&lt;strong&gt;'+F(st)+'&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;';if(st&gt;aa)h+='&lt;div class="rec"&gt;&lt;h3&gt;Дивиденды выгоднее&lt;/h3&gt;&lt;p&gt;Экономия: &lt;strong&gt;'+F(st-aa)+' руб.&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;';h+='&lt;/div&gt;';$('d-res').innerHTML=h;saveState();};

// 7 КУДИР
var kOps=[],kId=1;function rKOps(){if(kOps.length===0){$('k-ops').innerHTML='&lt;div style="color:#999;text-align:center;padding:.3rem;font-size:.8rem"&gt;Нет операций&lt;/div&gt;';return;}var html='';for(var i=0;i&lt;kOps.length;i++){var o=kOps[i];html+='&lt;div class="op-item" data-id="'+o.id+'"&gt;&lt;input type="date" class="k-d" value="'+o.d+'"&gt;&lt;input type="text" class="k-dc" placeholder="N" value="'+o.dc+'"&gt;&lt;input type="text" class="k-ds" placeholder="Описание" value="'+o.ds+'"&gt;&lt;select class="k-t"&gt;&lt;option value="i" '+(o.t==='i'?'selected':'')+'&gt;Доход&lt;/option&gt;&lt;option value="e" '+(o.t==='e'?'selected':'')+'&gt;Расход&lt;/option&gt;&lt;/select&gt;&lt;input type="number" class="k-a" min="0" value="'+o.a+'"&gt;&lt;button class="rm" data-id="'+o.id+'"&gt;x&lt;/button&gt;&lt;/div&gt;';}$('k-ops').innerHTML=html;document.querySelectorAll('#k-ops .rm').forEach(function(b){b.onclick=function(){kOps=kOps.filter(function(x){return x.id!=b.dataset.id;});rKOps();};});document.querySelectorAll('#k-ops .op-item').forEach(function(el){var id=+el.dataset.id;var o=null;for(var j=0;j&lt;kOps.length;j++){if(kOps[j].id===id){o=kOps[j];break;}}if(!o)return;el.querySelector('.k-d').onchange=function(e){o.d=e.target.value;};el.querySelector('.k-dc').oninput=function(e){o.dc=e.target.value;};el.querySelector('.k-ds').oninput=function(e){o.ds=e.target.value;};el.querySelector('.k-t').onchange=function(e){o.t=e.target.value;};el.querySelector('.k-a').oninput=function(e){o.a=+e.target.value||0;};});}
$('k-add').onclick=function(){kOps.push({id:kId++,d:new Date().toISOString().split('T')[0],dc:'',ds:'',t:'i',a:0});kOps.sort(function(a,b){return a.d.localeCompare(b.d);});rKOps();};rKOps();
$('k-btn').onclick=function(){var reg=$('k-reg').value,y=V('k-y',2026),nm=$('k-name').value||'ИП',inn=$('k-inn').value||'—';var ops=[];for(var i=0;i&lt;kOps.length;i++){if(kOps[i].d.indexOf(String(y))===0)ops.push(kOps[i]);}var ti=0,te=0;for(var i=0;i&lt;ops.length;i++){if(ops[i].t==='i')ti+=ops[i].a;else te+=ops[i].a;}function gq(d){var m=+d.split('-')[1];return m&lt;=3?0:m&lt;=6?1:m&lt;=9?2:3;}var cum=[];var ci=0,ce=0;var periods=['1 кв.','Полугодие','9 мес.','Год'];for(var pi=0;pi&lt;4;pi++){for(var i=0;i&lt;ops.length;i++){if(gq(ops[i].d)===pi){if(ops[i].t==='i')ci+=ops[i].a;else ce+=ops[i].a;}}cum.push({p:periods[pi],i:ci,e:ce});}var h='&lt;div class="res"&gt;&lt;div class="st"&gt;КУДиР '+y+'&lt;/div&gt;';h+='&lt;div class="ri hl"&gt;&lt;span&gt;Доходы за год&lt;/span&gt;&lt;span class="v"&gt;'+F(ti)+' руб.&lt;/span&gt;&lt;/div&gt;';if(reg==='usn15')h+='&lt;div class="ri"&gt;&lt;span&gt;Расходы&lt;/span&gt;&lt;span class="v"&gt;'+F(te)+' руб.&lt;/span&gt;&lt;/div&gt;&lt;div class="ri"&gt;&lt;span&gt;База&lt;/span&gt;&lt;span class="v"&gt;'+F(Math.max(0,ti-te))+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Период&lt;/th&gt;&lt;th class="n"&gt;Доходы&lt;/th&gt;'+(reg==='usn15'?'&lt;th class="n"&gt;Расходы&lt;/th&gt;':'')+'&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';for(var i=0;i&lt;cum.length;i++){h+='&lt;tr&gt;&lt;td&gt;'+cum[i].p+'&lt;/td&gt;&lt;td class="n"&gt;'+F(cum[i].i)+'&lt;/td&gt;'+(reg==='usn15'?'&lt;td class="n"&gt;'+F(cum[i].e)+'&lt;/td&gt;':'')+'&lt;/tr&gt;';}h+='&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;';$('k-res').innerHTML=h;saveState();};

// 8 КАЛЕНДАРЬ
$('cl-btn').onclick=function(){var r=$('cl-r').value,y=V('cl-y',2026),ev=[];if(r.indexOf('usn')===0){ev.push({d:y+'-04-28',n:'Аванс УСН 1 кв.'},{d:y+'-07-28',n:'Аванс УСН 2 кв.'},{d:y+'-10-28',n:'Аванс УСН 3 кв.'},{d:(y+1)+'-04-28',n:'Налог УСН + декларация'});if(r==='usn_ip'){ev.push({d:y+'-12-28',n:'Фикс. взносы ИП'},{d:(y+1)+'-07-01',n:'1% взносов ИП'});}if(r==='usn_emp'||r==='usn_ooo'){for(var m=1;m&lt;=12;m++)ev.push({d:y+'-'+(m&lt;10?'0':'')+m+'-15',n:'Взносы за сотр.'});}}if(r==='osn'){var qs=[[1,4],[2,7],[3,10],[4,1]];for(var qi=0;qi&lt;qs.length;qi++){var q=qs[qi][0],mm=qs[qi][1];var yy=mm===1?y+1:y;ev.push({d:yy+'-'+(mm&lt;10?'0':'')+mm+'-25',n:'Декларация НДС '+q+' кв.'});for(var i=0;i&lt;3;i++){var mmm=mm+i;var yyy=mmm&gt;12?y+1:y;var md=mmm&gt;12?mmm-12:mmm;ev.push({d:yyy+'-'+(md&lt;10?'0':'')+md+'-28',n:'НДС '+q+' кв. ('+(i+1)+'/3)'});}}ev.push({d:y+'-04-28',n:'Аванс прибыль 1 кв.'},{d:y+'-07-28',n:'Аванс прибыль 2 кв.'},{d:y+'-10-28',n:'Аванс прибыль 3 кв.'},{d:(y+1)+'-03-28',n:'Налог прибыль'});for(var m=1;m&lt;=12;m++)ev.push({d:y+'-'+(m&lt;10?'0':'')+m+'-15',n:'Взносы'});}ev.sort(function(a,b){return a.d.localeCompare(b.d);});var h='&lt;div class="res"&gt;&lt;div class="st"&gt;Календарь '+y+' ('+ev.length+' событий)&lt;/div&gt;';for(var i=0;i&lt;ev.length;i++){h+='&lt;div class="ri"&gt;&lt;span&gt;'+ev[i].d.split('-').reverse().join('.')+' - '+ev[i].n+'&lt;/span&gt;&lt;/div&gt;';}h+='&lt;/div&gt;';$('cl-res').innerHTML=h;saveState();};

// 9 ПЛАТЁЖКА
var KBC={usn6:'182 1 05 01011 01 1000 110',usn15:'182 1 05 01021 01 1000 110',nds:'182 1 03 01000 01 1000 110',profit:'182 1 01 01011 01 1000 110',ndfl:'182 1 01 02010 01 1000 110',contrib:'182 1 02 01000 01 1000 160',ip_fix:'182 1 02 01000 01 1000 160'};
$('p-btn').onclick=function(){var t=$('p-t').value,a=V('p-a'),inn=$('p-inn').value||'—',ok=$('p-ok').value||'—',nm=$('p-nm').value||'—';var h='&lt;div class="res"&gt;&lt;div class="st"&gt;Платёжное поручение&lt;/div&gt;';var rows=[['Дата',new Date().toLocaleDateString('ru-RU')],['Плательщик',nm],['ИНН',inn],['Получатель','УФК (ИФНС)'],['КБК',KBC[t]||'—'],['ОКТМО',ok],['Сумма',F(a)+' руб.']];for(var i=0;i&lt;rows.length;i++){h+='&lt;div class="pf-row"&gt;&lt;span class="l"&gt;'+rows[i][0]+'&lt;/span&gt;&lt;span class="r"&gt;'+rows[i][1]+'&lt;/span&gt;&lt;/div&gt;';}h+='&lt;div class="wr"&gt;[!] Реквизиты для Москвы. Уточните в ИФНС.&lt;/div&gt;&lt;/div&gt;';$('p-res').innerHTML=h;saveState();};

// 10 ПРОВЕРКИ
$('ch-r').onchange=function(){$('ch-vat-row').style.display=$('ch-r').value==='osn'?'grid':'none';};
$('ch-btn').onclick=function(){var r=$('ch-r').value,y=V('ch-y',2026),p=T[y],inc=V('ch-i'),exp=V('ch-e'),emp=V('ch-emp'),os=V('ch-os'),vo=V('ch-vo'),vi=V('ch-vi');var checks=[],lim=y===2026?2868e5:2724e5;if(r==='usn6'||r==='usn15'){checks.push(inc&gt;lim?{s:'f',t:'Доход '+F(inc)+' &gt; лимита '+F(lim)+'. УСН утрачено.'}:inc&gt;lim*.8?{s:'w',t:'Доход приближается к лимиту. Осталось '+F(lim-inc)+'.'}:{s:'p',t:'Доход в пределах лимита УСН.'});if(y&gt;=2026)checks.push(inc&gt;p.vt?{s:'w',t:'Доход &gt; 20 млн - нужен НДС.'}:{s:'p',t:'Доход &lt; 20 млн - НДС не нужен.'});checks.push(emp&gt;130?{s:'f',t:'Сотрудников '+emp+' &gt; 130!'}:emp&gt;100?{s:'w',t:'Сотрудников близко к лимиту 130.'}:{s:'p',t:'Сотрудники в пределах.'});checks.push(os&gt;2e8?{s:'f',t:'ОС &gt; 200 млн!'}:{s:'p',t:'ОС в пределах.'});if(r==='usn15')checks.push(exp&gt;inc?{s:'w',t:'Расходы &gt; доходов. Мин. налог 1%: '+F(inc*.01)+' руб.'}:{s:'p',t:'База: '+F(inc-exp)+' руб.'});}if(r==='osn')checks.push(vi&gt;vo?{s:'f',t:'НДС к вычету &gt; начисленного!'}:vi&gt;vo*.9?{s:'w',t:'Вычет &gt; 90%. Риск проверки.'}:{s:'p',t:'НДС к уплате: '+F(vo-vi)+' руб.'});checks.push({s:'p',t:'Фикс. взносы '+y+': '+F(p.fi)+' руб. до 28.12.'+y+'.'});if(inc&gt;3e5)checks.push({s:'p',t:'1% взносов: '+F(Math.min((inc-3e5)*.01,p.cap))+' руб. до 01.07.'+(y+1)+'.'});var fails=0,warns=0;for(var i=0;i&lt;checks.length;i++){if(checks[i].s==='f')fails++;if(checks[i].s==='w')warns++;}var h='&lt;div class="res"&gt;&lt;div class="st"&gt;Проверки ('+checks.length+')&lt;/div&gt;';for(var i=0;i&lt;checks.length;i++){var c=checks[i];h+='&lt;div class="ci '+(c.s==='f'?'fail':c.s==='w'?'warn':'pass')+'"&gt;&lt;span&gt;'+(c.s==='f'?'[X]':c.s==='w'?'[!]':'[OK]')+'&lt;/span&gt;&lt;span&gt;'+c.t+'&lt;/span&gt;&lt;/div&gt;';}if(fails&gt;0)h+='&lt;div class="wr err"&gt;[X] Критических ошибок: '+fails+'&lt;/div&gt;';else if(warns&gt;0)h+='&lt;div class="wr"&gt;[!] Предупреждений: '+warns+'&lt;/div&gt;';else h+='&lt;div class="wr ok"&gt;[OK] Все проверки пройдены.&lt;/div&gt;';h+='&lt;/div&gt;';$('ch-res').innerHTML=h;saveState();};

// 11 КОЭФФИЦИЕНТЫ
$('r-btn').onclick=function(){var rev=V('r-rev'),cogs=V('r-cogs'),np=V('r-np'),ca=V('r-ca'),cl=V('r-cl'),fa=V('r-fa'),inv=V('r-inv'),fc=V('r-fc');var ta=ca+fa,gp=rev-cogs,ros=rev&gt;0?np/rev:0,roa=ta&gt;0?np/ta:0;var liq=cl&gt;0?ca/cl:0,qr=cl&gt;0?(ca-inv)/cl:0,turn=ta&gt;0?rev/ta:0;var cm=rev&gt;0?1-cogs/rev:0,be=cm&gt;0?fc/cm:0;var h='&lt;div class="res"&gt;&lt;div class="metric-cards"&gt;';h+='&lt;div class="mc '+(ros&gt;.1?'good':ros&gt;0?'mid':'bad')+'"&gt;&lt;div class="mc-val"&gt;'+P(ros)+'&lt;/div&gt;&lt;div class="mc-label"&gt;ROS&lt;/div&gt;&lt;/div&gt;';h+='&lt;div class="mc '+(roa&gt;.05?'good':roa&gt;0?'mid':'bad')+'"&gt;&lt;div class="mc-val"&gt;'+P(roa)+'&lt;/div&gt;&lt;div class="mc-label"&gt;ROA&lt;/div&gt;&lt;/div&gt;';h+='&lt;div class="mc '+(liq&gt;=2?'good':liq&gt;=1?'mid':'bad')+'"&gt;&lt;div class="mc-val"&gt;'+liq.toFixed(2)+'&lt;/div&gt;&lt;div class="mc-label"&gt;Ликвидность&lt;/div&gt;&lt;/div&gt;';h+='&lt;div class="mc '+(qr&gt;=1?'good':'bad')+'"&gt;&lt;div class="mc-val"&gt;'+qr.toFixed(2)+'&lt;/div&gt;&lt;div class="mc-label"&gt;Быстрая ликв.&lt;/div&gt;&lt;/div&gt;';h+='&lt;div class="mc"&gt;&lt;div class="mc-val"&gt;'+turn.toFixed(2)+'&lt;/div&gt;&lt;div class="mc-label"&gt;Оборачив.&lt;/div&gt;&lt;/div&gt;';h+='&lt;div class="mc '+(be&gt;0?'good':'bad')+'"&gt;&lt;div class="mc-val"&gt;'+F(be)+'&lt;/div&gt;&lt;div class="mc-label"&gt;Безубыт. руб/мес&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;';if(ros&gt;.15)h+='&lt;div class="ci pass"&gt;[OK] ROS '+P(ros)+' - отлично (&gt;15%).&lt;/div&gt;';else if(ros&gt;.05)h+='&lt;div class="ci pass"&gt;[OK] ROS '+P(ros)+' - хорошо.&lt;/div&gt;';else if(ros&gt;0)h+='&lt;div class="ci warn"&gt;[!] ROS '+P(ros)+' - низко.&lt;/div&gt;';else h+='&lt;div class="ci fail"&gt;[X] Убыток.&lt;/div&gt;';if(liq&lt;1)h+='&lt;div class="ci fail"&gt;[X] Ликвидность &lt; 1.&lt;/div&gt;';else if(liq&lt;2)h+='&lt;div class="ci warn"&gt;[!] Ликвидность '+liq.toFixed(2)+' - запас мал.&lt;/div&gt;';else h+='&lt;div class="ci pass"&gt;[OK] Ликвидность '+liq.toFixed(2)+' - запас хороший.&lt;/div&gt;';if(be&gt;0)h+='&lt;div class="ci pass"&gt;[OK] Безубыточность: '+F(be)+' руб./мес.&lt;/div&gt;';h+='&lt;/div&gt;';$('r-res').innerHTML=h;saveState();};

// 12 ОТПУСК
$('v-btn').onclick=function(){var t=$('v-t').value,sal=V('v-sal'),days=V('v-d',14),exp=V('v-e');var total=sal*12,avgD=total/12/29.3;var h='&lt;div class="res"&gt;';if(t==='vac'){var pay=avgD*days;h+='&lt;div class="ri"&gt;&lt;span&gt;Среднедневной&lt;/span&gt;&lt;span class="v"&gt;'+F(avgD)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri hl"&gt;&lt;span&gt;Отпускные за '+days+' дн.&lt;/span&gt;&lt;span class="v s"&gt;'+F(pay)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;НДФЛ 13%&lt;/span&gt;&lt;span class="v d"&gt;'+F(pay*.13)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;На руки&lt;/span&gt;&lt;span class="v"&gt;'+F(pay*.87)+' руб.&lt;/span&gt;&lt;/div&gt;';}else{var pct=exp&gt;=8?1:exp&gt;=5?.8:.6;var pay2=avgD*days*pct;h+='&lt;div class="ri"&gt;&lt;span&gt;Стаж '+exp+' лет -&gt; '+(pct*100)+'%&lt;/span&gt;&lt;span class="v"&gt;'+(pct*100)+'%&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri hl"&gt;&lt;span&gt;Больничные за '+days+' дн.&lt;/span&gt;&lt;span class="v s"&gt;'+F(pay2)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;НДФЛ&lt;/span&gt;&lt;span class="v d"&gt;'+F(pay2*.13)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;На руки&lt;/span&gt;&lt;span class="v"&gt;'+F(pay2*.87)+' руб.&lt;/span&gt;&lt;/div&gt;';}h+='&lt;/div&gt;';$('v-res').innerHTML=h;saveState();};

// 13 АМОРТИЗАЦИЯ
$('a-btn').onclick=function(){var nm=$('a-nm').value||'Актив',cost=V('a-c'),life=V('a-l',12),method=$('a-m').value;var h='&lt;div class="res"&gt;';if(method==='lin'){var m=cost/life;h+='&lt;div class="ri hl"&gt;&lt;span&gt;'+nm+': ежемесячно&lt;/span&gt;&lt;span class="v"&gt;'+F(m)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Срок&lt;/span&gt;&lt;span class="v"&gt;'+life+' мес ('+(life/12).toFixed(1)+' лет)&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="st"&gt;По годам&lt;/div&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Год&lt;/th&gt;&lt;th class="n"&gt;Амортизация&lt;/th&gt;&lt;th class="n"&gt;Остаток&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';for(var y=0;y&lt;Math.ceil(life/12);y++){var ya=Math.min(12,life-y*12)*m;var rem=cost-(y+1)*12*m;h+='&lt;tr&gt;&lt;td&gt;Год '+(y+1)+'&lt;/td&gt;&lt;td class="n"&gt;'+F(ya)+'&lt;/td&gt;&lt;td class="n"&gt;'+F(Math.max(0,rem))+'&lt;/td&gt;&lt;/tr&gt;';}h+='&lt;/tbody&gt;&lt;/table&gt;';}else{var rem2=cost;var rate=2/life;h+='&lt;div class="st"&gt;'+nm+' - по годам&lt;/div&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Год&lt;/th&gt;&lt;th class="n"&gt;Амортизация&lt;/th&gt;&lt;th class="n"&gt;Остаток&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';for(var y2=0;y2&lt;Math.ceil(life/12);y2++){var ya2=0;for(var m2=0;m2&lt;Math.min(12,life-y2*12);m2++){var a2=rem2*rate;ya2+=a2;rem2-=a2;}h+='&lt;tr&gt;&lt;td&gt;Год '+(y2+1)+'&lt;/td&gt;&lt;td class="n"&gt;'+F(ya2)+'&lt;/td&gt;&lt;td class="n"&gt;'+F(Math.max(0,rem2))+'&lt;/td&gt;&lt;/tr&gt;';}h+='&lt;/tbody&gt;&lt;/table&gt;';}h+='&lt;/div&gt;';$('a-res').innerHTML=h;saveState();};

// 14 ДЕКЛАРАЦИЯ
$('dc-btn').onclick=function(){var y=V('dc-y',2026),p=T[y],nm=$('dc-nm').value||'ИП',inn=$('dc-inn').value||'—';var q=[V('dc-q1'),V('dc-q2'),V('dc-q3'),V('dc-q4')],c=[V('dc-c1'),V('dc-c2'),V('dc-c3'),V('dc-c4')];var tx=[];for(var i=0;i&lt;4;i++)tx.push(q[i]*p.ur);var a=[];var prev=0;for(var i=0;i&lt;4;i++){var adv=Math.max(0,tx[i]-c[i]-prev);a.push(adv);prev+=adv;}var totalA=0;for(var i=0;i&lt;4;i++)totalA+=a[i];var h='&lt;div class="res"&gt;&lt;div class="st"&gt;Декларация УСН '+y+'&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;'+nm+' / ИНН '+inn+'&lt;/span&gt;&lt;span class="v"&gt;Доходы 6%&lt;/span&gt;&lt;/div&gt;';h+='&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Период&lt;/th&gt;&lt;th class="n"&gt;Доход&lt;/th&gt;&lt;th class="n"&gt;Налог&lt;/th&gt;&lt;th class="n"&gt;Взносы&lt;/th&gt;&lt;th class="n"&gt;Аванс&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';var periods=['1 кв.','Полугодие','9 мес.','Год'];for(var i=0;i&lt;4;i++){h+='&lt;tr&gt;&lt;td&gt;'+periods[i]+'&lt;/td&gt;&lt;td class="n"&gt;'+F(q[i])+'&lt;/td&gt;&lt;td class="n"&gt;'+F(tx[i])+'&lt;/td&gt;&lt;td class="n"&gt;'+F(c[i])+'&lt;/td&gt;&lt;td class="n"&gt;'+F(a[i])+'&lt;/td&gt;&lt;/tr&gt;';}h+='&lt;/tbody&gt;&lt;/table&gt;';h+='&lt;div class="ri hl"&gt;&lt;span&gt;Итого налог&lt;/span&gt;&lt;span class="v"&gt;'+F(totalA)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;/div&gt;';$('dc-res').innerHTML=h;saveState();};

// 15 ПЛАН-ФАКТ
var plPlanHtml='',plFactHtml='';for(var i=0;i&lt;12;i++){plPlanHtml+='&lt;div class="fg"&gt;&lt;label&gt;'+MN[i]+'&lt;/label&gt;&lt;input type="number" id="pl-p'+i+'" min="0" value="0"&gt;&lt;/div&gt;';plFactHtml+='&lt;div class="fg"&gt;&lt;label&gt;'+MN[i]+'&lt;/label&gt;&lt;input type="number" id="pl-f'+i+'" min="0" value="0"&gt;&lt;/div&gt;';}$('pl-plan').innerHTML=plPlanHtml;$('pl-fact').innerHTML=plFactHtml;
$('pl-btn').onclick=function(){var cat=$('pl-cat').value;var cn={revenue:'Выручка',cogs:'Себестоимость',opex:'Опер. расходы',marketing:'Маркетинг',payroll:'ФОТ',rent:'Аренда',other:'Прочие'};var plan=[],fact=[];for(var i=0;i&lt;12;i++){plan.push(V('pl-p'+i));fact.push(V('pl-f'+i));}var tp=0,tf=0;for(var i=0;i&lt;12;i++){tp+=plan[i];tf+=fact[i];}var dev=tf-tp,devP=tp&gt;0?dev/tp:0;var isRev=cat==='revenue';var h='&lt;div class="res"&gt;';h+='&lt;div class="st"&gt;План-факт: '+cn[cat]+'&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;План&lt;/span&gt;&lt;span class="v"&gt;'+F(tp)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Факт&lt;/span&gt;&lt;span class="v '+((!isRev&amp;&amp;tf&gt;tp)||(isRev&amp;&amp;tf&lt;tp)?'d':'s')+'"&gt;'+F(tf)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri hl"&gt;&lt;span&gt;Отклонение&lt;/span&gt;&lt;span class="v '+((isRev?dev&gt;=0:dev&lt;=0)?'s':'d')+'"&gt;'+(dev&gt;=0?'+':'')+F(dev)+' руб. ('+(dev&gt;=0?'+':'')+P(devP)+')&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="st"&gt;По месяцам&lt;/div&gt;';var maxV=1;for(var i=0;i&lt;12;i++){if(plan[i]&gt;maxV)maxV=plan[i];if(fact[i]&gt;maxV)maxV=fact[i];}for(var i=0;i&lt;12;i++){if(plan[i]===0&amp;&amp;fact[i]===0)continue;var fD=plan[i]&gt;0?(fact[i]-plan[i])/plan[i]:0;var isG=isRev?fact[i]&gt;=plan[i]:fact[i]&lt;=plan[i];h+='&lt;div style="margin-bottom:3px"&gt;&lt;div style="font-size:.68rem;color:#666"&gt;'+MN[i]+' &lt;b style="color:'+(isG?'#28a745':'#dc3545')+'"&gt;'+(fD&gt;=0?'+':'')+(fD*100).toFixed(0)+'%&lt;/b&gt;&lt;/div&gt;';h+='&lt;div class="bar-row"&gt;&lt;span class="bar-label"&gt;План&lt;/span&gt;&lt;div class="bar-track"&gt;&lt;div class="bar-fill plan" style="width:'+Math.min(100,plan[i]/maxV*100)+'%"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="bar-val"&gt;'+F(plan[i])+'&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="bar-row"&gt;&lt;span class="bar-label"&gt;Факт&lt;/span&gt;&lt;div class="bar-track"&gt;&lt;div class="bar-fill fact" style="width:'+Math.min(100,fact[i]/maxV*100)+'%"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="bar-val"&gt;'+F(fact[i])+'&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;';}var over=[];for(var i=0;i&lt;12;i++){if(plan[i]&gt;0&amp;&amp;(isRev?fact[i]&lt;plan[i]:fact[i]&gt;plan[i]))over.push(MN[i]);}if(over.length&gt;0)h+='&lt;div class="wr"&gt;[!] Проблемные месяцы: '+over.join(', ')+'&lt;/div&gt;';else h+='&lt;div class="wr ok"&gt;[OK] Все месяцы в плане.&lt;/div&gt;';h+='&lt;/div&gt;';$('pl-res').innerHTML=h;saveState();};

// 16 CASH FLOW
var cfOps=[],cfId=1;function rCfOps(){if(cfOps.length===0){$('cf-ops').innerHTML='&lt;div style="color:#999;text-align:center;padding:.3rem;font-size:.8rem"&gt;Добавьте операции&lt;/div&gt;';return;}var html='';for(var i=0;i&lt;cfOps.length;i++){var o=cfOps[i];html+='&lt;div class="op-item" data-id="'+o.id+'"&gt;&lt;input type="date" class="cf-d" value="'+o.d+'"&gt;&lt;input type="text" class="cf-n" placeholder="Название" value="'+o.n+'"&gt;&lt;select class="cf-t"&gt;&lt;option value="in" '+(o.t==='in'?'selected':'')+' style="color:#28a745"&gt;Поступление&lt;/option&gt;&lt;option value="out" '+(o.t==='out'?'selected':'')+' style="color:#dc3545"&gt;Платёж&lt;/option&gt;&lt;/select&gt;&lt;input type="number" class="cf-a" min="0" value="'+o.a+'" placeholder="Сумма"&gt;&lt;button class="rm" data-id="'+o.id+'"&gt;x&lt;/button&gt;&lt;/div&gt;';}$('cf-ops').innerHTML=html;document.querySelectorAll('#cf-ops .rm').forEach(function(b){b.onclick=function(){cfOps=cfOps.filter(function(x){return x.id!=b.dataset.id;});rCfOps();};});document.querySelectorAll('#cf-ops .op-item').forEach(function(el){var id=+el.dataset.id;var o=null;for(var j=0;j&lt;cfOps.length;j++){if(cfOps[j].id===id){o=cfOps[j];break;}}if(!o)return;el.querySelector('.cf-d').onchange=function(e){o.d=e.target.value;};el.querySelector('.cf-n').oninput=function(e){o.n=e.target.value;};el.querySelector('.cf-t').onchange=function(e){o.t=e.target.value;};el.querySelector('.cf-a').oninput=function(e){o.a=+e.target.value||0;};});}
$('cf-add').onclick=function(){cfOps.push({id:cfId++,d:new Date().toISOString().split('T')[0],n:'',t:'in',a:0});cfOps.sort(function(a,b){return a.d.localeCompare(b.d);});rCfOps();};rCfOps();
$('cf-btn').onclick=function(){var start=V('cf-start');var ops=cfOps.slice().sort(function(a,b){return a.d.localeCompare(b.d);});var byDate={};for(var i=0;i&lt;ops.length;i++){var o=ops[i];if(!byDate[o.d])byDate[o.d]={inn:0,out:0};if(o.t==='in')byDate[o.d].inn+=o.a;else byDate[o.d].out+=o.a;}var dates=Object.keys(byDate).sort();var balance=start,timeline=[],minB=start,minD='';for(var i=0;i&lt;dates.length;i++){var d=dates[i];balance+=byDate[d].inn-byDate[d].out;timeline.push({d:d,balance:balance,inn:byDate[d].inn,out:byDate[d].out});if(balance&lt;minB){minB=balance;minD=d;}}var h='&lt;div class="res"&gt;';h+='&lt;div class="ri hl"&gt;&lt;span&gt;Начальный остаток&lt;/span&gt;&lt;span class="v"&gt;'+F(start)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Конечный остаток&lt;/span&gt;&lt;span class="v '+(balance&lt;0?'d':'s')+'"&gt;'+F(balance)+' руб.&lt;/span&gt;&lt;/div&gt;';if(minB&lt;0){h+='&lt;div class="wr err"&gt;[!!!] КАССОВЫЙ РАЗРЫВ! Минимум: '+F(minB)+' руб. ('+minD.split('-').reverse().join('.')+')&lt;/div&gt;';h+='&lt;div class="st"&gt;Рекомендации&lt;/div&gt;';h+='&lt;div class="ci fail"&gt;Разрыв '+F(Math.abs(minB))+' руб. Варианты:&lt;/div&gt;';h+='&lt;div class="ci warn"&gt;1. Перенесите платёж поставщику.&lt;/div&gt;';h+='&lt;div class="ci warn"&gt;2. Попросите предоплату у клиентов.&lt;/div&gt;';h+='&lt;div class="ci warn"&gt;3. Овердрафт на '+F(Math.abs(minB)*1.5)+' руб.&lt;/div&gt;';}else if(minB&lt;start*.15)h+='&lt;div class="wr"&gt;[!] Остаток падает до '+F(minB)+' руб. Подушка: '+F(start*.3)+' руб.&lt;/div&gt;';else{h+='&lt;div class="wr ok"&gt;[OK] Кассовых разрывов нет. Минимум: '+F(minB)+' руб.&lt;/div&gt;';h+='&lt;div class="ci pass"&gt;Излишек можно разместить на накопительном счёте.&lt;/div&gt;';}if(timeline.length&gt;0){h+='&lt;div class="st"&gt;Движение&lt;/div&gt;';for(var i=0;i&lt;timeline.length;i++){var t=timeline[i];var opsStr=(t.inn&gt;0?'+'+F(t.inn):'')+(t.inn&gt;0&amp;&amp;t.out&gt;0?' / ':'')+(t.out&gt;0?'-'+F(t.out):'');h+='&lt;div class="cf-row"&gt;&lt;span class="cf-date"&gt;'+t.d.split('-').reverse().join('.')+'&lt;/span&gt;&lt;span style="text-align:center;font-size:.7rem"&gt;'+opsStr+'&lt;/span&gt;&lt;span class="cf-val '+(t.balance&gt;=0?'pos':'neg')+'"&gt;'+F(t.balance)+' руб.&lt;/span&gt;&lt;/div&gt;';}h+='&lt;div class="st"&gt;График остатка&lt;/div&gt;&lt;div id="cf-ch-line"&gt;&lt;/div&gt;';}h+='&lt;/div&gt;';$('cf-res').innerHTML=h;if(timeline.length&gt;1){fcLine($('cf-ch-line'),{labels:timeline.map(function(t){return t.d.split('-').reverse().slice(0,2).join('.');}),series:[{name:'Остаток',color:'#17a2b8',values:timeline.map(function(t){return t.balance;})}]});}saveState();};

// 17 UNIT-ЭКОНОМИКА
$('ue-btn').onclick=function(){var check=V('ue-check'),cogs=V('ue-cogs'),freq=V('ue-freq',1),cac=V('ue-cac'),clients=V('ue-clients',1),fixed=V('ue-fixed'),tax=$('ue-tax').value;var margin=check-cogs,ltv=margin*freq,ltvCac=cac&gt;0?ltv/cac:Infinity;var mRev=check*clients,mCogs=cogs*clients,mMkt=cac*clients,mGross=mRev-mCogs-mMkt,mPBT=mGross-fixed;var taxAmt=tax==='usn6'?mRev*.06:tax==='usn15'?Math.max(0,mRev-mCogs-mMkt-fixed)*.15:Math.max(0,mPBT)*.25;var mNet=mPBT-taxAmt;var h='&lt;div class="res"&gt;&lt;div class="metric-cards"&gt;';h+='&lt;div class="mc '+(margin&gt;0?'good':'bad')+'"&gt;&lt;div class="mc-val"&gt;'+F(margin)+'&lt;/div&gt;&lt;div class="mc-label"&gt;Маржа/шт&lt;/div&gt;&lt;/div&gt;';h+='&lt;div class="mc '+(ltv&gt;0?'good':'bad')+'"&gt;&lt;div class="mc-val"&gt;'+F(ltv)+'&lt;/div&gt;&lt;div class="mc-label"&gt;LTV&lt;/div&gt;&lt;/div&gt;';h+='&lt;div class="mc '+(cac&gt;0?'mid':'good')+'"&gt;&lt;div class="mc-val"&gt;'+F(cac)+'&lt;/div&gt;&lt;div class="mc-label"&gt;CAC&lt;/div&gt;&lt;/div&gt;';h+='&lt;div class="mc '+(ltvCac&gt;=3?'good':ltvCac&gt;=1?'mid':'bad')+'"&gt;&lt;div class="mc-val"&gt;'+(ltvCac===Infinity?'---':ltvCac.toFixed(1))+'&lt;/div&gt;&lt;div class="mc-label"&gt;LTV/CAC&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;';if(ltvCac&gt;=3)h+='&lt;div class="ci pass"&gt;[OK] LTV/CAC = '+ltvCac.toFixed(1)+' (&gt;3). Масштабируем!&lt;/div&gt;';else if(ltvCac&gt;=1)h+='&lt;div class="ci warn"&gt;[!] LTV/CAC = '+ltvCac.toFixed(1)+' (1-3). Запас мал.&lt;/div&gt;';else h+='&lt;div class="ci fail"&gt;[X] LTV/CAC &lt; 1. Не масштабируем!&lt;/div&gt;';h+='&lt;div class="st"&gt;Месячный P&amp;L ('+clients+' клиентов)&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Выручка&lt;/span&gt;&lt;span class="v"&gt;'+F(mRev)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Себестоимость&lt;/span&gt;&lt;span class="v d"&gt;-'+F(mCogs)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Маркетинг&lt;/span&gt;&lt;span class="v d"&gt;-'+F(mMkt)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Постоянные&lt;/span&gt;&lt;span class="v d"&gt;-'+F(fixed)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Налог&lt;/span&gt;&lt;span class="v d"&gt;-'+F(taxAmt)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri hl"&gt;&lt;span&gt;Чистая прибыль/мес&lt;/span&gt;&lt;span class="v '+(mNet&gt;=0?'s':'d')+'"&gt;'+F(mNet)+' руб.&lt;/span&gt;&lt;/div&gt;';if(mNet&gt;0)h+='&lt;div class="ci pass"&gt;Каждый новый клиент приносит '+F(mNet/clients)+' руб.&lt;/div&gt;';else h+='&lt;div class="wr err"&gt;[!] Убыток '+F(Math.abs(mNet))+' руб./мес.&lt;/div&gt;';h+='&lt;/div&gt;';$('ue-res').innerHTML=h;saveState();};

// 18 НПД
$('np-btn').onclick=function(){var phys=V('np-phys'),legal=V('np-legal'),bonus=V('np-bonus'),paid=V('np-paid');var total=phys+legal,LIMIT=24e5;var taxPhys=phys*.04,taxLegal=legal*.06;var taxBefore=taxPhys+taxLegal;var bonusApplied=Math.min(bonus,taxBefore);var taxAfterBonus=Math.max(0,taxBefore-bonusApplied);var taxDue=Math.max(0,taxAfterBonus-paid);var effRate=total&gt;0?taxDue/total:0;var h='&lt;div class="res"&gt;';h+='&lt;div class="ri hl"&gt;&lt;span&gt;НПД к уплате&lt;/span&gt;&lt;span class="v '+(taxDue&gt;0?'':'s')+'"&gt;'+F(taxDue)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;От физлиц (4%)&lt;/span&gt;&lt;span class="v"&gt;'+F(phys)+' руб. -&gt; '+F(taxPhys)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;От юрлиц (6%)&lt;/span&gt;&lt;span class="v"&gt;'+F(legal)+' руб. -&gt; '+F(taxLegal)+' руб.&lt;/span&gt;&lt;/div&gt;';if(bonusApplied&gt;0)h+='&lt;div class="ri"&gt;&lt;span&gt;Бонус&lt;/span&gt;&lt;span class="v s"&gt;-'+F(bonusApplied)+' руб.&lt;/span&gt;&lt;/div&gt;';if(paid&gt;0)h+='&lt;div class="ri"&gt;&lt;span&gt;Уплачено&lt;/span&gt;&lt;span class="v s"&gt;-'+F(paid)+' руб.&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Эфф. ставка&lt;/span&gt;&lt;span class="v"&gt;'+P(effRate)+'&lt;/span&gt;&lt;/div&gt;';if(total&gt;LIMIT)h+='&lt;div class="wr err"&gt;[!!!] Доход '+F(total)+' &gt; лимита НПД '+F(LIMIT)+' руб.! Переходите на УСН.&lt;/div&gt;';else if(total&gt;LIMIT*.8)h+='&lt;div class="wr"&gt;[!] Приближается к лимиту. Осталось '+F(LIMIT-total)+' руб.&lt;/div&gt;';else h+='&lt;div class="wr ok"&gt;[OK] В пределах лимита. Запас: '+F(LIMIT-total)+' руб.&lt;/div&gt;';if(total&gt;0){var usn6Tax=Math.max(0,total*.06-57390);if(usn6Tax&lt;taxDue)h+='&lt;div class="rec"&gt;&lt;h3&gt;Совет&lt;/h3&gt;&lt;p&gt;УСН 6% может быть выгоднее: '+F(usn6Tax)+' руб. vs НПД '+F(taxDue)+' руб.&lt;/p&gt;&lt;/div&gt;';else h+='&lt;div class="rec"&gt;&lt;h3&gt;Совет&lt;/h3&gt;&lt;p&gt;НПД выгоднее УСН для вашего объёма.&lt;/p&gt;&lt;/div&gt;';}h+='&lt;/div&gt;';$('np-res').innerHTML=h;saveState();};

// 19 ЧТО ЕСЛИ
function calcSc(rev,vari,fix,taxMode){var gm=rev-vari,pbt=gm-fix;var tax=taxMode==='usn6'?rev*.06:taxMode==='usn15'?Math.max(0,rev-vari-fix)*.15:taxMode==='osn'?Math.max(0,pbt)*.25:rev*.04;var np=pbt-tax,m=rev&gt;0?np/rev:0;return{rev:rev,vari:vari,fix:fix,gm:gm,pbt:pbt,tax:tax,np:np,m:m};}
$('wi-btn').onclick=function(){var bRev=V('wi-rev'),bVar=V('wi-var'),bFix=V('wi-fix'),taxM=$('wi-tax').value,param=$('wi-param').value;var bVal=V('wi-b-val'),cVal=V('wi-c-val'),bNm=$('wi-b-name').value||'Сценарий Б',cNm=$('wi-c-name').value||'Сценарий В';function apply(ch){var rev=bRev,vari=bVar,fix=bFix;switch(param){case 'rev_pct':rev=bRev*(1+ch/100);break;case 'var_pct':vari=bVar*(1+ch/100);break;case 'fix_pct':fix=bFix*(1+ch/100);break;case 'staff_add':fix=bFix+ch*80000;break;}return calcSc(rev,vari,fix,taxM);}var sA=calcSc(bRev,bVar,bFix,taxM),sB=apply(bVal),sC=apply(cVal);var sc=[{n:'Базовый (А)',d:sA,c:'#00b4a0'},{n:bNm+' (Б)',d:sB,c:'#4ecdc4'},{n:cNm+' (В)',d:sC,c:'#ff6b6b'}];var h='&lt;div class="res"&gt;&lt;div class="st"&gt;Сравнение сценариев&lt;/div&gt;';h+='&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Показатель&lt;/th&gt;';for(var i=0;i&lt;sc.length;i++){h+='&lt;th class="n" style="color:'+sc[i].c+'"&gt;'+sc[i].n+'&lt;/th&gt;';}h+='&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';var rows=[['Выручка',function(s){return F(s.rev);}],['Перем. расходы',function(s){return F(s.vari);}],['Пост. расходы',function(s){return F(s.fix);}],['Валовая',function(s){return F(s.gm);}],['Налог',function(s){return F(s.tax);}],['Чистая прибыль',function(s){return F(s.np);}],['Маржа',function(s){return P(s.m);}]];for(var ri=0;ri&lt;rows.length;ri++){h+='&lt;tr&gt;&lt;td&gt;'+rows[ri][0]+'&lt;/td&gt;';for(var si=0;si&lt;sc.length;si++){var isNeg=sc[si].d.np&lt;0&amp;&amp;rows[ri][0]==='Чистая прибыль';h+='&lt;td class="n" style="'+(isNeg?'color:#dc3545;font-weight:700':'')+'"&gt;'+rows[ri][1](sc[si].d)+'&lt;/td&gt;';}h+='&lt;/tr&gt;';}h+='&lt;/tbody&gt;&lt;/table&gt;';h+='&lt;div class="st"&gt;Прибыль по сценариям&lt;/div&gt;&lt;div id="wi-ch-bars"&gt;&lt;/div&gt;';h+='&lt;div class="st"&gt;Отклонение от базового&lt;/div&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th class="n"&gt;'+sc[1].n+'&lt;/th&gt;&lt;th class="n"&gt;'+sc[2].n+'&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';var dRows=[['Выручка',function(s){return s.rev-sA.rev;}],['Прибыль',function(s){return s.np-sA.np;}]];for(var di=0;di&lt;dRows.length;di++){h+='&lt;tr&gt;&lt;td&gt;'+dRows[di][0]+'&lt;/td&gt;';for(var si2=1;si2&lt;=2;si2++){var v=dRows[di][1](sc[si2].d);h+='&lt;td class="n" style="color:'+(v&gt;0?'#28a745':v&lt;0?'#dc3545':'')+'"&gt;'+(v&gt;0?'+':'')+F(v)+' руб.&lt;/td&gt;';}h+='&lt;/tr&gt;';}h+='&lt;/tbody&gt;&lt;/table&gt;';var best=sc[0],worst=sc[0];for(var i=1;i&lt;sc.length;i++){if(sc[i].d.np&gt;best.d.np)best=sc[i];if(sc[i].d.np&lt;worst.d.np)worst=sc[i];}h+='&lt;div class="st"&gt;Рекомендации&lt;/div&gt;';if(best.d.np&gt;sA.np)h+='&lt;div class="ci pass"&gt;[OK] "'+best.n+'" даёт +'+F(best.d.np-sA.np)+' руб./мес.&lt;/div&gt;';if(worst.d.np&lt;0)h+='&lt;div class="ci fail"&gt;[X] "'+worst.n+'" -&gt; убыток '+F(Math.abs(worst.d.np))+' руб./мес. Подушка: '+F(Math.abs(worst.d.np)*3)+' руб.&lt;/div&gt;';if(sA.np&gt;0&amp;&amp;worst.d.np&lt;0){var run=Math.floor(sA.np/Math.abs(worst.d.np));h+='&lt;div class="ci warn"&gt;[!] Запас прочности: '+run+' мес.&lt;/div&gt;';}h+='&lt;div class="st"&gt;Безубыточность&lt;/div&gt;';for(var i=0;i&lt;sc.length;i++){var s=sc[i];var cm2=s.d.rev&gt;0?1-s.d.vari/s.d.rev:0;var be=cm2&gt;0?s.d.fix/cm2:0;var safe=s.d.rev&gt;0?(s.d.rev-be)/s.d.rev:0;h+='&lt;div class="ri"&gt;&lt;span&gt;'+s.n+'&lt;/span&gt;&lt;span class="v"&gt;'+F(be)+' руб./мес &lt;small style="color:#666"&gt;(запас '+P(safe)+')&lt;/small&gt;&lt;/span&gt;&lt;/div&gt;';}h+='&lt;/div&gt;';$('wi-res').innerHTML=h;fcBars($('wi-ch-bars'),{labels:sc.map(function(s){return s.n;}),series:[{name:'Чистая прибыль',color:'#00b4a0',values:sc.map(function(s){return s.d.np;})}]});saveState();};

// 20 ФИНАНСОВЫЙ ПЛАН
var fpSeasonHtml='';for(var si=0;si&lt;12;si++){fpSeasonHtml+='&lt;div class="fg"&gt;&lt;label&gt;'+MN[si]+'&lt;/label&gt;&lt;input type="number" id="fp-s'+si+'" min="0.1" max="3" step="0.1" value="1.0"&gt;&lt;/div&gt;';}$('fp-season').innerHTML=fpSeasonHtml;
$('fp-btn').onclick=function(){
var baseRev=V('fp-rev',1000000),growthPct=V('fp-growth',3)/100,cogsPct=V('fp-cogs',60)/100,baseFixed=V('fp-fixed',250000),fixedGrowthPct=V('fp-fgrowth',1)/100,startCash=V('fp-start',500000),taxMode=$('fp-tax').value,horizon=V('fp-horizon',12);
var invSum=V('fp-inv-sum',0),invMonth=V('fp-inv-month',1),hireMonth=V('fp-hire-month',0),hireCount=V('fp-hire-count',0),hireSalary=V('fp-hire-salary',60000),hireRate=+($('fp-hire-rate').value);
var goalProfit=V('fp-goal-profit',300000),goalMonth=V('fp-goal-month',12);
var season=[];for(var si2=0;si2&lt;12;si2++){season.push(V('fp-s'+si2,1.0));}
function calcMonth(m,revGrowth,revDrop){
var monthIdx=(m-1)%12;var yearIdx=Math.floor((m-1)/12);
var rev=baseRev*Math.pow(1+growthPct*revGrowth,m-1)*season[monthIdx]*revDrop;
var cogs=rev*cogsPct;
var fixed=baseFixed*Math.pow(1+fixedGrowthPct,m-1);
var hireCost=0;if(hireMonth&gt;0&amp;&amp;m&gt;=hireMonth&amp;&amp;hireCount&gt;0){hireCost=hireCount*hireSalary*(1+hireRate);}
var profitBeforeTax=rev-cogs-fixed-hireCost;
var tax=0,profitAfterTax=0;
if(taxMode==='usn6'){tax=rev*0.06;profitAfterTax=profitBeforeTax-tax;}
else if(taxMode==='usn15'){tax=Math.max(0,rev-cogs-fixed-hireCost)*0.15;profitAfterTax=profitBeforeTax-tax;}
else if(taxMode==='osn'){var nds=rev*0.22/1.22;var ndsDeduct=cogs*0.22/1.22;var ndsPayable=Math.max(0,nds-ndsDeduct);var profitTax=Math.max(0,rev-cogs-fixed-hireCost-ndsPayable)*0.25;tax=ndsPayable+profitTax;profitAfterTax=rev-cogs-fixed-hireCost-ndsPayable-profitTax;}
else if(taxMode==='npd'){tax=rev*0.04;profitAfterTax=profitBeforeTax-tax;}
var investment=(m===invMonth)?invSum:0;
return{month:m,monthName:MN[monthIdx]+' '+(2026+yearIdx),revenue:Math.round(rev),cogs:Math.round(cogs),fixed:Math.round(fixed),hireCost:Math.round(hireCost),profitBeforeTax:Math.round(profitBeforeTax),tax:Math.round(tax),profitAfterTax:Math.round(profitAfterTax),investment:investment};
}
function buildScenario(revGrowth,revDrop){
var months=[],cash=startCash,totalProfit=0,totalRevenue=0,totalTax=0,totalInvest=0,minCash=startCash,minCashMonth=0,cashGaps=[];
for(var m=1;m&lt;=horizon;m++){var d=calcMonth(m,revGrowth,revDrop);cash+=d.profitAfterTax-d.investment;d.cash=Math.round(cash);months.push(d);totalProfit+=d.profitAfterTax;totalRevenue+=d.revenue;totalTax+=d.tax;totalInvest+=d.investment;if(cash&lt;minCash){minCash=cash;minCashMonth=m;}if(cash&lt;0)cashGaps.push(m);}
return{months:months,totalProfit:totalProfit,totalRevenue:totalRevenue,totalTax:totalTax,totalInvest:totalInvest,finalCash:Math.round(cash),minCash:Math.round(minCash),minCashMonth:minCashMonth,cashGaps:cashGaps,avgMonthlyProfit:Math.round(totalProfit/horizon)};
}
var scBase=buildScenario(1,1),scOpt=buildScenario(1.5,1),scPess=buildScenario(0.5,1),scStress=buildScenario(1,0.7);
var paybackMonth=null;if(invSum&gt;0){var cumProfit=0;for(var m=0;m&lt;scBase.months.length;m++){cumProfit+=scBase.months[m].profitAfterTax;if(cumProfit&gt;=invSum&amp;&amp;paybackMonth===null){paybackMonth=m+1;}}}
var roi=invSum&gt;0?Math.round((scBase.totalProfit/invSum)*100):0;
var goalReachedMonth=null;for(var m=0;m&lt;scBase.months.length;m++){if(scBase.months[m].profitAfterTax&gt;=goalProfit&amp;&amp;goalReachedMonth===null){goalReachedMonth=m+1;}}
var targetRevForGoal=0;if(goalProfit&gt;0){var effectiveRate=taxMode==='usn6'?0.06:taxMode==='usn15'?0.15*(1-cogsPct):taxMode==='osn'?0.25:0.04;var denominator=1-cogsPct-effectiveRate;if(denominator&gt;0){targetRevForGoal=(goalProfit+baseFixed)/denominator;}}
var h='&lt;div class="res"&gt;';
h+='&lt;div class="st"&gt;Сводка за '+horizon+' месяцев (базовый сценарий)&lt;/div&gt;';
h+='&lt;div class="metric-cards"&gt;';
h+='&lt;div class="mc '+(scBase.totalProfit&gt;0?'good':'bad')+'"&gt;&lt;div class="mc-val"&gt;'+F(scBase.totalProfit)+'&lt;/div&gt;&lt;div class="mc-label"&gt;Суммарная прибыль&lt;/div&gt;&lt;/div&gt;';
h+='&lt;div class="mc"&gt;&lt;div class="mc-val"&gt;'+F(scBase.avgMonthlyProfit)+'&lt;/div&gt;&lt;div class="mc-label"&gt;Средняя прибыль/мес&lt;/div&gt;&lt;/div&gt;';
h+='&lt;div class="mc"&gt;&lt;div class="mc-val"&gt;'+F(scBase.totalRevenue)+'&lt;/div&gt;&lt;div class="mc-label"&gt;Суммарная выручка&lt;/div&gt;&lt;/div&gt;';
h+='&lt;div class="mc"&gt;&lt;div class="mc-val"&gt;'+F(scBase.totalTax)+'&lt;/div&gt;&lt;div class="mc-label"&gt;Суммарные налоги&lt;/div&gt;&lt;/div&gt;';
h+='&lt;div class="mc '+(scBase.finalCash&gt;0?'good':'bad')+'"&gt;&lt;div class="mc-val"&gt;'+F(scBase.finalCash)+'&lt;/div&gt;&lt;div class="mc-label"&gt;Остаток на конец&lt;/div&gt;&lt;/div&gt;';
h+='&lt;div class="mc '+(scBase.minCash&gt;=0?'good':'bad')+'"&gt;&lt;div class="mc-val"&gt;'+F(scBase.minCash)+'&lt;/div&gt;&lt;div class="mc-label"&gt;Мин. остаток (мес '+scBase.minCashMonth+')&lt;/div&gt;&lt;/div&gt;';
h+='&lt;/div&gt;';
if(scBase.cashGaps.length&gt;0){h+='&lt;div class="wr err"&gt;[!!!] КАССОВЫЕ РАЗРЫВЫ в месяцах: '+scBase.cashGaps.join(', ')+'. Мин. остаток: '+F(scBase.minCash)+' руб.&lt;/div&gt;';h+='&lt;div class="ci warn"&gt;Рекомендации: сформируйте подушку, перенесите платежи, откройте кредитную линию.&lt;/div&gt;';}
else{h+='&lt;div class="wr ok"&gt;[OK] Кассовых разрывов нет. Мин. остаток: '+F(scBase.minCash)+' руб. в месяце '+scBase.minCashMonth+'.&lt;/div&gt;';}
h+='&lt;div class="st"&gt;Сравнение сценариев&lt;/div&gt;';
h+='&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Показатель&lt;/th&gt;&lt;th class="n"&gt;Базовый&lt;/th&gt;&lt;th class="n"&gt;Оптимист.&lt;/th&gt;&lt;th class="n"&gt;Пессимист.&lt;/th&gt;&lt;th class="n"&gt;Стресс (-30%)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';
var scRows=[['Суммарная прибыль',function(s){return F(s.totalProfit)+' руб';}],['Средняя прибыль/мес',function(s){return F(s.avgMonthlyProfit)+' руб';}],['Суммарная выручка',function(s){return F(s.totalRevenue)+' руб';}],['Суммарные налоги',function(s){return F(s.totalTax)+' руб';}],['Остаток на конец',function(s){return F(s.finalCash)+' руб';}],['Мин. остаток',function(s){return F(s.minCash)+' руб';}],['Кассовые разрывы',function(s){return s.cashGaps.length&gt;0?s.cashGaps.length+' мес':'Нет';}]];
for(var ri=0;ri&lt;scRows.length;ri++){h+='&lt;tr&gt;&lt;td&gt;'+scRows[ri][0]+'&lt;/td&gt;';var scs=[scBase,scOpt,scPess,scStress];for(var sci=0;sci&lt;scs.length;sci++){h+='&lt;td class="n"&gt;'+scRows[ri][1](scs[sci])+'&lt;/td&gt;';}h+='&lt;/tr&gt;';}
h+='&lt;/tbody&gt;&lt;/table&gt;';
if(invSum&gt;0){h+='&lt;div class="st"&gt;Инвестиции&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Сумма вложений&lt;/span&gt;&lt;span class="v"&gt;'+F(invSum)+' руб&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Месяц вложения&lt;/span&gt;&lt;span class="v"&gt;'+invMonth+'&lt;/span&gt;&lt;/div&gt;';if(paybackMonth!==null){h+='&lt;div class="ri hl"&gt;&lt;span&gt;Окупаемость&lt;/span&gt;&lt;span class="v s"&gt;Месяц '+paybackMonth+'&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;ROI за '+horizon+' мес&lt;/span&gt;&lt;span class="v"&gt;'+roi+'%&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ci pass"&gt;[OK] Инвестиции окупаются в месяце '+paybackMonth+'. ROI: '+roi+'%.&lt;/div&gt;';}else{h+='&lt;div class="wr err"&gt;[X] Инвестиции НЕ окупаются за '+horizon+' месяцев.&lt;/div&gt;';}}
if(hireMonth&gt;0&amp;&amp;hireCount&gt;0){var monthlyHireCost=hireCount*hireSalary*(1+hireRate);h+='&lt;div class="st"&gt;Найм&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Месяц найма&lt;/span&gt;&lt;span class="v"&gt;'+hireMonth+'&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Количество&lt;/span&gt;&lt;span class="v"&gt;'+hireCount+'&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Расход на найм в месяц&lt;/span&gt;&lt;span class="v d"&gt;'+F(monthlyHireCost)+' руб&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ci info"&gt;Найм увеличивает расходы на '+F(monthlyHireCost)+' руб/мес с месяца '+hireMonth+'.&lt;/div&gt;';}
h+='&lt;div class="st"&gt;Цели&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Целевая прибыль&lt;/span&gt;&lt;span class="v"&gt;'+F(goalProfit)+' руб/мес&lt;/span&gt;&lt;/div&gt;';h+='&lt;div class="ri"&gt;&lt;span&gt;Целевой месяц&lt;/span&gt;&lt;span class="v"&gt;'+goalMonth+'&lt;/span&gt;&lt;/div&gt;';
if(goalReachedMonth!==null){if(goalReachedMonth&lt;=goalMonth){h+='&lt;div class="ci pass"&gt;[OK] Цель достигается в месяце '+goalReachedMonth+' (раньше срока).&lt;/div&gt;';}else{h+='&lt;div class="ci warn"&gt;[!] Цель достигается в месяце '+goalReachedMonth+' (на '+(goalReachedMonth-goalMonth)+' мес. позже срока).&lt;/div&gt;';}}
else{h+='&lt;div class="ci fail"&gt;[X] Цель НЕ достигается за '+horizon+' месяцев.&lt;/div&gt;';}
if(targetRevForGoal&gt;0){h+='&lt;div class="ri"&gt;&lt;span&gt;Нужная выручка для цели&lt;/span&gt;&lt;span class="v"&gt;'+F(targetRevForGoal)+' руб/мес&lt;/span&gt;&lt;/div&gt;';if(targetRevForGoal&gt;baseRev){var neededGrowth=((targetRevForGoal/baseRev-1)*100).toFixed(0);h+='&lt;div class="ci info"&gt;Нужна выручка '+F(targetRevForGoal)+' руб/мес, на '+neededGrowth+'% больше текущей.&lt;/div&gt;';}}
h+='&lt;div class="st"&gt;Прогноз по месяцам (базовый сценарий)&lt;/div&gt;';
h+='&lt;div style="overflow-x:auto"&gt;';
h+='&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Месяц&lt;/th&gt;&lt;th class="n"&gt;Выручка&lt;/th&gt;&lt;th class="n"&gt;Себест.&lt;/th&gt;&lt;th class="n"&gt;Пост. расх.&lt;/th&gt;&lt;th class="n"&gt;Найм&lt;/th&gt;&lt;th class="n"&gt;Прибыль до налога&lt;/th&gt;&lt;th class="n"&gt;Налоги&lt;/th&gt;&lt;th class="n"&gt;Чистая прибыль&lt;/th&gt;&lt;th class="n"&gt;Инвест.&lt;/th&gt;&lt;th class="n"&gt;Остаток&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';
for(var m=0;m&lt;scBase.months.length;m++){var d=scBase.months[m];var isGap=d.cash&lt;0;
h+='&lt;tr'+(isGap?' style="background:#f8d7da"':'')+'&gt;&lt;td&gt;'+d.monthName+'&lt;/td&gt;&lt;td class="n"&gt;'+F(d.revenue)+'&lt;/td&gt;&lt;td class="n"&gt;'+F(d.cogs)+'&lt;/td&gt;&lt;td class="n"&gt;'+F(d.fixed)+'&lt;/td&gt;&lt;td class="n"&gt;'+(d.hireCost&gt;0?F(d.hireCost):'—')+'&lt;/td&gt;&lt;td class="n"&gt;'+F(d.profitBeforeTax)+'&lt;/td&gt;&lt;td class="n"&gt;'+F(d.tax)+'&lt;/td&gt;&lt;td class="n" style="'+(d.profitAfterTax&gt;=0?'color:#28a745':'color:#dc3545;font-weight:700')+'"&gt;'+F(d.profitAfterTax)+'&lt;/td&gt;&lt;td class="n"&gt;'+(d.investment&gt;0?F(d.investment):'—')+'&lt;/td&gt;&lt;td class="n" style="'+(isGap?'color:#dc3545;font-weight:700':'')+'"&gt;'+F(d.cash)+'&lt;/td&gt;&lt;/tr&gt;';}
h+='&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;';
h+='&lt;div class="st"&gt;График: остаток на счёте&lt;/div&gt;&lt;div id="fp-ch-cash"&gt;&lt;/div&gt;';
h+='&lt;div class="st" style="margin-top:.8rem"&gt;График: выручка и прибыль&lt;/div&gt;&lt;div id="fp-ch-rev"&gt;&lt;/div&gt;';
h+='&lt;div class="st"&gt;Рекомендации&lt;/div&gt;';
if(scBase.cashGaps.length&gt;0){h+='&lt;div class="ci fail"&gt;[X] Кассовые разрывы: месяцы '+scBase.cashGaps.join(', ')+'. Подушка: '+F(Math.abs(scBase.minCash))+' руб.&lt;/div&gt;';}
if(scBase.minCash&gt;0&amp;&amp;scBase.minCash&lt;startCash*0.2){h+='&lt;div class="ci warn"&gt;[!] Мин. остаток '+F(scBase.minCash)+' руб &lt; 20% начального. Подушка: '+F(startCash*0.3)+' руб.&lt;/div&gt;';}
if(invSum&gt;0&amp;&amp;paybackMonth===null){h+='&lt;div class="ci fail"&gt;[X] Инвестиции '+F(invSum)+' руб не окупаются за '+horizon+' мес.&lt;/div&gt;';}
if(goalReachedMonth===null){h+='&lt;div class="ci fail"&gt;[X] Цель '+F(goalProfit)+' руб/мес не достигается. Нужна выручка '+F(targetRevForGoal)+' руб/мес.&lt;/div&gt;';}
if(scPess.totalProfit&lt;0){h+='&lt;div class="ci warn"&gt;[!] Пессимистичный сценарий: убыток '+F(Math.abs(scPess.totalProfit))+' руб.&lt;/div&gt;';}
if(scStress.totalProfit&lt;0){h+='&lt;div class="ci fail"&gt;[X] Стресс (-30%): убыток '+F(Math.abs(scStress.totalProfit))+' руб. Бизнес уязвим.&lt;/div&gt;';}
if(scBase.totalProfit&gt;0&amp;&amp;scBase.cashGaps.length===0&amp;&amp;scBase.minCash&gt;startCash*0.2){h+='&lt;div class="ci pass"&gt;[OK] Финансовый план устойчив. Прибыль положительная, разрывов нет, остаток достаточный.&lt;/div&gt;';}
if(taxMode==='usn6'&amp;&amp;scBase.totalRevenue&gt;20000000){h+='&lt;div class="ci warn"&gt;[!] Выручка &gt; 20 млн руб. Проверьте переход на НДС.&lt;/div&gt;';}
if(taxMode==='npd'&amp;&amp;scBase.totalRevenue&gt;2400000){h+='&lt;div class="ci warn"&gt;[!] Выручка &gt; лимита НПД 2,4 млн руб/год. Рассмотрите УСН.&lt;/div&gt;';}
h+='&lt;/div&gt;';$('fp-res').innerHTML=h;
var fpLabels=scBase.months.map(function(d){return d.monthName;});
fcLine($('fp-ch-cash'),{labels:fpLabels,series:[{name:'Остаток на счёте',color:'#17a2b8',values:scBase.months.map(function(d){return d.cash;})}]});
fcLine($('fp-ch-rev'),{labels:fpLabels,series:[{name:'Выручка',color:'#00b4a0',values:scBase.months.map(function(d){return d.revenue;})},{name:'Чистая прибыль',color:'#28a745',values:scBase.months.map(function(d){return d.profitAfterTax;})}]});
saveState();};

})();
&lt;/script&gt;
&lt;/div&gt;</subtitle>
  <updated>2026-08-17T08:49:32Z</updated>
  <logo>https://pandoraburo.ru/ssl/u/pic/e2/6850fe98a211f18279a3cef0e847cc/-/logo.png</logo>
  <author>
    <name>1592962</name>
    <uri>https://www.pandoraburo.ru/</uri>
  </author>
</feed>
