<?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/crm-pandora</id>
  <link href="https://www.pandoraburo.ru/crm-pandora.xml" rel="self"/>
  <title/>
  <subtitle type="html">
&lt;html lang="ru"&gt;
&lt;head&gt;
&lt;meta charset="UTF-8"&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
&lt;title&gt;Пандора CRM — Неоновая панель&lt;/title&gt;
&lt;style&gt;
:root{
  --cyan:#00f0ff; --pink:#ff2bd6; --green:#39ff14;
  --orange:#ff8a1e; --yellow:#f9ff00; --violet:#b55cff;
  --bg:#0a0a12; --panel:#12121f; --panel2:#161628;
  --text:#d8e0ff; --muted:#7a86b8; --line:rgba(0,240,255,.18);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{margin:0;padding:0}
body{
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;
  background:
    radial-gradient(1200px 600px at 80% -10%, rgba(181,92,255,.14), transparent 60%),
    radial-gradient(1000px 500px at -10% 110%, rgba(0,240,255,.10), transparent 60%),
    var(--bg);
  color:var(--text);
  min-height:100vh;
}
::selection{background:rgba(255,43,214,.4)}

/* ===== SIDEBAR (FIXED — надёжно, без обрезки) ===== */
.sidebar{
  position:fixed; left:0; top:0; bottom:0;
  width:288px; z-index:50;
  background:linear-gradient(180deg,#0d0d1c,#0a0a14);
  border-right:1px solid var(--line);
  box-shadow:4px 0 24px rgba(0,240,255,.06);
  overflow-y:auto; overflow-x:hidden;
  padding-bottom:30px;
}
.sidebar::-webkit-scrollbar{width:6px}
.sidebar::-webkit-scrollbar-thumb{background:rgba(0,240,255,.35);border-radius:3px}
.sidebar::-webkit-scrollbar-track{background:transparent}

.logo{
  padding:22px 20px 18px;
  font-size:1.55rem; font-weight:900; letter-spacing:1px;
  color:#fff;
  text-shadow:0 0 8px var(--cyan),0 0 22px var(--cyan);
  border-bottom:1px solid var(--line);
}
.logo span{color:var(--cyan);text-shadow:0 0 10px var(--cyan),0 0 30px var(--cyan)}
.logo .crm{font-size:.85rem;font-weight:700;color:var(--pink);text-shadow:0 0 8px var(--pink);margin-left:6px;letter-spacing:3px}

.sync-status{
  margin:14px 16px; padding:10px 14px;
  display:flex; align-items:center; gap:10px;
  font-size:.82rem; font-weight:700;
  color:var(--green);
  background:rgba(57,255,20,.06);
  border:1px solid rgba(57,255,20,.35);
  border-radius:10px;
  box-shadow:0 0 12px rgba(57,255,20,.15), inset 0 0 12px rgba(57,255,20,.05);
  text-shadow:0 0 6px rgba(57,255,20,.8);
}
.sync-dot{
  width:9px;height:9px;border-radius:50%;
  background:var(--green);
  box-shadow:0 0 8px var(--green),0 0 16px var(--green);
  animation:pulse 2s infinite; flex-shrink:0;
}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}

.nav-section{
  padding:20px 20px 8px;
  font-size:.7rem; font-weight:800;
  letter-spacing:2.5px; text-transform:uppercase;
}
.ns-cyan{color:var(--cyan);text-shadow:0 0 8px rgba(0,240,255,.6)}
.ns-violet{color:var(--violet);text-shadow:0 0 8px rgba(181,92,255,.6)}
.ns-green{color:var(--green);text-shadow:0 0 8px rgba(57,255,20,.6)}
.ns-orange{color:var(--orange);text-shadow:0 0 8px rgba(255,138,30,.6)}

.nav-link{
  display:block;
  margin:4px 12px; padding:11px 14px;
  color:var(--text); text-decoration:none;
  font-size:.95rem; font-weight:600;
  border-radius:9px;
  border:1px solid transparent;
  transition:all .22s ease;
  cursor:pointer;
}
.nav-link:hover{
  color:var(--cyan);
  background:rgba(0,240,255,.07);
  border-color:rgba(0,240,255,.35);
  box-shadow:0 0 14px rgba(0,240,255,.25), inset 0 0 10px rgba(0,240,255,.06);
  text-shadow:0 0 8px rgba(0,240,255,.8);
  transform:translateX(3px);
}
.nav-link.active{
  color:#fff;
  background:linear-gradient(90deg, rgba(0,240,255,.16), rgba(255,43,214,.16));
  border-color:var(--cyan);
  box-shadow:0 0 16px rgba(0,240,255,.4), 0 0 30px rgba(255,43,214,.2), inset 0 0 12px rgba(0,240,255,.1);
  text-shadow:0 0 10px rgba(0,240,255,.9);
}
.nav-link:active{transform:scale(.97)}

/* ===== MAIN ===== */
.main-content{margin-left:288px;min-height:100vh;padding:0 26px 60px}

.topbar{
  position:sticky; top:0; z-index:40;
  display:flex; align-items:center; justify-content:space-between;
  gap:14px; flex-wrap:wrap;
  padding:16px 4px; margin-bottom:8px;
  background:rgba(10,10,18,.82);
  backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
}
.breadcrumbs{font-size:.95rem;font-weight:700;color:var(--cyan);text-shadow:0 0 8px rgba(0,240,255,.5)}
.user-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}

.badge-1c{
  padding:5px 12px; font-size:.72rem; font-weight:800; letter-spacing:1px;
  color:var(--orange);
  border:1px solid rgba(255,138,30,.5);
  border-radius:20px;
  background:rgba(255,138,30,.08);
  box-shadow:0 0 10px rgba(255,138,30,.25);
  text-shadow:0 0 6px rgba(255,138,30,.7);
}
#role-switcher{
  padding:8px 12px; font-size:.85rem;
  color:var(--text);
  background:var(--panel2);
  border:1px solid rgba(181,92,255,.5);
  border-radius:8px;
  box-shadow:0 0 10px rgba(181,92,255,.2);
  cursor:pointer; outline:none;
}
#role-switcher:focus{box-shadow:0 0 14px rgba(181,92,255,.5)}
#role-switcher option{background:#12121f;color:var(--text)}

/* ===== КНОПКИ (градиент cyan→pink) ===== */
.btn{
  padding:.65rem 1.2rem;
  border:none; border-radius:9px;
  font-size:.92rem; font-weight:700;
  color:#fff; cursor:pointer;
  background:linear-gradient(90deg,var(--cyan),var(--pink));
  box-shadow:0 0 14px rgba(0,240,255,.4),0 0 24px rgba(255,43,214,.25);
  transition:all .25s ease;
  text-shadow:0 1px 2px rgba(0,0,0,.35);
}
.btn:hover{
  transform:translateY(-2px);
  box-shadow:0 0 20px rgba(0,240,255,.65),0 0 38px rgba(255,43,214,.45);
}
.btn:active{transform:scale(.97)}
.btn-s{padding:.35rem .7rem;font-size:.8rem;width:auto}
.btn-o{background:transparent;color:var(--cyan);border:1px solid var(--cyan);box-shadow:0 0 10px rgba(0,240,255,.3)}
.btn-o:hover{background:rgba(0,240,255,.1);box-shadow:0 0 16px rgba(0,240,255,.5)}
.btn-d{background:linear-gradient(90deg,#ff2bd6,#ff5b5b);box-shadow:0 0 14px rgba(255,43,214,.4)}
.btn-p{background:linear-gradient(90deg,#b55cff,#00f0ff);box-shadow:0 0 14px rgba(181,92,255,.4)}
.save-ind{font-size:.7rem;color:var(--green);text-shadow:0 0 6px rgba(57,255,20,.7)}

/* ===== КАРТОЧКИ / КОНТЕНТ ===== */
#fc-w{max-width:100%}
#fc-w .top-bar,#fc-w .tabs-group,#fc-w .sub{display:none!important}

.tc{
  display:none;
  background:linear-gradient(160deg,var(--panel),#0e0e1a);
  border:1px solid var(--line);
  border-radius:16px;
  padding:28px;
  margin-bottom:22px;
  box-shadow:0 0 24px rgba(0,240,255,.07),0 8px 30px rgba(0,0,0,.4);
  animation:fadeIn .35s ease;
}
.tc.act{display:block}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

#fc-w h1{
  margin:0 0 1.4rem; font-size:1.6rem; font-weight:900;
  color:#fff;
  padding-bottom:12px;
  border-bottom:2px solid var(--pink);
  text-shadow:0 0 12px rgba(255,43,214,.5);
}
.ib{
  background:rgba(0,240,255,.06);
  border-left:3px solid var(--cyan);
  border-radius:8px;
  padding:.6rem .8rem; margin-bottom:1rem;
  font-size:.85rem; color:#9fefff;
  box-shadow:0 0 12px rgba(0,240,255,.12);
}
.st{
  font-size:1rem;font-weight:800;color:var(--yellow);
  margin:1.1rem 0 .45rem; padding-bottom:.3rem;
  border-bottom:1px solid rgba(249,255,0,.35);
  text-shadow:0 0 8px rgba(249,255,0,.5);
}
.fg{margin-bottom:.85rem}
.fg label{display:block;margin-bottom:.25rem;font-weight:600;color:var(--text);font-size:.88rem}
.fg input,.fg select{
  width:100%; padding:.6rem .7rem;
  background:#0d0d18;
  border:1px solid rgba(0,240,255,.3);
  border-radius:8px;
  color:var(--text); font-size:.92rem;
  outline:none; transition:all .2s;
}
.fg input:focus,.fg select:focus{
  border-color:var(--cyan);
  box-shadow:0 0 12px rgba(0,240,255,.35);
}
.fg option{background:#0d0d18;color:var(--text)}
.fg input[type=checkbox]{width:auto;padding:0;margin-right:6px;accent-color:var(--pink)}
.hint{font-size:.73rem;color:var(--muted);margin-top:3px;line-height:1.35}
.fr{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
.fr3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.7rem}
.fr4{display:grid;grid-template-columns:repeat(4,1fr);gap:.55rem}
.fr6{display:grid;grid-template-columns:repeat(6,1fr);gap:.45rem}

.res{
  background:rgba(0,240,255,.04);
  border:1px solid rgba(0,240,255,.25);
  border-radius:12px;
  padding:1rem; margin-top:1rem;
  box-shadow:0 0 18px rgba(0,240,255,.1);
}
.ri{display:flex;justify-content:space-between;padding:.45rem 0;border-bottom:1px solid rgba(255,255,255,.07);align-items:center;font-size:.88rem;gap:10px}
.ri:last-child{border-bottom:none}
.ri.hl{background:rgba(57,255,20,.07);padding:.6rem;border-radius:8px;margin:.3rem 0;border-bottom:none;box-shadow:0 0 12px rgba(57,255,20,.12)}
.hl .v{font-size:1.2rem;font-weight:800;color:var(--green);text-shadow:0 0 10px rgba(57,255,20,.6)}
.v{font-weight:700;color:#fff}
.v.d{color:#ff5b7a;text-shadow:0 0 8px rgba(255,91,122,.5)}
.v.s{color:var(--green);text-shadow:0 0 8px rgba(57,255,20,.5)}

.wr{background:rgba(249,255,0,.08);border-left:3px solid var(--yellow);padding:.55rem;margin-top:.6rem;border-radius:6px;font-size:.85rem;color:#e9ffb0;box-shadow:0 0 10px rgba(249,255,0,.12)}
.wr.err{background:rgba(255,91,122,.1);border-left-color:#ff5b7a;color:#ffb3c1;box-shadow:0 0 10px rgba(255,91,122,.2)}
.wr.ok{background:rgba(57,255,20,.08);border-left-color:var(--green);color:#c9ffc0;box-shadow:0 0 10px rgba(57,255,20,.15)}
.wr.info{background:rgba(0,240,255,.08);border-left-color:var(--cyan);color:#a8f4ff}

.ci{padding:.5rem .6rem;border-radius:8px;margin-bottom:.35rem;display:flex;align-items:flex-start;gap:.45rem;font-size:.85rem}
.ci.pass{background:rgba(57,255,20,.09);border-left:3px solid var(--green)}
.ci.fail{background:rgba(255,91,122,.1);border-left:3px solid #ff5b7a}
.ci.warn{background:rgba(255,138,30,.1);border-left:3px solid var(--orange)}
.ci.info{background:rgba(0,240,255,.08);border-left:3px solid var(--cyan)}

#fc-w table{width:100%;border-collapse:collapse;margin-top:.6rem;font-size:.82rem}
#fc-w th{background:rgba(181,92,255,.12);padding:.4rem .35rem;text-align:left;font-weight:700;color:var(--violet);border-bottom:1px solid rgba(181,92,255,.4);text-shadow:0 0 6px rgba(181,92,255,.4)}
#fc-w td{padding:.4rem .35rem;border-bottom:1px solid rgba(255,255,255,.06)}
#fc-w td.n,#fc-w th.n{text-align:right;font-weight:600}
#fc-w tr.best{background:rgba(0,240,255,.09);box-shadow:inset 3px 0 0 var(--cyan)}
#fc-w tr.unav{opacity:.45}

.rec{
  background:linear-gradient(135deg,rgba(0,240,255,.12),rgba(255,43,214,.12));
  border:1px solid rgba(255,43,214,.4);
  border-radius:12px; padding:.9rem; margin-top:.9rem;
  box-shadow:0 0 18px rgba(255,43,214,.2);
}
.rec h3{margin:0 0 .3rem;color:#fff;font-size:.95rem;text-shadow:0 0 8px rgba(255,43,214,.6)}
.rec p{margin:.2rem 0;font-size:.85rem}

.pf-row{display:flex;justify-content:space-between;padding:.3rem 0;border-bottom:1px solid rgba(255,255,255,.07);font-size:.85rem;gap:10px}
.pf-row .l{color:var(--muted)}
.pf-row .r{font-weight:700;color:#fff}

.metric-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(115px,1fr));gap:.55rem;margin-top:.6rem}
.mc{background:rgba(181,92,255,.07);border:1px solid rgba(181,92,255,.3);border-radius:10px;padding:.6rem;text-align:center;transition:all .2s}
.mc:hover{box-shadow:0 0 14px rgba(181,92,255,.3);transform:translateY(-2px)}
.mc .mc-val{font-size:1rem;font-weight:800;color:var(--cyan);text-shadow:0 0 8px rgba(0,240,255,.5)}
.mc .mc-label{font-size:.66rem;color:var(--muted);margin-top:.15rem}
.mc.good .mc-val{color:var(--green);text-shadow:0 0 8px rgba(57,255,20,.5)}
.mc.bad .mc-val{color:#ff5b7a;text-shadow:0 0 8px rgba(255,91,122,.5)}
.mc.mid .mc-val{color:var(--yellow);text-shadow:0 0 8px rgba(249,255,0,.5)}

/* Дашборд */
.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:18px;margin-bottom:20px}
.dash-card{
  background:linear-gradient(160deg,var(--panel),#0e0e1a);
  border-radius:14px;padding:20px;
  border:1px solid var(--line);
  transition:all .25s ease;
}
.dash-card:hover{transform:translateY(-4px);box-shadow:0 0 24px rgba(0,240,255,.2)}
.dash-card h3{
  margin:0 0 14px;font-size:.85rem;font-weight:800;
  letter-spacing:1.5px;text-transform:uppercase;
  padding-bottom:10px;
}
.dc-cyan h3{color:var(--cyan);border-bottom:1px solid rgba(0,240,255,.4);text-shadow:0 0 8px rgba(0,240,255,.6)}
.dc-pink h3{color:var(--pink);border-bottom:1px solid rgba(255,43,214,.4);text-shadow:0 0 8px rgba(255,43,214,.6)}
.dc-green h3{color:var(--green);border-bottom:1px solid rgba(57,255,20,.4);text-shadow:0 0 8px rgba(57,255,20,.6)}
.dc-violet h3{color:var(--violet);border-bottom:1px solid rgba(181,92,255,.4);text-shadow:0 0 8px rgba(181,92,255,.6)}
.dash-card .metric{font-size:2rem;font-weight:900;color:#fff;margin-bottom:6px}
.dc-cyan .metric{color:var(--cyan);text-shadow:0 0 14px rgba(0,240,255,.7)}
.dc-pink .metric{color:var(--pink);text-shadow:0 0 14px rgba(255,43,214,.7)}
.dc-green .metric{color:var(--green);text-shadow:0 0 14px rgba(57,255,20,.7)}
.dc-violet .metric{color:var(--violet);text-shadow:0 0 14px rgba(181,92,255,.7)}
.dash-card .sub-metric{font-size:.85rem;color:var(--muted);line-height:1.55}
.dash-card .sub-metric strong{color:#fff}

.int-card{
  flex:1;min-width:200px;padding:15px;
  background:rgba(255,255,255,.03);
  border-radius:10px;
  border:1px solid rgba(255,255,255,.08);
  font-size:.85rem;
}
.int-card strong{color:#fff;display:block;margin-bottom:4px}
.int-card .ok{color:var(--green);text-shadow:0 0 6px rgba(57,255,20,.5)}
.int-card .warn{color:var(--orange);text-shadow:0 0 6px rgba(255,138,30,.5)}
.int-card .dim{color:var(--muted)}

.log-table{width:100%;border-collapse:collapse;margin-top:10px;font-size:.85rem}
.log-table th{background:rgba(0,240,255,.08);padding:.55rem;text-align:left;font-size:.75rem;color:var(--cyan);text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid rgba(0,240,255,.3)}
.log-table td{padding:.6rem .55rem;border-bottom:1px solid rgba(255,255,255,.06)}
.log-table tr:hover{background:rgba(0,240,255,.05)}

/* Динамические элементы калькуляторов */
.op-item{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:.4rem;margin-bottom:.35rem;display:grid;grid-template-columns:100px 85px 1fr 85px 85px 28px;gap:.3rem;align-items:center}
.op-item input,.op-item select{padding:.3rem;background:#0d0d18;border:1px solid rgba(0,240,255,.25);border-radius:6px;font-size:.8rem;color:var(--text)}
.op-item .rm{background:#ff5b7a;color:#fff;border:none;padding:2px 5px;border-radius:4px;cursor:pointer;font-size:.78rem}
.grp{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:.6rem;margin-bottom:.4rem}
.grp .gh{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem;color:var(--cyan)}
.grp input[type=text]{width:100%;margin-bottom:.25rem}
.grp input{background:#0d0d18;border:1px solid rgba(0,240,255,.25);border-radius:6px;color:var(--text);padding:.3rem}
.rm-g{background:#ff5b7a;color:#fff;border:none;padding:2px 6px;border-radius:4px;cursor:pointer;font-size:.72rem}
.exp-item{display:flex;align-items:center;gap:.4rem;margin-bottom:.35rem;background:rgba(255,138,30,.06);padding:.35rem .45rem;border-radius:8px;border:1px solid rgba(255,138,30,.3)}
.exp-item .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.exp-item .nm{flex:1;font-size:.82rem}
.exp-item input[type=number]{width:95px;padding:.25rem .3rem;background:#0d0d18;border:1px solid rgba(255,138,30,.4);border-radius:6px;font-size:.8rem;text-align:right;color:var(--text)}
.exp-item .rm{background:#ff5b7a;color:#fff;border:none;padding:1px 5px;border-radius:4px;cursor:pointer;font-size:.7rem}
.exp-tot{display:flex;justify-content:space-between;margin-top:.5rem;padding-top:.45rem;border-top:1px solid rgba(249,255,0,.4);font-weight:800;color:var(--yellow);font-size:.9rem;text-shadow:0 0 8px rgba(249,255,0,.4)}
.exp-tot .tv{font-size:1.05rem}
.cf-row{display:grid;grid-template-columns:75px 1fr 80px;align-items:center;padding:.3rem 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:.8rem}
.cf-date{font-weight:700;color:var(--cyan)}
.cf-val{font-weight:700;text-align:right}
.cf-val.pos{color:var(--green)}
.cf-val.neg{color:#ff5b7a}
.hist-item{background:rgba(0,240,255,.06);border:1px solid rgba(0,240,255,.3);border-radius:10px;padding:.5rem;margin-bottom:.3rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.3rem;font-size:.8rem}
.hist-item .hi{flex:1}
.hist-item .hn{font-weight:700;color:var(--cyan)}
.hist-item .hd{font-size:.68rem;color:var(--muted)}
.hist-item .ha{display:flex;gap:.2rem}
.hist-item .bs{padding:3px 8px;font-size:.7rem;border-radius:5px;border:none;cursor:pointer;font-weight:700}
.hist-item .bl{background:var(--cyan);color:#000}
.hist-item .bd{background:#ff5b7a;color:#fff}
.hist-empty{text-align:center;color:var(--muted);font-size:.8rem;padding:.5rem}
.disc{text-align:center;color:var(--muted);font-size:.72rem;margin-top:2rem;padding:.3rem}
.bar-row{display:flex;align-items:center;margin-bottom:.2rem}
.bar-label{width:60px;font-size:.7rem;color:var(--muted);text-align:right;padding-right:5px}
.bar-track{flex:1;height:14px;background:rgba(255,255,255,.06);border-radius:4px;overflow:hidden}
.bar-fill{height:100%;border-radius:4px}
.bar-fill.plan{background:linear-gradient(90deg,var(--cyan),var(--violet));box-shadow:0 0 8px rgba(0,240,255,.5)}
.bar-fill.fact{background:linear-gradient(90deg,var(--pink),var(--orange));box-shadow:0 0 8px rgba(255,43,214,.5)}
.bar-val{font-size:.68rem;margin-left:5px;font-weight:700;min-width:60px;color:var(--text)}

/* Мобильные */
@media(max-width:860px){
  .sidebar{position:static;width:100%;height:auto;max-height:none;overflow:visible;border-right:none;border-bottom:1px solid var(--line)}
  .main-content{margin-left:0;padding:0 14px 40px}
  .fr,.fr3{grid-template-columns:1fr}
  .fr4{grid-template-columns:1fr 1fr}
  .fr6{grid-template-columns:1fr 1fr 1fr}
  .op-item{grid-template-columns:1fr 1fr}
}
@media print{
  .sidebar,.topbar,.no-print{display:none!important}
  .main-content{margin:0;padding:0}
  body{background:#fff;color:#000}
  .tc{box-shadow:none;border:1px solid #ccc;background:#fff;color:#000}
  .tc *{color:#000!important;text-shadow:none!important;box-shadow:none!important}
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;aside class="sidebar" id="sidebar"&gt;
  &lt;div class="logo"&gt;&lt;span&gt;Пандора&lt;/span&gt;&lt;span class="crm"&gt;CRM&lt;/span&gt;&lt;/div&gt;
  &lt;div class="sync-status"&gt;&lt;span class="sync-dot"&gt;&lt;/span&gt; 1С:Предприятие 8.3 · Онлайн&lt;/div&gt;
  &lt;nav id="main-nav"&gt;
    &lt;div class="nav-section ns-cyan"&gt;Рабочий стол&lt;/div&gt;
    &lt;a class="nav-link active" data-view="dash"&gt;Дашборд&lt;/a&gt;

    &lt;div class="nav-section ns-cyan"&gt;Бухгалтерия и Налоги&lt;/div&gt;
    &lt;a class="nav-link" data-t="usn"&gt;УСН&lt;/a&gt;
    &lt;a class="nav-link" data-t="osn"&gt;ОСН&lt;/a&gt;
    &lt;a class="nav-link" data-t="compare"&gt;Сравнение режимов&lt;/a&gt;
    &lt;a class="nav-link" data-t="npd"&gt;НПД (Самозанятые)&lt;/a&gt;
    &lt;a class="nav-link" data-t="kudir"&gt;КУДиР&lt;/a&gt;
    &lt;a class="nav-link" data-t="decl"&gt;Декларация&lt;/a&gt;
    &lt;a class="nav-link" data-t="cal"&gt;Календарь&lt;/a&gt;
    &lt;a class="nav-link" data-t="pay"&gt;Платёжка&lt;/a&gt;
    &lt;a class="nav-link" data-t="check"&gt;Проверки&lt;/a&gt;

    &lt;div class="nav-section ns-violet"&gt;Управленческий учет&lt;/div&gt;
    &lt;a class="nav-link" data-t="markup"&gt;Наценка и Маржа&lt;/a&gt;
    &lt;a class="nav-link" data-t="plan"&gt;План-факт&lt;/a&gt;
    &lt;a class="nav-link" data-t="cash"&gt;Cash Flow&lt;/a&gt;
    &lt;a class="nav-link" data-t="ratio"&gt;Коэфф. и Ликвидность&lt;/a&gt;
    &lt;a class="nav-link" data-t="unit"&gt;Unit-экономика&lt;/a&gt;
    &lt;a class="nav-link" data-t="whatif"&gt;Сценарии (Что если?)&lt;/a&gt;
    &lt;a class="nav-link" data-t="finplan"&gt;Фин. план&lt;/a&gt;

    &lt;div class="nav-section ns-green"&gt;Кадры, Зарплата, Активы&lt;/div&gt;
    &lt;a class="nav-link" data-t="vac"&gt;Отпуск и Больничные&lt;/a&gt;
    &lt;a class="nav-link" data-t="divid"&gt;Дивиденды&lt;/a&gt;
    &lt;a class="nav-link" data-t="credit"&gt;Кредит vs Лизинг&lt;/a&gt;
    &lt;a class="nav-link" data-t="amort"&gt;Амортизация&lt;/a&gt;

    &lt;div class="nav-section ns-orange"&gt;Интеграция 1С 8.3&lt;/div&gt;
    &lt;a class="nav-link" data-view="1c"&gt;Обмен данными&lt;/a&gt;
  &lt;/nav&gt;
&lt;/aside&gt;

&lt;main class="main-content"&gt;
  &lt;header class="topbar"&gt;
    &lt;div class="breadcrumbs" id="breadcrumbs"&gt;Пандора CRM / Дашборд&lt;/div&gt;
    &lt;div class="user-actions"&gt;
      &lt;button class="btn btn-p btn-s" id="fc-save-btn" type="button"&gt;Сохранить&lt;/button&gt;
      &lt;button class="btn btn-o btn-s" id="fc-pdf-btn" type="button"&gt;PDF&lt;/button&gt;
      &lt;button class="btn btn-d btn-s" id="fc-reset-btn" type="button"&gt;Сброс&lt;/button&gt;
      &lt;span class="save-ind" id="fc-save-ind"&gt;&lt;/span&gt;
      &lt;span class="badge-1c"&gt;ENTERPRISE DATA&lt;/span&gt;
      &lt;select id="role-switcher"&gt;
        &lt;option value="biz"&gt;Бизнесмен&lt;/option&gt;
        &lt;option value="acc"&gt;Бухгалтер&lt;/option&gt;
        &lt;option value="mgm"&gt;Управленец&lt;/option&gt;
        &lt;option value="hr"&gt;Кадры и ЗП&lt;/option&gt;
      &lt;/select&gt;
    &lt;/div&gt;
  &lt;/header&gt;

  &lt;div id="fc-w"&gt;
    &lt;div id="fc-app"&gt;

      
      &lt;div id="fc-dash" class="tc act"&gt;
        &lt;h1&gt;Приборная панель &lt;span id="dash-role-title" style="color:var(--cyan)"&gt;Бизнесмена&lt;/span&gt;&lt;/h1&gt;
        &lt;div class="dash-grid"&gt;
          &lt;div class="dash-card dc-cyan"&gt;
            &lt;h3&gt;Финансы (ДДС)&lt;/h3&gt;
            &lt;div class="metric"&gt;+ 1 250 000 ₽&lt;/div&gt;
            &lt;div class="sub-metric"&gt;Прогноз кассового разрыва: &lt;strong style="color:var(--green)"&gt;Нет&lt;/strong&gt;&lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="dash-card dc-violet"&gt;
            &lt;h3&gt;Рентабельность (ОПиУ)&lt;/h3&gt;
            &lt;div class="metric"&gt;24.5%&lt;/div&gt;
            &lt;div class="sub-metric"&gt;Чистая прибыль за месяц: &lt;strong&gt;850 000 ₽&lt;/strong&gt;&lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="dash-card dc-pink"&gt;
            &lt;h3&gt;Налоги и Сроки&lt;/h3&gt;
            &lt;div class="metric"&gt;145 000 ₽&lt;/div&gt;
            &lt;div class="sub-metric"&gt;Ближайший платёж: &lt;strong&gt;Аванс УСН (28 апреля)&lt;/strong&gt;&lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="dash-card dc-green"&gt;
            &lt;h3&gt;Кадры и Зарплата&lt;/h3&gt;
            &lt;div class="metric"&gt;12 чел.&lt;/div&gt;
            &lt;div class="sub-metric"&gt;ФОТ с взносами: &lt;strong&gt;1 450 000 ₽&lt;/strong&gt;&lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class="dash-grid"&gt;
          &lt;div class="dash-card dc-cyan" style="grid-column:1/-1"&gt;
            &lt;h3&gt;Статус интеграции с 1С 8.3 &lt;span class="badge-1c"&gt;REST API&lt;/span&gt;&lt;/h3&gt;
            &lt;div style="display:flex;gap:14px;flex-wrap:wrap;margin-top:8px"&gt;
              &lt;div class="int-card" style="border-left:3px solid var(--green)"&gt;
                &lt;strong&gt;1С:Бухгалтерия 8.3&lt;/strong&gt;
                &lt;span class="dim"&gt;Последняя синхронизация: 2 мин. назад&lt;/span&gt;&lt;br /&gt;
                &lt;span class="ok"&gt;✓ 145 документов передано&lt;/span&gt;
              &lt;/div&gt;
              &lt;div class="int-card" style="border-left:3px solid var(--green)"&gt;
                &lt;strong&gt;1С:ЗУП 8.3&lt;/strong&gt;
                &lt;span class="dim"&gt;Последняя синхронизация: 15 мин. назад&lt;/span&gt;&lt;br /&gt;
                &lt;span class="ok"&gt;✓ Реестр ЗП сформирован&lt;/span&gt;
              &lt;/div&gt;
              &lt;div class="int-card" style="border-left:3px solid var(--orange)"&gt;
                &lt;strong&gt;1С:УНФ (Управленческий)&lt;/strong&gt;
                &lt;span class="dim"&gt;Ожидание подтверждения&lt;/span&gt;&lt;br /&gt;
                &lt;span class="warn"&gt;! 2 статьи затрат требуют маппинга&lt;/span&gt;
              &lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class="ib"&gt;
          &lt;strong&gt;Совет системы:&lt;/strong&gt; Выберите роль в правом верхнем углу. Используйте модули в левом меню для глубокой аналитики и формирования отчётности.
        &lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-1c" class="tc"&gt;
        &lt;h1&gt;Интеграция с 1С:Предприятие 8.3&lt;/h1&gt;
        &lt;div class="ib"&gt;Двусторонний обмен по протоколу Enterprise Data и REST API. Pandora — мастер-система для CRM и управленческого учета, 1С 8.3 — для регламентированного учета и проводок.&lt;/div&gt;
        &lt;div class="dash-grid"&gt;
          &lt;div class="dash-card dc-cyan"&gt;&lt;h3&gt;1С:Бухгалтерия 8.3&lt;/h3&gt;&lt;div class="metric" style="font-size:1.2rem"&gt;Синхронизировано&lt;/div&gt;&lt;div class="sub-metric"&gt;Последний обмен: 2 мин. назад&lt;br /&gt;Передано объектов: 145&lt;/div&gt;&lt;/div&gt;
          &lt;div class="dash-card dc-green"&gt;&lt;h3&gt;1С:ЗУП 8.3&lt;/h3&gt;&lt;div class="metric" style="font-size:1.2rem"&gt;Синхронизировано&lt;/div&gt;&lt;div class="sub-metric"&gt;Последний обмен: 15 мин. назад&lt;br /&gt;Реестр ЗП: Сформирован&lt;/div&gt;&lt;/div&gt;
          &lt;div class="dash-card dc-pink"&gt;&lt;h3&gt;1С:УНФ&lt;/h3&gt;&lt;div class="metric" style="font-size:1.2rem"&gt;Требует внимания&lt;/div&gt;&lt;div class="sub-metric"&gt;2 статьи затрат не маппированы&lt;br /&gt;Ожидание подтверждения&lt;/div&gt;&lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="st"&gt;Журнал обмена данными (Enterprise Data)&lt;/div&gt;
        &lt;table class="log-table"&gt;
          &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Время&lt;/th&gt;&lt;th&gt;Система&lt;/th&gt;&lt;th&gt;Объект&lt;/th&gt;&lt;th&gt;Направление&lt;/th&gt;&lt;th&gt;Статус&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
          &lt;tbody&gt;
            &lt;tr&gt;&lt;td&gt;10:45:12&lt;/td&gt;&lt;td&gt;1С:Бухгалтерия&lt;/td&gt;&lt;td&gt;Контрагент «ООО Ромашка»&lt;/td&gt;&lt;td&gt;1С → Pandora&lt;/td&gt;&lt;td style="color:var(--green)"&gt;✓ Успешно&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;10:42:05&lt;/td&gt;&lt;td&gt;Pandora CRM&lt;/td&gt;&lt;td&gt;Сделка №142 (Успех)&lt;/td&gt;&lt;td&gt;Pandora → 1С&lt;/td&gt;&lt;td style="color:var(--green)"&gt;✓ Реализация создана&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;10:30:00&lt;/td&gt;&lt;td&gt;1С:ЗУП&lt;/td&gt;&lt;td&gt;Начисление ЗП (Август)&lt;/td&gt;&lt;td&gt;1С → Pandora&lt;/td&gt;&lt;td style="color:var(--green)"&gt;✓ Обновлен ФОТ&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;09:15:33&lt;/td&gt;&lt;td&gt;Pandora CRM&lt;/td&gt;&lt;td&gt;Статья затрат «Маркетинг»&lt;/td&gt;&lt;td&gt;Pandora → 1С:УНФ&lt;/td&gt;&lt;td style="color:#ff5b7a"&gt;✗ Ошибка маппинга&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
        &lt;/table&gt;
        &lt;div class="st"&gt;Маппинг статей затрат (Pandora → 1С)&lt;/div&gt;
        &lt;div class="fg"&gt;&lt;label&gt;Статья в Pandora&lt;/label&gt;
          &lt;select&gt;&lt;option&gt;26 Общехозяйственные расходы / Маркетинг&lt;/option&gt;&lt;option&gt;44 Расходы на продажу / Реклама&lt;/option&gt;&lt;/select&gt;
        &lt;/div&gt;
        &lt;button class="btn" style="max-width:320px" type="button"&gt;Синхронизировать справочники&lt;/button&gt;
      &lt;/div&gt;

      &lt;div id="fc-hist-panel" style="display:none" class="no-print"&gt;
        &lt;div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem"&gt;
          &lt;strong style="color:var(--cyan);text-shadow:0 0 8px rgba(0,240,255,.5)"&gt;История расчётов&lt;/strong&gt;
          &lt;button class="btn btn-o btn-s no-print" id="fc-hist-close" type="button"&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"&gt;&lt;h1&gt;УСН 6%&lt;/h1&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" id="u-btn" type="button"&gt;Рассчитать&lt;/button&gt;&lt;div id="u-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-osn" class="tc"&gt;&lt;h1&gt;ОСН&lt;/h1&gt;
        &lt;div class="ib"&gt;НДС 22% (расчётная 22/122), прибыль 25%, взносы по категориям.&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;input type="checkbox" id="o-priority" /&gt; Приоритетная отрасль (перечень № 4125-р)&lt;/label&gt;&lt;div class="hint"&gt;Для МСП: основной ОКВЭД + доля дохода ≥70%&lt;/div&gt;&lt;/div&gt;
        &lt;div class="fg"&gt;&lt;label&gt;&lt;input type="checkbox" id="o-it-accred" checked="checked" /&gt; Аккредитация Минцифры&lt;/label&gt;&lt;div class="hint"&gt;Для ИТ-тарифа&lt;/div&gt;&lt;/div&gt;
        &lt;div class="fg"&gt;&lt;label&gt;Доля IT-доходов, %&lt;/label&gt;&lt;input type="number" id="o-it-share" min="0" max="100" value="70" /&gt;&lt;div class="hint"&gt;Минимум 70% для ИТ-тарифа&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" id="o-btn" type="button"&gt;Рассчитать&lt;/button&gt;&lt;div id="o-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-markup" class="tc"&gt;&lt;h1&gt;Наценка и Маржа&lt;/h1&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" id="m-ag" type="button"&gt;+ Группа&lt;/button&gt;
        &lt;div style="background:rgba(255,138,30,.06);border:1px solid rgba(255,138,30,.4);border-radius:10px;padding:.8rem;margin-top:.8rem"&gt;
          &lt;strong style="color:var(--orange);font-size:.88rem;text-shadow:0 0 6px rgba(255,138,30,.5)"&gt;Прочие расходы (в месяц)&lt;/strong&gt;
          &lt;div id="m-exps" style="margin-top:.3rem"&gt;&lt;/div&gt;
          &lt;button class="btn btn-s" id="m-ae" type="button" 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" id="m-btn" type="button" 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"&gt;&lt;h1&gt;Сравнение режимов&lt;/h1&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="fg"&gt;&lt;label&gt;&lt;input type="checkbox" id="c-priority" /&gt; Приоритетная отрасль (МСП)&lt;/label&gt;&lt;/div&gt;
        &lt;div class="fg"&gt;&lt;label&gt;&lt;input type="checkbox" id="c-it-accred" checked="checked" /&gt; Аккредитация Минцифры (ИТ)&lt;/label&gt;&lt;/div&gt;
        &lt;div class="fg"&gt;&lt;label&gt;Доля IT-доходов, %&lt;/label&gt;&lt;input type="number" id="c-it-share" min="0" max="100" value="70" /&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" id="c-btn" type="button"&gt;Сравнить&lt;/button&gt;&lt;div id="c-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-credit" class="tc"&gt;&lt;h1&gt;Кредит vs Лизинг&lt;/h1&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" id="cr-btn" type="button"&gt;Сравнить&lt;/button&gt;&lt;div id="cr-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-divid" class="tc"&gt;&lt;h1&gt;Дивиденды&lt;/h1&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" id="d-btn" type="button"&gt;Рассчитать&lt;/button&gt;&lt;div id="d-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-kudir" class="tc"&gt;&lt;h1&gt;КУДиР&lt;/h1&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" id="k-add" type="button"&gt;+ Операция&lt;/button&gt;
        &lt;button class="btn" id="k-btn" type="button" 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"&gt;&lt;h1&gt;Календарь&lt;/h1&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" id="cl-btn" type="button"&gt;Календарь&lt;/button&gt;&lt;div id="cl-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-pay" class="tc"&gt;&lt;h1&gt;Платёжка&lt;/h1&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" id="p-btn" type="button"&gt;Сформировать&lt;/button&gt;&lt;div id="p-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-check" class="tc"&gt;&lt;h1&gt;Проверки&lt;/h1&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" id="ch-btn" type="button"&gt;Проверить&lt;/button&gt;&lt;div id="ch-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-ratio" class="tc"&gt;&lt;h1&gt;Коэфф. и Ликвидность&lt;/h1&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" id="r-btn" type="button"&gt;Рассчитать&lt;/button&gt;&lt;div id="r-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-vac" class="tc"&gt;&lt;h1&gt;Отпуск и Больничные&lt;/h1&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" id="v-btn" type="button"&gt;Рассчитать&lt;/button&gt;&lt;div id="v-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-amort" class="tc"&gt;&lt;h1&gt;Амортизация&lt;/h1&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" id="a-btn" type="button"&gt;Рассчитать&lt;/button&gt;&lt;div id="a-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-decl" class="tc"&gt;&lt;h1&gt;Декларация&lt;/h1&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" id="dc-btn" type="button"&gt;Сформировать&lt;/button&gt;&lt;div id="dc-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-plan" class="tc"&gt;&lt;h1&gt;План-факт&lt;/h1&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" id="pl-btn" type="button" 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"&gt;&lt;h1&gt;Cash Flow&lt;/h1&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" id="cf-add" type="button"&gt;+ Операция&lt;/button&gt;
        &lt;button class="btn" id="cf-btn" type="button" 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"&gt;&lt;h1&gt;Unit-экономика&lt;/h1&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" id="ue-btn" type="button"&gt;Рассчитать&lt;/button&gt;&lt;div id="ue-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-npd" class="tc"&gt;&lt;h1&gt;НПД (Самозанятые)&lt;/h1&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" id="np-btn" type="button"&gt;Рассчитать&lt;/button&gt;&lt;div id="np-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-whatif" class="tc"&gt;&lt;h1&gt;Сценарии (Что если?)&lt;/h1&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" id="wi-btn" type="button"&gt;Сравнить&lt;/button&gt;&lt;div id="wi-res"&gt;&lt;/div&gt;
      &lt;/div&gt;

      
      &lt;div id="fc-finplan" class="tc"&gt;&lt;h1&gt;Фин. план&lt;/h1&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" id="fp-btn" type="button"&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;/div&gt;
&lt;/main&gt;

&lt;script&gt;
(function(){
'use strict';
function $(id){return document.getElementById(id);}
function V(id,d){var el=$(id);return el?(+el.value||0):(d||0);}
function F(n){return new Intl.NumberFormat('ru-RU').format(Math.round(n));}
function P(n){return (n*100).toFixed(2)+'%';}
var MN=['Янв','Фев','Мар','Апр','Май','Июн','Июл','Авг','Сен','Окт','Ноя','Дек'];

/* ===== НАВИГАЦИЯ — делегирование событий (надёжно) ===== */
function initNav(){
  var nav=$('main-nav');
  if(!nav) return;
  nav.addEventListener('click', function(e){
    var link=e.target.closest('.nav-link');
    if(!link) return;
    e.preventDefault();
    var all=nav.querySelectorAll('.nav-link');
    for(var i=0;i&lt;all.length;i++) all[i].classList.remove('active');
    link.classList.add('active');
    var tcs=document.querySelectorAll('#fc-w .tc');
    for(var j=0;j&lt;tcs.length;j++) tcs[j].classList.remove('act');
    var view=link.getAttribute('data-view');
    var t=link.getAttribute('data-t');
    var target=null;
    if(view==='dash'){target=$('fc-dash');$('breadcrumbs').textContent='Пандора CRM / Дашборд';}
    else if(view==='1c'){target=$('fc-1c');$('breadcrumbs').textContent='Пандора CRM / Интеграция 1С 8.3';}
    else if(t){target=$('fc-'+t);$('breadcrumbs').textContent='Пандора CRM / '+link.textContent;}
    if(target) target.classList.add('act');
    window.scrollTo({top:0,behavior:'smooth'});
  });
}

function initRole(){
  var rs=$('role-switcher');
  if(!rs) return;
  rs.addEventListener('change', function(){
    var title='Бизнесмена';
    if(this.value==='acc')title='Бухгалтера';
    if(this.value==='mgm')title='Управленца';
    if(this.value==='hr')title='HR-директора';
    var el=$('dash-role-title');
    if(el)el.textContent=title;
  });
}

/* ===== ИСТОРИЯ / СОХРАНЕНИЕ ===== */
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,data:{}};for(var i=0;i&lt;inputs.length;i++){if(inputs[i].id)st.data[inputs[i].id]=inputs[i].value;}localStorage.setItem(SK,JSON.stringify(st));var ind=$('fc-save-ind');if(ind){ind.textContent='✓ Сохранено';setTimeout(function(){ind.textContent='';},2000);}}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');for(var i=0;i&lt;inputs.length;i++){var inp=inputs[i];if(inp.id&amp;&amp;st.data[inp.id]!==undefined)inp.value=st.data[inp.id];}}catch(e){}}
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={};for(var i=0;i&lt;inputs.length;i++){if(inputs[i].id)data[inputs[i].id]=inputs[i].value;}h.unshift({name:name,date:new Date().toLocaleString('ru-RU'),data:data});if(h.length&gt;50)h.pop();saveHist(h);renderHist();}
function renderHist(){var h=getHist();var list=$('fc-hist-list');if(!list)return;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;var bls=list.querySelectorAll('.bl');for(var k=0;k&lt;bls.length;k++){bls[k].onclick=function(){var hh=getHist();var item=hh[+this.dataset.i];if(item){var inputs=document.querySelectorAll('#fc-w input,#fc-w select');for(var m=0;m&lt;inputs.length;m++){if(inputs[m].id&amp;&amp;item.data[inputs[m].id]!==undefined)inputs[m].value=item.data[inputs[m].id];}}};}var bds=list.querySelectorAll('.bd');for(var q=0;q&lt;bds.length;q++){bds[q].onclick=function(){var hh=getHist();hh.splice(+this.dataset.i,1);saveHist(hh);renderHist();};}}

/* ===== ГРАФИКИ ===== */
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=44,padR=10,padT=10,padB=24;var all=[];for(var s=0;s&lt;opts.series.length;s++)all=all.concat(opts.series[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="rgba(255,255,255,.08)"/&gt;';svg+='&lt;text x="'+(padL-5)+'" y="'+(gy+3)+'" font-size="9" fill="#7a86b8" 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="rgba(255,255,255,.2)" stroke-dasharray="4 3"/&gt;';for(var s2=0;s2&lt;opts.series.length;s2++){var sr=opts.series[s2];var pts='';for(var i=0;i&lt;n;i++)pts+=x(i)+','+y(sr.values[i])+' ';svg+='&lt;polyline points="'+pts+'" fill="none" stroke="'+sr.color+'" stroke-width="2.5" stroke-linejoin="round" style="filter:drop-shadow(0 0 4px '+sr.color+')"/&gt;';}var step=Math.ceil(n/8);for(var i2=0;i2&lt;n;i2+=step)svg+='&lt;text x="'+x(i2)+'" y="'+(H-6)+'" font-size="9" fill="#7a86b8" text-anchor="middle"&gt;'+opts.labels[i2]+'&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:#7a86b8;margin-top:4px"&gt;';for(var s3=0;s3&lt;opts.series.length;s3++)leg+='&lt;span style="display:flex;align-items:center;gap:4px"&gt;&lt;span style="width:10px;height:10px;background:'+opts.series[s3].color+';border-radius:2px;box-shadow:0 0 6px '+opts.series[s3].color+'"&gt;&lt;/span&gt;'+opts.series[s3].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=44,padR=10,padT=10,padB=24;var n=opts.labels.length;var all=[];for(var s=0;s&lt;opts.series.length;s++)all=all.concat(opts.series[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="rgba(255,255,255,.08)"/&gt;';svg+='&lt;text x="'+(padL-5)+'" y="'+(gy+3)+'" font-size="9" fill="#7a86b8" 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="rgba(255,255,255,.2)" 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;for(var si=0;si&lt;opts.series.length;si++){var v=opts.series[si].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="'+opts.series[si].color+'" rx="2" style="filter:drop-shadow(0 0 3px '+opts.series[si].color+')"/&gt;';}}var step=Math.ceil(n/8);for(var i2=0;i2&lt;n;i2+=step)svg+='&lt;text x="'+(padL+i2*bw+bw/2)+'" y="'+(H-6)+'" font-size="9" fill="#7a86b8" text-anchor="middle"&gt;'+opts.labels[i2]+'&lt;/text&gt;';svg+='&lt;/svg&gt;';var leg='&lt;div style="display:flex;gap:12px;flex-wrap:wrap;font-size:.75rem;color:#7a86b8;margin-top:4px"&gt;';for(var s2=0;s2&lt;opts.series.length;s2++)leg+='&lt;span style="display:flex;align-items:center;gap:4px"&gt;&lt;span style="width:10px;height:10px;background:'+opts.series[s2].color+';border-radius:2px;box-shadow:0 0 6px '+opts.series[s2].color+'"&gt;&lt;/span&gt;'+opts.series[s2].name+'&lt;/span&gt;';leg+='&lt;/div&gt;';container.innerHTML=svg+leg;}
function fcDonut(container,items){if(!container)return;var total=0;for(var i=0;i&lt;items.length;i++)total+=items[i].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;';for(var i2=0;i2&lt;items.length;i2++){var dash=items[i2].value/total*C;svg+='&lt;circle cx="50" cy="50" r="'+R+'" fill="none" stroke="'+items[i2].color+'" stroke-width="16" stroke-dasharray="'+dash+' '+(C-dash)+'" stroke-dashoffset="'+(-off)+'" transform="rotate(-90 50 50)" style="filter:drop-shadow(0 0 3px '+items[i2].color+')"/&gt;';off+=dash;}svg+='&lt;text x="50" y="47" font-size="10" font-weight="700" fill="#fff" text-anchor="middle"&gt;'+fcShort(total)+'&lt;/text&gt;';svg+='&lt;text x="50" y="58" font-size="6" fill="#7a86b8" text-anchor="middle"&gt;руб&lt;/text&gt;&lt;/svg&gt;';var leg='&lt;div style="flex:1;min-width:180px;font-size:.78rem;color:#d8e0ff"&gt;';for(var i3=0;i3&lt;items.length;i3++)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:'+items[i3].color+';border-radius:2px;box-shadow:0 0 5px '+items[i3].color+'"&gt;&lt;/span&gt;'+items[i3].label+'&lt;/span&gt;&lt;span style="font-weight:700"&gt;'+F(items[i3].value)+' ('+Math.round(items[i3].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;';}

/* ===== НАЛОГОВЫЕ ДАННЫЕ ===== */
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 contrib(pay,emp,cat,cb,mrot,isPriority,isITAccredited,itShare){
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'){if(isPriority){var mrotTotal=mrot*emp;if(pe&lt;=mrot)t=pay*.3;else if(pe&lt;=cb)t=mrotTotal*.3+(pay-mrotTotal)*.15;else t=mrotTotal*.3+(cb*emp-mrotTotal)*.15+(pay-cb*emp)*.151;}else{t=pe&lt;=cb?pay*.3:cb*.3*emp+(pay-cb*emp)*.151;}}
else if(cat==='it'){if(isITAccredited&amp;&amp;itShare&gt;=0.7){t=pe&lt;=cb?pay*.15:cb*.15*emp+(pay-cb*emp)*.076;}else{t=pe&lt;=cb?pay*.3:cb*.3*emp+(pay-cb*emp)*.151;}}
return t+pay*.002;}

/* ===== ИНИЦИАЛИЗАЦИЯ (безопасная) ===== */
function init(){
  initNav();
  initRole();
  loadState();

  var saveBtn=$('fc-save-btn'),pdfBtn=$('fc-pdf-btn'),resetBtn=$('fc-reset-btn'),histClose=$('fc-hist-close');
  if(saveBtn)saveBtn.onclick=addToHist;
  if(pdfBtn)pdfBtn.onclick=function(){window.print();};
  if(resetBtn)resetBtn.onclick=function(){if(confirm('Сбросить все данные? История останется.')){try{localStorage.removeItem(SK);}catch(e){}location.reload();}};
  if(histClose)histClose.onclick=function(){var p=$('fc-hist-panel');if(p)p.style.display='none';};
  if(getHist().length&gt;0){var hp=$('fc-hist-panel');if(hp)hp.style.display='block';renderHist();}

  var inputs=document.querySelectorAll('#fc-w input,#fc-w select');
  var saveTimer=null;
  for(var i=0;i&lt;inputs.length;i++){
    inputs[i].addEventListener('change',function(){clearTimeout(saveTimer);saveTimer=setTimeout(saveState,800);});
  }

  var chR=$('ch-r');
  if(chR)chR.onchange=function(){var row=$('ch-vat-row');if(row)row.style.display=chR.value==='osn'?'grid':'none';};

  /* УСН */
  var uBtn=$('u-btn');
  if(uBtn)uBtn.onclick=function(){var y=V('u-y',2026),p=T[y]||T[2026],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),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;&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;&lt;div class="ri"&gt;&lt;span&gt;Доход за год&lt;/span&gt;&lt;span class="v"&gt;'+F(ti)+' руб.&lt;/span&gt;&lt;/div&gt;&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;&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;&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;&lt;div class="st"&gt;Авансы&lt;/div&gt;';var adv=[[a1,'1 кв.'],[a2,'2 кв.'],[a3,'3 кв.'],[a4,'год']];for(var i=0;i&lt;4;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 млн руб. — нужен НДС 5% или 7%.&lt;/div&gt;';h+='&lt;div class="st"&gt;Доходы по кварталам&lt;/div&gt;&lt;div id="u-ch-bars"&gt;&lt;/div&gt;&lt;/div&gt;';$('u-res').innerHTML=h;fcBars($('u-ch-bars'),{labels:['1 кв','2 кв','3 кв','4 кв'],series:[{name:'Доход',color:'#00f0ff',values:q}]});saveState();};

  /* ОСН */
  var oBtn=$('o-btn');
  if(oBtn)oBtn.onclick=function(){var y=V('o-y',2026),p=T[y]||T[2026],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'),mrot=V('o-mrot',25000);var isPriority=$('o-priority')&amp;&amp;$('o-priority').checked,isIT=$('o-it-accred')&amp;&amp;$('o-it-accred').checked,itShare=V('o-it-share',0)/100;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,mrot,isPriority,isIT,itShare),tc=co+pay*.002;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;&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;&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;&lt;div class="st"&gt;НДС '+(p.vr*100)+'%&lt;/div&gt;&lt;div class="ri"&gt;&lt;span&gt;Начисленный&lt;/span&gt;&lt;span class="v"&gt;'+F(ov)+' руб.&lt;/span&gt;&lt;/div&gt;&lt;div class="ri"&gt;&lt;span&gt;К вычету&lt;/span&gt;&lt;span class="v"&gt;-'+F(iv)+' руб.&lt;/span&gt;&lt;/div&gt;&lt;div class="ri"&gt;&lt;span&gt;К уплате&lt;/span&gt;&lt;span class="v"&gt;'+F(vp)+' руб.&lt;/span&gt;&lt;/div&gt;&lt;div class="st"&gt;Прибыль '+(p.pt*100)+'%&lt;/div&gt;&lt;div class="ri"&gt;&lt;span&gt;База&lt;/span&gt;&lt;span class="v"&gt;'+F(pbt)+' руб.&lt;/span&gt;&lt;/div&gt;&lt;div class="ri"&gt;&lt;span&gt;Налог&lt;/span&gt;&lt;span class="v"&gt;'+F(pt)+' руб.&lt;/span&gt;&lt;/div&gt;&lt;div class="st"&gt;Страховые взносы&lt;/div&gt;&lt;div class="ri"&gt;&lt;span&gt;Взносы&lt;/span&gt;&lt;span class="v"&gt;'+F(co)+' руб.&lt;/span&gt;&lt;/div&gt;';if(cat==='msp'){h+=isPriority?'&lt;div class="ci pass"&gt;[OK] МСП: приоритетная отрасль. Льгота 15% применена.&lt;/div&gt;':'&lt;div class="ci fail"&gt;[X] МСП: НЕ приоритетная отрасль. Применён общий тариф.&lt;/div&gt;';}if(cat==='it'){h+=(isIT&amp;&amp;itShare&gt;=0.7)?'&lt;div class="ci pass"&gt;[OK] ИТ: аккредитация + доля ≥70%. Тариф 15%/7,6% применён.&lt;/div&gt;':'&lt;div class="ci fail"&gt;[X] ИТ: нет условий. Применён общий тариф.&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();};

  /* НАЦЕНКА */
  var grps=[{id:1,nm:'Товар А',cost:1000,price:1500,qty:100}],gid=2;
  var exps=[{id:1,nm:'Аренда',a:50000,c:'#00f0ff'},{id:2,nm:'Реклама',a:30000,c:'#ff2bd6'},{id:3,nm:'ЗП админ.',a:40000,c:'#39ff14'},{id:4,nm:'Связь',a:5000,c:'#b55cff'},{id:5,nm:'Прочее',a:10000,c:'#ff8a1e'}],eid=6;
  var EC=['#00f0ff','#ff2bd6','#39ff14','#b55cff','#ff8a1e','#f9ff00','#ff5b7a','#4ecdc4'];
  function rGrps(){var el=$('m-grps');if(!el)return;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+'" type="button"&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:#ff5b7a;font-size:.72rem;margin-top:2px"&gt;[!] Убыток!&lt;/div&gt;':'')+'&lt;/div&gt;';}el.innerHTML=html;var rms=el.querySelectorAll('.rm-g');for(var k=0;k&lt;rms.length;k++){rms[k].onclick=function(){var id=this.dataset.id;grps=grps.filter(function(x){return x.id!=id;});rGrps();};}var grEls=el.querySelectorAll('.grp');for(var q=0;q&lt;grEls.length;q++){(function(grEl){var id=+grEl.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;grEl.querySelector('.g-nm').oninput=function(e){g.nm=e.target.value;};grEl.querySelector('.g-c').oninput=function(e){g.cost=+e.target.value||0;};grEl.querySelector('.g-p').oninput=function(e){g.price=+e.target.value||0;};grEl.querySelector('.g-q').oninput=function(e){g.qty=+e.target.value||0;};})(grEls[q]);}}
  function rExps(){var el=$('m-exps');if(!el)return;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+';box-shadow:0 0 6px '+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+'" type="button"&gt;x&lt;/button&gt;&lt;/div&gt;';}el.innerHTML=html;var rms=el.querySelectorAll('.rm');for(var k=0;k&lt;rms.length;k++){rms[k].onclick=function(){var id=this.dataset.id;exps=exps.filter(function(x){return x.id!=id;});rExps();uET();};}var inps=el.querySelectorAll('.e-a');for(var q=0;q&lt;inps.length;q++){inps[q].oninput=function(e){var id=+this.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;var el=$('m-et');if(el)el.textContent=F(t)+' руб.';}
  var mAg=$('m-ag');if(mAg)mAg.onclick=function(){grps.push({id:gid++,nm:'Группа '+grps.length,cost:0,price:0,qty:0});rGrps();};
  var mAe=$('m-ae');if(mAe)mAe.onclick=function(){exps.push({id:eid++,nm:'Расход '+(exps.length+1),a:0,c:EC[eid%EC.length]});rExps();uET();};
  rGrps();rExps();uET();
  var mBtn=$('m-btn');
  if(mBtn)mBtn.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 i2=0;i2&lt;grps.length;i2++)tra+=grps[i2].price*grps[i2].qty;var res=[];for(var i3=0;i3&lt;grps.length;i3++){var g=grps[i3];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=iv?ct*.22/1.22:0,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=iv?ct*.22/1.22:0,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,tT=0,tP=0;for(var i4=0;i4&lt;res.length;i4++){tR+=res[i4].rg;tT+=res[i4].tx;tP+=res[i4].pr;}var h='&lt;div class="res"&gt;&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;&lt;div class="ri"&gt;&lt;span&gt;Выручка&lt;/span&gt;&lt;span class="v"&gt;'+F(tR)+' руб.&lt;/span&gt;&lt;/div&gt;&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;&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 i5=0;i5&lt;res.length;i5++){var r=res[i5];h+='&lt;tr '+(r.cost&gt;r.price?'style="color:#ff5b7a"':'')+'&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 i6=0;i6&lt;res.length;i6++){if(res[i6].qty&gt;0&amp;&amp;res[i6].cost&lt;=res[i6].price){fv=res[i6];break;}}if(fv){h+='&lt;div class="st"&gt;Структура цены: '+fv.nm+'&lt;/div&gt;&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;&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;&lt;div class="pf-row"&gt;&lt;span class="l"&gt;Налоги&lt;/span&gt;&lt;span class="r"&gt;'+F(fv.tx/fv.qty)+' руб.&lt;/span&gt;&lt;/div&gt;&lt;div class="pf-row"&gt;&lt;span class="l"&gt;Прочие&lt;/span&gt;&lt;span class="r"&gt;'+F(fv.es/fv.qty)+' руб.&lt;/span&gt;&lt;/div&gt;&lt;div class="pf-row" style="font-weight:800;border-top:1px solid var(--pink);padding-top:4px"&gt;&lt;span class="l"&gt;Прибыль&lt;/span&gt;&lt;span class="r" style="color:var(--green)"&gt;'+F(fv.pr/fv.qty)+' руб.&lt;/span&gt;&lt;/div&gt;&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 i7=0;i7&lt;res.length;i7++){if(res[i7].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%. Поднимите цены.&lt;/div&gt;';else if(avgMargin&gt;=0.1)h+='&lt;div class="ci pass"&gt;[OK] Маржа '+P(avgMargin)+' — приемлемая.&lt;/div&gt;';var bestG=res[0];for(var i8=1;i8&lt;res.length;i8++){if(res[i8].pr&gt;bestG.pr)bestG=res[i8];}if(bestG&amp;&amp;bestG.pr&gt;0)h+='&lt;div class="ci pass"&gt;Локомотив: "'+(bestG.nm||'Группа')+'" → '+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:'#ff5b7a'},{label:'Налоги',value:fv.tx/fv.qty,color:'#f9ff00'},{label:'Прочие',value:fv.es/fv.qty,color:'#00f0ff'},{label:'Прибыль',value:Math.max(0,fv.pr/fv.qty),color:'#39ff14'}]);}saveState();};

  /* РЕЖИМЫ */
  var cBtn=$('c-btn');
  if(cBtn)cBtn.onclick=function(){var y=V('c-y',2026),p=T[y]||T[2026],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 isPriority=$('c-priority')&amp;&amp;$('c-priority').checked,isIT=$('c-it-accred')&amp;&amp;$('c-it-accred').checked,itShare=V('c-it-share',0)/100;var co=contrib(pay,emp,cat,p.cb,p.mrot,isPriority,isIT,itShare)+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);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-b5*.15)});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);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-b7*.15)});}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;rs.push({n:'ОСН',av:true,nt:'',np:Math.round(rnO-(exp-iaO)-oe-pay-co-Math.max(0,pbO)*.25)});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 i2=0;i2&lt;rs.length;i2++){var r=rs[i2];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;&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:'#b55cff',values:rs.map(function(r){return r.np;})}]});saveState();};

  /* КРЕДИТ */
  var crBtn=$('cr-btn');
  if(crBtn)crBtn.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;&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;&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;&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" style="color:var(--green)"&gt;-'+F(tsc)+'&lt;/td&gt;&lt;td class="n" style="color:var(--green)"&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();};

  /* ДИВИДЕНДЫ */
  var dBtn=$('d-btn');
  if(dBtn)dBtn.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;&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;&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;&lt;tr&gt;&lt;td&gt;Взносы&lt;/td&gt;&lt;td class="n" style="color:var(--green)"&gt;0&lt;/td&gt;&lt;td class="n"&gt;'+F(sc)+'&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(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();};

  /* КУДИР */
  var kOps=[],kId=1;
  function rKOps(){var el=$('k-ops');if(!el)return;if(kOps.length===0){el.innerHTML='&lt;div style="color:#7a86b8;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+'" type="button"&gt;x&lt;/button&gt;&lt;/div&gt;';}el.innerHTML=html;var rms=el.querySelectorAll('.rm');for(var k=0;k&lt;rms.length;k++){rms[k].onclick=function(){var id=this.dataset.id;kOps=kOps.filter(function(x){return x.id!=id;});rKOps();};}var items=el.querySelectorAll('.op-item');for(var q=0;q&lt;items.length;q++){(function(item){var id=+item.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;item.querySelector('.k-d').onchange=function(e){o.d=e.target.value;};item.querySelector('.k-dc').oninput=function(e){o.dc=e.target.value;};item.querySelector('.k-ds').oninput=function(e){o.ds=e.target.value;};item.querySelector('.k-t').onchange=function(e){o.t=e.target.value;};item.querySelector('.k-a').oninput=function(e){o.a=+e.target.value||0;};})(items[q]);}}
  var kAdd=$('k-add');if(kAdd)kAdd.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();
  var kBtn=$('k-btn');
  if(kBtn)kBtn.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 i2=0;i2&lt;ops.length;i2++){if(ops[i2].t==='i')ti+=ops[i2].a;else te+=ops[i2].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=[],ci=0,ce=0;var periods=['1 кв.','Полугодие','9 мес.','Год'];for(var pi=0;pi&lt;4;pi++){for(var i3=0;i3&lt;ops.length;i3++){if(gq(ops[i3].d)===pi){if(ops[i3].t==='i')ci+=ops[i3].a;else ce+=ops[i3].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;&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 i4=0;i4&lt;cum.length;i4++){h+='&lt;tr&gt;&lt;td&gt;'+cum[i4].p+'&lt;/td&gt;&lt;td class="n"&gt;'+F(cum[i4].i)+'&lt;/td&gt;'+(reg==='usn15'?'&lt;td class="n"&gt;'+F(cum[i4].e)+'&lt;/td&gt;':'')+'&lt;/tr&gt;';}h+='&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;';$('k-res').innerHTML=h;saveState();};

  /* КАЛЕНДАРЬ */
  var clBtn=$('cl-btn');
  if(clBtn)clBtn.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 m2=1;m2&lt;=12;m2++)ev.push({d:y+'-'+(m2&lt;10?'0':'')+m2+'-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 i2=0;i2&lt;ev.length;i2++){h+='&lt;div class="ri"&gt;&lt;span&gt;'+ev[i2].d.split('-').reverse().join('.')+' — '+ev[i2].n+'&lt;/span&gt;&lt;/div&gt;';}h+='&lt;/div&gt;';$('cl-res').innerHTML=h;saveState();};

  /* ПЛАТЁЖКА */
  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'};
  var pBtn=$('p-btn');
  if(pBtn)pBtn.onclick=function(){var t=$('p-t').value,a=V('p-a'),inn=$('p-inn').value||'—',ok=$('p-ok').value||'—',nm=$('p-nm').value||'—';var rows=[['Дата',new Date().toLocaleDateString('ru-RU')],['Плательщик',nm],['ИНН',inn],['Получатель','УФК (ИФНС)'],['КБК',KBC[t]||'—'],['ОКТМО',ok],['Сумма',F(a)+' руб.']];var h='&lt;div class="res"&gt;&lt;div class="st"&gt;Платёжное поручение&lt;/div&gt;';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();};

  /* ПРОВЕРКИ */
  var chBtn=$('ch-btn');
  if(chBtn)chBtn.onclick=function(){var r=$('ch-r').value,y=V('ch-y',2026),p=T[y]||T[2026],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 i2=0;i2&lt;checks.length;i2++){var c=checks[i2];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();};

  /* КОЭФФИЦИЕНТЫ */
  var rBtn=$('r-btn');
  if(rBtn)rBtn.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,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;&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;&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;&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;&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;&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;&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();};

  /* ОТПУСК */
  var vBtn=$('v-btn');
  if(vBtn)vBtn.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;&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;&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;&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+' лет → '+(pct*100)+'%&lt;/span&gt;&lt;span class="v"&gt;'+(pct*100)+'%&lt;/span&gt;&lt;/div&gt;&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;&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;&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();};

  /* АМОРТИЗАЦИЯ */
  var aBtn=$('a-btn');
  if(aBtn)aBtn.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;&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;&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();};

  /* ДЕКЛАРАЦИЯ */
  var dcBtn=$('dc-btn');
  if(dcBtn)dcBtn.onclick=function(){var y=V('dc-y',2026),p=T[y]||T[2026],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=[],a=[],prev=0;for(var i=0;i&lt;4;i++){tx.push(q[i]*p.ur);var adv=Math.max(0,tx[i]-c[i]-prev);a.push(adv);prev+=adv;}var totalA=0;for(var i2=0;i2&lt;4;i2++)totalA+=a[i2];var periods=['1 кв.','Полугодие','9 мес.','Год'];var h='&lt;div class="res"&gt;&lt;div class="st"&gt;Декларация УСН '+y+'&lt;/div&gt;&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;&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;';for(var i3=0;i3&lt;4;i3++)h+='&lt;tr&gt;&lt;td&gt;'+periods[i3]+'&lt;/td&gt;&lt;td class="n"&gt;'+F(q[i3])+'&lt;/td&gt;&lt;td class="n"&gt;'+F(tx[i3])+'&lt;/td&gt;&lt;td class="n"&gt;'+F(c[i3])+'&lt;/td&gt;&lt;td class="n"&gt;'+F(a[i3])+'&lt;/td&gt;&lt;/tr&gt;';h+='&lt;/tbody&gt;&lt;/table&gt;&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;&lt;/div&gt;';$('dc-res').innerHTML=h;saveState();};

  /* ПЛАН-ФАКТ */
  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;';}
  var plPlanEl=$('pl-plan'),plFactEl=$('pl-fact');
  if(plPlanEl)plPlanEl.innerHTML=plPlanHtml;
  if(plFactEl)plFactEl.innerHTML=plFactHtml;
  var plBtn=$('pl-btn');
  if(plBtn)plBtn.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 i2=0;i2&lt;12;i2++){tp+=plan[i2];tf+=fact[i2];}var dev=tf-tp,devP=tp&gt;0?dev/tp:0;var isRev=cat==='revenue';var h='&lt;div class="res"&gt;&lt;div class="st"&gt;План-факт: '+cn[cat]+'&lt;/div&gt;&lt;div class="ri"&gt;&lt;span&gt;План&lt;/span&gt;&lt;span class="v"&gt;'+F(tp)+' руб.&lt;/span&gt;&lt;/div&gt;&lt;div class="ri"&gt;&lt;span&gt;Факт&lt;/span&gt;&lt;span class="v"&gt;'+F(tf)+' руб.&lt;/span&gt;&lt;/div&gt;&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;&lt;div class="st"&gt;По месяцам&lt;/div&gt;';var maxV=1;for(var i3=0;i3&lt;12;i3++){if(plan[i3]&gt;maxV)maxV=plan[i3];if(fact[i3]&gt;maxV)maxV=fact[i3];}for(var i4=0;i4&lt;12;i4++){if(plan[i4]===0&amp;&amp;fact[i4]===0)continue;var fD=plan[i4]&gt;0?(fact[i4]-plan[i4])/plan[i4]:0;var isG=isRev?fact[i4]&gt;=plan[i4]:fact[i4]&lt;=plan[i4];h+='&lt;div style="margin-bottom:4px"&gt;&lt;div style="font-size:.68rem;color:#7a86b8"&gt;'+MN[i4]+' &lt;b style="color:'+(isG?'#39ff14':'#ff5b7a')+'"&gt;'+(fD&gt;=0?'+':'')+(fD*100).toFixed(0)+'%&lt;/b&gt;&lt;/div&gt;&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[i4]/maxV*100)+'%"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="bar-val"&gt;'+F(plan[i4])+'&lt;/span&gt;&lt;/div&gt;&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[i4]/maxV*100)+'%"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="bar-val"&gt;'+F(fact[i4])+'&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;';}var over=[];for(var i5=0;i5&lt;12;i5++){if(plan[i5]&gt;0&amp;&amp;(isRev?fact[i5]&lt;plan[i5]:fact[i5]&gt;plan[i5]))over.push(MN[i5]);}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();};

  /* CASH FLOW */
  var cfOps=[],cfId=1;
  function rCfOps(){var el=$('cf-ops');if(!el)return;if(cfOps.length===0){el.innerHTML='&lt;div style="color:#7a86b8;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':'')+'&gt;Поступление&lt;/option&gt;&lt;option value="out" '+(o.t==='out'?'selected':'')+'&gt;Платёж&lt;/option&gt;&lt;/select&gt;&lt;input type="number" class="cf-a" min="0" value="'+o.a+'"&gt;&lt;button class="rm" data-id="'+o.id+'" type="button"&gt;x&lt;/button&gt;&lt;/div&gt;';}el.innerHTML=html;var rms=el.querySelectorAll('.rm');for(var k=0;k&lt;rms.length;k++){rms[k].onclick=function(){var id=this.dataset.id;cfOps=cfOps.filter(function(x){return x.id!=id;});rCfOps();};}var items=el.querySelectorAll('.op-item');for(var q=0;q&lt;items.length;q++){(function(item){var id=+item.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;item.querySelector('.cf-d').onchange=function(e){o.d=e.target.value;};item.querySelector('.cf-n').oninput=function(e){o.n=e.target.value;};item.querySelector('.cf-t').onchange=function(e){o.t=e.target.value;};item.querySelector('.cf-a').oninput=function(e){o.a=+e.target.value||0;};})(items[q]);}}
  var cfAdd=$('cf-add');if(cfAdd)cfAdd.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();
  var cfBtn=$('cf-btn');
  if(cfBtn)cfBtn.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 i2=0;i2&lt;dates.length;i2++){var d=dates[i2];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;&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;&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;&lt;div class="st"&gt;Рекомендации&lt;/div&gt;&lt;div class="ci fail"&gt;Разрыв '+F(Math.abs(minB))+' руб.&lt;/div&gt;&lt;div class="ci warn"&gt;1. Перенесите платёж поставщику.&lt;/div&gt;&lt;div class="ci warn"&gt;2. Попросите предоплату у клиентов.&lt;/div&gt;&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)+' руб.&lt;/div&gt;';else{h+='&lt;div class="wr ok"&gt;[OK] Кассовых разрывов нет. Минимум: '+F(minB)+' руб.&lt;/div&gt;';}if(timeline.length&gt;0){h+='&lt;div class="st"&gt;Движение&lt;/div&gt;';for(var i3=0;i3&lt;timeline.length;i3++){var t=timeline[i3];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:'#00f0ff',values:timeline.map(function(t){return t.balance;})}]});}saveState();};

  /* UNIT */
  var ueBtn=$('ue-btn');
  if(ueBtn)ueBtn.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;&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;&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;&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;&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;&lt;div class="ri"&gt;&lt;span&gt;Выручка&lt;/span&gt;&lt;span class="v"&gt;'+F(mRev)+' руб.&lt;/span&gt;&lt;/div&gt;&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;&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;&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;&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;&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();};

  /* НПД */
  var npBtn=$('np-btn');
  if(npBtn)npBtn.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 taxDue=Math.max(0,taxBefore-bonusApplied-paid);var effRate=total&gt;0?taxDue/total:0;var h='&lt;div class="res"&gt;&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;&lt;div class="ri"&gt;&lt;span&gt;От физлиц (4%)&lt;/span&gt;&lt;span class="v"&gt;'+F(phys)+' → '+F(taxPhys)+' руб.&lt;/span&gt;&lt;/div&gt;&lt;div class="ri"&gt;&lt;span&gt;От юрлиц (6%)&lt;/span&gt;&lt;span class="v"&gt;'+F(legal)+' → '+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;[!!!] Доход &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();};

  /* ЧТО ЕСЛИ */
  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};}
  var wiBtn=$('wi-btn');
  if(wiBtn)wiBtn.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:'#00f0ff'},{n:bNm+' (Б)',d:sB,c:'#b55cff'},{n:cNm+' (В)',d:sC,c:'#ff2bd6'}];var h='&lt;div class="res"&gt;&lt;div class="st"&gt;Сравнение сценариев&lt;/div&gt;&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++)h+='&lt;td class="n"&gt;'+rows[ri][1](sc[si].d)+'&lt;/td&gt;';h+='&lt;/tr&gt;';}h+='&lt;/tbody&gt;&lt;/table&gt;&lt;div class="st"&gt;Прибыль по сценариям&lt;/div&gt;&lt;div id="wi-ch-bars"&gt;&lt;/div&gt;';var best=sc[0],worst=sc[0];for(var i2=1;i2&lt;sc.length;i2++){if(sc[i2].d.np&gt;best.d.np)best=sc[i2];if(sc[i2].d.np&lt;worst.d.np)worst=sc[i2];}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+'" → убыток '+F(Math.abs(worst.d.np))+' руб./мес.&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:'#ff2bd6',values:sc.map(function(s){return s.d.np;})}]});saveState();};

  /* ФИНПЛАН */
  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;';
  var fpSeasonEl=$('fp-season');
  if(fpSeasonEl)fpSeasonEl.innerHTML=fpSeasonHtml;
  var fpBtn=$('fp-btn');
  if(fpBtn)fpBtn.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,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 pbt=rev-cogs-fixed-hireCost;
      var tax=0,pat=0;
      if(taxMode==='usn6'){tax=rev*0.06;pat=pbt-tax;}
      else if(taxMode==='usn15'){tax=Math.max(0,pbt)*0.15;pat=pbt-tax;}
      else if(taxMode==='osn'){var nds=rev*0.22/1.22;var ndsD=cogs*0.22/1.22;var ndsP=Math.max(0,nds-ndsD);var pTax=Math.max(0,pbt-ndsP)*0.25;tax=ndsP+pTax;pat=pbt-tax;}
      else if(taxMode==='npd'){tax=rev*0.04;pat=pbt-tax;}
      else{pat=pbt;}
      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(pbt),tax:Math.round(tax),profitAfterTax:Math.round(pat),investment:investment};
    }
    function buildScenario(revGrowth,revDrop){
      var months=[],cash=startCash,totalProfit=0,totalRevenue=0,totalTax=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;if(cash&lt;minCash){minCash=cash;minCashMonth=m;}if(cash&lt;0)cashGaps.push(m);}
      return{months:months,totalProfit:totalProfit,totalRevenue:totalRevenue,totalTax:totalTax,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 cum=0;for(var m=0;m&lt;scBase.months.length;m++){cum+=scBase.months[m].profitAfterTax;if(cum&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 m2=0;m2&lt;scBase.months.length;m2++){if(scBase.months[m2].profitAfterTax&gt;=goalProfit&amp;&amp;goalReachedMonth===null)goalReachedMonth=m2+1;}
    var h='&lt;div class="res"&gt;&lt;div class="st"&gt;Сводка за '+horizon+' месяцев (базовый сценарий)&lt;/div&gt;&lt;div class="metric-cards"&gt;&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;&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;&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;&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;&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;&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;&lt;/div&gt;';
    if(scBase.cashGaps.length&gt;0)h+='&lt;div class="wr err"&gt;[!!!] КАССОВЫЕ РАЗРЫВЫ в месяцах: '+scBase.cashGaps.join(', ')+'.&lt;/div&gt;';
    else h+='&lt;div class="wr ok"&gt;[OK] Кассовых разрывов нет.&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;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.finalCash)+' руб';}],['Кассовые разрывы',function(s){return s.cashGaps.length&gt;0?s.cashGaps.length+' мес':'Нет';}]];
    var scs=[scBase,scOpt,scPess,scStress];
    for(var ri=0;ri&lt;scRows.length;ri++){h+='&lt;tr&gt;&lt;td&gt;'+scRows[ri][0]+'&lt;/td&gt;';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;&lt;div class="ri"&gt;&lt;span&gt;Сумма вложений&lt;/span&gt;&lt;span class="v"&gt;'+F(invSum)+' руб&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;&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;';}else{h+='&lt;div class="wr err"&gt;[X] Инвестиции НЕ окупаются за '+horizon+' месяцев.&lt;/div&gt;';}}
    h+='&lt;div class="st"&gt;Цели&lt;/div&gt;&lt;div class="ri"&gt;&lt;span&gt;Целевая прибыль&lt;/span&gt;&lt;span class="v"&gt;'+F(goalProfit)+' руб/мес&lt;/span&gt;&lt;/div&gt;';
    if(goalReachedMonth!==null)h+='&lt;div class="ci pass"&gt;[OK] Цель достигается в месяце '+goalReachedMonth+'.&lt;/div&gt;';
    else h+='&lt;div class="ci fail"&gt;[X] Цель НЕ достигается за '+horizon+' месяцев.&lt;/div&gt;';
    h+='&lt;div class="st"&gt;Прогноз по месяцам (базовый сценарий)&lt;/div&gt;&lt;div style="overflow-x:auto"&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;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 m3=0;m3&lt;scBase.months.length;m3++){var d=scBase.months[m3];var isGap=d.cash&lt;0;h+='&lt;tr'+(isGap?' style="background:rgba(255,91,122,.1)"':'')+'&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.tax)+'&lt;/td&gt;&lt;td class="n" style="'+(d.profitAfterTax&gt;=0?'color:#39ff14':'color:#ff5b7a;font-weight:700')+'"&gt;'+F(d.profitAfterTax)+'&lt;/td&gt;&lt;td class="n" style="'+(isGap?'color:#ff5b7a;font-weight:700':'')+'"&gt;'+F(d.cash)+'&lt;/td&gt;&lt;/tr&gt;';}
    h+='&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="st"&gt;График: остаток на счёте&lt;/div&gt;&lt;div id="fp-ch-cash"&gt;&lt;/div&gt;&lt;div class="st"&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(', ')+'.&lt;/div&gt;';
    if(scPess.totalProfit&lt;0)h+='&lt;div class="ci warn"&gt;[!] Пессимистичный сценарий: убыток '+F(Math.abs(scPess.totalProfit))+' руб.&lt;/div&gt;';
    if(scBase.totalProfit&gt;0&amp;&amp;scBase.cashGaps.length===0)h+='&lt;div class="ci pass"&gt;[OK] Финансовый план устойчив.&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:'#00f0ff',values:scBase.months.map(function(d){return d.cash;})}]});
    fcLine($('fp-ch-rev'),{labels:fpLabels,series:[{name:'Выручка',color:'#b55cff',values:scBase.months.map(function(d){return d.revenue;})},{name:'Чистая прибыль',color:'#39ff14',values:scBase.months.map(function(d){return d.profitAfterTax;})}]});
    saveState();
  };
}

/* Запуск после загрузки DOM */
if(document.readyState==='loading'){
  document.addEventListener('DOMContentLoaded',init);
}else{
  init();
}
})();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&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>
