.board-view-toggle{
  display:inline-flex;
  gap:4px;
  padding:4px;
  flex:0 0 auto;
  align-items:center;
  border:1px solid var(--vh-line);
  border-radius:var(--vh-radius-sm,10px);
  background:var(--vh-surface);
}
.board-view-toggle .btn{
  min-height:36px;
  padding:8px 14px;
  font-weight:700;
  box-shadow:none!important;
  background:transparent!important;
  color:var(--vh-muted)!important;
  border:1px solid transparent!important;
}
.board-view-toggle .btn:hover{
  color:var(--vh-text)!important;
  border-color:rgba(20,121,170,.35)!important;
  filter:none!important;
}
.board-view-toggle .btn.active{
  background:color-mix(in srgb,var(--brand-orange) 12%,var(--vh-surface))!important;
  color:var(--vh-text)!important;
  border-color:rgba(247,148,29,.45)!important;
  box-shadow:inset 0 -2px 0 var(--brand-orange)!important;
}
.project-toolbar-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end}
.board-list-wrap{margin-top:4px}
.board-list-wrap tr{cursor:pointer}
.board-list-wrap tr:hover{background:rgba(53,243,255,.06)}

#projects .project-kanban[hidden],
#projects .board-list-wrap[hidden],
#projects .project-drag-hint[hidden],
#plan .project-kanban[hidden],
#plan .board-list-wrap[hidden],
#plan .project-drag-hint[hidden],
.is-board-hidden{
  display:none!important;
}

#projects .project-filter-bar{
  display:grid;
  grid-template-columns:auto minmax(180px,1.4fr) 150px 150px minmax(160px,1fr) auto;
  gap:8px;
  align-items:center;
}
#plan .project-filter-bar{
  display:grid;
  grid-template-columns:auto minmax(140px,1.2fr) 128px 128px 88px 132px auto;
  gap:8px;
  align-items:center;
}

#plan .project-filter-bar,
#plan .kanban-column,
#plan .kanban-card{
  background:var(--vh-surface);
  color:var(--vh-text,#fff);
  border-color:var(--vh-line,rgba(255,255,255,.12));
  box-shadow:var(--vh-shadow,none);
}
#plan .project-filter-bar{
  padding:12px;
  border:1px solid var(--vh-line,rgba(255,255,255,.12));
  border-radius:14px;
}
#plan .project-filter-bar input,
#plan .project-filter-bar select{
  background:var(--vh-input);
  color:var(--vh-text,#fff);
  border-color:var(--vh-line,rgba(255,255,255,.12));
  min-height:40px;
}
#plan .kanban-card{background:var(--vh-surface-2,#152d42)}
#plan .kanban-card:hover{border-color:rgba(255,189,54,.55)}
#plan .kanban-task{
  background:var(--vh-surface);
  border:1px solid var(--vh-line,rgba(255,255,255,.12));
}
.task-priority-urgent{color:#ff7890;font-weight:800}
.task-priority-wait{color:#ffbd36;font-weight:700}

#dashboard .dash-kpi-bar{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:10px;
  margin-bottom:16px;
}
#dashboard .dash-kpi{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:4px;
  margin:0;
  padding:12px 14px;
  text-align:left;
  background:var(--vh-surface)!important;
  color:var(--vh-text)!important;
  border:1px solid var(--vh-line)!important;
  border-radius:var(--vh-radius,14px)!important;
  box-shadow:var(--vh-shadow)!important;
  min-height:0;
}
#dashboard .dash-kpi small{
  color:var(--vh-muted);
  font-size:11px;
  font-weight:700;
  letter-spacing:.04em;
  text-transform:uppercase;
}
#dashboard .dash-kpi b{
  font-size:20px;
  line-height:1.15;
  letter-spacing:-.03em;
}
#dashboard .dash-kpi .muted{font-size:12px}
#dashboard .dash-kpi-alert.has-alert{border-color:rgba(239,82,111,.45)!important}
#dashboard .dash-kpi-alert.has-alert b{color:#e2556d}
#dashboard .dash-grid{
  display:grid;
  grid-template-columns:repeat(12,minmax(0,1fr));
  gap:16px;
  align-items:stretch;
}
#dashboard .dash-panel,
#dashboard .chart-card{
  display:flex;
  flex-direction:column;
  min-height:0;
  overflow:hidden;
}
#dashboard .dash-panel{
  padding:14px 16px;
  height:428px;
}
#dashboard .dash-panel .card-head,
#dashboard .chart-card .card-head{
  flex:0 0 auto;
  margin-bottom:10px;
}
#dashboard .dash-panel .card-head h3{font-size:12px}
#dashboard .dash-panel .card-head .btn{min-height:32px;padding:6px 10px;font-size:12px}
#dashboard .dash-feed,
#dashboard .dash-panel-scroll{
  flex:1 1 auto;
  min-height:0;
  overflow-x:hidden;
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-width:thin;
  scrollbar-color:rgba(255,255,255,.22) transparent;
}
#dashboard .dash-panel-sticky{flex:0 0 auto}
#dashboard .dash-feed::-webkit-scrollbar,
#dashboard .dash-panel-scroll::-webkit-scrollbar{width:8px}
#dashboard .dash-feed::-webkit-scrollbar-thumb,
#dashboard .dash-panel-scroll::-webkit-scrollbar-thumb{
  background:rgba(255,255,255,.22);
  border-radius:99px;
}
#dashboard .dash-feed{display:grid;align-content:start;gap:0}
#dashboard .dash-line{
  display:grid;
  grid-template-columns:8px minmax(0,1fr) auto;
  gap:10px;
  align-items:center;
  padding:8px 2px;
  border-bottom:1px solid var(--vh-line);
  cursor:pointer;
}
#dashboard .dash-line:last-child{border-bottom:0}
#dashboard .dash-line:hover{background:var(--vh-surface-2)}
#dashboard .dash-dot{width:8px;height:8px;border-radius:50%;background:#8fa3b3}
#dashboard .dash-dot.overdue{background:#e2556d}
#dashboard .dash-dot.today{background:#f7941d}
#dashboard .dash-dot.week{background:#1479aa}
#dashboard .dash-line-main{min-width:0}
#dashboard .dash-line-main b{
  display:block;font-size:13px;font-weight:750;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
#dashboard .dash-line-main small{
  display:block;color:var(--vh-muted);font-size:11px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
#dashboard .dash-line-meta{display:flex;align-items:center;gap:8px;flex-shrink:0}
#dashboard .dash-due{font-size:11px;font-weight:700;color:var(--vh-muted);white-space:nowrap}
#dashboard .dash-due.overdue{color:#e2556d}
#dashboard .dash-due.today{color:#f7941d}
#dashboard .dash-pct{font-size:12px}
#dashboard .dash-progress{height:4px;border-radius:99px;background:var(--vh-surface-2);margin-top:6px;overflow:hidden}
#dashboard .dash-progress span{
  display:block;height:100%;border-radius:inherit;
  background:linear-gradient(90deg,var(--brand-blue),var(--brand-orange));
}
#dashboard .dash-empty{padding:16px 4px;color:var(--vh-muted);font-size:13px}
#dashboard .dash-ops{display:grid;gap:6px}
#dashboard .dash-op{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;
  padding:6px 0;border-bottom:1px solid var(--vh-line);cursor:pointer;
}
#dashboard .dash-op:last-child{border-bottom:0}
#dashboard .dash-op-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
#dashboard .dash-op-type{font-size:10px;font-weight:800;text-transform:uppercase}
#dashboard .dash-op-type.in,#dashboard .dash-op b.in{color:#2a9a5b}
#dashboard .dash-op-type.out,#dashboard .dash-op b.out{color:#e2556d}
#dashboard .dash-panel-scroll .dash-section-label:first-child{margin-top:0}
#dashboard .dash-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}
#dashboard .dash-fin-grid{grid-template-columns:repeat(3,1fr);margin-bottom:8px}
#dashboard .dash-fin-month{grid-template-columns:1fr 1fr;margin-bottom:8px}
#dashboard .dash-facts div{padding:8px 10px;border:1px solid var(--vh-line);border-radius:10px;background:var(--vh-surface-2)}
#dashboard .dash-facts small{display:block;color:var(--vh-muted);font-size:10px;text-transform:uppercase;font-weight:700}
#dashboard .dash-facts b{font-size:14px}
#dashboard .dash-mini-chart{height:88px;margin:4px 0 10px}
#dashboard .dash-mini-chart.is-empty{display:none}
#dashboard .dash-mini-chart{height:88px;margin:4px 0 10px}
#dashboard .dash-mini-chart.is-empty{display:none}
#dashboard .dash-bars{display:grid;gap:8px}
#dashboard .dash-section-label{margin:12px 0 8px;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--vh-muted)}
#dashboard .dash-bar span{display:block;font-size:11px;color:var(--vh-muted);margin-bottom:4px}
#dashboard .dash-bar i{display:block;height:6px;border-radius:99px;background:var(--vh-surface-2);overflow:hidden}
#dashboard .dash-bar em{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--brand-orange),var(--brand-blue))}
#dashboard .dash-bar-warn em{background:rgba(226,85,109,.55)}
#dashboard .dash-bar[onclick]{cursor:pointer}
#dashboard .dash-note{margin-top:12px;font-size:12px}
#dashboard .dash-analytics{margin-top:18px}
#dashboard .dash-analytics .toolbar{margin-bottom:10px}
#dashboard .dash-analytics h2{color:var(--vh-text);font-size:18px;font-weight:800}
#dashboard .chart-grid.dash-grid{align-items:stretch}
#dashboard .chart-card{
  padding:14px 16px;
  height:300px;
}
#dashboard .dash-chart-filter{
  min-height:32px;
  max-width:168px;
  padding:4px 10px;
  font-size:12px;
  font-weight:700;
  color:var(--vh-text);
  background:var(--vh-input);
  border:1px solid var(--vh-line);
  border-radius:999px;
}
#dashboard .chart-card canvas{
  flex:1 1 auto;
  min-height:168px;
  width:100%;
  height:168px;
}

@media(max-width:1100px){
  #projects .project-filter-bar,
  #plan .project-filter-bar{
    grid-template-columns:1fr 1fr;
  }
  .board-view-toggle{grid-column:1/-1}
  #dashboard .dash-kpi-bar{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:1050px){
  #dashboard .dash-panel,
  #dashboard .chart-card{height:auto;max-height:none}
  #dashboard .dash-feed,
  #dashboard .dash-panel-scroll{max-height:372px}
  #dashboard .chart-card canvas{height:168px;flex:none}
}
@media(max-width:650px){
  #projects .project-filter-bar,
  #plan .project-filter-bar{grid-template-columns:1fr}
  .board-view-toggle{width:100%}
  .board-view-toggle .btn{flex:1}
  #dashboard .dash-kpi-bar{grid-template-columns:repeat(2,minmax(0,1fr))}
}

body.vh-login-open{
  overflow:hidden!important;
  height:100%;
  max-height:100dvh;
}
body.vh-login-open .app,
body.vh-login-open #vhSystemStatus{
  display:none!important;
}

.login-screen.hidden{
  display:none!important;
  pointer-events:none!important;
}
.login-screen{
  overflow:hidden!important;
  width:100vw;
  height:100dvh;
  inset:0;
  padding:24px;
  box-sizing:border-box;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  gap:18px;
  pointer-events:auto;
  background:
    radial-gradient(ellipse at 50% 42%, rgba(20,121,170,0.28) 0%, transparent 55%),
    radial-gradient(ellipse at 50% 100%, rgba(247,148,29,0.14) 0%, transparent 60%),
    linear-gradient(160deg, #050b16 0%, #07111f 48%, #04080f 100%)!important;
  position:fixed!important;
  z-index:99999;
}

/* KPI-полоса (только >1800px) — по умолчанию скрыта */
.login-kpi-strip{
  display:none;
  position:relative;
  z-index:2;
  width:100%;
  max-width:1750px;
  gap:14px;
  padding:12px 18px;
  border-radius:16px;
  background:rgba(8,18,34,0.66);
  border:1px solid rgba(53,243,255,0.20);
  box-shadow:0 14px 40px rgba(0,0,0,0.5);
  align-items:center;
  justify-content:space-around;
  box-sizing:border-box;
  pointer-events:none;
}
.lks-item{display:flex;align-items:center;gap:9px}
.lks-ico{width:32px;height:32px;flex:0 0 auto;display:grid;place-items:center;border-radius:9px;background:rgba(53,243,255,0.14);border:1px solid rgba(53,243,255,0.25);font-size:15px}
.lks-item small{display:block;font-size:10px;color:#8fa3b3}
.lks-item b{display:block;font-size:15px;color:#fff;font-weight:800}
.lks-item.lks-live{margin-left:auto}
.lks-live small{color:#4ade80;letter-spacing:0.1em;font-weight:800}
.lks-dot{width:8px;height:8px;border-radius:50%;background:#4ade80;box-shadow:0 0 8px #4ade80;animation:liveBlink 1.3s ease-in-out infinite}

/* Бегущая дорожка возможностей (только <1080px) — по умолчанию скрыта */
.login-ticker{
  display:none;
  position:relative;
  z-index:2;
  width:100%;
  max-width:520px;
  overflow:hidden;
  border-radius:12px;
  background:rgba(8,18,34,0.66);
  border:1px solid rgba(53,243,255,0.20);
  box-shadow:0 10px 30px rgba(0,0,0,0.45);
  padding:10px 0;
  pointer-events:none;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
}
.lt-track{
  display:inline-flex;
  white-space:nowrap;
  gap:22px;
  padding-left:22px;
  animation:none;
}
.lt-track span{
  font-size:12.5px;
  font-weight:700;
  color:#c3d0db;
  display:inline-flex;
  align-items:center;
}
.lt-track span:nth-child(odd){color:#35f3ff}
@keyframes ltScroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* Фоновая сетка + свечения (без blur — не вешает видеокарту) */
.login-bg-grid{
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  background-size:42px 42px;
  background-image:
    linear-gradient(to right, rgba(53,243,255,0.05) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(53,243,255,0.05) 1px, transparent 1px);
  -webkit-mask-image:radial-gradient(circle at 50% 50%, #000 0%, transparent 82%);
  mask-image:radial-gradient(circle at 50% 50%, #000 0%, transparent 82%);
}
.login-bg-glow{
  position:absolute;
  z-index:0;
  pointer-events:none;
  border-radius:50%;
}
.login-bg-glow-cyan{
  top:-12%; left:-8%;
  width:50vw; height:50vh;
  background:radial-gradient(circle, rgba(20,121,170,0.30) 0%, transparent 65%);
}
.login-bg-glow-amber{
  bottom:-14%; right:-8%;
  width:50vw; height:50vh;
  background:radial-gradient(circle, rgba(247,148,29,0.22) 0%, transparent 65%);
}

/* 3-колоночный макет: Цепь | Вход | Голограмма */
.login-layout{
  position:relative;
  z-index:2;
  display:grid;
  grid-template-columns:minmax(280px, 1fr) minmax(380px, 440px) minmax(280px, 1fr);
  gap:26px;
  align-items:center;
  width:100%;
  max-width:1500px;
  box-sizing:border-box;
}

/* Боковые панели */
.login-side{
  position:relative;
  background:rgba(8,18,34,0.72);
  border:1px solid rgba(53,243,255,0.20);
  border-radius:20px;
  box-shadow:0 22px 54px rgba(0,0,0,0.55), inset 0 1px 0 rgba(255,255,255,0.07);
  padding:18px 16px;
  height:calc(100dvh - 56px);
  max-height:880px;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  align-self:center;
  pointer-events:none;
}
.side-head{
  display:flex;
  align-items:center;
  gap:11px;
  padding:0 4px 14px;
  border-bottom:1px solid rgba(255,255,255,0.08);
  margin-bottom:14px;
  flex:0 0 auto;
}
.side-head-ico{
  width:38px;height:38px;
  flex:0 0 auto;
  display:grid;place-items:center;
  border-radius:11px;
  background:linear-gradient(135deg,rgba(53,243,255,0.20),rgba(247,148,29,0.16));
  border:1px solid rgba(53,243,255,0.30);
  font-size:18px;
  box-shadow:0 0 16px rgba(53,243,255,0.20);
}
.side-head b{display:block;font-size:14px;color:#fff;font-weight:800}
.side-head small{display:block;font-size:11px;color:#8fa3b3;margin-top:1px}

/* Центр — обёртка карточки */
.login-card-wrap{
  position:relative;
  z-index:20;
  display:grid;
  place-items:center;
  pointer-events:auto;
}

/* ============================================================
   ЛЕВО — «Цепь расчётов»: реальный workflow VoltHome
   ============================================================ */
.login-side-chain{
  display:flex;
  flex-direction:column;
}
.chain-flow{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:0;
  flex:1;
  min-height:0;
  overflow-y:auto;
  scrollbar-width:thin;
  scrollbar-color:rgba(53,243,255,0.3) transparent;
  padding-right:4px;
  position:relative;
  z-index:1;
}
/* LIVE-индикатор в шапке */
.side-live{
  margin-left:auto;
  font-size:9px;
  font-weight:900;
  font-style:normal;
  letter-spacing:0.12em;
  color:#4ade80;
  padding:3px 7px;
  border-radius:99px;
  background:rgba(74,222,128,0.14);
  border:1px solid rgba(74,222,128,0.35);
  position:relative;
}
.side-live::before{
  content:"";
  display:inline-block;
  width:6px;height:6px;
  border-radius:50%;
  background:#4ade80;
  box-shadow:0 0 8px #4ade80;
  margin-right:5px;
  vertical-align:middle;
  animation:liveBlink 1.3s ease-in-out infinite;
}
@keyframes liveBlink{0%,100%{opacity:1}50%{opacity:0.25}}

.chain-node{
  display:flex;
  align-items:center;
  gap:11px;
  padding:11px 12px;
  border:1px solid rgba(53,243,255,0.18);
  border-radius:13px;
  background:rgba(9,20,36,0.78);
  position:relative;
  z-index:1;
  transition:all .22s ease;
}
.chain-node:hover{
  border-color:rgba(53,243,255,0.55);
  box-shadow:0 12px 32px rgba(0,0,0,0.55), 0 0 22px rgba(53,243,255,0.22);
  transform:translateX(4px) scale(1.015);
}
.chain-ico{
  width:34px;height:34px;
  flex:0 0 auto;
  display:grid;place-items:center;
  border-radius:10px;
  background:rgba(53,243,255,0.16);
  color:#35f3ff;
  font-size:16px;
  border:1px solid rgba(53,243,255,0.25);
}
.chain-body{flex:1;min-width:0}
.chain-body b{display:block;font-size:12.5px;color:#fff;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chain-body small{display:block;font-size:10.5px;color:#8fa3b3;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chain-val{
  flex:0 0 auto;
  font-size:11px;
  font-weight:800;
  color:#35f3ff;
  padding:4px 8px;
  border-radius:8px;
  background:rgba(53,243,255,0.12);
  border:1px solid rgba(53,243,255,0.25);
  white-space:nowrap;
}
/* Тонировка узлов по этапам */
.chain-node[data-tone="lead"] .chain-ico{background:rgba(53,243,255,0.16);color:#35f3ff}
.chain-node[data-tone="object"] .chain-ico{background:rgba(247,148,29,0.16);color:#f7941d}
.chain-node[data-tone="estimate"] .chain-ico{background:rgba(166,92,255,0.16);color:#a65cff}
.chain-node[data-tone="shield"] .chain-ico{background:rgba(255,84,116,0.16);color:#ff5474}
.chain-node[data-tone="mount"] .chain-ico{background:rgba(74,222,128,0.16);color:#4ade80}
.chain-node[data-tone="smart"] .chain-ico{background:rgba(53,243,255,0.16);color:#35f3ff}
.chain-node[data-tone="pay"] .chain-ico{background:rgba(247,148,29,0.16);color:#f7941d}
.chain-node[data-tone="analytics"] .chain-ico{background:rgba(74,222,128,0.16);color:#4ade80}
/* Итоговый узел — прибыль */
.chain-node.chain-node-result{
  border-color:rgba(74,222,128,0.45);
  background:linear-gradient(135deg,rgba(74,222,128,0.14),rgba(53,243,255,0.08));
  box-shadow:0 0 22px rgba(74,222,128,0.20);
}
.chain-node.chain-node-result .chain-val{
  color:#4ade80;
  background:rgba(74,222,128,0.16);
  border-color:rgba(74,222,128,0.35);
}
/* Шина-соединитель между узлами — непрерывный поток (читается как последовательность) */
.chain-bus{
  width:2px;
  height:18px;
  margin:0 auto;
  background:linear-gradient(180deg,
    rgba(53,243,255,0.15) 0%,
    rgba(53,243,255,0.85) 45%,
    rgba(247,148,29,0.85) 70%,
    rgba(53,243,255,0.15) 100%);
  background-size:100% 220%;
  box-shadow:0 0 10px rgba(53,243,255,0.45);
  border-radius:2px;
  position:relative;
  animation:chainFlow 1.5s linear infinite;
  animation:none;
}
@keyframes chainFlow{from{background-position:0 -220%}to{background-position:0 0%}}
/* Направление потока — маленькая стрелка-шеврон вниз */
.chain-bus::after{
  content:"";
  position:absolute;
  left:-3px;
  bottom:-1px;
  width:8px;height:8px;
  border-right:2px solid rgba(247,148,29,0.85);
  border-bottom:2px solid rgba(247,148,29,0.85);
  transform:rotate(45deg);
  filter:drop-shadow(0 0 4px rgba(247,148,29,0.6));
}
.chain-bus-final{background:linear-gradient(180deg,rgba(53,243,255,0.2),rgba(74,222,128,0.9))}
.chain-bus-final::after{border-color:rgba(74,222,128,0.9);filter:drop-shadow(0 0 4px rgba(74,222,128,0.6))}
/* Подвал цепи — мини-KPI */
.chain-foot{
  flex:0 0 auto;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:7px;
  margin-top:12px;
  padding-top:12px;
  border-top:1px solid rgba(53,243,255,0.18);
  position:relative;
  z-index:1;
}
.chain-foot-kpi{
  background:rgba(9,20,36,0.7);
  border:1px solid rgba(53,243,255,0.16);
  border-radius:10px;
  padding:7px 8px;
  text-align:center;
}
.chain-foot-kpi small{display:block;font-size:8.5px;color:#8fa3b3;line-height:1.25;margin-bottom:3px}
.chain-foot-kpi b{display:block;font-size:12px;color:#35f3ff;font-weight:800}
.chain-foot-kpi:nth-child(2) b{color:#f7941d}
.chain-foot-kpi:nth-child(3) b{color:#4ade80}

/* ============================================================
   ПРАВО — «Голограмма»: командный центр (модули в реальном времени)
   ============================================================ */
.login-side-holo{
  display:flex;
  flex-direction:column;
}
.holo-stage{
  position:relative;
  flex:1;
  min-height:0;
  display:flex;
  flex-direction:column;
  gap:12px;
  overflow-y:auto;
  scrollbar-width:thin;
  scrollbar-color:rgba(53,243,255,0.3) transparent;
  padding-right:4px;
}
.holo-panel{
  position:relative;
  background:rgba(9,20,36,0.78);
  border:1px solid rgba(53,243,255,0.28);
  border-radius:14px;
  box-shadow:0 14px 34px rgba(0,0,0,0.5), 0 0 18px rgba(53,243,255,0.10);
  padding:12px 13px;
  margin-top:0;
}
.holo-panel:first-of-type{margin-top:0}
.holo-panel:hover{
  border-color:rgba(53,243,255,0.5);
  box-shadow:0 18px 40px rgba(0,0,0,0.55), 0 0 24px rgba(53,243,255,0.18);
}
.holo-panel-bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding-bottom:9px;
  margin-bottom:10px;
  border-bottom:1px solid rgba(255,255,255,0.08);
}
.holo-panel-bar span{font-size:12px;font-weight:800;color:#fff}
.holo-panel-bar em{
  font-size:9.5px;
  font-weight:800;
  font-style:normal;
  padding:3px 7px;
  border-radius:99px;
  background:rgba(74,222,128,0.16);
  color:#4ade80;
  border:1px solid rgba(74,222,128,0.3);
}
.holo-panel-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  margin-bottom:10px;
}
.holo-kpi{
  background:rgba(255,255,255,0.04);
  border:1px solid rgba(255,255,255,0.08);
  border-radius:10px;
  padding:7px 9px;
}
.holo-kpi small{display:block;font-size:9px;text-transform:uppercase;font-weight:700;color:#8fa3b3}
.holo-kpi b{display:block;font-size:14px;color:#fff;margin-top:2px}
.holo-bars{
  display:flex;
  align-items:flex-end;
  gap:5px;
  height:42px;
}
.holo-bars i{
  flex:1;
  background:linear-gradient(180deg,#35f3ff,#1479aa);
  border-radius:3px 3px 0 0;
  box-shadow:0 0 8px rgba(53,243,255,0.3);
  transform-origin:bottom;
  transition:height .9s cubic-bezier(.4,0,.2,1);
}
.holo-line{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:8px;
  padding:5px 0;
  border-bottom:1px solid rgba(255,255,255,0.05);
  font-size:11px;
}
.holo-line b{color:#e8f5ee;font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.holo-line i{color:#35f3ff;font-style:normal;font-weight:800;white-space:nowrap}
.holo-total{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding-top:8px;
  margin-top:6px;
  border-top:1px dashed rgba(255,255,255,0.12);
  font-size:12px;
  font-weight:800;
  color:#fff;
}
.holo-total b{color:#f7941d;font-size:14px}
.holo-din{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:4px;
  background:#050912;
  border:1px solid rgba(255,255,255,0.1);
  border-radius:8px;
  padding:6px;
  box-shadow:inset 0 0 10px rgba(0,0,0,0.8);
}
.holo-din i{
  display:grid;
  place-items:center;
  height:30px;
  background:linear-gradient(180deg,#152438,#0a1320);
  border:1px solid rgba(53,243,255,0.25);
  border-radius:5px;
  font-size:9px;
  font-style:normal;
  font-weight:800;
  color:#fff;
}
.holo-din .m-main{border-color:#ff5474;box-shadow:0 0 8px rgba(255,84,116,0.2)}
.holo-din .m-uzo{border-color:#ffbd36;box-shadow:0 0 8px rgba(255,189,54,0.2)}
.holo-din .m-smart{border-color:#35f3ff;box-shadow:0 0 8px rgba(53,243,255,0.25);color:#35f3ff}
.holo-meta{margin-top:8px;text-align:center}
.holo-meta small{font-size:10px;color:#8fa3b3}
.holo-proj{display:flex;flex-direction:column;gap:4px;margin-top:4px}
.holo-proj b{font-size:11px;color:#fff;font-weight:700}
.holo-prog{
  display:block;
  height:5px;
  background:#091424;
  border-radius:99px;
  overflow:hidden;
  margin-top:4px;
}
.holo-prog i{
  display:block;
  height:100%;
  background:linear-gradient(90deg,#1479aa,#f7941d);
  border-radius:inherit;
  box-shadow:0 0 8px rgba(53,243,255,0.3);
  position:relative;
  overflow:hidden;
  transition:width .8s cubic-bezier(.4,0,.2,1);
}

/* --- Доп. детали голограммы --- */
.holo-proj{flex-direction:row;align-items:center;gap:8px;justify-content:space-between}
.holo-proj b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.holo-proj em{font-size:10px;font-style:normal;color:#35f3ff;font-weight:800;flex:0 0 auto}
.holo-proj .holo-prog{flex:1;max-width:90px}

.holo-bars-x{display:flex;justify-content:space-between;margin-top:5px}
.holo-bars-x span{font-size:8.5px;color:#6f8493}

.holo-supplier{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:10px;color:#8fa3b3}
.hs-dot{width:7px;height:7px;border-radius:50%;background:#4ade80;box-shadow:0 0 8px #4ade80;animation:liveBlink 1.3s ease-in-out infinite;flex:0 0 auto}

.holo-phase{display:flex;flex-direction:column;gap:5px;margin-top:8px}
.hp{display:flex;align-items:center;gap:7px}
.hp small{font-size:9px;color:#8fa3b3;width:18px;flex:0 0 auto}
.hp-bar{flex:1;height:5px;background:#091424;border-radius:99px;overflow:hidden}
.hp-bar i{display:block;height:100%;background:linear-gradient(90deg,#35f3ff,#f7941d);border-radius:inherit;transition:width .8s cubic-bezier(.4,0,.2,1)}
.hp b{font-size:9.5px;color:#35f3ff;font-weight:700;flex:0 0 auto;width:46px;text-align:right}

.holo-fin{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}
.hf{background:rgba(53,243,255,0.07);border:1px solid rgba(53,243,255,0.18);border-radius:9px;padding:7px 9px}
.hf small{display:block;font-size:9px;color:#8fa3b3}
.hf b{display:block;font-size:13px;color:#35f3ff;font-weight:800;margin-top:2px}
.hf:nth-child(2) b{color:#4ade80}
.holo-fin-row{display:flex;justify-content:space-between;font-size:10.5px;color:#8fa3b3;padding:4px 0;border-top:1px dashed rgba(255,255,255,0.07)}
.holo-fin-row b{color:#ff5474;font-weight:700}

.holo-step{display:flex;align-items:center;gap:8px;font-size:11px;color:#c3d0db;padding:4px 0}
.holo-step .hs-ok{color:#4ade80;font-weight:800}
.holo-step .hs-cur{color:#f7941d;font-weight:800;animation:liveBlink 1.1s ease-in-out infinite}
.holo-step .hs-wait{color:#5a6f7d}
.holo-step:has(.hs-cur){color:#fff;font-weight:600}

.holo-team{display:flex;align-items:center;gap:9px;padding:5px 0;border-top:1px solid rgba(255,255,255,0.05)}
.holo-team:first-of-type{border-top:0}
.ht-dot{width:8px;height:8px;border-radius:50%;background:#4ade80;box-shadow:0 0 8px #4ade80;animation:liveBlink 1.4s ease-in-out infinite;flex:0 0 auto}
.holo-team b{font-size:11.5px;color:#fff;font-weight:700}
.holo-team small{font-size:10px;color:#8fa3b3;margin-left:auto}

/* --- Доп. детали цепи: теги-чипы --- */
.chain-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.chain-tags span{
  font-size:8.5px;
  font-weight:700;
  color:#9fb3c0;
  padding:2px 6px;
  border-radius:6px;
  background:rgba(53,243,255,0.08);
  border:1px solid rgba(53,243,255,0.16);
}
.chain-tags .tg-new{color:#4ade80;background:rgba(74,222,128,0.12);border-color:rgba(74,222,128,0.3)}
.chain-tags .tg-ok{color:#4ade80;background:rgba(74,222,128,0.12);border-color:rgba(74,222,128,0.3)}
.chain-tags .tg-up{color:#f7941d;background:rgba(247,148,29,0.12);border-color:rgba(247,148,29,0.3)}

/* Тонировка новых узлов цепи */
.chain-node[data-tone="measure"] .chain-ico{background:rgba(53,243,255,0.16);color:#35f3ff}
.chain-node[data-tone="supply"] .chain-ico{background:rgba(247,148,29,0.16);color:#f7941d}
.chain-node[data-tone="accept"] .chain-ico{background:rgba(74,222,128,0.16);color:#4ade80}

/* Center Login Card */
.login-card{
  position:relative;
  z-index:10;
  width:min(420px, 100%)!important;
  padding:32px 30px!important;
  border-radius:24px!important;
  background:rgba(7, 16, 32, 0.94)!important;
  border:1px solid rgba(53, 243, 255, 0.32)!important;
  box-shadow:
    0 30px 80px rgba(0, 0, 0, 0.85),
    0 0 60px rgba(20, 121, 170, 0.28),
    inset 0 1px 0 rgba(255, 255, 255, 0.18)!important;
  transition:transform .3s cubic-bezier(0.16, 1, 0.3, 1), box-shadow .3s ease, border-color .3s ease;
  overflow:visible!important;
  max-height:calc(100dvh - 40px);
}
.login-card:hover{
  border-color:rgba(247, 148, 29, 0.55)!important;
  box-shadow:
    0 35px 90px rgba(0, 0, 0, 0.9),
    0 0 70px rgba(247, 148, 29, 0.3),
    inset 0 1px 0 rgba(255, 255, 255, 0.25)!important;
}
.login-card::before{
  height:110px!important;
  background:#fff url("assets/volthome-logo.png") center/contain no-repeat!important;
  border-radius:16px!important;
  margin-bottom:18px!important;
  box-shadow:0 8px 30px rgba(0, 0, 0, 0.4), inset 0 0 0 1px rgba(255, 255, 255, 0.9)!important;
  padding:8px!important;
  box-sizing:border-box!important;
}
.login-card h2{
  font-size:24px!important;
  font-weight:800!important;
  letter-spacing:-0.02em!important;
  color:#fff!important;
  text-shadow:0 0 20px rgba(53, 243, 255, 0.35)!important;
}
.login-card p{
  color:rgba(185, 204, 227, 0.75)!important;
  font-size:13px!important;
}
.login-field label{
  color:#a5b8cf!important;
  font-size:12px!important;
  font-weight:600!important;
  letter-spacing:0.02em!important;
}
.login-field input{
  background:rgba(5, 11, 22, 0.9)!important;
  border:1px solid rgba(255, 255, 255, 0.12)!important;
  color:#fff!important;
  border-radius:12px!important;
  padding:12px 14px!important;
  font-size:14px!important;
  transition:all .2s ease!important;
}
.login-field input:focus{
  border-color:var(--brand-orange, #f7941d)!important;
  box-shadow:0 0 0 3px rgba(247, 148, 29, 0.2), 0 0 16px rgba(247, 148, 29, 0.15)!important;
  background:rgba(7, 15, 30, 0.98)!important;
}
.login-card .btn.primary{
  background:linear-gradient(135deg, #f7941d 0%, #ff6b00 50%, #e65100 100%)!important;
  color:#fff!important;
  border:0!important;
  font-weight:800!important;
  border-radius:13px!important;
  padding:14px!important;
  font-size:14px!important;
  letter-spacing:0.02em!important;
  box-shadow:0 8px 24px rgba(247, 148, 29, 0.35)!important;
  transition:all .25s ease!important;
  cursor:pointer!important;
}
.login-card .btn.primary:hover{
  transform:translateY(-1px)!important;
  box-shadow:0 12px 30px rgba(247, 148, 29, 0.55), 0 0 20px rgba(247, 148, 29, 0.4)!important;
  filter:brightness(1.08)!important;
}
.login-card .vh144-login-divider{
  color:rgba(185, 204, 227, 0.5)!important;
  margin:14px 0 10px!important;
}
.login-card .vh144-register-open{
  background:rgba(255, 255, 255, 0.06)!important;
  border:1px solid rgba(255, 255, 255, 0.12)!important;
  color:#c8d7eb!important;
  border-radius:12px!important;
  padding:11px!important;
  font-weight:700!important;
  transition:all .2s ease!important;
}
.login-card .vh144-register-open:hover{
  background:rgba(53, 243, 255, 0.12)!important;
  border-color:rgba(53, 243, 255, 0.35)!important;
  color:#fff!important;
}

/* ===== Ноутбуки и планшеты: ≥900px — 3 колонки (логин + меню о приложении) ===== */
@media(min-width:900px){
  .login-layout{
    max-width:1640px;
    grid-template-columns:minmax(240px,1fr) minmax(320px,420px) minmax(240px,1fr);
    gap:20px;
  }
  .login-side{
    height:calc(100dvh - 40px);
    max-height:calc(100dvh - 40px);
  }
  .login-side-chain .chain-flow{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-content:start}
  .login-side-chain .chain-bus{display:none}
  .login-side-chain .chain-node{padding:8px 10px}
  .login-side-chain .chain-node-result{grid-column:1/-1}
  .login-side-holo .holo-stage{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-content:start}
  .login-side-holo .holo-panel{margin-top:0}
  .login-side-holo .holo-panel-1{grid-column:1/-1}
}

/* Низкие экраны ноутбуков (1366×768 и масштаб 125%) — уплотняем, чтобы ничего не обрезалось */
@media(min-width:900px) and (max-height:860px){
  .login-screen{padding:12px;gap:10px}
  .login-side{padding:12px 12px;height:calc(100dvh - 24px);max-height:calc(100dvh - 24px)}
  .side-head{padding-bottom:8px;margin-bottom:8px}
  .side-head-ico{width:32px;height:32px;font-size:15px}
  .chain-tags{display:none}
  .chain-foot{margin-top:8px;padding-top:8px}
  .login-side-holo .holo-panel{padding:9px 10px}
  .login-card{padding:24px 22px!important}
  .login-card::before{height:84px!important;margin-bottom:12px!important}
}

@media(min-width:1400px){
  .login-layout{
    max-width:1640px;
    grid-template-columns:minmax(320px,1fr) minmax(380px,440px) minmax(320px,1fr);
    gap:30px;
  }
}

/* ===== Очень широкие экраны: ≥1800px — сверху KPI-полоса ===== */
@media(min-width:1800px){
  .login-kpi-strip{display:flex;flex:0 0 auto}
  .login-layout{max-width:1750px;flex:1;min-height:0}
  .login-side{height:calc(100dvh - 150px);max-height:820px;padding:14px 14px}
  .side-head{padding-bottom:10px;margin-bottom:10px}
  .login-side-chain .chain-node{padding:8px 10px}
  .login-side-holo .holo-panel{padding:10px 11px}
  .chain-foot{margin-top:9px;padding-top:9px}
}
@media(min-width:1800px) and (max-height:960px){
  .login-side{height:calc(100dvh - 130px);max-height:calc(100dvh - 130px)}
}

/* ===== Телефон и узкий планшет: ≤899px — логин сверху, меню о приложении ниже ===== */
@media(max-width:899px){
  .login-screen{
    padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
    justify-content:flex-start;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    -webkit-overflow-scrolling:touch;
  }
  .login-layout{
    grid-template-columns:1fr;
    grid-template-rows:auto;
    gap:14px;
    width:100%;
    max-width:520px;
    flex:0 0 auto;
  }
  .login-card-wrap{order:1;width:100%}
  .login-card{
    width:100%!important;
    max-width:420px;
    max-height:none;
    padding:26px 20px!important;
    margin:0 auto;
  }
  .login-card::before{height:88px!important;margin-bottom:14px!important}
  .login-kpi-strip{display:none!important}
  .login-side,.login-side-chain,.login-side-holo{
    display:none!important;
  }
  .login-ticker{
    display:block;
    width:100%;
    max-width:520px;
    flex:0 0 auto;
  }
  .lt-track{animation:ltScroll 26s linear infinite}
}

@media(max-width:640px){
  .login-screen{padding:max(12px, env(safe-area-inset-top)) 12px max(12px, env(safe-area-inset-bottom));gap:12px}
  .login-card{padding:20px 16px!important;border-radius:18px!important}
  .login-card::before{height:72px!important;margin-bottom:10px!important}
  .login-card h2{font-size:20px!important}
  .login-field input{font-size:16px!important;padding:12px!important} /* без зума iOS */
  .lt-track{animation-duration:20s}
  .lt-track span{font-size:11.5px}
}

/* Альбом телефона — карточка не должна обрезаться */
@media(max-width:899px) and (max-height:500px){
  .login-screen{justify-content:flex-start;padding:10px 14px;gap:8px}
  .login-card{padding:14px 16px!important}
  .login-card::before{height:52px!important;margin-bottom:8px!important}
  .login-card h2{font-size:18px!important}
  .login-ticker{padding:6px 0}
}

/* Модалка регистрации поверх экрана входа (login-screen z-index:99999; .modal.open:10050).
   Нужна специфичность выше .modal.open, иначе окно открывается «в никуда». */
#vh144RegisterModal.modal.open,
.modal.vh144-register-modal.open{
  z-index:100050!important;
}
@media(max-width:760px){
  .vh144-register-modal{
    padding:max(8px, env(safe-area-inset-top)) 8px max(8px, env(safe-area-inset-bottom))!important;
    align-items:flex-start!important;
  }
  .vh144-register-box{
    width:100%!important;
    max-width:100%!important;
    max-height:calc(100dvh - 16px)!important;
    overflow:auto!important;
    margin:0!important;
    border-radius:16px!important;
    padding:14px!important;
  }
  .vh144-register-actions{flex-direction:column-reverse;align-items:stretch}
  .vh144-register-actions .btn{width:100%}
}

/* ===== Мобильная вёрстка рабочих экранов (телефон ≤720px) ===== */
@media(max-width:720px){
  /* Помещения: длина/ширина/высота не вылезают за карточку */
  .project-room-card{
    overflow:hidden!important;
    max-width:100%!important;
    box-sizing:border-box!important;
  }
  .project-room-title-fields{
    grid-template-columns:1fr!important;
    min-width:0!important;
  }
  .project-room-name{min-width:0!important;max-width:100%!important;width:100%!important}
  .project-room-route-settings{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
    min-width:0!important;
    overflow:hidden!important;
  }
  .project-room-route-settings label{min-width:0!important;max-width:100%!important}
  .project-room-route-settings input,
  .project-room-route-settings select{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    box-sizing:border-box!important;
  }
  .project-consumer-row{grid-template-columns:1fr 1fr!important}
  .project-consumer-main{grid-column:1/-1!important}

  /* Смета: кнопка «Очистить» внутри блока */
  #price .card-head,
  #calculator .card-head,
  #materialcalc .card-head{
    flex-wrap:wrap!important;
    align-items:flex-start!important;
    gap:8px!important;
  }
  #price .card-head>div,
  #calculator .card-head>div{
    min-width:0!important;
    flex:1 1 180px!important;
  }
  #price .card-head h3,
  #calculator .card-head h3{
    white-space:normal!important;
    overflow-wrap:anywhere!important;
  }
  #price .card-head .small-btn,
  #calculator .card-head .small-btn,
  #materialcalc .card-head .small-btn{
    flex:0 0 auto!important;
    margin-left:auto!important;
  }

  /* Расчёт работ: название, количество и цена на своих местах */
  #calculator #calcCatalog .catalog-row{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 64px 34px 34px!important;
    grid-template-areas:
      "main main fav add"
      "unit qty price price"!important;
    gap:8px!important;
    align-items:center!important;
    padding:10px 8px!important;
    min-height:0!important;
    height:auto!important;
    overflow:visible!important;
    box-sizing:border-box!important;
  }
  #calculator #calcCatalog .catalog-main{
    grid-area:main!important;
    min-width:0!important;
    max-width:100%!important;
  }
  #calculator #calcCatalog .catalog-main b,
  #calculator #calcCatalog .catalog-main small{
    display:block!important;
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:unset!important;
    overflow-wrap:anywhere!important;
    word-break:break-word!important;
    line-height:1.35!important;
  }
  #calculator #calcCatalog .catalog-unit{
    grid-area:unit!important;
    justify-self:start!important;
  }
  #calculator #calcCatalog .catalog-qty,
  #calculator #calcCatalog .qty-input{
    grid-area:qty!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
  }
  #calculator #calcCatalog .catalog-price,
  #calculator #calcCatalog .catalog-row>b.catalog-price{
    grid-area:price!important;
    justify-self:end!important;
  }
  #calculator #calcCatalog .catalog-favorite-btn{
    grid-area:fav!important;
  }
  #calculator #calcCatalog .catalog-add-btn{
    grid-area:add!important;
  }
  #calculator #estimateLines .estimate-row{
    grid-template-columns:minmax(0,1fr) 72px 36px!important;
    grid-template-areas:
      "name name del"
      "qty price price"!important;
    align-items:start!important;
  }
  #calculator #estimateLines .line-name{
    grid-area:name!important;
    min-width:0!important;
  }
  #calculator #estimateLines .line-name b,
  #calculator #estimateLines .line-name .muted{
    white-space:normal!important;
    overflow:visible!important;
    overflow-wrap:anywhere!important;
  }
  #calculator #estimateLines .qty-input{grid-area:qty!important;width:100%!important;min-width:0!important}
  #calculator #estimateLines .price-input{grid-area:price!important;width:100%!important;min-width:0!important}
  #calculator #estimateLines .small-btn{grid-area:del!important}

  /* Названия материалов читаются целиком (только сметы/база, не расчёт работ) */
  #sheetCatalog .catalog-row,
  #cleanMaterialCatalog .catalog-row,
  #materialDbList .catalog-row{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 36px!important;
    grid-template-areas:none!important;
    gap:8px 10px!important;
    align-items:start!important;
    padding:12px 8px!important;
    min-height:0!important;
    height:auto!important;
    overflow:visible!important;
  }
  #sheetCatalog .catalog-row .catalog-main,
  #cleanMaterialCatalog .catalog-row .catalog-main,
  #materialDbList .catalog-row .catalog-main,
  #sheetCatalog .catalog-row>div:first-child,
  #cleanMaterialCatalog .catalog-row>div:first-child,
  #materialDbList .catalog-row>div:first-child{
    min-width:0!important;
    grid-column:1!important;
  }
  #sheetCatalog .catalog-row .catalog-main b,
  #sheetCatalog .catalog-row .catalog-main small,
  #cleanMaterialCatalog .catalog-row .catalog-main b,
  #cleanMaterialCatalog .catalog-row .catalog-main small,
  #materialDbList .catalog-row .catalog-main b,
  #materialDbList .catalog-row .catalog-main small{
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:unset!important;
    overflow-wrap:anywhere!important;
    word-break:break-word!important;
    line-height:1.35!important;
  }
  #sheetCatalog .catalog-row .catalog-add-btn,
  #cleanMaterialCatalog .catalog-row .catalog-add-btn,
  #materialDbList .catalog-row .catalog-add-btn{
    grid-column:2!important;
    grid-row:1!important;
  }
  #sheetCatalog .catalog-unit,
  #sheetCatalog .catalog-row .qty-input,
  #sheetCatalog .catalog-price,
  #cleanMaterialCatalog .catalog-unit,
  #cleanMaterialCatalog .catalog-row .qty-input,
  #cleanMaterialCatalog .catalog-price,
  #materialDbList .catalog-unit,
  #materialDbList .catalog-row .qty-input,
  #materialDbList .catalog-price{
    grid-column:1/-1!important;
  }

  /* Каталог: внутренний скролл, чтобы материалы не прятались под меню */
  #calculator #calcCatalog,
  #price #sheetPaneRough .calc-catalog,
  #price #sheetPaneClean .calc-catalog,
  #price #sheetCatalog,
  #price #cleanMaterialCatalog,
  #materials-db #materialDbList,
  #sheetCatalog,#cleanMaterialCatalog,#materialDbList{
    height:min(42dvh, 360px)!important;
    min-height:180px!important;
    max-height:min(42dvh, 360px)!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    -webkit-overflow-scrolling:touch!important;
    overscroll-behavior:contain!important;
  }
  #price .calc-layout>.card{
    min-height:0!important;
    height:auto!important;
  }

  /* Поиск + «Все материалы»: одна колонка, без вылета за край */
  #materials-db .material-db-filters,
  .material-db-filters,
  #price .calc-filters,
  .calc-filters,
  .supplier-material-search-row,
  #price .supplier-material-toolbar-row,
  .supplier-material-toolbar-row,
  #materials-db .supplier-material-source-row,
  .supplier-material-source-row{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }
  .material-db-filters input,
  .material-db-filters select,
  #materialDbCategory,
  #materialDbSearch,
  .calc-filters input,
  .calc-filters select,
  .search{
    min-width:0!important;
    width:100%!important;
    max-width:100%!important;
    box-sizing:border-box!important;
  }

  /* Нижнее меню: 3 ряда, страница сдвигается вверх и не перекрывается */
  :root{--vh-mobile-nav-h:200px}
  html,body,.app{
    overflow-x:hidden!important;
  }
  main{
    padding-bottom:calc(var(--vh-mobile-nav-h) + 24px + env(safe-area-inset-bottom,0px))!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
  }
  .page.active{
    padding-bottom:8px!important;
  }
  .mobile-nav{
    display:grid!important;
    grid-template-columns:repeat(5,minmax(0,1fr))!important;
    grid-auto-rows:auto!important;
    align-content:start!important;
    gap:2px!important;
    padding:5px!important;
    left:8px!important;
    right:8px!important;
    bottom:max(6px, env(safe-area-inset-bottom,0px))!important;
    width:auto!important;
    max-width:calc(100vw - 16px)!important;
    height:auto!important;
    max-height:none!important;
    overflow:hidden!important;
    box-sizing:border-box!important;
    z-index:40!important;
  }
  .mobile-nav button{
    flex:unset!important;
    width:auto!important;
    min-width:0!important;
    max-width:100%!important;
    min-height:0!important;
    height:auto!important;
    padding:3px 1px!important;
    font-size:8px!important;
    line-height:1.1!important;
    white-space:normal!important;
    overflow:hidden!important;
  }
  .mobile-nav button>div{font-size:13px!important;margin-bottom:1px!important;line-height:1!important}

  #price .vh-mat-toolbar,
  #materials-db .vh-mat-toolbar{
    display:flex!important;
    flex-wrap:wrap!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }
  .vh-mat-field,
  .vh-mat-field-supplier,
  .vh-mat-field-category,
  .vh-mat-field-search,
  .vh-mat-field-status,
  #price .vh-mat-tool-btn,
  #materials-db #materialDbAddBaseBtn,
  .vh-mat-db-count{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }

  /* Смета материалов: на телефоне видно 5–6 позиций, страница скроллится выше нижнего меню */
  #price #sheetCatalog,
  #price #cleanMaterialCatalog,
  #price #sheetPaneRough .calc-catalog,
  #price #sheetPaneClean .calc-catalog{
    height:auto!important;
    min-height:26em!important;
    max-height:none!important;
  }
  #price #sheetLines{
    height:auto!important;
    min-height:22em!important;
    max-height:none!important;
  }
}

#dashboard .dash-task-tools{
  display:flex;
  align-items:center;
  gap:8px;
}
#dashboard .dash-task-tools .dash-chart-filter{
  min-height:32px;
  max-width:160px;
}

.vh-inbox{
  position:relative;
  flex:0 0 auto;
}
.vh-inbox-bell{
  position:relative;
  width:42px;
  height:42px;
  border-radius:12px;
  border:1px solid var(--vh-line,rgba(255,255,255,.12));
  background:var(--vh-surface);
  color:var(--vh-text,#fff);
  cursor:pointer;
}
.vh-inbox-count{
  position:absolute;
  top:-4px;
  right:-4px;
  min-width:18px;
  height:18px;
  padding:0 5px;
  border-radius:99px;
  background:#f7941d;
  color:#102b43;
  font-size:10px;
  font-weight:800;
  display:grid;
  place-items:center;
}
.vh-inbox-count[hidden]{
  display:none !important;
}
.vh-inbox-panel{
  position:fixed;
  left:12px;
  right:12px;
  top:64px;
  width:auto;
  max-width:360px;
  max-height:min(360px,70vh);
  overflow:auto;
  z-index:10080;
  padding:10px;
  border-radius:14px;
  border:1px solid var(--vh-line,rgba(255,255,255,.12));
  background:var(--vh-surface);
  box-shadow:0 18px 40px rgba(0,0,0,.35);
  box-sizing:border-box;
}
.vh-inbox-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  margin-bottom:8px;
}
.vh-inbox-item{
  display:grid;
  gap:2px;
  width:100%;
  text-align:left;
  margin:0 0 6px;
  padding:8px 9px;
  border-radius:10px;
  border:1px solid var(--vh-line,rgba(255,255,255,.08));
  background:transparent;
  color:inherit;
  cursor:pointer;
}
.vh-inbox-item.is-new{border-color:rgba(247,148,29,.45)}
.vh-inbox-actor{
  display:flex;
  align-items:center;
  gap:8px;
  min-width:0;
}
.vh-inbox-ava{
  width:28px;
  height:28px;
  border-radius:50%;
  object-fit:cover;
  flex:0 0 28px;
  background:var(--vh-surface-2);
}
.vh-inbox-ava-fallback{
  display:grid;
  place-items:center;
  font-size:10px;
  font-weight:800;
  color:#102b43;
  background:#f7941d;
}
.vh-inbox-item b{font-size:12px}
.vh-inbox-item span{font-size:12px;color:var(--vh-muted,#8fa3b3)}
.vh-inbox-item .vh-inbox-actor b{color:inherit}
.vh-inbox-item small{font-size:10px;color:var(--vh-muted,#8fa3b3)}
.modal.open{z-index:10050!important}
#vh144RegisterModal.modal.open,
.modal.vh144-register-modal.open{z-index:100050!important}
@media (max-width:720px){
  .vh-inbox-panel{
    left:12px!important;
    right:12px!important;
    width:auto!important;
    max-width:none!important;
    max-height:min(52dvh, calc(100dvh - var(--vh-mobile-nav-h, 200px) - 80px))!important;
  }
  .modal.open .modal-box{
    max-height:calc(100dvh - 16px)!important;
    padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))!important;
  }
  #modal.modal.open .modal-box{
    display:flex;
    flex-direction:column;
    max-height:calc(100dvh - 16px)!important;
  }
  #modalForm{
    display:flex;
    flex-direction:column;
    min-height:0;
    flex:1;
  }
  #modalFields{
    overflow:auto;
    min-height:0;
    padding-bottom:8px;
  }
  #modalForm > div:last-child{
    position:sticky;
    bottom:0;
    display:flex;
    justify-content:flex-end;
    gap:10px;
    margin-top:12px;
    padding-top:10px;
    background:var(--vh-surface);
    z-index:2;
  }
}

