:root {
  --hen-primary: #e8870c;
  --hen-primary-dark: #c66f00;
  --hen-bg: #f7f6f2;
  --hen-sidebar: #1f2a24;
  --hen-sidebar-hover: #2c3a31;
  --hen-accent: #3fa66a;
}

body {
  background: var(--hen-bg);
  font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

.hen-layout { display: flex; min-height: 100vh; }

.hen-sidebar {
  width: 240px;
  background: var(--hen-sidebar);
  color: #cdd6d0;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  position: sticky;
  top: 0;
  height: 100vh;
}
.hen-brand {
  font-size: 1.35rem;
  font-weight: 700;
  color: #fff;
  padding: 1.1rem 1.25rem;
  letter-spacing: .3px;
}
.hen-brand .dot { color: var(--hen-primary); }
.hen-nav { padding: .5rem 0; overflow-y: auto; flex: 1; }
.hen-nav a {
  display: flex;
  align-items: center;
  gap: .65rem;
  color: #cdd6d0;
  text-decoration: none;
  padding: .6rem 1.25rem;
  font-size: .95rem;
}
.hen-nav a:hover { background: var(--hen-sidebar-hover); color: #fff; }
.hen-nav a.active {
  background: var(--hen-sidebar-hover);
  color: #fff;
  border-left: 3px solid var(--hen-primary);
  padding-left: calc(1.25rem - 3px);
}
.hen-main { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.hen-topbar {
  background: #fff;
  border-bottom: 1px solid #e6e3db;
  padding: .65rem 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.hen-content { padding: 1.5rem; flex: 1; }

.btn-hen { background: var(--hen-primary); border-color: var(--hen-primary); color: #fff; }
.btn-hen:hover { background: var(--hen-primary-dark); border-color: var(--hen-primary-dark); color: #fff; }
a { color: var(--hen-primary-dark); }

.kpi-card { border: none; border-radius: 14px; box-shadow: 0 1px 3px rgba(0,0,0,.06); }
.kpi-card .kpi-value { font-size: 1.7rem; font-weight: 700; }
.kpi-card .kpi-label { color: #6c757d; font-size: .85rem; text-transform: uppercase; letter-spacing: .4px; }

.card { border: none; border-radius: 14px; box-shadow: 0 1px 3px rgba(0,0,0,.06); }
.card-header { background: #fff; border-bottom: 1px solid #eee; font-weight: 600; }

/* Таймлайн инкубации */
.incub-timeline { position: relative; margin-left: 10px; }
.incub-timeline::before {
  content: ""; position: absolute; left: 7px; top: 0; bottom: 0; width: 2px; background: #e3e0d8;
}
.incub-event { position: relative; padding: .35rem 0 .75rem 1.75rem; }
.incub-event .dot {
  position: absolute; left: 0; top: .5rem; width: 16px; height: 16px; border-radius: 50%;
  background: #fff; border: 3px solid #c7c2b6;
}
.incub-event.milestone .dot { border-color: var(--hen-primary); }
.incub-event.done .dot { background: var(--hen-accent); border-color: var(--hen-accent); }
.incub-event.today .dot { border-color: var(--hen-primary); box-shadow: 0 0 0 4px rgba(232,135,12,.2); }
.incub-event.overdue .dot { border-color: #dc3545; }
.incub-day-badge { font-size: .75rem; color: #6c757d; }

.progress-ring-label { font-weight: 700; }
.low-stock { color: #dc3545; font-weight: 600; }

/* Заблокированные строки (тариф не оплачен) — водяной знак при наведении */
tr.locked-row { position: relative; }
tr.locked-row::after {
  content: "🔒 Необходимо продлить тариф, чтобы разблокировать";
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(232, 135, 12, 0.14);
  color: #9a6b00;
  font-weight: 700;
  font-size: .9rem;
  letter-spacing: .3px;
  opacity: 0;
  transition: opacity .15s ease;
  pointer-events: none;
  z-index: 3;
}
tr.locked-row:hover::after { opacity: 1; }
