
  :root{--bg:#f4f4f4;--white:#fff;--border:#e0e0e0;--border-s:#c8c8c8;--text:#1a1a1a;--muted:#767676;--head:#f0f0f0;--blue:#1f77b4;--green:#2ca02c;--orange:#e07b00;--red:#d62728;--purple:#7c3aed;--teal:#0891b2;--bonus:#b5179e;}
  *{box-sizing:border-box;margin:0;padding:0;}
  body{font-family:'Source Sans 3',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;-webkit-text-size-adjust:100%;}
  .header{background:var(--white);border-bottom:1px solid var(--border);padding:12px 16px;display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:20;}
  .header-logo{width:32px;height:32px;background:var(--green);border-radius:4px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:12px;flex-shrink:0;}
  .header-title{font-size:16px;font-weight:700;}
  .header-sub{font-size:11px;color:var(--muted);}
  .main{padding:14px;max-width:960px;margin:0 auto;}
  .main.wide{max-width:1400px;}
  .main.wide .table-scroll table{width:100%;}
  .status-msg{font-size:12px;color:var(--muted);padding:8px 0;min-height:30px;}
  .csv-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:12px;}
  .drop-zone{background:var(--white);border:2px dashed var(--border-s);border-radius:6px;padding:16px 10px;text-align:center;cursor:pointer;transition:all .15s;}
  .drop-zone:hover,.drop-zone.drag{border-color:var(--green);background:#f0faf0;}
  .drop-zone input{display:none;}
  .drop-title{font-size:13px;font-weight:700;margin-bottom:3px;}
  .drop-hint{font-size:10px;color:var(--muted);}
  .drop-filename{font-size:11px;font-weight:600;color:var(--green);margin-top:5px;word-break:break-all;}
  .btn-build{display:block;width:100%;padding:12px;background:var(--green);color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:700;letter-spacing:.04em;cursor:pointer;margin-bottom:16px;transition:background .15s;}
  .btn-build:disabled{background:#b0d4b0;cursor:not-allowed;}
  .btn-build:not(:disabled):active{background:#1a7a1a;}
  .filter-section{background:var(--white);border:1px solid var(--border);border-radius:4px;padding:10px 12px;margin-bottom:12px;}
  .filter-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:6px;}
  .filter-row:last-child{margin-bottom:0;}
  .filter-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);min-width:60px;}
  .chip{padding:4px 12px;border-radius:20px;border:1.5px solid var(--border-s);background:var(--white);font-size:12px;font-weight:600;color:var(--muted);cursor:pointer;user-select:none;-webkit-user-select:none;transition:all .15s;}
  .chip.active{background:var(--green);border-color:var(--green);color:#fff;}
  .chip.year{border-radius:4px;}
  .kpi-row{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:14px;}
  @media(min-width:540px){.kpi-row{grid-template-columns:repeat(5,1fr);}}
  .kpi-card{background:var(--white);border:1px solid var(--border);border-top:3px solid var(--green);border-radius:2px;padding:10px 12px;}
  .kpi-card.blue{border-top-color:var(--blue);}
  .kpi-card.orange{border-top-color:var(--orange);}
  .kpi-card.purple{border-top-color:var(--purple);}
  .kpi-card.teal{border-top-color:var(--teal);}
  .kpi-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-bottom:4px;line-height:1.3;}
  .kpi-value{font-size:22px;font-weight:700;line-height:1.1;letter-spacing:-.01em;}
  .kpi-unit{font-size:11px;color:var(--muted);margin-top:3px;}
  .card{background:var(--white);border:1px solid var(--border);border-radius:2px;overflow:hidden;margin-bottom:14px;}
  .card-header{background:var(--head);padding:9px 12px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border);}
  .card-header-left{display:flex;align-items:center;gap:8px;}
  .card-header-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;}
  .card-header-sub{font-size:10px;color:var(--muted);}
  .chevron{font-size:11px;color:var(--muted);transition:transform .2s;display:inline-block;}
  .chevron.open{transform:rotate(180deg);}
  .card-body{overflow:hidden;transition:max-height .25s ease;}
  .card-body.collapsed{max-height:0 !important;}
  .chart-body{padding:12px 8px 8px;}
  .table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;}
  .card table{width:100%;border-collapse:collapse;font-size:12px;min-width:360px;}
  .card thead th{background:var(--head);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;padding:7px 10px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;}
  .card tbody td{padding:7px 10px;border-bottom:1px solid var(--border);white-space:nowrap;}
  .card tbody tr:last-child td{border-bottom:none;}
  .td-right{text-align:right;}
  .td-num{font-weight:600;}
  .td-muted{color:var(--muted);}
  .legend-row{display:flex;flex-wrap:wrap;gap:10px;padding:6px 12px 8px;}
  .legend-item{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:600;}
  .legend-dot{width:10px;height:10px;border-radius:2px;flex-shrink:0;}
  #dashboard{display:none;}
  /* uploadSection виден всегда на главной */
  .tab-nav{display:flex;gap:0;margin-bottom:14px;border-bottom:2px solid var(--border);align-items:center;flex-wrap:wrap;}
  /* одна строка, горизонтальная прокрутка при нехватке ширины */
  .tab-bar{display:flex;gap:4px;margin-bottom:14px;border-bottom:2px solid var(--border);align-items:stretch;
           flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;}
  .tab-bar .tab-btn{white-space:nowrap;flex:none;padding:9px 18px;border:1px solid transparent;border-bottom:3px solid transparent;
           border-radius:5px 5px 0 0;background:#f2f4f7;color:var(--muted);font-weight:700;margin-bottom:-2px;}
  .tab-bar .tab-btn.active{background:var(--white);color:#1660c9;border-color:var(--border);
           border-bottom:3px solid #1660c9;}
  .tab-btn{padding:8px 16px;font-size:12px;font-weight:700;color:var(--muted);cursor:pointer;border-radius:4px 4px 0 0;border:1px solid transparent;border-bottom:none;user-select:none;-webkit-user-select:none;margin-bottom:-2px;}
  .tab-btn.active{background:var(--white);border-color:var(--border);border-bottom-color:var(--white);color:var(--text);}
  .tab-spacer{flex:1;}
  .btn-reload{font-size:10px;font-weight:600;color:var(--muted);cursor:pointer;padding:4px 10px;border:1px solid var(--border-s);border-radius:4px;background:var(--white);user-select:none;-webkit-user-select:none;}
  .btn-reload:active{background:var(--head);}
  /* SKU tab */
  .sku-legend{display:flex;gap:14px;padding:8px 12px 6px;flex-wrap:wrap;}
  .sku-leg-item{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--muted);}
  .sku-leg-dot{width:10px;height:10px;border-radius:2px;flex-shrink:0;}
  #skuTable{width:100%;border-collapse:collapse;font-size:12px;min-width:640px;}
  #skuTable thead th,.sort-table thead th{background:var(--head);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;padding:7px 10px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;cursor:pointer;user-select:none;-webkit-user-select:none;}
  #skuTable thead th:hover,.sort-table thead th:hover{background:#e6e6e6;}
  #skuTable thead th.sort-asc::after,.sort-table thead th.sort-asc::after{content:' ▲';}
  #skuTable thead th.sort-desc::after,.sort-table thead th.sort-desc::after{content:' ▼';}
  #skuTable tbody td{padding:6px 10px;border-bottom:1px solid var(--border);white-space:nowrap;vertical-align:middle;}
  #skuTable tbody tr:last-child td{border-bottom:none;}
  #skuTable tbody tr:hover td{background:#f8f8f8;}
  .bar-cell{width:180px;min-width:120px;}
  .bar-wrap{position:relative;height:14px;background:#f0f0f0;border-radius:2px;overflow:hidden;}
  .bar-base{position:absolute;left:0;top:0;height:100%;background:#e0e0e0;border-radius:2px;}
  .bar-cost{position:absolute;left:0;top:0;height:100%;background:#1f77b4;border-radius:2px 0 0 2px;}
  .bar-margin{position:absolute;top:0;height:100%;background:#2ca02c;}
  .bar-bonus{position:absolute;top:0;height:100%;background:#b5179e;}
  .bar-disc{position:absolute;top:0;height:100%;background:#bdbdbd;}
  .n-right{text-align:right;}
  .n-bold{font-weight:600;}
  .pct-pill{display:inline-block;padding:1px 6px;border-radius:10px;font-size:10px;font-weight:700;}
  .pct-green{background:#d1fae5;color:#065f46;}
  .pct-red{background:#fee2e2;color:#991b1b;}
  .pct-gray{background:#f0f0f0;color:#767676;}
  .header-back{font-size:12px;font-weight:600;color:var(--muted);text-decoration:none;padding:6px 12px;border:1px solid var(--border-s);border-radius:4px;white-space:nowrap;}
  .header-back:active{background:var(--head);}
  .gear-btn{font-size:15px;cursor:pointer;color:var(--muted);user-select:none;-webkit-user-select:none;padding:0 4px;}
  /* Mini grid */
  .mini-row{border-bottom:1px solid var(--border);padding:8px 12px;}
  .mini-row:last-child{border-bottom:none;}
  .mini-title{font-size:12px;font-weight:700;margin-bottom:4px;}
  .mini-sub{font-size:11px;font-weight:400;color:var(--muted);}
  .mini-charts{display:flex;gap:10px;align-items:center;}
  .mini-left{flex:1.6;min-width:0;}
  .mini-right{flex:1;min-width:0;}
  /* Modal */
  .modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:50;align-items:center;justify-content:center;padding:16px;}
  .modal-box{background:var(--white);border-radius:6px;max-width:520px;width:100%;max-height:85vh;display:flex;flex-direction:column;}
  .modal-header{padding:12px 14px;border-bottom:1px solid var(--border);font-size:13px;font-weight:700;display:flex;justify-content:space-between;align-items:center;}
  .modal-close{cursor:pointer;color:var(--muted);font-size:15px;padding:0 4px;}
  .modal-body{padding:12px 14px;overflow-y:auto;}
  .set-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-bottom:6px;}
  .set-empty{font-size:12px;color:var(--muted);}
  .set-merge-row{font-size:12px;padding:6px 8px;background:var(--head);border-radius:4px;margin-bottom:5px;line-height:1.4;}
  .set-del{color:var(--red);cursor:pointer;font-size:11px;font-weight:600;white-space:nowrap;}
  .set-input{width:100%;padding:8px 10px;border:1.5px solid var(--border-s);border-radius:4px;font-size:13px;font-family:inherit;outline:none;margin-bottom:8px;}
  .set-input:focus{border-color:var(--green);}
  .set-checklist{max-height:260px;overflow-y:auto;border:1px solid var(--border);border-radius:4px;}
  .set-check{display:flex;align-items:center;gap:8px;padding:7px 10px;font-size:12px;border-bottom:1px solid var(--border);cursor:pointer;}
  .set-check:last-child{border-bottom:none;}
  .set-rev{color:var(--muted);font-size:11px;margin-left:auto;}
  .set-taken{color:var(--orange);font-size:10px;}
  /* Loss drill-down */
  .loss-row{cursor:pointer;}
  .loss-row:active td{background:#f0f0f0;}
  .loss-expand{color:var(--muted);font-size:10px;display:inline-block;width:12px;}
  .loss-detail-cell{background:#fafafa;padding:12px !important;white-space:normal !important;}
  .ld-grid{display:grid;grid-template-columns:1fr;gap:10px;}
  @media(min-width:700px){.ld-grid{grid-template-columns:1fr 1fr;}}
  .ld-block{background:var(--white);border:1px solid var(--border);border-radius:4px;padding:10px 12px;}
  .ld-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px;}
  .ld-step{font-size:11px;line-height:1.5;color:var(--muted);margin-bottom:3px;}
  .ld-step b{color:var(--text);}
  .ld-result{font-size:11px;line-height:1.5;margin-top:6px;padding-top:6px;border-top:1px dashed var(--border);}
  .ld-header{font-size:13px;font-weight:700;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--border);}
  .ld-header b{color:var(--blue);}
  .kpi-delta{font-size:10px;font-weight:700;margin-top:3px;}
  .kd-up{color:var(--green);}
  .kd-down{color:var(--red);}
  .grain-bar{display:flex;align-items:center;gap:6px;margin-bottom:14px;flex-wrap:wrap;}
  .grain-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-right:2px;}
  .data-wrap{border-top:1px solid var(--border);max-height:280px;overflow:auto;-webkit-overflow-scrolling:touch;}
  .data-table{width:100%;border-collapse:collapse;font-size:11px;}
  .data-table thead th{position:sticky;top:0;background:var(--head);font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:5px 8px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;}
  .data-table tbody td{padding:4px 8px;border-bottom:1px solid #f0f0f0;white-space:nowrap;}
  .data-table tbody tr:last-child td{border-bottom:none;}
  .mini-table{margin-top:6px;max-height:160px;overflow:auto;-webkit-overflow-scrolling:touch;}
  .mgr-filgroup td{background:#eef3f8;font-weight:700;font-size:11px;border-top:2px solid var(--border-s);border-bottom:1px solid var(--border);padding:7px 10px;}
  .thr-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
  .thr-row label{flex:1;font-size:12px;}
  .thr-input{width:90px;padding:6px 8px;border:1.5px solid var(--border-s);border-radius:4px;font-size:13px;font-family:inherit;text-align:right;outline:none;}
  .thr-input:focus{border-color:var(--green);}
  .thr-unit{font-size:12px;color:var(--muted);width:24px;}
  .agent-wrap{padding:12px;}
  .agent-tokrow{display:flex;gap:8px;align-items:center;margin-bottom:8px;}
  .agent-tok{flex:1;padding:8px 10px;border:1.5px solid var(--border-s);border-radius:4px;font-size:13px;font-family:inherit;outline:none;}
  .agent-tok:focus{border-color:var(--green);}
  .agent-status{font-size:11px;font-weight:600;white-space:nowrap;}
  .agent-status.ok{color:var(--green);}
  .agent-status.off{color:var(--muted);}
  .agent-ctrlrow{display:flex;gap:8px;align-items:center;margin-bottom:10px;}
  .agent-lbl{font-size:12px;color:var(--muted);}
  .agent-num{width:80px;padding:6px 8px;border:1.5px solid var(--border-s);border-radius:4px;font-size:13px;text-align:right;outline:none;}
  .agent-clear{margin-left:auto;padding:6px 12px;font-size:12px;border:1px solid var(--border-s);border-radius:4px;background:var(--white);cursor:pointer;}
  .agent-thread{border:1px solid var(--border);border-radius:6px;background:#fafafa;height:340px;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:10px;margin-bottom:10px;}
  .agent-msg{margin-bottom:12px;}
  .agent-role{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:3px;}
  .agent-text{font-size:13px;line-height:1.5;padding:8px 10px;border-radius:6px;white-space:normal;}
  .agent-user .agent-text{background:#e8f1fb;}
  .agent-assistant .agent-text{background:var(--white);border:1px solid var(--border);}
  .agent-typing{color:var(--muted);letter-spacing:2px;}
  .agent-inputrow{display:flex;gap:8px;align-items:flex-end;}
  .agent-input{flex:1;padding:8px 10px;border:1.5px solid var(--border-s);border-radius:4px;font-size:13px;font-family:inherit;resize:vertical;outline:none;}
  .agent-input:focus{border-color:var(--green);}
  .agent-send{padding:9px 16px;font-size:13px;font-weight:600;border:none;border-radius:4px;background:var(--green);color:#fff;cursor:pointer;white-space:nowrap;}
  .agent-send:active{opacity:.8;}
  .flag-anchor-sel{padding:7px 10px;border:1.5px solid var(--border-s);border-radius:4px;font-size:13px;font-family:inherit;background:var(--white);outline:none;}
  .flag-anchor-sel:focus{border-color:var(--green);}
  .sku-group-row td{background:#f4f7fa;border-top:1px solid var(--border-s);}
  .sku-group-row:active td{background:#e9eef3;}
  .sku-child-row td{background:#fff;font-size:12px;color:#333;}
  .sku-child-row td:first-child{color:var(--muted);}

/* ── Split-page loading overlay ─────────────────────────────────────────── */
.page-loader{position:fixed;inset:0;background:rgba(255,255,255,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:9999;}
.page-loader.hidden{display:none;}
.page-loader .spinner{width:40px;height:40px;border:4px solid #dbe6f5;border-top-color:#1660c9;border-radius:50%;animation:pl-spin .8s linear infinite;}
.page-loader .pl-text{margin-top:14px;font-size:13px;color:#555;font-weight:600;}
@keyframes pl-spin{to{transform:rotate(360deg);}}
/* V9: индикатор загрузки плана на главной — мини-спиннер + бегущая полоса */
.mini-spin{display:inline-block;width:11px;height:11px;border:2px solid #dbe6f5;border-top-color:#1660c9;border-radius:50%;animation:pl-spin .8s linear infinite;vertical-align:-2px;margin-right:6px;}
.prog-indet #buildProg{width:35% !important;transition:none !important;animation:prog-run 1.1s ease-in-out infinite;}
@keyframes prog-run{0%{transform:translateX(-100%);}100%{transform:translateX(290%);}}

/* ── markdown в ответах агента ───────────────────────────────── */
.agent-text.md{line-height:1.5;}
.agent-text.md .md-h{margin:10px 0 5px;font-weight:700;line-height:1.3;}
.agent-text.md h1.md-h{font-size:16px;} .agent-text.md h2.md-h{font-size:15px;}
.agent-text.md h3.md-h{font-size:14px;} .agent-text.md h4.md-h,
.agent-text.md h5.md-h,.agent-text.md h6.md-h{font-size:13px;}
.agent-text.md .md-p{margin:6px 0;}
.agent-text.md .md-list{margin:6px 0 6px 18px;padding:0;}
.agent-text.md .md-list li{margin:3px 0;}
.agent-text.md .md-quote{margin:8px 0;padding:6px 10px;border-left:3px solid #b9d0f5;background:#f7f9fc;color:#555;}
.agent-text.md .md-hr{border:none;border-top:1px solid var(--border);margin:10px 0;}
.agent-text.md .md-code{background:#f2f4f7;padding:1px 4px;border-radius:3px;font-family:monospace;font-size:12px;}
.agent-text.md .md-pre{background:#f7f9fc;border:1px solid var(--border);border-radius:4px;padding:8px 10px;overflow-x:auto;font-family:monospace;font-size:12px;margin:8px 0;white-space:pre;}
.agent-text.md .md-table{border-collapse:collapse;margin:8px 0;font-size:12px;width:100%;display:block;overflow-x:auto;}
.agent-text.md .md-table th,.agent-text.md .md-table td{border:1px solid var(--border);padding:4px 8px;white-space:nowrap;}
.agent-text.md .md-table th{background:#eef3fa;font-weight:700;}
.agent-text.md .md-table tr:nth-child(even) td{background:#fafbfd;}

/* ── V10: две редакции (полная / коммерческая) ─────────────────────────── */
.ed-com .marg-sw, .ed-com .gear-btn, .ed-com .full-only { display:none !important; }
.ed-full .com-only { display:none !important; }
.ed-badge { display:inline-block; margin-left:8px; padding:1px 7px; border-radius:9px; font-size:10px; font-weight:700; vertical-align:middle; letter-spacing:.3px; }
.ed-badge-full { background:#e8eef9; color:#1660c9; }
.ed-badge-com  { background:#fff1dc; color:#b35c00; }
.ed-tabs { display:flex; gap:4px; margin:4px 0 10px; border-bottom:2px solid #dbe2ec; }
.ed-tab { padding:6px 14px; font-size:13px; font-weight:600; color:#555; text-decoration:none; border-radius:6px 6px 0 0; background:#f1f4f8; }
.ed-tab.active { background:#1660c9; color:#fff; }
.ed-com .ed-tab.active { background:#b35c00; }
