*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Segoe UI',Arial,sans-serif;background:#eef1f5;color:#1a1a2e}
.header{background:linear-gradient(135deg,#0f2744,#1a3a5c,#1e4976);color:white;padding:16px 24px;display:flex;align-items:center;gap:16px;position:sticky;top:0;z-index:300;overflow:hidden}
.header::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:28px 28px;pointer-events:none}
.header h1{font-size:1.25rem;font-weight:600}
.header .sub{font-size:0.75rem;opacity:.7;margin-top:2px}
.stats{display:flex;gap:12px;padding:16px 24px;flex-wrap:wrap}
.stat-card{background:white;border-radius:10px;padding:14px 18px;min-width:130px;flex:1;box-shadow:0 2px 8px rgba(0,0,0,.09);border-left:4px solid #3b82f6;transition:box-shadow .15s}
.stat-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.13)}
.stat-card.g{border-left-color:#22c55e}.stat-card.o{border-left-color:#f97316}
.stat-card.p{border-left-color:#a855f7}.stat-card.r{border-left-color:#ef4444}
.stat-card .num{font-size:1.625rem;font-weight:700;color:#1a3a5c}
.stat-card .lbl{font-size:0.6875rem;color:#888;margin-top:2px;text-transform:uppercase;letter-spacing:.4px}
/* ── ДАШБОРД ── */
.dash-page{padding:0 0 40px}
.dash-hero{background:linear-gradient(135deg,#0f2744,#1a3a5c,#1e4976);color:white;padding:28px 32px 32px;position:relative;overflow:hidden;margin-bottom:0}
.dash-hero::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:32px 32px;pointer-events:none}
.dash-hero-content{position:relative;z-index:1}
.dash-hero h2{font-size:1.375rem;font-weight:800;letter-spacing:-.3px;margin-bottom:4px}
.dash-hero p{font-size:0.8125rem;opacity:.65;margin-bottom:20px}
.dash-hero-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(max-width:900px){.dash-hero-kpis{grid-template-columns:repeat(2,1fr)}}
.dash-hkpi{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:14px 18px;backdrop-filter:blur(4px);transition:background .15s}
.dash-hkpi:hover{background:rgba(255,255,255,.13)}
.dash-hkpi-num{font-size:1.875rem;font-weight:900;line-height:1;margin-bottom:4px;font-variant-numeric:tabular-nums}
.dash-hkpi-lbl{font-size:0.6875rem;opacity:.6;text-transform:uppercase;letter-spacing:.5px;line-height:1.4}
.dash-hkpi.danger .dash-hkpi-num{color:#fca5a5}
.dash-hkpi.warn   .dash-hkpi-num{color:#fcd34d}
.dash-hkpi.ok     .dash-hkpi-num{color:#86efac}
.dash-hkpi.blue   .dash-hkpi-num{color:#93c5fd}

.dash-body{padding:24px 28px 0}
.dash-modules{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:20px}
@media(max-width:900px){.dash-modules{grid-template-columns:1fr}}
@media(min-width:1200px){.dash-modules{grid-template-columns:repeat(4,1fr)}}

.dash-mod{background:white;border-radius:14px;box-shadow:0 2px 10px rgba(0,0,0,.07);cursor:pointer;transition:transform .15s,box-shadow .15s;overflow:hidden;display:flex;flex-direction:column;border:1px solid rgba(0,0,0,.05)}
.dash-mod:hover:not(.dash-disabled){transform:translateY(-3px);box-shadow:0 10px 28px rgba(0,0,0,.13)}
.dash-disabled{cursor:default;opacity:.65}
.dash-mod-accent{height:5px;width:100%}
.dash-mod-top{padding:20px 20px 0}
.dash-mod-icon{font-size:1.875rem;margin-bottom:10px}
.dash-mod-title{font-size:0.9375rem;font-weight:800;color:#1a3a5c;margin-bottom:3px;letter-spacing:-.2px}
.dash-mod-desc{font-size:0.6875rem;color:#94a3b8;line-height:1.5;margin-bottom:14px}
.dash-mod-stats{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.dash-stat-row{display:flex;align-items:baseline;gap:10px}
.dash-stat-num{font-size:1.75rem;font-weight:900;color:#1a3a5c;min-width:44px;line-height:1;font-variant-numeric:tabular-nums}
.dash-stat-lbl{font-size:0.6875rem;color:#94a3b8}
.dash-stat-sub{display:flex;gap:10px;flex-wrap:wrap}
.dash-stat-sub span{font-size:0.6875rem;color:#64748b;display:flex;align-items:center;gap:3px;background:#f8fafc;border-radius:5px;padding:2px 7px}
.dash-stat-sub b{color:#1a3a5c;font-weight:700}
.dash-mod-footer{margin-top:auto;padding:12px 20px;border-top:1px solid #f0f4f8;display:flex;justify-content:flex-end}
.dash-open-btn{padding:7px 18px;border-radius:8px;font-size:0.75rem;font-weight:700;border:none;cursor:pointer;font-family:inherit;letter-spacing:.2px;transition:all .15s}
.dash-open-btn.blue{background:linear-gradient(135deg,#1a3a5c,#1e4976);color:white;box-shadow:0 2px 6px rgba(26,58,92,.3)}
.dash-open-btn.blue:hover{box-shadow:0 4px 12px rgba(26,58,92,.4);transform:translateY(-1px)}
.dash-open-btn.green{background:linear-gradient(135deg,#16a34a,#15803d);color:white;box-shadow:0 2px 6px rgba(22,163,74,.3)}
.dash-open-btn.green:hover{box-shadow:0 4px 12px rgba(22,163,74,.4);transform:translateY(-1px)}
.dash-open-btn.grey{background:#e2e8f0;color:#94a3b8;cursor:default}
.dash-today-badge{display:inline-flex;align-items:center;gap:6px;background:rgba(59,130,246,.12);border:1px solid rgba(59,130,246,.2);border-radius:8px;padding:5px 12px;font-size:0.75rem;font-weight:700;color:#1e40af;margin-bottom:12px}
.dash-coming{display:inline-block;padding:3px 10px;background:#fef9c3;border-radius:6px;font-size:0.6875rem;font-weight:700;color:#854d0e;margin-bottom:12px}

/* ── Старая KPI-полоса — скрываем, используем dash-hero ── */
.dash-kpi-strip{display:none}

/* ── Панель «на этой неделе» ── */
.dash-week-panel{background:white;border-radius:12px;padding:20px 24px;box-shadow:0 2px 8px rgba(0,0,0,.07);border:1px solid rgba(0,0,0,.05)}
.dash-week-title{font-size:0.8125rem;font-weight:800;color:#1a3a5c;margin-bottom:12px;display:flex;align-items:center;gap:8px;text-transform:uppercase;letter-spacing:.4px}
.dash-week-order-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid #f0f4f8;cursor:pointer;transition:background .1s;border-radius:6px}
.dash-week-order-row:last-child{border-bottom:none}
.dash-week-order-row:hover{background:#f8fafc;padding-left:8px;padding-right:8px;margin:0 -8px}
/* ── Паллеты в заказе ── */
.pallet-tag{display:inline-flex;align-items:center;gap:3px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:5px;padding:2px 7px;font-size:0.6875rem;font-weight:600;color:#475569;white-space:nowrap}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:12px 24px}
.toolbar input{flex:1;min-width:180px;padding:8px 12px;border:1px solid #dde1e7;border-radius:6px;font-size:0.8125rem;outline:none;font-family:inherit}
.toolbar input:focus{border-color:#3b82f6}
.toolbar select{padding:8px 10px;border:1px solid #dde1e7;border-radius:6px;font-size:0.8125rem;background:white;cursor:pointer;outline:none}
.import-area{margin:0 24px 12px;background:#eff6ff;border:2px dashed #93c5fd;border-radius:10px;padding:18px;text-align:center;display:none}
.import-area.show{display:block}
.import-area p{font-size:0.8125rem;color:#1d4ed8;margin-bottom:10px}
.import-area input[type=file]{display:none}
.import-area label.pick{display:inline-block;padding:7px 18px;background:#3b82f6;color:white;border-radius:6px;cursor:pointer;font-size:0.8125rem}
.btn{padding:8px 16px;border:none;border-radius:8px;cursor:pointer;font-size:0.8125rem;font-weight:500;white-space:nowrap;font-family:inherit}
.btn-primary{background:#1a3a5c;color:white}.btn-primary:hover{background:#16324f}
.btn-success{background:#16a34a;color:white}.btn-success:hover{background:#15803d}
.btn-danger{background:#ef4444;color:white}.btn-danger:hover{background:#dc2626}
.btn-outline{background:white;color:#4b5563;border:1px solid #dde1e7}.btn-outline:hover{background:#f9fafb}
.btn-sm{padding:4px 10px;font-size:0.75rem}
.btn-ghost{background:none;border:none;cursor:pointer;font-size:0.8125rem;color:#64748b;padding:3px 6px}
.btn-ghost:hover{color:#1a3a5c}
.section{background:white;margin:0 24px 24px;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.08);overflow:hidden}
.section-header{padding:14px 18px;border-bottom:1px solid #f0f0f0;display:flex;align-items:center;justify-content:space-between;gap:12px}
.section-header h2{font-size:0.9375rem;font-weight:600}
.tbl-count{font-size:0.75rem;color:#888}
table{width:100%;border-collapse:collapse}
th{background:#f8fafc;padding:9px 12px;text-align:left;font-size:0.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#64748b;border-bottom:2px solid #e2e8f0;white-space:nowrap;cursor:pointer;user-select:none}
th:hover{background:#f1f5f9}
td{padding:8px 12px;font-size:0.8125rem;border-bottom:1px solid #f0f4f8}
tr:hover td{background:#f8fafc}
.badge{padding:2px 7px;border-radius:10px;font-size:0.6875rem;font-weight:600}
.vol-badge{display:inline-block;background:#f0fdf4;color:#166534;border:1px solid #bbf7d0;border-radius:6px;padding:1px 8px;font-size:0.75rem;font-weight:600}
.empty{padding:40px;text-align:center;color:#aaa;font-size:0.875rem}
.nav{position:sticky;top:88px;z-index:299;display:flex;padding:0 24px;border-bottom:2px solid #e2e8f0;background:white;gap:4px;box-shadow:0 2px 6px rgba(0,0,0,.05)}
.nav-item{padding:12px 18px;cursor:pointer;font-size:0.8125rem;font-weight:500;border-bottom:3px solid transparent;color:#64748b;white-space:nowrap;transition:all .15s;margin-bottom:-2px;text-decoration:none}
.nav-item.active{color:#1a3a5c;border-bottom-color:#1a3a5c;font-weight:700;background:#f8faff}
.nav-item:hover:not(.active){color:#1a3a5c;background:#f8fafc}
.nav-sep{flex:1}
.nav-ext{color:#475569;font-size:0.75rem;opacity:.75}
.nav-ext:hover{opacity:1;color:#1a3a5c;background:#f8fafc}
.tab-page{display:none}.tab-page.active{display:block}
.modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1000;align-items:center;justify-content:center}
.modal.open{display:flex}
.modal-box{background:white;border-radius:12px;padding:24px;width:560px;max-width:95vw;max-height:90vh;overflow-y:auto;box-shadow:0 20px 50px rgba(0,0,0,.25)}
.modal-box h3{font-size:1.0625rem;margin-bottom:20px;color:#1a3a5c;font-weight:600}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form-group{display:flex;flex-direction:column;gap:4px}
.form-group.full{grid-column:1/-1}
label{font-size:0.6875rem;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.4px}
input,select,textarea{padding:8px 10px;border:1px solid #dde1e7;border-radius:6px;font-size:0.8125rem;font-family:inherit;outline:none}
input:focus,select:focus,textarea:focus{border-color:#3b82f6}
.form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:20px;padding-top:16px;border-top:1px solid #f0f0f0}
.toasts{position:fixed;top:16px;right:16px;z-index:9999;display:flex;flex-direction:column;gap:8px}
.toast{padding:11px 16px;border-radius:8px;color:white;font-size:0.8125rem;box-shadow:0 4px 12px rgba(0,0,0,.2);max-width:340px;animation:tin .25s ease}
.toast.s{background:#16a34a}.toast.e{background:#dc2626}.toast.i{background:#1d4ed8}
@keyframes tin{from{transform:translateX(30px);opacity:0}to{transform:translateX(0);opacity:1}}

/* ── КАЛЕНДАРЬ ──────────────────────────────────────────── */
.cal-toolbar{position:sticky;top:0;z-index:298;background:white;box-shadow:0 2px 8px rgba(0,0,0,.08);display:flex;align-items:center;gap:10px;padding:12px 24px;flex-wrap:wrap}
.cal-week-nav{display:flex;align-items:center;gap:6px}
.cal-week-nav span{font-weight:600;font-size:0.875rem;min-width:200px;text-align:center}
.cal-site-tabs{display:flex;gap:6px}
.cal-site-tab{padding:6px 16px;border-radius:20px;border:1px solid #dde1e7;background:white;cursor:pointer;font-size:0.8125rem;font-weight:500;color:#64748b}
.cal-site-tab.active{background:#1a3a5c;color:white;border-color:#1a3a5c}
.cal-grid{padding:0 24px 24px;display:flex;flex-direction:column;gap:12px}
.cal-day{background:white;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.08);overflow:hidden;transition:box-shadow .15s}
.cal-day:hover{box-shadow:0 4px 16px rgba(0,0,0,.12)}
.cal-day-header{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid #f0f4f8;background:#f8fafc}
.cal-dh-left{display:flex;align-items:center;gap:8px;flex-shrink:0}
.cal-day-date{font-size:0.8125rem;font-weight:700;color:#1a3a5c;white-space:nowrap}
.cal-day-name{font-size:0.8125rem;color:#64748b;white-space:nowrap}
.shift-badge{padding:3px 10px;border-radius:12px;font-size:0.75rem;font-weight:700;white-space:nowrap;line-height:1.4}
.shift-1{background:#dbeafe;color:#1e40af}
.shift-2{background:#fce7f3;color:#9d174d}
.cal-add-btn{padding:4px 12px;font-size:0.75rem;border:1px dashed #93c5fd;background:transparent;border-radius:6px;color:#3b82f6;cursor:pointer;white-space:nowrap}
.cal-add-btn:hover{background:#eff6ff}
/* Норма смены */
.cal-cap-wrap{display:flex;align-items:center;gap:7px;background:white;border:1px solid #dde1e7;border-radius:8px;padding:5px 12px;margin-left:auto}
.cal-cap-wrap label{font-size:0.75rem;color:#64748b;white-space:nowrap;margin:0}
.cal-cap-input{width:80px;padding:3px 8px;border:1px solid #dde1e7;border-radius:5px;font-size:0.8125rem;font-weight:600;text-align:right;font-family:inherit;outline:none}
.cal-cap-input:focus{border-color:#3b82f6}
.cal-cap-unit{font-size:0.75rem;color:#64748b}
/* Загрузка смены */
.shift-load{display:flex;align-items:center;gap:6px;margin-left:auto}
.load-bar-wrap{width:100px;height:8px;background:#e2e8f0;border-radius:5px;overflow:hidden;flex-shrink:0}
.load-bar-fill{height:100%;border-radius:5px;transition:width .4s}
.load-mini-nums{display:flex;align-items:baseline;gap:2px;font-size:0.6875rem;white-space:nowrap}
.load-mini-plan{font-weight:800}
.load-sep{color:#cbd5e1;margin:0 1px;font-weight:400}
.load-mini-cap{color:#94a3b8;font-weight:500}
.load-pct{font-size:0.625rem;font-weight:700;margin-left:4px;padding:1px 5px;border-radius:4px;background:rgba(0,0,0,.05);white-space:nowrap}
.cal-items{width:100%;overflow-x:auto}
.cal-items table{width:100%;min-width:900px;border-collapse:collapse;table-layout:fixed}
.cal-items th{background:#f8fafc;padding:7px 10px;font-size:0.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#94a3b8;border-bottom:1px solid #e2e8f0}
.cal-items td{padding:7px 10px;font-size:0.75rem;border-bottom:1px solid #f8fafc;vertical-align:middle}
.cal-items tr:last-child td{border-bottom:none}
.cal-items tr:hover td{background:#f8fafc}
.cal-items tr.done-row td{opacity:.5}
.cal-items tr.done-row .art-code{text-decoration:line-through}
.art-code{font-family:monospace;font-size:0.6875rem;font-weight:700;color:#1e40af}
.order-badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:0.6875rem;font-weight:700;white-space:nowrap}
.qty-cell{font-weight:600;min-width:50px;text-align:center}
.actual-cell{color:#16a34a;font-weight:600;text-align:center}
.done-check{width:16px;height:16px;cursor:pointer;accent-color:#16a34a}
.cal-empty{padding:20px;text-align:center;color:#cbd5e1;font-size:0.8125rem}
.dev-cell{font-size:0.75rem;min-width:55px;text-align:center;font-weight:700}
tr.dev-warn td.dev-cell{background:#fff7ed}
tr.dev-crit td.dev-cell{background:#fef2f2}
.dev-badge{display:inline-flex;align-items:center;gap:3px}
.dev-alert-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:5px;font-size:0.6875rem;font-weight:700;white-space:nowrap}
.dev-alert-badge.warn{background:#fff7ed;color:#c2410c;border:1px solid #fed7aa}
.dev-alert-badge.crit{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}

/* ── Дедлайн-бейджи (строка таблицы) ── */
.deadline-cell{white-space:nowrap;min-width:82px}
.dl-badge{display:inline-block;padding:2px 6px;border-radius:4px;font-size:0.6875rem;font-weight:600;white-space:nowrap;font-family:inherit}
.dl-ok{color:#64748b}
.dl-soon{background:#fefce8;color:#854d0e;border:1px solid #fde68a;font-weight:700}
.dl-today{background:#fff7ed;color:#c2410c;border:1px solid #fed7aa;font-weight:800;letter-spacing:.1px}
.dl-overdue{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;font-weight:800}

/* ── Дедлайн-бейджи (заголовок дня) ── */
.dl-hbadge{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:5px;font-size:0.6875rem;font-weight:700;white-space:nowrap;flex-shrink:0;cursor:default}
.dl-hb-overdue{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}
.dl-hb-today{background:#fff7ed;color:#c2410c;border:1px solid #fed7aa}
.dl-hb-soon{background:#fefce8;color:#854d0e;border:1px solid #fde68a}
.comment-cell{max-width:200px;cursor:pointer;font-size:0.75rem}
.comment-cell:hover{background:#f8fafc}
.comment-text{color:#374151;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.comment-empty{color:#cbd5e1;font-size:0.6875rem}
.comment-empty:hover{color:#94a3b8}

/* Цвета каналов */
.ch-OZON{background:#005BFF;color:white}
.ch-ВБ{background:#CB11AB;color:white}
.ch-OPT{background:#16a34a;color:#fff;font-weight:800}
.ch-МИХНЕВО{background:#eab308;color:#111;font-weight:800}
.ch-ЯМ{background:#111827;color:#eab308;font-weight:800}
.ch-ММ{background:#dc2626;color:white;font-weight:800}
.ch-FBS{background:#7c3aed;color:white;font-weight:800}
.ch-default{background:#64748b;color:white}

/* Итоговая строка дня */
.totals-row td{background:#f1f5f9;font-weight:700;border-top:2px solid #e2e8f0}
/* Кнопка печати */
.cal-print-btn{padding:4px 10px;font-size:0.75rem;border:1px solid #dde1e7;background:white;border-radius:6px;color:#64748b;cursor:pointer;white-space:nowrap;flex-shrink:0}
.cal-print-btn:hover{background:#f1f5f9;color:#1a3a5c}
.cal-print-wrap{position:relative;display:inline-block;flex-shrink:0}
.cal-print-menu{display:none;position:absolute;right:0;top:calc(100% + 4px);background:white;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.12);z-index:200;min-width:200px;padding:4px 0}
.cal-print-menu.open{display:block}
.cal-print-menu button{display:block;width:100%;text-align:left;padding:9px 14px;font-size:0.8125rem;border:none;background:none;cursor:pointer;color:#374151;white-space:nowrap}
.cal-print-menu button:hover{background:#f8fafc;color:#1a3a5c}

/* ── БАННЕР «СЕЙЧАС В ПРОИЗВОДСТВЕ» ── */
/* ── Баннер «Сейчас в производстве» ── */
.prod-banner{background:#0f172a;color:white;padding:12px 24px 14px;border-bottom:3px solid #1e40af}
.prod-banner-hdr{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.prod-banner-title{font-size:0.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.8px;color:#93c5fd}
.prod-banner-site{font-size:0.6875rem;padding:2px 8px;border-radius:10px;background:#1e293b;color:#7dd3fc;font-weight:700}
.tv-btn{margin-left:auto;background:#1e3a5f;border:1px solid #2563eb;color:#93c5fd;border-radius:7px;padding:4px 12px;font-size:0.75rem;cursor:pointer;transition:background .15s}
.tv-btn:hover{background:#1d4ed8;color:white}
.prod-lines-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.prod-line-card{background:#1e293b;border-radius:10px;padding:10px 14px;border:1px solid #334155;position:relative;overflow:hidden}
.prod-line-card.empty{opacity:.4}
.prod-line-card.active{border-color:#2563eb;background:#1e2f4a}
.prod-lc-num{font-size:0.625rem;font-weight:800;text-transform:uppercase;letter-spacing:.8px;color:#60a5fa;margin-bottom:4px}
.prod-lc-art{font-family:monospace;font-size:0.9375rem;font-weight:700;color:#fbbf24;margin-bottom:2px}
.prod-lc-name{font-size:0.75rem;color:#94a3b8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:8px}
.prod-lc-qty{display:flex;align-items:baseline;gap:6px}
.prod-lc-plan{font-size:1.375rem;font-weight:800;color:#4ade80;line-height:1}
.prod-lc-fact{font-size:0.8125rem;color:#94a3b8}
.prod-lc-bar{height:5px;background:#334155;border-radius:3px;margin-top:7px;overflow:hidden}
.prod-lc-bar-fill{height:100%;border-radius:3px;transition:width .4s}
/* ── Сворачивание прошедших дней ── */
.cal-day-collapse-btn{background:none;border:none;cursor:pointer;padding:3px 8px;border-radius:5px;color:#94a3b8;font-size:0.875rem;flex-shrink:0;line-height:1.4;transition:color .15s}
.cal-day-collapse-btn:hover{color:#475569;background:rgba(0,0,0,.06)}
.cal-day.collapsed .cal-items{display:none}
.cal-day.collapsed .cal-day-header{border-bottom:none}
.cal-day-past-summary{display:flex;align-items:center;gap:10px;font-size:0.75rem;color:#64748b;flex:1}
.cal-day:not(.collapsed) .cal-day-past-summary{display:none}
.past-sum-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
/* ── TV-режим (fullscreen) ── */
#tvOverlay{display:none;position:fixed;inset:0;z-index:9999;background:#030712;color:white;flex-direction:column;overflow:hidden}
#tvOverlay.open{display:flex}
.tv-header{display:flex;align-items:center;padding:16px 32px;border-bottom:2px solid #1e3a5f;gap:16px;flex-shrink:0}
.tv-plant{font-size:0.875rem;font-weight:800;text-transform:uppercase;letter-spacing:1px;color:#3b82f6}
.tv-title{font-size:1rem;font-weight:800;color:#93c5fd;letter-spacing:.5px}
.tv-clock{margin-left:auto;font-size:1.25rem;font-weight:700;font-family:monospace;color:#e2e8f0}
.tv-close{background:#1e293b;border:1px solid #334155;color:#94a3b8;border-radius:8px;padding:6px 14px;font-size:0.8125rem;cursor:pointer}
.tv-close:hover{background:#374151;color:white}
.tv-lines{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding:24px 32px;flex:1;min-height:0}
.tv-line{background:#0f172a;border-radius:16px;border:2px solid #1e3a5f;padding:20px 24px;display:flex;flex-direction:column;align-items:center;gap:12px;overflow:hidden}
.tv-line.active{border-color:#2563eb;background:#0d1f38}
.tv-line.empty{opacity:.35}
.tv-ln{font-size:0.8125rem;font-weight:800;text-transform:uppercase;letter-spacing:1px;color:#60a5fa}
.tv-art{font-family:monospace;font-size:1.375rem;font-weight:700;color:#fbbf24;text-align:center}
.tv-name{font-size:1rem;color:#cbd5e1;line-height:1.35;text-align:center}
.tv-qty-row{display:flex;gap:32px;align-items:flex-end;justify-content:center;width:100%}
.tv-plan{font-size:3.625rem;font-weight:900;color:#4ade80;line-height:1;font-variant-numeric:tabular-nums;text-align:center}
.tv-plan-lbl{font-size:0.8125rem;color:#64748b;text-align:center}
.tv-fact{font-size:1.875rem;font-weight:700;color:#93c5fd;font-variant-numeric:tabular-nums}
.tv-fact-lbl{font-size:0.75rem;color:#475569}
.tv-bar{height:8px;background:#1e293b;border-radius:4px;margin-top:10px;overflow:hidden}
.tv-bar-fill{height:100%;border-radius:4px;transition:width .5s}
.tv-img-wrap{width:min(340px,88%);aspect-ratio:1/1;border-radius:16px;overflow:hidden;background:#0d1b2a;display:flex;align-items:center;justify-content:center;border:1px solid #1e3a5f;flex-shrink:0;margin:4px auto}
.tv-img-wrap img{width:100%;height:100%;object-fit:contain}
.tv-img-wrap .no-img{color:#1e3a5f;font-size:4rem}
.sku-img-wrap{width:40px;height:40px;cursor:pointer;border-radius:4px;overflow:hidden;border:1px solid #e2e8f0;transition:border-color .15s;position:relative}
.sku-img-wrap:hover{border-color:#6366f1}
.sku-no-img{width:40px;height:40px;align-items:center;justify-content:center;font-size:1.125rem;background:#f8fafc;border-radius:4px;cursor:pointer}
/* Лайтбокс */
#skuLightbox{display:none;position:fixed;inset:0;z-index:10000;background:rgba(0,0,0,.88);flex-direction:column;align-items:center;justify-content:center;gap:16px}
#skuLightbox.open{display:flex}
#skuLightbox .lb-img-wrap{cursor:zoom-out;display:flex;align-items:center;justify-content:center}
#skuLightbox img{max-width:88vw;max-height:78vh;border-radius:10px;box-shadow:0 8px 40px rgba(0,0,0,.6);object-fit:contain}
#skuLightboxCaption{color:#94a3b8;font-size:0.8125rem;font-family:monospace}
#skuLightboxActions{display:flex;gap:10px}
.lb-btn{padding:8px 20px;border-radius:8px;border:none;font-size:0.8125rem;font-weight:700;cursor:pointer;font-family:inherit;transition:.12s}
.lb-btn-replace{background:#3b82f6;color:#fff}.lb-btn-replace:hover{background:#2563eb}
.lb-btn-delete{background:#1e293b;color:#ef4444;border:1px solid #ef4444}.lb-btn-delete:hover{background:#ef4444;color:#fff}
.lb-btn-close{background:#1e293b;color:#94a3b8;border:1px solid #334155}.lb-btn-close:hover{color:#fff}
.tv-body{display:flex;gap:18px;flex:1;min-width:0}
.tv-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px;align-items:center}
.tv-status-bar{display:flex;align-items:center;gap:28px;padding:12px 32px;background:#060f1e;border-top:2px solid #1e3a5f;flex-shrink:0}
.tv-sb-block{display:flex;flex-direction:column;align-items:center;gap:1px;white-space:nowrap}
.tv-sb-lbl{font-size:0.625rem;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.8px}
.tv-sb-val{font-size:1.625rem;font-weight:900;font-variant-numeric:tabular-nums;line-height:1}
.tv-sb-remain{color:#f87171}
.tv-sb-done{color:#4ade80}
.tv-sb-time{color:#fbbf24}
.tv-sb-progress{flex:1;display:flex;flex-direction:column;gap:4px}
.tv-sb-prog-track{height:16px;background:#0f172a;border-radius:8px;overflow:hidden;border:1px solid #1e3a5f;position:relative}
.tv-sb-prog-fill{height:100%;border-radius:8px;background:linear-gradient(90deg,#1d4ed8,#22c55e);transition:width .6s ease}
.tv-sb-prog-labels{display:flex;justify-content:space-between;font-size:0.625rem;color:#334155;font-weight:600;padding:0 2px}
.tv-sb-divider{width:1px;height:36px;background:#1e3a5f;flex-shrink:0}
.tv-footer{padding:8px 32px;display:flex;align-items:center;gap:16px;border-top:1px solid #0f172a;flex-shrink:0}
.tv-refresh-lbl{font-size:0.6875rem;color:#334155}
.tv-refresh-bar{height:3px;background:#1e3a5f;border-radius:2px;overflow:hidden;flex:1;max-width:200px}
.tv-refresh-fill{height:100%;background:#2563eb;border-radius:2px;transition:width 1s linear}
/* Кнопки линий */
.line-btns{display:flex;gap:3px}
.line-btn{width:22px;height:22px;border-radius:5px;border:1.5px solid #dde1e7;background:white;cursor:pointer;font-size:0.6875rem;font-weight:700;color:#64748b;display:flex;align-items:center;justify-content:center;transition:all .12s;padding:0;font-family:inherit}
.line-btn:hover{border-color:#3b82f6;color:#1d4ed8;background:#eff6ff}
.line-btn.active{background:#1a3a5c;border-color:#1a3a5c;color:white}

/* ── Drag & Drop ── */
.drag-handle{cursor:grab;color:#d1d5db;font-size:0.8125rem;padding:2px 4px;user-select:none;text-align:center}
.drag-handle:active{cursor:grabbing}
tr.dragging td{opacity:.3;background:#eff6ff!important}
tr.drag-over-top td{border-top:2.5px solid #3b82f6!important;background:#f0f9ff!important}
.cal-day.drag-target .cal-day-header{box-shadow:inset 0 0 0 2px #93c5fd}
.cal-day.drag-over-day>.cal-items{background:#eff6ff!important;outline:2px dashed #3b82f6;outline-offset:-2px;border-radius:0 0 10px 10px}
/* ── DnD-модалка подтверждения переноса ── */
.dnd-modal-box{max-width:420px;text-align:center;padding:28px 28px 24px}
.dnd-modal-icon{font-size:2rem;margin-bottom:8px;color:#1a3a5c}
.dnd-item-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:12px 16px;margin-bottom:18px;text-align:left}
.dnd-item-art{font-family:monospace;font-weight:800;font-size:0.9375rem;color:#1e40af;margin-bottom:3px}
.dnd-item-name{font-size:0.8125rem;color:#374151;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dnd-item-qty{font-size:0.75rem;color:#64748b}
.dnd-arrow-row{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:20px}
.dnd-date-chip{padding:6px 14px;border-radius:8px;font-size:0.875rem;font-weight:700}
.dnd-from{background:#eff6ff;color:#1e40af}
.dnd-to{background:#f0fdf4;color:#166534}
.dnd-arrow{font-size:1.375rem;color:#94a3b8}
tr.cal-row-selected td{background:#dbeafe!important;outline:1px solid #93c5fd}
tr.cal-row-selected:hover td{background:#bfdbfe!important}
.cal-sel-bar{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:#1e293b;color:#fff;border-radius:12px;padding:10px 18px;display:flex;align-items:center;gap:12px;box-shadow:0 6px 24px rgba(0,0,0,.3);z-index:9999;animation:calSelFadeIn .18s}
.cal-sel-bar.hidden{display:none}
@keyframes calSelFadeIn{from{opacity:0;transform:translateX(-50%) translateY(8px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
.cal-sel-count{font-size:0.8125rem;font-weight:600;white-space:nowrap}
.cal-sel-del{background:#ef4444;color:#fff;border:none;border-radius:7px;padding:6px 14px;cursor:pointer;font-weight:700;font-size:0.8125rem}
.cal-sel-del:hover{background:#dc2626}
.cal-sel-clear{background:transparent;color:#94a3b8;border:none;cursor:pointer;font-size:1.25rem;line-height:1;padding:0 2px}
.cal-sel-clear:hover{color:#fff}
.move-btn{padding:2px 7px;font-size:0.75rem;border:1px solid #dde1e7;background:white;border-radius:5px;cursor:pointer;color:#64748b;line-height:1.4;margin-left:3px;font-family:inherit}
.move-btn:hover{background:#eff6ff;border-color:#3b82f6;color:#1d4ed8}
.hist-btn{padding:2px 6px;font-size:0.6875rem;border:1px solid #e2e8f0;background:white;border-radius:5px;cursor:pointer;color:#94a3b8;line-height:1.4;margin-left:2px;font-family:inherit}
.hist-btn:hover{background:#f8fafc;border-color:#94a3b8;color:#475569}
.hist-timeline{list-style:none;padding:0;margin:0}
.hist-item{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid #f1f5f9;font-size:0.8125rem}
.hist-item:last-child{border-bottom:none}
.hist-dot{width:8px;height:8px;border-radius:50%;background:#3b82f6;margin-top:5px;flex-shrink:0}
.hist-body{flex:1}
.hist-field{font-weight:700;color:#1e40af;margin-right:6px}
.hist-arrow{color:#94a3b8;margin:0 4px}
.hist-old{color:#dc2626;text-decoration:line-through}
.hist-new{color:#16a34a;font-weight:700}
.hist-time{font-size:0.6875rem;color:#94a3b8;margin-top:2px}

/* ── ЗАКАЗЫ ── */
.ord-exp-btn{background:none;border:none;cursor:pointer;font-size:0.8125rem;color:#94a3b8;padding:0 4px;line-height:1;transition:.12s}
.ord-exp-btn:hover,.ord-exp-btn.open{color:#1a3a5c}
.ord-subrow>td{background:#f8fafc;padding:0!important}
.ord-lines-table{width:100%;border-collapse:collapse}
.ord-lines-table th{padding:6px 10px;font-size:0.6875rem;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.4px;background:#f1f5f9;border-bottom:1px solid #e2e8f0}
.ord-lines-table td{padding:6px 10px;font-size:0.8125rem;color:#1e293b;border-bottom:1px solid #f0f4f8}
.ord-lines-table tr:last-child td{border-bottom:none}
/* Строка заказа — исключена из текущей поставки (ghost) */
.ord-line-ghost td{opacity:.42;background:#fafafa !important}
.ord-line-ghost .art-code{color:#94a3b8 !important;text-decoration:line-through}
.ord-line-ghost:hover td{opacity:.65;transition:opacity .15s}
.ord-excl-btn.active{font-weight:700}
/* Строка производственного плана — исключена из поставки (красная окантовка) */
.plan-row-excluded>td{background:#fff5f5 !important;border-top:2px solid #ef4444 !important;border-bottom:2px solid #ef4444 !important}
.plan-row-excluded>td:first-child{border-left:2px solid #ef4444 !important}
.plan-row-excluded>td:last-child{border-right:2px solid #ef4444 !important}
.plan-row-excluded>td:first-child::before{content:"⚠";font-size:0.625rem;color:#ef4444;margin-right:3px}
.ord-progress{display:flex;align-items:center;justify-content:center;gap:6px}
.ord-prog-bar{width:56px;height:6px;background:#e2e8f0;border-radius:3px;overflow:hidden;flex-shrink:0}
.ord-prog-fill{height:100%;border-radius:3px}
.om-line-row{display:flex;align-items:center;gap:6px;padding:5px 0;border-bottom:1px solid #f0f4f8}
.om-line-row:last-child{border-bottom:none}
.om-line-art{font-family:monospace;font-size:0.6875rem;font-weight:700;color:#1e40af;min-width:88px;flex-shrink:0}
.om-line-name{font-size:0.75rem;color:#374151;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.om-line-qty{width:80px;padding:3px 6px;border:1px solid #dde1e7;border-radius:4px;font-size:0.75rem;text-align:right;font-family:inherit;outline:none}
.om-line-note{flex:1;padding:3px 6px;border:1px solid #dde1e7;border-radius:4px;font-size:0.75rem;font-family:inherit;outline:none}

/* ── Табы направлений OZON ── */
.ord-tabs-wrap{background:#fff}
.ord-tab-bar{display:flex;gap:0;border-bottom:2px solid #e2e8f0;padding:0 14px}
.ord-tab{background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;padding:8px 16px;font-size:0.8125rem;font-weight:600;color:#94a3b8;cursor:pointer;transition:color .15s,border-color .15s}
.ord-tab:hover{color:#3b82f6}
.ord-tab.active{color:#1e40af;border-bottom-color:#3b82f6}

/* ── Списание компонентов ── */
.wo-stat-bar{display:flex;gap:12px;flex-wrap:wrap;padding:14px 24px 0}
.wo-stat{background:white;border-radius:8px;padding:10px 16px;min-width:130px;flex:1;box-shadow:0 1px 4px rgba(0,0,0,.07);border-left:4px solid #64748b}
.wo-stat.pend{border-left-color:#f59e0b}.wo-stat.done{border-left-color:#22c55e}.wo-stat.cat{border-left-color:#6366f1}
.wo-stat .num{font-size:1.375rem;font-weight:800;color:#1a3a5c}
.wo-stat .lbl{font-size:0.6875rem;color:#888;text-transform:uppercase;letter-spacing:.4px}
.posted-btn{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:12px;border:1px solid;font-size:0.6875rem;font-weight:700;cursor:pointer;font-family:inherit;white-space:nowrap;transition:.1s}
.posted-btn.no{background:#fef3c7;color:#92400e;border-color:#fde68a}
.posted-btn.no:hover{background:#fde68a}
.posted-btn.yes{background:#dcfce7;color:#166534;border-color:#86efac}
.posted-btn.yes:hover{background:#bbf7d0}
.posted-btn.send{background:#fef3c7;color:#92400e;border-color:#fbbf24}
.posted-btn.send:hover{background:#fde68a}
.posted-btn.queued{background:#e0e7ff;color:#3730a3;border-color:#c7d2fe;cursor:default}
.posted-btn.err{background:#fee2e2;color:#991b1b;border-color:#fca5a5}
.posted-btn.err:hover{background:#fecaca}
/* Component catalog modal */
.comp-cat-row{display:grid;grid-template-columns:1fr 2fr auto;gap:6px;align-items:center;padding:6px 0;border-bottom:1px solid #f1f5f9}
.comp-cat-row:last-child{border-bottom:none}
.comp-search{width:100%;padding:7px 10px;border:1px solid #e2e8f0;border-radius:7px;font-size:0.8125rem;font-family:inherit;margin-bottom:10px}
.comp-select-list{max-height:260px;overflow-y:auto;border:1px solid #e2e8f0;border-radius:8px}
.comp-option{padding:9px 12px;cursor:pointer;border-bottom:1px solid #f8fafc;font-size:0.8125rem;transition:.1s}
.comp-option:hover{background:#eff6ff}
.comp-option.selected{background:#dbeafe}
.comp-option .co-art{font-family:monospace;color:#6366f1;font-size:0.6875rem;margin-right:6px}
.comp-option .co-cat{font-size:0.6875rem;color:#94a3b8;float:right}
.wo-reason-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.wo-reason-chip{padding:4px 12px;border-radius:16px;border:1px solid #e2e8f0;background:white;font-size:0.75rem;cursor:pointer;font-family:inherit;transition:.1s}
.wo-reason-chip.active{background:#1a3a5c;color:white;border-color:#1a3a5c}

/* Кнопка факт-печати */
.cal-fact-btn{padding:4px 10px;font-size:0.75rem;border:1px solid #dde1e7;background:white;border-radius:6px;color:#64748b;cursor:pointer;white-space:nowrap;flex-shrink:0}
.cal-fact-btn:hover{background:#f0fdf4;color:#16a34a;border-color:#86efac}

/* ── Ячейка действий в строке календаря (История + галка + перенос + удалить) ── */
.cal-action-cell{
  position:sticky;right:0;
  background:white;
  box-shadow:-3px 0 8px rgba(0,0,0,.07);
  white-space:nowrap;text-align:right;
  padding:4px 10px!important;vertical-align:middle;
  z-index:2;
}
.cal-items tr.done-row td.cal-action-cell{background:rgba(255,255,255,.85)}
.cal-items tr:hover td.cal-action-cell{background:#f8fafc}
.cal-items thead th.cal-th-actions{
  position:sticky;right:0;
  background:#f8fafc;
  box-shadow:-3px 0 8px rgba(0,0,0,.07);
  z-index:3;
  width:110px;
}
.cal-action-cell .hist-btn{margin-right:2px}
.cal-action-cell .done-check{vertical-align:middle;margin:0 4px}
.cal-action-cell .move-btn{margin-left:2px}
.cal-action-cell .btn-ghost{margin-left:1px}
/* 07.10: все элементы ячейки действий — одного размера и на одной линии (было: «1С»-чекбокс крупнее, кнопки разной высоты) */
.cal-action-cell{white-space:nowrap}
.cal-action-cell>button,.cal-action-cell>input[type=checkbox]{box-sizing:border-box;width:24px;height:24px;margin:0 2px!important;padding:0!important;vertical-align:middle;display:inline-flex;align-items:center;justify-content:center;line-height:1;font-size:0.75rem}
.cal-action-cell>input[type=checkbox]{width:16px;height:16px;margin:0 6px!important;cursor:pointer}
.cal-action-cell .done-check{accent-color:#16a34a}
.cal-action-cell .c1-check{accent-color:#2563eb}

/* ── Inline-редактирование ячеек SKU ── */
.sku-table td.sku-editable{cursor:text;position:relative}
.sku-table td.sku-editable:hover{background:#fffbeb!important;outline:1px dashed #d97706;outline-offset:-1px}
.sku-table tbody tr:hover td.sku-editable{background:#fffbeb!important}
.sku-table tbody tr:hover td.sku-pack-col.sku-editable{background:#fef3c7!important}
.sku-table td.sku-editable input{display:block;width:100%;box-sizing:border-box}

/* ── Столбец ОСТ ── */
.ost-cell{text-align:center;min-width:70px;white-space:nowrap}
.ost-surplus{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:5px;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;font-weight:700;font-size:0.6875rem;cursor:pointer}
.ost-surplus:hover{background:#dbeafe}
.ost-deficit{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:5px;background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;font-weight:700;font-size:0.6875rem}
.ost-none{color:#cbd5e1;font-size:0.6875rem}

/* ── Resizable columns ── */
.cal-items th{position:relative}
.col-resize-handle{position:absolute;right:-3px;top:0;bottom:0;width:8px;cursor:col-resize;z-index:10;background:transparent;user-select:none;touch-action:none}
.col-resize-handle::after{content:'';position:absolute;right:3px;top:15%;bottom:15%;width:2px;border-radius:2px;background:rgba(59,130,246,.28);transition:background .15s}
.col-resize-handle:hover::after,.col-resize-handle.resizing::after{background:rgba(59,130,246,.8)}

/* ── Улучшенный стиль кнопок ── */
.btn-primary{background:linear-gradient(135deg,#1a3a5c,#1e4976);color:white;box-shadow:0 2px 4px rgba(26,58,92,.3)}
.btn-primary:hover{background:linear-gradient(135deg,#16324f,#1a3a5c);box-shadow:0 4px 8px rgba(26,58,92,.4)}
.btn-success{background:linear-gradient(135deg,#16a34a,#15803d);color:white;box-shadow:0 2px 4px rgba(22,163,74,.3)}
.btn-success:hover{background:linear-gradient(135deg,#15803d,#166534);box-shadow:0 4px 8px rgba(22,163,74,.4)}
.btn-danger{background:linear-gradient(135deg,#ef4444,#dc2626);color:white;box-shadow:0 2px 4px rgba(239,68,68,.3)}
.btn-danger:hover{background:linear-gradient(135deg,#dc2626,#b91c1c)}
.btn{transition:all .15s ease}

/* ── Сетка-фон (аналог login-страницы) на карточках дней ── */
.cal-day{position:relative}
.section-header h2{font-weight:800;letter-spacing:-.2px}
.cal-day-date{font-weight:800}

/* ── Drag-and-drop для ship-cal ── */
.ship-cal-cell.drag-over{background:#eff6ff!important;outline:2px dashed #3b82f6;outline-offset:-2px}
.ship-chip[draggable]{cursor:grab}
.ship-chip[draggable]:active{cursor:grabbing;opacity:.7}

/* ── Зона «без даты» (parking zone) ── */
.park-zone{
  margin-top:14px;
  border:2px dashed #f5b453;
  border-radius:14px;
  padding:12px 14px 14px;
  background:linear-gradient(135deg,#fff8ec,#fef2f2 55%,#eff6ff);
  transition:background .15s,border-color .15s,box-shadow .15s;
  min-height:58px;
  box-shadow:0 6px 18px -10px rgba(180,83,9,.35);
}
.park-zone:hover{box-shadow:0 8px 24px -10px rgba(180,83,9,.45)}
.park-zone.drag-over{
  background:#fefce8!important;
  border-color:#f59e0b!important;
}
.park-zone-hdr{
  display:flex;
  align-items:center;
  gap:7px;
  font-size:0.7812rem;
  font-weight:800;
  color:#b45309;
  text-transform:uppercase;
  letter-spacing:.7px;
  margin-bottom:9px;
  user-select:none;
}
.park-zone-ico{font-size:1rem;line-height:1;filter:drop-shadow(0 1px 2px rgba(180,83,9,.35))}
.park-zone-count{
  margin-left:auto;
  background:#f59e0b;
  color:#fff;
  border-radius:11px;
  padding:2px 9px;
  font-size:0.7188rem;
  font-weight:800;
  box-shadow:0 2px 6px rgba(245,158,11,.45);
}
.park-zone-chips{display:flex;flex-wrap:wrap;gap:5px;min-height:22px;align-items:flex-start}
.park-zone-empty{font-size:0.7812rem;color:#c2874f;font-style:italic;align-self:center}
.park-zone .ship-chip{font-size:0.75rem;padding:4px 9px;border-radius:8px}

/* ── Модальное окно переноса ОСТ ── */
.ost-transfer-info{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;padding:10px 14px;font-size:0.8125rem;margin-bottom:14px;color:#1e40af}

/* Поиск артикула в модалке */
.art-search-wrap{position:relative}
.art-dropdown{position:absolute;top:100%;left:0;right:0;background:white;border:1px solid #dde1e7;border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,.1);max-height:200px;overflow-y:auto;z-index:200;display:none}
.art-dropdown.show{display:block}
.art-option{padding:8px 12px;cursor:pointer;font-size:0.8125rem;border-bottom:1px solid #f0f4f8;display:flex;align-items:baseline;gap:8px}
.art-option:hover,.art-option.focused{background:#eff6ff}
.art-option .ao-art{font-size:0.75rem;font-weight:700;color:#1e40af;font-family:monospace;min-width:90px;flex-shrink:0}
.art-option .ao-name{color:#374151;font-size:0.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ── Календарь отгрузок ── */
.ship-cal-nav{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.ship-cal-nav span{font-size:1.0625rem;font-weight:800;color:#1a3a5c;min-width:190px;text-align:center;letter-spacing:.3px}
.ship-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;background:#dbe3ee;border-radius:14px;overflow:hidden;box-shadow:0 10px 30px -12px rgba(26,58,92,.35),0 2px 8px rgba(26,58,92,.08);border:1px solid #e2e8f0}
.ship-cal-dow{background:linear-gradient(135deg,#1a3a5c,#2456a6);color:white;text-align:center;font-size:0.75rem;font-weight:800;padding:9px 2px;text-transform:uppercase;letter-spacing:1px;text-shadow:0 1px 2px rgba(0,0,0,.25)}
.ship-cal-cell{background:white;min-height:96px;padding:6px 7px;display:flex;flex-direction:column;gap:3px;transition:background .15s,box-shadow .15s}
.ship-cal-cell:hover{background:#f6faff;box-shadow:inset 0 0 0 2px #bfdbfe}
.ship-cal-cell.other-month{background:#f1f5f9}
.ship-cal-cell.other-month .ship-cal-daynum{opacity:.45}
.ship-cal-cell.today-cell{background:linear-gradient(160deg,#eff6ff,#e0edff);box-shadow:inset 0 0 0 2px #3b82f6}
.ship-cal-cell.weekend{background:#fdf6f8}
.ship-cal-daynum{font-size:0.9375rem;font-weight:800;color:#94a3b8;margin-bottom:3px;line-height:1}
.ship-cal-daynum.cur{color:#1e293b}
.ship-cal-daynum.today-num{background:linear-gradient(135deg,#2563eb,#1a3a5c);color:white;border-radius:50%;width:26px;height:26px;display:flex;align-items:center;justify-content:center;font-size:0.8125rem;padding:0;box-shadow:0 0 0 3px rgba(37,99,235,.22),0 3px 8px rgba(37,99,235,.35)}
.ship-chip{border-radius:8px;padding:4px 7px;font-size:0.75rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;display:flex;align-items:center;gap:5px;line-height:1.35;box-shadow:0 2px 7px -1px rgba(15,23,42,.35);transition:transform .12s,box-shadow .12s;text-shadow:0 1px 1px rgba(0,0,0,.18)}
.ship-chip:hover{transform:translateY(-1px) scale(1.02);box-shadow:0 5px 14px -3px rgba(15,23,42,.45)}
.ship-chip-pct{margin-left:auto;background:rgba(255,255,255,.92);border-radius:10px;padding:1px 6px;font-size:0.6875rem;font-weight:900;text-shadow:none;flex-shrink:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}
@keyframes ordFlash{0%,100%{box-shadow:none}25%,75%{box-shadow:inset 0 0 0 3px #f59e0b}}
tr.ord-row-flash>td{animation:ordFlash 1.6s ease 2;background:#fffbeb!important}

/* ── Импорт заказа ── */
.imp-drop-zone{border:2px dashed #93c5fd;border-radius:10px;padding:28px;text-align:center;background:#eff6ff;cursor:pointer;transition:.15s}
.imp-drop-zone:hover,.imp-drop-zone.dragover{background:#dbeafe;border-color:#3b82f6}
.imp-drop-zone p{font-size:0.8125rem;color:#1d4ed8;margin-bottom:8px}
.imp-preview-wrap{max-height:220px;overflow-y:auto;border:1px solid #e2e8f0;border-radius:8px}
.imp-preview-tbl{width:100%;border-collapse:collapse;font-size:0.75rem}
.imp-preview-tbl th{background:#f8fafc;padding:5px 8px;font-size:0.625rem;font-weight:700;text-transform:uppercase;color:#64748b;border-bottom:1px solid #e2e8f0;white-space:nowrap;position:sticky;top:0}
.imp-preview-tbl td{padding:4px 8px;border-bottom:1px solid #f0f4f8}
.imp-col-sel{padding:3px 6px;font-size:0.6875rem;border:1px solid #dde1e7;border-radius:4px;background:white;width:100%}
.imp-step{display:none}.imp-step.active{display:block}
.imp-steps-bar{display:flex;gap:2px;margin-bottom:18px;border-radius:8px;overflow:hidden}
.imp-step-dot{flex:1;text-align:center;padding:7px;font-size:0.6875rem;font-weight:700;background:#f1f5f9;color:#94a3b8}
.imp-step-dot.active{background:#1a3a5c;color:white}
.imp-step-dot.done{background:#22c55e;color:white}

/* ── Авторасписание ── */
.ad-result-box{background:#f0fdf4;border:1px solid #86efac;border-radius:8px;padding:12px 16px;margin-top:14px;font-size:0.8125rem;line-height:1.7}
.ad-result-box b{color:#166534}

/* ── Производственные группы ── */
.grp-badge{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;font-size:0.5rem;font-weight:800;vertical-align:middle;margin-left:3px;flex-shrink:0;line-height:1;cursor:default}
.grp-1,.grp-4{background:#bfdbfe;color:#1e3a8a}
.grp-2,.grp-5{background:#fbcfe8;color:#831843}
.grp-3,.grp-6{background:#bbf7d0;color:#14532d}
.grp-7{background:#a7f3d0;color:#064e3b}
.grp-8{background:#fde68a;color:#78350f}
.grp-9{background:#e9d5ff;color:#581c87}
.grp-10{background:#fed7aa;color:#7c2d12}
.grp-11{background:#bae6fd;color:#0c4a6e}
/* Пастельный фон ячеек артикул+наименование по группе */
td.row-grp-1,td.row-grp-4{background:#eff6ff!important}
td.row-grp-2,td.row-grp-5{background:#fdf2f8!important}
td.row-grp-3,td.row-grp-6{background:#f0fdf4!important}
td.row-grp-7{background:#ecfdf5!important}
td.row-grp-8{background:#fffbeb!important}
td.row-grp-9{background:#faf5ff!important}
td.row-grp-10{background:#fff7ed!important}
td.row-grp-11{background:#f0f9ff!important}
tr.done-row td.row-grp-1,tr.done-row td.row-grp-2,tr.done-row td.row-grp-3,
tr.done-row td.row-grp-4,tr.done-row td.row-grp-5,tr.done-row td.row-grp-6,
tr.done-row td.row-grp-7,tr.done-row td.row-grp-8,tr.done-row td.row-grp-9,
tr.done-row td.row-grp-10,tr.done-row td.row-grp-11{filter:brightness(.97)}
.grp-import-btn{padding:4px 10px;font-size:0.75rem;border:1px solid #dde1e7;background:white;border-radius:6px;color:#64748b;cursor:pointer}
.grp-import-btn:hover{background:#eff6ff;border-color:#3b82f6;color:#1d4ed8}



/* ══════════════════════════════════════════════════════════════════════
   REDESIGN 2.0 — 3D cards · shadows · animations
   ══════════════════════════════════════════════════════════════════════ */

@keyframes cardIn {
  from { opacity: 0; transform: translateY(28px) scale(.97); }
  to   { opacity: 1; transform: translateY(0)   scale(1);    }
}
@keyframes accentShimmer {
  0%   { background-position: -200% center; }
  100% { background-position:  200% center; }
}
@keyframes numPop {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.08); }
  100% { transform: scale(1); }
}
@keyframes heroFadeIn {
  from { opacity: 0; transform: translateY(-12px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── Секция модулей ── */
.dash-modules {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 20px;
  margin-bottom: 24px;
}
@media(max-width:600px){ .dash-modules { grid-template-columns: 1fr; } }

/* ── Карточка модуля ── */
.dash-mod {
  background: #ffffff;
  border-radius: 18px;
  box-shadow:
    0 1px 2px rgba(0,0,0,.04),
    0 4px 12px rgba(0,0,0,.06),
    0 12px 32px rgba(0,0,0,.07);
  border: 1px solid rgba(0,0,0,.06);
  cursor: pointer;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: cardIn .45s cubic-bezier(.22,.68,0,1.2) both;
  transition:
    transform .25s cubic-bezier(.22,.68,0,1.2),
    box-shadow .25s ease;
  will-change: transform;
}

.dash-mod:nth-child(1)  { animation-delay: .04s; }
.dash-mod:nth-child(2)  { animation-delay: .08s; }
.dash-mod:nth-child(3)  { animation-delay: .12s; }
.dash-mod:nth-child(4)  { animation-delay: .16s; }
.dash-mod:nth-child(5)  { animation-delay: .20s; }
.dash-mod:nth-child(6)  { animation-delay: .24s; }
.dash-mod:nth-child(7)  { animation-delay: .28s; }
.dash-mod:nth-child(8)  { animation-delay: .32s; }
.dash-mod:nth-child(9)  { animation-delay: .36s; }
.dash-mod:nth-child(10) { animation-delay: .40s; }
.dash-mod:nth-child(11) { animation-delay: .44s; }
.dash-mod:nth-child(12) { animation-delay: .48s; }

.dash-mod:hover:not(.dash-disabled) {
  transform: translateY(-6px);
  box-shadow:
    0 2px 4px rgba(0,0,0,.04),
    0 8px 20px rgba(0,0,0,.10),
    0 20px 48px rgba(0,0,0,.14);
}
.dash-mod:active:not(.dash-disabled) {
  transform: translateY(-2px);
  transition-duration: .08s;
}

/* ── Цветная полоска-акцент ── */
.dash-mod-accent {
  height: 6px;
  width: 100%;
  background-size: 200% auto;
  animation: accentShimmer 3s linear infinite;
  flex-shrink: 0;
}

/* ── Иконка модуля ── */
.dash-mod-icon {
  font-size: 1.875rem;
  line-height: 1;
  margin-bottom: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 58px;
  height: 58px;
  border-radius: 16px;
  background: linear-gradient(135deg, #f0f4ff 0%, #e8f0fe 100%);
  box-shadow: 0 2px 8px rgba(0,0,0,.08);
  transition: transform .2s ease, box-shadow .2s ease;
}
.dash-mod:hover .dash-mod-icon {
  transform: scale(1.12) rotate(-4deg);
  box-shadow: 0 4px 14px rgba(0,0,0,.14);
}

/* ── Заголовок и описание ── */
.dash-mod-title {
  font-size: 0.9375rem;
  font-weight: 800;
  color: #0f1e36;
  margin-bottom: 4px;
  letter-spacing: -.3px;
}
.dash-mod-desc {
  font-size: 0.75rem;
  color: #94a3b8;
  line-height: 1.55;
  margin-bottom: 16px;
}

/* ── Цифры статистики ── */
.dash-stat-num {
  font-size: 1.875rem;
  font-weight: 900;
  color: #0f1e36;
  min-width: 44px;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.dash-mod:hover .dash-stat-num {
  animation: numPop .3s ease;
}

/* ── Футер карточки ── */
.dash-mod-footer {
  margin-top: auto;
  padding: 12px 20px;
  border-top: 1px solid #f1f5f9;
  display: flex;
  justify-content: flex-end;
  background: linear-gradient(to bottom, #ffffff, #f8fafc);
}

/* ── Кнопка «Открыть» ── */
.dash-open-btn {
  padding: 8px 20px;
  border-radius: 8px;
  font-size: 0.75rem;
  font-weight: 700;
  border: none;
  cursor: pointer;
  font-family: inherit;
  letter-spacing: .3px;
  transition: all .2s ease;
}
.dash-open-btn:hover { transform: translateY(-1px); filter: brightness(1.1); }
.dash-open-btn.blue  {
  background: linear-gradient(135deg,#1a3a5c,#1e4976);
  color: white;
  box-shadow: 0 3px 10px rgba(26,58,92,.35);
}
.dash-open-btn.green {
  background: linear-gradient(135deg,#16a34a,#15803d);
  color: white;
  box-shadow: 0 3px 10px rgba(22,163,74,.35);
}
.dash-open-btn.grey  { background: #e2e8f0; color: #94a3b8; cursor: default; }
.dash-open-btn.grey:hover { transform: none; filter: none; }

/* ── Дашборд-герой ── */
.dash-hero {
  background: linear-gradient(135deg, #0c1e38 0%, #0f2744 40%, #1a3a5c 70%, #1e4976 100%);
  color: white;
  padding: 32px 36px 36px;
  position: relative;
  overflow: hidden;
  margin-bottom: 0;
  animation: heroFadeIn .4s ease both;
}
.dash-hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 20% 50%, rgba(59,130,246,.12) 0%, transparent 50%),
    radial-gradient(circle at 80% 20%, rgba(99,102,241,.10) 0%, transparent 40%),
    linear-gradient(rgba(255,255,255,.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.03) 1px, transparent 1px);
  background-size: 100% 100%, 100% 100%, 32px 32px, 32px 32px;
  pointer-events: none;
}
.dash-hero h2 {
  font-size: 1.5rem;
  font-weight: 900;
  letter-spacing: -.5px;
  margin-bottom: 4px;
}

/* ── KPI-блоки в герое ── */
.dash-hero-kpis {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 14px;
  margin-top: 20px;
}
.dash-hkpi {
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 14px;
  padding: 16px 20px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  transition: background .2s, transform .2s, box-shadow .2s;
  animation: cardIn .45s cubic-bezier(.22,.68,0,1.2) both;
}
.dash-hkpi:hover {
  background: rgba(255,255,255,.14);
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(0,0,0,.25);
}
.dash-hkpi-num {
  font-size: 2.125rem;
  font-weight: 900;
  line-height: 1;
  margin-bottom: 5px;
  font-variant-numeric: tabular-nums;
}
.dash-hkpi-lbl {
  font-size: 0.75rem;
  opacity: .65;
  text-transform: uppercase;
  letter-spacing: .6px;
  line-height: 1.4;
}

/* ── Тело дашборда ── */
.dash-body {
  padding: 24px 28px 0;
  background: #eef1f5;
}

/* ── Панель «на этой неделе» ── */
.dash-week-panel {
  background: white;
  border-radius: 16px;
  padding: 22px 26px;
  box-shadow: 0 2px 8px rgba(0,0,0,.06), 0 8px 24px rgba(0,0,0,.05);
  border: 1px solid rgba(0,0,0,.05);
  margin-bottom: 24px;
}

/* ── Disabled карточка ── */
.dash-disabled {
  cursor: default;
  opacity: .55;
  filter: grayscale(.3);
}
.dash-disabled .dash-mod-icon { filter: grayscale(.4); }

/* ── stat-sub теги ── */
.dash-stat-sub span {
  font-size: 0.6875rem;
  color: #64748b;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  background: #f1f5f9;
  border-radius: 6px;
  padding: 3px 8px;
  font-weight: 500;
  transition: background .15s;
}
.dash-mod:hover .dash-stat-sub span { background: #e8f0fe; }


/* ══════════════════════════════════════════════════════════════════════
   SHELL LAYOUT — Sidebar + Main area (Фаза 1)
   ══════════════════════════════════════════════════════════════════════ */

:root {
  --sb-w: 224px;
  --sb-w-collapsed: 62px;
  --sb-bg: #0f2744;
  --sb-bg2: #1a3a5c;
  --sb-accent: #3b82f6;
  --topbar-h: 52px;
}

/* ── Body reset ── */
body {
  margin: 0;
  /* как у .erp-shell: vh не учитывает CSS zoom — при масштабе 105% страница была выше
     окна и прокручивалась целиком: логотип уезжал вверх, снизу пустая полоса (обращение №16) */
  height: calc(100vh / var(--zbh-zoom, 1));
  overflow: hidden;
  background: #eef1f5;
}
html:has(> body > .erp-shell) { overflow: hidden; }   /* портал целиком не прокручивается */

/* ── ERP shell ── */
.erp-shell {
  display: flex;
  /* vh не учитывает CSS zoom (контрол масштаба) — делим на коэффициент,
     иначе при >100% низ экрана обрезается. См. zbh-scale.js */
  height: calc(100vh / var(--zbh-zoom, 1));
  overflow: hidden;
}

/* ════════════ SIDEBAR ════════════ */
.sidebar {
  width: var(--sb-w);
  background: var(--sb-bg);
  color: #e2e8f0;
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  /* скроллится только .sb-nav — футер (масштаб/юзер) всегда закреплён внизу */
  overflow: hidden;
  transition: width .25s cubic-bezier(.4,0,.2,1);
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,.1) transparent;
  position: relative;
  z-index: 200;
  box-shadow: 2px 0 12px rgba(0,0,0,.18);
}
.sidebar.collapsed { width: var(--sb-w-collapsed); }

/* Logo area */
.sb-logo {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  padding: 16px 14px 14px;
  border-bottom: 1px solid rgba(255,255,255,.08);
  flex-shrink: 0;
  overflow: hidden;
  min-height: 64px;
}
.sb-logo img {
  height: 36px;
  width: 36px;
  object-fit: contain;
  flex-shrink: 0;
  filter: brightness(1.1);
}

.sb-logo img.sb-brand-img {
  width: auto;
  height: 26px;
  max-width: 150px;
  filter: none;
}
.sidebar.collapsed .sb-brand-img { height: 24px; }
.sb-logo-text {
  display: flex;
  flex-direction: column;
  width: 100%;
  overflow: hidden;
  transition: opacity .2s;
}
.sb-logo-name {
  font-size: 0.875rem;
  font-weight: 800;
  color: white;
  white-space: nowrap;
  letter-spacing: -.2px;
}
.sb-logo-sub {
  font-size: 0.625rem;
  color: rgba(255,255,255,.45);
  white-space: normal;
  line-height: 1.35;
  text-transform: uppercase;
  letter-spacing: .3px;
  margin-top: 1px;
}
.sidebar.collapsed .sb-logo-text { display: none; }
/* Переключатель завода ЗБХ ⇄ ЗФП (26.10.2026) */
.sb-plant-switch { display: flex; gap: 6px; padding: 0 14px 10px; }
.sb-plant { flex: 1; text-align: center; padding: 5px 6px; border-radius: 8px; font-size: 12px;
  font-weight: 700; letter-spacing: .3px; text-decoration: none; color: rgba(255,255,255,.75);
  border: 1px solid rgba(255,255,255,.18); transition: background .15s, color .15s; }
.sb-plant.cur { background: rgba(255,255,255,.16); color: #fff; border-color: rgba(255,255,255,.35); cursor: default; }
a.sb-plant:hover { background: rgba(255,255,255,.10); color: #fff; }
.sidebar.collapsed .sb-plant-switch { flex-direction: column; padding: 0 6px 8px; }

/* Nav groups */
.sb-nav { flex: 1; min-height: 0; padding: 10px 0; overflow-y: auto; overflow-x: hidden; }
.sb-group-label {
  font-size: 0.5625rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: rgba(255,255,255,.28);
  padding: 12px 16px 4px;
  white-space: nowrap;
  overflow: hidden;
  transition: opacity .2s;
}
.sidebar.collapsed .sb-group-label { opacity: 0; height: 0; padding: 0; margin: 0; }

/* Nav items */
.sb-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 14px;
  cursor: pointer;
  border-radius: 8px;
  margin: 1px 8px;
  font-size: 0.8125rem;
  font-weight: 500;
  color: rgba(255,255,255,.72);
  transition: background .15s, color .15s, padding .2s;
  white-space: nowrap;
  overflow: hidden;
  position: relative;
  text-decoration: none;
}
.sb-item:hover {
  background: rgba(255,255,255,.08);
  color: #fff;
}
.sb-item.active {
  background: rgba(59,130,246,.22);
  color: #fff;
  font-weight: 700;
}
.sb-item.active::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 3px;
  height: 60%;
  background: var(--sb-accent);
  border-radius: 0 3px 3px 0;
}
.sb-icon {
  font-size: 1.125rem;
  flex-shrink: 0;
  width: 22px;
  text-align: center;
  line-height: 1;
}
.sb-label {
  flex: 1;
  overflow: hidden;
  white-space: normal;      /* длинные названия («Ресурсные спецификации») переносятся на 2 строки */
  line-height: 1.22;
  overflow-wrap: break-word;
  transition: opacity .2s, max-width .2s;
}
.sidebar.collapsed .sb-label { opacity: 0; max-width: 0; white-space: nowrap; }
.sidebar.collapsed .sb-item { padding: 9px 0; justify-content: center; margin: 1px 6px; }
.sidebar.collapsed .sb-item::before { display: none; }

/* === Sidebar tiles (Tabler icons on colored squares) === */
/* Значок = белая линия Tabler на цветной плитке; цвет плитки = раздел меню.
   Спрайт static/img/icons.svg, символы без stroke/fill — цвет наследуется от .sb-svg. */
.sb-tile {
  width: 24px; height: 24px; min-width: 24px;
  border-radius: 7px;
  display: inline-flex; align-items: center; justify-content: center;
  color: #fff;
  background: #64748b;
  opacity: .88;
  transition: opacity .15s, transform .15s;
  font-size: 0;            /* гасит наследованный 1.125rem от .sb-icon */
}
.sb-item:hover .sb-tile, .sb-item.active .sb-tile { opacity: 1; }
.sb-item.active .sb-tile { transform: scale(1.06); }
.sb-svg { width: 16px; height: 16px; display: block; }
.sb-owl { display: block; }
.sb-tile.g-plan  { background: #378add; }   /* Планирование */
.sb-tile.g-prod  { background: #e8952a; }   /* Производство */
.sb-tile.g-res   { background: #1d9e75; }   /* Ресурсы */
.sb-tile.g-staff { background: #7f77dd; }   /* Персонал и оборудование */
.sb-tile.g-misc  { background: #64748b; }   /* Прочее */
.sb-tile.g-an    { background: #d4537e; }   /* Аналитика */
.sb-tile.g-biz   { background: #d85a30; }   /* Бизнес */
.sb-tile.g-sys   { background: #6b6a66; }   /* Система */
.sb-item { padding-top: 7px; padding-bottom: 7px; }   /* плитка 24px вместо эмодзи 18px — компенсируем высоту строки */
.sidebar.collapsed .sb-item { padding-top: 7px; padding-bottom: 7px; }

/* Admin-only item */
.sb-admin-only { display: none !important; }
.role-admin .sb-admin-only { display: flex !important; }
.role-admin .sb-admin-group { display: block !important; }
.sb-admin-group { display: none !important; }

/* Admin item special color */
.sb-item.admin-item { color: rgba(251,191,36,.8); }
.sb-item.admin-item:hover { background: rgba(251,191,36,.12); color: #fbbf24; }
.sb-item.admin-item.active { background: rgba(251,191,36,.18); color: #fbbf24; }

/* Separator */
.sb-separator {
  height: 1px;
  background: rgba(255,255,255,.07);
  margin: 8px 14px;
}

/* Footer with user info */
.sb-footer {
  border-top: 1px solid rgba(255,255,255,.08);
  padding: 12px;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.sb-user {
  display: flex;
  align-items: center;
  gap: 10px;
  overflow: hidden;
}
.sb-avatar {
  width: 34px;
  height: 34px;
  border-radius: 10px;
  background: var(--sb-accent);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.875rem;
  font-weight: 800;
  color: white;
  flex-shrink: 0;
}
.sb-user-info {
  flex: 1;
  overflow: hidden;
  transition: opacity .2s;
}
.sb-username {
  font-size: 0.8125rem;
  font-weight: 700;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sb-role-badge {
  font-size: 0.625rem;
  color: rgba(255,255,255,.45);
  white-space: nowrap;
  text-transform: uppercase;
  letter-spacing: .5px;
}
.sidebar.collapsed .sb-user-info { opacity: 0; max-width: 0; }
.sb-logout-btn {
  width: 100%;
  padding: 6px;
  background: rgba(239,68,68,.15);
  border: 1px solid rgba(239,68,68,.25);
  border-radius: 7px;
  color: rgba(248,113,113,.9);
  font-size: 0.75rem;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: background .15s;
  white-space: nowrap;
  overflow: hidden;
}
.sb-logout-btn:hover { background: rgba(239,68,68,.28); color: #fca5a5; }
.sidebar.collapsed .sb-logout-btn { padding: 6px 0; font-size: 1rem; }

/* ════════════ MAIN AREA ════════════ */
.main-area {
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  min-width: 0;
  position: relative; /* нужно чтобы lock-overlay не закрывал сайдбар */
}

/* Topbar */
.topbar {
  height: var(--topbar-h);
  background: white;
  border-bottom: 1px solid #e2e8f0;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 20px;
  flex-shrink: 0;
  box-shadow: 0 2px 8px rgba(0,0,0,.06);
  z-index: 100;
}
.topbar-toggle {
  width: 36px;
  height: 36px;
  border: none;
  background: #f1f5f9;
  border-radius: 8px;
  cursor: pointer;
  font-size: 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background .15s;
  color: #475569;
}
.topbar-toggle:hover { background: #e2e8f0; }
.topbar-title {
  font-size: 0.9375rem;
  font-weight: 700;
  color: #1a3a5c;
  flex: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.topbar-right {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.topbar-undo-btn {
  padding: 6px 14px;
  border: 1px solid #e2e8f0;
  background: white;
  border-radius: 7px;
  font-size: 0.75rem;
  cursor: pointer;
  color: #64748b;
  font-family: inherit;
  font-weight: 600;
  transition: background .15s;
}
.topbar-undo-btn:hover:not(:disabled) { background: #f1f5f9; }
.topbar-undo-btn:disabled { opacity: .4; cursor: default; }

/* Notif bell in topbar */
.topbar-bell {
  width: 36px;
  height: 36px;
  border: none;
  background: #f1f5f9;
  border-radius: 8px;
  cursor: pointer;
  font-size: 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  color: #475569;
  transition: background .15s;
}
.topbar-bell:hover { background: #e2e8f0; }
.topbar-bell-badge {
  position: absolute;
  top: 4px;
  right: 4px;
  width: 16px;
  height: 16px;
  background: #ef4444;
  border-radius: 50%;
  font-size: 0.5625rem;
  font-weight: 800;
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  display: none;
}

/* Tab pages wrap */
.tab-pages-wrap {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
  position: relative;
}
.tab-pages-wrap .tab-page { display: none; }
.tab-pages-wrap .tab-page.active { display: block; }

/* Iframe module pages */
.iframe-tab {
  display: none;
  height: 100%;
  width: 100%;
  position: absolute;
  top: 0;
  left: 0;
}
.iframe-tab.active { display: flex; flex-direction: column; }
.module-iframe {
  flex: 1;
  border: none;
  width: 100%;
  height: 100%;
}

/* Старый header и nav — скрыть (если вдруг остались) */
.header { display: none !important; }
.nav    { display: none !important; }

/* ── Адаптив (мобилка) ── */
@media(max-width:768px) {
  .sidebar { position: absolute; top: 0; left: 0; bottom: 0; z-index: 500; transform: translateX(0); }
  .sidebar.mobile-hidden { transform: translateX(-100%); }
  .main-area { width: 100%; }
}


/* ════════════════════════════════════════════════════════
   SKU — Справочник SKU (современные компоненты)
   ════════════════════════════════════════════════════════ */

/* Шапка раздела */
.sku-header {
  padding: 18px 24px 0;
}
.sku-title-wrap {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 6px;
}
.sku-main-title {
  font-size: 1.25rem;
  font-weight: 800;
  color: #1a3a5c;
  letter-spacing: -.3px;
}
.sku-count-pill {
  background: #eff6ff;
  color: #1d4ed8;
  border: 1px solid #bfdbfe;
  border-radius: 20px;
  font-size: 0.75rem;
  font-weight: 700;
  padding: 2px 10px;
}

/* Статистическая полоса */
.sku-stats-strip {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 2px;
}
.sku-stat-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 12px;
  border-radius: 20px;
  font-size: 0.75rem;
  font-weight: 600;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  color: #475569;
  cursor: default;
  transition: all .15s;
}
.sku-chip-btn { cursor: pointer; }
.sku-chip-btn:hover { background: #f1f5f9; border-color: #cbd5e1; }
.sku-stat-chip.accent { background: #eff6ff; border-color: #bfdbfe; color: #1d4ed8; }
.sku-stat-chip.green  { background: #f0fdf4; border-color: #bbf7d0; color: #166534; }
.sku-stat-chip.purple { background: #faf5ff; border-color: #e9d5ff; color: #7e22ce; }
.sku-stat-chip b { font-size: 0.875rem; font-weight: 800; }

/* Тулбар */
.sku-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 12px 24px;
  background: white;
  border-bottom: 1px solid #e2e8f0;
  position: sticky;
  top: 0;
  z-index: 10;
}
.sku-search-wrap {
  flex: 1;
  min-width: 180px;
  position: relative;
}
.sku-search-wrap::before {
  content: '🔍';
  position: absolute;
  left: 10px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 0.8125rem;
  pointer-events: none;
}
.sku-search-wrap input {
  width: 100%;
  padding: 8px 12px 8px 32px;
  border: 1px solid #dde1e7;
  border-radius: 8px;
  font-size: 0.8125rem;
  outline: none;
  font-family: inherit;
  background: #f8fafc;
  transition: border-color .15s, background .15s;
}
.sku-search-wrap input:focus {
  border-color: #3b82f6;
  background: white;
  box-shadow: 0 0 0 3px rgba(59,130,246,.1);
}
.sku-select {
  padding: 8px 10px;
  border: 1px solid #dde1e7;
  border-radius: 8px;
  font-size: 0.8125rem;
  background: white;
  cursor: pointer;
  outline: none;
  font-family: inherit;
  color: #374151;
  transition: border-color .15s;
}
.sku-select:focus { border-color: #3b82f6; }
.sku-btn-sep {
  width: 1px;
  height: 24px;
  background: #e2e8f0;
  flex-shrink: 0;
}
.sku-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 8px 14px;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  font-size: 0.8125rem;
  font-weight: 600;
  white-space: nowrap;
  font-family: inherit;
  transition: all .15s;
}
.sku-btn-primary  { background: #1a3a5c; color: white; }
.sku-btn-primary:hover  { background: #16324f; box-shadow: 0 2px 8px rgba(26,58,92,.35); }
.sku-btn-success  { background: #16a34a; color: white; }
.sku-btn-success:hover  { background: #15803d; box-shadow: 0 2px 8px rgba(22,163,74,.35); }
.sku-btn-ghost    { background: #f1f5f9; color: #475569; border: 1px solid #e2e8f0; }
.sku-btn-ghost:hover    { background: #e2e8f0; }

/* Секция с таблицей */
.sku-section {
  padding: 0 24px 24px;
  padding-top: 16px;
}
.sku-table-wrap {
  background: white;
  border-radius: 12px;
  box-shadow: 0 1px 6px rgba(0,0,0,.08);
  overflow: auto;
  border: 1px solid #e2e8f0;
}
.sku-table {
  width: 100%;
  min-width: 1440px;
  table-layout: fixed;
  border-collapse: collapse;
}
.sku-table th {
  background: #f8fafc;
  padding: 10px 12px;
  text-align: left;
  font-size: 0.6875rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .4px;
  color: #64748b;
  border-bottom: 2px solid #e2e8f0;
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
  position: sticky;
  top: 0;
}
.sku-table th:hover { background: #f1f5f9; }
.sku-table th.sku-num-hdr { text-align: right; }
/* 🏷 Справочник производственных групп (26.10) */
.grp-modal { position: fixed; inset: 0; background: rgba(15,23,42,.45); z-index: 10040; display: none; align-items: center; justify-content: center; }
.grp-modal.open { display: flex; }
.grp-box { background: #fff; border-radius: 14px; width: min(720px, 94vw); max-height: 90vh; display: flex; flex-direction: column; box-shadow: 0 20px 60px rgba(0,0,0,.3); }
.grp-hd { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border-bottom: 1px solid #e2e8f0; font-size: 16px; }
.grp-sub { font-size: 12px; color: #64748b; padding: 8px 18px 0; }
.grp-body { overflow: auto; padding: 8px 18px 12px; flex: 1; }
.grp-tbl { width: 100%; border-collapse: collapse; font-size: 13px; }
.grp-tbl th { text-align: left; font-size: 11px; text-transform: uppercase; color: #64748b; padding: 6px; border-bottom: 1px solid #e2e8f0; }
.grp-tbl td { padding: 5px 6px; border-bottom: 1px solid #f1f5f9; }
.grp-in { width: 100%; box-sizing: border-box; padding: 5px 8px; border: 1px solid #e2e8f0; border-radius: 6px; font-size: 13px; }
.grp-num { max-width: 140px; }
.grp-ft { display: flex; gap: 8px; align-items: center; padding: 12px 18px; border-top: 1px solid #e2e8f0; flex-wrap: wrap; }
.grp-ft .grp-in { width: auto; flex: 0 1 220px; }
.grp-cnt { border: 1px solid #e2e8f0; background: #f8fafc; border-radius: 6px; padding: 2px 10px; cursor: pointer; font-weight: 700; color: #1e3a5f; }
.grp-cnt:hover, tr.grp-open .grp-cnt { background: #dbeafe; border-color: #93c5fd; }
tr.grp-open > td { background: #eff6ff; }
.grp-arts { background: #f8fafc; border: 1px solid #dbeafe; border-radius: 8px; padding: 8px; }
.grp-art { display: flex; gap: 8px; align-items: center; padding: 3px 0; border-bottom: 1px dashed #e2e8f0; }
.grp-art-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12.5px; }
.grp-move { max-width: 230px; font-size: 12px; }
.grp-add { display: grid; grid-template-columns: 1fr; gap: 6px; margin-top: 8px; }
.grp-add select[multiple] { font-size: 12px; }
/* 🆕 Буферная зона / метка NEW (26.10) */
.sku-new-badge { display: inline-block; background: #f97316; color: #fff; font-size: 10px; font-weight: 800; letter-spacing: .5px; border-radius: 5px; padding: 1px 6px; margin-right: 4px; cursor: pointer; vertical-align: middle; }
.grp-buffer { margin-bottom: 8px; }
.grp-tbl { table-layout: fixed; }
.grp-tbl td:nth-child(1), .grp-tbl th:nth-child(1) { width: 44px; }
.grp-tbl th:nth-child(3) { width: 150px; }
.grp-tbl th:nth-child(4) { width: 90px; }
.grp-tbl th:nth-child(5) { width: 44px; }
.grp-buffer td:nth-child(1) { width: auto; }
.grp-buffer td:nth-child(2) { width: 90px; }
.grp-buffer td:nth-child(3) { width: 44px; }
.grp-arts-row > td { width: auto !important; }
.grp-art { flex-wrap: wrap; }
.grp-art .grp-sub { white-space: nowrap; }
.grp-buffer td { background: #fff7ed; border-bottom: 1px solid #fed7aa; }
.sku-chip-buffer { background: #fff7ed; color: #c2410c; border: 1px solid #fdba74; }
.sku-chip-buffer.hot { background: #ffedd5; box-shadow: 0 0 0 2px #fb923c inset; }
/* Списание в 1С: одобрение начальником производства (25.10) */
.posted-btn.awaiting { background: #fff7ed; color: #c2410c; border: 1px solid #fdba74; cursor: default; }
.wo-stat.approval .num { color: #c2410c; }
.wo-stat.approval.hot { box-shadow: 0 0 0 2px #fb923c inset; background: #fff7ed; }
/* 🆕 Новое из 1С — черновики SKU из витрины */
.sku-new1c { margin: 12px 24px 0; border: 1px solid #fdba74; background: #fff7ed; border-radius: 12px; padding: 10px 14px; }
.sku-new1c-hd { font-size: 13px; color: #9a3412; font-weight: 700; margin-bottom: 8px; }
.sku-new1c-hd span { font-weight: 400; color: #c2410c; }
.sku-new1c-tbl { width: 100%; border-collapse: collapse; font-size: 12.5px; background: #fff; border-radius: 8px; overflow: hidden; }
.sku-new1c-tbl th { text-align: left; font-size: 11px; text-transform: uppercase; color: #64748b; padding: 6px 8px; background: #fffbeb; }
.sku-new1c-tbl td { padding: 6px 8px; border-top: 1px solid #fde7c7; }
/* обращение №11: шапка прилипает к верху прокрутки таблицы, колонки тянутся мышкой */
#tab-sku .sku-table-wrap { max-height: calc(100vh - 230px); overscroll-behavior: contain; }
.sku-table thead th { z-index: 3; box-shadow: 0 1px 0 #e2e8f0; }
.sku-col-rsz { position: absolute; top: 0; right: -4px; width: 9px; height: 100%; cursor: col-resize; z-index: 4; }
.sku-col-rsz::after { content: ''; position: absolute; left: 4px; top: 25%; height: 50%; border-left: 1px solid #cbd5e1; }
.sku-col-rsz:hover::after, body.sku-col-resizing .sku-col-rsz::after { border-left: 2px solid #3b82f6; }
body.sku-col-resizing { cursor: col-resize !important; user-select: none; }
.sku-table td { padding: 9px 12px; font-size: 0.8125rem; border-bottom: 1px solid #f0f4f8; vertical-align: middle; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sku-table td.num, .sku-table td.ctr { text-align: right; }
.sku-table tr:hover td { background: #f8fafc; }

/* ── Справочник SKU: кнопки действий + сворачивание комплектов ── */
.sku-row-btns{display:inline-flex;gap:5px;align-items:center}
.sku-row-btn{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #e2e8f0;border-radius:8px;background:#fff;color:#64748b;cursor:pointer;transition:all .12s;padding:0}
.sku-row-btn:hover{background:#f1f5f9;color:#334155;border-color:#cbd5e1}
.sku-row-btn svg{width:16px;height:16px;display:block}
.sku-row-btn-edit:hover{background:#eff6ff;color:#2563eb;border-color:#bfdbfe}
.sku-row-btn-del:hover{background:#fef2f2;color:#dc2626;border-color:#fecaca}
.sku-kit-expand-btn{width:22px;height:22px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#7c3aed;cursor:pointer;font-size:0.625rem;line-height:1;margin-right:6px;padding:0;vertical-align:middle;transition:all .12s}
.sku-kit-expand-btn:hover{background:#f5f3ff;border-color:#ddd6fe}
tr.sku-kit-child.hidden{display:none}
tr.sku-kit-child td{background:#fafbff}
.sku-name-cell{cursor:pointer}
.sku-name-cell:hover{background:#f8fafc}


/* ═══ РЕСУРСНЫЕ СПЕЦИФИКАЦИИ (вкладка Планировщика) ═══ */
#tab-specs { padding: 18px 22px; }
.sp-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; flex-wrap:wrap; gap:10px; }
.sp-title-wrap { display:flex; align-items:center; gap:10px; }
.sp-main-title { font-size:1.25rem; font-weight:800; color:#0f172a; }
.sp-count-pill { background:#eef2ff; color:#4338ca; font-size:0.75rem; font-weight:700; padding:3px 10px; border-radius:999px; }
.sp-head-actions { display:flex; gap:8px; }
.sp-btn { background:#fff; border:1px solid #e2e8f0; border-radius:10px; padding:8px 14px; font-size:0.8125rem; font-weight:600; color:#334155; cursor:pointer; transition:all .15s; }
.sp-btn:hover:not(:disabled) { border-color:#c7d2fe; background:#f8faff; transform:translateY(-1px); box-shadow:0 3px 10px rgba(67,56,202,.08); }
.sp-btn:disabled { opacity:.45; cursor:default; }
.sp-btn-primary { background:#4f46e5; border-color:#4f46e5; color:#fff; }
.sp-btn-primary:hover { background:#4338ca; }

/* Категории-подвкладки */
.sp-cats { display:flex; gap:8px; margin-bottom:14px; flex-wrap:wrap; }
.sp-cat { display:flex; align-items:center; gap:7px; padding:9px 16px; border-radius:12px; background:#fff; border:1.5px solid #e2e8f0; font-size:0.8438rem; font-weight:600; color:#475569; cursor:pointer; transition:all .15s; user-select:none; }
.sp-cat:hover { border-color:#c7d2fe; }
.sp-cat.active { background:#4f46e5; border-color:#4f46e5; color:#fff; box-shadow:0 4px 14px rgba(79,70,229,.25); }
.sp-cat.active .sp-cat-n { background:rgba(255,255,255,.22); color:#fff; }
.sp-cat-icon { font-size:0.9375rem; }
.sp-cat-n { background:#f1f5f9; color:#64748b; font-size:0.7188rem; font-weight:700; padding:1px 8px; border-radius:999px; }

/* Раскладка: папки слева, таблица справа */
.sp-layout { display:flex; gap:14px; align-items:flex-start; }
.sp-folders { width:230px; flex-shrink:0; background:#fff; border:1px solid #e8edf3; border-radius:14px; padding:8px; box-shadow:0 2px 8px rgba(15,23,42,.04); }
.sp-folder { display:flex; align-items:center; gap:8px; padding:8px 10px; border-radius:9px; font-size:0.8125rem; color:#334155; cursor:pointer; transition:background .12s; position:relative; }
.sp-folder:hover { background:#f5f7fb; }
.sp-folder.active { background:#eef2ff; color:#4338ca; font-weight:700; }
.sp-folder-icon { font-size:0.875rem; }
.sp-folder-name { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sp-folder-n { font-size:0.6875rem; font-weight:700; color:#94a3b8; }
.sp-folder-acts { display:none; gap:2px; position:absolute; right:28px; background:inherit; }
.sp-folder:hover .sp-folder-acts { display:flex; }
.sp-mini { background:none; border:none; cursor:pointer; font-size:0.7812rem; padding:2px 4px; border-radius:6px; color:#64748b; }
.sp-mini:hover { background:#e2e8f0; }
.sp-mini-add { font-size:1rem; font-weight:700; color:#4f46e5; }
.sp-folder-new { display:flex; gap:4px; margin-top:8px; padding-top:8px; border-top:1px dashed #e2e8f0; }
.sp-folder-new input { flex:1; min-width:0; border:1px solid #e2e8f0; border-radius:8px; padding:6px 9px; font-size:0.7812rem; }
.sp-folder-new input:focus { outline:none; border-color:#a5b4fc; }
.sp-fname-input { width:100%; border:1px solid #a5b4fc; border-radius:6px; padding:2px 6px; font-size:0.7812rem; }
.sp-hint { font-size:0.6875rem; color:#94a3b8; line-height:1.45; padding:10px 8px 4px; }

/* Dropzone-подсветка */
.sp-drop-hover { outline:2px dashed #4f46e5; outline-offset:-2px; background:#eef2ff !important; }

/* Таблица */
.sp-main { flex:1; min-width:0; }
.sp-toolbar { display:flex; gap:8px; margin-bottom:10px; }
.sp-search { flex:1; border:1px solid #e2e8f0; border-radius:10px; padding:8px 13px; font-size:0.8125rem; background:#fff; }
.sp-search:focus { outline:none; border-color:#a5b4fc; box-shadow:0 0 0 3px rgba(99,102,241,.10); }
.sp-table-wrap { background:#fff; border:1px solid #e8edf3; border-radius:14px; overflow:auto; max-height:calc(100vh - 320px); box-shadow:0 2px 8px rgba(15,23,42,.04); }
.sp-tbl { width:100%; border-collapse:collapse; font-size:0.8125rem; }
.sp-tbl thead th { position:sticky; top:0; background:#f8fafc; z-index:2; text-align:left; font-size:0.7188rem; text-transform:uppercase; letter-spacing:.4px; color:#64748b; padding:9px 10px; border-bottom:1px solid #e8edf3; }
.sp-tbl tbody td { padding:7px 10px; border-bottom:1px solid #f1f5f9; vertical-align:middle; }
.sp-tbl tbody tr { cursor:grab; transition:background .1s; }
.sp-tbl tbody tr:hover { background:#f8faff; }
.sp-tbl tbody tr.sp-row-sel { background:#eef2ff; }
.sp-code { font-family:ui-monospace,Consolas,monospace; font-weight:700; font-size:0.7812rem; color:#4338ca; background:#eef2ff; padding:2px 8px; border-radius:7px; white-space:nowrap; }
.sp-art { font-family:ui-monospace,Consolas,monospace; font-size:0.7812rem; color:#475569; }
.sp-name { color:#1e293b; }
.sp-1c-cell { cursor:default; }   /* код 1С только для чтения (04.09.2026) */
.sp-ro-note { display:inline-flex; align-items:center; gap:6px; font-size:0.8125rem; color:#64748b;
  background:#f1f5f9; border:1px solid #e2e8f0; border-radius:8px; padding:6px 12px; }
.sp-1c { font-family:ui-monospace,Consolas,monospace; font-size:0.7812rem; color:#047857; background:#ecfdf5; padding:2px 8px; border-radius:7px; white-space:nowrap; }
.sp-1c-empty { font-size:0.75rem; color:#c2c9d6; font-style:italic; }
.sp-folder-tag { font-size:0.7188rem; color:#64748b; background:#f1f5f9; padding:2px 8px; border-radius:7px; white-space:nowrap; }
.sp-mat-n { font-weight:700; color:#334155; }
.sp-dim { color:#cbd5e1; }
.sp-row-acts { white-space:nowrap; text-align:right; }
.sp-row-acts .sp-mini { font-size:0.875rem; }
.sp-empty { padding:48px 20px; text-align:center; color:#64748b; font-size:0.875rem; background:#fff; border:1px dashed #e2e8f0; border-radius:14px; line-height:1.6; }

/* Модалы перемещения/создания */
.sp-move-label { display:block; font-size:0.7188rem; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:#64748b; margin:12px 0 5px; }
.sp-move-select { width:100%; border:1px solid #e2e8f0; border-radius:9px; padding:8px 11px; font-size:0.8438rem; background:#fff; box-sizing:border-box; }
.sp-move-select:focus { outline:none; border-color:#a5b4fc; }

/* ─── Дерево папок (tree) слева ─── */
.sp-tree { width:300px; flex-shrink:0; background:#fff; border:1px solid #e8edf3; border-radius:14px; padding:8px 6px; box-shadow:0 2px 8px rgba(15,23,42,.04); max-height:calc(100vh - 220px); overflow:auto; }
.sp-node { display:flex; align-items:center; gap:6px; padding:7px 8px; border-radius:9px; font-size:0.8125rem; color:#334155; cursor:pointer; transition:background .12s; position:relative; user-select:none; }
.sp-node:hover { background:#f5f7fb; }
.sp-node.active { background:#eef2ff; color:#4338ca; font-weight:700; }
.sp-caret { width:14px; flex-shrink:0; text-align:center; font-size:0.625rem; color:#94a3b8; transition:transform .15s; }
.sp-caret.open { transform:rotate(90deg); }
.sp-caret-none { visibility:hidden; }
.sp-node-icon { font-size:0.875rem; flex-shrink:0; }
.sp-node-name { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sp-node-n { font-size:0.6875rem; font-weight:700; color:#94a3b8; background:#f1f5f9; padding:1px 7px; border-radius:999px; }
.sp-node.active .sp-node-n { background:#e0e7ff; color:#4338ca; }
.sp-node-acts { display:flex; gap:1px; align-items:center; opacity:.45; transition:opacity .12s; }
.sp-node:hover .sp-node-acts { opacity:1; }
.sp-node.active .sp-node-acts { opacity:.85; }
.sp-tree-sep { height:1px; background:#eef2f7; margin:8px 6px; }
.sp-tree-hint { font-size:0.6875rem; color:#94a3b8; line-height:1.45; padding:12px 8px 4px; }

/* Заголовок текущего узла + статус/период в таблице */
.sp-view-title { font-size:0.875rem; font-weight:700; color:#1e293b; white-space:nowrap; align-self:center; padding-right:4px; flex-shrink:0; }
.sp-badge { display:inline-block; font-size:0.6875rem; font-weight:700; padding:2px 9px; border-radius:999px; white-space:nowrap; }
.sp-badge-active { background:#dcfce7; color:#15803d; }
.sp-badge-closed { background:#f1f5f9; color:#64748b; }
.sp-per { font-size:0.75rem; color:#475569; white-space:nowrap; }
.sp-per b { color:#94a3b8; font-weight:600; }
.sp-per-cell { cursor:pointer; }
.sp-per-cell:hover .sp-per { color:#4f46e5; }
.sp-row-closed { opacity:.72; }
.sp-row-closed .sp-name { color:#64748b; }
.sp-mini-close:hover { background:#fee2e2; color:#dc2626; }
.sp-mini-reopen:hover { background:#dcfce7; color:#15803d; }

/* Выделение строк (клик по строке / чекбокс) */
.sp-tbl tbody td input[type=checkbox] { width:15px; height:15px; cursor:pointer; accent-color:#4f46e5; vertical-align:middle; }
.sp-tbl thead th input[type=checkbox] { width:15px; height:15px; cursor:pointer; accent-color:#4f46e5; }
.sp-tbl tbody tr { cursor:pointer; }
.sp-tbl tbody tr.sp-row-sel { background:#eef2ff; box-shadow:inset 3px 0 0 #4f46e5; }
.sp-tbl tbody tr.sp-row-sel:hover { background:#e6ebff; }
.sp-btn-move:not(:disabled) { background:#4f46e5; border-color:#4f46e5; color:#fff; }
.sp-btn-move:not(:disabled):hover { background:#4338ca; }
.sp-btn-move:not(:disabled) b { background:rgba(255,255,255,.22); padding:0 6px; border-radius:999px; }

/* Модал периода/создания */
.sp-per-row { display:flex; gap:12px; }
.sp-per-sub { font-size:0.8125rem; color:#475569; margin-bottom:6px; font-weight:600; }
.sp-per-note { font-size:0.7188rem; color:#94a3b8; line-height:1.45; margin-top:10px; background:#f8fafc; border-radius:8px; padding:8px 10px; }

@media (max-width: 860px) {
  .sp-layout { flex-direction:column; }
  .sp-tree { width:100%; max-height:280px; }
}

/* ═══ П10: дизайн-паритет специфаций с планировщиком ═══════════════════
   Синий акцент #3b82f6 + navy-градиент (как .btn-primary/календарь),
   неон-кольца на активных состояниях, тени из токенов zbh3d, spring,
   один шрифт (Segoe UI) на кнопках. Блок идёт последним — перекрывает
   ранний индиго. */

/* Один шрифт: у <button> нет наследования font по умолчанию */
.sp-btn, .sp-mini, .sp-view-title, .sp-node, .sp-code, .sp-art { font-family:inherit; }

/* Панели: единые тени + мягкое появление */
.sp-tree, .sp-table-wrap {
  box-shadow: var(--zbh-shadow) !important;
  border-color: rgba(15,23,42,.07) !important;
  animation: zbhFadeUp .3s ease both;
}

/* Кнопки: spring-нажатие + navy primary */
.sp-btn { transition: var(--zbh-transition-fast); }
.sp-btn:hover:not(:disabled) { border-color:#93c5fd; background:#f0f7ff; box-shadow:0 3px 10px rgba(59,130,246,.16); transform:translateY(-1px); }
.sp-btn:active:not(:disabled) { transform:scale(.97); }
.sp-btn-primary, .sp-btn-move:not(:disabled) {
  background:linear-gradient(135deg,#1a3a5c,#1e4976) !important; border-color:#1a3a5c !important; color:#fff !important;
  box-shadow:0 2px 6px rgba(26,58,92,.3) !important;
}
.sp-btn-primary:hover, .sp-btn-move:not(:disabled):hover {
  background:linear-gradient(135deg,#16324f,#1a3a5c) !important;
  box-shadow:0 4px 14px rgba(26,58,92,.42) !important; transform:translateY(-1px);
}
.sp-btn-move:not(:disabled) b { background:rgba(255,255,255,.24); }

/* Заголовок и счётчик — в синей гамме */
.sp-view-title { color:#0f2744; }
.sp-count-pill { background:#eff6ff; color:#1d4ed8; }

/* Дерево: неон-активный узел + spring-hover */
.sp-node { transition: var(--zbh-transition-fast); }
.sp-node:hover { background:#eff6ff; }
.sp-node.active {
  background:linear-gradient(135deg,#eff6ff,#e0edff); color:#1d4ed8;
  box-shadow: inset 3px 0 0 #3b82f6, 0 0 0 1px rgba(59,130,246,.18);
}
.sp-node.active .sp-node-n { background:#dbeafe; color:#1d4ed8; }
.sp-caret { color:#93a4bd; transition: transform .18s var(--ease-spring, cubic-bezier(.34,1.56,.64,1)); }

/* Dropzone: неон-подсветка синим (как drag в календаре) */
.sp-drop-hover { outline:2px dashed #3b82f6 !important; outline-offset:-2px;
  background:#eff6ff !important; box-shadow: inset 0 0 0 9999px rgba(59,130,246,.06); }

/* Коды: РС — синий, 1С — зелёный (связь есть) */
.sp-code { color:#1d4ed8; background:#eff6ff; }

/* Строки: hover-акцент + неон-кольцо на выделении */
.sp-tbl tbody tr { transition: background .14s ease, box-shadow .14s ease; }
.sp-tbl tbody tr.sp-row-sel { background:#eff6ff !important; box-shadow: inset 3px 0 0 #3b82f6, inset 0 0 0 1px rgba(59,130,246,.2); }
.sp-tbl tbody tr.sp-row-sel:hover { background:#e3eeff !important; }

/* Бейджи статуса: неон-кольцо (как zbh3d badge-*) */
.sp-badge-active { box-shadow: 0 0 0 1px rgba(22,163,74,.24), 0 1px 4px rgba(22,163,74,.2); }
.sp-badge-closed { box-shadow: 0 0 0 1px rgba(100,116,139,.22); }

/* Мини-кнопки: spring-pop */
.sp-mini { transition: var(--zbh-transition-fast); }
.sp-mini:hover { transform:translateY(-1px); }
.sp-mini:active { transform:scale(.88); }

/* Фокус инпутов — синий глоу как во всём портале */
.sp-search:focus, .sp-move-select:focus {
  border-color:#3b82f6 !important; box-shadow:0 0 0 3px rgba(59,130,246,.15) !important;
}

/* Spring-появление модалок специфаций (структура .modal > .modal-content) */
.modal.open .modal-content { animation: zbhModalIn .26s var(--ease-spring, cubic-bezier(.34,1.56,.64,1)) both; }


/* П6: hover для «мёртвых» кнопок */
.dash-open-btn:hover { filter: brightness(1.08); box-shadow: 0 4px 14px rgba(15,39,68,.16); }
.btn-ghost:hover { background: rgba(15,39,68,.06); border-radius: 6px; }

/* ════════════ Масштаб интерфейса (сайдбар, #sbScale) ════════════ */
.sb-scale {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 6px 10px;
  border-radius: 8px;
  background: rgba(255,255,255,.05);
}
.sb-scale-ico { font-size: 0.75rem; flex-shrink: 0; opacity: .8; }
.sb-scale-track { position: relative; flex: 1; display: flex; align-items: center; height: 18px; }
.sb-scale-ticks {
  position: absolute; left: 7px; right: 7px; top: 50%;
  transform: translateY(-50%); height: 0; pointer-events: none;
}
.sb-scale-ticks i {
  position: absolute; top: 0; width: 3px; height: 3px; border-radius: 50%;
  background: rgba(255,255,255,.3); transform: translate(-50%,-50%);
}
.sb-scale-ticks i.base { width: 5px; height: 5px; background: rgba(255,255,255,.65); }
#sbScaleRange {
  -webkit-appearance: none; appearance: none;
  width: 100%; height: 2px; margin: 0;
  background: rgba(255,255,255,.22); border-radius: 2px;
  outline: none; cursor: pointer; position: relative; z-index: 1;
}
#sbScaleRange::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none;
  width: 13px; height: 13px; border-radius: 50%;
  background: var(--sb-accent);
  border: 2px solid rgba(255,255,255,.85);
  box-shadow: 0 1px 5px rgba(0,0,0,.45);
  cursor: grab; transition: transform .12s;
}
#sbScaleRange::-webkit-slider-thumb:hover { transform: scale(1.18); }
#sbScaleRange:active::-webkit-slider-thumb { cursor: grabbing; }
#sbScaleRange::-moz-range-thumb {
  width: 13px; height: 13px; border-radius: 50%;
  background: var(--sb-accent);
  border: 2px solid rgba(255,255,255,.85);
  box-shadow: 0 1px 5px rgba(0,0,0,.45);
  cursor: grab; transition: transform .12s;
}
#sbScaleRange::-moz-range-track { height: 2px; background: rgba(255,255,255,.22); border-radius: 2px; }
.sb-scale-val {
  font-size: 0.6875rem; font-weight: 700; color: rgba(255,255,255,.78);
  min-width: 35px; text-align: right; font-variant-numeric: tabular-nums;
}
.sidebar.collapsed .sb-scale { display: none; }

/* ════════════ Модал «Новый заказ» — крупная версия + Excel-зона ════════════ */
.modal-box.om-big h3 { font-size: 1.3125rem; margin-bottom: 16px; }
.modal-box.om-big .form-grid { gap: 14px 18px; }
.modal-box.om-big .form-group label { font-size: 0.7812rem; letter-spacing: .4px; }
.modal-box.om-big .form-group input,
.modal-box.om-big .form-group select {
  font-size: 0.9375rem; padding: 11px 13px; border-radius: 9px;
}
.modal-box.om-big #om-lines-list { max-height: 260px; font-size: 0.875rem; }
.om-drop {
  display: flex; align-items: center; gap: 16px;
  border: 2.5px dashed #93c5fd; border-radius: 14px;
  padding: 22px 26px; margin-bottom: 4px;
  background: linear-gradient(135deg, #eff6ff, #f0fdfa);
  cursor: pointer; transition: border-color .15s, background .15s, transform .15s;
}
.om-drop:hover, .om-drop.dragover {
  border-color: #3b82f6; background: linear-gradient(135deg, #dbeafe, #ccfbf1);
  transform: translateY(-1px);
}
.om-drop-ico { font-size: 2.125rem; line-height: 1; filter: drop-shadow(0 2px 3px rgba(59,130,246,.35)); }
.om-drop-txt { font-size: 0.9375rem; color: #1e3a8a; line-height: 1.5; }
.om-drop-txt b { font-size: 1rem; }
.om-drop-txt span { display: block; font-size: 0.7812rem; color: #64748b; margin-top: 2px; }
.om-or {
  display: flex; align-items: center; gap: 12px;
  margin: 14px 0 10px; color: #94a3b8; font-size: 0.75rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: .6px;
}
.om-or::before, .om-or::after { content: ''; flex: 1; height: 1px; background: #e2e8f0; }

/* ── 🧪 Тест образцов на строке плана (обращение №9) ── */
.cal-items thead th.cal-th-actions{width:140px}
.smp-btn{padding:1px 5px;font-size:0.6875rem;border:1px solid #e2e8f0;background:white;border-radius:5px;cursor:pointer;line-height:1.4;margin-left:2px;font-family:inherit;font-weight:700;color:#475569}
.smp-btn.smp-empty{opacity:.3}
.cal-items tr:hover .smp-btn.smp-empty{opacity:1}
.smp-btn.smp-pend{background:#fef3c7;border-color:#f59e0b;color:#92400e}
.smp-btn.smp-ok{background:#dcfce7;border-color:#86efac;color:#166534}
.smp-btn.smp-warn{background:#ffedd5;border-color:#fdba74;color:#9a3412}
.smp-btn.smp-fail{background:#fee2e2;border-color:#fca5a5;color:#991b1b}
#smpModal .modal-box{width:min(660px,94vw);max-height:90vh;overflow:auto}
#woModal .modal-box{overflow:auto}
.smp-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.smp-card{border:1px solid #e2e8f0;border-left:4px solid #cbd5e1;border-radius:10px;padding:10px 12px;margin-bottom:8px;background:#fff}
.smp-card.smp-v-wait{border-left-color:#f59e0b}
.smp-card.smp-v-ok{border-left-color:#22c55e}
.smp-card.smp-v-remarks{border-left-color:#f97316}
.smp-card.smp-v-fail{border-left-color:#ef4444}
.smp-card-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.smp-status{font-size:12px;font-weight:700;white-space:nowrap}
.smp-meta{font-size:11px;color:#94a3b8;margin-top:2px}
.smp-task{font-size:12px;color:#475569;margin-top:6px}
.smp-fbtext{font-size:13px;color:#0f172a;margin-top:6px;white-space:pre-wrap;background:#f8fafc;border-radius:8px;padding:6px 8px}
.smp-card-actions{display:flex;gap:6px;justify-content:flex-end;margin-top:6px}
.smp-m-empty{padding:14px;color:#64748b;font-size:13px;background:#f8fafc;border-radius:10px;margin-bottom:8px}
.smp-add{border-top:1px solid #e2e8f0;margin-top:12px;padding-top:12px}
.smp-add-title{font-weight:700;margin-bottom:8px}
.smp-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:8px}
.smp-chip-btn{border:1px solid #cbd5e1;background:#f8fafc;border-radius:14px;padding:3px 10px;font-size:12px;cursor:pointer;font-family:inherit}
.smp-chip-btn:hover{background:#ecfeff;border-color:#06b6d4}
.smp-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.smp-grid label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:#64748b}
.smp-grid label.full{grid-column:1/-1}
.smp-grid input{padding:7px 10px;border:1px solid #cbd5e1;border-radius:8px;font-family:inherit;font-size:13px}
.smp-verdicts{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 6px}
.smp-vopt{display:inline-flex;align-items:center;gap:5px;border:1px solid #e2e8f0;border-radius:8px;padding:5px 10px;font-size:13px;cursor:pointer;background:#fff}
.smp-vopt:has(input:checked){border-color:#0f766e;background:#f0fdfa;font-weight:700}
.smp-fb-inp{width:100%;box-sizing:border-box;padding:7px 10px;border:1px solid #cbd5e1;border-radius:8px;font-family:inherit;font-size:13px;resize:vertical}
.smp-fb-actions{display:flex;justify-content:flex-end;margin-top:6px}
.wo-smp{border:1px solid #fcd34d;background:#fffbeb;border-radius:10px;padding:10px 12px;margin-top:10px}
.wo-smp-title{font-weight:800;color:#92400e;margin-bottom:4px}
.wo-smp-title span{font-weight:400;font-size:12px;color:#b45309}
.wo-smp-item{background:#fff;border:1px solid #fde68a;border-radius:8px;padding:8px 10px;margin:6px 0}
@media (max-width:600px){.smp-grid{grid-template-columns:1fr}}

/* 📎 Фото/видео к образцу (обращение №10) */
.smp-files{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px}
.smp-file{position:relative;display:inline-flex;align-items:center;gap:4px;border:1px solid #e2e8f0;border-radius:8px;padding:2px 6px;background:#fff;font-size:12px}
.smp-file a{color:#0f766e;text-decoration:none}
.smp-thumb{width:46px;height:46px;object-fit:cover;border-radius:6px;display:block}
.smp-file-x{border:none;background:transparent;color:#94a3b8;cursor:pointer;font-size:12px;padding:0 2px}
.smp-file-x:hover{color:#dc2626}
.smp-up{display:inline-flex;align-items:center;border:1px dashed #cbd5e1;border-radius:8px;padding:5px 10px;font-size:12px;cursor:pointer;color:#475569;background:#f8fafc}
.smp-up:hover{border-color:#06b6d4;color:#0f766e}

/* ── Настройки планирования и нерабочие дни (24.09.2026) ── */
button.cal-cap-wrap{cursor:pointer;font-family:inherit;color:inherit}
.cal-cap-wrap:hover{border-color:#3b82f6;background:#f8fbff}
.cal-cap-wrap label{cursor:pointer}
.cal-day.cal-day-off .cal-day-header{background:repeating-linear-gradient(135deg,#f8fafc 0 8px,#eef2f7 8px 16px)}
.cal-day.cal-day-off .cal-items{opacity:.7}
.cal-day.cal-day-half .cal-day-header{background:#fffbeb}
.day-off-badge{padding:3px 10px;border-radius:12px;font-size:0.75rem;font-weight:700;white-space:nowrap;line-height:1.4}
.day-off-badge.off{background:#fee2e2;color:#991b1b}
.day-off-badge.half{background:#fef3c7;color:#92400e}
.day-off-btn{padding:4px 8px;font-size:0.75rem;border:1px dashed #cbd5e1;background:transparent;border-radius:6px;color:#64748b;cursor:pointer;white-space:nowrap}
.day-off-btn:hover{background:#f1f5f9;color:#1a3a5c;border-color:#94a3b8}
.dov-opt{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid #e2e8f0;border-radius:8px;cursor:pointer;font-size:13px;color:#1a3a5c}
.dov-opt span{color:#64748b;font-size:12px;margin-left:auto}
.dov-opt input{width:16px;height:16px;accent-color:#3b82f6;cursor:pointer;margin:0}
.dov-opt:has(input:checked){border-color:#3b82f6;background:#eff6ff}
.pdv-note{padding:8px 10px;border-radius:8px;font-size:12px;font-weight:600;margin-bottom:8px;line-height:1.5}
.pdv-note.info{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af}
.pdv-note.warn{background:#fef3c7;border:1px solid #fcd34d;color:#92400e}
.pdv-note.danger{background:#fef2f2;border:1px solid #fca5a5;color:#991b1b}

/* ── Статус расписания заказа и черновики (этап 3, 24.09.2026) ── */
.ord-plan-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.ord-plan-chip{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:1px 8px;border-radius:10px;white-space:nowrap;line-height:1.6}
.ord-plan-chip.none{background:#f1f5f9;color:#64748b}
.ord-plan-chip.partial{background:#fef3c7;color:#92400e}
.ord-plan-chip.full{background:#dcfce7;color:#166534}
.ord-plan-chip.late{background:#fee2e2;color:#991b1b}
.ord-plan-chip.done{background:#dbeafe;color:#1e40af}
.ord-plan-chip.draft{background:#fff7ed;color:#c2410c;border:1px solid #fdba74;cursor:pointer}
.ord-plan-chip.draft:hover{background:#ffedd5}
.ord-plan-chip.draft-x{background:transparent;color:#c2410c;border:1px dashed #fdba74;cursor:pointer;padding:1px 6px}
.ord-plan-chip.draft-x:hover{background:#fee2e2;border-color:#fca5a5;color:#991b1b}
.ord-plan-chip.lock{background:#fef2f2;color:#991b1b;border:1px solid #fca5a5;font-weight:700}
.ord-act-btn.asm{background:#fff7ed;border-color:#fdba74;color:#c2410c;font-weight:700;white-space:nowrap}
.ord-act-btn.asm:hover{background:#ffedd5}
.ord-act-btn.asm-off{background:#fef2f2;border-color:#fca5a5}
.ord-act-btn:disabled,.ord-excl-btn:disabled{opacity:.35;cursor:not-allowed}
tr.ord-locked > td:first-child{box-shadow:inset 3px 0 0 #ef4444}
.ord-lines-table input:disabled{background:#f8fafc!important;color:#94a3b8;cursor:not-allowed}
.ord-draft-badge{border-color:#fdba74;color:#c2410c;background:#fff7ed}
.ord-draft-badge.active{background:#fdba74;color:#7c2d12}

/* Заказы: активные / архив / корзина, группы по каналу (13.10) */
.ord-view-bar{padding-bottom:0}
.ord-view-tabs{display:inline-flex;gap:2px;background:#f1f5f9;border-radius:10px;padding:3px}
.ord-view-tab{border:0;background:transparent;padding:6px 14px;border-radius:8px;font-size:13px;font-weight:600;color:#475569;cursor:pointer}
.ord-view-tab b{display:inline-block;min-width:18px;margin-left:4px;padding:0 6px;border-radius:9px;background:#e2e8f0;color:#334155;font-size:11px}
.ord-view-tab.active{background:#fff;color:#0f172a;box-shadow:0 1px 3px rgba(15,23,42,.12)}
.ord-view-tab.active b{background:#dbeafe;color:#1e40af}
.ord-group-btn.active{background:#eff6ff;border-color:#93c5fd;color:#1e40af}
.ord-group-row td{background:#f8fafc;border-top:2px solid #e2e8f0;padding:8px 12px;cursor:pointer;user-select:none}
.ord-group-row:hover td{background:#f1f5f9}
.ord-group-arrow{display:inline-block;width:16px;color:#94a3b8;font-size:11px}
.ord-group-meta{margin-left:8px;font-size:12px;color:#64748b;font-weight:600}
tr.ord-archived td{opacity:.8}
.ord-1c-tag{font-size:10px;font-weight:800;background:#fef3c7;color:#b45309;border:1px solid #fcd34d;border-radius:5px;padding:1px 5px;vertical-align:middle}
/* Комплекты в календаре: строки компонентов (стили потерялись при переносе 24.05 — восстановлено 26.10) */
.kit-expand-btn{background:none;border:none;cursor:pointer;font-size:10px;color:#3b82f6;padding:0 4px 0 0;line-height:1;transition:color .1s;vertical-align:middle}
.kit-expand-btn:hover{color:#1d4ed8}
.kit-expand-spc{display:inline-block;width:14px}
.kit-child-row{background:#f0f9ff !important}
.kit-child-row.hidden{display:none}
.kit-child-row td{border-top:none !important;padding-top:2px !important;padding-bottom:2px !important}
.kit-child-indent{color:#94a3b8;margin-right:4px;font-size:11px;vertical-align:middle}
.kit-child-art{font-size:11px !important;background:#e0f2fe !important;color:#0369a1 !important;border-radius:3px}
/* Линия «по плану» (из Google-таблицы, не в работе) и баннер «Сейчас в производстве» (26.10) */
.line-btn.planned{background:#e0e7ff;border-color:#93a5c8;color:#1a3a5c}
.prod-line-card.planned{border-style:dashed;opacity:.8}
.prod-lc-tag{font-size:0.625rem;font-weight:700;padding:1px 6px;border-radius:8px;background:#334155;color:#cbd5e1;margin-left:6px;text-transform:none;letter-spacing:0}
.prod-banner-toggle{margin-left:auto;background:none;border:1px solid #334155;color:#93c5fd;border-radius:6px;padding:3px 10px;font-size:0.75rem;cursor:pointer}
.prod-banner-toggle:hover{background:#1e293b}
.prod-banner-toggle + .tv-btn{margin-left:0}
.prod-banner.collapsed{padding-bottom:12px}
.prod-banner.collapsed .prod-banner-hdr{margin-bottom:0}
.prod-banner.collapsed .prod-lines-row{display:none}
/* 26.10: табло закреплено под панелью календаря (раньше уезжало вместе с началом месяца);
   --cal-tb-h = высота панели, её ставит calendar.js (панель переносится на узком экране) */
#tab-calendar .prod-banner{position:sticky;top:var(--cal-tb-h,58px);z-index:297}
/* 26.10: табло календаря — одна тонкая строка (крупное — «📺 На экран») */
#tab-calendar .prod-banner{display:flex;align-items:center;gap:12px;padding:5px 16px;border-bottom-width:2px}
#tab-calendar .prod-banner[style*="display: none"],#tab-calendar .prod-banner[style*="display:none"]{display:none}
#tab-calendar .prod-banner-hdr{margin:0;gap:8px;flex-shrink:0;order:2}
#tab-calendar .prod-banner-title{display:none}
#tab-calendar .prod-banner-toggle,#tab-calendar .prod-banner .tv-btn{padding:2px 8px;font-size:0.6875rem;margin-left:0}
#tab-calendar .prod-lines-row{flex:1;min-width:0;gap:8px;order:1}
#tab-calendar .prod-line-card{display:flex;align-items:center;gap:8px;padding:4px 10px;border-radius:7px;min-width:0;height:30px;box-sizing:border-box}
#tab-calendar .prod-line-card .prod-lc-num{margin:0;font-size:0.6875rem;flex-shrink:0;display:flex;align-items:center;gap:4px}
#tab-calendar .prod-lc-tag{font-size:0.5625rem;background:#334155;color:#cbd5e1;border-radius:4px;padding:0 4px;font-weight:700}
#tab-calendar .prod-lc-free{font-size:0.75rem;color:#64748b}
#tab-calendar .prod-line-card .prod-lc-art{margin:0;font-size:0.8125rem;flex-shrink:0}
#tab-calendar .prod-line-card .prod-lc-name{margin:0;flex:1;min-width:0;font-size:0.6875rem}
#tab-calendar .prod-line-card .prod-lc-qty{font-size:0.75rem;color:#94a3b8;white-space:nowrap;flex-shrink:0}
#tab-calendar .prod-line-card .prod-lc-qty b{color:#4ade80;font-size:0.8125rem}
#tab-calendar .prod-line-card .prod-lc-bar{display:block;width:44px;height:4px;margin:0;flex-shrink:0}
#tab-calendar .prod-line-card .prod-lc-bar-fill{display:block}
#tab-calendar .prod-banner.collapsed{padding-bottom:5px}
/* Кнопка ↗ «Открыть заказ» в строке плана (26.10) */
.ord-jump-btn{background:none;border:1px solid #cbd5e1;border-radius:4px;color:#2563eb;cursor:pointer;font-size:11px;line-height:1;padding:1px 4px;margin-left:4px;vertical-align:middle}
.ord-jump-btn:hover{background:#eff6ff;border-color:#2563eb}
.ord-jump-btn.dead{color:#94a3b8;border-color:#e2e8f0;cursor:help}
.ord-jump-btn.dead:hover{background:#f8fafc;border-color:#cbd5e1}
/* Своя смена в календаре (26.10): весь план виден, свои дни подсвечены */
.cal-day.my-shift-day .cal-day-header{box-shadow:inset 4px 0 0 #7c3aed}
.my-shift-chip{background:#f5f3ff;color:#6d28d9;border:1px solid #ddd6fe;border-radius:12px;padding:2px 10px;font-size:.8em;margin-left:6px;cursor:pointer;font-weight:600}
.my-shift-chip.on{background:#7c3aed;color:#fff;border-color:#7c3aed}
/* Артикулы в календаре — крупнее и чёрным (26.10, просьба Дмитрия) */
.cal-items .art-code{font-size:0.8125rem;color:#0f172a}
/* Обращение №18 (26.10): сетка таблицы плана как в Google-таблице — тонкая, тёмно-серая */
.cal-items table{border-collapse:collapse}
.cal-items table th,.cal-items table td{border:1px solid #475569}
.cal-items .work-cell,.cal-items .done-cell{text-align:center}
.cal-items .work-check,.cal-items .done-cell .done-check{width:18px;height:18px;cursor:pointer;accent-color:#1a3a5c}
.cal-items .work-check:disabled{cursor:not-allowed;opacity:.4}
/* ТВ: задания сегодня со статусами */
.tv-day{display:flex;flex-wrap:wrap;gap:8px;padding:0 32px 14px;max-height:24vh;overflow:hidden;flex-shrink:0}
.tv-day-item{display:flex;align-items:center;gap:8px;background:#0b1626;border:1px solid #1e3a5f;border-radius:8px;padding:6px 12px;font-size:15px;color:#cbd5e1;max-width:32%}
.tv-day-item.work{border-color:#2563eb;background:#0f2347;color:#fff}
.tv-day-item.done{opacity:.55}
.tv-di-st{font-size:16px}.tv-di-ln{font-weight:800;color:#93c5fd}.tv-di-art{font-family:monospace;font-weight:700;color:#fbbf24}
.tv-di-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px}
.tv-di-qty{font-weight:800;font-variant-numeric:tabular-nums}
/* Ровные строки плана (26.10): артикул, группа и ▶ — в одну строку и по одной линии; заказ — в одну строку */
.cal-items td.art-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-items .kit-expand-btn,.cal-items .kit-expand-spc{display:inline-block;width:14px;padding:0;margin:0;text-align:left;vertical-align:middle}
.cal-items td.ord-ref-cell{white-space:nowrap}
.cal-items .order-ref-link{display:inline-block;max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
.cal-items td.dev-cell,.cal-items td.ost-cell,.cal-items td.qty-cell,.cal-items td.actual-cell,.cal-items td.cal-action-cell{white-space:nowrap}
