/* Approved CRM graphite concept. Loaded after platform layers. */
body,
body.theme-graphite {
  --accent:#242424;
  --accent-hover:#3a3a3a;
  --accent-light:#e8e8e8;
  --accent-border:#b6b6b6;
  --accent-strong:#242424;
  --action-primary:#242424;
  --action-primary-hover:#3a3a3a;
  --action-primary-contrast:#fff;
  --user-primary:#242424;
  --user-accent:#242424;
  --user-light:#f2f2f2;
  --cal-pavel-color:#666666;
  --cal-pavel-light:#f2f2f2;
  --cal-pavel-border:#b6b6b6;
  --crm-focus:0 0 0 3px rgba(36,36,36,.24);
}
body.dark,
body.theme-graphite.dark {
  --accent:#f2f2f2;
  --accent-hover:#d6d6d6;
  --accent-light:#2f2f2f;
  --accent-border:#777777;
  --accent-strong:#f2f2f2;
  --action-primary:#f2f2f2;
  --action-primary-hover:#d6d6d6;
  --action-primary-contrast:#242424;
  --user-primary:#f2f2f2;
  --user-accent:#f2f2f2;
  --user-light:#2f2f2f;
  --cal-pavel-color:#c2c2c2;
  --cal-pavel-light:#242424;
  --cal-pavel-border:#777777;
  --crm-focus:0 0 0 3px rgba(242,242,242,.28);
}

/* The active theme switch stays graphite against the dark sidebar. */
body.dark .sidebar-bottom .toggle-switch input:checked + .toggle-slider {
  background:#414141!important;
  box-shadow:inset 0 0 0 1px #696969;
}
body.dark .sidebar-bottom .toggle-switch input:checked + .toggle-slider::before {
  background:#c9c9c9;
}

/* Invert the assistant action with the rest of the dark theme controls. */
body.dark .sidebar-bottom .crm-ai-fab {
  background:var(--action-primary);
  color:var(--action-primary-contrast);
  border-color:var(--action-primary);
}
body.dark .sidebar-bottom .crm-ai-fab:hover {
  background:var(--action-primary-hover);
  border-color:var(--action-primary-hover);
}

/* Keep the status system expressive while ordinary actions stay graphite. */
body .btn-primary,
body.dark .btn-primary,
body .login-btn,
body.dark .login-btn {
  color:var(--action-primary-contrast)!important;
  background:var(--action-primary)!important;
  border-color:var(--action-primary)!important;
  box-shadow:0 2px 6px rgba(23,23,23,.14)!important;
}
body .btn-primary:hover,
body.dark .btn-primary:hover,
body .login-btn:hover,
body.dark .login-btn:hover {
  background:var(--action-primary-hover)!important;
  border-color:var(--action-primary-hover)!important;
}
body :is(button,a,input,select,textarea,[role="button"]):focus-visible {
  outline:2px solid var(--accent);
  outline-offset:2px;
}
body :is(input,select,textarea,progress) { accent-color:var(--action-primary); }

/* Shared shell follows the same neutral navigation language as the concept. */
body .nav-item.active,
body.dark .nav-item.active {
  color:#f9f9f9;
  background:#383838;
  box-shadow:inset 0 0 0 1px #666666;
}
body .nav-item.active .nav-icon { color:#f2f2f2; }
body .nav-item.active::after { display:none; }
body .logo-user-badge { background:#404040;color:#f2f2f2; }

/* Task tracker booking cards use the same full-card status palette as the journal. */
#page-kanban .kanban-card {
  --kanban-stage-line:var(--kanban-custom-line,#777);
  --kanban-stage-surface:color-mix(in srgb,var(--kanban-stage-line) 13%,#f7f7f7);
  background:var(--kanban-stage-surface)!important;
  border:1px solid #c9c9c9!important;
  border-left:4px solid var(--kanban-stage-line)!important;
  color:#242424!important;
}
#page-kanban .kanban-card[data-status="booked"] { --kanban-stage-line:#ea580c;--kanban-stage-surface:#fff1e4; }
#page-kanban .kanban-card[data-status="confirmed"] { --kanban-stage-line:#2563eb;--kanban-stage-surface:#ecf4ff; }
#page-kanban .kanban-card[data-status="processing"] { --kanban-stage-line:#7c3aed;--kanban-stage-surface:#f4edff; }
#page-kanban .kanban-card[data-status="done"] { --kanban-stage-line:#15803d;--kanban-stage-surface:#eaf7ed; }
#page-kanban .kanban-card[data-status="cancelled"] { --kanban-stage-line:#b91c1c;--kanban-stage-surface:#fff0f0; }
#page-kanban .kanban-card :is(.kanban-card-top strong,.kanban-card-meta) { color:#242424!important; }
#page-kanban .kanban-card :is(.kanban-card-type,.kanban-task-meta) { color:#555!important; }
#page-kanban .kanban-card .kanban-card-footer { border-top-color:rgba(36,36,36,.14); }
#page-kanban .kanban-card .kanban-payment.is-paid { background:#dcfce7;color:#166534; }
#page-kanban .kanban-card .kanban-payment.is-partial { background:#fef3c7;color:#92400e; }
#page-kanban .kanban-card .kanban-payment.is-unpaid { background:#fee2e2;color:#991b1b; }
#page-kanban .kanban-card .kanban-payment.is-unknown { background:#ededed;color:#555; }
body.dark #page-kanban .kanban-card {
  --kanban-stage-surface:color-mix(in srgb,var(--kanban-stage-line) 16%,#f2f2f2);
  border-color:#b8b8b8!important;
  border-left-color:var(--kanban-stage-line)!important;
}
body.dark #page-kanban .kanban-card[data-status="booked"] { --kanban-stage-surface:#f3e0cc; }
body.dark #page-kanban .kanban-card[data-status="confirmed"] { --kanban-stage-surface:#dcebfb; }
body.dark #page-kanban .kanban-card[data-status="processing"] { --kanban-stage-surface:#eaddf9; }
body.dark #page-kanban .kanban-card[data-status="done"] { --kanban-stage-surface:#dbefde; }
body.dark #page-kanban .kanban-card[data-status="cancelled"] { --kanban-stage-surface:#f7dede; }

/* Journal hierarchy: one continuous planning grid and understated free time. */
#page-calendar .topbar { background:var(--bg-surface); }
#page-calendar .calendar-topbar-actions { display:flex;align-items:center;gap:18px; }
#page-calendar .calendar-topbar-actions > .btn-primary { white-space:nowrap; }
#page-calendar .cal-stage-legend { display:flex;align-items:center;gap:13px;min-width:0; }
#page-calendar .cal-stage-legend span { display:inline-flex;align-items:center;gap:5px;color:var(--text-secondary);font-size:11px;font-weight:600;white-space:nowrap; }
#page-calendar .cal-stage-legend i { display:inline-block;width:8px;height:8px;border-radius:50%;flex:none; }
#page-calendar .cal-stage-legend .stage-booked { background:#ea580c; }
#page-calendar .cal-stage-legend .stage-confirmed { background:#2563eb; }
#page-calendar .cal-stage-legend .stage-processing { background:#7c3aed; }
#page-calendar .cal-stage-legend .stage-done { background:#15803d; }
#page-calendar .cal-stage-legend .stage-cancelled { background:#b91c1c; }
#page-calendar .cal-week-day-heading,
#page-calendar .cal-day-heading { background:var(--bg-surface)!important;min-width:0; }
#page-calendar .cal-week-day-heading.is-today,
#page-calendar .cal-day-heading.is-today {
  background:#e8e8e8!important;
  box-shadow:none!important;
}
body.dark #page-calendar .cal-week-day-heading.is-today,
body.dark #page-calendar .cal-day-heading.is-today { background:#343434!important; }

/* Day mode is a focused agenda, not a single full-screen calendar column. */
#page-calendar #cal-day-view {
  width:min(100%,840px);
  min-width:0!important;
  margin-inline:auto;
  background:var(--bg-surface);
  border-inline:1px solid var(--border-light);
  box-shadow:0 8px 28px rgba(0,0,0,.08);
}
#page-calendar #cal-day-header { background:var(--bg-surface)!important; }
#page-calendar .cal-day-date-gutter {
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  border-right:1px solid var(--border-light);background:var(--bg-surface-2);
}
#page-calendar .cal-day-date-gutter span { color:var(--text-muted);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase; }
#page-calendar .cal-day-date-gutter strong { color:var(--text-primary);font-size:21px;line-height:1.15;font-variant-numeric:tabular-nums; }
#page-calendar .cal-day-heading {
  display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:8px;
  min-height:76px;padding:10px 14px;box-sizing:border-box;
}
#page-calendar .cal-day-heading-row { display:flex;align-items:center;flex-wrap:wrap;gap:6px 9px;min-width:0; }
#page-calendar .cal-day-user-dot { width:8px;height:8px;border-radius:50%;background:var(--cal-pavel-color);flex:none; }
#page-calendar .cal-day-user-name { color:var(--text-primary);font-size:13px;line-height:18px; }
#page-calendar .cal-day-work-hours { color:var(--text-secondary);font-size:11px; }
#page-calendar .cal-day-info-pill { display:inline-flex;align-items:center;min-height:20px;padding:2px 8px;border-radius:5px;font-size:10px;font-weight:650;line-height:1;white-space:nowrap; }
#page-calendar .cal-day-info-pill.is-working,
#page-calendar .cal-day-info-pill.is-free { background:#dcfce7;color:#166534; }
#page-calendar .cal-day-info-pill.is-off { background:#e9e9e9;color:#555; }
#page-calendar .cal-day-info-pill.is-booked { background:#ffedd5;color:#9a3412; }
#page-calendar .cal-day-add-btn { min-height:28px;padding:5px 10px;font-size:11px; }
#page-calendar #cal-day-time-col { background:var(--bg-surface-2)!important; }
#page-calendar #cal-day-body { background:#f5f5f5; }
#page-calendar #cal-day-view .cal-free-slot {
  justify-content:flex-start;padding-left:16px;
  background:transparent!important;
  border:0!important;border-bottom:1px solid #d9d9d9!important;border-radius:0!important;
}
#page-calendar #cal-day-view .cal-free-slot:hover,
#page-calendar #cal-day-view .cal-free-slot:focus-visible { background:#e8e8e8!important;border-bottom-color:#aaa!important; }
#page-calendar #cal-day-view .cal-free-slot > span { opacity:.35; }
#page-calendar #cal-day-view .cal-now-line { opacity:.55; }
body.dark #page-calendar #cal-day-view { box-shadow:0 8px 28px rgba(0,0,0,.22); }
body.dark #page-calendar #cal-day-header { background:#242424!important; }
body.dark #page-calendar .cal-day-heading.is-today { background:#303030!important; }
body.dark #page-calendar #cal-day-body { background:#383838; }
body.dark #page-calendar #cal-day-view .cal-free-slot { background:transparent!important;border-bottom-color:#555!important; }
body.dark #page-calendar #cal-day-view .cal-free-slot:hover,
body.dark #page-calendar #cal-day-view .cal-free-slot:focus-visible { background:#484848!important;border-bottom-color:#777!important; }
#page-calendar .cal-week-day-date { padding:7px 6px 2px;text-align:center; }
#page-calendar .cal-week-day-name { color:var(--text-muted);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase; }
#page-calendar .cal-week-day-number { color:var(--text-primary);font-size:18px;font-weight:750;line-height:22px;font-variant-numeric:tabular-nums; }
#page-calendar .cal-week-day-meta { padding:2px 4px 7px;color:var(--text-muted);font-size:10px;font-weight:600;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
#page-calendar .cal-day-col,
#page-calendar .cal-day-col.today-col { background:var(--bg-surface)!important; }
#page-calendar .cal-day-col.today-col { box-shadow:none!important; }
#page-calendar .cal-time-label { color:var(--text-muted);font-variant-numeric:tabular-nums; }
#page-calendar .cal-now-line,
#page-calendar .cal-now-line::before { background:#909090; }

#page-calendar .cal-free-slot {
  display:flex;align-items:center;justify-content:center;box-sizing:border-box;
  border:1px solid transparent;border-radius:6px;background:transparent;
  color:var(--text-muted);font:inherit;cursor:pointer;
  transition:background 140ms ease,border-color 140ms ease;
}
#page-calendar .cal-free-slot > span { opacity:0;font-size:18px;font-weight:350;line-height:1;transition:opacity 140ms ease; }
#page-calendar .cal-free-slot:hover,
#page-calendar .cal-free-slot:focus-visible { background:var(--bg-surface-2);border-color:var(--border-control); }
#page-calendar .cal-free-slot:hover > span,
#page-calendar .cal-free-slot:focus-visible > span { opacity:1; }

/* Unavailable calendar time is a solid graphite region in the light theme. */
body:not(.dark) #page-calendar .cal-time-block {
  background:#4a4a4a!important;
  border-color:#373737!important;
  color:#fff!important;
  box-shadow:inset 0 1px rgba(255,255,255,.08)!important;
}
body:not(.dark) #page-calendar .cal-time-block:hover { background:#3d3d3d!important; }
body:not(.dark) #page-calendar .cal-time-block:focus-visible { outline:2px solid #15803d;outline-offset:1px; }
body:not(.dark) #page-calendar .cal-time-block span { color:#fff!important;opacity:1!important; }
body:not(.dark) #page-calendar .cal-off-day-fill { background:#4a4a4a!important;opacity:1!important; }

/* In the dark theme, free time and bookings are light; unavailable time stays dark. */
body.dark #page-calendar .cal-free-slot {
  background:#424242!important;
  border-color:#4b4b4b!important;
  color:#c9c9c9!important;
}
body.dark #page-calendar .cal-free-slot:hover,
body.dark #page-calendar .cal-free-slot:focus-visible {
  background:#525252!important;
  border-color:#777!important;
}
body.dark #page-calendar .cal-free-slot > span { color:#c9c9c9;opacity:.42; }
body.dark #page-calendar .cal-free-slot:hover > span,
body.dark #page-calendar .cal-free-slot:focus-visible > span { opacity:1; }
body.dark #page-calendar .cal-time-block {
  background:#262626!important;
  border-color:#3b3b3b!important;
  color:#eee!important;
  box-shadow:none!important;
}
body.dark #page-calendar .cal-time-block:hover { background:#303030!important; }
body.dark #page-calendar .cal-time-block:focus-visible { outline:2px solid #fff;outline-offset:1px; }
body.dark #page-calendar .cal-time-block span { color:#eee!important;opacity:1!important; }
body.dark #page-calendar .cal-off-day-fill { background:#262626!important;opacity:1!important; }

/* Muted full-card status colors keep bookings distinct from the graphite time grid. */
#page-calendar .cal-booking.cal-booking-v2 {
  --stage-line:#ea580c;
  --stage-text:#c2410c;
  --stage-bg:#fff7ed;
  --stage-surface:#fff1e4;
  background:var(--stage-surface)!important;
  color:var(--text-primary)!important;
  border:1px solid var(--border)!important;
  border-left:5px solid var(--stage-line)!important;
  border-radius:7px;
  box-shadow:0 2px 5px rgba(23,23,23,.08);
  padding:8px 8px 8px 10px;
  gap:3px;
}
#page-calendar .cal-booking.cal-booking-v2.stage-confirmed { --stage-line:#2563eb;--stage-text:#1d4ed8;--stage-bg:#eff6ff;--stage-surface:#ecf4ff; }
#page-calendar .cal-booking.cal-booking-v2.stage-processing { --stage-line:#7c3aed;--stage-text:#6d28d9;--stage-bg:#f5f3ff;--stage-surface:#f4edff; }
#page-calendar .cal-booking.cal-booking-v2.stage-done { --stage-line:#15803d;--stage-text:#15803d;--stage-bg:#f0fdf4;--stage-surface:#eaf7ed; }
#page-calendar .cal-booking.cal-booking-v2.stage-cancelled { --stage-line:#b91c1c;--stage-text:#b91c1c;--stage-bg:#fef2f2;--stage-surface:#fff0f0; }
#page-calendar .cal-booking.cal-booking-v2.is-cancelled { border-style:dashed!important; }
#page-calendar .cal-booking.cal-booking-v2.is-cancelled .cal-booking-range { text-decoration:line-through; }
#page-calendar .cal-booking-v2 .cal-booking-stage-label {
  background:var(--stage-bg)!important;
  color:var(--stage-text)!important;
  border-color:color-mix(in srgb,var(--stage-line) 45%,var(--stage-bg))!important;
  opacity:1!important;
}
#page-calendar .cal-booking-v2 .cal-booking-payment {
  background:var(--bg-surface-2)!important;
  color:var(--text-secondary)!important;
  border-color:var(--border-light)!important;
  opacity:1!important;
}
#page-calendar .cal-booking-v2 .cal-booking-name {
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow:hidden;
  white-space:normal;
  text-overflow:clip;
  font-size:12px;
  line-height:16px;
  letter-spacing:-.01em;
}
#page-calendar .cal-booking-v2 .cal-booking-type {
  font-size:10px;
  font-weight:600;
  opacity:.9;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
#page-calendar .cal-booking-v2 .cal-booking-addr {
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  overflow:hidden;
  white-space:normal;
  text-overflow:clip;
  font-size:10px;
  line-height:13px;
  opacity:.7;
  overflow-wrap:anywhere;
}
#page-calendar .cal-booking-v2 .cal-booking-subtitle {
  margin:0;
  font-size:10px;
  line-height:12px;
}
#page-calendar .cal-booking.cal-booking-v2 :is(.cal-booking-type,.cal-booking-addr,.cal-booking-subtitle) {
  color:#4b4b4b!important;
  opacity:1;
}
#page-calendar .cal-booking-v2 .cal-booking-flags { margin:0;line-height:12px; }
#page-calendar .cal-booking-v2 .cal-booking-statuses {
  margin-top:auto;
  padding-top:4px;
  gap:4px;
  overflow:hidden;
}
#page-calendar .cal-booking-v2 .cal-booking-statuses>span {
  font-size:9px;
  line-height:15px;
  padding:0 4px;
}
#page-calendar .cal-booking-v2 .cal-booking-payment { flex:0 1 auto;max-width:none;min-width:0; }
#page-calendar .cal-booking-v2.is-compact { padding:3px 7px 3px 9px;gap:1px; }
#page-calendar .cal-booking-v2.is-compact .cal-booking-statuses { padding-top:0; }
#page-calendar .cal-booking-v2:hover { filter:none;box-shadow:0 3px 8px rgba(23,23,23,.13); }

body.dark #page-calendar .cal-booking.cal-booking-v2 {
  --stage-line:#ea580c;--stage-text:#c2410c;--stage-bg:#fff7ed;--stage-surface:#f3e0cc;
  background:var(--stage-surface)!important;
  color:#242424!important;
  border-color:#b8b8b8!important;
  border-left-color:var(--stage-line)!important;
  box-shadow:0 2px 5px rgba(0,0,0,.2);
}
body.dark #page-calendar .cal-booking.cal-booking-v2.stage-confirmed { --stage-line:#2563eb;--stage-text:#1d4ed8;--stage-bg:#eff6ff;--stage-surface:#dcebfb; }
body.dark #page-calendar .cal-booking.cal-booking-v2.stage-processing { --stage-line:#7c3aed;--stage-text:#6d28d9;--stage-bg:#f5f3ff;--stage-surface:#eaddf9; }
body.dark #page-calendar .cal-booking.cal-booking-v2.stage-done { --stage-line:#15803d;--stage-text:#15803d;--stage-bg:#f0fdf4;--stage-surface:#dbefde; }
body.dark #page-calendar .cal-booking.cal-booking-v2.stage-cancelled { --stage-line:#b91c1c;--stage-text:#b91c1c;--stage-bg:#fef2f2;--stage-surface:#f7dede; }
body.dark #page-calendar .cal-booking.cal-booking-v2 :is(.cal-booking-range,.cal-booking-name) { color:#242424!important; }
body.dark #page-calendar .cal-booking.cal-booking-v2 :is(.cal-booking-type,.cal-booking-addr,.cal-booking-subtitle) { color:#555!important; }
body.dark #page-calendar .cal-booking-v2 .cal-booking-payment {
  background:#ededed!important;color:#555!important;border-color:#d1d1d1!important;
}
#page-calendar .cal-booking-v2 .cal-booking-payment.is-paid,
body.dark #page-calendar .cal-booking-v2 .cal-booking-payment.is-paid {
  background:#dcfce7!important;color:#166534!important;border-color:#86efac!important;
}
#page-calendar .cal-booking-v2 .cal-booking-payment.is-unpaid,
body.dark #page-calendar .cal-booking-v2 .cal-booking-payment.is-unpaid {
  background:#fee2e2!important;color:#991b1b!important;border-color:#fca5a5!important;
}
#page-calendar .cal-booking.cal-booking-v2:hover { box-shadow:0 4px 12px rgba(23,23,23,.2)!important; }
body.dark #page-calendar .cal-booking.cal-booking-v2:hover { box-shadow:0 4px 14px rgba(0,0,0,.5)!important; }

@media (max-width:1240px) {
  #page-calendar .cal-stage-legend { display:none; }
  #page-calendar .calendar-topbar-actions > .btn-primary { min-height:36px; }
}
@media (pointer:coarse) {
  #page-calendar .cal-free-slot > span { opacity:.55; }
  #page-calendar .cal-free-slot { border-color:var(--border-light); }
}
