:root {
  --bg: #eef3f8;
  --ink: #172033;
  --muted: #667085;
  --panel: #ffffff;
  --line: #d9e2ef;
  --primary: #155eef;
  --primary-strong: #0b46c5;
  --danger: #c2410c;
  --ok: #15803d;
  --warning: #b45309;
  --shadow: 0 18px 45px rgba(15, 23, 42, .10);
}
* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  color: var(--ink);
  background: var(--bg);
}
button, input, select, textarea { font: inherit; }
.hidden { display: none !important; }
.auth {
  min-height: 100vh;
  padding: 44px 20px;
  background: linear-gradient(180deg, #eef4ff 0%, #f9fafb 100%);
}
.auth-brand {
  max-width: 980px;
  margin: 0 auto 28px;
  display: flex;
  align-items: center;
  gap: 16px;
}
.auth-brand img, .brand img {
  width: 64px;
  height: 64px;
  border-radius: 8px;
  object-fit: contain;
  background: #fff;
  box-shadow: 0 10px 30px rgba(15, 23, 42, .12);
}
.auth-brand h1, .brand h1 { margin: 0; font-size: 30px; line-height: 1.05; }
.auth-brand p, .brand p { margin: 4px 0 0; color: var(--muted); }
.auth-grid {
  max-width: 980px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}
.auth-grid.login-only {
  max-width: 480px;
  grid-template-columns: 1fr;
}
.app {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 290px minmax(0, 1fr);
}
.sidebar {
  background: #111827;
  color: #fff;
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 22px;
}
.brand {
  display: flex;
  align-items: center;
  gap: 14px;
}
.brand h1 { font-size: 22px; }
.brand p, .side-box small { color: #aab5c5; }
nav { display: grid; gap: 8px; }
.nav {
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.04);
  color: #dbeafe;
  padding: 12px 14px;
  border-radius: 8px;
  text-align: left;
  cursor: pointer;
}
.nav.active { background: #2563eb; color: #fff; border-color: #2563eb; }
.side-box {
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.05);
  border-radius: 8px;
  padding: 14px;
  display: grid;
  gap: 4px;
}
.side-box span, .eyebrow { color: #6b7c93; font-size: 12px; text-transform: uppercase; font-weight: 800; letter-spacing: 0; }
.sidebar-color-label {
  color: #dbeafe;
  margin: 12px 0 4px;
}
.sidebar-color-row {
  display: grid;
  grid-template-columns: 54px 1fr;
  gap: 8px;
  align-items: center;
}
.sidebar-color-row input[type="color"] {
  height: 42px;
  padding: 3px;
  background: rgba(255,255,255,.08);
  border-color: rgba(255,255,255,.18);
}
.sidebar-color-row .btn {
  margin: 0;
  padding: 10px 12px;
}
#colorMsg .msg {
  font-size: 12px;
  padding: 8px;
}
main { min-width: 0; padding: 26px; }
.topbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  margin-bottom: 20px;
}
.topbar h2 { margin: 0; font-size: 28px; }
.eyebrow { margin: 0 0 4px; color: #4f6b94; }
.toolbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.panel, .calendar-panel {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 8px;
  box-shadow: var(--shadow);
  padding: 18px;
}
.panel h2, .panel h3, .calendar-panel h3 { margin: 0 0 14px; }
label { display: block; margin: 12px 0 6px; color: #344054; font-weight: 800; font-size: 13px; }
input, select, textarea {
  width: 100%;
  border: 1px solid #cbd5e1;
  border-radius: 8px;
  padding: 11px 12px;
  background: #fff;
  color: var(--ink);
}
textarea { resize: vertical; min-height: 86px; }
.btn, .icon-btn {
  border: 0;
  border-radius: 8px;
  padding: 11px 14px;
  font-weight: 900;
  cursor: pointer;
}
.btn.primary { background: var(--primary); color: #fff; margin-top: 14px; }
.btn.primary:hover { background: var(--primary-strong); }
.btn.ghost { background: #e8eef8; color: #1f2a44; }
.btn.danger { background: #fee2e2; color: #991b1b; }
.form-actions, .shift-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.form-actions .btn.ghost { margin-top: 14px; }
.checkline {
  display: flex;
  align-items: center;
  gap: 10px;
  width: auto;
}
.checkline input { width: auto; margin: 0; }
.group-mode {
  margin-top: 12px;
  border: 1px solid #ddd6fe;
  background: #faf5ff;
  border-radius: 8px;
  padding: 12px;
}
.group-users {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
  margin-top: 10px;
}
.date-choice-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: 10px;
}
.date-choice {
  display: grid;
  grid-template-columns: auto 42px 1fr;
  align-items: center;
  gap: 8px;
  margin: 0;
  width: auto;
  padding: 8px 10px;
  border: 1px solid #ddd6fe;
  border-radius: 8px;
  background: #fff;
}
.date-choice input { width: auto; margin: 0; }
.date-choice span { color: #6d28d9; font-weight: 900; text-transform: capitalize; }
.user-check {
  display: grid;
  grid-template-columns: auto 12px 1fr;
  align-items: center;
  gap: 9px;
  width: auto;
  margin: 0;
  color: #344054;
}
.user-check input { width: auto; margin: 0; }
.user-check span {
  width: 12px;
  height: 12px;
  border-radius: 99px;
  background: var(--user-color);
}
.icon-btn { width: 42px; height: 42px; background: #111827; color: #fff; font-size: 26px; line-height: 1; }
.layout {
  display: grid;
  grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.msg {
  margin-top: 12px;
  border-radius: 8px;
  padding: 10px 12px;
  background: #edf7ed;
  color: #166534;
  border: 1px solid #bbf7d0;
}
.msg.error { background: #fff1f2; color: #9f1239; border-color: #fecdd3; }
.calendar-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
}
.calendar-head span { color: var(--muted); font-weight: 800; }
.smart-dashboard {
  display: grid;
  grid-template-columns: repeat(4, minmax(140px, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}
.dash-card,
.command-card,
.employee-mobile-card {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
  padding: 15px;
  box-shadow: 0 12px 30px rgba(15, 23, 42, .07);
}
.dash-card span,
.command-card span,
.employee-mobile-card span {
  display: block;
  color: #52637a;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0;
}
.dash-card strong,
.command-card strong,
.employee-mobile-card strong {
  display: block;
  margin-top: 5px;
  font-size: 26px;
  line-height: 1.05;
}
.dash-card small,
.command-card small,
.employee-mobile-card small { color: var(--muted); }
.dash-card.accent { border-color: #93c5fd; background: #eff6ff; }
.dash-card.warning { border-color: #fcd34d; background: #fffbeb; }
.dash-card.danger { border-color: #fecaca; background: #fff1f2; }
.quick-actions,
.view-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 14px;
}
.view-tab,
.mini-action,
.empty-cell-action {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  color: #1f2a44;
  cursor: pointer;
  font-weight: 900;
}
.view-tab { padding: 9px 12px; font-size: 12px; }
.view-tab.active { background: #111827; color: #fff; border-color: #111827; }
.template-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.template-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 8px 10px;
  background: #fff;
  color: #1f2937;
  cursor: pointer;
  font-weight: 900;
}
.template-chip span {
  width: 10px;
  height: 10px;
  border-radius: 99px;
  background: var(--template-color);
}
.template-chip small { color: var(--muted); font-weight: 800; }
.calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(120px, 1fr));
  border: 1px solid var(--line);
  border-radius: 8px;
  overflow: hidden;
}
.day {
  min-height: 520px;
  border-right: 1px solid var(--line);
  background: #fbfdff;
  display: flex;
  flex-direction: column;
}
.day:nth-child(7n) { border-right: 0; }
.day-head {
  padding: 12px;
  background: #f1f5f9;
  border-bottom: 1px solid var(--line);
}
.day-head strong { display: block; }
.day-head small { color: var(--muted); }
.shift-list { padding: 10px; display: grid; gap: 8px; align-content: start; }
.shift {
  border-left: 5px solid var(--user-color);
  background: #fff;
  border-radius: 8px;
  border-top: 1px solid #e5e7eb;
  border-right: 1px solid #e5e7eb;
  border-bottom: 1px solid #e5e7eb;
  padding: 10px;
  cursor: grab;
  transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}
.shift:hover { transform: translateY(-1px); box-shadow: 0 12px 22px rgba(15, 23, 42, .10); }
.shift.has-conflict { border-color: #fb7185; background: #fff7f7; }
.shift.group-shift {
  background: #faf5ff;
  border-top-color: #ddd6fe;
  border-right-color: #ddd6fe;
  border-bottom-color: #ddd6fe;
}
.shift strong { display: block; margin-bottom: 4px; }
.shift small { display: block; color: var(--muted); line-height: 1.45; }
.shift button { margin-top: 8px; padding: 7px 9px; border-radius: 7px; }
.published-badge {
  display: inline-flex;
  width: fit-content;
  margin-top: 7px;
  padding: 3px 7px;
  border-radius: 8px;
  background: #dcfce7;
  color: #166534;
  font-size: 11px;
  font-weight: 900;
}
.schedule-board {
  display: grid;
  grid-template-columns: minmax(170px, 220px) repeat(7, minmax(150px, 1fr));
  border: 1px solid var(--line);
  border-radius: 8px;
  overflow: auto;
  background: #fff;
}
.schedule-row {
  min-height: 92px;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  padding: 10px;
}
.corner-cell,
.day-title {
  min-height: 74px;
  background: #f8fafc;
  position: sticky;
  top: 0;
  z-index: 2;
}
.employee-name {
  display: grid;
  grid-template-columns: 12px 1fr;
  gap: 10px;
  align-items: start;
  background: #f8fafc;
  position: sticky;
  left: 0;
  z-index: 1;
}
.employee-name .swatch { width: 12px; min-height: 48px; }
.employee-name strong,
.day-title strong { display: block; }
.employee-name small,
.day-title small { color: var(--muted); }
.schedule-cell {
  display: grid;
  align-content: start;
  gap: 8px;
  background: #fbfdff;
}
.schedule-cell.unavailable,
.schedule-cell.absence {
  background: repeating-linear-gradient(135deg, #fff1f2 0, #fff1f2 8px, #ffffff 8px, #ffffff 16px);
}
.schedule-cell.preferred,
.schedule-cell.available {
  background: #f0fdf4;
}
.availability-badge {
  display: inline-flex;
  width: fit-content;
  padding: 3px 7px;
  border-radius: 8px;
  background: #e0f2fe;
  color: #075985;
  font-size: 11px;
  font-weight: 900;
}
.empty-cell-action {
  width: 36px;
  height: 36px;
  color: var(--primary);
  background: #eff6ff;
}
.mini-action {
  margin-top: 7px;
  padding: 6px 8px;
  font-size: 11px;
}
.conflict-panel {
  margin-top: 14px;
  display: grid;
  gap: 8px;
}
.conflict-panel h4 { margin: 0; }
.conflict {
  display: grid;
  grid-template-columns: 90px 1fr;
  gap: 10px;
  align-items: start;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid #fde68a;
  background: #fffbeb;
}
.conflict.critical {
  border-color: #fecaca;
  background: #fff1f2;
}
.conflict strong {
  font-size: 12px;
  color: #7f1d1d;
}
.command-hero {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  margin-bottom: 14px;
  padding: 18px;
  border-radius: 8px;
  background: #111827;
  color: #fff;
}
.command-hero h3 { margin: 0 0 5px; font-size: 24px; }
.command-hero p { margin: 0; color: #cbd5e1; }
.command-grid,
.employee-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-bottom: 14px;
}
.ai-preview,
.audit-list,
.notification-list {
  display: grid;
  gap: 10px;
  margin-top: 12px;
}
.recommendation,
.preview-shift,
.audit-item,
.notification-item {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfdff;
}
.recommendation {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
}
.preview-shift strong,
.preview-shift span,
.audit-item strong,
.audit-item span,
.audit-item p,
.notification-item strong,
.notification-item p,
.notification-item small {
  display: block;
  margin: 0;
}
.audit-item span,
.notification-item small { color: var(--muted); font-size: 12px; }
.notification-item.unread { border-color: #93c5fd; background: #eff6ff; }
.employee-mobile-card {
  margin-bottom: 14px;
  background: #111827;
  color: #fff;
}
.employee-mobile-card small { color: #cbd5e1; }
.shift-list.compact .shift-actions { display: none; }
.people-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.person {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 14px;
  background: #fbfdff;
  display: grid;
  grid-template-columns: 12px 1fr;
  gap: 12px;
}
.swatch { border-radius: 99px; background: var(--user-color); }
.person strong { display: block; }
.person small { display: block; color: var(--muted); margin-top: 3px; }
@media (max-width: 1050px) {
  .app { grid-template-columns: 1fr; }
  .sidebar { position: static; }
  .layout, .auth-grid { grid-template-columns: 1fr; }
  .smart-dashboard,
  .command-grid,
  .employee-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .calendar-grid { grid-template-columns: 1fr; }
  .day { min-height: auto; border-right: 0; border-bottom: 1px solid var(--line); }
  .schedule-board { grid-template-columns: minmax(138px, 170px) repeat(7, minmax(135px, 1fr)); }
}
@media (max-width: 640px) {
  main, .sidebar, .auth { padding: 16px; }
  .topbar, .calendar-head { align-items: stretch; flex-direction: column; }
  .smart-dashboard,
  .command-grid,
  .employee-grid { grid-template-columns: 1fr; }
  .quick-actions .btn,
  .view-tabs .view-tab { flex: 1 1 130px; }
  .split { grid-template-columns: 1fr; }
  .date-choice-list { grid-template-columns: 1fr; }
  .command-hero { align-items: stretch; flex-direction: column; }
  .schedule-board { grid-template-columns: minmax(128px, 150px) repeat(7, minmax(126px, 1fr)); }
  .schedule-row { min-height: 80px; padding: 8px; }
}
