:root{
  --bg:#0b0f17;
  --panel:#111827;
  --line:#1f2937;
  --txt:#e5e7eb;
  --mut:#9ca3af;
  --chip:#0f172a;
  --accent:#60a5fa;
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial;background:var(--bg);color:var(--txt)}
.topbar{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line);background:rgba(17,24,39,.8);backdrop-filter:blur(6px);position:sticky;top:0}
.brand{font-weight:800;letter-spacing:.2px}
.controls{display:flex;gap:8px}
.chip{padding:8px 10px;border:1px solid var(--line);background:var(--chip);border-radius:999px;color:var(--txt);text-decoration:none;font-size:13px}
.chip:hover{border-color:rgba(96,165,250,.6)}

.wrap{padding:16px}
.grid{display:grid;grid-template-columns: 360px 1fr 360px;gap:12px;align-items:start}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.panel__head{padding:12px 12px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:10px}
.panel__title{font-weight:800}
.panel__meta{color:var(--mut);font-size:12px}

.engineers{display:flex;flex-direction:column;gap:10px;padding:12px}
.eng-card{border:1px solid var(--line);border-radius:14px;padding:10px;background:rgba(15,23,42,.35)}
.eng-card__head{display:flex;justify-content:space-between;align-items:center}
.eng-name{font-weight:700}
.eng-cap{color:var(--mut);font-size:12px}
.eng-card__body{margin-top:8px;color:var(--mut);font-size:12px}

.projects{padding:12px;display:flex;flex-direction:column;gap:10px}
.proj{border:1px solid var(--line);border-radius:14px;padding:10px;background:rgba(15,23,42,.35)}
.proj__name{font-weight:700}
.proj__meta{margin-top:6px;display:flex;gap:6px;flex-wrap:wrap}
.tag{border:1px solid var(--line);border-radius:999px;padding:4px 8px;font-size:12px;color:var(--mut)}
.tag--prototype{border-color:rgba(96,165,250,.5);color:#bfdbfe}
.tag--validation{border-color:rgba(34,197,94,.5);color:#bbf7d0}
.tag--grants{border-color:rgba(245,158,11,.5);color:#fde68a}
.tag--blocked{border-color:rgba(239,68,68,.5);color:#fecaca}

.timeline{padding:12px}
.timeline__scale{display:grid;grid-template-columns:repeat(30,1fr);gap:2px;margin-bottom:10px}
.tick{height:18px;border:1px solid var(--line);border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--mut);font-size:10px;background:rgba(15,23,42,.25)}
.timeline__lanes{display:flex;flex-direction:column;gap:10px}
.lane{border:1px solid var(--line);border-radius:14px;padding:8px;background:rgba(15,23,42,.25)}
.lane__head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.lane__name{font-weight:700}
.lane__track{
  position:relative;
  min-height:44px;             /* базово */
  padding: 6px 6px;            /* чтобы блоки не липли */
  border:1px dashed rgba(31,41,55,.9);
  border-radius:12px;
  background:rgba(2,6,23,.35);
  overflow:hidden;             /* можно заменить на visible, если хочешь видеть всё */
}

/* блоки теперь позиционируются по top индивидуально */
.block{
  position:absolute;
  left:0;
  height:32px;
  border-radius:10px;
  border:1px solid rgba(255,255,255,.10);
  padding:6px 8px;
  font-size:12px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.block .meta{opacity:.8;font-size:11px;margin-left:8px}
.block.prototype{background:rgba(96,165,250,.20)}
.block.validation{background:rgba(34,197,94,.18)}
.block.grants{background:rgba(245,158,11,.18)}
.block.blocked{background:rgba(239,68,68,.20)}
.lane__track.drop-hover{
  outline: 2px solid rgba(96,165,250,.7);
  outline-offset: 2px;
}

.block.dragging{
  opacity: .65;
  filter: saturate(1.2);
  cursor: grabbing;
}
/* подсказка дня под курсором при переносе */
.lane__track{
  position: relative;
}
.lane__track::after{
  content: attr(data-hover-day);
  position:absolute;
  top: -26px;
  left: 10px;
  padding: 4px 8px;
  font-size: 11px;
  color: rgba(229,231,235,.9);
  background: rgba(17,24,39,.95);
  border: 1px solid rgba(31,41,55,.9);
  border-radius: 999px;
  opacity: 0;
  pointer-events:none;
  transform: translateY(2px);
  transition: opacity .12s ease, transform .12s ease;
}
.lane__track.hovering::after{
  opacity: 1;
  transform: translateY(0);
}
.modal{
  position:fixed; inset:0;
  background: rgba(0,0,0,.45);
  display:flex; align-items:center; justify-content:center;
  z-index: 9998;
}
.modal__card{
  width: min(640px, 92vw);
  background: rgba(17,24,39,.98);
  border: 1px solid rgba(31,41,55,.9);
  border-radius: 18px;
  overflow:hidden;
}
.modal__head{
  padding: 12px;
  border-bottom: 1px solid rgba(31,41,55,.9);
  display:flex;justify-content:space-between;align-items:center;gap:10px;
}
.modal__body{ padding: 12px; display:flex; flex-direction:column; gap:10px;}
.field{display:flex;flex-direction:column;gap:6px}
.field__label{color:#9ca3af;font-size:12px}
.input{
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid rgba(31,41,55,.9);
  background: rgba(15,23,42,.45);
  color: #e5e7eb;
  outline: none;
}
.row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.badge{
  border:1px solid rgba(31,41,55,.9);
  border-radius:999px;
  padding:4px 8px;
  font-size:11px;
  color:#9ca3af;
  background:rgba(15,23,42,.35);
}
.badge--sev3{border-color:rgba(239,68,68,.55); color:#fecaca;}
.badge--sev2{border-color:rgba(245,158,11,.55); color:#fde68a;}
.badge--sev1{border-color:rgba(96,165,250,.45); color:#bfdbfe;}
.kpi{display:flex;gap:10px;color:#9ca3af;font-size:12px;margin-top:6px}
.btn-boost{
  padding: 7px 10px;
  border-radius: 999px;
  border: 1px solid rgba(96,165,250,.45);
  background: rgba(96,165,250,.12);
  color: #bfdbfe;
  cursor: pointer;
  font-size: 12px;
  font-weight: 700;
}
.btn-boost:hover{
  border-color: rgba(96,165,250,.75);
  background: rgba(96,165,250,.18);
}
.btn-boost:disabled{
  opacity: .5;
  cursor: not-allowed;
}
.proj-status-item.is-hidden{
  display:none;
}
.proj-status-item.is-stale{
  border-radius: 12px;
  background: rgba(245,158,11,.08);
  outline: 1px solid rgba(245,158,11,.25);
}
.tag--stale{
  border-color: rgba(245,158,11,.55);
  color: #fde68a;
}