:root { --ems: #0b5d4b; --ems-dark: #084638; --ems-light: #e7f3ef; }
body { background: #f4f6f8; font-size: .925rem; }
.bg-ems { background: var(--ems); }
.btn-ems { background: var(--ems); color: #fff; }
.btn-ems:hover { background: var(--ems-dark); color: #fff; }
.text-ems { color: var(--ems); }
.ctx-select { width: auto; min-width: 9rem; }
.sidebar { width: 260px; flex-shrink: 0; min-height: calc(100vh - 56px); background: #fff; border-right: 1px solid #e3e6ea; }
@media (min-width: 992px) { .sidebar { position: sticky; top: 56px; height: calc(100vh - 56px); overflow-y: auto; } }
.sidebar-title { font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; color: #8a94a0; padding: .9rem 1.1rem .3rem; font-weight: 600; }
.sidebar-link { display: block; padding: .38rem 1.1rem; color: #2b3640; text-decoration: none; border-left: 3px solid transparent; }
.sidebar-link i { width: 1.4rem; display: inline-block; color: #6c7a86; }
.sidebar-link:hover { background: var(--ems-light); color: var(--ems-dark); }
.sidebar-link.active { background: var(--ems-light); border-left-color: var(--ems); color: var(--ems-dark); font-weight: 600; }
.main-content { min-width: 0; }
.page-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: 1rem; }
.page-head h1 { font-size: 1.4rem; margin: 0; }
.card { border: 1px solid #e3e6ea; box-shadow: 0 1px 2px rgba(0,0,0,.03); }
.card-header { background: #fff; font-weight: 600; }
.stat { padding: 1rem; }
.stat .value { font-size: 1.6rem; font-weight: 700; color: var(--ems-dark); line-height: 1.1; }
.stat .label { color: #6c7a86; font-size: .8rem; }
.table-sm td, .table-sm th { vertical-align: middle; }
.table thead th { background: #f0f3f5; font-weight: 600; font-size: .8rem; white-space: nowrap; }
.tabular { font-variant-numeric: tabular-nums; }
.progress-thin { height: 6px; }
/* Сетка расписания */
.timetable { table-layout: fixed; }
.timetable th.slot { width: 92px; }
.timetable td { height: 64px; padding: 3px !important; vertical-align: top; }
.tt-item { border-radius: 6px; padding: 3px 6px; margin-bottom: 3px; font-size: .78rem; line-height: 1.2; border-left: 4px solid; background: #fff; }
.tt-lecture { border-color: #2563eb; background: #eff6ff; }
.tt-practice { border-color: #059669; background: #ecfdf5; }
.tt-lab { border-color: #d97706; background: #fffbeb; }
.tt-item .meta { color: #55606b; font-size: .72rem; }
/* Журнал */
.journal-grid th, .journal-grid td { text-align: center; min-width: 38px; padding: .2rem .25rem !important; }
.journal-grid th.student, .journal-grid td.student { text-align: left; min-width: 200px; position: sticky; left: 0; background: #fff; z-index: 1; }
.journal-grid .absent { color: #dc2626; font-weight: 600; }
.journal-grid .excused { color: #d97706; }
.grade-5 { color: #047857; font-weight: 700; } .grade-4 { color: #2563eb; font-weight: 600; }
.grade-3 { color: #b45309; } .grade-2 { color: #dc2626; font-weight: 700; }
.violation { color: #b91c1c; }
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #0b5d4b 0%, #13836a 100%); }
.login-card { width: 100%; max-width: 440px; }
@media print {
  .no-print, .sidebar, nav.navbar { display: none !important; }
  body { background: #fff; font-size: 11px; }
  .main-content { padding: 0 !important; }
  .card { border: none; box-shadow: none; }
}
/* Национальная система планирования человеческого капитала */
.hc-status { display: inline-flex; align-items: center; gap: .3rem; font-size: .78rem; font-weight: 600; white-space: nowrap; }
.hc-status i { font-size: .9rem; }
.hc-good i { color: #0ca30c; } .hc-warning i { color: #fab219; } .hc-serious i { color: #ec835a; } .hc-critical i { color: #d03b3b; }
.hc-muted { color: #898781; }
.hc-level-good { border-left: 4px solid #0ca30c; } .hc-level-warning { border-left: 4px solid #fab219; }
.hc-level-serious { border-left: 4px solid #ec835a; } .hc-level-critical { border-left: 4px solid #d03b3b; }
.organ { height: 100%; }
.organ .organ-head { display: flex; align-items: center; gap: .5rem; font-weight: 700; color: #084638; }
.organ .organ-head i { font-size: 1.3rem; }
.organ .organ-sub { font-size: .75rem; color: #6c7a86; margin-bottom: .5rem; }
.organ dl { display: grid; grid-template-columns: 1fr auto; gap: .15rem .75rem; margin: 0; font-size: .85rem; }
.organ dt { font-weight: 400; color: #52514e; } .organ dd { margin: 0; font-weight: 700; text-align: right; font-variant-numeric: tabular-nums; }
.flow-arrow { display: flex; align-items: center; justify-content: center; color: #98a2ad; font-size: 1.4rem; }
.chart-box { position: relative; height: 300px; }
.chart-box.sm { height: 220px; } .chart-box.lg { height: 380px; }
.spark { position: relative; height: 36px; width: 120px; }
.shift { border-top: 3px solid var(--ems); }
.shift .metric { font-size: 1.5rem; font-weight: 700; color: var(--ems-dark); }
.chain-col { min-width: 220px; }
.chain-item { border: 1px solid #e3e6ea; border-radius: 6px; padding: .35rem .55rem; margin-bottom: .35rem; background: #fff; font-size: .85rem; }
.chain-item.rising { border-left: 4px solid #0ca30c; }
.chain-item.gap { border-left: 4px solid #d03b3b; }
.matrix td, .matrix th { text-align: center; font-size: .78rem; }
.matrix th.rot { writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; height: 150px; vertical-align: bottom; }
.raci-R { background: #e7f0fc; } .raci-A { background: #fde7dd; font-weight: 700; } .raci-C { background: #e3f6ef; } .raci-I { background: #f4f4f2; }
.ai-note { background: #f6f4ff; border: 1px dashed #6250d6; border-radius: 8px; }
.just { white-space: pre-line; font-size: .8rem; color: #52514e; }
